@koalarx/ui 14.0.2 → 14.0.3

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.
@@ -44,7 +44,7 @@ export class DynamicFormComponent extends FormAbstract {
44
44
  this.typeField = DynamicFormTypeFieldEnum;
45
45
  this.hoursAndMinutesMask = '00:000';
46
46
  this.errorMessage = KoalaLanguageHelper;
47
- this.formId = randomString(25, { lowercase: true, uppercase: true, numbers: true });
47
+ this.formId = randomString(25, { lowercase: true, uppercase: true });
48
48
  }
49
49
  ngOnInit() {
50
50
  if (!this.form.get('formData')) {
@@ -586,4 +586,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
586
586
  }], tabIndexStart: [{
587
587
  type: Input
588
588
  }] } });
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEQsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBRXJILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQVE3RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8s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S0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1GaWVsZEludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWZvcm0tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bSB9IGZyb20gJy4vZW51bXMvZHluYW1pYy1mb3JtLXR5cGUtZmllbGQuZW51bSc7XG5pbXBvcnQgeyBDcGZWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcnMvY3BmLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBDbnBqVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2NucGoudmFsaWRhdG9yJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFic3RyYWN0IH0gZnJvbSAnLi4vZm9ybS5hYnN0cmFjdCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtc2V0LXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTZWxlY3RlZFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9hdXRvY29tcGxldGUtc2VsZWN0ZWQudmFsaWRhdG9yJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1hdXRvY29tcGxldGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljRm9ybVNob3dGaWVsZEludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWZvcm0tc2hvdy1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuL2tvYWxhLmR5bmFtaWMtZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1Nb3JlSXRlbnNTaG93RmllbGRDb25maWdJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLW1vcmUtaXRlbnMtc2hvdy1maWVsZC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljRm9ybUF1dG9jb21wbGV0ZU11bHRpcGxlQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtZm9ybS1hdXRvY29tcGxldGUtbXVsdGlwbGUtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtZm9ybS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzL29wZXJhdG9ycy9kZWxheVwiO1xuaW1wb3J0IHsga29hbGEgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHNcIjtcbmltcG9ydCB7IERhdGVNaW5WYWxpZGF0b3IgfSBmcm9tIFwiLi92YWxpZGF0b3JzL2RhdGUtbWluLnZhbGlkYXRvclwiO1xuaW1wb3J0IHsgRGF0ZU1heFZhbGlkYXRvciB9IGZyb20gXCIuL3ZhbGlkYXRvcnMvZGF0ZS1tYXgudmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBLb2FsYUxhbmd1YWdlSGVscGVyIH0gZnJvbSBcIkBrb2FsYXJ4L3VpL2NvcmVcIjtcbmltcG9ydCB7IHJhbmRvbVN0cmluZyB9IGZyb20gXCJAa29hbGFyeC91dGlscy9vcGVyYXRvcnMvc3RyaW5nXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tvYWxhLWR5bmFtaWMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2R5bmFtaWMtZm9ybS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGV4dGVuZHMgRm9ybUFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZm9ybUNvbmZpZzogS29hbGFEeW5hbWljRm9ybUZpZWxkSW50ZXJmYWNlW107XG4gIEBJbnB1dCgpIHNob3dGaWVsZHM6IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtU2hvd0ZpZWxkSW50ZXJmYWNlW10+O1xuICBASW5wdXQoKSBzaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnOiBLb2FsYUR5bmFtaWNGb3JtTW9yZUl0ZW5zU2hvd0ZpZWxkQ29uZmlnSW50ZXJmYWNlW107XG4gIEBJbnB1dCgpIHNldFZhbHVlczogQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+O1xuICBASW5wdXQoKSB0YWJJbmRleFN0YXJ0OiBudW1iZXIgPSAxO1xuXG4gIHB1YmxpYyBjb250cm9sczogVW50eXBlZEZvcm1BcnJheTtcbiAgcHVibGljIHR5cGVGaWVsZCA9IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bTtcbiAgcHVibGljIGhvdXJzQW5kTWludXRlc01hc2sgPSAnMDA6MDAwJztcbiAgcHVibGljIGVycm9yTWVzc2FnZSA9IEtvYWxhTGFuZ3VhZ2VIZWxwZXI7XG4gIHB1YmxpYyBmb3JtSWQgPSByYW5kb21TdHJpbmcoMjUsIHtsb3dlcmNhc2U6IHRydWUsIHVwcGVyY2FzZTogdHJ1ZSwgbnVtYmVyczogdHJ1ZX0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGR5bmFtaWNGb3JtU2VydmljZTogS29hbGFEeW5hbWljRm9ybVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKCkgPT4gdGhpcy5mb3JtKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5mb3JtLmdldCgnZm9ybURhdGEnKSkge1xuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ2Zvcm1EYXRhJywgdGhpcy5mYi5hcnJheShbXSkpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyb2xzID0gdGhpcy5mb3JtLmdldCgnZm9ybURhdGEnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgIHRoaXMuZm9ybUNvbmZpZz8uZm9yRWFjaCgoY29uZmlnLCBpbmRleENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgbmV3Rm9ybUdyb3VwID0gdGhpcy5uZXdDb250cm9sKGNvbmZpZyk7XG4gICAgICBpZiAoY29uZmlnLmFzeW5jVmFsaWRhdG9ycykge1xuICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldEFzeW5jVmFsaWRhdG9ycyhjb25maWcuYXN5bmNWYWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwRHluYW1pY0Zvcm1zU3ViamVjdCA9IG5ld0Zvcm1Hcm91cC5nZXQoJ2R5bmFtaWNGb3JtQ29uZmlnJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+O1xuICAgICAgICBmb3JtR3JvdXBEeW5hbWljRm9ybXNTdWJqZWN0LnN1YnNjcmliZShmb3JtR3JvdXBDb25maWcgPT4ge1xuICAgICAgICAgIGlmIChmb3JtR3JvdXBDb25maWcpIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cENvbmZpZy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZm9ybUdyb3VwQ29uZmlnLmZvcm0udmFsaWQgJiYgKGNvbmZpZy52YWx1ZUNoYW5nZXMgfHwgdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5keW5hbWljRm9ybVNlcnZpY2UuZW1pdERhdGEoZm9ybUdyb3VwQ29uZmlnLmZvcm0pO1xuICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb25maWcudmFsdWVDaGFuZ2VzIHx8XG4gICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlIHx8XG4gICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0gfHxcbiAgICAgICAgdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnXG4gICAgICApIHtcbiAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlT3B0aW9uc1N1YmplY3QgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXT47XG4gICAgICAgICAgaWYgKGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0KSB7XG4gICAgICAgICAgICBhdXRvY29tcGxldGVPcHRpb25zU3ViamVjdC5zdWJzY3JpYmUob3B0aW9ucyA9PiBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zRmlsdGVyZWQnKS52YWx1ZS5uZXh0KG9wdGlvbnMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKVxuICAgICAgICAgICAgICAgICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNldENvbmZpZ0R5bmFtaWNGb3JtKG5ld0Zvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnbXVsdGlwbGUnKS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRWYWx1ZSh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBdXRvY29tcGxldGVTZWxlY3QobmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PihgIyR7dGhpcy5mb3JtSWR9IGlucHV0I2F1dG9jb21wbGV0ZS0ke25ld0Zvcm1Hcm91cC5nZXQoJ25hbWUnKT8udmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG9jb21wbGV0ZUlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVJbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZShrb2FsYSh0aGlzLmZvcm1Db25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFycmF5PEtvYWxhRHluYW1pY0Zvcm1GaWVsZEludGVyZmFjZT4oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobmV3Rm9ybUdyb3VwLmdldCgnbmFtZScpLnZhbHVlLCAnbmFtZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFZhbHVlKClbMF0/LmF1dG9jb21wbGV0ZURlZmF1bHRWYWx1ZU9uQ2xlYXIgPz8gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmF1dG9jb21wbGV0ZVR5cGUgPT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlT3B0aW9uc1N1YmplY3QgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXT47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkJykudmFsdWUubmV4dCh0aGlzLmF1dG9jb21wbGV0ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuYXV0b2NvbXBsZXRlVHlwZSA9PT0gJ29uRGVtYW5kJyAmJiB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkZXIgPSBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVMb2FkaW5nJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlci5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hdXRvY29tcGxldGVGaWx0ZXIodmFsdWUpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlLm5leHQob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52YWx1ZUNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsdWVDaGFuZ2VzKChuZXdGb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZScpLnZhbHVlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnZhbHVlPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWx1ZUNoYW5nZXModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRyb2xzLnB1c2gobmV3Rm9ybUdyb3VwKTtcbiAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zQ29uZmlnKSB7XG4gICAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zTWluSXRlbXMgPiAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgbWluID0gMDsgbWluIDwgY29uZmlnLm1vcmVJdGVtc01pbkl0ZW1zOyBtaW4rKykge1xuICAgICAgICAgICAgaWYgKG1pbiA8PSBjb25maWcubW9yZUl0ZW1zTWF4SXRlbXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRNb3JlSXRlbShpbmRleENvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcubW9yZUl0ZW1zQ29uZmlnLnNldFZhbHVlcykge1xuICAgICAgICAgIGNvbmZpZy5tb3JlSXRlbXNDb25maWdcbiAgICAgICAgICAgICAgICAuc2V0VmFsdWVzXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyB2YWx1ZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKChpdGVtVmFsdWUsIGluZGV4VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbHMuY29udHJvbHNbaW5kZXhDb25maWddLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWVbaW5kZXhWYWx1ZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTW9yZUl0ZW0oaW5kZXhDb25maWcpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzT25GaWVsZHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1tpbmRleENvbmZpZ10uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZVtpbmRleFZhbHVlXS5mb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2hvd0ZpZWxkcykge1xuICAgICAgdGhpcy5jaGFuZ2VWaXNpYmlsaXR5RmllbGRzKHRoaXMuc2hvd0ZpZWxkcywgdGhpcy5mb3JtKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0VmFsdWVzKSB7XG4gICAgICB0aGlzLnNldFZhbHVlc09uRmllbGRzKHRoaXMuc2V0VmFsdWVzLCB0aGlzLmZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3Vyc0FuZE1pbnV0ZXNBcHBseU1hc2soaW5kZXg6IG51bWJlciwgZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9scz8uY29udHJvbHNbaW5kZXhdO1xuICAgIGNvbnN0IHR5cGUgPSBjb250cm9sPy5nZXQoJ3R5cGUnKS52YWx1ZSBhcyBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW07XG4gICAgaWYgKHR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5ob3Vyc0FuZE1pbnV0ZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8uZ2V0KCd2YWx1ZScpLnZhbHVlO1xuICAgICAgaWYgKGV2ZW50LmtleSA9PSAnQmFja3NwYWNlJyAmJiB2YWx1ZS5sZW5ndGggPCA2KSB7XG4gICAgICAgIHRoaXMuaG91cnNBbmRNaW51dGVzTWFzayA9ICcwMDowMDAnO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgIT0gJ0JhY2tzcGFjZScgJiYgdmFsdWUubGVuZ3RoID49IDYpIHtcbiAgICAgICAgdGhpcy5ob3Vyc0FuZE1pbnV0ZXNNYXNrID0gJzAwMDowMCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBhc3N3b3JkVmlldyhpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbHM/LmNvbnRyb2xzW2luZGV4XTtcbiAgICBjb25zdCBoaWRlUGFzc3dvcmQgPSAhY29udHJvbD8uZ2V0KCdoaWRlUGFzc3dvcmQnKS52YWx1ZTtcbiAgICBjb250cm9sPy5nZXQoJ2hpZGVQYXNzd29yZCcpLnNldFZhbHVlKGhpZGVQYXNzd29yZCk7XG4gICAgY29udHJvbD8uZ2V0KCd0eXBlJykuc2V0VmFsdWUoaGlkZVBhc3N3b3JkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0ucGFzc3dvcmQgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS50ZXh0XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNb3JlSXRlbShwcm9wSW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggPCB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNNYXhJdGVtcycpLnZhbHVlKSB7XG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlLnB1c2goe1xuICAgICAgICBmb3JtOiBmb3JtR3JvdXAsXG4gICAgICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLm1vcmVJdGVtc0NvbmZpZy5mb3JtQ29uZmlnLFxuICAgICAgICBzaG93RmllbGRzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNTZXRWYWx1ZUludGVyZmFjZVtdPltdPihbXSksXG4gICAgICAgIHNob3dGaWVsZHNNb3JlSXRlbnNDb25maWc6IHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLm1vcmVJdGVtc0NvbmZpZy5zaG93RmllbGRzQ29uZmlnXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0V4cGFuZGVkJykuc2V0VmFsdWUoXG4gICAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlLmxlbmd0aCAtIDFcbiAgICAgICk7XG4gICAgICBjb25zdCBmb3JtQXJyYXlNb3JlSXRlbXMgPSB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNGb3JtR3JvdXAnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgZm9ybUFycmF5TW9yZUl0ZW1zLnB1c2goZm9ybUdyb3VwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTW9yZUl0ZW0ocHJvcEluZGV4OiBudW1iZXIsIHJlbW92ZUluZGV4KSB7XG4gICAgY29uc3QgZXhwYW5kZWRJdGVtSW5kZXggPSByZW1vdmVJbmRleCAtIDE7XG4gICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0V4cGFuZGVkJykuc2V0VmFsdWUoKGV4cGFuZGVkSXRlbUluZGV4IDwgMCkgPyAwIDogZXhwYW5kZWRJdGVtSW5kZXgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckF1dG9jb21wbGV0ZShwcm9wSW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtdWx0aXBsZScpLnZhbHVlKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgndmFsdWUnKS5zZXRWYWx1ZShudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLmF1dG9jb21wbGV0ZURlZmF1bHRWYWx1ZU9uQ2xlYXIgPz8gbnVsbCk7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLmF1dG9jb21wbGV0ZURlZmF1bHRWYWx1ZU9uQ2xlYXIgPz8gbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3BsYXkob3B0aW9uPzogS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5uYW1lIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZU9wdGlvbk9uQXV0b2NvbXBsZXRlKHByb3BJbmRleDogbnVtYmVyLCBvcHRpb246IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBvcHRpb24pIGFzIEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXTtcbiAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUodmFsdWUpO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZShbXSk7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0udmFsdWVDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS52YWx1ZUNoYW5nZXModmFsdWUubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2xvckNoaXAoY29uZmlnOiBLb2FsYUR5bmFtaWNGb3JtQXV0b2NvbXBsZXRlTXVsdGlwbGVDb25maWdJbnRlcmZhY2UpOiBUaGVtZVBhbGV0dGUge1xuICAgIHJldHVybiBjb25maWcuY29sb3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXV0b2NvbXBsZXRlT3B0aW9ucyhwcm9wcmllZGFkZTogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgcmV0dXJuIHByb3ByaWVkYWRlLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PGFueVtdPjtcbiAgfVxuXG4gIHB1YmxpYyBnZXREeW5hbWljRm9ybUNvbmZpZyhwcm9wcmllZGFkZTogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgcmV0dXJuIHByb3ByaWVkYWRlLmdldCgnZHluYW1pY0Zvcm1Db25maWcnKS52YWx1ZSBhcyBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZT47XG4gIH1cblxuICBwdWJsaWMgZ2V0UmFuZG9tU3RyaW5nKCkge1xuICAgIHJldHVybiByYW5kb21TdHJpbmcoMjAsIHtcbiAgICAgIGxvd2VyY2FzZTogdHJ1ZSxcbiAgICAgIG51bWJlcnM6IHRydWUsXG4gICAgICBzcGVjaWFsQ2hhcmFjdGVyczogZmFsc2UsXG4gICAgICB1cHBlcmNhc2U6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbmV3Q29udHJvbChjb25maWc6IEtvYWxhRHluYW1pY0Zvcm1GaWVsZEludGVyZmFjZSk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIGxldCB2YWxpZGF0b3JzID0gY29uZmlnLnN5bmNWYWxpZGF0b3JzID8/IFtdO1xuICAgIGxldCB2YWx1ZTogYW55ID0gY29uZmlnLnZhbHVlID8/ICcnO1xuICAgIGxldCB2YWx1ZVNlbGVjdGVkQXV0b2NvbXBsZXRlOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlIHwgS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZVtdID0gKFxuICAgICAgY29uZmlnLm11bHRpcGxlID8gW10gOiAoY29uZmlnLmF1dG9jb21wbGV0ZURlZmF1bHRWYWx1ZU9uQ2xlYXIgPz8gbnVsbClcbiAgICApO1xuXG4gICAgaWYgKGNvbmZpZy5yZXF1aXJlZCA9PT0gdHJ1ZSkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIGlmIChjb25maWcubWluICYmIHR5cGVvZiBjb25maWcubWluID09PSBcIm51bWJlclwiKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oY29uZmlnLm1pbikpO1xuICAgIGlmIChjb25maWcubWF4ICYmIHR5cGVvZiBjb25maWcubWF4ID09PSBcIm51bWJlclwiKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgoY29uZmlnLm1heCkpO1xuICAgIGlmIChcbiAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZSB8fFxuICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5kYXRldGltZSB8fFxuICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS50aW1lXG4gICAgKSB7XG4gICAgICBpZiAoY29uZmlnLm1pbiAmJiB0eXBlb2YgY29uZmlnLm1pbiA9PT0gXCJzdHJpbmdcIikgeyB2YWxpZGF0b3JzLnB1c2goRGF0ZU1pblZhbGlkYXRvcihjb25maWcubWluKSk7IH1cbiAgICAgIGlmIChjb25maWcubWF4ICYmIHR5cGVvZiBjb25maWcubWF4ID09PSBcInN0cmluZ1wiKSB7IHZhbGlkYXRvcnMucHVzaChEYXRlTWF4VmFsaWRhdG9yKGNvbmZpZy5tYXgpKTsgfVxuICAgIH1cbiAgICBpZiAoY29uZmlnLm1pbkxlbmd0aCkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGNvbmZpZy5taW5MZW5ndGgpKTtcbiAgICBpZiAoY29uZmlnLm1heExlbmd0aCkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGNvbmZpZy5tYXhMZW5ndGgpKTtcblxuICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmNwZikge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKENwZlZhbGlkYXRvcik7XG4gICAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmNucGopIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChDbnBqVmFsaWRhdG9yKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZW1haWwpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uYXV0b2NvbXBsZXRlKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdmFsdWVTZWxlY3RlZEF1dG9jb21wbGV0ZSA9IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IChjb25maWcubXVsdGlwbGUgPyB2YWx1ZVNlbGVjdGVkQXV0b2NvbXBsZXRlWzBdIDogdmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goQXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWxpZGF0b3IpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jaGVja2JveCkge1xuICAgICAgdmFsdWUgPSBjb25maWcudmFsdWUgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5ob3Vyc0FuZE1pbnV0ZXMgJiZcbiAgICAgIHZhbHVlLmxlbmd0aCA+PSA2XG4gICAgKSB7XG4gICAgICB0aGlzLmhvdXJzQW5kTWludXRlc01hc2sgPSAnMDAwOjAwJztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnKSB7XG4gICAgICBjb25zdCBjbG9uZUR5bmFtaWNGb3JtQ29uZmlnID0ge30gYXMgS29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZTtcbiAgICAgIE9iamVjdC5hc3NpZ24oY2xvbmVEeW5hbWljRm9ybUNvbmZpZywgY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnKTtcbiAgICAgIGNsb25lRHluYW1pY0Zvcm1Db25maWcuZm9ybSA9IGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZy5mb3JtO1xuICAgICAgY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnID0gY2xvbmVEeW5hbWljRm9ybUNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnNob3cgPT09IGZhbHNlKSB7XG4gICAgICB2YWxpZGF0b3JzID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHNob3c6IFtuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5zaG93ID8/IHRydWUpXSxcbiAgICAgIGxhYmVsOiBbY29uZmlnLmxhYmVsXSxcbiAgICAgIG5hbWU6IFtjb25maWcubmFtZV0sXG4gICAgICB0eXBlOiBbY29uZmlnLnR5cGVdLFxuICAgICAgZmlsZUJ1dHRvbkNvbmZpZzogW3tcbiAgICAgICAgaWNvbjogY29uZmlnPy5maWxlQnV0dG9uQ29uZmlnPy5pY29uID8/ICdhdHRhY2hfZmlsZScsXG4gICAgICAgIHRleHQ6IGNvbmZpZz8uZmlsZUJ1dHRvbkNvbmZpZz8udGV4dCA/PyAnQ2xpcXVlIHBhcmEgYW5leGFyIGFycXVpdm9zJyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb25maWc/LmZpbGVCdXR0b25Db25maWc/LmJhY2tncm91bmRDb2xvciA/PyAnd2hpdGUnLFxuICAgICAgICBjb2xvcjogY29uZmlnPy5maWxlQnV0dG9uQ29uZmlnPy5jb2xvciA/PyAnYmx1ZScsXG4gICAgICAgIGFjY2VwdDogY29uZmlnPy5maWxlQnV0dG9uQ29uZmlnPy5hY2NlcHQgPz8gJyonXG4gICAgICB9XSxcbiAgICAgIGR5bmFtaWNGb3JtQ29uZmlnOiBbbmV3IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlPihjb25maWcuZHluYW1pY0Zvcm1Db25maWcpXSxcbiAgICAgIGR5bmFtaWNGb3JtR3JvdXA6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgICAgYXBwZWFyYW5jZTogW2NvbmZpZy5hcHBlYXJhbmNlXSxcbiAgICAgIGZsb2F0TGFiZWw6IFtjb25maWcuZmxvYXRMYWJlbF0sXG4gICAgICBwbGFjZWhvbGRlcjogW2NvbmZpZy5wbGFjZWhvbGRlcl0sXG4gICAgICBjbGFzczogW2NvbmZpZy5jbGFzc10sXG4gICAgICBmaWVsZENsYXNzOiBbY29uZmlnLmZpZWxkQ2xhc3NdLFxuICAgICAgdGV4dEhpbnQ6IFtjb25maWcudGV4dEhpbnRdLFxuICAgICAgcmVxdWlyZWQ6IFtjb25maWcucmVxdWlyZWQgPz8gZmFsc2VdLFxuICAgICAgbWluOiBbY29uZmlnLm1pbiA/PyAwXSxcbiAgICAgIG1heDogW2NvbmZpZy5tYXggPz8gOTk5OTk5OTk5OTldLFxuICAgICAgbWluTGVuZ3RoOiBbY29uZmlnLm1pbkxlbmd0aCA/PyAwXSxcbiAgICAgIG1heExlbmd0aDogW2NvbmZpZy5tYXhMZW5ndGggPz8gMjU1XSxcbiAgICAgIGRpc2FibGVkOiBbY29uZmlnLmRpc2FibGVkID8/IGZhbHNlXSxcbiAgICAgIGZvY3VzOiBbY29uZmlnLmZvY3VzID8/IGZhbHNlXSxcbiAgICAgIG11bHRpcGxlOiBbY29uZmlnLm11bHRpcGxlID8/IGZhbHNlXSxcbiAgICAgIG9wY29lc1NlbGVjdDogW2NvbmZpZy5vcGNvZXNTZWxlY3QgPz8gW11dLFxuICAgICAgaGlkZVBhc3N3b3JkOiBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnBhc3N3b3JkID8gdHJ1ZSA6IG51bGwsXG4gICAgICBtb3JlSXRlbXNCdXR0b25JY29uQWRkbGFiZWw6IFtjb25maWcubW9yZUl0ZW1zQnV0dG9uSWNvbkFkZGxhYmVsXSxcbiAgICAgIG1vcmVJdGVtc01pbkl0ZW1zOiBbY29uZmlnLm1vcmVJdGVtc01pbkl0ZW1zID8/IDBdLFxuICAgICAgbW9yZUl0ZW1zTWF4SXRlbXM6IFtjb25maWcubW9yZUl0ZW1zTWF4SXRlbXMgPz8gMTAwXSxcbiAgICAgIG1vcmVJdGVtc0ljb246IFtjb25maWcubW9yZUl0ZW1zSWNvbl0sXG4gICAgICBtb3JlSXRlbXNJY29uRm9udENvbG9yOiBbY29uZmlnLm1vcmVJdGVtc0ljb25Gb250Q29sb3JdLFxuICAgICAgbW9yZUl0ZW1zSWNvbkJhY2tncm91bmRDb2xvcjogW2NvbmZpZy5tb3JlSXRlbXNJY29uQmFja2dyb3VuZENvbG9yXSxcbiAgICAgIG1vcmVJdGVtc0V4cGFuZGVkOiBbJyddLFxuICAgICAgbW9yZUl0ZW1zQ29uZmlnOiBbW11dLFxuICAgICAgbW9yZUl0ZW1zRm9ybUdyb3VwOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAgIGF1dG9jb21wbGV0ZUxvYWRpbmc6IFtuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKV0sXG4gICAgICBhdXRvY29tcGxldGVPcHRpb25zOiBbY29uZmlnLmF1dG9jb21wbGV0ZU9wdGlvbnNdLFxuICAgICAgYXV0b2NvbXBsZXRlTXVsdGlwbGVDb25maWc6IFtjb25maWcuYXV0b2NvbXBsZXRlTXVsdGlwbGVDb25maWddLFxuICAgICAgYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkOiBbbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKV0sXG4gICAgICBhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlOiBbdmFsdWVTZWxlY3RlZEF1dG9jb21wbGV0ZV0sXG4gICAgICB0ZXh0TG9nczogW2NvbmZpZz8udGV4dE9ic10sXG4gICAgICBjdXN0b21NYXNjOiBbY29uZmlnPy5jdXN0b21NYXNjXSxcbiAgICAgIGN1c3RvbU1hc2NUaG91c2FuZFNlcGFyYXRvcjogW2NvbmZpZz8uY3VzdG9tTWFzY1Rob3VzYW5kU2VwYXJhdG9yID8/ICcnXSxcbiAgICAgIGN1c3RvbU1hc2NTdWZmaXg6IFtjb25maWc/LmN1c3RvbU1hc2NTdWZmaXggPz8gJyddLFxuICAgICAgY3VzdG9tTWFzY1ByZWZpeDogW2NvbmZpZz8uY3VzdG9tTWFzY1ByZWZpeCA/PyAnJ10sXG4gICAgICB2YWx1ZTogW3t2YWx1ZSwgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZH0sIHZhbGlkYXRvcnMsIGNvbmZpZy5hc3luY1ZhbGlkYXRvcnNdXG4gICAgfSk7XG5cbiAgICBpZiAoY29uZmlnLmF1dG9jb21wbGV0ZVR5cGUgPT09IFwib25EZW1hbmRcIikge1xuICAgICAgY29uc3QgbG9hZGVyID0gZmllbGQuZ2V0KCdhdXRvY29tcGxldGVMb2FkaW5nJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgICAgbG9hZGVyLm5leHQodHJ1ZSk7XG4gICAgICBjb25maWcuYXV0b2NvbXBsZXRlRmlsdGVyKCcnKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgIGZpZWxkLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkJykudmFsdWUubmV4dChvcHRpb25zKTtcbiAgICAgICAgbG9hZGVyLm5leHQoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZXNPbkZpZWxkcyhzdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljU2V0VmFsdWVJbnRlcmZhY2VbXT4sIGZvcm06IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBzdWJqZWN0LnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm0uZ2V0KCdmb3JtRGF0YScpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBpdGVtLnZhbHVlcygpKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZUJ5UHJvcChmb3JtQXJyYXksIHByb3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVZpc2liaWxpdHlGaWVsZHMoc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1TaG93RmllbGRJbnRlcmZhY2VbXT4sIGZvcm06IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBzdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDUpKS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldCgnZm9ybURhdGEnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgaXRlbS52YWx1ZXMoKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4Q29udHJvbCwgY29udHJvbF0gb2YgZm9ybUFycmF5LmNvbnRyb2xzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgaWYgKGNvbnRyb2wuZ2V0KCduYW1lJykudmFsdWUgPT09IHByb3AubmFtZSkge1xuICAgICAgICAgICAgICBjb250cm9sLmdldCgnc2hvdycpLnZhbHVlLm5leHQocHJvcC5zaG93KTtcbiAgICAgICAgICAgICAgY29uc3QgY29uZmlnOiBLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2UgPSB0aGlzLmZvcm1Db25maWdbaW5kZXhDb250cm9sXSA/PyBudWxsO1xuICAgICAgICAgICAgICBpZiAocHJvcC5zaG93KSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5keW5hbWljRm9ybSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtQXJyYXlNb3JlSXRlbXMgPSBjb250cm9sLmdldCgnZHluYW1pY0Zvcm1Hcm91cCcpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BcnJheU1vcmVJdGVtcy5wdXNoKGNvbmZpZz8uZHluYW1pY0Zvcm1Db25maWc/LmZvcm0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycyA9IGNvbmZpZy5zeW5jVmFsaWRhdG9ycyA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jcGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goQ3BmVmFsaWRhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmNucGopIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goQ25walZhbGlkYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWcucmVxdWlyZWQgPT09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goQXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWxpZGF0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5taW4gJiYgdHlwZW9mIGNvbmZpZy5taW4gPT09IFwibnVtYmVyXCIpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbihjb25maWcubWluKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcubWF4ICYmIHR5cGVvZiBjb25maWcubWF4ID09PSBcIm51bWJlclwiKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgoY29uZmlnLm1heCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5kYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5kYXRldGltZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0udGltZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1pbiAmJiB0eXBlb2YgY29uZmlnLm1pbiA9PT0gXCJzdHJpbmdcIikgeyB2YWxpZGF0b3JzLnB1c2goRGF0ZU1pblZhbGlkYXRvcihjb25maWcubWluKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1heCAmJiB0eXBlb2YgY29uZmlnLm1heCA9PT0gXCJzdHJpbmdcIikgeyB2YWxpZGF0b3JzLnB1c2goRGF0ZU1heFZhbGlkYXRvcihjb25maWcubWF4KSk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1pbkxlbmd0aCkgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGNvbmZpZy5taW5MZW5ndGgpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5tYXhMZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChjb25maWcubWF4TGVuZ3RoKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldCgndmFsdWUnKS5zZXRBc3luY1ZhbGlkYXRvcnMoY29uZmlnLmFzeW5jVmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHByb3AuY2xlYXJDdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRyb2wgYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdkeW5hbWljRm9ybUdyb3VwJyk7XG4gICAgICAgICAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnZHluYW1pY0Zvcm1Hcm91cCcsIHRoaXMuZmIuYXJyYXkoW10pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGF1dG9jb21wbGV0ZUZpbHRlcihhcnI6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXSwgdmFsdWU6IHN0cmluZyk6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXSB7XG4gICAgcmV0dXJuIGFyci5maWx0ZXIoZmlsdGVyID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICBsZXQgZmluZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgICAgIC5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhcnQpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgIGZpbmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIGZpbmQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZUJ5UHJvcChmb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksIHByb3A6IEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlKSB7XG4gICAgaWYgKGZvcm1BcnJheSkge1xuICAgICAgaWYgKHByb3AubmFtZS5pbmRleE9mKCcgPiAnKSA+PSAwKSB7XG4gICAgICAgIGxldCBkeW5hbWljRm9ybVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlPjtcbiAgICAgICAgY29uc3QgYXJyUHJvcE5hbWUgPSBwcm9wLm5hbWUuc3BsaXQoJyA+ICcpO1xuICAgICAgICBsZXQgaW5kZXhQcm9wTmFtZSA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUFycmF5LmNvbnRyb2xzLmZpbmQoY29udHJvbCA9PiBjb250cm9sLmdldCgnbmFtZScpLnZhbHVlID09PSBhcnJQcm9wTmFtZVtpbmRleFByb3BOYW1lXSk7XG4gICAgICAgICAgaWYgKGluZGV4UHJvcE5hbWUgPT09IGFyclByb3BOYW1lLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgIGR5bmFtaWNGb3JtU3ViamVjdCA9IGNvbnRyb2wuZ2V0KCdkeW5hbWljRm9ybUNvbmZpZycpLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZHluYW1pY0Zvcm0gPSBkeW5hbWljRm9ybVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChkeW5hbWljRm9ybS5mb3JtQ29uZmlnLmZpbmQoZmMgPT4gZmMubmFtZSA9PT0gYXJyUHJvcE5hbWVbYXJyUHJvcE5hbWUubGVuZ3RoIC0gMV0pKSB7XG4gICAgICAgICAgICAgIGlmIChkeW5hbWljRm9ybS5zZXRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBkeW5hbWljRm9ybS5zZXRWYWx1ZXMubmV4dChrb2FsYShkeW5hbWljRm9ybS5zZXRWYWx1ZXMuZ2V0VmFsdWUoKSkuYXJyYXk8YW55PigpLm1lcmdlKFt7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBhcnJQcm9wTmFtZVthcnJQcm9wTmFtZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wLnZhbHVlXG4gICAgICAgICAgICAgICAgfV0pLmdldFZhbHVlKCkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR5bmFtaWNGb3JtLnNldFZhbHVlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljU2V0VmFsdWVJbnRlcmZhY2VbXT4oW3tcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGFyclByb3BOYW1lW2FyclByb3BOYW1lLmxlbmd0aCAtIDFdLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb3AudmFsdWVcbiAgICAgICAgICAgICAgICB9XSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhQcm9wTmFtZSsrO1xuICAgICAgICB9IHdoaWxlIChpbmRleFByb3BOYW1lIDwgYXJyUHJvcE5hbWUubGVuZ3RoIC0gMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgZm9ybUFycmF5LmNvbnRyb2xzLnZhbHVlcygpKSB7XG4gICAgICAgICAgaWYgKGNvbnRyb2wuZ2V0KCduYW1lJykudmFsdWUgPT09IHByb3AubmFtZSkge1xuICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUocHJvcC52YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldENvbmZpZ0R5bmFtaWNGb3JtKG5ld0Zvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmICh0aGlzLnNob3dGaWVsZHNNb3JlSXRlbnNDb25maWcpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKS52YWx1ZTtcbiAgICAgIGNvbnN0IGNvbmZpZ3MgPSB0aGlzLnNob3dGaWVsZHNNb3JlSXRlbnNDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihjb25maWcgPT4gY29uZmlnLm5hbWVGaWVsZCA9PT0gbmV3Rm9ybUdyb3VwLmdldCgnbmFtZScpLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydChjb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuZm5TaG93KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICBpZiAoY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnICYmIGNvbmZpZy5mblNob3codmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sRHluYW1pY0Zvcm1Db25maWcgPSB0aGlzLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoY29udHJvbCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmZpZWxkc1RvU2hvdy5pbmRleE9mKGNvbnRyb2wuZ2V0KCduYW1lJykudmFsdWUpID49IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZHluYW1pY0Zvcm1Db25maWdTdWJqZWN0ID0gY29udHJvbER5bmFtaWNGb3JtQ29uZmlnLmdldCgnZHluYW1pY0Zvcm1Db25maWcnKS52YWx1ZSBhcyBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZT47XG4gICAgICAgICAgICBkeW5hbWljRm9ybUNvbmZpZ1N1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEpO1xuICAgICAgICAgICAgZHluYW1pY0Zvcm1Db25maWdTdWJqZWN0Lm5leHQoY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnKHZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLnNob3dGaWVsZHMoXG4gICAgICAgICAgICB0aGlzLnNob3dGaWVsZHMsXG4gICAgICAgICAgICBjb25maWcuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgY29uZmlnLmZuU2hvdyh2YWx1ZSksXG4gICAgICAgICAgICBjb25maWcuY2xlYXJDdXJyZW50VmFsdWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUF1dG9jb21wbGV0ZVNlbGVjdChzZWxlY3RlZFZhbHVlczogS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZVtdLCB2YWx1ZTogS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZSkge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcblxuICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRJdGVtIG9mIHNlbGVjdGVkVmFsdWVzLnZhbHVlcygpKSB7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtLm5hbWUgPT09IHZhbHVlLm5hbWUpIHtcbiAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInAtcmVsYXRpdmUgdy0xMDBcIiBbaWRdPVwiZm9ybUlkXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHByb3ByaWVkYWRlIG9mIGNvbnRyb2xzPy5jb250cm9sczsgbGV0IGkgPSBpbmRleDtcIlxuICAgICAgIFtuZ0NsYXNzXT1cIihwcm9wcmllZGFkZS5nZXQoJ3Nob3cnKS52YWx1ZSB8IGFzeW5jKSA/IHByb3ByaWVkYWRlLmdldCgnY2xhc3MnKS52YWx1ZSA6ICdkLW5vbmUnXCJcbiAgICAgICBmb3JtQXJyYXlOYW1lPVwiZm9ybURhdGFcIj5cblx0ICA8ZGl2ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdzaG93JykudmFsdWUgfCBhc3luY1wiPlxuXHQgICAgPG1hdC1mb3JtLWZpZWxkXG5cdFx0ICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnRleHQgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wYXNzd29yZCB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNwZiB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGogfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5kYXRldGltZSB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmVtYWlsIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQubnVtYmVyIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nTnVtYmVyIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGltZSB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmRhdGUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5ob3Vyc0FuZE1pbnV0ZXMgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5waG9uZSB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBlcmNlbnQgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jb2xvciB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm1vbnRoIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29tcGV0ZW5jZURhdGUgfHxcbiAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5zdHJpbmdXaXRoQ3VzdG9tTWFzY1wiXG5cdFx0ICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcblx0XHQgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuXHRcdCAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHQgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cblx0ICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG5cdCAgICAgIDxpbnB1dFxuXHRcdCAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIlxuXHRcdCAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuXHRcdCAgICAgIChrZXl1cCk9XCJob3Vyc0FuZE1pbnV0ZXNBcHBseU1hc2soaSwgJGV2ZW50KVwiXG5cdFx0ICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG5cdFx0ICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcblx0XHQgICAgICBbbWFza109XCIoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jb21wZXRlbmNlRGF0ZSkgPyAnMDAvMDAwMCcgOiBudWxsKSB8fFxuXHRcdCAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGhvbmUpID8gJygwMCkwMDAwLTAwMDA/MCcgOiBudWxsKSB8fFxuXHRcdCAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nTnVtYmVyKSA/ICcweycrcHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSsnfScgOiBudWxsKSB8fFxuICAgICAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY3BmKSA/ICcwMDAuMDAwLjAwMC0wMCcgOiBudWxsKSB8fFxuICAgICAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY25waikgPyAnMDAuMDAwLjAwMC8wMDAwLTAwJyA6IG51bGwpIHx8XG4gICAgICAgICAgICAgICAgICAoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wZXJjZW50KSA/ICdwZXJjZW50JyA6IG51bGwpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5ob3Vyc0FuZE1pbnV0ZXMpID8gaG91cnNBbmRNaW51dGVzTWFzayA6IG51bGwpIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5zdHJpbmdXaXRoQ3VzdG9tTWFzYykgPyBwcm9wcmllZGFkZS5nZXQoJ2N1c3RvbU1hc2MnKS52YWx1ZSA6IG51bGwpXCJcblx0XHQgICAgICBbdmFsaWRhdGlvbl09XCJcblx0ICAgICAgICAgICAgICAgICAgICAocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNwZiAmJiBwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jcGZJbnZhbGlkKSB8fFxuXHQgICAgICAgICAgICAgICAgICAgIChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY25waiAmJiBwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jbnBqSW52YWxpZClcIlxuXHRcdCAgICAgIFt0eXBlXT1cIigocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNwZiB8fFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY25waiB8fFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGhvbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBlcmNlbnRcbiAgICAgICAgICAgICAgICAgICkpID8gJ3RlbCcgOiAoXG4gICAgICAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5tb250aCA/XG4gICAgICAgICAgICAgICAgICAgICdtb250aCcgOiAoXG4gICAgICAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5kYXRlID9cbiAgICAgICAgICAgICAgICAgICAgJ2RhdGUnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZGF0ZXRpbWUgP1xuICAgICAgICAgICAgICAgICAgICAnZGF0ZXRpbWUtbG9jYWwnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZW1haWwgP1xuICAgICAgICAgICAgICAgICAgICAnZW1haWwnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQubnVtYmVyID9cbiAgICAgICAgICAgICAgICAgICAgJ251bWJlcicgOiAoXG4gICAgICAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC50aW1lID9cbiAgICAgICAgICAgICAgICAgICAgJ3RpbWUnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGFzc3dvcmQgP1xuICAgICAgICAgICAgICAgICAgICAncGFzc3dvcmQnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29sb3IgP1xuICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogJ3RleHQnKSkpKSkpKSlcIlxuICAgICAgICAgIFttaW5dPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZVwiXG4gICAgICAgICAgW21heF09XCJwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW3Rob3VzYW5kU2VwYXJhdG9yXT1cInByb3ByaWVkYWRlLmdldCgnY3VzdG9tTWFzY1Rob3VzYW5kU2VwYXJhdG9yJykudmFsdWVcIlxuICAgICAgICAgIFtzdWZmaXhdPVwicHJvcHJpZWRhZGUuZ2V0KCdjdXN0b21NYXNjU3VmZml4JykudmFsdWVcIlxuICAgICAgICAgIFtwcmVmaXhdPVwicHJvcHJpZWRhZGUuZ2V0KCdjdXN0b21NYXNjUHJlZml4JykudmFsdWVcIlxuICAgICAgICAgIHNlcGFyYXRvckxpbWl0PVwiMFwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRSYW5kb21TdHJpbmcoKVwiXG5cdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgIG1hdElucHV0Lz5cblx0ICAgICAgPGJ1dHRvblxuXHRcdCAgICAgIChjbGljayk9XCJwYXNzd29yZFZpZXcoaSlcIlxuXHRcdCAgICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdoaWRlUGFzc3dvcmQnKS52YWx1ZSAhPT0gbnVsbFwiXG5cdFx0ICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGlkZSBwYXNzd29yZCdcIlxuXHRcdCAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJwcm9wcmllZGFkZS5nZXQoJ2hpZGVQYXNzd29yZCcpLnZhbHVlXCJcblx0XHQgICAgICBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IHRhYmluZGV4PVwiLTFcIiB0eXBlPVwiYnV0dG9uXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPnt7cHJvcHJpZWRhZGUuZ2V0KCdoaWRlUGFzc3dvcmQnKS52YWx1ZSA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eSd9fTwvbWF0LWljb24+XG5cdCAgICAgIDwvYnV0dG9uPlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jcGZJbnZhbGlkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRJbnZhbGlkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jbnBqSW52YWxpZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0SW52YWxpZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uZW1haWxcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldEludmFsaWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1pblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWluTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWF4XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNYXhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uZGF0ZU1pblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0RGF0ZU1pbk1lc3NhZ2UoKX19XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlIHwgZGF0ZTpcInNob3J0RGF0ZVwifX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uZGF0ZU1heFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0RGF0ZU1heE1lc3NhZ2UoKX19XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlIHwgZGF0ZTpcInNob3J0RGF0ZVwifX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8bWF0LWZvcm0tZmllbGRcblx0XHQgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29pblwiXG5cdFx0ICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcblx0XHQgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuXHRcdCAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHQgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cblx0ICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG5cdCAgICAgIDxpbnB1dFxuXHRcdCAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbl09XCJwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4XT1cInByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWVcIlxuICAgICAgICAgIFttaW5MZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW21heExlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImdldFJhbmRvbVN0cmluZygpXCJcblx0XHQgICAgICBjdXJyZW5jeU1hc2tcblx0XHQgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG5cdFx0ICAgICAgbWF0SW5wdXRcblx0XHQgICAgICB0eXBlPVwidGVsXCIvPlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5NZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1pbkxlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWluTGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWF4TGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNYXhMZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5yZXF1aXJlZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0UmVxdWlyZWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmZsb2F0XCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwicHJvcHJpZWRhZGUuZ2V0KCdhcHBlYXJhbmNlJykudmFsdWVcIlxuICAgICAgICBbZmxvYXRMYWJlbF09XCJwcm9wcmllZGFkZS5nZXQoJ2Zsb2F0TGFiZWwnKS52YWx1ZVwiXG4gICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuICAgICAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2tvYWxhQXV0b0ZvY3VzXT1cInByb3ByaWVkYWRlLmdldCgnZm9jdXMnKS52YWx1ZVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICBbbWluXT1cInByb3ByaWVkYWRlLmdldCgnbWluJykudmFsdWVcIlxuICAgICAgICAgIFttYXhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiZ2V0UmFuZG9tU3RyaW5nKClcIlxuICAgICAgICAgIGN1cnJlbmN5TWFza1xuICAgICAgICAgIFtvcHRpb25zXT1cIntwcmVmaXg6ICcnfVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgdHlwZT1cInRlbFwiLz5cbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cbiAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1pblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWluTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWF4XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNYXhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblx0ICAgIDxtYXQtZm9ybS1maWVsZFxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC52YWx1ZUxpc3QgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC50ZXh0YXJlYVwiXG5cdFx0ICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcblx0XHQgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuXHRcdCAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHQgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cblx0ICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG5cdCAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICN0ZXh0YXJlYVxuXHRcdCAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIjhcIlxuXHRcdCAgICAgIFtjZGtBdXRvc2l6ZU1pblJvd3NdPVwiM1wiXG5cdFx0ICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZVwiXG5cdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgIG1hdElucHV0PlxuICAgICAgICA8L3RleHRhcmVhPlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIj5cbiAgICAgICAgICB7e3RleHRhcmVhLnZhbHVlLmxlbmd0aH19L3t7cHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cblx0XHQgIDxtYXQtZm9ybS1maWVsZFxuXHRcdFx0ICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC50ZXh0TG9nc1wiXG5cdFx0XHQgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcblx0XHRcdCAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuXHRcdFx0ICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHRcdCAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cblx0ICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG5cdCAgICAgIDxkaXYgW2lubmVySFRNTF09XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRMb2dzJykudmFsdWVcIiBjbGFzcz1cInRleHQtb2JzXCI+PC9kaXY+XG5cdCAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICN0ZXh0YXJlYVxuXHRcdCAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuICAgICAgICAgIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgICAgICAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIjhcIlxuXHRcdCAgICAgIFtjZGtBdXRvc2l6ZU1pblJvd3NdPVwiM1wiXG5cdFx0ICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZVwiXG5cdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgIG1hdElucHV0PlxuXHQgICAgICA8L3RleHRhcmVhPlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIj5cbiAgICAgICAgICB7e3RleHRhcmVhLnZhbHVlLmxlbmd0aH19L3t7cHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cblx0ICAgIDxtYXQtZm9ybS1maWVsZFxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5zZWxlY3RcIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8bWF0LXNlbGVjdCBbbXVsdGlwbGVdPVwicHJvcHJpZWRhZGUuZ2V0KCdtdWx0aXBsZScpLnZhbHVlXCIgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbnMgb2YgcHJvcHJpZWRhZGUuZ2V0KCdvcGNvZXNTZWxlY3QnKS52YWx1ZVwiIFt2YWx1ZV09XCJvcHRpb25zLnZhbHVlXCI+XG5cdCAgICAgICAgICB7e29wdGlvbnMubmFtZX19XG5cdCAgICAgICAgPC9tYXQtb3B0aW9uPlxuXHQgICAgICA8L21hdC1zZWxlY3Q+XG5cdCAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cblx0XHQgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG5cdCAgICAgIDwvbWF0LWhpbnQ+XG5cdCAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5yZXF1aXJlZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0UmVxdWlyZWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIGNsYXNzPVwic2VsZWN0LW11bHRpcGxlLW5hdGl2ZVwiXG4gICAgICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnNlbGVjdE11bHRpcGxlTmF0aXZlXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwicHJvcHJpZWRhZGUuZ2V0KCdhcHBlYXJhbmNlJykudmFsdWVcIlxuICAgICAgICBbZmxvYXRMYWJlbF09XCJwcm9wcmllZGFkZS5nZXQoJ2Zsb2F0TGFiZWwnKS52YWx1ZVwiXG4gICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuICAgICAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L21hdC1sYWJlbD5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIG1hdE5hdGl2ZUNvbnRyb2xcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIHByb3ByaWVkYWRlLmdldCgnb3Bjb2VzU2VsZWN0JykudmFsdWVcIiBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiPlxuICAgICAgICAgICAge3tvcHRpb25zLm5hbWV9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cbiAgICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8ZGl2XG5cdFx0ICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNoZWNrYm94XCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICB2YWx1ZT1cInRydWVcIj5cblx0ICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19XG5cdCAgICAgIDwvbWF0LWNoZWNrYm94PlxuXHQgICAgPC9kaXY+XG5cdFx0ICA8ZGl2XG5cdFx0XHQgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm1vcmVJdGVtc1wiXG5cdFx0XHQgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuXHRcdFx0ICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiXG5cdFx0XHQgIGNsYXNzPVwibW9yZS1pdGVtcy1jb250ZW50XCI+XG5cdFx0XHQgIDxmaWVsZHNldD5cblx0XHRcdFx0ICA8bGVnZW5kPlxuXHRcdFx0XHRcdCAgPGtvYWxhLWJ1dHRvblxuXHRcdFx0XHRcdFx0ICAoY2xpY2spPVwiYWRkTW9yZUl0ZW0oaSlcIlxuXHRcdFx0XHRcdFx0ICBbZGlzYWJsZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggPT09IHByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zTWF4SXRlbXMnKS52YWx1ZVwiXG5cdFx0XHRcdFx0XHQgIFt0b29sdGlwXT1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQnV0dG9uSWNvbkFkZGxhYmVsJykudmFsdWVcIlxuXHRcdFx0XHRcdFx0ICBbYmFja2dyb3VuZENvbG9yXT1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zSWNvbkJhY2tncm91bmRDb2xvcicpLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zSWNvbkZvbnRDb2xvcicpLnZhbHVlXCJcblx0XHRcdFx0XHRcdCAgY2xhc3M9XCJidG4tYWRkLW1vcmUtaXRlbXNcIlxuXHRcdFx0XHRcdFx0ICBpY29uPVwiYWRkXCI+XG5cdFx0XHRcdFx0ICA8L2tvYWxhLWJ1dHRvbj5cblx0XHRcdFx0XHQgIHt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX0gKE1pbi46IHt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNNaW5JdGVtcycpLnZhbHVlfX1cblx0XHRcdFx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNw6F4Ljoge3twcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc01heEl0ZW1zJykudmFsdWV9fSlcblx0XHRcdFx0ICA8L2xlZ2VuZD5cblx0XHRcdFx0ICA8bWF0LWFjY29yZGlvbiBjbGFzcz1cIml0ZW1zXCIgbXVsdGk+XG5cdFx0XHRcdFx0ICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxuXHRcdFx0XHRcdFx0ICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlLnNsaWNlKCkucmV2ZXJzZSgpOyBpbmRleCBhcyBpbmRleE1vcmVJdGVtc1wiXG5cdFx0XHRcdFx0XHQgIGV4cGFuZGVkPlxuXHRcdFx0XHRcdFx0ICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cInRpdGxlRm9ybVwiPiNcblx0XHRcdFx0XHRcdFx0XHRcdHt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggLSAxIC0gaW5kZXhNb3JlSXRlbXMgKyAxfX08L21hdC1wYW5lbC10aXRsZT5cblx0XHRcdFx0XHRcdFx0XHQ8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwidGl0bGVGb3JtXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHR7e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8bWF0LWljb24+e3twcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0ljb24nKS52YWx1ZX19PC9tYXQtaWNvbj5cblx0XHRcdFx0XHRcdFx0XHQ8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cblx0XHRcdFx0XHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cblx0XHRcdFx0XHRcdCAgPGtvYWxhLWR5bmFtaWMtZm9ybVxuXHRcdFx0XHRcdFx0XHQgIFtzaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnXT1cIml0ZW0uc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZ1wiXG5cdFx0XHRcdFx0XHRcdCAgW3Nob3dGaWVsZHNdPVwiaXRlbS5zaG93RmllbGRzXCJcblx0XHRcdFx0XHRcdFx0ICBbZm9ybUNvbmZpZ109XCJpdGVtLmZvcm1Db25maWdcIlxuXHRcdFx0XHRcdFx0XHQgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICAgICAgW3RhYkluZGV4U3RhcnRdPVwidGFiSW5kZXhTdGFydCArIGlcIj5cblx0XHRcdFx0XHRcdCAgPC9rb2FsYS1keW5hbWljLWZvcm0+XG5cdFx0XHRcdFx0ICAgIDxtYXQtYWN0aW9uLXJvd1xuXHRcdFx0XHRcdFx0ICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggPiBwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc01pbkl0ZW1zJykudmFsdWVcIj5cblx0XHRcdFx0XHQgICAgICA8YnV0dG9uXG5cdFx0XHRcdFx0XHQgICAgICAoY2xpY2spPVwicmVtb3ZlTW9yZUl0ZW0oaSwgcHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggLSAxIC0gaW5kZXhNb3JlSXRlbXMpXCJcblx0XHRcdFx0XHRcdCAgICAgIG1hdC1pY29uLWJ1dHRvbj5cblx0XHRcdFx0XHRcdCAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuXHRcdFx0XHRcdCAgICAgIDwvYnV0dG9uPlxuXHRcdFx0XHRcdCAgICA8L21hdC1hY3Rpb24tcm93PlxuXHRcdFx0XHRcdCAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuXHRcdFx0XHQgIDwvbWF0LWFjY29yZGlvbj5cblx0XHRcdCAgPC9maWVsZHNldD5cblx0XHQgIDwvZGl2PlxuXHRcdCAgPG1hdC1mb3JtLWZpZWxkXG5cdFx0XHQgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmF1dG9jb21wbGV0ZVwiXG5cdFx0XHQgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcblx0XHRcdCAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuXHRcdFx0ICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHRcdCAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cblx0ICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19IHt7cHJvcHJpZWRhZGUuZ2V0KCdtdWx0aXBsZScpLnZhbHVlICYmXG5cdCAgICAgIHByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZSA/ICcqJyA6ICcnfX08L21hdC1sYWJlbD5cblx0XHRcdCAgPGRpdiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZSBlbHNlIHNpbmdsZVwiPlxuXHQgICAgICAgIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdD5cbiAgICAgICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVPcHRpb25PbkF1dG9jb21wbGV0ZShpLCBvcHRpb24pXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJnZXRDb2xvckNoaXAocHJvcHJpZWRhZGUuZ2V0KCdhdXRvY29tcGxldGVNdWx0aXBsZUNvbmZpZycpLnZhbHVlIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICB7e2Rpc3BsYXkob3B0aW9uKX19XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFwcm9wcmllZGFkZS5nZXQoJ2Rpc2FibGVkJykudmFsdWVcIiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1jaGlwPlxuXHQgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIFtpZF09XCInYXV0b2NvbXBsZXRlLScgKyBwcm9wcmllZGFkZS5nZXQoJ25hbWUnKS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuXHRcdCAgICAgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCJcblx0XHQgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcblx0XHQgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiXG4gICAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiZ2V0UmFuZG9tU3RyaW5nKClcIlxuXHRcdCAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG5cdFx0ICAgICAgICAgIG1hdElucHV0XG5cdFx0ICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcblx0XHQgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY2lvbmUgdW0gb3UgbWFpcyBvcMOnw7Vlcy4uLlwiPlxuXHQgICAgICAgIDwvbWF0LWNoaXAtbGlzdD5cblx0ICAgICAgPC9kaXY+XG5cdCAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlPlxuXHRcdCAgICAgIDxpbnB1dFxuXHRcdFx0ICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuXHRcdFx0ICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG4gICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRSYW5kb21TdHJpbmcoKVwiXG5cdFx0XHQgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG5cdFx0XHQgICAgICBtYXRJbnB1dFxuXHRcdFx0ICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY2lvbmUgdW1hIG9ww6fDo28uLi5cIlxuXHRcdFx0ICAgICAgdHlwZT1cInRleHRcIj5cblx0ICAgICAgPC9uZy10ZW1wbGF0ZT5cblx0ICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdhdXRvY29tcGxldGVMb2FkaW5nJykudmFsdWUgfCBhc3luY1wiIGNvbG9yPVwicHJpbWFyeVwiXG5cdCAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXg+PC9tYXQtc3Bpbm5lcj5cblx0ICAgICAgPGJ1dHRvblxuXHRcdCAgICAgIChjbGljayk9XCJjbGVhckF1dG9jb21wbGV0ZShpKVwiXG5cdFx0ICAgICAgKm5nSWY9XCJcblx0ICAgICAgICAgICEocHJvcHJpZWRhZGUuZ2V0KCdhdXRvY29tcGxldGVMb2FkaW5nJykudmFsdWUgfCBhc3luYykgJiZcblx0ICAgICAgICAgICFwcm9wcmllZGFkZS5nZXQoJ2Rpc2FibGVkJykudmFsdWVcIlxuXHRcdCAgICAgIGNvbG9yPVwid2FyblwiXG5cdFx0ICAgICAgbWF0LWljb24tYnV0dG9uXG5cdFx0ICAgICAgbWF0U3VmZml4XG5cdFx0ICAgICAgdHlwZT1cImJ1dHRvblwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG5cdCAgICAgIDwvYnV0dG9uPlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWQgfHwgcHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uYXV0b2NvbXBsZXRlU2VsZWN0ZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldEF1dG9jb21wbGV0ZU1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1hdXRvY29tcGxldGVcblx0XHQgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG5cdFx0ICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24+XG5cdFx0ICAgICAgPGRpdiAqbmdJZj1cIihnZXRBdXRvY29tcGxldGVPcHRpb25zKHByb3ByaWVkYWRlKSB8IGFzeW5jKSBhcyBvcHRpb25zXCI+XG5cdFx0ICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG5cdFx0ICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxuXHRcdCAgICAgICAgPC9tYXQtb3B0aW9uPlxuXHRcdCAgICAgIDwvZGl2PlxuXHQgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG5cdCAgICA8L21hdC1mb3JtLWZpZWxkPlxuXHRcdCAgPGRpdiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5maWxlXCI+XG5cdFx0XHQgIDxrb2FsYS1maWxlLWJ1dHRvblxuXHRcdFx0XHQgIChnZXRGaWxlcyk9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUoJGV2ZW50KVwiXG5cdFx0XHRcdCAgW2FjY2VwdF09XCJwcm9wcmllZGFkZS5nZXQoJ2ZpbGVCdXR0b25Db25maWcnKS52YWx1ZS5hY2NlcHRcIlxuXHRcdFx0XHQgIFtiYWNrZ3JvdW5kQ29sb3JdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWxlQnV0dG9uQ29uZmlnJykudmFsdWUuYmFja2dyb3VuZENvbG9yXCJcblx0XHRcdFx0ICBbY29sb3JdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWxlQnV0dG9uQ29uZmlnJykudmFsdWUuY29sb3JcIlxuXHRcdFx0XHQgIFtkaXNhYmxlZF09XCJwcm9wcmllZGFkZS5nZXQoJ2Rpc2FibGVkJykudmFsdWVcIlxuXHRcdFx0XHQgIFtpY29uXT1cInByb3ByaWVkYWRlLmdldCgnZmlsZUJ1dHRvbkNvbmZpZycpLnZhbHVlLmljb25cIlxuXHRcdFx0XHQgIFttdWx0aXBsZV09XCJwcm9wcmllZGFkZS5nZXQoJ211bHRpcGxlJykudmFsdWVcIlxuXHRcdFx0XHQgIFt0ZXh0XT1cInByb3ByaWVkYWRlLmdldCgnZmlsZUJ1dHRvbkNvbmZpZycpLnZhbHVlLnRleHRcIj5cblx0XHRcdCAgPC9rb2FsYS1maWxlLWJ1dHRvbj5cblx0XHQgIDwvZGl2PlxuXHRcdCAgPGRpdiAqbmdJZj1cIlxuXHRcdCAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZHluYW1pY0Zvcm0gJiZcblx0XHRcdFx0KGdldER5bmFtaWNGb3JtQ29uZmlnKHByb3ByaWVkYWRlKSB8IGFzeW5jKSBhcyBkeW5hbWljRm9ybUNvbmZpZ1wiPlxuXHRcdFx0ICA8ZmllbGRzZXQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUgZWxzZSBkeW5hbWljRm9ybVdpdGhvdXRMYWJlbFwiPlxuXHRcdFx0XHQgIDxsZWdlbmQ+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbGVnZW5kPlxuXHRcdFx0XHQgIDxrb2FsYS1keW5hbWljLWZvcm1cblx0XHRcdFx0XHQgIFtmb3JtQ29uZmlnXT1cImR5bmFtaWNGb3JtQ29uZmlnLmZvcm1Db25maWdcIlxuXHRcdFx0XHRcdCAgW2Zvcm1dPVwiZHluYW1pY0Zvcm1Db25maWcuZm9ybVwiXG5cdFx0XHRcdFx0ICBbc2V0VmFsdWVzXT1cImR5bmFtaWNGb3JtQ29uZmlnLnNldFZhbHVlc1wiXG5cdFx0XHRcdFx0ICBbc2hvd0ZpZWxkc109XCJkeW5hbWljRm9ybUNvbmZpZy5zaG93RmllbGRzXCJcbiAgICAgICAgICAgIFt0YWJJbmRleFN0YXJ0XT1cInRhYkluZGV4U3RhcnQgKyBpXCI+XG5cdFx0XHRcdCAgPC9rb2FsYS1keW5hbWljLWZvcm0+XG5cdFx0XHQgIDwvZmllbGRzZXQ+XG5cdFx0XHQgIDxuZy10ZW1wbGF0ZSAjZHluYW1pY0Zvcm1XaXRob3V0TGFiZWw+XG5cdFx0XHRcdCAgPGtvYWxhLWR5bmFtaWMtZm9ybVxuXHRcdFx0XHRcdCAgW2Zvcm1Db25maWddPVwiZHluYW1pY0Zvcm1Db25maWcuZm9ybUNvbmZpZ1wiXG5cdFx0XHRcdFx0ICBbZm9ybV09XCJkeW5hbWljRm9ybUNvbmZpZy5mb3JtXCJcblx0XHRcdFx0XHQgIFtzZXRWYWx1ZXNdPVwiZHluYW1pY0Zvcm1Db25maWcuc2V0VmFsdWVzXCJcblx0XHRcdFx0XHQgIFtzaG93RmllbGRzXT1cImR5bmFtaWNGb3JtQ29uZmlnLnNob3dGaWVsZHNcIlxuICAgICAgICAgICAgW3RhYkluZGV4U3RhcnRdPVwidGFiSW5kZXhTdGFydCArIGlcIj5cblx0XHRcdFx0ICA8L2tvYWxhLWR5bmFtaWMtZm9ybT5cblx0XHRcdCAgPC9uZy10ZW1wbGF0ZT5cblx0XHQgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJhZGlvLWJ0bi1ncm91cFwiXG4gICAgICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnJhZGlvXCJcbiAgICAgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIj5cbiAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWVcIj57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9sYWJlbD5cbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIHByb3ByaWVkYWRlLmdldCgnb3Bjb2VzU2VsZWN0JykudmFsdWVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIj5cbiAgICAgICAgICAgIHt7b3B0aW9ucy5uYW1lfX1cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgPC9kaXY+XG5cdCAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnRuLXN1Ym1pdF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEQsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBRXJILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQVE3RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8s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bEIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0gfSBmcm9tICcuL2VudW1zL2R5bmFtaWMtZm9ybS10eXBlLWZpZWxkLmVudW0nO1xuaW1wb3J0IHsgQ3BmVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL2NwZi52YWxpZGF0b3InO1xuaW1wb3J0IHsgQ25walZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9jbnBqLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BYnN0cmFjdCB9IGZyb20gJy4uL2Zvcm0uYWJzdHJhY3QnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNTZXRWYWx1ZUludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLXNldC12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcnMvYXV0b2NvbXBsZXRlLXNlbGVjdGVkLnZhbGlkYXRvcic7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtYXV0b2NvbXBsZXRlLW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1TaG93RmllbGRJbnRlcmZhY2UgfSBmcm9tICcuL2ludGVyZmFjZXMva29hbGEuZHluYW1pYy1mb3JtLXNob3ctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSAnLi9rb2FsYS5keW5hbWljLWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBLb2FsYUR5bmFtaWNGb3JtTW9yZUl0ZW5zU2hvd0ZpZWxkQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2tvYWxhLmR5bmFtaWMtZm9ybS1tb3JlLWl0ZW5zLXNob3ctZmllbGQtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEtvYWxhRHluYW1pY0Zvcm1BdXRvY29tcGxldGVNdWx0aXBsZUNvbmZpZ0ludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWZvcm0tYXV0b2NvbXBsZXRlLW11bHRpcGxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9rb2FsYS5keW5hbWljLWZvcm0tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCJAa29hbGFyeC91dGlscy9vcGVyYXRvcnMvZGVsYXlcIjtcbmltcG9ydCB7IGtvYWxhIH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzXCI7XG5pbXBvcnQgeyBEYXRlTWluVmFsaWRhdG9yIH0gZnJvbSBcIi4vdmFsaWRhdG9ycy9kYXRlLW1pbi52YWxpZGF0b3JcIjtcbmltcG9ydCB7IERhdGVNYXhWYWxpZGF0b3IgfSBmcm9tIFwiLi92YWxpZGF0b3JzL2RhdGUtbWF4LnZhbGlkYXRvclwiO1xuaW1wb3J0IHsgS29hbGFMYW5ndWFnZUhlbHBlciB9IGZyb20gXCJAa29hbGFyeC91aS9jb3JlXCI7XG5pbXBvcnQgeyByYW5kb21TdHJpbmcgfSBmcm9tIFwiQGtvYWxhcngvdXRpbHMvb3BlcmF0b3JzL3N0cmluZ1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdrb2FsYS1keW5hbWljLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydkeW5hbWljLWZvcm0uY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBleHRlbmRzIEZvcm1BYnN0cmFjdCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZvcm1Db25maWc6IEtvYWxhRHluYW1pY0Zvcm1GaWVsZEludGVyZmFjZVtdO1xuICBASW5wdXQoKSBzaG93RmllbGRzOiBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybVNob3dGaWVsZEludGVyZmFjZVtdPjtcbiAgQElucHV0KCkgc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZzogS29hbGFEeW5hbWljRm9ybU1vcmVJdGVuc1Nob3dGaWVsZENvbmZpZ0ludGVyZmFjZVtdO1xuICBASW5wdXQoKSBzZXRWYWx1ZXM6IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNTZXRWYWx1ZUludGVyZmFjZVtdPjtcbiAgQElucHV0KCkgdGFiSW5kZXhTdGFydDogbnVtYmVyID0gMTtcblxuICBwdWJsaWMgY29udHJvbHM6IFVudHlwZWRGb3JtQXJyYXk7XG4gIHB1YmxpYyB0eXBlRmllbGQgPSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW07XG4gIHB1YmxpYyBob3Vyc0FuZE1pbnV0ZXNNYXNrID0gJzAwOjAwMCc7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2UgPSBLb2FsYUxhbmd1YWdlSGVscGVyO1xuICBwdWJsaWMgZm9ybUlkID0gcmFuZG9tU3RyaW5nKDI1LCB7bG93ZXJjYXNlOiB0cnVlLCB1cHBlcmNhc2U6IHRydWV9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkeW5hbWljRm9ybVNlcnZpY2U6IEtvYWxhRHluYW1pY0Zvcm1TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCgpID0+IHRoaXMuZm9ybSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybS5nZXQoJ2Zvcm1EYXRhJykpIHtcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdmb3JtRGF0YScsIHRoaXMuZmIuYXJyYXkoW10pKTtcbiAgICB9XG4gICAgdGhpcy5jb250cm9scyA9IHRoaXMuZm9ybS5nZXQoJ2Zvcm1EYXRhJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICB0aGlzLmZvcm1Db25maWc/LmZvckVhY2goKGNvbmZpZywgaW5kZXhDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IG5ld0Zvcm1Hcm91cCA9IHRoaXMubmV3Q29udHJvbChjb25maWcpO1xuICAgICAgaWYgKGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgndmFsdWUnKS5zZXRBc3luY1ZhbGlkYXRvcnMoY29uZmlnLmFzeW5jVmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgICBuZXdGb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmR5bmFtaWNGb3JtKSB7XG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cER5bmFtaWNGb3Jtc1N1YmplY3QgPSBuZXdGb3JtR3JvdXAuZ2V0KCdkeW5hbWljRm9ybUNvbmZpZycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtQ29uZmlnSW50ZXJmYWNlPjtcbiAgICAgICAgZm9ybUdyb3VwRHluYW1pY0Zvcm1zU3ViamVjdC5zdWJzY3JpYmUoZm9ybUdyb3VwQ29uZmlnID0+IHtcbiAgICAgICAgICBpZiAoZm9ybUdyb3VwQ29uZmlnKSB7XG4gICAgICAgICAgICBmb3JtR3JvdXBDb25maWcuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZvcm1Hcm91cENvbmZpZy5mb3JtLnZhbGlkICYmIChjb25maWcudmFsdWVDaGFuZ2VzIHx8IHRoaXMuc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZHluYW1pY0Zvcm1TZXJ2aWNlLmVtaXREYXRhKGZvcm1Hcm91cENvbmZpZy5mb3JtKTtcbiAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29uZmlnLnZhbHVlQ2hhbmdlcyB8fFxuICAgICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSB8fFxuICAgICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmR5bmFtaWNGb3JtIHx8XG4gICAgICAgIHRoaXMuc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0ID0gbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9ucycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10+O1xuICAgICAgICAgIGlmIChhdXRvY29tcGxldGVPcHRpb25zU3ViamVjdCkge1xuICAgICAgICAgICAgYXV0b2NvbXBsZXRlT3B0aW9uc1N1YmplY3Quc3Vic2NyaWJlKG9wdGlvbnMgPT4gbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9uc0ZpbHRlcmVkJykudmFsdWUubmV4dChvcHRpb25zKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJylcbiAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyB2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRDb25maWdEeW5hbWljRm9ybShuZXdGb3JtR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnbmFtZScpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ211bHRpcGxlJykudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3Rm9ybUdyb3VwLmdldCgnbXVsdGlwbGUnKS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUodmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQXV0b2NvbXBsZXRlU2VsZWN0KG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvY29tcGxldGVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTElucHV0RWxlbWVudD4oYCMke3RoaXMuZm9ybUlkfSBpbnB1dCNhdXRvY29tcGxldGUtJHtuZXdGb3JtR3JvdXAuZ2V0KCduYW1lJyk/LnZhbHVlfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvY29tcGxldGVJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlSW5wdXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbmV3Rm9ybUdyb3VwLmdldCgnbXVsdGlwbGUnKS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUoa29hbGEodGhpcy5mb3JtQ29uZmlnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcnJheTxLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2U+KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG5ld0Zvcm1Hcm91cC5nZXQoJ25hbWUnKS52YWx1ZSwgJ25hbWUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRWYWx1ZSgpWzBdPy5hdXRvY29tcGxldGVEZWZhdWx0VmFsdWVPbkNsZWFyID8/IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5hdXRvY29tcGxldGVUeXBlID09PSAnYWxsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZU9wdGlvbnNTdWJqZWN0ID0gbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlT3B0aW9ucycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlLm5leHQodGhpcy5hdXRvY29tcGxldGVGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVPcHRpb25zU3ViamVjdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmF1dG9jb21wbGV0ZVR5cGUgPT09ICdvbkRlbWFuZCcgJiYgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZGVyID0gbmV3Rm9ybUdyb3VwLmdldCgnYXV0b2NvbXBsZXRlTG9hZGluZycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuYXV0b2NvbXBsZXRlRmlsdGVyKHZhbHVlKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGb3JtR3JvdXAuZ2V0KCdhdXRvY29tcGxldGVPcHRpb25zRmlsdGVyZWQnKS52YWx1ZS5uZXh0KG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVyLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcudmFsdWVDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnZhbHVlQ2hhbmdlcygobmV3Rm9ybUdyb3VwLmdldCgnbXVsdGlwbGUnKS52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Zvcm1Hcm91cC5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS52YWx1ZT8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsdWVDaGFuZ2VzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250cm9scy5wdXNoKG5ld0Zvcm1Hcm91cCk7XG4gICAgICBpZiAoY29uZmlnLm1vcmVJdGVtc0NvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLm1vcmVJdGVtc01pbkl0ZW1zID4gMCkge1xuICAgICAgICAgIGZvciAobGV0IG1pbiA9IDA7IG1pbiA8IGNvbmZpZy5tb3JlSXRlbXNNaW5JdGVtczsgbWluKyspIHtcbiAgICAgICAgICAgIGlmIChtaW4gPD0gY29uZmlnLm1vcmVJdGVtc01heEl0ZW1zKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkTW9yZUl0ZW0oaW5kZXhDb25maWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLm1vcmVJdGVtc0NvbmZpZy5zZXRWYWx1ZXMpIHtcbiAgICAgICAgICBjb25maWcubW9yZUl0ZW1zQ29uZmlnXG4gICAgICAgICAgICAgICAgLnNldFZhbHVlc1xuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgdmFsdWVzID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoaXRlbVZhbHVlLCBpbmRleFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW2luZGV4Q29uZmlnXS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlW2luZGV4VmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1vcmVJdGVtKGluZGV4Q29uZmlnKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlc09uRmllbGRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbaW5kZXhDb25maWddLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWVbaW5kZXhWYWx1ZV0uZm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLnNob3dGaWVsZHMpIHtcbiAgICAgIHRoaXMuY2hhbmdlVmlzaWJpbGl0eUZpZWxkcyh0aGlzLnNob3dGaWVsZHMsIHRoaXMuZm9ybSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldFZhbHVlcykge1xuICAgICAgdGhpcy5zZXRWYWx1ZXNPbkZpZWxkcyh0aGlzLnNldFZhbHVlcywgdGhpcy5mb3JtKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG91cnNBbmRNaW51dGVzQXBwbHlNYXNrKGluZGV4OiBudW1iZXIsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbHM/LmNvbnRyb2xzW2luZGV4XTtcbiAgICBjb25zdCB0eXBlID0gY29udHJvbD8uZ2V0KCd0eXBlJykudmFsdWUgYXMgRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtO1xuICAgIGlmICh0eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uaG91cnNBbmRNaW51dGVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2w/LmdldCgndmFsdWUnKS52YWx1ZTtcbiAgICAgIGlmIChldmVudC5rZXkgPT0gJ0JhY2tzcGFjZScgJiYgdmFsdWUubGVuZ3RoIDwgNikge1xuICAgICAgICB0aGlzLmhvdXJzQW5kTWludXRlc01hc2sgPSAnMDA6MDAwJztcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ICE9ICdCYWNrc3BhY2UnICYmIHZhbHVlLmxlbmd0aCA+PSA2KSB7XG4gICAgICAgIHRoaXMuaG91cnNBbmRNaW51dGVzTWFzayA9ICcwMDA6MDAnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwYXNzd29yZFZpZXcoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xzPy5jb250cm9sc1tpbmRleF07XG4gICAgY29uc3QgaGlkZVBhc3N3b3JkID0gIWNvbnRyb2w/LmdldCgnaGlkZVBhc3N3b3JkJykudmFsdWU7XG4gICAgY29udHJvbD8uZ2V0KCdoaWRlUGFzc3dvcmQnKS5zZXRWYWx1ZShoaWRlUGFzc3dvcmQpO1xuICAgIGNvbnRyb2w/LmdldCgndHlwZScpLnNldFZhbHVlKGhpZGVQYXNzd29yZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnBhc3N3b3JkIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0udGV4dFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkTW9yZUl0ZW0ocHJvcEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIDwgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zTWF4SXRlbXMnKS52YWx1ZSkge1xuICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5wdXNoKHtcbiAgICAgICAgZm9ybTogZm9ybUdyb3VwLFxuICAgICAgICBmb3JtQ29uZmlnOiB0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS5tb3JlSXRlbXNDb25maWcuZm9ybUNvbmZpZyxcbiAgICAgICAgc2hvd0ZpZWxkczogbmV3IEJlaGF2aW9yU3ViamVjdDxCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljU2V0VmFsdWVJbnRlcmZhY2VbXT5bXT4oW10pLFxuICAgICAgICBzaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnOiB0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS5tb3JlSXRlbXNDb25maWcuc2hvd0ZpZWxkc0NvbmZpZ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNFeHBhbmRlZCcpLnNldFZhbHVlKFxuICAgICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5sZW5ndGggLSAxXG4gICAgICApO1xuICAgICAgY29uc3QgZm9ybUFycmF5TW9yZUl0ZW1zID0gdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbW9yZUl0ZW1zRm9ybUdyb3VwJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgIGZvcm1BcnJheU1vcmVJdGVtcy5wdXNoKGZvcm1Hcm91cCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZU1vcmVJdGVtKHByb3BJbmRleDogbnVtYmVyLCByZW1vdmVJbmRleCkge1xuICAgIGNvbnN0IGV4cGFuZGVkSXRlbUluZGV4ID0gcmVtb3ZlSW5kZXggLSAxO1xuICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ21vcmVJdGVtc0NvbmZpZycpLnZhbHVlLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdtb3JlSXRlbXNFeHBhbmRlZCcpLnNldFZhbHVlKChleHBhbmRlZEl0ZW1JbmRleCA8IDApID8gMCA6IGV4cGFuZGVkSXRlbUluZGV4KTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBdXRvY29tcGxldGUocHJvcEluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnbXVsdGlwbGUnKS52YWx1ZSkge1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKFtdKTtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ3ZhbHVlJykuc2V0VmFsdWUobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbHMuY29udHJvbHNbcHJvcEluZGV4XS5nZXQoJ2F1dG9jb21wbGV0ZVNlbGVjdGVkVmFsdWUnKS5zZXRWYWx1ZSh0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS5hdXRvY29tcGxldGVEZWZhdWx0VmFsdWVPbkNsZWFyID8/IG51bGwpO1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgndmFsdWUnKS5zZXRWYWx1ZSh0aGlzLmZvcm1Db25maWdbcHJvcEluZGV4XS5hdXRvY29tcGxldGVEZWZhdWx0VmFsdWVPbkNsZWFyID8/IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5KG9wdGlvbj86IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubmFtZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVPcHRpb25PbkF1dG9jb21wbGV0ZShwcm9wSW5kZXg6IG51bWJlciwgb3B0aW9uOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykudmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gb3B0aW9uKSBhcyBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW107XG4gICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgnYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZScpLnNldFZhbHVlKHZhbHVlKTtcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmNvbnRyb2xzW3Byb3BJbmRleF0uZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykuc2V0VmFsdWUoW10pO1xuICAgICAgdGhpcy5jb250cm9scy5jb250cm9sc1twcm9wSW5kZXhdLmdldCgndmFsdWUnKS5zZXRWYWx1ZShudWxsKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUNvbmZpZ1twcm9wSW5kZXhdLnZhbHVlQ2hhbmdlcykge1xuICAgICAgdGhpcy5mb3JtQ29uZmlnW3Byb3BJbmRleF0udmFsdWVDaGFuZ2VzKHZhbHVlLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sb3JDaGlwKGNvbmZpZzogS29hbGFEeW5hbWljRm9ybUF1dG9jb21wbGV0ZU11bHRpcGxlQ29uZmlnSW50ZXJmYWNlKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gY29uZmlnLmNvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldEF1dG9jb21wbGV0ZU9wdGlvbnMocHJvcHJpZWRhZGU6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIHJldHVybiBwcm9wcmllZGFkZS5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxhbnlbXT47XG4gIH1cblxuICBwdWJsaWMgZ2V0RHluYW1pY0Zvcm1Db25maWcocHJvcHJpZWRhZGU6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIHJldHVybiBwcm9wcmllZGFkZS5nZXQoJ2R5bmFtaWNGb3JtQ29uZmlnJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+O1xuICB9XG5cbiAgcHVibGljIGdldFJhbmRvbVN0cmluZygpIHtcbiAgICByZXR1cm4gcmFuZG9tU3RyaW5nKDIwLCB7XG4gICAgICBsb3dlcmNhc2U6IHRydWUsXG4gICAgICBudW1iZXJzOiB0cnVlLFxuICAgICAgc3BlY2lhbENoYXJhY3RlcnM6IGZhbHNlLFxuICAgICAgdXBwZXJjYXNlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG5ld0NvbnRyb2woY29uZmlnOiBLb2FsYUR5bmFtaWNGb3JtRmllbGRJbnRlcmZhY2UpOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGNvbmZpZy5zeW5jVmFsaWRhdG9ycyA/PyBbXTtcbiAgICBsZXQgdmFsdWU6IGFueSA9IGNvbmZpZy52YWx1ZSA/PyAnJztcbiAgICBsZXQgdmFsdWVTZWxlY3RlZEF1dG9jb21wbGV0ZTogS29hbGFEeW5hbWljQXV0b2NvbXBsZXRlT3B0aW9uc0ludGVyZmFjZSB8IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXSA9IChcbiAgICAgIGNvbmZpZy5tdWx0aXBsZSA/IFtdIDogKGNvbmZpZy5hdXRvY29tcGxldGVEZWZhdWx0VmFsdWVPbkNsZWFyID8/IG51bGwpXG4gICAgKTtcblxuICAgIGlmIChjb25maWcucmVxdWlyZWQgPT09IHRydWUpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICBpZiAoY29uZmlnLm1pbiAmJiB0eXBlb2YgY29uZmlnLm1pbiA9PT0gXCJudW1iZXJcIikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGNvbmZpZy5taW4pKTtcbiAgICBpZiAoY29uZmlnLm1heCAmJiB0eXBlb2YgY29uZmlnLm1heCA9PT0gXCJudW1iZXJcIikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGNvbmZpZy5tYXgpKTtcbiAgICBpZiAoXG4gICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmRhdGUgfHxcbiAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZXRpbWUgfHxcbiAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0udGltZVxuICAgICkge1xuICAgICAgaWYgKGNvbmZpZy5taW4gJiYgdHlwZW9mIGNvbmZpZy5taW4gPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNaW5WYWxpZGF0b3IoY29uZmlnLm1pbikpOyB9XG4gICAgICBpZiAoY29uZmlnLm1heCAmJiB0eXBlb2YgY29uZmlnLm1heCA9PT0gXCJzdHJpbmdcIikgeyB2YWxpZGF0b3JzLnB1c2goRGF0ZU1heFZhbGlkYXRvcihjb25maWcubWF4KSk7IH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5taW5MZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChjb25maWcubWluTGVuZ3RoKSk7XG4gICAgaWYgKGNvbmZpZy5tYXhMZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChjb25maWcubWF4TGVuZ3RoKSk7XG5cbiAgICBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jcGYpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChDcGZWYWxpZGF0b3IpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jbnBqKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goQ25walZhbGlkYXRvcik7XG4gICAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmVtYWlsKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmF1dG9jb21wbGV0ZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHZhbHVlU2VsZWN0ZWRBdXRvY29tcGxldGUgPSB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSAoY29uZmlnLm11bHRpcGxlID8gdmFsdWVTZWxlY3RlZEF1dG9jb21wbGV0ZVswXSA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcucmVxdWlyZWQgPT09IHRydWUpIHtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKEF1dG9jb21wbGV0ZVNlbGVjdGVkVmFsaWRhdG9yKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uY2hlY2tib3gpIHtcbiAgICAgIHZhbHVlID0gY29uZmlnLnZhbHVlID8/IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uaG91cnNBbmRNaW51dGVzICYmXG4gICAgICB2YWx1ZS5sZW5ndGggPj0gNlxuICAgICkge1xuICAgICAgdGhpcy5ob3Vyc0FuZE1pbnV0ZXNNYXNrID0gJzAwMDowMCc7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZykge1xuICAgICAgY29uc3QgY2xvbmVEeW5hbWljRm9ybUNvbmZpZyA9IHt9IGFzIEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U7XG4gICAgICBPYmplY3QuYXNzaWduKGNsb25lRHluYW1pY0Zvcm1Db25maWcsIGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyk7XG4gICAgICBjbG9uZUR5bmFtaWNGb3JtQ29uZmlnLmZvcm0gPSBjb25maWcuZHluYW1pY0Zvcm1Db25maWcuZm9ybTtcbiAgICAgIGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyA9IGNsb25lRHluYW1pY0Zvcm1Db25maWc7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5zaG93ID09PSBmYWxzZSkge1xuICAgICAgdmFsaWRhdG9ycyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzaG93OiBbbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihjb25maWcuc2hvdyA/PyB0cnVlKV0sXG4gICAgICBsYWJlbDogW2NvbmZpZy5sYWJlbF0sXG4gICAgICBuYW1lOiBbY29uZmlnLm5hbWVdLFxuICAgICAgdHlwZTogW2NvbmZpZy50eXBlXSxcbiAgICAgIGZpbGVCdXR0b25Db25maWc6IFt7XG4gICAgICAgIGljb246IGNvbmZpZz8uZmlsZUJ1dHRvbkNvbmZpZz8uaWNvbiA/PyAnYXR0YWNoX2ZpbGUnLFxuICAgICAgICB0ZXh0OiBjb25maWc/LmZpbGVCdXR0b25Db25maWc/LnRleHQgPz8gJ0NsaXF1ZSBwYXJhIGFuZXhhciBhcnF1aXZvcycsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29uZmlnPy5maWxlQnV0dG9uQ29uZmlnPy5iYWNrZ3JvdW5kQ29sb3IgPz8gJ3doaXRlJyxcbiAgICAgICAgY29sb3I6IGNvbmZpZz8uZmlsZUJ1dHRvbkNvbmZpZz8uY29sb3IgPz8gJ2JsdWUnLFxuICAgICAgICBhY2NlcHQ6IGNvbmZpZz8uZmlsZUJ1dHRvbkNvbmZpZz8uYWNjZXB0ID8/ICcqJ1xuICAgICAgfV0sXG4gICAgICBkeW5hbWljRm9ybUNvbmZpZzogW25ldyBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZT4oY29uZmlnLmR5bmFtaWNGb3JtQ29uZmlnKV0sXG4gICAgICBkeW5hbWljRm9ybUdyb3VwOiB0aGlzLmZiLmFycmF5KFtdKSxcbiAgICAgIGFwcGVhcmFuY2U6IFtjb25maWcuYXBwZWFyYW5jZV0sXG4gICAgICBmbG9hdExhYmVsOiBbY29uZmlnLmZsb2F0TGFiZWxdLFxuICAgICAgcGxhY2Vob2xkZXI6IFtjb25maWcucGxhY2Vob2xkZXJdLFxuICAgICAgY2xhc3M6IFtjb25maWcuY2xhc3NdLFxuICAgICAgZmllbGRDbGFzczogW2NvbmZpZy5maWVsZENsYXNzXSxcbiAgICAgIHRleHRIaW50OiBbY29uZmlnLnRleHRIaW50XSxcbiAgICAgIHJlcXVpcmVkOiBbY29uZmlnLnJlcXVpcmVkID8/IGZhbHNlXSxcbiAgICAgIG1pbjogW2NvbmZpZy5taW4gPz8gMF0sXG4gICAgICBtYXg6IFtjb25maWcubWF4ID8/IDk5OTk5OTk5OTk5XSxcbiAgICAgIG1pbkxlbmd0aDogW2NvbmZpZy5taW5MZW5ndGggPz8gMF0sXG4gICAgICBtYXhMZW5ndGg6IFtjb25maWcubWF4TGVuZ3RoID8/IDI1NV0sXG4gICAgICBkaXNhYmxlZDogW2NvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZV0sXG4gICAgICBmb2N1czogW2NvbmZpZy5mb2N1cyA/PyBmYWxzZV0sXG4gICAgICBtdWx0aXBsZTogW2NvbmZpZy5tdWx0aXBsZSA/PyBmYWxzZV0sXG4gICAgICBvcGNvZXNTZWxlY3Q6IFtjb25maWcub3Bjb2VzU2VsZWN0ID8/IFtdXSxcbiAgICAgIGhpZGVQYXNzd29yZDogY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5wYXNzd29yZCA/IHRydWUgOiBudWxsLFxuICAgICAgbW9yZUl0ZW1zQnV0dG9uSWNvbkFkZGxhYmVsOiBbY29uZmlnLm1vcmVJdGVtc0J1dHRvbkljb25BZGRsYWJlbF0sXG4gICAgICBtb3JlSXRlbXNNaW5JdGVtczogW2NvbmZpZy5tb3JlSXRlbXNNaW5JdGVtcyA/PyAwXSxcbiAgICAgIG1vcmVJdGVtc01heEl0ZW1zOiBbY29uZmlnLm1vcmVJdGVtc01heEl0ZW1zID8/IDEwMF0sXG4gICAgICBtb3JlSXRlbXNJY29uOiBbY29uZmlnLm1vcmVJdGVtc0ljb25dLFxuICAgICAgbW9yZUl0ZW1zSWNvbkZvbnRDb2xvcjogW2NvbmZpZy5tb3JlSXRlbXNJY29uRm9udENvbG9yXSxcbiAgICAgIG1vcmVJdGVtc0ljb25CYWNrZ3JvdW5kQ29sb3I6IFtjb25maWcubW9yZUl0ZW1zSWNvbkJhY2tncm91bmRDb2xvcl0sXG4gICAgICBtb3JlSXRlbXNFeHBhbmRlZDogWycnXSxcbiAgICAgIG1vcmVJdGVtc0NvbmZpZzogW1tdXSxcbiAgICAgIG1vcmVJdGVtc0Zvcm1Hcm91cDogdGhpcy5mYi5hcnJheShbXSksXG4gICAgICBhdXRvY29tcGxldGVMb2FkaW5nOiBbbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSldLFxuICAgICAgYXV0b2NvbXBsZXRlT3B0aW9uczogW2NvbmZpZy5hdXRvY29tcGxldGVPcHRpb25zXSxcbiAgICAgIGF1dG9jb21wbGV0ZU11bHRpcGxlQ29uZmlnOiBbY29uZmlnLmF1dG9jb21wbGV0ZU11bHRpcGxlQ29uZmlnXSxcbiAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZDogW25ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSldLFxuICAgICAgYXV0b2NvbXBsZXRlU2VsZWN0ZWRWYWx1ZTogW3ZhbHVlU2VsZWN0ZWRBdXRvY29tcGxldGVdLFxuICAgICAgdGV4dExvZ3M6IFtjb25maWc/LnRleHRPYnNdLFxuICAgICAgY3VzdG9tTWFzYzogW2NvbmZpZz8uY3VzdG9tTWFzY10sXG4gICAgICBjdXN0b21NYXNjVGhvdXNhbmRTZXBhcmF0b3I6IFtjb25maWc/LmN1c3RvbU1hc2NUaG91c2FuZFNlcGFyYXRvciA/PyAnJ10sXG4gICAgICBjdXN0b21NYXNjU3VmZml4OiBbY29uZmlnPy5jdXN0b21NYXNjU3VmZml4ID8/ICcnXSxcbiAgICAgIGN1c3RvbU1hc2NQcmVmaXg6IFtjb25maWc/LmN1c3RvbU1hc2NQcmVmaXggPz8gJyddLFxuICAgICAgdmFsdWU6IFt7dmFsdWUsIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWR9LCB2YWxpZGF0b3JzLCBjb25maWcuYXN5bmNWYWxpZGF0b3JzXVxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5hdXRvY29tcGxldGVUeXBlID09PSBcIm9uRGVtYW5kXCIpIHtcbiAgICAgIGNvbnN0IGxvYWRlciA9IGZpZWxkLmdldCgnYXV0b2NvbXBsZXRlTG9hZGluZycpLnZhbHVlIGFzIEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICAgIGxvYWRlci5uZXh0KHRydWUpO1xuICAgICAgY29uZmlnLmF1dG9jb21wbGV0ZUZpbHRlcignJykuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICBmaWVsZC5nZXQoJ2F1dG9jb21wbGV0ZU9wdGlvbnNGaWx0ZXJlZCcpLnZhbHVlLm5leHQob3B0aW9ucyk7XG4gICAgICAgIGxvYWRlci5uZXh0KGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVzT25GaWVsZHMoc3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+LCBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgc3ViamVjdC5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldCgnZm9ybURhdGEnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgaXRlbS52YWx1ZXMoKSkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWVCeVByb3AoZm9ybUFycmF5LCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VWaXNpYmlsaXR5RmllbGRzKHN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxLb2FsYUR5bmFtaWNGb3JtU2hvd0ZpZWxkSW50ZXJmYWNlW10+LCBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgc3ViamVjdC5waXBlKGRlYm91bmNlVGltZSg1KSkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybS5nZXQoJ2Zvcm1EYXRhJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGl0ZW0udmFsdWVzKCkpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleENvbnRyb2wsIGNvbnRyb2xdIG9mIGZvcm1BcnJheS5jb250cm9scy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmdldCgnbmFtZScpLnZhbHVlID09PSBwcm9wLm5hbWUpIHtcbiAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3Nob3cnKS52YWx1ZS5uZXh0KHByb3Auc2hvdyk7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZzogS29hbGFEeW5hbWljRm9ybUZpZWxkSW50ZXJmYWNlID0gdGhpcy5mb3JtQ29uZmlnW2luZGV4Q29udHJvbF0gPz8gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKHByb3Auc2hvdykge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZHluYW1pY0Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUFycmF5TW9yZUl0ZW1zID0gY29udHJvbC5nZXQoJ2R5bmFtaWNGb3JtR3JvdXAnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlNb3JlSXRlbXMucHVzaChjb25maWc/LmR5bmFtaWNGb3JtQ29uZmlnPy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMgPSBjb25maWcuc3luY1ZhbGlkYXRvcnMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcucmVxdWlyZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uY3BmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKENwZlZhbGlkYXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5jbnBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKENucGpWYWxpZGF0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZW1haWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnJlcXVpcmVkID09PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09IER5bmFtaWNGb3JtVHlwZUZpZWxkRW51bS5hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKEF1dG9jb21wbGV0ZVNlbGVjdGVkVmFsaWRhdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcubWluICYmIHR5cGVvZiBjb25maWcubWluID09PSBcIm51bWJlclwiKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oY29uZmlnLm1pbikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm1heCAmJiB0eXBlb2YgY29uZmlnLm1heCA9PT0gXCJudW1iZXJcIikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KGNvbmZpZy5tYXgpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50eXBlID09PSBEeW5hbWljRm9ybVR5cGVGaWVsZEVudW0uZGF0ZXRpbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLnRpbWVcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5taW4gJiYgdHlwZW9mIGNvbmZpZy5taW4gPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNaW5WYWxpZGF0b3IoY29uZmlnLm1pbikpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5tYXggJiYgdHlwZW9mIGNvbmZpZy5tYXggPT09IFwic3RyaW5nXCIpIHsgdmFsaWRhdG9ycy5wdXNoKERhdGVNYXhWYWxpZGF0b3IoY29uZmlnLm1heCkpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5taW5MZW5ndGgpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChjb25maWcubWluTGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcubWF4TGVuZ3RoKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoY29uZmlnLm1heExlbmd0aCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuYXN5bmNWYWxpZGF0b3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXQoJ3ZhbHVlJykuc2V0QXN5bmNWYWxpZGF0b3JzKGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChwcm9wLmNsZWFyQ3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmdldCgndmFsdWUnKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICBjb250cm9sLmdldCgndmFsdWUnKS5jbGVhckFzeW5jVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudHlwZSA9PT0gRHluYW1pY0Zvcm1UeXBlRmllbGRFbnVtLmR5bmFtaWNGb3JtKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sIGFzIFVudHlwZWRGb3JtR3JvdXA7XG4gICAgICAgICAgICAgICAgICBmb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZHluYW1pY0Zvcm1Hcm91cCcpO1xuICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ2R5bmFtaWNGb3JtR3JvdXAnLCB0aGlzLmZiLmFycmF5KFtdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhdXRvY29tcGxldGVGaWx0ZXIoYXJyOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10sIHZhbHVlOiBzdHJpbmcpOiBLb2FsYUR5bmFtaWNBdXRvY29tcGxldGVPcHRpb25zSW50ZXJmYWNlW10ge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKGZpbHRlciA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgbGV0IGZpbmQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAgICAuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwYXJ0KSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICBmaW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBmaW5kO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVCeVByb3AoZm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5LCBwcm9wOiBLb2FsYUR5bmFtaWNTZXRWYWx1ZUludGVyZmFjZSkge1xuICAgIGlmIChmb3JtQXJyYXkpIHtcbiAgICAgIGlmIChwcm9wLm5hbWUuaW5kZXhPZignID4gJykgPj0gMCkge1xuICAgICAgICBsZXQgZHluYW1pY0Zvcm1TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8S29hbGFEeW5hbWljRm9ybUNvbmZpZ0ludGVyZmFjZT47XG4gICAgICAgIGNvbnN0IGFyclByb3BOYW1lID0gcHJvcC5uYW1lLnNwbGl0KCcgPiAnKTtcbiAgICAgICAgbGV0IGluZGV4UHJvcE5hbWUgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1BcnJheS5jb250cm9scy5maW5kKGNvbnRyb2wgPT4gY29udHJvbC5nZXQoJ25hbWUnKS52YWx1ZSA9PT0gYXJyUHJvcE5hbWVbaW5kZXhQcm9wTmFtZV0pO1xuICAgICAgICAgIGlmIChpbmRleFByb3BOYW1lID09PSBhcnJQcm9wTmFtZS5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICBkeW5hbWljRm9ybVN1YmplY3QgPSBjb250cm9sLmdldCgnZHluYW1pY0Zvcm1Db25maWcnKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNGb3JtID0gZHluYW1pY0Zvcm1TdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoZHluYW1pY0Zvcm0uZm9ybUNvbmZpZy5maW5kKGZjID0+IGZjLm5hbWUgPT09IGFyclByb3BOYW1lW2FyclByb3BOYW1lLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICAgICAgICBpZiAoZHluYW1pY0Zvcm0uc2V0VmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgZHluYW1pY0Zvcm0uc2V0VmFsdWVzLm5leHQoa29hbGEoZHluYW1pY0Zvcm0uc2V0VmFsdWVzLmdldFZhbHVlKCkpLmFycmF5PGFueT4oKS5tZXJnZShbe1xuICAgICAgICAgICAgICAgICAgbmFtZTogYXJyUHJvcE5hbWVbYXJyUHJvcE5hbWUubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcC52YWx1ZVxuICAgICAgICAgICAgICAgIH1dKS5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkeW5hbWljRm9ybS5zZXRWYWx1ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY1NldFZhbHVlSW50ZXJmYWNlW10+KFt7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBhcnJQcm9wTmFtZVthcnJQcm9wTmFtZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wLnZhbHVlXG4gICAgICAgICAgICAgICAgfV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4UHJvcE5hbWUrKztcbiAgICAgICAgfSB3aGlsZSAoaW5kZXhQcm9wTmFtZSA8IGFyclByb3BOYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIGZvcm1BcnJheS5jb250cm9scy52YWx1ZXMoKSkge1xuICAgICAgICAgIGlmIChjb250cm9sLmdldCgnbmFtZScpLnZhbHVlID09PSBwcm9wLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKHByb3AudmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRDb25maWdEeW5hbWljRm9ybShuZXdGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAodGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG5ld0Zvcm1Hcm91cC5nZXQoJ3ZhbHVlJykudmFsdWU7XG4gICAgICBjb25zdCBjb25maWdzID0gdGhpcy5zaG93RmllbGRzTW9yZUl0ZW5zQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoY29uZmlnID0+IGNvbmZpZy5uYW1lRmllbGQgPT09IG5ld0Zvcm1Hcm91cC5nZXQoJ25hbWUnKS52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmZuU2hvdyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgY29uZmlncykge1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgaWYgKGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyAmJiBjb25maWcuZm5TaG93KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbER5bmFtaWNGb3JtQ29uZmlnID0gdGhpcy5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKGNvbnRyb2wgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5maWVsZHNUb1Nob3cuaW5kZXhPZihjb250cm9sLmdldCgnbmFtZScpLnZhbHVlKSA+PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNGb3JtQ29uZmlnU3ViamVjdCA9IGNvbnRyb2xEeW5hbWljRm9ybUNvbmZpZy5nZXQoJ2R5bmFtaWNGb3JtQ29uZmlnJykudmFsdWUgYXMgQmVoYXZpb3JTdWJqZWN0PEtvYWxhRHluYW1pY0Zvcm1Db25maWdJbnRlcmZhY2U+O1xuICAgICAgICAgICAgZHluYW1pY0Zvcm1Db25maWdTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgICAgICBhd2FpdCBkZWxheSgxKTtcbiAgICAgICAgICAgIGR5bmFtaWNGb3JtQ29uZmlnU3ViamVjdC5uZXh0KGNvbmZpZy5keW5hbWljRm9ybUNvbmZpZyh2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5zaG93RmllbGRzKFxuICAgICAgICAgICAgdGhpcy5zaG93RmllbGRzLFxuICAgICAgICAgICAgY29uZmlnLmZpZWxkc1RvU2hvdyxcbiAgICAgICAgICAgIGNvbmZpZy5mblNob3codmFsdWUpLFxuICAgICAgICAgICAgY29uZmlnLmNsZWFyQ3VycmVudFZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBdXRvY29tcGxldGVTZWxlY3Qoc2VsZWN0ZWRWYWx1ZXM6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2VbXSwgdmFsdWU6IEtvYWxhRHluYW1pY0F1dG9jb21wbGV0ZU9wdGlvbnNJbnRlcmZhY2UpIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG5cbiAgICBmb3IgKGNvbnN0IHNlbGVjdGVkSXRlbSBvZiBzZWxlY3RlZFZhbHVlcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKHNlbGVjdGVkSXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lKSB7XG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJwLXJlbGF0aXZlIHctMTAwXCIgW2lkXT1cImZvcm1JZFwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9wcmllZGFkZSBvZiBjb250cm9scz8uY29udHJvbHM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICBbbmdDbGFzc109XCIocHJvcHJpZWRhZGUuZ2V0KCdzaG93JykudmFsdWUgfCBhc3luYykgPyBwcm9wcmllZGFkZS5nZXQoJ2NsYXNzJykudmFsdWUgOiAnZC1ub25lJ1wiXG4gICAgICAgZm9ybUFycmF5TmFtZT1cImZvcm1EYXRhXCI+XG5cdCAgPGRpdiAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnc2hvdycpLnZhbHVlIHwgYXN5bmNcIj5cblx0ICAgIDxtYXQtZm9ybS1maWVsZFxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC50ZXh0IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGFzc3dvcmQgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jbnBqIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZGF0ZXRpbWUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5lbWFpbCB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm51bWJlciB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnN0cmluZ051bWJlciB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnRpbWUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5kYXRlIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuaG91cnNBbmRNaW51dGVzIHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGhvbmUgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wZXJjZW50IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29sb3IgfHxcblx0ICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5tb250aCB8fFxuXHQgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvbXBldGVuY2VEYXRlIHx8XG4gICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nV2l0aEN1c3RvbU1hc2NcIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8aW5wdXRcblx0XHQgICAgICBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImZhbHNlXCJcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHQgICAgICAoa2V5dXApPVwiaG91cnNBbmRNaW51dGVzQXBwbHlNYXNrKGksICRldmVudClcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuXHRcdCAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG5cdFx0ICAgICAgW21hc2tdPVwiKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuY29tcGV0ZW5jZURhdGUpID8gJzAwLzAwMDAnIDogbnVsbCkgfHxcblx0XHQgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBob25lKSA/ICcoMDApMDAwMC0wMDAwPzAnIDogbnVsbCkgfHxcblx0XHQgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnN0cmluZ051bWJlcikgPyAnMHsnK3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWUrJ30nIDogbnVsbCkgfHxcbiAgICAgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNwZikgPyAnMDAwLjAwMC4wMDAtMDAnIDogbnVsbCkgfHxcbiAgICAgICAgICAgICAgICAgICgocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGopID8gJzAwLjAwMC4wMDAvMDAwMC0wMCcgOiBudWxsKSB8fFxuICAgICAgICAgICAgICAgICAgKChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQucGVyY2VudCkgPyAncGVyY2VudCcgOiBudWxsKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuaG91cnNBbmRNaW51dGVzKSA/IGhvdXJzQW5kTWludXRlc01hc2sgOiBudWxsKSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KChwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc3RyaW5nV2l0aEN1c3RvbU1hc2MpID8gcHJvcHJpZWRhZGUuZ2V0KCdjdXN0b21NYXNjJykudmFsdWUgOiBudWxsKVwiXG5cdFx0ICAgICAgW3ZhbGlkYXRpb25dPVwiXG5cdCAgICAgICAgICAgICAgICAgICAgKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgJiYgcHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3BmSW52YWxpZCkgfHxcblx0ICAgICAgICAgICAgICAgICAgICAocHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGogJiYgcHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY25wakludmFsaWQpXCJcblx0XHQgICAgICBbdHlwZV09XCIoKHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jcGYgfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNucGogfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBob25lIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5wZXJjZW50XG4gICAgICAgICAgICAgICAgICApKSA/ICd0ZWwnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQubW9udGggP1xuICAgICAgICAgICAgICAgICAgICAnbW9udGgnIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZGF0ZSA/XG4gICAgICAgICAgICAgICAgICAgICdkYXRlJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmRhdGV0aW1lID9cbiAgICAgICAgICAgICAgICAgICAgJ2RhdGV0aW1lLWxvY2FsJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmVtYWlsID9cbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLm51bWJlciA/XG4gICAgICAgICAgICAgICAgICAgICdudW1iZXInIDogKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGltZSA/XG4gICAgICAgICAgICAgICAgICAgICd0aW1lJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLnBhc3N3b3JkID9cbiAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJyA6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvbG9yID9cbiAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6ICd0ZXh0JykpKSkpKSkpXCJcbiAgICAgICAgICBbbWluXT1cInByb3ByaWVkYWRlLmdldCgnbWluJykudmFsdWVcIlxuICAgICAgICAgIFttYXhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFt0aG91c2FuZFNlcGFyYXRvcl09XCJwcm9wcmllZGFkZS5nZXQoJ2N1c3RvbU1hc2NUaG91c2FuZFNlcGFyYXRvcicpLnZhbHVlXCJcbiAgICAgICAgICBbc3VmZml4XT1cInByb3ByaWVkYWRlLmdldCgnY3VzdG9tTWFzY1N1ZmZpeCcpLnZhbHVlXCJcbiAgICAgICAgICBbcHJlZml4XT1cInByb3ByaWVkYWRlLmdldCgnY3VzdG9tTWFzY1ByZWZpeCcpLnZhbHVlXCJcbiAgICAgICAgICBzZXBhcmF0b3JMaW1pdD1cIjBcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiZ2V0UmFuZG9tU3RyaW5nKClcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dC8+XG5cdCAgICAgIDxidXR0b25cblx0XHQgICAgICAoY2xpY2spPVwicGFzc3dvcmRWaWV3KGkpXCJcblx0XHQgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnaGlkZVBhc3N3b3JkJykudmFsdWUgIT09IG51bGxcIlxuXHRcdCAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hpZGUgcGFzc3dvcmQnXCJcblx0XHQgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdoaWRlUGFzc3dvcmQnKS52YWx1ZVwiXG5cdFx0ICAgICAgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0YWJpbmRleD1cIi0xXCIgdHlwZT1cImJ1dHRvblwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj57e3Byb3ByaWVkYWRlLmdldCgnaGlkZVBhc3N3b3JkJykudmFsdWUgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxuXHQgICAgICA8L2J1dHRvbj5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3BmSW52YWxpZFwiPlxuXHQgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0SW52YWxpZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY25wakludmFsaWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldEludmFsaWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmVtYWlsXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRJbnZhbGlkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbk1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmRhdGVNaW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldERhdGVNaW5NZXNzYWdlKCl9fVxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSB8IGRhdGU6XCJzaG9ydERhdGVcIn19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmRhdGVNYXhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldERhdGVNYXhNZXNzYWdlKCl9fVxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCdtYXgnKS52YWx1ZSB8IGRhdGU6XCJzaG9ydERhdGVcIn19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICA8L21hdC1mb3JtLWZpZWxkPlxuXHQgICAgPG1hdC1mb3JtLWZpZWxkXG5cdFx0ICAgICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmNvaW5cIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8aW5wdXRcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHQgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgIFttaW5dPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZVwiXG4gICAgICAgICAgW21heF09XCJwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWVcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJnZXRSYW5kb21TdHJpbmcoKVwiXG5cdFx0ICAgICAgY3VycmVuY3lNYXNrXG5cdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgIG1hdElucHV0XG5cdFx0ICAgICAgdHlwZT1cInRlbFwiLz5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1pblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWluTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWF4XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNYXhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5MZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbkxlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heExlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TGVuZ3RoTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5mbG9hdFwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtrb2FsYUF1dG9Gb2N1c109XCJwcm9wcmllZGFkZS5nZXQoJ2ZvY3VzJykudmFsdWVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbl09XCJwcm9wcmllZGFkZS5nZXQoJ21pbicpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4XT1cInByb3ByaWVkYWRlLmdldCgnbWF4JykudmFsdWVcIlxuICAgICAgICAgIFttaW5MZW5ndGhdPVwicHJvcHJpZWRhZGUuZ2V0KCdtaW5MZW5ndGgnKS52YWx1ZVwiXG4gICAgICAgICAgW21heExlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImdldFJhbmRvbVN0cmluZygpXCJcbiAgICAgICAgICBjdXJyZW5jeU1hc2tcbiAgICAgICAgICBbb3B0aW9uc109XCJ7cHJlZml4OiAnJ31cIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZWxcIi8+XG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5taW5cIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1pbk1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtaW4nKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/Lm1heFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0TWF4TWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ21heCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8bWF0LWZvcm0tZmllbGRcblx0XHQgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudmFsdWVMaXN0IHx8XG5cdCAgICAgICAgICAgICBwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGV4dGFyZWFcIlxuXHRcdCAgICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0ICAgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHQgICAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0ICAgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAjdGV4dGFyZWFcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG5cdFx0ICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCI4XCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjNcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dD5cbiAgICAgICAgPC90ZXh0YXJlYT5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1oaW50IGFsaWduPVwiZW5kXCIgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCI+XG4gICAgICAgICAge3t0ZXh0YXJlYS52YWx1ZS5sZW5ndGh9fS97e3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWV9fVxuICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0ICA8bWF0LWZvcm0tZmllbGRcblx0XHRcdCAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQudGV4dExvZ3NcIlxuXHRcdFx0ICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0XHQgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHRcdCAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0XHQgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbWF0LWxhYmVsPlxuXHQgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0TG9ncycpLnZhbHVlXCIgY2xhc3M9XCJ0ZXh0LW9ic1wiPjwvZGl2PlxuXHQgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAjdGV4dGFyZWFcblx0XHQgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcbiAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXG4gICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG5cdFx0ICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCI4XCJcblx0XHQgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjNcIlxuXHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgW21pbkxlbmd0aF09XCJwcm9wcmllZGFkZS5nZXQoJ21pbkxlbmd0aCcpLnZhbHVlXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInByb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWVcIlxuXHRcdCAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcblx0XHQgICAgICBtYXRJbnB1dD5cblx0ICAgICAgPC90ZXh0YXJlYT5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cbiAgICAgICAgPG1hdC1oaW50IGFsaWduPVwiZW5kXCIgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ21heExlbmd0aCcpLnZhbHVlXCI+XG4gICAgICAgICAge3t0ZXh0YXJlYS52YWx1ZS5sZW5ndGh9fS97e3Byb3ByaWVkYWRlLmdldCgnbWF4TGVuZ3RoJykudmFsdWV9fVxuICAgICAgICA8L21hdC1oaW50PlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ubWluTGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRNaW5MZW5ndGhNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbWluTGVuZ3RoJykudmFsdWUpfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5tYXhMZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldE1heExlbmd0aE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdtYXhMZW5ndGgnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRSZXF1aXJlZE1lc3NhZ2UocHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlKX19XG5cdCAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3JcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8uY3VzdG9tRXJyb3IubWVzc2FnZX19LlxuICAgICAgICA8L21hdC1lcnJvcj5cblx0ICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cdCAgICA8bWF0LWZvcm0tZmllbGRcblx0XHQgICAgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuc2VsZWN0XCJcblx0XHQgICAgW2FwcGVhcmFuY2VdPVwicHJvcHJpZWRhZGUuZ2V0KCdhcHBlYXJhbmNlJykudmFsdWVcIlxuXHRcdCAgICBbZmxvYXRMYWJlbF09XCJwcm9wcmllZGFkZS5nZXQoJ2Zsb2F0TGFiZWwnKS52YWx1ZVwiXG5cdFx0ICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuXHRcdCAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuXHQgICAgICA8bWF0LWxhYmVsPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L21hdC1sYWJlbD5cblx0ICAgICAgPG1hdC1zZWxlY3QgW211bHRpcGxlXT1cInByb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZVwiIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiPlxuXHQgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIHByb3ByaWVkYWRlLmdldCgnb3Bjb2VzU2VsZWN0JykudmFsdWVcIiBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiPlxuXHQgICAgICAgICAge3tvcHRpb25zLm5hbWV9fVxuXHQgICAgICAgIDwvbWF0LW9wdGlvbj5cblx0ICAgICAgPC9tYXQtc2VsZWN0PlxuXHQgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWVcIj5cblx0ICAgICAgICA8bWF0LWljb24+aW5mbzwvbWF0LWljb24+XG5cdFx0ICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3RleHRIaW50JykudmFsdWV9fVxuXHQgICAgICA8L21hdC1oaW50PlxuXHQgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLmVycm9ycz8ucmVxdWlyZWRcIj5cblx0ICAgICAgICA8bWF0LWljb24+ZXJyb3I8L21hdC1pY29uPlxuICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlLmdldFJlcXVpcmVkTWVzc2FnZShwcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWUpfX1cblx0ICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvclwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5jdXN0b21FcnJvci5tZXNzYWdlfX0uXG4gICAgICAgIDwvbWF0LWVycm9yPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBjbGFzcz1cInNlbGVjdC1tdWx0aXBsZS1uYXRpdmVcIlxuICAgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5zZWxlY3RNdWx0aXBsZU5hdGl2ZVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cInByb3ByaWVkYWRlLmdldCgnYXBwZWFyYW5jZScpLnZhbHVlXCJcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwicHJvcHJpZWRhZGUuZ2V0KCdmbG9hdExhYmVsJykudmFsdWVcIlxuICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBtYXROYXRpdmVDb250cm9sXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdyZXF1aXJlZCcpLnZhbHVlXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBwcm9wcmllZGFkZS5nZXQoJ29wY29lc1NlbGVjdCcpLnZhbHVlXCIgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIj5cbiAgICAgICAgICAgIHt7b3B0aW9ucy5uYW1lfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxtYXQtaGludCAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5pbmZvPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndGV4dEhpbnQnKS52YWx1ZX19XG4gICAgICAgIDwvbWF0LWhpbnQ+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3ZhbHVlJykuZXJyb3JzPy5yZXF1aXJlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5lcnJvcjwvbWF0LWljb24+XG4gICAgICAgICAge3tlcnJvck1lc3NhZ2UuZ2V0UmVxdWlyZWRNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXHQgICAgPGRpdlxuXHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5jaGVja2JveFwiXG5cdFx0ICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuXHRcdCAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuXHQgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcblx0XHQgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG5cdFx0ICAgICAgdmFsdWU9XCJ0cnVlXCI+XG5cdCAgICAgICAge3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fVxuXHQgICAgICA8L21hdC1jaGVja2JveD5cblx0ICAgIDwvZGl2PlxuXHRcdCAgPGRpdlxuXHRcdFx0ICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5tb3JlSXRlbXNcIlxuXHRcdFx0ICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcblx0XHRcdCAgW25nQ2xhc3NdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWVsZENsYXNzJykudmFsdWVcIlxuXHRcdFx0ICBjbGFzcz1cIm1vcmUtaXRlbXMtY29udGVudFwiPlxuXHRcdFx0ICA8ZmllbGRzZXQ+XG5cdFx0XHRcdCAgPGxlZ2VuZD5cblx0XHRcdFx0XHQgIDxrb2FsYS1idXR0b25cblx0XHRcdFx0XHRcdCAgKGNsaWNrKT1cImFkZE1vcmVJdGVtKGkpXCJcblx0XHRcdFx0XHRcdCAgW2Rpc2FibGVkXT1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoID09PSBwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc01heEl0ZW1zJykudmFsdWVcIlxuXHRcdFx0XHRcdFx0ICBbdG9vbHRpcF09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0J1dHRvbkljb25BZGRsYWJlbCcpLnZhbHVlXCJcblx0XHRcdFx0XHRcdCAgW2JhY2tncm91bmRDb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0ljb25CYWNrZ3JvdW5kQ29sb3InKS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcmllZGFkZS5nZXQoJ21vcmVJdGVtc0ljb25Gb250Q29sb3InKS52YWx1ZVwiXG5cdFx0XHRcdFx0XHQgIGNsYXNzPVwiYnRuLWFkZC1tb3JlLWl0ZW1zXCJcblx0XHRcdFx0XHRcdCAgaWNvbj1cImFkZFwiPlxuXHRcdFx0XHRcdCAgPC9rb2FsYS1idXR0b24+XG5cdFx0XHRcdFx0ICB7e3Byb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZX19IChNaW4uOiB7e3Byb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zTWluSXRlbXMnKS52YWx1ZX19XG5cdFx0XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTcOheC46IHt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNNYXhJdGVtcycpLnZhbHVlfX0pXG5cdFx0XHRcdCAgPC9sZWdlbmQ+XG5cdFx0XHRcdCAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJpdGVtc1wiIG11bHRpPlxuXHRcdFx0XHRcdCAgPG1hdC1leHBhbnNpb24tcGFuZWxcblx0XHRcdFx0XHRcdCAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNDb25maWcnKS52YWx1ZS5zbGljZSgpLnJldmVyc2UoKTsgaW5kZXggYXMgaW5kZXhNb3JlSXRlbXNcIlxuXHRcdFx0XHRcdFx0ICBleHBhbmRlZD5cblx0XHRcdFx0XHRcdCAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXHRcdFx0XHRcdFx0XHRcdDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJ0aXRsZUZvcm1cIj4jXG5cdFx0XHRcdFx0XHRcdFx0XHR7e3Byb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIC0gMSAtIGluZGV4TW9yZUl0ZW1zICsgMX19PC9tYXQtcGFuZWwtdGl0bGU+XG5cdFx0XHRcdFx0XHRcdFx0PG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInRpdGxlRm9ybVwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PG1hdC1pY29uPnt7cHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNJY29uJykudmFsdWV9fTwvbWF0LWljb24+XG5cdFx0XHRcdFx0XHRcdFx0PC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG5cdFx0XHRcdFx0XHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cdFx0XHRcdFx0XHQgIDxrb2FsYS1keW5hbWljLWZvcm1cblx0XHRcdFx0XHRcdFx0ICBbc2hvd0ZpZWxkc01vcmVJdGVuc0NvbmZpZ109XCJpdGVtLnNob3dGaWVsZHNNb3JlSXRlbnNDb25maWdcIlxuXHRcdFx0XHRcdFx0XHQgIFtzaG93RmllbGRzXT1cIml0ZW0uc2hvd0ZpZWxkc1wiXG5cdFx0XHRcdFx0XHRcdCAgW2Zvcm1Db25maWddPVwiaXRlbS5mb3JtQ29uZmlnXCJcblx0XHRcdFx0XHRcdFx0ICBbZm9ybV09XCJpdGVtLmZvcm1cIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleFN0YXJ0XT1cInRhYkluZGV4U3RhcnQgKyBpXCI+XG5cdFx0XHRcdFx0XHQgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuXHRcdFx0XHRcdCAgICA8bWF0LWFjdGlvbi1yb3dcblx0XHRcdFx0XHRcdCAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoID4gcHJvcHJpZWRhZGUuZ2V0KCdtb3JlSXRlbXNNaW5JdGVtcycpLnZhbHVlXCI+XG5cdFx0XHRcdFx0ICAgICAgPGJ1dHRvblxuXHRcdFx0XHRcdFx0ICAgICAgKGNsaWNrKT1cInJlbW92ZU1vcmVJdGVtKGksIHByb3ByaWVkYWRlLmdldCgnbW9yZUl0ZW1zQ29uZmlnJykudmFsdWUubGVuZ3RoIC0gMSAtIGluZGV4TW9yZUl0ZW1zKVwiXG5cdFx0XHRcdFx0XHQgICAgICBtYXQtaWNvbi1idXR0b24+XG5cdFx0XHRcdFx0XHQgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cblx0XHRcdFx0XHQgICAgICA8L2J1dHRvbj5cblx0XHRcdFx0XHQgICAgPC9tYXQtYWN0aW9uLXJvdz5cblx0XHRcdFx0XHQgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblx0XHRcdFx0ICA8L21hdC1hY2NvcmRpb24+XG5cdFx0XHQgIDwvZmllbGRzZXQ+XG5cdFx0ICA8L2Rpdj5cblx0XHQgIDxtYXQtZm9ybS1maWVsZFxuXHRcdFx0ICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5hdXRvY29tcGxldGVcIlxuXHRcdFx0ICBbYXBwZWFyYW5jZV09XCJwcm9wcmllZGFkZS5nZXQoJ2FwcGVhcmFuY2UnKS52YWx1ZVwiXG5cdFx0XHQgIFtmbG9hdExhYmVsXT1cInByb3ByaWVkYWRlLmdldCgnZmxvYXRMYWJlbCcpLnZhbHVlXCJcblx0XHRcdCAgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG5cdFx0XHQgIFtuZ0NsYXNzXT1cInByb3ByaWVkYWRlLmdldCgnZmllbGRDbGFzcycpLnZhbHVlXCI+XG5cdCAgICAgIDxtYXQtbGFiZWw+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fSB7e3Byb3ByaWVkYWRlLmdldCgnbXVsdGlwbGUnKS52YWx1ZSAmJlxuXHQgICAgICBwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWUgPyAnKicgOiAnJ319PC9tYXQtbGFiZWw+XG5cdFx0XHQgIDxkaXYgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ211bHRpcGxlJykudmFsdWUgZWxzZSBzaW5nbGVcIj5cblx0ICAgICAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXBcbiAgICAgICAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlT3B0aW9uT25BdXRvY29tcGxldGUoaSwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcHJpZWRhZGUuZ2V0KCdhdXRvY29tcGxldGVTZWxlY3RlZFZhbHVlJykudmFsdWVcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiZ2V0Q29sb3JDaGlwKHByb3ByaWVkYWRlLmdldCgnYXV0b2NvbXBsZXRlTXVsdGlwbGVDb25maWcnKS52YWx1ZSB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAge3tkaXNwbGF5KG9wdGlvbil9fVxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhcHJvcHJpZWRhZGUuZ2V0KCdkaXNhYmxlZCcpLnZhbHVlXCIgbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtY2hpcD5cblx0ICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbaWRdPVwiJ2F1dG9jb21wbGV0ZS0nICsgcHJvcHJpZWRhZGUuZ2V0KCduYW1lJykudmFsdWVcIlxuICAgICAgICAgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHQgICAgICAgICAgW3JlcXVpcmVkXT1cInByb3ByaWVkYWRlLmdldCgncmVxdWlyZWQnKS52YWx1ZVwiXG5cdFx0ICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG5cdFx0ICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhTdGFydCArIGlcIlxuICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImdldFJhbmRvbVN0cmluZygpXCJcblx0XHQgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdCAgICAgICAgICBtYXRJbnB1dFxuXHRcdCAgICAgICAgICB0eXBlPVwidGV4dFwiXG5cdFx0ICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWNpb25lIHVtIG91IG1haXMgb3DDp8O1ZXMuLi5cIj5cblx0ICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG5cdCAgICAgIDwvZGl2PlxuXHQgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZT5cblx0XHQgICAgICA8aW5wdXRcblx0XHRcdCAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBba29hbGFBdXRvRm9jdXNdPVwicHJvcHJpZWRhZGUuZ2V0KCdmb2N1cycpLnZhbHVlXCJcblx0XHRcdCAgICAgIFtyZXF1aXJlZF09XCJwcm9wcmllZGFkZS5nZXQoJ3JlcXVpcmVkJykudmFsdWVcIlxuICAgICAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4U3RhcnQgKyBpXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiZ2V0UmFuZG9tU3RyaW5nKClcIlxuXHRcdFx0ICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuXHRcdFx0ICAgICAgbWF0SW5wdXRcblx0XHRcdCAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWNpb25lIHVtYSBvcMOnw6NvLi4uXCJcblx0XHRcdCAgICAgIHR5cGU9XCJ0ZXh0XCI+XG5cdCAgICAgIDwvbmctdGVtcGxhdGU+XG5cdCAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgnYXV0b2NvbXBsZXRlTG9hZGluZycpLnZhbHVlIHwgYXN5bmNcIiBjb2xvcj1cInByaW1hcnlcIlxuXHQgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4PjwvbWF0LXNwaW5uZXI+XG5cdCAgICAgIDxidXR0b25cblx0XHQgICAgICAoY2xpY2spPVwiY2xlYXJBdXRvY29tcGxldGUoaSlcIlxuXHRcdCAgICAgICpuZ0lmPVwiXG5cdCAgICAgICAgICAhKHByb3ByaWVkYWRlLmdldCgnYXV0b2NvbXBsZXRlTG9hZGluZycpLnZhbHVlIHwgYXN5bmMpICYmXG5cdCAgICAgICAgICAhcHJvcHJpZWRhZGUuZ2V0KCdkaXNhYmxlZCcpLnZhbHVlXCJcblx0XHQgICAgICBjb2xvcj1cIndhcm5cIlxuXHRcdCAgICAgIG1hdC1pY29uLWJ1dHRvblxuXHRcdCAgICAgIG1hdFN1ZmZpeFxuXHRcdCAgICAgIHR5cGU9XCJidXR0b25cIj5cblx0ICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuXHQgICAgICA8L2J1dHRvbj5cblx0ICAgICAgPG1hdC1oaW50ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmluZm88L21hdC1pY29uPlxuXHRcdCAgICAgIHt7cHJvcHJpZWRhZGUuZ2V0KCd0ZXh0SGludCcpLnZhbHVlfX1cblx0ICAgICAgPC9tYXQtaGludD5cblx0ICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LnJlcXVpcmVkIHx8IHByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmF1dG9jb21wbGV0ZVNlbGVjdGVkXCI+XG5cdCAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2Vycm9yTWVzc2FnZS5nZXRBdXRvY29tcGxldGVNZXNzYWdlKHByb3ByaWVkYWRlLmdldCgnbGFiZWwnKS52YWx1ZSl9fVxuXHQgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmVycm9yPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e3Byb3ByaWVkYWRlLmdldCgndmFsdWUnKS5lcnJvcnM/LmN1c3RvbUVycm9yLm1lc3NhZ2V9fS5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG5cdCAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXG5cdFx0ICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuXHRcdCAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5XCIgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uPlxuXHRcdCAgICAgIDxkaXYgKm5nSWY9XCIoZ2V0QXV0b2NvbXBsZXRlT3B0aW9ucyhwcm9wcmllZGFkZSkgfCBhc3luYykgYXMgb3B0aW9uc1wiPlxuXHRcdCAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuXHRcdCAgICAgICAgICB7e29wdGlvbi5uYW1lfX1cblx0XHQgICAgICAgIDwvbWF0LW9wdGlvbj5cblx0XHQgICAgICA8L2Rpdj5cblx0ICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuXHQgICAgPC9tYXQtZm9ybS1maWVsZD5cblx0XHQgIDxkaXYgKm5nSWY9XCJwcm9wcmllZGFkZS5nZXQoJ3R5cGUnKS52YWx1ZSA9PSB0eXBlRmllbGQuZmlsZVwiPlxuXHRcdFx0ICA8a29hbGEtZmlsZS1idXR0b25cblx0XHRcdFx0ICAoZ2V0RmlsZXMpPVwicHJvcHJpZWRhZGUuZ2V0KCd2YWx1ZScpLnNldFZhbHVlKCRldmVudClcIlxuXHRcdFx0XHQgIFthY2NlcHRdPVwicHJvcHJpZWRhZGUuZ2V0KCdmaWxlQnV0dG9uQ29uZmlnJykudmFsdWUuYWNjZXB0XCJcblx0XHRcdFx0ICBbYmFja2dyb3VuZENvbG9yXT1cInByb3ByaWVkYWRlLmdldCgnZmlsZUJ1dHRvbkNvbmZpZycpLnZhbHVlLmJhY2tncm91bmRDb2xvclwiXG5cdFx0XHRcdCAgW2NvbG9yXT1cInByb3ByaWVkYWRlLmdldCgnZmlsZUJ1dHRvbkNvbmZpZycpLnZhbHVlLmNvbG9yXCJcblx0XHRcdFx0ICBbZGlzYWJsZWRdPVwicHJvcHJpZWRhZGUuZ2V0KCdkaXNhYmxlZCcpLnZhbHVlXCJcblx0XHRcdFx0ICBbaWNvbl09XCJwcm9wcmllZGFkZS5nZXQoJ2ZpbGVCdXR0b25Db25maWcnKS52YWx1ZS5pY29uXCJcblx0XHRcdFx0ICBbbXVsdGlwbGVdPVwicHJvcHJpZWRhZGUuZ2V0KCdtdWx0aXBsZScpLnZhbHVlXCJcblx0XHRcdFx0ICBbdGV4dF09XCJwcm9wcmllZGFkZS5nZXQoJ2ZpbGVCdXR0b25Db25maWcnKS52YWx1ZS50ZXh0XCI+XG5cdFx0XHQgIDwva29hbGEtZmlsZS1idXR0b24+XG5cdFx0ICA8L2Rpdj5cblx0XHQgIDxkaXYgKm5nSWY9XCJcblx0XHQgICAgcHJvcHJpZWRhZGUuZ2V0KCd0eXBlJykudmFsdWUgPT0gdHlwZUZpZWxkLmR5bmFtaWNGb3JtICYmXG5cdFx0XHRcdChnZXREeW5hbWljRm9ybUNvbmZpZyhwcm9wcmllZGFkZSkgfCBhc3luYykgYXMgZHluYW1pY0Zvcm1Db25maWdcIj5cblx0XHRcdCAgPGZpZWxkc2V0ICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlIGVsc2UgZHluYW1pY0Zvcm1XaXRob3V0TGFiZWxcIj5cblx0XHRcdFx0ICA8bGVnZW5kPnt7cHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlfX08L2xlZ2VuZD5cblx0XHRcdFx0ICA8a29hbGEtZHluYW1pYy1mb3JtXG5cdFx0XHRcdFx0ICBbZm9ybUNvbmZpZ109XCJkeW5hbWljRm9ybUNvbmZpZy5mb3JtQ29uZmlnXCJcblx0XHRcdFx0XHQgIFtmb3JtXT1cImR5bmFtaWNGb3JtQ29uZmlnLmZvcm1cIlxuXHRcdFx0XHRcdCAgW3NldFZhbHVlc109XCJkeW5hbWljRm9ybUNvbmZpZy5zZXRWYWx1ZXNcIlxuXHRcdFx0XHRcdCAgW3Nob3dGaWVsZHNdPVwiZHluYW1pY0Zvcm1Db25maWcuc2hvd0ZpZWxkc1wiXG4gICAgICAgICAgICBbdGFiSW5kZXhTdGFydF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiPlxuXHRcdFx0XHQgIDwva29hbGEtZHluYW1pYy1mb3JtPlxuXHRcdFx0ICA8L2ZpZWxkc2V0PlxuXHRcdFx0ICA8bmctdGVtcGxhdGUgI2R5bmFtaWNGb3JtV2l0aG91dExhYmVsPlxuXHRcdFx0XHQgIDxrb2FsYS1keW5hbWljLWZvcm1cblx0XHRcdFx0XHQgIFtmb3JtQ29uZmlnXT1cImR5bmFtaWNGb3JtQ29uZmlnLmZvcm1Db25maWdcIlxuXHRcdFx0XHRcdCAgW2Zvcm1dPVwiZHluYW1pY0Zvcm1Db25maWcuZm9ybVwiXG5cdFx0XHRcdFx0ICBbc2V0VmFsdWVzXT1cImR5bmFtaWNGb3JtQ29uZmlnLnNldFZhbHVlc1wiXG5cdFx0XHRcdFx0ICBbc2hvd0ZpZWxkc109XCJkeW5hbWljRm9ybUNvbmZpZy5zaG93RmllbGRzXCJcbiAgICAgICAgICAgIFt0YWJJbmRleFN0YXJ0XT1cInRhYkluZGV4U3RhcnQgKyBpXCI+XG5cdFx0XHRcdCAgPC9rb2FsYS1keW5hbWljLWZvcm0+XG5cdFx0XHQgIDwvbmctdGVtcGxhdGU+XG5cdFx0ICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyYWRpby1idG4tZ3JvdXBcIlxuICAgICAgICAqbmdJZj1cInByb3ByaWVkYWRlLmdldCgndHlwZScpLnZhbHVlID09IHR5cGVGaWVsZC5yYWRpb1wiXG4gICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuICAgICAgICBbbmdDbGFzc109XCJwcm9wcmllZGFkZS5nZXQoJ2ZpZWxkQ2xhc3MnKS52YWx1ZVwiPlxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCI+XG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwicHJvcHJpZWRhZGUuZ2V0KCdsYWJlbCcpLnZhbHVlXCI+e3twcm9wcmllZGFkZS5nZXQoJ2xhYmVsJykudmFsdWV9fTwvbGFiZWw+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFN0YXJ0ICsgaVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBwcm9wcmllZGFkZS5nZXQoJ29wY29lc1NlbGVjdCcpLnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25zLnZhbHVlXCI+XG4gICAgICAgICAgICB7e29wdGlvbnMubmFtZX19XG4gICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgIDwvZGl2PlxuXHQgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J0bi1zdWJtaXRdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -925,7 +925,7 @@ class DynamicFormComponent extends FormAbstract {
925
925
  this.typeField = DynamicFormTypeFieldEnum;
926
926
  this.hoursAndMinutesMask = '00:000';
927
927
  this.errorMessage = KoalaLanguageHelper;
928
- this.formId = randomString(25, { lowercase: true, uppercase: true, numbers: true });
928
+ this.formId = randomString(25, { lowercase: true, uppercase: true });
929
929
  }
930
930
  ngOnInit() {
931
931
  var _a;