@wemake4u/form-player-se 1.0.25 → 1.0.26

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.
@@ -54,6 +54,20 @@ export class DialogService {
54
54
  };
55
55
  this.showDialog(formSchema, formOptions);
56
56
  }
57
+ show(text, options) {
58
+ const formSchema = this.createTextSchema(text);
59
+ const formOptions = {
60
+ type: "info",
61
+ buttons: 'OK',
62
+ ...options,
63
+ isDrawer: false,
64
+ showNav: false,
65
+ showNavButton: false,
66
+ showProgress: false,
67
+ showFormTitle: false
68
+ };
69
+ this.showDialog(formSchema, formOptions);
70
+ }
57
71
  prompt(text, defaultValue, options) {
58
72
  const formSchema = this.createInputSchema(text, defaultValue);
59
73
  const formOptions = {
@@ -73,7 +87,8 @@ export class DialogService {
73
87
  'openDialog',
74
88
  'alert',
75
89
  'info',
76
- 'confirm'
90
+ 'confirm',
91
+ 'show'
77
92
  ]);
78
93
  }
79
94
  showDialog(formSchema, options) {
@@ -140,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
140
155
  providedIn: 'root'
141
156
  }]
142
157
  }], ctorParameters: () => [{ type: i1.SirioDialogService }] });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FB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QUFJOzZCQUNoQjs0QkFDRCxJQUFJLEVBQUUsZUFBZTs0QkFDckIsS0FBSyxFQUFFLE9BQU87eUJBQ2Y7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxjQUFjO29CQUNwQixlQUFlLEVBQUUsRUFBRTtpQkFDcEI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO3dHQTFJVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IFNpcmlvRGlhbG9nU2VydmljZVxyXG4gICAgKVxyXG4gIHsgfVxyXG5cclxuICBvcGVuRGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhbGVydCh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnMgOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBpbmZvKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnT0snLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ1llc05vJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9OyAgICBcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcm9tcHQodGV4dDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVJbnB1dFNjaGVtYSh0ZXh0LCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ09LQ2FuY2VsJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5wdXRTY2hlbWEobGFiZWw6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJsYWJlbFwiOiBsYWJlbCxcclxuICAgICAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBkZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dGZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgXCJsYXlvdXRcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJyb3dcIjogXCJSb3dfMXd4ejVnZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IG51bGxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIFwiaWRcIjogXCJGaWVsZF8xdGF1NTN4XCIsXHJcbiAgICAgICAgICAgICAgXCJrZXlcIjogXCJpbnB1dFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8xb250d254XCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ09wdGlvbnMge1xyXG4gIHR5cGU/OiBEaWFsb2dUeXBlcztcclxuICBzaXplPzogRGlhbG9nU2l6ZXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaXNEcmF3ZXI/OiBib29sZWFuOyAgXHJcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xyXG4gIGJ1dHRvbnM/OiBEaWFsb2dCdXR0b25zOyAgXHJcbiAgb25SZXN1bHQ/OiAocmVzdWx0OiBEaWFsb2dSZXN1bHQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybURpYWxvZ09wdGlvbnMgZXh0ZW5kcyBEaWFsb2dPcHRpb25zIHtcclxuICB2YWx1ZT86IGFueTtcclxuICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gIHNob3dOYXY/OiBib29sZWFuO1xyXG4gIHNob3dOYXZCdXR0b24/OiBib29sZWFuO1xyXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgc2hvd0Zvcm1UaXRsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUmVzdWx0IHtcclxuICBhY3Rpb246IERpYWxvZ0FjdGlvbjtcclxuICB2YWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQWN0aW9uID0gJ09LJ1xyXG4gIHwgJ0NhbmNlbCdcclxuICB8ICdZZXMnXHJcbiAgfCAnTm8nXHJcbiAgfCAnQ29uZmlybSdcclxuICB8ICdDbG9zZSdcclxuICB8ICdBYm9ydCdcclxuICB8ICdSZXRyeSdcclxuICB8ICdJZ25vcmUnXHJcbiAgfCAnVHJ5J1xyXG4gIHwgJ0NvbnRpbnVlJztcclxuXHJcbmV4cG9ydCB0eXBlIERpYWxvZ0J1dHRvbnMgPSAnT0snXHJcbiAgfCAnT0tDYW5jZWwnXHJcbiAgfCAnQ29uZmlybUNhbmNlbCdcclxuICB8ICdBYm9ydFJldHJ5SWdub3JlJ1xyXG4gIHwgJ1llc05vQ2FuY2VsJ1xyXG4gIHwgJ1llc05vJ1xyXG4gIHwgJ1JldHJ5Q2FuY2VsJ1xyXG4gIHwgJ0NhbmNlbFRyeUNvbnRpbnVlJztcclxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FB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LElBQUk7NkJBQ2hCOzRCQUNELElBQUksRUFBRSxlQUFlO3lCQUN0QjtxQkFDRjtvQkFDRCxNQUFNLEVBQUUsU0FBUztvQkFDakIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLGVBQWUsRUFBRSxFQUFFO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDNUQsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxZQUFZLEVBQUU7d0JBQ1o7NEJBQ0UsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsY0FBYyxFQUFFLFlBQVk7NEJBQzVCLE1BQU0sRUFBRSxXQUFXOzRCQUNuQixRQUFRLEVBQUU7Z0NBQ1IsS0FBSyxFQUFFLGFBQWE7Z0NBQ3BCLFNBQVMsRUFBRSxJQUFJOzZCQUNoQjs0QkFDRCxJQUFJLEVBQUUsZUFBZTs0QkFDckIsS0FBSyxFQUFFLE9BQU87eUJBQ2Y7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxjQUFjO29CQUNwQixlQUFlLEVBQUUsRUFBRTtpQkFDcEI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO3dHQTFKVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IFNpcmlvRGlhbG9nU2VydmljZVxyXG4gICAgKVxyXG4gIHsgfVxyXG5cclxuICBvcGVuRGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhbGVydCh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnMgOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBpbmZvKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnT0snLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ1llc05vJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9OyAgICBcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzaG93KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnT0snLFxyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJvbXB0KHRleHQ6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlSW5wdXRTY2hlbWEodGV4dCwgZGVmYXVsdFZhbHVlKTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPS0NhbmNlbCcsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIFRvQm91bmRBcnJvd3ModGhpcywgW1xyXG4gICAgICAnb3BlbkRpYWxvZycsXHJcbiAgICAgICdhbGVydCcsXHJcbiAgICAgICdpbmZvJyxcclxuICAgICAgJ2NvbmZpcm0nLFxyXG4gICAgICAnc2hvdydcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5wdXRTY2hlbWEobGFiZWw6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJsYWJlbFwiOiBsYWJlbCxcclxuICAgICAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBkZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dGZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgXCJsYXlvdXRcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJyb3dcIjogXCJSb3dfMXd4ejVnZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IG51bGxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIFwiaWRcIjogXCJGaWVsZF8xdGF1NTN4XCIsXHJcbiAgICAgICAgICAgICAgXCJrZXlcIjogXCJpbnB1dFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8xb250d254XCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ09wdGlvbnMge1xyXG4gIHR5cGU/OiBEaWFsb2dUeXBlcztcclxuICBzaXplPzogRGlhbG9nU2l6ZXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaXNEcmF3ZXI/OiBib29sZWFuOyAgXHJcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xyXG4gIGJ1dHRvbnM/OiBEaWFsb2dCdXR0b25zOyAgXHJcbiAgb25SZXN1bHQ/OiAocmVzdWx0OiBEaWFsb2dSZXN1bHQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybURpYWxvZ09wdGlvbnMgZXh0ZW5kcyBEaWFsb2dPcHRpb25zIHtcclxuICB2YWx1ZT86IGFueTtcclxuICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gIHNob3dOYXY/OiBib29sZWFuO1xyXG4gIHNob3dOYXZCdXR0b24/OiBib29sZWFuO1xyXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgc2hvd0Zvcm1UaXRsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUmVzdWx0IHtcclxuICBhY3Rpb246IERpYWxvZ0FjdGlvbjtcclxuICB2YWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQWN0aW9uID0gJ09LJ1xyXG4gIHwgJ0NhbmNlbCdcclxuICB8ICdZZXMnXHJcbiAgfCAnTm8nXHJcbiAgfCAnQ29uZmlybSdcclxuICB8ICdDbG9zZSdcclxuICB8ICdBYm9ydCdcclxuICB8ICdSZXRyeSdcclxuICB8ICdJZ25vcmUnXHJcbiAgfCAnVHJ5J1xyXG4gIHwgJ0NvbnRpbnVlJztcclxuXHJcbmV4cG9ydCB0eXBlIERpYWxvZ0J1dHRvbnMgPSAnT0snXHJcbiAgfCAnT0tDYW5jZWwnXHJcbiAgfCAnQ29uZmlybUNhbmNlbCdcclxuICB8ICdBYm9ydFJldHJ5SWdub3JlJ1xyXG4gIHwgJ1llc05vQ2FuY2VsJ1xyXG4gIHwgJ1llc05vJ1xyXG4gIHwgJ1JldHJ5Q2FuY2VsJ1xyXG4gIHwgJ0NhbmNlbFRyeUNvbnRpbnVlJztcclxuIl19
@@ -73,17 +73,26 @@ export class FormService {
73
73
  const result = this.applyPath(control, path, pathOptions);
74
74
  return result?.status;
75
75
  }
76
+ errors(controls) {
77
+ let errors = 0;
78
+ for (const control of controls) {
79
+ errors += this.collectErrors(control);
80
+ }
81
+ return errors;
82
+ }
76
83
  getInvalidControls(control) {
77
84
  const invalid = [];
78
- if (control.invalid) {
79
- invalid.push({ path: this.getPath(control).join("."), control });
80
- }
85
+ if (control.disabled)
86
+ return invalid;
81
87
  if (control instanceof FormGroup || control instanceof FormArray) {
82
88
  const children = Object.values(control.controls);
83
89
  for (const child of children) {
84
90
  invalid.push(...this.getInvalidControls(child));
85
91
  }
86
92
  }
93
+ else if (control.invalid) {
94
+ invalid.push({ path: this.getPath(control).join("."), control });
95
+ }
87
96
  return invalid;
88
97
  }
89
98
  patch(control, value, options) {
@@ -342,6 +351,21 @@ export class FormService {
342
351
  createControlFromArray(array) {
343
352
  return array.map(item => this.createControlFromValue(item));
344
353
  }
354
+ collectErrors(control) {
355
+ let errors = 0;
356
+ if (control.disabled)
357
+ return errors;
358
+ if (control instanceof FormGroup || control instanceof FormArray) {
359
+ const children = Object.values(control.controls);
360
+ for (const child of children) {
361
+ errors += this.collectErrors(child);
362
+ }
363
+ }
364
+ else if (control.invalid) {
365
+ errors++;
366
+ }
367
+ return errors;
368
+ }
345
369
  setUnknown(control) {
346
370
  control._unknown = true;
347
371
  }
@@ -357,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
357
381
  providedIn: 'root'
358
382
  }]
359
383
  }] });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFvQnRHLENBQUM7QUFLRixNQUFNLE9BQU8sV0FBVztJQUV0QixHQUFHLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsS0FBVSxFQUFFLFdBQXlCLEVBQUUsWUFBMkI7UUFFMUcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxjQUFjO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxXQUF5QjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsV0FBeUI7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxLQUFVLEVBQUUsV0FBeUIsRUFBRSxZQUEyQjtRQUM5RyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxLQUFVLEVBQUUsV0FBeUIsRUFBRSxZQUEyQjtRQUM3RyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsS0FBYSxFQUFFLEtBQVUsRUFBRSxXQUF5QixFQUFFLFlBQTJCO1FBQzVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCLEVBQUUsSUFBVSxFQUFFLEtBQWE7UUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQXdCLEVBQUUsSUFBVSxFQUFFLEtBQWE7UUFDeEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUUxRCxNQUFNLE9BQU8sR0FBb0IsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsS0FBYTtRQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUU3RCxNQUFNLE9BQU8sR0FBb0IsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsV0FBeUI7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFELE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBd0I7UUFDekMsTUFBTSxPQUFPLEdBQWlELEVBQUUsQ0FBQztRQUVqRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksT0FBTyxZQUFZLFNBQVMsSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FDSCxPQUF3QixFQUFFLEtBQVUsRUFBRSxPQUFzQjtRQUU1RCxNQUFNLGNBQWMsR0FBRztZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxPQUFPLEVBQUUsUUFBUTtnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1lBQ2hDLElBQUksT0FBTyxFQUFFLFNBQVM7Z0JBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBRUYsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUNwRCxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFdEMsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDbkMsSUFBSSxZQUFZLElBQUksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxpQ0FBaUMsT0FBTyxPQUFPLENBQUMsS0FBSyxrQkFBa0IsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUU1RixJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO29CQUNqRCxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7Z0JBQzVELE9BQU87WUFDVCxDQUFDO1lBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFDSSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO3FCQUNJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM1QixPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO3FCQUNJLENBQUM7b0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3RDLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ2pCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQ0ksSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QyxNQUFNLFVBQVUsR0FBRyxPQUFjLENBQUM7Z0JBQ2xDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9DLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDL0MsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQ0ksQ0FBQztZQUNKLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQXdCO1FBQzlCLE1BQU0sSUFBSSxHQUF3QixFQUFFLENBQUM7UUFDckMsSUFBSSxPQUFPLEdBQTJCLE9BQU8sQ0FBQztRQUU5QyxPQUFPLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QixNQUFNLE1BQU0sR0FBUSxPQUFPLENBQUMsTUFBTSxDQUFDO1lBRW5DLElBQUksTUFBTSxZQUFZLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixDQUFDO2lCQUFNLElBQUksTUFBTSxZQUFZLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWM7UUFDdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBaUI7WUFDakMsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxDQUFDLElBQVUsRUFBRSxLQUFVLEVBQUUsV0FBeUIsRUFBVyxFQUFFLENBQ2xFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQztZQUU3RCxHQUFHLEVBQUUsQ0FBQyxJQUFVLEVBQUUsV0FBeUIsRUFBK0IsRUFBRSxDQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO1lBRXhDLE1BQU0sRUFBRSxDQUFDLElBQVUsRUFBRSxXQUF5QixFQUFpQyxFQUFFLENBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7WUFFM0MsT0FBTyxFQUFFLENBQUMsSUFBVSxFQUFFLEtBQVUsRUFBRSxXQUF5QixFQUFXLEVBQUUsQ0FDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDO1lBRWpFLE1BQU0sRUFBRSxDQUFDLElBQVUsRUFBRSxLQUFVLEVBQUUsV0FBeUIsRUFBVyxFQUFFLENBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQztZQUVoRSxNQUFNLEVBQUUsQ0FBQyxJQUFVLEVBQUUsS0FBYSxFQUFFLEtBQVUsRUFBRSxXQUF5QixFQUFXLEVBQUUsQ0FDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQztZQUV2RSxNQUFNLEVBQUUsQ0FBQyxJQUFVLEVBQUUsS0FBYSxFQUFXLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUVyQyxNQUFNLEVBQUUsQ0FBQyxJQUFVLEVBQUUsS0FBYSxFQUFXLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUVyQyxRQUFRLEVBQUUsQ0FBQyxJQUFVLEVBQUUsS0FBYSxFQUFXLEVBQUUsQ0FDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVMsQ0FDZixPQUF3QixFQUN4QixJQUFVLEVBQ1YsT0FBcUI7UUFFckIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUMvQixJQUFJLE9BQU8sRUFBRSxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFTLEVBQUU7WUFDdkMsSUFBSSxPQUFPLEVBQUUsU0FBUztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtRQUN6RSxDQUFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWlCLEVBQW1CLEVBQUU7WUFDM0QsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDYixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxTQUFTLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFVLEVBQXVCLEVBQUU7WUFDeEQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtvQkFDcEQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDL0IsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsT0FBTyxHQUFHLENBQUM7Z0JBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxPQUFPLEdBQTJCLE9BQU8sQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUU1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksU0FBUyxDQUFDO2dCQUN2QyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDN0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUVoQixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWhFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPLEtBQUssQ0FBQywrQkFBK0IsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsU0FBUztZQUNYLENBQUM7aUJBQ0ksSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BDLE9BQU8sS0FBSyxDQUFDLGtDQUFrQyxjQUFjLEVBQUUsVUFBVSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3ZHLENBQUM7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUN0QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFNBQVMsS0FBSyw4QkFBOEIsY0FBYyxFQUFFLGVBQWUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ25HLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE9BQU8sR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTlCLENBQUM7aUJBQU0sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFFdkMsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sR0FBRyxDQUFDLE9BQU8sWUFBWSxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFDOUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO3dCQUN0QixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDbkIsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUN2QixPQUFPLEdBQUcsQ0FBQyxPQUFPLFlBQVksU0FBUyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxLQUFLLENBQUMsa0NBQWtDLGNBQWMsRUFBRSxVQUFVLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDdkcsQ0FBQztnQkFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNmLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQ3hDLE9BQU8sR0FBRyxVQUFVLENBQUM7b0JBQ3ZCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMscUJBQXFCLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO3dCQUN2RSxPQUFPLFNBQVMsQ0FBQztvQkFDbkIsQ0FBQztnQkFDSCxDQUFDO1lBRUgsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLHlCQUF5QixPQUFPLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE9BQU8sSUFBSSxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFVO1FBQ3pCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLEtBQTRCLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sRUFBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFVO1FBQ3hCLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxlQUFlLENBQUMsU0FBb0IsRUFBRSxLQUFhLEVBQUUsS0FBVSxFQUFFLE9BQXNCO1FBQzdGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFvQixFQUFFLEtBQWE7UUFDekQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTTtZQUFFLEtBQUssQ0FBQztRQUNuRCxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFvQjtRQUUxQyxNQUFNLFVBQVUsR0FBRyxTQUFnQixDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUM7WUFDL0QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDekIsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFVO1FBQ3ZDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFZO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxVQUFVLENBQUMsT0FBWTtRQUM3QixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQVk7UUFDNUIsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDOUMsQ0FBQzt3R0FyYVUsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4vcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgdHlwZSBQYXRoID0gc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuXHJcbnR5cGUgQ29udHJvbFR5cGUgPSAnYXJyYXknIHwgJ2dyb3VwJyB8ICdjb250cm9sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hPcHRpb25zIHtcclxuICBlbWl0RXZlbnQ/OiBib29sZWFuO1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRlVHlwZT86IGJvb2xlYW47XHJcbiAgZmFsbGJhY2tWYWx1ZT86IGFueTtcclxuICBzdHJpY3Q6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aE9wdGlvbnMge1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIGNyZWF0ZT86IGJvb2xlYW47XHJcbiAgZXhwZWN0ZWQ/OiBDb250cm9sVHlwZTtcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgc2V0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcblxyXG4gICAgY29uc3QgY3VycmVudENvbnRyb2wgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGNyZWF0ZTogdHJ1ZSB9KTtcclxuXHJcbiAgICBpZiAoIWN1cnJlbnRDb250cm9sKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5wYXRjaChjdXJyZW50Q29udHJvbCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYW55IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q29udHJvbChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcbiAgICByZXR1cm4gcmVzdWx0Py52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcmVwZW5kKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGV4cGVjdGVkOiBcImFycmF5XCIsIGNyZWF0ZTogdHJ1ZSB9KTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0SW50b0FycmF5KGZvcm1BcnJheSwgMCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhcHBlbmQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zID8/IHsgZXhwZWN0ZWQ6IFwiYXJyYXlcIiwgY3JlYXRlOiB0cnVlIH0pO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnNlcnRJbnRvQXJyYXkoZm9ybUFycmF5LCBmb3JtQXJyYXkubGVuZ3RoLCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTsgICAgICBcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGluc2VydChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMgPz8geyBleHBlY3RlZDogXCJhcnJheVwiLCBjcmVhdGU6IHRydWUgfSk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc2VydEludG9BcnJheShmb3JtQXJyYXksIGluZGV4LCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTsgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZUZyb21BcnJheShmb3JtQXJyYXksIGluZGV4KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG1vdmVVcChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgpO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBpZiAoaW5kZXggPD0gMCB8fCBpbmRleCA+PSBmb3JtQXJyYXkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBmb3JtQXJyYXkuYXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4IC0gMSwgY29udHJvbCk7XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtb3ZlRG93bihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgpO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGZvcm1BcnJheS5sZW5ndGggLSAxKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBmb3JtQXJyYXkuYXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4ICsgMSwgY29udHJvbCk7XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHN0YXR1cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpIDogRm9ybUNvbnRyb2xTdGF0dXMgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHJlc3VsdD8uc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW52YWxpZENvbnRyb2xzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgcGF0aDogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfVtdIHtcclxuICAgIGNvbnN0IGludmFsaWQ6IHsgcGF0aDogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfVtdID0gW107XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xyXG4gICAgICBpbnZhbGlkLnB1c2goeyBwYXRoOiB0aGlzLmdldFBhdGgoY29udHJvbCkuam9pbihcIi5cIiksIGNvbnRyb2wgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IE9iamVjdC52YWx1ZXMoY29udHJvbC5jb250cm9scyk7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICBpbnZhbGlkLnB1c2goLi4udGhpcy5nZXRJbnZhbGlkQ29udHJvbHMoY2hpbGQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2goXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgICB2YWxpZGF0ZVR5cGU6IGZhbHNlLFxyXG4gICAgICBmYWxsYmFja1ZhbHVlOiBudWxsLFxyXG4gICAgICBzdHJpY3Q6IHRydWVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICAgIGNvbnNvbGUud2FybihgW3BhdGNoQ29udHJvbF0gJHttZXNzYWdlfWApXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyBlbWl0RXZlbnQsIHZhbGlkYXRlVHlwZSwgZmFsbGJhY2tWYWx1ZSwgc3RyaWN0IH1cclxuICAgICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xyXG4gICAgICBpZiAodmFsaWRhdGVUeXBlICYmIHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIGNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgICBpZiAoZmFsbGJhY2tWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbGxiYWNrVmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlcnJvcignSW52YWxpZCB2YWx1ZSB0eXBlIGFuZCBubyBmYWxsYmFjayB2YWx1ZSBwcm92aWRlZC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudCB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5hc09iamVjdCh2YWx1ZSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRWYWx1ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHNba2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmNvbnRyb2xzW2tleV0sIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghc3RyaWN0KSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sRnJvbVZhbHVlKHZhbHVlW2tleV0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRVbmtub3duKG5ld0NvbnRyb2wpO1xyXG4gICAgICAgICAgY29udHJvbC5hZGRDb250cm9sKGtleSwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoKG5ld0NvbnRyb2wsIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdhcm4oYEtleSBcIiR7a2V5fVwiIG5vdCBmb3VuZCBpbiB0aGUgRm9ybUdyb3VwLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChrZXkpO1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29udHJvbCkge1xyXG4gICAgICAgICAgICBjaGlsZENvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pOyAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuYXNBcnJheSh2YWx1ZSk7XHJcbiAgICAgIHdoaWxlIChjb250cm9sLmxlbmd0aCA8IGN1cnJlbnRWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBhbnlDb250cm9sID0gY29udHJvbCBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gY3VycmVudFZhbHVlW2NvbnRyb2wubGVuZ3RoXTtcclxuICAgICAgICBpZiAodHlwZW9mIChhbnlDb250cm9sKS5hZGRJdGVtID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBhbnlDb250cm9sLmFkZEl0ZW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udHJvbC5wdXNoKHRoaXMuY3JlYXRlQ29udHJvbEZyb21WYWx1ZShpdGVtVG9BZGQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKGNvbnRyb2wubGVuZ3RoID4gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRyb2wucmVtb3ZlQXQoY29udHJvbC5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogKHN0cmluZyB8IG51bWJlcilbXSB7XHJcbiAgICBjb25zdCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XHJcbiAgICBsZXQgY3VycmVudDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGNvbnRyb2w7XHJcblxyXG4gICAgd2hpbGUgKGN1cnJlbnQ/LnBhcmVudCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQ6IGFueSA9IGN1cnJlbnQucGFyZW50O1xyXG5cclxuICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50LmNvbnRyb2xzLmluZGV4T2YoY3VycmVudCk7XHJcbiAgICAgICAgcGF0aC51bnNoaWZ0KGluZGV4KTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhwYXJlbnQuY29udHJvbHMpLmZpbmQoayA9PiBwYXJlbnQuZ2V0KGspID09PSBjdXJyZW50KTtcclxuICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KGZvcm1Hcm91cDogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBpZiAoIShmb3JtR3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjb3BlIGlzIG5vdCBhIEZvcm1Hcm91cFwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhdGNoT3B0aW9uczogUGF0Y2hPcHRpb25zID0ge1xyXG4gICAgICBzdHJpY3Q6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNldDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5zZXQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBnZXQ6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkID0+XHJcbiAgICAgICAgdGhpcy5nZXQoZm9ybUdyb3VwLCBwYXRoLCBwYXRoT3B0aW9ucyksXHJcblxyXG4gICAgICBzdGF0dXM6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogRm9ybUNvbnRyb2xTdGF0dXMgfCB1bmRlZmluZWQgPT5cclxuICAgICAgICB0aGlzLnN0YXR1cyhmb3JtR3JvdXAsIHBhdGgsIHBhdGhPcHRpb25zKSxcclxuXHJcbiAgICAgIHByZXBlbmQ6IChwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMucHJlcGVuZChmb3JtR3JvdXAsIHBhdGgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIGFwcGVuZDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5hcHBlbmQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBpbnNlcnQ6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMuaW5zZXJ0KGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIHJlbW92ZTogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5yZW1vdmUoZm9ybUdyb3VwLCBwYXRoLCBpbmRleCksXHJcblxyXG4gICAgICBtb3ZlVXA6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZVVwKGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgpLFxyXG5cclxuICAgICAgbW92ZURvd246IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZURvd24oZm9ybUdyb3VwLCBwYXRoLCBpbmRleClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIHBhdGg6IFBhdGgsXHJcbiAgICBvcHRpb25zPzogUGF0aE9wdGlvbnNcclxuICApOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKSBjb25zb2xlLndhcm4oYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXJyb3IgPSAobWVzc2FnZTogc3RyaW5nKTogbmV2ZXIgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKSB0aHJvdyBuZXcgRXJyb3IoYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYXBwbHlQYXRoXSAke21lc3NhZ2V9YCk7IC8vIGZhbGxiYWNrIGRlZmF1bHQgYmVoYXZpb3JcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3JlYXRlQ29udHJvbCA9ICh0eXBlOiBDb250cm9sVHlwZSk6IEFic3RyYWN0Q29udHJvbCA9PiB7XHJcbiAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2FycmF5JzogcmV0dXJuIG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzogcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIGNhc2UgJ2NvbnRyb2wnOiBkZWZhdWx0OiByZXR1cm4gbmV3IEZvcm1Db250cm9sKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG5vcm1hbGl6ZVBhdGggPSAocGF0aDogUGF0aCk6IChzdHJpbmcgfCBudW1iZXIpW10gPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlZHVjZTwoc3RyaW5nIHwgbnVtYmVyKVtdPigoYWNjLCBwYXJ0KSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGFjYy5wdXNoKC4uLnBhcnQuc3BsaXQoJy4nKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhY2MucHVzaChwYXJ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbcGF0aF07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplUGF0aChwYXRoKTtcclxuICAgIGxldCBjdXJyZW50OiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbDtcclxuICAgIGNvbnN0IGNyZWF0ZVBhdGggPSBvcHRpb25zPy5jcmVhdGUgPz8gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzZWdtZW50ID0gc2VnbWVudHNbaV07XHJcbiAgICAgIGNvbnN0IGlzTGVhZiA9IGkgPT09IHNlZ21lbnRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIGNvbnN0IG5leHRUeXBlOiBDb250cm9sVHlwZSA9XHJcbiAgICAgICAgaXNMZWFmID8gKG9wdGlvbnM/LmV4cGVjdGVkID8/ICdjb250cm9sJylcclxuICAgICAgICAgIDogdHlwZW9mIHNlZ21lbnRzW2kgKyAxXSA9PT0gJ251bWJlcicgPyAnYXJyYXknXHJcbiAgICAgICAgICAgIDogJ2dyb3VwJztcclxuXHJcbiAgICAgIGNvbnN0IGdldEN1cnJlbnRQYXRoID0gKCkgPT4gc2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKTtcclxuXHJcbiAgICAgIGlmICghY3VycmVudCkge1xyXG4gICAgICAgIHJldHVybiBlcnJvcihgQ29udHJvbCBpcyBudWxsIGF0IHNlZ21lbnQgXCIke2dldEN1cnJlbnRQYXRoKCl9XCJgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFzZWdtZW50KSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcclxuICAgICAgICAgIHJldHVybiBlcnJvcihgRXhwZWN0ZWQgRm9ybUFycmF5IGF0IHNlZ21lbnQgWyR7Z2V0Q3VycmVudFBhdGgoKX1dLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpbmRleCA9IHNlZ21lbnQ7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjdXJyZW50Lmxlbmd0aCkge1xyXG4gICAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBhdCBwYXRoIFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiIChsZW5ndGggPSAke2N1cnJlbnQubGVuZ3RofSlgKTtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5hdChpbmRleCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3BhcmVudCcpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSAoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgJiYgY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgPyBjdXJyZW50LmdldChzZWdtZW50KVxyXG4gICAgICAgICAgICA6IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3Jvb3QnKSB7XHJcbiAgICAgICAgICBjdXJyZW50ID0gKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiYgY3VycmVudC5nZXQoc2VnbWVudCkpXHJcbiAgICAgICAgICAgID8gY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgOiBjdXJyZW50LnJvb3Q7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IoYEV4cGVjdGVkIEZvcm1Hcm91cCBhdCBzZWdtZW50IFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudC5nZXQoc2VnbWVudCkpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmdldChzZWdtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNyZWF0ZVBhdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IGNyZWF0ZUNvbnRyb2wobmV4dFR5cGUpO1xyXG4gICAgICAgICAgICBjdXJyZW50LmFkZENvbnRyb2woc2VnbWVudCwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdDb250cm9sO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2FybihgQ29udHJvbCB3aXRoIGtleSBcIiR7Z2V0Q3VycmVudFBhdGgoKX1cIiBub3QgZm91bmQgaW4gRm9ybUdyb3VwLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gICAgICBcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yKGBJbnZhbGlkIHNlZ21lbnQgdHlwZTogJHt0eXBlb2Ygc2VnbWVudH1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjdXJyZW50ID8/IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNPYmplY3QodmFsdWU6IGFueSk6IG9iamVjdCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc0FycmF5KHZhbHVlOiBhbnkpOiBBcnJheTxhbnk+IHtcclxuICAgIGlmICh2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluc2VydEludG9BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSwgb3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXRlbVRvQWRkID0gdGhpcy5jcmVhdGVBcnJheUl0ZW0oZm9ybUFycmF5KTtcclxuICAgIHRoaXMucGF0Y2goaXRlbVRvQWRkLCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4LCBpdGVtVG9BZGQpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUZyb21BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDw9IDAgfHwgaW5kZXggPj0gZm9ybUFycmF5Lmxlbmd0aCkgZmFsc2U7XHJcbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFycmF5SXRlbShmb3JtQXJyYXk6IEZvcm1BcnJheSk6IEZvcm1Hcm91cFxyXG4gIHtcclxuICAgIGNvbnN0IGFueUNvbnRyb2wgPSBmb3JtQXJyYXkgYXMgYW55O1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKHR5cGVvZiAoYW55Q29udHJvbCkuY3JlYXRlSXRlbSA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgPyBhbnlDb250cm9sLmNyZWF0ZUl0ZW0oKVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udHJvbEZyb21WYWx1ZSh2YWx1ZTogYW55KTogQWJzdHJhY3RDb250cm9sIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KHRoaXMuY3JlYXRlQ29udHJvbEZyb21BcnJheSh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb250cm9sRnJvbUFycmF5KGFycmF5OiBhbnlbXSk6IEFic3RyYWN0Q29udHJvbFtdIHtcclxuICAgIHJldHVybiBhcnJheS5tYXAoaXRlbSA9PiB0aGlzLmNyZWF0ZUNvbnRyb2xGcm9tVmFsdWUoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVbmtub3duKGNvbnRyb2w6IGFueSkge1xyXG4gICAgY29udHJvbC5fdW5rbm93biA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVW5rbm93bihjb250cm9sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb250cm9sICYmIGNvbnRyb2wuX3Vua25vd24gPT09IHRydWU7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFvQnRHLENBQUM7QUFLRixNQUFNLE9BQU8sV0FBVztJQUV0QixHQUFHLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsS0FBVSxFQUFFLFdBQXlCLEVBQUUsWUFBMkI7UUFFMUcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxjQUFjO1lBQ2pCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUF3QixFQUFFLElBQVUsRUFBRSxXQUF5QjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDM0QsT0FBTyxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBd0IsRUFBRSxJQUFVLEVBQUUsV0FBeUI7UUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUF3QixF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ZSc7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4vcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xTdGF0dXMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgdHlwZSBQYXRoID0gc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuXHJcbnR5cGUgQ29udHJvbFR5cGUgPSAnYXJyYXknIHwgJ2dyb3VwJyB8ICdjb250cm9sJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hPcHRpb25zIHtcclxuICBlbWl0RXZlbnQ/OiBib29sZWFuO1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRlVHlwZT86IGJvb2xlYW47XHJcbiAgZmFsbGJhY2tWYWx1ZT86IGFueTtcclxuICBzdHJpY3Q6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aE9wdGlvbnMge1xyXG4gIGVtaXRFcnJvcj86IGJvb2xlYW47XHJcbiAgZW1pdFdhcm4/OiBib29sZWFuO1xyXG4gIGNyZWF0ZT86IGJvb2xlYW47XHJcbiAgZXhwZWN0ZWQ/OiBDb250cm9sVHlwZTtcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1TZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgc2V0KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcblxyXG4gICAgY29uc3QgY3VycmVudENvbnRyb2wgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGNyZWF0ZTogdHJ1ZSB9KTtcclxuXHJcbiAgICBpZiAoIWN1cnJlbnRDb250cm9sKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5wYXRjaChjdXJyZW50Q29udHJvbCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYW55IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0Q29udHJvbChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcbiAgICByZXR1cm4gcmVzdWx0Py52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcmVwZW5kKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgdmFsdWU6IGFueSwgcGF0aE9wdGlvbnM/OiBQYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zPzogUGF0Y2hPcHRpb25zKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmFwcGx5UGF0aChjb250cm9sLCBwYXRoLCBwYXRoT3B0aW9ucyA/PyB7IGV4cGVjdGVkOiBcImFycmF5XCIsIGNyZWF0ZTogdHJ1ZSB9KTtcclxuICAgIGlmIChmb3JtQXJyYXkgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0SW50b0FycmF5KGZvcm1BcnJheSwgMCwgdmFsdWUsIHBhdGNoT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhcHBlbmQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zLCBwYXRjaE9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgsIHBhdGhPcHRpb25zID8/IHsgZXhwZWN0ZWQ6IFwiYXJyYXlcIiwgY3JlYXRlOiB0cnVlIH0pO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnNlcnRJbnRvQXJyYXkoZm9ybUFycmF5LCBmb3JtQXJyYXkubGVuZ3RoLCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTsgICAgICBcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGluc2VydChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMgPz8geyBleHBlY3RlZDogXCJhcnJheVwiLCBjcmVhdGU6IHRydWUgfSk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc2VydEludG9BcnJheShmb3JtQXJyYXksIGluZGV4LCB2YWx1ZSwgcGF0Y2hPcHRpb25zKTsgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcGF0aDogUGF0aCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCk7XHJcbiAgICBpZiAoZm9ybUFycmF5IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZUZyb21BcnJheShmb3JtQXJyYXksIGluZGV4KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG1vdmVVcChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgpO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBpZiAoaW5kZXggPD0gMCB8fCBpbmRleCA+PSBmb3JtQXJyYXkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBmb3JtQXJyYXkuYXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4IC0gMSwgY29udHJvbCk7XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtb3ZlRG93bihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuYXBwbHlQYXRoKGNvbnRyb2wsIHBhdGgpO1xyXG4gICAgaWYgKGZvcm1BcnJheSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IGZvcm1BcnJheS5sZW5ndGggLSAxKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBmb3JtQXJyYXkuYXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4ICsgMSwgY29udHJvbCk7XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHN0YXR1cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg6IFBhdGgsIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpIDogRm9ybUNvbnRyb2xTdGF0dXMgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5hcHBseVBhdGgoY29udHJvbCwgcGF0aCwgcGF0aE9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHJlc3VsdD8uc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgZXJyb3JzKGNvbnRyb2xzOiBJdGVyYWJsZTxBYnN0cmFjdENvbnRyb2w+KSB7XHJcbiAgICBsZXQgZXJyb3JzID0gMDtcclxuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xyXG4gICAgICBlcnJvcnMgKz0gdGhpcy5jb2xsZWN0RXJyb3JzKGNvbnRyb2wpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIGdldEludmFsaWRDb250cm9scyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IHBhdGg6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSB7XHJcbiAgICBjb25zdCBpbnZhbGlkOiB7IHBhdGg6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sIH1bXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb250cm9sLmRpc2FibGVkKVxyXG4gICAgICByZXR1cm4gaW52YWxpZDtcclxuXHJcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gT2JqZWN0LnZhbHVlcyhjb250cm9sLmNvbnRyb2xzKTtcclxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGludmFsaWQucHVzaCguLi50aGlzLmdldEludmFsaWRDb250cm9scyhjaGlsZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgaW52YWxpZC5wdXNoKHsgcGF0aDogdGhpcy5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpLCBjb250cm9sIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2goXHJcbiAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXRjaE9wdGlvbnMpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgICB2YWxpZGF0ZVR5cGU6IGZhbHNlLFxyXG4gICAgICBmYWxsYmFja1ZhbHVlOiBudWxsLFxyXG4gICAgICBzdHJpY3Q6IHRydWVcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICAgIGNvbnNvbGUud2FybihgW3BhdGNoQ29udHJvbF0gJHttZXNzYWdlfWApXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyBlbWl0RXZlbnQsIHZhbGlkYXRlVHlwZSwgZmFsbGJhY2tWYWx1ZSwgc3RyaWN0IH1cclxuICAgICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xyXG4gICAgICBpZiAodmFsaWRhdGVUeXBlICYmIHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIGNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgICBpZiAoZmFsbGJhY2tWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbGxiYWNrVmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlcnJvcignSW52YWxpZCB2YWx1ZSB0eXBlIGFuZCBubyBmYWxsYmFjayB2YWx1ZSBwcm92aWRlZC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudCB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5hc09iamVjdCh2YWx1ZSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRWYWx1ZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHNba2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmNvbnRyb2xzW2tleV0sIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghc3RyaWN0KSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5jcmVhdGVDb250cm9sRnJvbVZhbHVlKHZhbHVlW2tleV0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRVbmtub3duKG5ld0NvbnRyb2wpO1xyXG4gICAgICAgICAgY29udHJvbC5hZGRDb250cm9sKGtleSwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICB0aGlzLnBhdGNoKG5ld0NvbnRyb2wsIHZhbHVlW2tleV0sIG9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHdhcm4oYEtleSBcIiR7a2V5fVwiIG5vdCBmb3VuZCBpbiB0aGUgRm9ybUdyb3VwLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChrZXkpO1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29udHJvbCkge1xyXG4gICAgICAgICAgICBjaGlsZENvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pOyAgICAgXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuYXNBcnJheSh2YWx1ZSk7XHJcbiAgICAgIHdoaWxlIChjb250cm9sLmxlbmd0aCA8IGN1cnJlbnRWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBhbnlDb250cm9sID0gY29udHJvbCBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgaXRlbVRvQWRkID0gY3VycmVudFZhbHVlW2NvbnRyb2wubGVuZ3RoXTtcclxuICAgICAgICBpZiAodHlwZW9mIChhbnlDb250cm9sKS5hZGRJdGVtID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBhbnlDb250cm9sLmFkZEl0ZW0oKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udHJvbC5wdXNoKHRoaXMuY3JlYXRlQ29udHJvbEZyb21WYWx1ZShpdGVtVG9BZGQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKGNvbnRyb2wubGVuZ3RoID4gY3VycmVudFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnRyb2wucmVtb3ZlQXQoY29udHJvbC5sZW5ndGggLSAxKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50VmFsdWUuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXRjaChjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhdGgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogKHN0cmluZyB8IG51bWJlcilbXSB7XHJcbiAgICBjb25zdCBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW107XHJcbiAgICBsZXQgY3VycmVudDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGNvbnRyb2w7XHJcblxyXG4gICAgd2hpbGUgKGN1cnJlbnQ/LnBhcmVudCkge1xyXG4gICAgICBjb25zdCBwYXJlbnQ6IGFueSA9IGN1cnJlbnQucGFyZW50O1xyXG5cclxuICAgICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGFyZW50LmNvbnRyb2xzLmluZGV4T2YoY3VycmVudCk7XHJcbiAgICAgICAgcGF0aC51bnNoaWZ0KGluZGV4KTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhwYXJlbnQuY29udHJvbHMpLmZpbmQoayA9PiBwYXJlbnQuZ2V0KGspID09PSBjdXJyZW50KTtcclxuICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICBwYXRoLnVuc2hpZnQoa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0KGZvcm1Hcm91cDogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICBpZiAoIShmb3JtR3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjb3BlIGlzIG5vdCBhIEZvcm1Hcm91cFwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhdGNoT3B0aW9uczogUGF0Y2hPcHRpb25zID0ge1xyXG4gICAgICBzdHJpY3Q6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNldDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5zZXQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBnZXQ6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkID0+XHJcbiAgICAgICAgdGhpcy5nZXQoZm9ybUdyb3VwLCBwYXRoLCBwYXRoT3B0aW9ucyksXHJcblxyXG4gICAgICBzdGF0dXM6IChwYXRoOiBQYXRoLCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogRm9ybUNvbnRyb2xTdGF0dXMgfCB1bmRlZmluZWQgPT5cclxuICAgICAgICB0aGlzLnN0YXR1cyhmb3JtR3JvdXAsIHBhdGgsIHBhdGhPcHRpb25zKSxcclxuXHJcbiAgICAgIHByZXBlbmQ6IChwYXRoOiBQYXRoLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMucHJlcGVuZChmb3JtR3JvdXAsIHBhdGgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIGFwcGVuZDogKHBhdGg6IFBhdGgsIHZhbHVlOiBhbnksIHBhdGhPcHRpb25zPzogUGF0aE9wdGlvbnMpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5hcHBlbmQoZm9ybUdyb3VwLCBwYXRoLCB2YWx1ZSwgcGF0aE9wdGlvbnMsIHBhdGNoT3B0aW9ucyksXHJcblxyXG4gICAgICBpbnNlcnQ6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55LCBwYXRoT3B0aW9ucz86IFBhdGhPcHRpb25zKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMuaW5zZXJ0KGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgsIHZhbHVlLCBwYXRoT3B0aW9ucywgcGF0Y2hPcHRpb25zKSxcclxuXHJcbiAgICAgIHJlbW92ZTogKHBhdGg6IFBhdGgsIGluZGV4OiBudW1iZXIpOiBib29sZWFuID0+XHJcbiAgICAgICAgdGhpcy5yZW1vdmUoZm9ybUdyb3VwLCBwYXRoLCBpbmRleCksXHJcblxyXG4gICAgICBtb3ZlVXA6IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZVVwKGZvcm1Hcm91cCwgcGF0aCwgaW5kZXgpLFxyXG5cclxuICAgICAgbW92ZURvd246IChwYXRoOiBQYXRoLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PlxyXG4gICAgICAgIHRoaXMubW92ZURvd24oZm9ybUdyb3VwLCBwYXRoLCBpbmRleClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIHBhdGg6IFBhdGgsXHJcbiAgICBvcHRpb25zPzogUGF0aE9wdGlvbnNcclxuICApOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKSBjb25zb2xlLndhcm4oYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXJyb3IgPSAobWVzc2FnZTogc3RyaW5nKTogbmV2ZXIgPT4ge1xyXG4gICAgICBpZiAob3B0aW9ucz8uZW1pdEVycm9yKSB0aHJvdyBuZXcgRXJyb3IoYFthcHBseVBhdGhdICR7bWVzc2FnZX1gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbYXBwbHlQYXRoXSAke21lc3NhZ2V9YCk7IC8vIGZhbGxiYWNrIGRlZmF1bHQgYmVoYXZpb3JcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3JlYXRlQ29udHJvbCA9ICh0eXBlOiBDb250cm9sVHlwZSk6IEFic3RyYWN0Q29udHJvbCA9PiB7XHJcbiAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2FycmF5JzogcmV0dXJuIG5ldyBGb3JtQXJyYXkoW10pO1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzogcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIGNhc2UgJ2NvbnRyb2wnOiBkZWZhdWx0OiByZXR1cm4gbmV3IEZvcm1Db250cm9sKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG5vcm1hbGl6ZVBhdGggPSAocGF0aDogUGF0aCk6IChzdHJpbmcgfCBudW1iZXIpW10gPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlZHVjZTwoc3RyaW5nIHwgbnVtYmVyKVtdPigoYWNjLCBwYXJ0KSA9PiB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGFjYy5wdXNoKC4uLnBhcnQuc3BsaXQoJy4nKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhY2MucHVzaChwYXJ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwgW10pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbcGF0aF07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNlZ21lbnRzID0gbm9ybWFsaXplUGF0aChwYXRoKTtcclxuICAgIGxldCBjdXJyZW50OiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbDtcclxuICAgIGNvbnN0IGNyZWF0ZVBhdGggPSBvcHRpb25zPy5jcmVhdGUgPz8gZmFsc2U7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzZWdtZW50ID0gc2VnbWVudHNbaV07XHJcbiAgICAgIGNvbnN0IGlzTGVhZiA9IGkgPT09IHNlZ21lbnRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIGNvbnN0IG5leHRUeXBlOiBDb250cm9sVHlwZSA9XHJcbiAgICAgICAgaXNMZWFmID8gKG9wdGlvbnM/LmV4cGVjdGVkID8/ICdjb250cm9sJylcclxuICAgICAgICAgIDogdHlwZW9mIHNlZ21lbnRzW2kgKyAxXSA9PT0gJ251bWJlcicgPyAnYXJyYXknXHJcbiAgICAgICAgICAgIDogJ2dyb3VwJztcclxuXHJcbiAgICAgIGNvbnN0IGdldEN1cnJlbnRQYXRoID0gKCkgPT4gc2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKTtcclxuXHJcbiAgICAgIGlmICghY3VycmVudCkge1xyXG4gICAgICAgIHJldHVybiBlcnJvcihgQ29udHJvbCBpcyBudWxsIGF0IHNlZ21lbnQgXCIke2dldEN1cnJlbnRQYXRoKCl9XCJgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFzZWdtZW50KSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1BcnJheSkpIHtcclxuICAgICAgICAgIHJldHVybiBlcnJvcihgRXhwZWN0ZWQgRm9ybUFycmF5IGF0IHNlZ21lbnQgWyR7Z2V0Q3VycmVudFBhdGgoKX1dLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpbmRleCA9IHNlZ21lbnQ7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBjdXJyZW50Lmxlbmd0aCkge1xyXG4gICAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBhdCBwYXRoIFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiIChsZW5ndGggPSAke2N1cnJlbnQubGVuZ3RofSlgKTtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5hdChpbmRleCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJykge1xyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3BhcmVudCcpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSAoY3VycmVudCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkgJiYgY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgPyBjdXJyZW50LmdldChzZWdtZW50KVxyXG4gICAgICAgICAgICA6IGN1cnJlbnQucGFyZW50O1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2VnbWVudCA9PT0gJ3Jvb3QnKSB7XHJcbiAgICAgICAgICBjdXJyZW50ID0gKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXAgJiYgY3VycmVudC5nZXQoc2VnbWVudCkpXHJcbiAgICAgICAgICAgID8gY3VycmVudC5nZXQoc2VnbWVudClcclxuICAgICAgICAgICAgOiBjdXJyZW50LnJvb3Q7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghKGN1cnJlbnQgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IoYEV4cGVjdGVkIEZvcm1Hcm91cCBhdCBzZWdtZW50IFwiJHtnZXRDdXJyZW50UGF0aCgpfVwiLCBnb3QgJHtjdXJyZW50LmNvbnN0cnVjdG9yLm5hbWV9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudC5nZXQoc2VnbWVudCkpIHtcclxuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmdldChzZWdtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNyZWF0ZVBhdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IGNyZWF0ZUNvbnRyb2wobmV4dFR5cGUpO1xyXG4gICAgICAgICAgICBjdXJyZW50LmFkZENvbnRyb2woc2VnbWVudCwgbmV3Q29udHJvbCk7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdDb250cm9sO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgd2FybihgQ29udHJvbCB3aXRoIGtleSBcIiR7Z2V0Q3VycmVudFBhdGgoKX1cIiBub3QgZm91bmQgaW4gRm9ybUdyb3VwLmApO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gICAgICBcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yKGBJbnZhbGlkIHNlZ21lbnQgdHlwZTogJHt0eXBlb2Ygc2VnbWVudH1gKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjdXJyZW50ID8/IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNPYmplY3QodmFsdWU6IGFueSk6IG9iamVjdCB7XHJcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc0FycmF5KHZhbHVlOiBhbnkpOiBBcnJheTxhbnk+IHtcclxuICAgIGlmICh2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluc2VydEludG9BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSwgb3B0aW9ucz86IFBhdGNoT3B0aW9ucyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaXRlbVRvQWRkID0gdGhpcy5jcmVhdGVBcnJheUl0ZW0oZm9ybUFycmF5KTtcclxuICAgIHRoaXMucGF0Y2goaXRlbVRvQWRkLCB2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICBmb3JtQXJyYXkuaW5zZXJ0KGluZGV4LCBpdGVtVG9BZGQpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUZyb21BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDw9IDAgfHwgaW5kZXggPj0gZm9ybUFycmF5Lmxlbmd0aCkgZmFsc2U7XHJcbiAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFycmF5SXRlbShmb3JtQXJyYXk6IEZvcm1BcnJheSk6IEZvcm1Hcm91cFxyXG4gIHtcclxuICAgIGNvbnN0IGFueUNvbnRyb2wgPSBmb3JtQXJyYXkgYXMgYW55O1xyXG4gICAgY29uc3QgZm9ybUdyb3VwID0gKHR5cGVvZiAoYW55Q29udHJvbCkuY3JlYXRlSXRlbSA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgPyBhbnlDb250cm9sLmNyZWF0ZUl0ZW0oKVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udHJvbEZyb21WYWx1ZSh2YWx1ZTogYW55KTogQWJzdHJhY3RDb250cm9sIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRm9ybUFycmF5KHRoaXMuY3JlYXRlQ29udHJvbEZyb21BcnJheSh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb250cm9sRnJvbUFycmF5KGFycmF5OiBhbnlbXSk6IEFic3RyYWN0Q29udHJvbFtdIHtcclxuICAgIHJldHVybiBhcnJheS5tYXAoaXRlbSA9PiB0aGlzLmNyZWF0ZUNvbnRyb2xGcm9tVmFsdWUoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0RXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IG51bWJlciB7XHJcblxyXG4gICAgbGV0IGVycm9ycyA9IDA7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQpXHJcbiAgICAgIHJldHVybiBlcnJvcnM7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IE9iamVjdC52YWx1ZXMoY29udHJvbC5jb250cm9scyk7XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICBlcnJvcnMgKz0gdGhpcy5jb2xsZWN0RXJyb3JzKGNoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgIGVycm9ycysrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVua25vd24oY29udHJvbDogYW55KSB7XHJcbiAgICBjb250cm9sLl91bmtub3duID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNVbmtub3duKGNvbnRyb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbnRyb2wgJiYgY29udHJvbC5fdW5rbm93biA9PT0gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==