mmhglobal-dynamicform 2.9.2 → 2.9.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.
@@ -101,7 +101,7 @@ export class ZformComponent {
101
101
  }
102
102
  getFormControls(fieldArray, formControls, containerIsVisible = true) {
103
103
  fieldArray.forEach(field => {
104
- if (!field.SubType) {
104
+ if (!field.SubType && field.Type != 'zloop') {
105
105
  this.addToFieldIndex(field);
106
106
  this.fieldService.patchFieldProperty(field);
107
107
  if (typeof field.Value === "string" && field.Value.indexOf(".") !== -1) {
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
157
157
  }], fieldName: [{
158
158
  type: Input
159
159
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sY0FBYztJQVd6QixZQUNVLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQW9DLEVBQ3BDLFlBQTBCO0lBQ2xDLHNDQUFzQztJQUN0Qyx5QkFBeUI7O1FBTGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVJwQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFTWixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUs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QUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0NBQzNDLE1BQU0sWUFBWSxHQUFrQixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQ0FDbkcsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUNoQyxZQUFZLENBQ2IsQ0FBQzs2QkFDSDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYTtRQUNwQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRixJQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsRUFBRTtZQUN2QyxPQUFPLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBSTtRQUMzQiwyQ0FBMkM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsyR0FwS1UsY0FBYzsrRkFBZCxjQUFjLHFHQ3hCM0IsaXhCQWVBOzJGRFNhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVzs2TEFNWixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgZGVsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXV0aFNlcnZpY2UsIEZpZWxkU2VydmljZSwgWkNvcmVTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnRIZWxwZXIsIFpHcm91cCwgWkZpZWxkXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtemZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pmb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pmb3JtLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWmZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmaWVsZE5hbWU6IHN0cmluZztcclxuICAvLyBAVmlld0NoaWxkKCdmcm0nLCB7c3RhdGljOiB0cnVlfSkgZm9ybTogTmdGb3JtO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgZmllbGRzOiBBcnJheTxaRmllbGQ+O1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZmllbGRJbmRleCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVidWdTZXJ2aWNlOiBaQ29tcG9uZW50RGVidWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZE5hbWUpIHtcclxuICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZmllbGROYW1lLCAnRm9ybUZpZWxkJywgdGhpcywgJ2ZpZWxkcycpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKGZpZWxkRWxlbWVudHMgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmllbGROYW1lID09PSAnZGVidWdWMicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdTZXJ2aWNlLm9uU3RhcnREZWJ1Z2dlcihmaWVsZEVsZW1lbnRzLCB0aGlzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuZmllbGRzID0gZmllbGRFbGVtZW50cztcclxuICAgICAgICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSwgXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cC5faXNEZWJ1Z2dpbmcgJiYgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuX2RlYnVnLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBkZWxheSg1MDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWJ1Z1NlcnZpY2UuTG9hZEdyaWREYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5sb2FkV29ya2Zsb3dEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikgeyAgLy8gZm9yIGRlYnVnZ2VyIHN1YnNjcmlwdGlvblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXAoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZE5hbWUgIT09ICdkZWJ1Z1YyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLl9kZWJ1ZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Jbml0Tm9ybWFsKCkge1xyXG4gICAgb2YodHJ1ZSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLnRvRm9ybUdyb3VwKHRoaXMuZ3JvdXAuZmllbGRzKTtcclxuICAgICAgICB0aGlzLmdyb3VwLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmdyb3VwLmZpZWxkcztcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwWydhZnRlckZvcm1Jbml0J10pIHtcclxuICAgICAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwWydhZnRlckZvcm1Jbml0J10oKTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBDb21wb25lbnRJc1Zpc2libGUoZmllbGQ6IFpGaWVsZCk6IGFueSB7XHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5Db21wb25lbnRJc1Zpc2libGUoZmllbGQsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0Zvcm1Hcm91cChmaWVsZEVsZW1lbnRzOiBBcnJheTxaRmllbGQ+KSB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSA9IHt9O1xyXG4gICAgdGhpcy5nZXRGb3JtQ29udHJvbHMoZmllbGRFbGVtZW50cywgZm9ybUNvbnRyb2xzKTtcclxuICAgIGNvbnN0IG5ld0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoZm9ybUNvbnRyb2xzKTtcclxuICAgIHJldHVybiBuZXdGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvRmllbGRJbmRleChmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBpZiAoIWZpZWxkLk5hbWUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRmllbGQgTmFtZSB1bmRlZmluZWQ6ICcsIGZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5OYW1lICYmICF0aGlzLmZpZWxkSW5kZXguaW5jbHVkZXMoZmllbGQuTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWVsZEluZGV4LnB1c2goZmllbGQuTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBOYW1lIER1cGxpY2F0aW9uOiAnICsgZmllbGQuTmFtZSArICc7ICAnLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1Db250cm9scyhcclxuICAgIGZpZWxkQXJyYXk6IEFycmF5PFpGaWVsZD4sXHJcbiAgICBmb3JtQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSxcclxuICAgIGNvbnRhaW5lcklzVmlzaWJsZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGZpZWxkQXJyYXkuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmICghZmllbGQuU3ViVHlwZSkge1xyXG4gICAgICAgIHRoaXMuYWRkVG9GaWVsZEluZGV4KGZpZWxkKTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VydmljZS5wYXRjaEZpZWxkUHJvcGVydHkoZmllbGQpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLlZhbHVlID09PSBcInN0cmluZ1wiICYmIGZpZWxkLlZhbHVlLmluZGV4T2YoXCIuXCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKFsnemdyaWQnLCAnenRyZWUnLCAndGV4dGFyZWFqc29uJ10uaW5kZXhPZihmaWVsZC5UeXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRm9ybUNvbnRyb2wgLSBpbnZhbGlkIGZpZWxkIHZhbHVlXCIsIGZpZWxkLlZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5WYWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVySXNWaXNpYmxlID0gWkNvbXBvbmVudEhlbHBlci5pc1Zpc2libGVGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7IFxyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9scyhmaWVsZC5WYWx1ZSwgZm9ybUNvbnRyb2xzLCBjb250YWluZXJJc1Zpc2libGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBaQ29tcG9uZW50SGVscGVyLmlzRm9ybUNvbnRyb2woZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSBaQ29tcG9uZW50SGVscGVyLmlzVmlzaWJsZUZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuaXNSZXF1aXJlZEZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGlmIGNvbnRhaW5lciB8fCBjb250cm9sIHZpc2libGUgPT0gZmFsc2UsIGRvbnQgaW5jcmVhc2UgdGhlIGNvdW50ZXIuXHJcbiAgICAgICAgICAgIGlmIChpc1Zpc2libGUgJiYgY29udGFpbmVySXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWVsZFNlcnZpY2UuaW5jcmVtZW50Q29tcG9uZW50Q291bnRlcihmaWVsZC5GaWVsZEVsZW1lbnROYW1lKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gWkNvbXBvbmVudEhlbHBlci5nZXRWYWxpZGF0b3JzKGZpZWxkLCBpc1Zpc2libGUsIGlzUmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sc1tmaWVsZC5WYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0sIHZhbGlkYXRvcnNcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5oYXNDQ0ZpZWxkKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjY1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldENDVmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkKTtcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sc1tmaWVsZC5DQ1ZhbHVlXSA9IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cC56TW9kZWxbZmllbGQuQ0NWYWx1ZV0sXHJcbiAgICAgICAgICAgICAgICAgIGNjVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZWFkT25seVZhbHVlKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmVhZE9ubHkpO1xyXG4gICAgaWYgKHR5cGVvZiByZWFkT25seVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiByZWFkT25seVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtKTogbnVtYmVyIHtcclxuICAgIC8vcmV0dXJuIGl0ZW1bJ1R5cGUnXSArICctJyArIGl0ZW1bJ05hbWUnXTtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0VmFsdWUoZmllbGQ6IFpGaWVsZCkge1xyXG4gIC8vICAgaWYgKGZpZWxkLlR5cGUuaW5kZXhPZignZGF0ZScpICE9PSAtMSkge1xyXG4gIC8vICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV07XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlMS1mb3JtXCI+XHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJrLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPjwvZGl2Pi0tPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdyBpZD1cImR5bmFtaWMtZm9ybS1ob3N0XCIgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwW2ZpZWxkWydpc1Zpc2libGVGaWVsZCddXSA/IGZpZWxkLkRpdkNsYXNzIDooKGZpZWxkLlZpc2libGUgPT09IHRydWUpID8gIGZpZWxkLkRpdkNsYXNzIDogJ2ZsZXgtaGlkZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJnZXRHcm91cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7ZmllbGQuVHlwZX19LXt7ZmllbGQuTmFtZX19XCI+PC9hcHAtemZvcm1jb250cm9sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sY0FBYztJQVd6QixZQUNVLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQW9DLEVBQ3BDLFlBQTBCO0lBQ2xDLHNDQUFzQztJQUN0Qyx5QkFBeUI7O1FBTGpCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVJwQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFTWixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUs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LFVBQVUsQ0FDM0MsQ0FBQzs0QkFFRixJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0NBQzNDLE1BQU0sWUFBWSxHQUFrQixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQ0FDbkcsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUNoQyxZQUFZLENBQ2IsQ0FBQzs2QkFDSDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYTtRQUNwQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRixJQUFJLE9BQU8sYUFBYSxLQUFLLFVBQVUsRUFBRTtZQUN2QyxPQUFPLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBSTtRQUMzQiwyQ0FBMkM7UUFDM0MsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsyR0FwS1UsY0FBYzsrRkFBZCxjQUFjLHFHQ3hCM0IsaXhCQWVBOzJGRFNhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVzs2TEFNWixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgZGVsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXV0aFNlcnZpY2UsIEZpZWxkU2VydmljZSwgWkNvcmVTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnRIZWxwZXIsIFpHcm91cCwgWkZpZWxkXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtemZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pmb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pmb3JtLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWmZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmaWVsZE5hbWU6IHN0cmluZztcclxuICAvLyBAVmlld0NoaWxkKCdmcm0nLCB7c3RhdGljOiB0cnVlfSkgZm9ybTogTmdGb3JtO1xyXG5cclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgZmllbGRzOiBBcnJheTxaRmllbGQ+O1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZmllbGRJbmRleCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVidWdTZXJ2aWNlOiBaQ29tcG9uZW50RGVidWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZE5hbWUpIHtcclxuICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZmllbGROYW1lLCAnRm9ybUZpZWxkJywgdGhpcywgJ2ZpZWxkcycpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKGZpZWxkRWxlbWVudHMgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmllbGROYW1lID09PSAnZGVidWdWMicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdTZXJ2aWNlLm9uU3RhcnREZWJ1Z2dlcihmaWVsZEVsZW1lbnRzLCB0aGlzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuZmllbGRzID0gZmllbGRFbGVtZW50cztcclxuICAgICAgICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwLl9pc0RlYnVnZ2luZyAmJiB0aGlzLmdyb3VwLl9kZWJ1Zy5pc0xvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGRlbGF5KDUwMCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5Mb2FkR3JpZERhdGEoKTtcclxuICAgICAgICAgIHRoaXMuZGVidWdTZXJ2aWNlLmxvYWRXb3JrZmxvd0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7ICAvLyBmb3IgZGVidWdnZXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkTmFtZSAhPT0gJ2RlYnVnVjInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuX2RlYnVnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkluaXROb3JtYWwoKSB7XHJcbiAgICBvZih0cnVlKS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMudG9Gb3JtR3JvdXAodGhpcy5ncm91cC5maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZm9ybSA9IHRoaXMuZm9ybTtcclxuICAgICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZ3JvdXAuZmllbGRzO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXBbJ2FmdGVyRm9ybUluaXQnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbJ2FmdGVyRm9ybUluaXQnXSgpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIENvbXBvbmVudElzVmlzaWJsZShmaWVsZDogWkZpZWxkKTogYW55IHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLkNvbXBvbmVudElzVmlzaWJsZShmaWVsZCwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvRm9ybUdyb3VwKGZpZWxkRWxlbWVudHM6IEFycmF5PFpGaWVsZD4pIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9ID0ge307XHJcbiAgICB0aGlzLmdldEZvcm1Db250cm9scyhmaWVsZEVsZW1lbnRzLCBmb3JtQ29udHJvbHMpO1xyXG4gICAgY29uc3QgbmV3Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChmb3JtQ29udHJvbHMpO1xyXG4gICAgcmV0dXJuIG5ld0Zvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9GaWVsZEluZGV4KGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGlmICghZmllbGQuTmFtZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBOYW1lIHVuZGVmaW5lZDogJywgZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLk5hbWUgJiYgIXRoaXMuZmllbGRJbmRleC5pbmNsdWRlcyhmaWVsZC5OYW1lKSkge1xyXG4gICAgICB0aGlzLmZpZWxkSW5kZXgucHVzaChmaWVsZC5OYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZpZWxkIE5hbWUgRHVwbGljYXRpb246ICcgKyBmaWVsZC5OYW1lICsgJzsgICcsIGZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xzKFxyXG4gICAgZmllbGRBcnJheTogQXJyYXk8WkZpZWxkPixcclxuICAgIGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9LFxyXG4gICAgY29udGFpbmVySXNWaXNpYmxlOiBib29sZWFuID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgZmllbGRBcnJheS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKCFmaWVsZC5TdWJUeXBlICYmIGZpZWxkLlR5cGUgIT0gJ3psb29wJykge1xyXG4gICAgICAgIHRoaXMuYWRkVG9GaWVsZEluZGV4KGZpZWxkKTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VydmljZS5wYXRjaEZpZWxkUHJvcGVydHkoZmllbGQpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLlZhbHVlID09PSBcInN0cmluZ1wiICYmIGZpZWxkLlZhbHVlLmluZGV4T2YoXCIuXCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKFsnemdyaWQnLCAnenRyZWUnLCAndGV4dGFyZWFqc29uJ10uaW5kZXhPZihmaWVsZC5UeXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRm9ybUNvbnRyb2wgLSBpbnZhbGlkIGZpZWxkIHZhbHVlXCIsIGZpZWxkLlZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5WYWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVySXNWaXNpYmxlID0gWkNvbXBvbmVudEhlbHBlci5pc1Zpc2libGVGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xzKGZpZWxkLlZhbHVlLCBmb3JtQ29udHJvbHMsIGNvbnRhaW5lcklzVmlzaWJsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IFpDb21wb25lbnRIZWxwZXIuaXNGb3JtQ29udHJvbChmaWVsZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IFpDb21wb25lbnRIZWxwZXIuaXNWaXNpYmxlRm9ybUNvbnRyb2wodGhpcywgZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gWkNvbXBvbmVudEhlbHBlci5pc1JlcXVpcmVkRm9ybUNvbnRyb2wodGhpcywgZmllbGQpO1xyXG5cclxuICAgICAgICAgICAgLy8gaWYgY29udGFpbmVyIHx8IGNvbnRyb2wgdmlzaWJsZSA9PSBmYWxzZSwgZG9udCBpbmNyZWFzZSB0aGUgY291bnRlci5cclxuICAgICAgICAgICAgaWYgKGlzVmlzaWJsZSAmJiBjb250YWluZXJJc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpZWxkU2VydmljZS5pbmNyZW1lbnRDb21wb25lbnRDb3VudGVyKGZpZWxkLkZpZWxkRWxlbWVudE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldFZhbGlkYXRvcnMoZmllbGQsIGlzVmlzaWJsZSwgaXNSZXF1aXJlZCk7XHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLlZhbHVlXSA9IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLlZhbHVlXSwgdmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChaQ29tcG9uZW50SGVscGVyLmhhc0NDRmllbGQoZmllbGQuVHlwZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNjVmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Q0NWYWxpZGF0b3JzKGZpZWxkLCBpc1Zpc2libGUsIGlzUmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLkNDVmFsdWVdID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5DQ1ZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgY2NWYWxpZGF0b3JzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlYWRPbmx5VmFsdWUoZmllbGQ6IFpGaWVsZCkge1xyXG4gICAgY29uc3QgcmVhZE9ubHlWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5SZWFkT25seSk7XHJcbiAgICBpZiAodHlwZW9mIHJlYWRPbmx5VmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIHJlYWRPbmx5VmFsdWUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZWFkT25seVZhbHVlO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW0pOiBudW1iZXIge1xyXG4gICAgLy9yZXR1cm4gaXRlbVsnVHlwZSddICsgJy0nICsgaXRlbVsnTmFtZSddO1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBnZXRWYWx1ZShmaWVsZDogWkZpZWxkKSB7XHJcbiAgLy8gICBpZiAoZmllbGQuVHlwZS5pbmRleE9mKCdkYXRlJykgIT09IC0xKSB7XHJcbiAgLy8gICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0pO1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLlZhbHVlXTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImUxLWZvcm1cIj5cclxuICA8IS0tPGRpdiBjbGFzcz1cImstb3ZlcmxheVwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9kaXY+LS0+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgICA8aW9uLWdyaWQ+XHJcbiAgICAgIDxpb24tcm93IGlkPVwiZHluYW1pYy1mb3JtLWhvc3RcIiBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgIDxhcHAtemZvcm1jb250cm9sICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXBbZmllbGRbJ2lzVmlzaWJsZUZpZWxkJ11dID8gZmllbGQuRGl2Q2xhc3MgOigoZmllbGQuVmlzaWJsZSA9PT0gdHJ1ZSkgPyAgZmllbGQuRGl2Q2xhc3MgOiAnZmxleC1oaWRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImdldEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tmaWVsZC5UeXBlfX0te3tmaWVsZC5OYW1lfX1cIj48L2FwcC16Zm9ybWNvbnRyb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgIDwvaW9uLWdyaWQ+XHJcbiAgPC9mb3JtPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,117 @@
1
+ /********** Angular **********/
2
+ import { Component } from "@angular/core";
3
+ import { ContainerFieldBase } from "../components/containerfieldbase.component";
4
+ import { ZComponentHelper } from 'mmhglobal-zcore';
5
+ import { FormControl } from "@angular/forms";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../services/zcomponent.service";
8
+ import * as i2 from "mmhglobal-zcore";
9
+ import * as i3 from "../zformcontrol/zformcontrol.component";
10
+ import * as i4 from "@angular/common";
11
+ import * as i5 from "@angular/flex-layout/extended";
12
+ export class ZloopComponent extends ContainerFieldBase {
13
+ constructor(componentService, fieldService) {
14
+ super(componentService);
15
+ this.componentService = componentService;
16
+ this.fieldService = fieldService;
17
+ this.clonedFields = [];
18
+ this.clonedFormControlList = new Array();
19
+ this.initField = {};
20
+ this.conponentTypesToNotUpdateValue = ['zbuttons'];
21
+ }
22
+ ngOnInit() {
23
+ this.initField = ZComponentHelper.deepClone(this.data);
24
+ this.setupLoopingElement();
25
+ super.initComponent().subscribe(() => { this.isLoading = false; });
26
+ }
27
+ refreshFieldElement() {
28
+ this.data = ZComponentHelper.deepClone(this.initField);
29
+ this.setupLoopingElement();
30
+ }
31
+ setupLoopingElement() {
32
+ if (this.data.LoopingElementConfig) {
33
+ // Remove previously cloned fields from form controls (if any)
34
+ if (this.clonedFormControlList.length > 0) {
35
+ for (const fgName of this.clonedFormControlList) {
36
+ this.group.form.removeControl(fgName);
37
+ }
38
+ }
39
+ // Clone zloop's child
40
+ this.clonedFields = this.cloneFieldElementChild(this.data);
41
+ // Append cloned fields to group.fields for error message displaying
42
+ this.group.clonedFields = ZComponentHelper.deepClone(this.group.fields);
43
+ const thisField = ZComponentHelper.getFieldFromFieldsByName(this.group.clonedFields, this.data.Name);
44
+ thisField.Value = this.clonedFields;
45
+ }
46
+ }
47
+ cloneFieldElementChild(field) {
48
+ const loopingElementConfig = typeof field.LoopingElementConfig == 'string' ? ZComponentHelper.getGroupValue(field.LoopingElementConfig, this.group) : field.LoopingElementConfig;
49
+ if (loopingElementConfig == undefined) {
50
+ return field.Value;
51
+ }
52
+ let fieldToInsert = new Array();
53
+ for (let configIndex = 0; configIndex < loopingElementConfig.Count; configIndex++) {
54
+ const clonedFields = ZComponentHelper.deepClone(field.Value);
55
+ this.updateFieldPropertiesToMakeThemDistinct(clonedFields, loopingElementConfig, configIndex);
56
+ fieldToInsert = fieldToInsert.concat(clonedFields);
57
+ }
58
+ return fieldToInsert;
59
+ }
60
+ updateFieldPropertiesToMakeThemDistinct(fields, loopingElementConfig, index) {
61
+ for (const field of fields) {
62
+ const elementConfig = loopingElementConfig.ToReplace.find(x => x.ElementName == field.Name);
63
+ const elementConfigProperty = elementConfig && elementConfig.Property && elementConfig.Property.length > index ? elementConfig.Property[index] : {};
64
+ field.Name = `${field.Name}_${index + 1}`;
65
+ if (field.Label) {
66
+ field.Label = `${field.Label}`;
67
+ }
68
+ if (Array.isArray(field.Value)) {
69
+ this.updateFieldPropertiesToMakeThemDistinct(field.Value, loopingElementConfig, index);
70
+ }
71
+ else {
72
+ if (elementConfigProperty.Value != undefined) {
73
+ field.Value = elementConfigProperty.Value;
74
+ }
75
+ else if (!this.conponentTypesToNotUpdateValue.includes(field.Type)) {
76
+ field.Value = `${field.Value}_${index + 1}`;
77
+ }
78
+ }
79
+ for (const key of Object.keys(elementConfigProperty)) {
80
+ field[key] = elementConfigProperty[key];
81
+ }
82
+ this.setClonedFieldsToFormControls(field);
83
+ }
84
+ }
85
+ setClonedFieldsToFormControls(field) {
86
+ if (!field.SubType) {
87
+ this.fieldService.patchFieldProperty(field);
88
+ if (typeof field.Value === "string" && field.Value.indexOf(".") !== -1) {
89
+ if (['zgrid', 'ztree', 'textareajson'].indexOf(field.Type) === -1) {
90
+ console.warn("FormControl - invalid field value", field.Value);
91
+ }
92
+ }
93
+ else {
94
+ const isFormControl = ZComponentHelper.isFormControl(field);
95
+ const isVisible = ZComponentHelper.isVisibleFormControl(this, field);
96
+ const isRequired = ZComponentHelper.isRequiredFormControl(this, field);
97
+ if (isFormControl === true) {
98
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
99
+ this.group.form.addControl(field.Value, new FormControl(this.group.zModel[field.Value], validators));
100
+ this.clonedFormControlList.push(field.Value);
101
+ if (ZComponentHelper.hasCCField(field.Type)) {
102
+ const ccValidators = ZComponentHelper.getCCValidators(field, isVisible, isRequired);
103
+ this.group.form.addControl(field.CCValue, new FormControl(this.group.zModel[field.CCValue], ccValidators));
104
+ this.clonedFormControlList.push(field.CCValue);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ }
111
+ ZloopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZloopComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FieldService }], target: i0.ɵɵFactoryTarget.Component });
112
+ ZloopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZloopComponent, selector: "app-zloop", usesInheritance: true, ngImport: i0, template: "<div [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of clonedFields\"\r\n [field]=\"field\"\r\n [containerField]=\"data\" [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </app-zformcontrol>\r\n</div>\r\n\r\n", styles: [""], components: [{ type: i3.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZloopComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: 'app-zloop', template: "<div [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of clonedFields\"\r\n [field]=\"field\"\r\n [containerField]=\"data\" [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </app-zformcontrol>\r\n</div>\r\n\r\n", styles: [""] }]
116
+ }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FieldService }]; } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemxvb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemxvb3Avemxvb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemxvb3Avemxvb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFvQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVExRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQU1wRCxZQUNTLGdCQUFtQyxFQUNuQyxZQUEwQjtRQUVqQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUDVCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLDBCQUFxQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDNUMsY0FBUyxHQUFHLEVBQVksQ0FBQztRQUN6QixtQ0FBOEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBT3RELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMs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QUMsQ0FBQzt3QkFDbkcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQ3ZELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQy9DLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDaEQ7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7MkdBeEhVLGNBQWM7K0ZBQWQsY0FBYyx3RUNiM0Isa3BCQVVBOzJGREdhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jb250YWluZXJmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50SGVscGVyLCBGaWVsZFNlcnZpY2UsIFpDb21wb25lbnQsIFpGaWVsZCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtemxvb3AnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bG9vcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vemxvb3AuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBabG9vcENvbXBvbmVudCBleHRlbmRzIENvbnRhaW5lckZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHVibGljIGNsb25lZEZpZWxkcyA9IFtdO1xyXG4gIHByaXZhdGUgY2xvbmVkRm9ybUNvbnRyb2xMaXN0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICBwcml2YXRlIGluaXRGaWVsZCA9IHt9IGFzIFpGaWVsZDtcclxuICBwcml2YXRlIGNvbnBvbmVudFR5cGVzVG9Ob3RVcGRhdGVWYWx1ZSA9IFsnemJ1dHRvbnMnXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0RmllbGQgPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIHRoaXMuc2V0dXBMb29waW5nRWxlbWVudCgpO1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7IH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZnJlc2hGaWVsZEVsZW1lbnQoKSB7XHJcbiAgICB0aGlzLmRhdGEgPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZSh0aGlzLmluaXRGaWVsZCk7XHJcbiAgICB0aGlzLnNldHVwTG9vcGluZ0VsZW1lbnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBMb29waW5nRWxlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuTG9vcGluZ0VsZW1lbnRDb25maWcpIHtcclxuICAgICAgLy8gUmVtb3ZlIHByZXZpb3VzbHkgY2xvbmVkIGZpZWxkcyBmcm9tIGZvcm0gY29udHJvbHMgKGlmIGFueSlcclxuICAgICAgaWYgKHRoaXMuY2xvbmVkRm9ybUNvbnRyb2xMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGZnTmFtZSBvZiB0aGlzLmNsb25lZEZvcm1Db250cm9sTGlzdCkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5mb3JtLnJlbW92ZUNvbnRyb2woZmdOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENsb25lIHpsb29wJ3MgY2hpbGRcclxuICAgICAgdGhpcy5jbG9uZWRGaWVsZHMgPSB0aGlzLmNsb25lRmllbGRFbGVtZW50Q2hpbGQodGhpcy5kYXRhKTtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCBjbG9uZWQgZmllbGRzIHRvIGdyb3VwLmZpZWxkcyBmb3IgZXJyb3IgbWVzc2FnZSBkaXNwbGF5aW5nXHJcbiAgICAgIHRoaXMuZ3JvdXAuY2xvbmVkRmllbGRzID0gWkNvbXBvbmVudEhlbHBlci5kZWVwQ2xvbmUodGhpcy5ncm91cC5maWVsZHMpO1xyXG4gICAgICBjb25zdCB0aGlzRmllbGQgPSBaQ29tcG9uZW50SGVscGVyLmdldEZpZWxkRnJvbUZpZWxkc0J5TmFtZSh0aGlzLmdyb3VwLmNsb25lZEZpZWxkcywgdGhpcy5kYXRhLk5hbWUpO1xyXG4gICAgICB0aGlzRmllbGQuVmFsdWUgPSB0aGlzLmNsb25lZEZpZWxkcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvbmVGaWVsZEVsZW1lbnRDaGlsZChmaWVsZDogWkZpZWxkKTogQXJyYXk8WkZpZWxkPiB7XHJcbiAgICBjb25zdCBsb29waW5nRWxlbWVudENvbmZpZyA9IHR5cGVvZiBmaWVsZC5Mb29waW5nRWxlbWVudENvbmZpZyA9PSAnc3RyaW5nJyA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShmaWVsZC5Mb29waW5nRWxlbWVudENvbmZpZywgdGhpcy5ncm91cCkgOiBmaWVsZC5Mb29waW5nRWxlbWVudENvbmZpZztcclxuXHJcbiAgICBpZiAobG9vcGluZ0VsZW1lbnRDb25maWcgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBmaWVsZC5WYWx1ZTtcclxuICAgIH1cclxuICAgIGxldCBmaWVsZFRvSW5zZXJ0ID0gbmV3IEFycmF5PFpGaWVsZD4oKTtcclxuICAgIGZvciAobGV0IGNvbmZpZ0luZGV4ID0gMDsgY29uZmlnSW5kZXggPCBsb29waW5nRWxlbWVudENvbmZpZy5Db3VudDsgY29uZmlnSW5kZXgrKykge1xyXG4gICAgICBjb25zdCBjbG9uZWRGaWVsZHMgPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZShmaWVsZC5WYWx1ZSk7XHJcbiAgICAgIHRoaXMudXBkYXRlRmllbGRQcm9wZXJ0aWVzVG9NYWtlVGhlbURpc3RpbmN0KGNsb25lZEZpZWxkcywgbG9vcGluZ0VsZW1lbnRDb25maWcsIGNvbmZpZ0luZGV4KTtcclxuICAgICAgZmllbGRUb0luc2VydCA9IGZpZWxkVG9JbnNlcnQuY29uY2F0KGNsb25lZEZpZWxkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkVG9JbnNlcnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpZWxkUHJvcGVydGllc1RvTWFrZVRoZW1EaXN0aW5jdChmaWVsZHM6IEFycmF5PFpGaWVsZD4sIGxvb3BpbmdFbGVtZW50Q29uZmlnOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRDb25maWcgPSBsb29waW5nRWxlbWVudENvbmZpZy5Ub1JlcGxhY2UuZmluZCh4ID0+IHguRWxlbWVudE5hbWUgPT0gZmllbGQuTmFtZSk7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRDb25maWdQcm9wZXJ0eSA9IGVsZW1lbnRDb25maWcgJiYgZWxlbWVudENvbmZpZy5Qcm9wZXJ0eSAmJiBlbGVtZW50Q29uZmlnLlByb3BlcnR5Lmxlbmd0aCA+IGluZGV4ID8gZWxlbWVudENvbmZpZy5Qcm9wZXJ0eVtpbmRleF0gOiB7fTtcclxuXHJcbiAgICAgIGZpZWxkLk5hbWUgPSBgJHtmaWVsZC5OYW1lfV8ke2luZGV4ICsgMX1gO1xyXG4gICAgICBpZiAoZmllbGQuTGFiZWwpIHtcclxuICAgICAgICBmaWVsZC5MYWJlbCA9IGAke2ZpZWxkLkxhYmVsfWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLlZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlRmllbGRQcm9wZXJ0aWVzVG9NYWtlVGhlbURpc3RpbmN0KGZpZWxkLlZhbHVlLCBsb29waW5nRWxlbWVudENvbmZpZywgaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChlbGVtZW50Q29uZmlnUHJvcGVydHkuVmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBmaWVsZC5WYWx1ZSA9IGVsZW1lbnRDb25maWdQcm9wZXJ0eS5WYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuY29ucG9uZW50VHlwZXNUb05vdFVwZGF0ZVZhbHVlLmluY2x1ZGVzKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgICAgICBmaWVsZC5WYWx1ZSA9IGAke2ZpZWxkLlZhbHVlfV8ke2luZGV4ICsgMX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZWxlbWVudENvbmZpZ1Byb3BlcnR5KSkge1xyXG4gICAgICAgIGZpZWxkW2tleV0gPSBlbGVtZW50Q29uZmlnUHJvcGVydHlba2V5XTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRDbG9uZWRGaWVsZHNUb0Zvcm1Db250cm9scyhmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENsb25lZEZpZWxkc1RvRm9ybUNvbnRyb2xzKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGlmICghZmllbGQuU3ViVHlwZSkge1xyXG4gICAgICB0aGlzLmZpZWxkU2VydmljZS5wYXRjaEZpZWxkUHJvcGVydHkoZmllbGQpO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBmaWVsZC5WYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBmaWVsZC5WYWx1ZS5pbmRleE9mKFwiLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICBpZiAoWyd6Z3JpZCcsICd6dHJlZScsICd0ZXh0YXJlYWpzb24nXS5pbmRleE9mKGZpZWxkLlR5cGUpID09PSAtMSkge1xyXG4gICAgICAgICAgY29uc29sZS53YXJuKFwiRm9ybUNvbnRyb2wgLSBpbnZhbGlkIGZpZWxkIHZhbHVlXCIsIGZpZWxkLlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IFpDb21wb25lbnRIZWxwZXIuaXNGb3JtQ29udHJvbChmaWVsZCk7XHJcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gWkNvbXBvbmVudEhlbHBlci5pc1Zpc2libGVGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7XHJcbiAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuaXNSZXF1aXJlZEZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wgPT09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldFZhbGlkYXRvcnMoZmllbGQsIGlzVmlzaWJsZSwgaXNSZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwLmZvcm0uYWRkQ29udHJvbChmaWVsZC5WYWx1ZSwgbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0sIHZhbGlkYXRvcnNcclxuICAgICAgICAgICkpO1xyXG4gICAgICAgICAgdGhpcy5jbG9uZWRGb3JtQ29udHJvbExpc3QucHVzaChmaWVsZC5WYWx1ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKFpDb21wb25lbnRIZWxwZXIuaGFzQ0NGaWVsZChmaWVsZC5UeXBlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjY1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldENDVmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC5mb3JtLmFkZENvbnRyb2woZmllbGQuQ0NWYWx1ZSwgbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLkNDVmFsdWVdLCBjY1ZhbGlkYXRvcnNcclxuICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvbmVkRm9ybUNvbnRyb2xMaXN0LnB1c2goZmllbGQuQ0NWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGVcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZVwiXHJcbiAgICAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQ/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCI+XHJcbiAgPGFwcC16Zm9ybWNvbnRyb2wgW25nQ2xhc3NdPVwiZ3JvdXBbZmllbGQuaXNWaXNpYmxlRmllbGRdID8gZmllbGQuRGl2Q2xhc3MgOiAoKGZpZWxkLlZpc2libGUgPT09IHRydWUpID8gIGZpZWxkLkRpdkNsYXNzIDogJ2ZsZXgtaGlkZScpXCJcclxuICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBjbG9uZWRGaWVsZHNcIlxyXG4gICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgIFtjb250YWluZXJGaWVsZF09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIGlkPVwie3tmaWVsZC5UeXBlfX0te3tmaWVsZC5OYW1lfX1cIlxyXG4gICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj5cclxuICA8L2FwcC16Zm9ybWNvbnRyb2w+XHJcbjwvZGl2PlxyXG5cclxuIl19