@stemy/ngx-dynamic-form 10.2.26 → 10.2.27

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.
@@ -265,8 +265,10 @@ export class DynamicFormService extends Base {
265
265
  mask: ObjectUtils.isString(property.mask) ? property.mask : null,
266
266
  pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,
267
267
  step: isNaN(sub.step) ? (isNaN(property.step) ? 1 : property.step) : sub.step,
268
- min: isNaN(sub.minimum) ? (isNaN(sub.minLength) ? Number.MIN_SAFE_INTEGER : sub.minLength) : sub.minimum,
269
- max: isNaN(sub.maximum) ? (isNaN(sub.maxLength) ? Number.MAX_SAFE_INTEGER : sub.maxLength) : sub.maximum
268
+ min: isNaN(sub.minimum) ? Number.MIN_SAFE_INTEGER : sub.minimum,
269
+ max: isNaN(sub.maximum) ? Number.MAX_SAFE_INTEGER : sub.maximum,
270
+ minLength: isNaN(sub.minLength) ? Number.MIN_SAFE_INTEGER : sub.minLength,
271
+ maxLength: isNaN(sub.maxLength) ? Number.MAX_SAFE_INTEGER : sub.maxLength,
270
272
  });
271
273
  }
272
274
  getFormTextareaConfig(property, schema) {
@@ -410,4 +412,4 @@ DynamicFormService.ctorParameters = () => [
410
412
  { type: DynamicFormValidationService },
411
413
  { type: OpenApiService }
412
414
  ];
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFrQixTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQ0gsb0JBQW9CLEVBRXBCLHNCQUFzQixFQUV0QixxQkFBcUIsSUFBSSx5QkFBeUIsRUFFbEQsMkJBQTJCLEVBRTNCLHFCQUFxQixFQUlyQixrQkFBa0IsSUFBSSxJQUFJLEVBQzFCLDRCQUE0QixFQUc1QixpQkFBaUIsRUFFakIsa0JBQWtCLEVBRWxCLG9CQUFvQixFQUd2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFNSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLFdBQVcsRUFDZCxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxxQkFBcUIsRUFBOEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUdyRyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsSUFBSTtJQWF4QyxZQUFZLEVBQStCLEVBQUUsRUFBZ0MsRUFBVyxPQUF1QjtRQUMzRyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRHNFLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTNHLElBQUksQ0FBQyxlQUFlLEdBQUcs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RyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDekIsVUFBVSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsVUFBVSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQzs7O1lBdGFKLFVBQVU7OztZQXBDUCwyQkFBMkI7WUFPM0IsNEJBQTRCO1lBa0I1QixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICAgIER5bmFtaWNDaGVja2JveE1vZGVsLFxyXG4gICAgRHluYW1pY0NoZWNrYm94TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRmlsZVVwbG9hZE1vZGVsLFxyXG4gICAgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNGb3JtQXJyYXlNb2RlbCBhcyBEeW5hbWljRm9ybUFycmF5TW9kZWxCYXNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNGb3JtTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybU9wdGlvbkNvbmZpZyxcclxuICAgIER5bmFtaWNGb3JtU2VydmljZSBhcyBCYXNlLFxyXG4gICAgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWwsXHJcbiAgICBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNTZWxlY3RNb2RlbCxcclxuICAgIER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNUZXh0QXJlYU1vZGVsLFxyXG4gICAgRHluYW1pY1RleHRBcmVhTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZ1xyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJQXBpU2VydmljZSxcclxuICAgIElMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBJT3BlbkFwaVNjaGVtYSxcclxuICAgIElPcGVuQXBpU2NoZW1hUHJvcGVydHksXHJcbiAgICBJT3BlbkFwaVNjaGVtYXMsXHJcbiAgICBPYmplY3RVdGlscyxcclxuICAgIE9wZW5BcGlTZXJ2aWNlLFxyXG4gICAgU3RyaW5nVXRpbHNcclxufSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtJRm9ybUNvbnRyb2xTZXJpYWxpemVyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQge2lzU3RyaW5nV2l0aFZhbH0gZnJvbSBcIi4uL3V0aWxzL21pc2NcIjtcclxuaW1wb3J0IHtGb3JtU2VsZWN0U3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc2VsZWN0LXN1YmplY3RcIjtcclxuaW1wb3J0IHtGb3JtU3ViamVjdH0gZnJvbSBcIi4uL3V0aWxzL2Zvcm0tc3ViamVjdFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtQXJyYXlNb2RlbCwgRHluYW1pY0Zvcm1BcnJheU1vZGVsQ29uZmlnfSBmcm9tIFwiLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVNlcnZpY2UgZXh0ZW5kcyBCYXNlIHtcclxuXHJcbiAgICBnZXQgYXBpKCk6IElBcGlTZXJ2aWNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuQXBpLmFwaTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFuZ3VhZ2UoKTogSUxhbmd1YWdlU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmxhbmd1YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlYWRvbmx5IG9uRGV0ZWN0Q2hhbmdlczogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29tcG9uZW50PjtcclxuICAgIHByb3RlY3RlZCBzY2hlbWFzOiBJT3BlbkFwaVNjaGVtYXM7XHJcblxyXG4gICAgY29uc3RydWN0b3IoY3M6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSwgdnM6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsIHJlYWRvbmx5IG9wZW5BcGk6IE9wZW5BcGlTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoY3MsIHZzKTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db21wb25lbnQ+KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHcm91cCh2YWx1ZTogYW55LCBmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFZhbHVlUmVjdXJzaXZlKHZhbHVlLCBmb3JtTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoT2JqZWN0VXRpbHMuY29weSh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoRm9ybSh2YWx1ZTogYW55LCBjb21wb25lbnQ6IER5bmFtaWNGb3JtQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFZhbHVlUmVjdXJzaXZlKHZhbHVlLCBjb21wb25lbnQubW9kZWwsIGNvbXBvbmVudC5ncm91cCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29tcG9uZW50Lmdyb3VwLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlcmlhbGl6ZShmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVSZWN1cnNpdmUoZm9ybU1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeUNoYW5nZXMoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubm90aWZ5Q2hhbmdlc1JlY3Vyc2l2ZShmb3JtTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU2VsZWN0T3B0aW9ucyhmb3JtQ29udHJvbE1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmb3JtQ29udHJvbE1vZGVsIGluc3RhbmNlb2YgRHluYW1pY1NlbGVjdE1vZGVsKSB7XHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gZm9ybUNvbnRyb2xNb2RlbC5vcHRpb25zJDtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBGb3JtU3ViamVjdCkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ub3RpZnkoZm9ybUNvbnRyb2xNb2RlbCwgZm9ybUNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdoaWxlIChvcHRpb25zIGluc3RhbmNlb2YgU3ViamVjdCAmJiBvcHRpb25zLnNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMuc291cmNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBGb3JtU3ViamVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubm90aWZ5KGZvcm1Db250cm9sTW9kZWwsIGZvcm1Db250cm9sKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93RXJyb3JzKGZvcm06IER5bmFtaWNGb3JtQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yR3JvdXAoZm9ybS5ncm91cCk7XHJcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKGZvcm0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRldGVjdENoYW5nZXMoZm9ybUNvbXBvbmVudD86IER5bmFtaWNGb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgICAgc3VwZXIuZGV0ZWN0Q2hhbmdlcyhmb3JtQ29tcG9uZW50KTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcy5lbWl0KGZvcm1Db21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBwYXRjaFZhbHVlUmVjdXJzaXZlKHZhbHVlOiBhbnksIGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJNb2RlbCA9IHRoaXMuZmluZE1vZGVsQnlJZChrZXksIGZvcm1Nb2RlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YlZhbHVlID0gdmFsdWVba2V5XTtcclxuICAgICAgICAgICAgaWYgKCFzdWJNb2RlbCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBzdWJDb250cm9sID0gdGhpcy5maW5kQ29udHJvbEJ5TW9kZWwoc3ViTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNTZWxlY3RNb2RlbCAmJiBPYmplY3RVdGlscy5pc09iamVjdChzdWJWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlW2tleV0gPSBzdWJWYWx1ZS5pZCB8fCBzdWJWYWx1ZS5faWQgfHwgc3ViVmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1BcnJheU1vZGVsQmFzZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gQXJyYXkuaXNBcnJheShzdWJWYWx1ZSkgPyBzdWJWYWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChzdWJNb2RlbC5zaXplID4gbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGb3JtQXJyYXlHcm91cCgwLCBzdWJBcnJheSwgc3ViTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHN1Yk1vZGVsLnNpemUgPCBsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEZvcm1BcnJheUdyb3VwKHN1Yk1vZGVsLnNpemUsIHN1YkFycmF5LCBzdWJNb2RlbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbU1vZGVsID0gc3ViTW9kZWwuZ2V0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZShzdWJWYWx1ZVtpXSwgaXRlbU1vZGVsLmdyb3VwLCBzdWJBcnJheS5hdChpKSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXRjaFZhbHVlUmVjdXJzaXZlKHN1YlZhbHVlLCBzdWJNb2RlbC5ncm91cCwgc3ViQ29udHJvbCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFzeW5jIHNlcmlhbGl6ZVJlY3Vyc2l2ZShmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuICAgICAgICBpZiAoIWZvcm1Nb2RlbCB8fCAhZm9ybUdyb3VwIHx8ICFmb3JtR3JvdXAudmFsdWUpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgZm9yIChjb25zdCBpIGluIGZvcm1Nb2RlbCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJNb2RlbCA9IGZvcm1Nb2RlbFtpXSBhcyBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsPGFueT47XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YkNvbnRyb2wgPSB0aGlzLmZpbmRDb250cm9sQnlNb2RlbChzdWJNb2RlbCwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IHN1Yk1vZGVsLmFkZGl0aW9uYWw/LnNlcmlhbGl6ZXIgYXMgSUZvcm1Db250cm9sU2VyaWFsaXplcjtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzRnVuY3Rpb24oc2VyaWFsaXplcikpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBhd2FpdCBzZXJpYWxpemVyKHN1Yk1vZGVsLCBzdWJDb250cm9sKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbEJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IEFycmF5LmlzQXJyYXkoc3ViQ29udHJvbC52YWx1ZSkgPyBzdWJDb250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJBcnJheSA9IHN1YkNvbnRyb2wgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzQXJyYXkgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtTW9kZWwgPSBzdWJNb2RlbC5nZXQoaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzQXJyYXkucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJpYWxpemVSZWN1cnNpdmUoaXRlbU1vZGVsLmdyb3VwLCBzdWJBcnJheS5hdChpKSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSByZXNBcnJheTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IGF3YWl0IHRoaXMuc2VyaWFsaXplUmVjdXJzaXZlKHN1Yk1vZGVsLmdyb3VwLCBzdWJDb250cm9sIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljSW5wdXRNb2RlbCAmJiAhT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQoc3ViQ29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBzdWJNb2RlbC5pbnB1dFR5cGUgPT0gXCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VGbG9hdCgoYCR7c3ViQ29udHJvbC52YWx1ZX1gIHx8IFwiMFwiKS5yZXBsYWNlKC8sL2dpLCBcIi5cIikpID8/IG51bGxcclxuICAgICAgICAgICAgICAgICAgICA6IHN1YkNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gc3ViQ29udHJvbC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbm90aWZ5Q2hhbmdlc1JlY3Vyc2l2ZShmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFmb3JtTW9kZWwgfHwgIWZvcm1Hcm91cCkgcmV0dXJuO1xyXG4gICAgICAgIGZvciAoY29uc3QgaSBpbiBmb3JtTW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ViTW9kZWwgPSBmb3JtTW9kZWxbaV0gYXMgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxhbnk+O1xyXG4gICAgICAgICAgICBjb25zdCBzdWJDb250cm9sID0gdGhpcy5maW5kQ29udHJvbEJ5TW9kZWwoc3ViTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbEJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IEFycmF5LmlzQXJyYXkoc3ViQ29udHJvbC52YWx1ZSkgPyBzdWJDb250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJBcnJheSA9IHN1YkNvbnRyb2wgYXMgRm9ybUFycmF5O1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Nb2RlbCA9IHN1Yk1vZGVsLmdldChpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoaXRlbU1vZGVsLmdyb3VwLCBzdWJBcnJheS5hdChpKSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoc3ViTW9kZWwuZ3JvdXAsIHN1YkNvbnRyb2wgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0T3B0aW9ucyhzdWJNb2RlbCwgc3ViQ29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzaG93RXJyb3JzRm9yR3JvdXAoZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWZvcm1Hcm91cCkgcmV0dXJuO1xyXG4gICAgICAgIGZvcm1Hcm91cC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xzID0gT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5tYXAoaWQgPT4gZm9ybUdyb3VwLmNvbnRyb2xzW2lkXSk7XHJcbiAgICAgICAgdGhpcy5zaG93RXJyb3JzRm9yQ29udHJvbHMoY29udHJvbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzaG93RXJyb3JzRm9yQ29udHJvbHMoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKTogdm9pZCB7XHJcbiAgICAgICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yc0Zvckdyb3VwKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yc0ZvckNvbnRyb2xzKGNvbnRyb2wuY29udHJvbHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hKG5hbWU6IHN0cmluZyk6IFByb21pc2U8RHluYW1pY0Zvcm1Nb2RlbD4ge1xyXG4gICAgICAgIHRoaXMuYXBpLmNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5zY2hlbWFzID0gYXdhaXQgdGhpcy5vcGVuQXBpLmdldFNjaGVtYXMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtTW9kZWxGb3JTY2hlbWFEZWYodGhpcy5zY2hlbWFzW25hbWVdKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hRGVmKHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljRm9ybU1vZGVsIHtcclxuICAgICAgICBpZiAoIXNjaGVtYSlcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhzY2hlbWEucHJvcGVydGllcyB8fCB7fSkubWFwKHAgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHNjaGVtYS5wcm9wZXJ0aWVzW3BdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtQ29udHJvbE1vZGVsKHByb3BlcnR5LCBzY2hlbWEpO1xyXG4gICAgICAgIH0pLmZpbHRlcih0ID0+IG51bGwgIT09IHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtQ29udHJvbE1vZGVsKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwge1xyXG4gICAgICAgIGNvbnN0ICRlbnVtID0gcHJvcGVydHkuaXRlbXM/LmVudW0gfHwgcHJvcGVydHkuZW51bTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkZW51bSkgfHwgaXNTdHJpbmdXaXRoVmFsKHByb3BlcnR5Lm9wdGlvbnNQYXRoKSB8fCBpc1N0cmluZ1dpdGhWYWwocHJvcGVydHkuZW5kcG9pbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY1NlbGVjdE1vZGVsPGFueT4odGhpcy5nZXRGb3JtU2VsZWN0Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcclxuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiaW50ZWdlclwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljSW5wdXRNb2RlbCh0aGlzLmdldEZvcm1JbnB1dENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljVGV4dEFyZWFNb2RlbCh0aGlzLmdldEZvcm1UZXh0YXJlYUNvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNDaGVja2JveE1vZGVsKHRoaXMuZ2V0Rm9ybUNoZWNrYm94Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuaXRlbXM/LiRyZWYgfHwgcHJvcGVydHkuJHJlZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0Zvcm1BcnJheU1vZGVsKHRoaXMuZ2V0Rm9ybUFycmF5Q29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljSW5wdXRNb2RlbCh0aGlzLmdldEZvcm1JbnB1dENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgXCJmaWxlXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNGaWxlVXBsb2FkTW9kZWwodGhpcy5nZXRGb3JtVXBsb2FkQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByb3BlcnR5LiRyZWYpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljRm9ybUdyb3VwTW9kZWwodGhpcy5nZXRGb3JtR3JvdXBDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmdldFZhbGlkYXRvcnMocHJvcGVydHksIHNjaGVtYSk7XHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlcyA9IE9iamVjdC5rZXlzKHZhbGlkYXRvcnMpLnJlZHVjZSgocmVzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgcmVzW2tleV0gPSBgZXJyb3IuJHtrZXl9YDtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHByb3BlcnR5LmlkLFxyXG4gICAgICAgICAgICBsYWJlbDogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkubGFiZWwpID8gcHJvcGVydHkubGFiZWwgOiBwcm9wZXJ0eS5pZCxcclxuICAgICAgICAgICAgaGlkZGVuOiBwcm9wZXJ0eS5oaWRkZW4sXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBwcm9wZXJ0eS5kaXNhYmxlZCxcclxuICAgICAgICAgICAgdmFsaWRhdG9ycyxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlcyxcclxuICAgICAgICAgICAgYWRkaXRpb25hbDogT2JqZWN0LmFzc2lnbih7fSwgcHJvcGVydHkpXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUFycmF5Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0Zvcm1BcnJheU1vZGVsQ29uZmlnIHtcclxuICAgICAgICBjb25zdCByZWYgPSBwcm9wZXJ0eS5pdGVtcz8uJHJlZiB8fCBwcm9wZXJ0eS4kcmVmIHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hID0gdGhpcy5zY2hlbWFzW3JlZi5zcGxpdChcIi9cIikucG9wKCldO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksIHtncm91cEZhY3Rvcnk6ICgpID0+IHRoaXMuZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hRGVmKHN1YlNjaGVtYSl9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUdyb3VwQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0Zvcm1Hcm91cE1vZGVsQ29uZmlnIHtcclxuICAgICAgICBjb25zdCByZWYgPSBwcm9wZXJ0eS4kcmVmIHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qgc3ViU2NoZW1hID0gdGhpcy5zY2hlbWFzW3JlZi5zcGxpdChcIi9cIikucG9wKCldO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksIHtncm91cDogdGhpcy5nZXRGb3JtTW9kZWxGb3JTY2hlbWFEZWYoc3ViU2NoZW1hKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljSW5wdXRNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgbGV0IGlucHV0VHlwZSA9IFN0cmluZ1V0aWxzLmhhcyhwcm9wZXJ0eS5pZCwgXCJwYXNzd29yZFwiLCBcIlBhc3N3b3JkXCIpID8gXCJwYXNzd29yZFwiIDogKHByb3BlcnR5Lml0ZW1zPy50eXBlIHx8IHByb3BlcnR5LnR5cGUpO1xyXG4gICAgICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XHJcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUgPSBcImNoZWNrYm94XCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUgPSBcInRleHRhcmVhXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcclxuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IFwibnVtYmVyXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3ViID0gcHJvcGVydHkudHlwZSA9PSBcImFycmF5XCIgPyBwcm9wZXJ0eS5pdGVtcyB8fCBwcm9wZXJ0eSA6IHByb3BlcnR5O1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUsXHJcbiAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU6IHByb3BlcnR5LmF1dG9Db21wbGV0ZSB8fCBcIm9mZlwiLFxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0OiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5hY2NlcHQpID8gcHJvcGVydHkuYWNjZXB0IDogbnVsbCxcclxuICAgICAgICAgICAgICAgIG1hc2s6IE9iamVjdFV0aWxzLmlzU3RyaW5nKHByb3BlcnR5Lm1hc2spID8gcHJvcGVydHkubWFzayA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5wYXR0ZXJuKSA/IHByb3BlcnR5LnBhdHRlcm4gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc3RlcDogaXNOYU4oc3ViLnN0ZXApID8gKGlzTmFOKHByb3BlcnR5LnN0ZXApID8gMSA6IHByb3BlcnR5LnN0ZXApIDogc3ViLnN0ZXAsXHJcbiAgICAgICAgICAgICAgICBtaW46IGlzTmFOKHN1Yi5taW5pbXVtKSA/IChpc05hTihzdWIubWluTGVuZ3RoKSA/IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIDogc3ViLm1pbkxlbmd0aCkgOiBzdWIubWluaW11bSxcclxuICAgICAgICAgICAgICAgIG1heDogaXNOYU4oc3ViLm1heGltdW0pID8gKGlzTmFOKHN1Yi5tYXhMZW5ndGgpID8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgOiBzdWIubWF4TGVuZ3RoKSA6IHN1Yi5tYXhpbXVtXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtVGV4dGFyZWFDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljVGV4dEFyZWFNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbHM6IHByb3BlcnR5LmNvbHMgfHwgbnVsbCxcclxuICAgICAgICAgICAgICAgIHJvd3M6IHByb3BlcnR5LnJvd3MgfHwgMTAsXHJcbiAgICAgICAgICAgICAgICB3cmFwOiBwcm9wZXJ0eS53cmFwIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybVNlbGVjdENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZzxhbnk+IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUNoZWNrYm94Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0NoZWNrYm94TW9kZWxDb25maWcge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlOiBwcm9wZXJ0eS5pbmRldGVybWluYXRlID09PSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyB0cmFuc2xhdGVPcHRpb25zKG9wdGlvbnM6IER5bmFtaWNGb3JtT3B0aW9uQ29uZmlnPGFueT5bXSk6IFByb21pc2U8RHluYW1pY0Zvcm1PcHRpb25Db25maWc8YW55PltdPiB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xyXG4gICAgICAgICAgICBvcHRpb24ubGFiZWwgPSBhd2FpdCB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uKG9wdGlvbi5sYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSkge1xyXG4gICAgICAgIGNvbnN0ICRlbnVtID0gcHJvcGVydHkuaXRlbXM/LmVudW0gfHwgcHJvcGVydHkuZW51bTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkZW51bSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtU2VsZWN0U3ViamVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gJGVudW0ubWFwKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHByb3BlcnR5LnRyYW5zbGF0YWJsZSA/IGAke3Byb3BlcnR5LmlkfS4ke3ZhbHVlfWAgOiB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlLCBsYWJlbH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNTdHJpbmdXaXRoVmFsKHByb3BlcnR5Lm9wdGlvbnNQYXRoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1TZWxlY3RTdWJqZWN0KChmb3JtTW9kZWwsIGNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BlcnR5Lm9wdGlvbnNQYXRoO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IGNvbnRyb2w7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiJHJvb3RcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHIoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAocGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cigxKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUodGFyZ2V0LnZhbHVlLCBwYXRoLnJlcGxhY2UoL1xcJGl4L2dpLCBpbmRleCkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9ICghT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZSkgPyBbXSA6IHZhbHVlKS5tYXAodmFsdWUgPT4gKHt2YWx1ZSwgbGFiZWw6IHZhbHVlfSkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlT3B0aW9ucyhvcHRpb25zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRm9ybVNlbGVjdFN1YmplY3QoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gPSB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gfHwgdGhpcy5hcGkubGlzdChwcm9wZXJ0eS5lbmRwb2ludCwgdGhpcy5hcGkubWFrZUxpc3RQYXJhbXMoMSwgLTEpKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcChpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiBpLmlkIHx8IGkuX2lkLCBsYWJlbDogaVtwcm9wZXJ0eS5sYWJlbEZpZWxkXSB8fCBpLmxhYmVsIHx8IGkuaWQgfHwgaS5faWR9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gKGF3YWl0IHRoaXMuYXBpLmNhY2hlW3Byb3BlcnR5LmVuZHBvaW50XSkubWFwKHQgPT4gT2JqZWN0LmFzc2lnbih7fSwgdCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtVXBsb2FkQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5hcGkudXJsKHByb3BlcnR5LnVybCB8fCBcImFzc2V0c1wiKTtcclxuICAgICAgICBjb25zdCB7YWNjZXB0LCBhdXRvVXBsb2FkLCBtYXhTaXplLCBtaW5TaXplLCByZW1vdmVVcmwsIHNob3dGaWxlTGlzdH0gPSBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLCB7XHJcbiAgICAgICAgICAgIHVybCxcclxuICAgICAgICAgICAgYWNjZXB0LFxyXG4gICAgICAgICAgICBhdXRvVXBsb2FkLFxyXG4gICAgICAgICAgICBtYXhTaXplLFxyXG4gICAgICAgICAgICBtaW5TaXplLFxyXG4gICAgICAgICAgICByZW1vdmVVcmwsXHJcbiAgICAgICAgICAgIHNob3dGaWxlTGlzdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRWYWxpZGF0b3JzKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnID0ge307XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eS5pZCkgPj0gMCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnJlcXVpcmVkID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eVZhbGlkYXRvcnModmFsaWRhdG9ycywgcHJvcGVydHkpO1xyXG4gICAgICAgIHRoaXMuYWRkSXRlbXNWYWxpZGF0b3JzKHZhbGlkYXRvcnMsIHByb3BlcnR5Lml0ZW1zKTtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkUHJvcGVydHlWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnLCBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWlzTmFOKHByb3BlcnR5Lm1pbkxlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5taW5MZW5ndGggPSBwcm9wZXJ0eS5taW5MZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4TGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1heExlbmd0aCA9IHByb3BlcnR5Lm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihwcm9wZXJ0eS5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1pbiA9IHByb3BlcnR5Lm1pbmltdW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4aW11bSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5tYXggPSBwcm9wZXJ0eS5tYXhpbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LmZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGRJdGVtc1ZhbGlkYXRvcnModmFsaWRhdG9yczogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcsIGl0ZW1zOiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykgcmV0dXJuO1xyXG4gICAgICAgIGlmICghaXNOYU4oaXRlbXMubWluTGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluTGVuZ3RoID0gaXRlbXMubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heExlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5pdGVtc01heExlbmd0aCA9IGl0ZW1zLm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihpdGVtcy5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluVmFsdWUgPSBpdGVtcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heGltdW0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMuaXRlbXNNYXhWYWx1ZSA9IGl0ZW1zLm1heGltdW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LWR5bmFtaWMtZm9ybS9zZXJ2aWNlcy9keW5hbWljLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFrQixTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQ0gsb0JBQW9CLEVBRXBCLHNCQUFzQixFQUV0QixxQkFBcUIsSUFBSSx5QkFBeUIsRUFFbEQsMkJBQTJCLEVBRTNCLHFCQUFxQixFQUlyQixrQkFBa0IsSUFBSSxJQUFJLEVBQzFCLDRCQUE0QixFQUc1QixpQkFBaUIsRUFFakIsa0JBQWtCLEVBRWxCLG9CQUFvQixFQUd2QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFNSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLFdBQVcsRUFDZCxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxxQkFBcUIsRUFBOEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUdyRyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsSUFBSTtJQWF4QyxZQUFZLEVBQStCLEVBQUUsRUFBZ0MsRUFBVyxPQUF1QjtRQUMzRyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRHNFLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBRTNHLElBQUksQ0FBQyxlQUFlLEdBQUcs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SyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUMvQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUMvQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZCLFVBQVUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZCLFVBQVUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztTQUM1QztJQUNMLENBQUM7OztZQXhhSixVQUFVOzs7WUFwQ1AsMkJBQTJCO1lBTzNCLDRCQUE0QjtZQWtCNUIsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBEeW5hbWljQ2hlY2tib3hNb2RlbCxcclxuICAgIER5bmFtaWNDaGVja2JveE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0ZpbGVVcGxvYWRNb2RlbCxcclxuICAgIER5bmFtaWNGaWxlVXBsb2FkTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybUFycmF5TW9kZWwgYXMgRHluYW1pY0Zvcm1BcnJheU1vZGVsQmFzZSxcclxuICAgIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnRTZXJ2aWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljRm9ybU1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1PcHRpb25Db25maWcsXHJcbiAgICBEeW5hbWljRm9ybVNlcnZpY2UgYXMgQmFzZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbENvbmZpZyxcclxuICAgIER5bmFtaWNJbnB1dE1vZGVsLFxyXG4gICAgRHluYW1pY0lucHV0TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljU2VsZWN0TW9kZWwsXHJcbiAgICBEeW5hbWljU2VsZWN0TW9kZWxDb25maWcsXHJcbiAgICBEeW5hbWljVGV4dEFyZWFNb2RlbCxcclxuICAgIER5bmFtaWNUZXh0QXJlYU1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY1ZhbGlkYXRvcnNDb25maWdcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUFwaVNlcnZpY2UsXHJcbiAgICBJTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgSU9wZW5BcGlTY2hlbWEsXHJcbiAgICBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LFxyXG4gICAgSU9wZW5BcGlTY2hlbWFzLFxyXG4gICAgT2JqZWN0VXRpbHMsXHJcbiAgICBPcGVuQXBpU2VydmljZSxcclxuICAgIFN0cmluZ1V0aWxzXHJcbn0gZnJvbSBcIkBzdGVteS9uZ3gtdXRpbHNcIjtcclxuXHJcbmltcG9ydCB7SUZvcm1Db250cm9sU2VyaWFsaXplcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuaW1wb3J0IHtpc1N0cmluZ1dpdGhWYWx9IGZyb20gXCIuLi91dGlscy9taXNjXCI7XHJcbmltcG9ydCB7Rm9ybVNlbGVjdFN1YmplY3R9IGZyb20gXCIuLi91dGlscy9mb3JtLXNlbGVjdC1zdWJqZWN0XCI7XHJcbmltcG9ydCB7Rm9ybVN1YmplY3R9IGZyb20gXCIuLi91dGlscy9mb3JtLXN1YmplY3RcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5TW9kZWwsIER5bmFtaWNGb3JtQXJyYXlNb2RlbENvbmZpZ30gZnJvbSBcIi4uL3V0aWxzL2R5bmFtaWMtZm9ybS1hcnJheS5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1TZXJ2aWNlIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gICAgZ2V0IGFwaSgpOiBJQXBpU2VydmljZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkFwaS5hcGk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmd1YWdlKCk6IElMYW5ndWFnZVNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5sYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICByZWFkb25seSBvbkRldGVjdENoYW5nZXM6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbXBvbmVudD47XHJcbiAgICBwcm90ZWN0ZWQgc2NoZW1hczogSU9wZW5BcGlTY2hlbWFzO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNzOiBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsIHZzOiBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLCByZWFkb25seSBvcGVuQXBpOiBPcGVuQXBpU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGNzLCB2cyk7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29tcG9uZW50PigpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoR3JvdXAodmFsdWU6IGFueSwgZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZSwgZm9ybU1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGZvcm1Hcm91cC5wYXRjaFZhbHVlKE9iamVjdFV0aWxzLmNvcHkodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEZvcm0odmFsdWU6IGFueSwgY29tcG9uZW50OiBEeW5hbWljRm9ybUNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZSwgY29tcG9uZW50Lm1vZGVsLCBjb21wb25lbnQuZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyhjb21wb25lbnQpO1xyXG4gICAgICAgIGNvbXBvbmVudC5ncm91cC5wYXRjaFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXJpYWxpemUoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplUmVjdXJzaXZlKGZvcm1Nb2RlbCwgZm9ybUdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBub3RpZnlDaGFuZ2VzKGZvcm1Nb2RlbDogRHluYW1pY0Zvcm1Nb2RlbCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoZm9ybU1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVNlbGVjdE9wdGlvbnMoZm9ybUNvbnRyb2xNb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZm9ybUNvbnRyb2xNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNTZWxlY3RNb2RlbCkge1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IGZvcm1Db250cm9sTW9kZWwub3B0aW9ucyQ7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRm9ybVN1YmplY3QpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMubm90aWZ5KGZvcm1Db250cm9sTW9kZWwsIGZvcm1Db250cm9sKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aGlsZSAob3B0aW9ucyBpbnN0YW5jZW9mIFN1YmplY3QgJiYgb3B0aW9ucy5zb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnNvdXJjZTtcclxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRm9ybVN1YmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm5vdGlmeShmb3JtQ29udHJvbE1vZGVsLCBmb3JtQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0Vycm9ycyhmb3JtOiBEeW5hbWljRm9ybUNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd0Vycm9yc0Zvckdyb3VwKGZvcm0uZ3JvdXApO1xyXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyhmb3JtKTtcclxuICAgIH1cclxuXHJcbiAgICBkZXRlY3RDaGFuZ2VzKGZvcm1Db21wb25lbnQ/OiBEeW5hbWljRm9ybUNvbXBvbmVudCkge1xyXG4gICAgICAgIHN1cGVyLmRldGVjdENoYW5nZXMoZm9ybUNvbXBvbmVudCk7XHJcbiAgICAgICAgdGhpcy5vbkRldGVjdENoYW5nZXMuZW1pdChmb3JtQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGF0Y2hWYWx1ZVJlY3Vyc2l2ZSh2YWx1ZTogYW55LCBmb3JtTW9kZWw6IER5bmFtaWNGb3JtTW9kZWwsIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3ViTW9kZWwgPSB0aGlzLmZpbmRNb2RlbEJ5SWQoa2V5LCBmb3JtTW9kZWwpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XHJcbiAgICAgICAgICAgIGlmICghc3ViTW9kZWwpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3Qgc3ViQ29udHJvbCA9IHRoaXMuZmluZENvbnRyb2xCeU1vZGVsKHN1Yk1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljU2VsZWN0TW9kZWwgJiYgT2JqZWN0VXRpbHMuaXNPYmplY3Qoc3ViVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gc3ViVmFsdWUuaWQgfHwgc3ViVmFsdWUuX2lkIHx8IHN1YlZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbEJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IEFycmF5LmlzQXJyYXkoc3ViVmFsdWUpID8gc3ViVmFsdWUubGVuZ3RoIDogMDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YkFycmF5ID0gc3ViQ29udHJvbCBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3ViTW9kZWwuc2l6ZSA+IGxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRm9ybUFycmF5R3JvdXAoMCwgc3ViQXJyYXksIHN1Yk1vZGVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHdoaWxlIChzdWJNb2RlbC5zaXplIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRGb3JtQXJyYXlHcm91cChzdWJNb2RlbC5zaXplLCBzdWJBcnJheSwgc3ViTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Nb2RlbCA9IHN1Yk1vZGVsLmdldChpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGNoVmFsdWVSZWN1cnNpdmUoc3ViVmFsdWVbaV0sIGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYWx1ZVJlY3Vyc2l2ZShzdWJWYWx1ZSwgc3ViTW9kZWwuZ3JvdXAsIHN1YkNvbnRyb2wgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBzZXJpYWxpemVSZWN1cnNpdmUoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XHJcbiAgICAgICAgaWYgKCFmb3JtTW9kZWwgfHwgIWZvcm1Hcm91cCB8fCAhZm9ybUdyb3VwLnZhbHVlKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIGZvciAoY29uc3QgaSBpbiBmb3JtTW9kZWwpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3ViTW9kZWwgPSBmb3JtTW9kZWxbaV0gYXMgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxhbnk+O1xyXG4gICAgICAgICAgICBjb25zdCBzdWJDb250cm9sID0gdGhpcy5maW5kQ29udHJvbEJ5TW9kZWwoc3ViTW9kZWwsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBzdWJNb2RlbC5hZGRpdGlvbmFsPy5zZXJpYWxpemVyIGFzIElGb3JtQ29udHJvbFNlcmlhbGl6ZXI7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNlcmlhbGl6ZXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gYXdhaXQgc2VyaWFsaXplcihzdWJNb2RlbCwgc3ViQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUFycmF5TW9kZWxCYXNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBBcnJheS5pc0FycmF5KHN1YkNvbnRyb2wudmFsdWUpID8gc3ViQ29udHJvbC52YWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc0FycmF5ID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbU1vZGVsID0gc3ViTW9kZWwuZ2V0KGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc0FycmF5LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplUmVjdXJzaXZlKGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gcmVzQXJyYXk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUdyb3VwTW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtzdWJNb2RlbC5pZF0gPSBhd2FpdCB0aGlzLnNlcmlhbGl6ZVJlY3Vyc2l2ZShzdWJNb2RlbC5ncm91cCwgc3ViQ29udHJvbCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN1Yk1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0lucHV0TW9kZWwgJiYgIU9iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHN1YkNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbc3ViTW9kZWwuaWRdID0gc3ViTW9kZWwuaW5wdXRUeXBlID09IFwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICA/IHBhcnNlRmxvYXQoKGAke3N1YkNvbnRyb2wudmFsdWV9YCB8fCBcIjBcIikucmVwbGFjZSgvLC9naSwgXCIuXCIpKSA/PyBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzdWJDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0W3N1Yk1vZGVsLmlkXSA9IHN1YkNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG5vdGlmeUNoYW5nZXNSZWN1cnNpdmUoZm9ybU1vZGVsOiBEeW5hbWljRm9ybU1vZGVsLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZm9ybU1vZGVsIHx8ICFmb3JtR3JvdXApIHJldHVybjtcclxuICAgICAgICBmb3IgKGNvbnN0IGkgaW4gZm9ybU1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1Yk1vZGVsID0gZm9ybU1vZGVsW2ldIGFzIER5bmFtaWNGb3JtVmFsdWVDb250cm9sTW9kZWw8YW55PjtcclxuICAgICAgICAgICAgY29uc3Qgc3ViQ29udHJvbCA9IHRoaXMuZmluZENvbnRyb2xCeU1vZGVsKHN1Yk1vZGVsLCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICBpZiAoc3ViTW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybUFycmF5TW9kZWxCYXNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBBcnJheS5pc0FycmF5KHN1YkNvbnRyb2wudmFsdWUpID8gc3ViQ29udHJvbC52YWx1ZS5sZW5ndGggOiAwO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyYXkgPSBzdWJDb250cm9sIGFzIEZvcm1BcnJheTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtTW9kZWwgPSBzdWJNb2RlbC5nZXQoaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKGl0ZW1Nb2RlbC5ncm91cCwgc3ViQXJyYXkuYXQoaSkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdWJNb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtR3JvdXBNb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlDaGFuZ2VzUmVjdXJzaXZlKHN1Yk1vZGVsLmdyb3VwLCBzdWJDb250cm9sIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdE9wdGlvbnMoc3ViTW9kZWwsIHN1YkNvbnRyb2wpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2hvd0Vycm9yc0Zvckdyb3VwKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFmb3JtR3JvdXApIHJldHVybjtcclxuICAgICAgICBmb3JtR3JvdXAubWFya0FzVG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcclxuICAgICAgICBjb25zdCBjb250cm9scyA9IE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scykubWFwKGlkID0+IGZvcm1Hcm91cC5jb250cm9sc1tpZF0pO1xyXG4gICAgICAgIHRoaXMuc2hvd0Vycm9yc0ZvckNvbnRyb2xzKGNvbnRyb2xzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2hvd0Vycm9yc0ZvckNvbnRyb2xzKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcnNGb3JHcm91cChjb250cm9sKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcnNGb3JDb250cm9scyhjb250cm9sLmNvbnRyb2xzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZvcm1Nb2RlbEZvclNjaGVtYShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPER5bmFtaWNGb3JtTW9kZWw+IHtcclxuICAgICAgICB0aGlzLmFwaS5jYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuc2NoZW1hcyA9IGF3YWl0IHRoaXMub3BlbkFwaS5nZXRTY2hlbWFzKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hRGVmKHRoaXMuc2NoZW1hc1tuYW1lXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1Nb2RlbEZvclNjaGVtYURlZihzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0Zvcm1Nb2RlbCB7XHJcbiAgICAgICAgaWYgKCFzY2hlbWEpXHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMgfHwge30pLm1hcChwID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1twXTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUNvbnRyb2xNb2RlbChwcm9wZXJ0eSwgc2NoZW1hKTtcclxuICAgICAgICB9KS5maWx0ZXIodCA9PiBudWxsICE9PSB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUNvbnRyb2xNb2RlbChwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsIHtcclxuICAgICAgICBjb25zdCAkZW51bSA9IHByb3BlcnR5Lml0ZW1zPy5lbnVtIHx8IHByb3BlcnR5LmVudW07XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJGVudW0pIHx8IGlzU3RyaW5nV2l0aFZhbChwcm9wZXJ0eS5vcHRpb25zUGF0aCkgfHwgaXNTdHJpbmdXaXRoVmFsKHByb3BlcnR5LmVuZHBvaW50KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNTZWxlY3RNb2RlbDxhbnk+KHRoaXMuZ2V0Rm9ybVNlbGVjdENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0lucHV0TW9kZWwodGhpcy5nZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY1RleHRBcmVhTW9kZWwodGhpcy5nZXRGb3JtVGV4dGFyZWFDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljQ2hlY2tib3hNb2RlbCh0aGlzLmdldEZvcm1DaGVja2JveENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5Lml0ZW1zPy4kcmVmIHx8IHByb3BlcnR5LiRyZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNGb3JtQXJyYXlNb2RlbCh0aGlzLmdldEZvcm1BcnJheUNvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0lucHV0TW9kZWwodGhpcy5nZXRGb3JtSW5wdXRDb25maWcocHJvcGVydHksIHNjaGVtYSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFwiZmlsZVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEeW5hbWljRmlsZVVwbG9hZE1vZGVsKHRoaXMuZ2V0Rm9ybVVwbG9hZENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwcm9wZXJ0eS4kcmVmKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbENvbmZpZzxhbnk+IHtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzKHByb3BlcnR5LCBzY2hlbWEpO1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBPYmplY3Qua2V5cyh2YWxpZGF0b3JzKS5yZWR1Y2UoKHJlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJlc1trZXldID0gYGVycm9yLiR7a2V5fWA7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBwcm9wZXJ0eS5pZCxcclxuICAgICAgICAgICAgbGFiZWw6IE9iamVjdFV0aWxzLmlzU3RyaW5nKHByb3BlcnR5LmxhYmVsKSA/IHByb3BlcnR5LmxhYmVsIDogcHJvcGVydHkuaWQsXHJcbiAgICAgICAgICAgIGhpZGRlbjogcHJvcGVydHkuaGlkZGVuLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkuZGlzYWJsZWQsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMsXHJcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZXMsXHJcbiAgICAgICAgICAgIGFkZGl0aW9uYWw6IE9iamVjdC5hc3NpZ24oe30sIHByb3BlcnR5KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1BcnJheUNvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNGb3JtQXJyYXlNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgcmVmID0gcHJvcGVydHkuaXRlbXM/LiRyZWYgfHwgcHJvcGVydHkuJHJlZiB8fCBcIlwiO1xyXG4gICAgICAgIGNvbnN0IHN1YlNjaGVtYSA9IHRoaXMuc2NoZW1hc1tyZWYuc3BsaXQoXCIvXCIpLnBvcCgpXTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLCB7Z3JvdXBGYWN0b3J5OiAoKSA9PiB0aGlzLmdldEZvcm1Nb2RlbEZvclNjaGVtYURlZihzdWJTY2hlbWEpfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEZvcm1Hcm91cENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNGb3JtR3JvdXBNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgcmVmID0gcHJvcGVydHkuJHJlZiB8fCBcIlwiO1xyXG4gICAgICAgIGNvbnN0IHN1YlNjaGVtYSA9IHRoaXMuc2NoZW1hc1tyZWYuc3BsaXQoXCIvXCIpLnBvcCgpXTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLCB7Z3JvdXA6IHRoaXMuZ2V0Rm9ybU1vZGVsRm9yU2NoZW1hRGVmKHN1YlNjaGVtYSl9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUlucHV0Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0lucHV0TW9kZWxDb25maWcge1xyXG4gICAgICAgIGxldCBpbnB1dFR5cGUgPSBTdHJpbmdVdGlscy5oYXMocHJvcGVydHkuaWQsIFwicGFzc3dvcmRcIiwgXCJQYXNzd29yZFwiKSA/IFwicGFzc3dvcmRcIiA6IChwcm9wZXJ0eS5pdGVtcz8udHlwZSB8fCBwcm9wZXJ0eS50eXBlKTtcclxuICAgICAgICBzd2l0Y2ggKGlucHV0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJjaGVja2JveFwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gXCJ0ZXh0YXJlYVwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJpbnRlZ2VyXCI6XHJcbiAgICAgICAgICAgICAgICBpbnB1dFR5cGUgPSBcIm51bWJlclwiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN1YiA9IHByb3BlcnR5LnR5cGUgPT0gXCJhcnJheVwiID8gcHJvcGVydHkuaXRlbXMgfHwgcHJvcGVydHkgOiBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlLFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIixcclxuICAgICAgICAgICAgICAgIGFjY2VwdDogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkuYWNjZXB0KSA/IHByb3BlcnR5LmFjY2VwdCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBtYXNrOiBPYmplY3RVdGlscy5pc1N0cmluZyhwcm9wZXJ0eS5tYXNrKSA/IHByb3BlcnR5Lm1hc2sgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogT2JqZWN0VXRpbHMuaXNTdHJpbmcocHJvcGVydHkucGF0dGVybikgPyBwcm9wZXJ0eS5wYXR0ZXJuIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0ZXA6IGlzTmFOKHN1Yi5zdGVwKSA/IChpc05hTihwcm9wZXJ0eS5zdGVwKSA/IDEgOiBwcm9wZXJ0eS5zdGVwKSA6IHN1Yi5zdGVwLFxyXG4gICAgICAgICAgICAgICAgbWluOiBpc05hTihzdWIubWluaW11bSkgPyBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiA6IHN1Yi5taW5pbXVtLFxyXG4gICAgICAgICAgICAgICAgbWF4OiBpc05hTihzdWIubWF4aW11bSkgPyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiA6IHN1Yi5tYXhpbXVtLFxyXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBpc05hTihzdWIubWluTGVuZ3RoKSA/IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIDogc3ViLm1pbkxlbmd0aCxcclxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogaXNOYU4oc3ViLm1heExlbmd0aCkgPyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiA6IHN1Yi5tYXhMZW5ndGgsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtVGV4dGFyZWFDb25maWcocHJvcGVydHk6IElPcGVuQXBpU2NoZW1hUHJvcGVydHksIHNjaGVtYTogSU9wZW5BcGlTY2hlbWEpOiBEeW5hbWljVGV4dEFyZWFNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWcocHJvcGVydHksIHNjaGVtYSksXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGNvbHM6IHByb3BlcnR5LmNvbHMgfHwgbnVsbCxcclxuICAgICAgICAgICAgICAgIHJvd3M6IHByb3BlcnR5LnJvd3MgfHwgMTAsXHJcbiAgICAgICAgICAgICAgICB3cmFwOiBwcm9wZXJ0eS53cmFwIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wZXJ0eS5hdXRvQ29tcGxldGUgfHwgXCJvZmZcIixcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybVNlbGVjdENvbmZpZyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSk6IER5bmFtaWNTZWxlY3RNb2RlbENvbmZpZzxhbnk+IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eSwgc2NoZW1hKSxcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiBwcm9wZXJ0eS50eXBlID09IFwiYXJyYXlcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Rm9ybUNoZWNrYm94Q29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0NoZWNrYm94TW9kZWxDb25maWcge1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlOiBwcm9wZXJ0eS5pbmRldGVybWluYXRlID09PSB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyB0cmFuc2xhdGVPcHRpb25zKG9wdGlvbnM6IER5bmFtaWNGb3JtT3B0aW9uQ29uZmlnPGFueT5bXSk6IFByb21pc2U8RHluYW1pY0Zvcm1PcHRpb25Db25maWc8YW55PltdPiB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xyXG4gICAgICAgICAgICBvcHRpb24ubGFiZWwgPSBhd2FpdCB0aGlzLmxhbmd1YWdlLmdldFRyYW5zbGF0aW9uKG9wdGlvbi5sYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtU2VsZWN0T3B0aW9ucyhwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSkge1xyXG4gICAgICAgIGNvbnN0ICRlbnVtID0gcHJvcGVydHkuaXRlbXM/LmVudW0gfHwgcHJvcGVydHkuZW51bTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkZW51bSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGb3JtU2VsZWN0U3ViamVjdCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gJGVudW0ubWFwKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHByb3BlcnR5LnRyYW5zbGF0YWJsZSA/IGAke3Byb3BlcnR5LmlkfS4ke3ZhbHVlfWAgOiB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlLCBsYWJlbH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNTdHJpbmdXaXRoVmFsKHByb3BlcnR5Lm9wdGlvbnNQYXRoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1TZWxlY3RTdWJqZWN0KChmb3JtTW9kZWwsIGNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BlcnR5Lm9wdGlvbnNQYXRoO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IGNvbnRyb2w7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0aC5zdGFydHNXaXRoKFwiJHJvb3RcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHIoNSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB3aGlsZSAocGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cigxKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0VXRpbHMuZ2V0VmFsdWUodGFyZ2V0LnZhbHVlLCBwYXRoLnJlcGxhY2UoL1xcJGl4L2dpLCBpbmRleCkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9ICghT2JqZWN0VXRpbHMuaXNBcnJheSh2YWx1ZSkgPyBbXSA6IHZhbHVlKS5tYXAodmFsdWUgPT4gKHt2YWx1ZSwgbGFiZWw6IHZhbHVlfSkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlT3B0aW9ucyhvcHRpb25zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRm9ybVNlbGVjdFN1YmplY3QoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gPSB0aGlzLmFwaS5jYWNoZVtwcm9wZXJ0eS5lbmRwb2ludF0gfHwgdGhpcy5hcGkubGlzdChwcm9wZXJ0eS5lbmRwb2ludCwgdGhpcy5hcGkubWFrZUxpc3RQYXJhbXMoMSwgLTEpKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcChpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiBpLmlkIHx8IGkuX2lkLCBsYWJlbDogaVtwcm9wZXJ0eS5sYWJlbEZpZWxkXSB8fCBpLmxhYmVsIHx8IGkuaWQgfHwgaS5faWR9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gKGF3YWl0IHRoaXMuYXBpLmNhY2hlW3Byb3BlcnR5LmVuZHBvaW50XSkubWFwKHQgPT4gT2JqZWN0LmFzc2lnbih7fSwgdCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRGb3JtVXBsb2FkQ29uZmlnKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY0ZpbGVVcGxvYWRNb2RlbENvbmZpZyB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5hcGkudXJsKHByb3BlcnR5LnVybCB8fCBcImFzc2V0c1wiKTtcclxuICAgICAgICBjb25zdCB7YWNjZXB0LCBhdXRvVXBsb2FkLCBtYXhTaXplLCBtaW5TaXplLCByZW1vdmVVcmwsIHNob3dGaWxlTGlzdH0gPSBwcm9wZXJ0eTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLmdldEZvcm1Db250cm9sQ29uZmlnKHByb3BlcnR5LCBzY2hlbWEpLCB7XHJcbiAgICAgICAgICAgIHVybCxcclxuICAgICAgICAgICAgYWNjZXB0LFxyXG4gICAgICAgICAgICBhdXRvVXBsb2FkLFxyXG4gICAgICAgICAgICBtYXhTaXplLFxyXG4gICAgICAgICAgICBtaW5TaXplLFxyXG4gICAgICAgICAgICByZW1vdmVVcmwsXHJcbiAgICAgICAgICAgIHNob3dGaWxlTGlzdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRWYWxpZGF0b3JzKHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hKTogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnID0ge307XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihwcm9wZXJ0eS5pZCkgPj0gMCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnJlcXVpcmVkID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eVZhbGlkYXRvcnModmFsaWRhdG9ycywgcHJvcGVydHkpO1xyXG4gICAgICAgIHRoaXMuYWRkSXRlbXNWYWxpZGF0b3JzKHZhbGlkYXRvcnMsIHByb3BlcnR5Lml0ZW1zKTtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkUHJvcGVydHlWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnLCBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghcHJvcGVydHkpIHJldHVybjtcclxuICAgICAgICBpZiAoIWlzTmFOKHByb3BlcnR5Lm1pbkxlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5taW5MZW5ndGggPSBwcm9wZXJ0eS5taW5MZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4TGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1heExlbmd0aCA9IHByb3BlcnR5Lm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihwcm9wZXJ0eS5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLm1pbiA9IHByb3BlcnR5Lm1pbmltdW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNOYU4ocHJvcGVydHkubWF4aW11bSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5tYXggPSBwcm9wZXJ0eS5tYXhpbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LmZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGRJdGVtc1ZhbGlkYXRvcnModmFsaWRhdG9yczogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcsIGl0ZW1zOiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpdGVtcykgcmV0dXJuO1xyXG4gICAgICAgIGlmICghaXNOYU4oaXRlbXMubWluTGVuZ3RoKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluTGVuZ3RoID0gaXRlbXMubWluTGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heExlbmd0aCkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5pdGVtc01heExlbmd0aCA9IGl0ZW1zLm1heExlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihpdGVtcy5taW5pbXVtKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLml0ZW1zTWluVmFsdWUgPSBpdGVtcy5taW5pbXVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKGl0ZW1zLm1heGltdW0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMuaXRlbXNNYXhWYWx1ZSA9IGl0ZW1zLm1heGltdW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -505,8 +505,10 @@ class DynamicFormService extends DynamicFormService$1 {
505
505
  mask: ObjectUtils.isString(property.mask) ? property.mask : null,
506
506
  pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,
507
507
  step: isNaN(sub.step) ? (isNaN(property.step) ? 1 : property.step) : sub.step,
508
- min: isNaN(sub.minimum) ? (isNaN(sub.minLength) ? Number.MIN_SAFE_INTEGER : sub.minLength) : sub.minimum,
509
- max: isNaN(sub.maximum) ? (isNaN(sub.maxLength) ? Number.MAX_SAFE_INTEGER : sub.maxLength) : sub.maximum
508
+ min: isNaN(sub.minimum) ? Number.MIN_SAFE_INTEGER : sub.minimum,
509
+ max: isNaN(sub.maximum) ? Number.MAX_SAFE_INTEGER : sub.maximum,
510
+ minLength: isNaN(sub.minLength) ? Number.MIN_SAFE_INTEGER : sub.minLength,
511
+ maxLength: isNaN(sub.maxLength) ? Number.MAX_SAFE_INTEGER : sub.maxLength,
510
512
  });
511
513
  }
512
514
  getFormTextareaConfig(property, schema) {