@messaia/cdk 17.1.0-rc03 → 17.1.0-rc05
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.
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +4 -2
- package/esm2022/lib/forms/functions/functions.mjs +2 -1
- package/esm2022/lib/forms/models/form-field-group-definition.mjs +7 -2
- package/fesm2022/messaia-cdk.mjs +10 -2
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/forms/models/form-field-group-definition.d.ts +12 -5
- package/package.json +1 -1
|
@@ -197,7 +197,9 @@ export class VdGenericFormComponent {
|
|
|
197
197
|
this.buildFields();
|
|
198
198
|
}
|
|
199
199
|
/* Get filed rows */
|
|
200
|
-
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
200
|
+
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
201
|
+
!x.hidden &&
|
|
202
|
+
(!x.hide || !x.hide(this.formValue, this.formGroup, this.context)))[0]?.groups;
|
|
201
203
|
if (fieldRows) {
|
|
202
204
|
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return { ...y }; })]; });
|
|
203
205
|
}
|
|
@@ -440,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
440
442
|
type: ContentChildren,
|
|
441
443
|
args: [VdGenericFormCustomFieldDirective]
|
|
442
444
|
}] } });
|
|
443
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEY7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM1QyxZQUFZLFdBQTZCLEVBQUUsZ0JB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QUFpQyw2QkMxTHRELGtzekJBMFFNOzsyRkQ5TU8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNJLGlCQUFpQjs4QkFTcEIsU0FBUztzQkFEZixLQUFLO2dCQVlDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxjQUFjO3NCQURwQixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFRQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQXNCQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFPeEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBT3RCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQVl4QixNQUFNO3NCQURaLFlBQVk7dUJBQUMsUUFBUTtnQkFPZixZQUFZO3NCQURsQixZQUFZO3VCQUFDLGNBQWM7Z0JBT3JCLHFCQUFxQjtzQkFEM0IsZUFBZTt1QkFBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBNYXRDYWxlbmRhciwgTWF0RGF0ZXBpY2tlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBWZEdlbmVyaWNGb3JtQ3VzdG9tRmllbGREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3ZkLWdlbmVyaWMtZm9ybS1jdXN0b20tZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZSc7XHJcbmltcG9ydCB7IGdldEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1maWVsZC1kZWZpbml0aW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXAtZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGVwaWNrZXItaGVhZGVyLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogVmRFZGl0b3JEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1lZGl0b3JdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEVkaXRvckRpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkQ29kZURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWNvZGVdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZENvZGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZEZpbGVEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1maWxlXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRGaWxlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRDdXN0b21EaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1jdXN0b21dbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEN1c3RvbURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3ZkLWdlbmVyaWMtZm9ybScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEdlbmVyaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogZm9ybTogRm9ybUdyb3VwXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybUdyb3VwPzogRm9ybUdyb3VwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybSByYXcgdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBmb3JtVmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwPy5nZXRSYXdWYWx1ZSgpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjbGFzc1R5cGU6IFR5cGU8YW55PlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNsYXNzVHlwZT86IFR5cGU8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1EZWZpbml0aW9uPzogRm9ybURlZmluaXRpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZEdyb3VwczogRm9ybUZpZWxkR3JvdXBbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkR3JvdXBzPzogRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHcm91cCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmllbGQgc2V0IG5hbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWVsZFNldHM/OiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnRleHQ6IGFueVxyXG4gICAgICogVGhlIGN1cnJlbnQgY29udGV4dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlYnVnVmFsdWU6IGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkZWJ1Z1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZWFkb25seTogYm9vbGVhblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJlYWRvbmx5PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdID0gW0VOVEVSLCBDT01NQV07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZFJvd3M6IEZvcm1GaWVsZERlZmluaXRpb25bXVtdXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWVsZFJvd3M/OiBGb3JtRmllbGREZWZpbml0aW9uW11bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWVsZHM/OiBGb3JtRmllbGREZWZpbml0aW9uW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtRmllbGRUeXBlOiB0eXBlb2YgRm9ybUZpZWxkVHlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGUgPSBGb3JtRmllbGRUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWRpdG9yIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRFZGl0b3JEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZWRpdG9yVGVtcGxhdGU/OiBWZEVkaXRvckRpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvZGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZENvZGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY29kZVRlbXBsYXRlPzogVmRDb2RlRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsZSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkRmlsZURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBmaWxlVGVtcGxhdGU/OiBWZEZpbGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEN1c3RvbURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZT86IFZkQ3VzdG9tRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tZXIgZGF0ZSBoZWFkZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQgPSBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgcmVmIGZvciBjdXN0b20gZmllbGRzIG9uIHRoZSBib3R0b21cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnYm90dG9tJylcclxuICAgIHB1YmxpYyBib3R0b20/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgcmVmIGZvciBjdXN0b20gZmllbGRzXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoJ2N1c3RvbUZpZWxkcycpXHJcbiAgICBwdWJsaWMgY3VzdG9tRmllbGRzPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkcyBvbiB0aGUgYm90dG9tXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oVmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGN1c3RvbUZpZWxkc1RlbXBsYXRlcz86IFF1ZXJ5TGlzdDxWZEdlbmVyaWNGb3JtQ3VzdG9tRmllbGREaXJlY3RpdmU+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmlsdGVyZCBvcHRpb25zIGZvciBhdXRvY29tcGxldGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uczogYW55ID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXHJcbiAgICAgKiBkZWZhdWx0IGNoYW5nZSBkZXRlY3RvciBoYXMgY2hlY2tlZCB0aGUgZGlyZWN0aXZlJ3NcclxuICAgICAqIGRhdGEtYm91bmQgcHJvcGVydGllcyBmb3IgdGhlIGZpcnN0IHRpbWUsXHJcbiAgICAgKiBhbmQgYmVmb3JlIGFueSBvZiB0aGUgdmlldyBvciBjb250ZW50IGNoaWxkcmVuIGhhdmUgYmVlbiBjaGVja2VkLlxyXG4gICAgICogSXQgaXMgaW52b2tlZCBvbmx5IG9uY2Ugd2hlbiB0aGUgZGlyZWN0aXZlIGlzIGluc3RhbnRpYXRlZC5cclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLyogQnVpbGQgdGhlIGZvcm0gZmllbGRzICovXHJcbiAgICAgICAgaWYgKHRoaXMuY2xhc3NUeXBlIC8qJiYgIXRoaXMuZmllbGRHcm91cHMqLykge1xyXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgZmlsZWQgcm93cyAqL1xyXG4gICAgICAgIGxldCBmaWVsZFJvd3MgPSB0aGlzLmZpZWxkR3JvdXBzPy5maWx0ZXIoeCA9PiB4Lm5hbWU/LnRyaW0oKSA9PSB0aGlzLmdyb3VwTmFtZT8udHJpbSgpICYmICF4LmhpZGRlbilbMF0/Lmdyb3VwcztcclxuICAgICAgICBpZiAoZmllbGRSb3dzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRSb3dzID0gZmllbGRSb3dzLm1hcChhID0+IHsgcmV0dXJuIFsuLi5hLm1hcCh5ID0+IHsgcmV0dXJuIHsgLi4ueSB9IH0pXSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEZpbHRlciBieSBmaWVsZCBzZXQgKi9cclxuICAgICAgICBpZiAodGhpcy5maWVsZFNldHMgJiYgdGhpcy5maWVsZFJvd3MpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFJvd3MgPSB0aGlzLmZpZWxkUm93cy5tYXAoeCA9PiB4ID0geC5maWx0ZXIoeSA9PiB5LmZpZWxkU2V0cz8uc29tZSh6ID0+IHRoaXMuZmllbGRTZXRzPy5zb21lKGEgPT4gYT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpID09IHo/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkpKSkuZmlsdGVyKHggPT4geC5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGFsbCBmaWVsZHMgKi9cclxuICAgICAgICBsZXQgZmllbGRzID0gdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTtcclxuICAgICAgICBpZiAoZmllbGRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRzID0gZmllbGRzLm1hcChhID0+IHsgcmV0dXJuIHsgLi4uYSB9IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgZmllbGRzPy5maWx0ZXIoeSA9PiB5LnR5cGUgIT0gRm9ybUZpZWxkVHlwZS5GaWxlICYmIHkuY2hhbmdlKT8uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHghLmNoYW5nZSAmJiB4IS5jaGFuZ2UoeSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCB1cGRhdGVGb3JtRmllbGQgPSAob3JnRmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIHg6IEZvcm1GaWVsZERlZmluaXRpb24pID0+IHtcclxuICAgICAgICAgICAgLyogR2V0IHRoZSB0eXBlIGFuZCB0aGUgbGFiZWwgb2YgdGhlIGZpZWxkICovXHJcbiAgICAgICAgICAgIGxldCB0eXBlID0gb3JnRmllbGQ/LnR5cGU7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IG9yZ0ZpZWxkPy5sYWJlbDtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBvcmdGaWVsZD8ub3B0aW9ucztcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgdHlwZSAqL1xyXG4gICAgICAgICAgICB4LnR5cGUgPSAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpID8gdHlwZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4LnR5cGU7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIGxhYmVsICovXHJcbiAgICAgICAgICAgIHgubGFiZWwgPSAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSA/IGxhYmVsKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgubGFiZWw7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIG9wdGlvbnMgKi9cclxuICAgICAgICAgICAgeC5vcHRpb25zID0gKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSA/IG9wdGlvbnModGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5vcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgKi9cclxuICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxhbnk+ID0gPEZvcm1Db250cm9sPGFueT4+dGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpO1xyXG5cclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGZpZWxkIGlzIHJlcXVpcmVkICovXHJcbiAgICAgICAgICAgIGxldCByZXF1aXJlZDogYm9vbGVhbiB8IGFueSA9ICh0eXBlb2YgeC5yZXF1aXJlZCA9PT0gJ2Z1bmN0aW9uJykgPyB4LnJlcXVpcmVkKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgucmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCAmJiByZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBVcGRhdGUgc29tZSB2YWx1ZXMgKGxhYmVsLCB0eXBlLCAuLi4pICovXHJcbiAgICAgICAgZmllbGRzPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgb3JnRmllbGQgPSB0aGlzLmZpZWxkcz8uZmlsdGVyKHkgPT4geS5uYW1lID09IHgubmFtZSlbMF07XHJcbiAgICAgICAgICAgIGlmIChvcmdGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUZpZWxkKG9yZ0ZpZWxkLCB4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHVwZGF0ZUZvcm1GaWVsZChvcmdGaWVsZCEsIHgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gKDx7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W10+ZmllbGQub3B0aW9ucylcclxuICAgICAgICAgICAgICAgID8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXAgd2hlbiBhIGF1dG9jb21wbGV0ZSB2YWx1ZSBpcyBzZWxlY3RlZFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIGNoaXBJbnB1dEV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hZGRDaGlwKGZpZWxkLCBldmVudC5vcHRpb24udmlld1ZhbHVlKTtcclxuICAgICAgICBjaGlwSW5wdXRFdmVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZENoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50LnZhbHVlKTtcclxuICAgICAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGNoaXAgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBjaGlwOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvKiBHZXQgdGhlIGZvcm0gY29udHJvbCB1c2luZyB0aGUgZmllbGQgbmFtZSAqL1xyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXA/LmNvbnRyb2xzW2ZpZWxkLm5hbWUgPz8gJyddO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluZGV4IG9mIHRoZSBjaGlwICovXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb250cm9sPy52YWx1ZS5pbmRleE9mKGNoaXApO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZSA/PyAnJ107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGRhdGUgcGlja2VyIG9wZW5lZCBldmVudFxyXG4gICAgICogQHBhcmFtIGRhdGVQaWNrZXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVEYXRlUGlja2VyT3BlbmVkKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVQaWNrZXJPcGVuZWQpIHtcclxuICAgICAgICAgICAgZmllbGQuZGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZGF0ZSBmaWx0ZXIgZXZlbnRcclxuICAgICAqIEBwYXJhbSBkYXRlUGlja2VyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGRhdGU6IERhdGUgfCBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVGaWx0ZXJBc3luYykge1xyXG4gICAgICAgICAgICAvKiBEaXNhYmxlcyBhbGwgZGF0ZXMgKi9cclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5kYXRlcGlja2VySW5wdXQuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIGZpZWxkLmRhdGVGaWx0ZXJBc3luYyhkYXRlLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXIuZGF0ZXBpY2tlcklucHV0LmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZCAmJiB4KGQpO1xyXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgY2FsZW5kYXIgZmlsdGVyIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gY2FsZW5kYXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZGF0ZTogRGF0ZSB8IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZUZpbHRlckFzeW5jKSB7XHJcbiAgICAgICAgICAgIC8qIERpc2FibGVzIGFsbCBkYXRlcyAqL1xyXG4gICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxlbmRhci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBmaWVsZC5kYXRlRmlsdGVyQXN5bmMoZGF0ZSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGQgJiYgeChkKTtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgdGhlIGZvcm0gZmllbGRzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBidWlsZEZpZWxkcygpOiB2b2lkIHtcclxuICAgICAgICAvKiBDaGVjayBpZiBjbGFzc1R5cGUgaXMgbm90IGRlZmluZWQgKi9cclxuICAgICAgICBpZiAoIXRoaXMuY2xhc3NUeXBlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjbGFzc1R5cGUuIFBsZWFzZSBlbnN1cmUgY2xhc3NUeXBlIGlzIGRlZmluZWQsIG5vdCBudWxsLCBhbmQgaXMgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbi4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBmb3JtIGRlZmluaXRpb24gKi9cclxuICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZ2V0Rm9ybURlZmluaXRpb24obmV3IHRoaXMuY2xhc3NUeXBlKCkpO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGhlIGZyb20gZmllbGRzIHVzaW5nIHRoZSBlbnRpdHkgdHlwZSAqL1xyXG4gICAgICAgIHRoaXMuZmllbGRHcm91cHMgPSB0aGlzLmZvcm1EZWZpbml0aW9uPy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4gIXguaGlkZGVuKT8ubWFwKGEgPT4geyByZXR1cm4geyAuLi5hIH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2cgdG8gY29uc29sZVxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2cobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwICYmIGZpZWxkUm93c1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgICA8IS0tICNyZWdpb24gRmllbGRzIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRzIG9mIGZpZWxkUm93czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmhpZGRlbiAmJiAhKGZpZWxkLmhpZGUgJiYgZmllbGQuaGlkZShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLndyYXBwZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCIgW21pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGh8fG51bGxcIiBbbWF4bGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aHx8bnVsbFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHRhcmVhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVGV4dEFyZWFcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgcm93cz1cImZpZWxkLnJvd3N8fDJcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRW51bVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2VudW1dPVwiZmllbGQuZW51bVR5cGVcIiBbZW51bUZpbHRlcl09XCJmaWVsZC5lbnVtRmlsdGVyIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIFt0cmlnZ2VyQ3NzQ2xhc3NdPVwiZmllbGQudHJpZ2dlckNzc0NsYXNzXCIgW3RyaWdnZXJNb2RlXT1cImZpZWxkLnRyaWdnZXJNb2RlXCIgbGF5b3V0PVwicm93XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlciwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRTZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludD8/JycgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zPz97fSB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtzZWxlY3RGaXJzdF09XCJmaWVsZC5zZWxlY3RGaXJzdFwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIFt0cmlnZ2VyQ3NzQ2xhc3NdPVwiZmllbGQudHJpZ2dlckNzc0NsYXNzXCIgW3RyaWdnZXJNb2RlXT1cImZpZWxkLnRyaWdnZXJNb2RlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJNYXBwZXIgJiYgZmllbGQubXVsdGlwbGUgJiYgZmllbGQudHJpZ2dlck1vZGUgPT0gJ2NoaXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRyaWdnZXJcIiBjbGFzcz1cIm1hdC1tZGMtY2hpcCBtYXQtbWRjLXN0YW5kYXJkLWNoaXAgbWF0LXByaW1hcnkgbWF0LW1kYy1jaGlwLXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJNYXBwZXIoaXRlbSwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVmRMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRMaXN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWxpc3RcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQ/PycnIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyA/P3t9IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW21hcHBlcl09XCJmaWVsZC5tYXBwZXJcIiBbY29tcGFyZVdpdGhdPVwiZmllbGQuY29tcGFyZVdpdGhcIiBbbG9hZERhdGFdPVwiZmllbGQuZmV0Y2hDb25kaXRpb24gfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIFtzdHlsZS5tYXgtd2lkdGhdPVwiZmllbGQubWF4V2lkdGhcIiBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZC5tYXhIZWlnaHRcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1saXN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2Rpc2FibGVDb250cm9sXT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pPy52YWx1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUNoaXAoZmllbGQsIGNoaXApXCIgY29sb3I9XCJwcmltYXJ5XCIgc2VsZWN0YWJsZT1cInRydWVcIiBzZWxlY3RlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjaGlwfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cIiRhbnkoZmllbGQubGFiZWwpXCIgI2NoaXBJbnB1dCBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCIgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9jb21wbGV0ZVwiIChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGNoaXBJbnB1dClcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkQ2hpcChmaWVsZCwgJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNjaGlwQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgW2NsYXNzXT1cImZpZWxkLmF1dG9jb21wbGV0ZUNzc0NsYXNzXCIgKG9wdGlvblNlbGVjdGVkKT1cImF1dG9jb21wbGV0ZVZhbHVlU2VsZWN0ZWQoZmllbGQsICRldmVudCwgY2hpcElucHV0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRDaGlwc1wiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLWNoaXBzICN2ZENoaXAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludD8/JycgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zIHx8IHt9IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbc2VhcmNoRmllbGRdPVwiZmllbGQuc2VhcmNoRmllbGRcIiBbY2xhc3NUeXBlXT1cImZpZWxkLmNsYXNzVHlwZVwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgW3JlbW92YWJsZV09XCIhZmllbGQuY2xlYXJcIiBbY29udGV4dF09XCJjb250ZXh0XCIgW3N1ZmZpeEJ1dHRvbnNdPVwiZmllbGQuc3VmZml4QnV0dG9uc1wiIFthdXRvY29tcGxldGVDc3NDbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiIChpbml0U2VsZWN0KT1cImZpZWxkLml0ZW1TZWxlY3QgJiYgZmllbGQuaXRlbVNlbGVjdCgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoc2VsZWN0ZWQpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChjbGVhcmVkKT1cImZpZWxkLmNsZWFyICYmIGZpZWxkLmNsZWFyKGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBbY3VzdG9tVmFsdWVdPVwiZmllbGQuY3VzdG9tVmFsdWVcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1jaGlwIGxldC1jaGlwPVwiY2hpcFwiICpuZ0lmPVwiZmllbGQuY2hpcFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5jaGlwVGVtcGxhdGUoY2hpcCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtYXV0b2NvbXBsZXRlLW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1jaGlwcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ2ZENoaXAuZW1wdHlSZXN1bHRcIiBjbGFzcz1cInRjLXJlZC00MDBcIiBpMThuPVwiQEBub1Jlc3VsdHNGb3VuZFwiPk5vIHJlc3VsdHMgd2VyZSBmb3VuZC48L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlNlbGVjdFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtkaXNhYmxlQ29udHJvbF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiAkYW55KGZpZWxkLm9wdGlvbnMpXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQXV0b2NvbXBsZXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiICNhdXRvY29tcGxldGVJbnB1dCAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBhdXRvY29tcGxldGVJbnB1dClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtjbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRGF0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImZpZWxkLmRhdGVGaWx0ZXJcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgZmllbGQuZm9yY2VTZWxlY3QgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyIFtkaXNhYmxlZF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZURhdGVQaWNrZXJGaWx0ZXJBc3luYyhkYXRlUGlja2VyLCBmaWVsZCwgJGV2ZW50IClcIiAob3BlbmVkKT1cImhhbmRsZURhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlciwgZmllbGQpXCIgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDYWxlbmRhciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNhbGVuZGFyXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWNhbGVuZGFyXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaW5wdXQ9XCJoaWRkZW5cIiBoaWRkZW4gbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXIgW3NlbGVjdGVkXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSEpPy52YWx1ZVwiIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUhKT8uc2V0VmFsdWUoJGV2ZW50KTtcIiAobW9udGhTZWxlY3RlZCk9XCJoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyLCBmaWVsZCwgJGV2ZW50IClcIiBbaGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPjwvbWF0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGVja2JveCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoZWNrYm94XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgY2xhc3M9XCJtYXQtY2hlY2tib3gtd3JhcFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj57e2ZpZWxkLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVkaXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ29kZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29kZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2ZC1maWxlLWlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiAoc2VsZWN0KT1cImZpZWxkLmNoYW5nZSAmJiBmaWVsZC5jaGFuZ2UoZmllbGQsICRldmVudCwgZm9ybUdyb3VwLCBjb250ZXh0KVwiIFthY2NlcHRdPVwiZmllbGQuZmlsZUV4dGVuc2lvbnNcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBmbGV4PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEN1c3RvbSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gZmllbGRzWzBdPy5yb3cgJiYgY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwLCByb3c6IGZpZWxkc1swXS5yb3d9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgY3VzdG9tRmllbGRzVGVtcGxhdGVzXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gKChmaWVsZHNbMF0/LnJvdz8/MCkrMSkgJiYgIWN1c3RvbUZpZWxkLmlubGluZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIEZvcm0gYm90dG9tIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBzdWZmaXggYnV0dG9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc3VmZml4QnV0dG9ucyBsZXQtZmllbGQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIERlYnVnIHZhbHVlIC0tPlxyXG4gICAgPGNvZGUgKm5nSWY9XCJkZWJ1Z1ZhbHVlXCI+XHJcbiAgICAgICAgPHByZT57e2Zvcm1WYWx1ZSB8IGpzb259fTwvcHJlPlxyXG4gICAgPC9jb2RlPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L2Rpdj4iXX0=
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEY7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM1QyxZQUFZLFdBQTZCLEVBQUUsZ0JB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QUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7MEhBdlhRLHNCQUFzQjs4R0FBdEIsc0JBQXNCLDJYQXFGakIsaUJBQWlCLCtFQU1qQixlQUFlLCtFQU1mLGVBQWUsaUZBTWYsaUJBQWlCLDZQQXVCZCxpQ0FBaUMsNkJDMUx0RCxrc3pCQTBRTTs7MkZEOU1PLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxpQkFBaUI7OEJBU3BCLFNBQVM7c0JBRGYsS0FBSztnQkFZQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsT0FBTztzQkFEYixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFzQkMsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBT3hCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFPdEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFZeEIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLFFBQVE7Z0JBT2YsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxjQUFjO2dCQU9yQixxQkFBcUI7c0JBRDNCLGVBQWU7dUJBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgTWF0Q2FsZW5kYXIsIE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgVmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92ZC1nZW5lcmljLWZvcm0tY3VzdG9tLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIFZkRWRpdG9yRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZWRpdG9yXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRFZGl0b3JEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZENvZGVEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1jb2RlXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDb2RlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRGaWxlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZmlsZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRmlsZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkQ3VzdG9tRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY3VzdG9tXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDdXN0b21EaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZC1nZW5lcmljLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRHZW5lcmljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIGZvcm06IEZvcm1Hcm91cFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gcmF3IHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZm9ybVZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLmZvcm1Hcm91cD8uZ2V0UmF3VmFsdWUoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY2xhc3NUeXBlOiBUeXBlPGFueT5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjbGFzc1R5cGU/OiBUeXBlPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb25cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtRGVmaW5pdGlvbj86IEZvcm1EZWZpbml0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWVsZEdyb3Vwcz86IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR3JvdXAgbmFtZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdyb3VwTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpZWxkIHNldCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRTZXRzPzogc3RyaW5nW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb250ZXh0OiBhbnlcclxuICAgICAqIFRoZSBjdXJyZW50IGNvbnRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWJ1Z1ZhbHVlOiBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGVidWdWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVhZG9ubHk6IGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRSb3dzOiBGb3JtRmllbGREZWZpbml0aW9uW11bXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRSb3dzPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRzPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIEZvcm1GaWVsZFR5cGU6IHR5cGVvZiBGb3JtRmllbGRUeXBlID0gRm9ybUZpZWxkVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVkaXRvciB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkRWRpdG9yRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGVkaXRvclRlbXBsYXRlPzogVmRFZGl0b3JEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RlIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRDb2RlRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGNvZGVUZW1wbGF0ZT86IFZkQ29kZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEZpbGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZmlsZVRlbXBsYXRlPzogVmRGaWxlRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRDdXN0b21EaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGU/OiBWZEN1c3RvbURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbWVyIGRhdGUgaGVhZGVyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXRlUGlja2VySGVhZGVyQ29tcG9uZW50ID0gRGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkcyBvbiB0aGUgYm90dG9tXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoJ2JvdHRvbScpXHJcbiAgICBwdWJsaWMgYm90dG9tPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkc1xyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKCdjdXN0b21GaWVsZHMnKVxyXG4gICAgcHVibGljIGN1c3RvbUZpZWxkcz86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHMgb24gdGhlIGJvdHRvbVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNUZW1wbGF0ZXM/OiBRdWVyeUxpc3Q8VmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcmQgb3B0aW9ucyBmb3IgYXV0b2NvbXBsZXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnM6IGFueSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG4gICAgICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcbiAgICAgKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxyXG4gICAgICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuICAgICAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8qIEJ1aWxkIHRoZSBmb3JtIGZpZWxkcyAqL1xyXG4gICAgICAgIGlmICh0aGlzLmNsYXNzVHlwZSAvKiYmICF0aGlzLmZpZWxkR3JvdXBzKi8pIHtcclxuICAgICAgICAgICAgdGhpcy5idWlsZEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGZpbGVkIHJvd3MgKi9cclxuICAgICAgICBsZXQgZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT5cclxuICAgICAgICAgICAgeC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSAmJlxyXG4gICAgICAgICAgICAheC5oaWRkZW4gJiZcclxuICAgICAgICAgICAgKCF4LmhpZGUgfHwgIXguaGlkZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkpXHJcbiAgICAgICAgKVswXT8uZ3JvdXBzO1xyXG5cclxuICAgICAgICBpZiAoZmllbGRSb3dzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRSb3dzID0gZmllbGRSb3dzLm1hcChhID0+IHsgcmV0dXJuIFsuLi5hLm1hcCh5ID0+IHsgcmV0dXJuIHsgLi4ueSB9IH0pXSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEZpbHRlciBieSBmaWVsZCBzZXQgKi9cclxuICAgICAgICBpZiAodGhpcy5maWVsZFNldHMgJiYgdGhpcy5maWVsZFJvd3MpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFJvd3MgPSB0aGlzLmZpZWxkUm93cy5tYXAoeCA9PiB4ID0geC5maWx0ZXIoeSA9PiB5LmZpZWxkU2V0cz8uc29tZSh6ID0+IHRoaXMuZmllbGRTZXRzPy5zb21lKGEgPT4gYT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpID09IHo/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkpKSkuZmlsdGVyKHggPT4geC5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGFsbCBmaWVsZHMgKi9cclxuICAgICAgICBsZXQgZmllbGRzID0gdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTtcclxuICAgICAgICBpZiAoZmllbGRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRzID0gZmllbGRzLm1hcChhID0+IHsgcmV0dXJuIHsgLi4uYSB9IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgZmllbGRzPy5maWx0ZXIoeSA9PiB5LnR5cGUgIT0gRm9ybUZpZWxkVHlwZS5GaWxlICYmIHkuY2hhbmdlKT8uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHghLmNoYW5nZSAmJiB4IS5jaGFuZ2UoeSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCB1cGRhdGVGb3JtRmllbGQgPSAob3JnRmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIHg6IEZvcm1GaWVsZERlZmluaXRpb24pID0+IHtcclxuICAgICAgICAgICAgLyogR2V0IHRoZSB0eXBlIGFuZCB0aGUgbGFiZWwgb2YgdGhlIGZpZWxkICovXHJcbiAgICAgICAgICAgIGxldCB0eXBlID0gb3JnRmllbGQ/LnR5cGU7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IG9yZ0ZpZWxkPy5sYWJlbDtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBvcmdGaWVsZD8ub3B0aW9ucztcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgdHlwZSAqL1xyXG4gICAgICAgICAgICB4LnR5cGUgPSAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpID8gdHlwZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4LnR5cGU7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIGxhYmVsICovXHJcbiAgICAgICAgICAgIHgubGFiZWwgPSAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSA/IGxhYmVsKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgubGFiZWw7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIG9wdGlvbnMgKi9cclxuICAgICAgICAgICAgeC5vcHRpb25zID0gKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSA/IG9wdGlvbnModGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5vcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgKi9cclxuICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxhbnk+ID0gPEZvcm1Db250cm9sPGFueT4+dGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpO1xyXG5cclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGZpZWxkIGlzIHJlcXVpcmVkICovXHJcbiAgICAgICAgICAgIGxldCByZXF1aXJlZDogYm9vbGVhbiB8IGFueSA9ICh0eXBlb2YgeC5yZXF1aXJlZCA9PT0gJ2Z1bmN0aW9uJykgPyB4LnJlcXVpcmVkKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgucmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCAmJiByZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBVcGRhdGUgc29tZSB2YWx1ZXMgKGxhYmVsLCB0eXBlLCAuLi4pICovXHJcbiAgICAgICAgZmllbGRzPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgb3JnRmllbGQgPSB0aGlzLmZpZWxkcz8uZmlsdGVyKHkgPT4geS5uYW1lID09IHgubmFtZSlbMF07XHJcbiAgICAgICAgICAgIGlmIChvcmdGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUZpZWxkKG9yZ0ZpZWxkLCB4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHVwZGF0ZUZvcm1GaWVsZChvcmdGaWVsZCEsIHgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gKDx7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W10+ZmllbGQub3B0aW9ucylcclxuICAgICAgICAgICAgICAgID8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXAgd2hlbiBhIGF1dG9jb21wbGV0ZSB2YWx1ZSBpcyBzZWxlY3RlZFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIGNoaXBJbnB1dEV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hZGRDaGlwKGZpZWxkLCBldmVudC5vcHRpb24udmlld1ZhbHVlKTtcclxuICAgICAgICBjaGlwSW5wdXRFdmVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZENoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50LnZhbHVlKTtcclxuICAgICAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGNoaXAgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBjaGlwOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvKiBHZXQgdGhlIGZvcm0gY29udHJvbCB1c2luZyB0aGUgZmllbGQgbmFtZSAqL1xyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXA/LmNvbnRyb2xzW2ZpZWxkLm5hbWUgPz8gJyddO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluZGV4IG9mIHRoZSBjaGlwICovXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb250cm9sPy52YWx1ZS5pbmRleE9mKGNoaXApO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZSA/PyAnJ107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGRhdGUgcGlja2VyIG9wZW5lZCBldmVudFxyXG4gICAgICogQHBhcmFtIGRhdGVQaWNrZXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVEYXRlUGlja2VyT3BlbmVkKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVQaWNrZXJPcGVuZWQpIHtcclxuICAgICAgICAgICAgZmllbGQuZGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZGF0ZSBmaWx0ZXIgZXZlbnRcclxuICAgICAqIEBwYXJhbSBkYXRlUGlja2VyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGRhdGU6IERhdGUgfCBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVGaWx0ZXJBc3luYykge1xyXG4gICAgICAgICAgICAvKiBEaXNhYmxlcyBhbGwgZGF0ZXMgKi9cclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5kYXRlcGlja2VySW5wdXQuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIGZpZWxkLmRhdGVGaWx0ZXJBc3luYyhkYXRlLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXIuZGF0ZXBpY2tlcklucHV0LmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZCAmJiB4KGQpO1xyXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgY2FsZW5kYXIgZmlsdGVyIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gY2FsZW5kYXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZGF0ZTogRGF0ZSB8IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZUZpbHRlckFzeW5jKSB7XHJcbiAgICAgICAgICAgIC8qIERpc2FibGVzIGFsbCBkYXRlcyAqL1xyXG4gICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxlbmRhci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBmaWVsZC5kYXRlRmlsdGVyQXN5bmMoZGF0ZSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGQgJiYgeChkKTtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgdGhlIGZvcm0gZmllbGRzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBidWlsZEZpZWxkcygpOiB2b2lkIHtcclxuICAgICAgICAvKiBDaGVjayBpZiBjbGFzc1R5cGUgaXMgbm90IGRlZmluZWQgKi9cclxuICAgICAgICBpZiAoIXRoaXMuY2xhc3NUeXBlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjbGFzc1R5cGUuIFBsZWFzZSBlbnN1cmUgY2xhc3NUeXBlIGlzIGRlZmluZWQsIG5vdCBudWxsLCBhbmQgaXMgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbi4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBmb3JtIGRlZmluaXRpb24gKi9cclxuICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZ2V0Rm9ybURlZmluaXRpb24obmV3IHRoaXMuY2xhc3NUeXBlKCkpO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGhlIGZyb20gZmllbGRzIHVzaW5nIHRoZSBlbnRpdHkgdHlwZSAqL1xyXG4gICAgICAgIHRoaXMuZmllbGRHcm91cHMgPSB0aGlzLmZvcm1EZWZpbml0aW9uPy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4gIXguaGlkZGVuKT8ubWFwKGEgPT4geyByZXR1cm4geyAuLi5hIH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2cgdG8gY29uc29sZVxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2cobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwICYmIGZpZWxkUm93c1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgICA8IS0tICNyZWdpb24gRmllbGRzIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRzIG9mIGZpZWxkUm93czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmhpZGRlbiAmJiAhKGZpZWxkLmhpZGUgJiYgZmllbGQuaGlkZShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLndyYXBwZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCIgW21pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGh8fG51bGxcIiBbbWF4bGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aHx8bnVsbFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHRhcmVhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVGV4dEFyZWFcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgcm93cz1cImZpZWxkLnJvd3N8fDJcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRW51bVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2VudW1dPVwiZmllbGQuZW51bVR5cGVcIiBbZW51bUZpbHRlcl09XCJmaWVsZC5lbnVtRmlsdGVyIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIFt0cmlnZ2VyQ3NzQ2xhc3NdPVwiZmllbGQudHJpZ2dlckNzc0NsYXNzXCIgW3RyaWdnZXJNb2RlXT1cImZpZWxkLnRyaWdnZXJNb2RlXCIgbGF5b3V0PVwicm93XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlciwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRTZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludD8/JycgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zPz97fSB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtzZWxlY3RGaXJzdF09XCJmaWVsZC5zZWxlY3RGaXJzdFwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIFt0cmlnZ2VyQ3NzQ2xhc3NdPVwiZmllbGQudHJpZ2dlckNzc0NsYXNzXCIgW3RyaWdnZXJNb2RlXT1cImZpZWxkLnRyaWdnZXJNb2RlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJNYXBwZXIgJiYgZmllbGQubXVsdGlwbGUgJiYgZmllbGQudHJpZ2dlck1vZGUgPT0gJ2NoaXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRyaWdnZXJcIiBjbGFzcz1cIm1hdC1tZGMtY2hpcCBtYXQtbWRjLXN0YW5kYXJkLWNoaXAgbWF0LXByaW1hcnkgbWF0LW1kYy1jaGlwLXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJNYXBwZXIoaXRlbSwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVmRMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRMaXN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWxpc3RcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQ/PycnIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyA/P3t9IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW21hcHBlcl09XCJmaWVsZC5tYXBwZXJcIiBbY29tcGFyZVdpdGhdPVwiZmllbGQuY29tcGFyZVdpdGhcIiBbbG9hZERhdGFdPVwiZmllbGQuZmV0Y2hDb25kaXRpb24gfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIFtzdHlsZS5tYXgtd2lkdGhdPVwiZmllbGQubWF4V2lkdGhcIiBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZC5tYXhIZWlnaHRcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1saXN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2Rpc2FibGVDb250cm9sXT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pPy52YWx1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUNoaXAoZmllbGQsIGNoaXApXCIgY29sb3I9XCJwcmltYXJ5XCIgc2VsZWN0YWJsZT1cInRydWVcIiBzZWxlY3RlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjaGlwfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cIiRhbnkoZmllbGQubGFiZWwpXCIgI2NoaXBJbnB1dCBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCIgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9jb21wbGV0ZVwiIChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGNoaXBJbnB1dClcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkQ2hpcChmaWVsZCwgJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNjaGlwQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgW2NsYXNzXT1cImZpZWxkLmF1dG9jb21wbGV0ZUNzc0NsYXNzXCIgKG9wdGlvblNlbGVjdGVkKT1cImF1dG9jb21wbGV0ZVZhbHVlU2VsZWN0ZWQoZmllbGQsICRldmVudCwgY2hpcElucHV0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRDaGlwc1wiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLWNoaXBzICN2ZENoaXAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludD8/JycgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zIHx8IHt9IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbc2VhcmNoRmllbGRdPVwiZmllbGQuc2VhcmNoRmllbGRcIiBbY2xhc3NUeXBlXT1cImZpZWxkLmNsYXNzVHlwZVwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgW3JlbW92YWJsZV09XCIhZmllbGQuY2xlYXJcIiBbY29udGV4dF09XCJjb250ZXh0XCIgW3N1ZmZpeEJ1dHRvbnNdPVwiZmllbGQuc3VmZml4QnV0dG9uc1wiIFthdXRvY29tcGxldGVDc3NDbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiIChpbml0U2VsZWN0KT1cImZpZWxkLml0ZW1TZWxlY3QgJiYgZmllbGQuaXRlbVNlbGVjdCgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoc2VsZWN0ZWQpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChjbGVhcmVkKT1cImZpZWxkLmNsZWFyICYmIGZpZWxkLmNsZWFyKGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBbY3VzdG9tVmFsdWVdPVwiZmllbGQuY3VzdG9tVmFsdWVcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1jaGlwIGxldC1jaGlwPVwiY2hpcFwiICpuZ0lmPVwiZmllbGQuY2hpcFRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5jaGlwVGVtcGxhdGUoY2hpcCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtYXV0b2NvbXBsZXRlLW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1jaGlwcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJ2ZENoaXAuZW1wdHlSZXN1bHRcIiBjbGFzcz1cInRjLXJlZC00MDBcIiBpMThuPVwiQEBub1Jlc3VsdHNGb3VuZFwiPk5vIHJlc3VsdHMgd2VyZSBmb3VuZC48L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlNlbGVjdFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtkaXNhYmxlQ29udHJvbF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiAkYW55KGZpZWxkLm9wdGlvbnMpXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQXV0b2NvbXBsZXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiICNhdXRvY29tcGxldGVJbnB1dCAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBhdXRvY29tcGxldGVJbnB1dClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtjbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRGF0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImZpZWxkLmRhdGVGaWx0ZXJcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgZmllbGQuZm9yY2VTZWxlY3QgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyIFtkaXNhYmxlZF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZURhdGVQaWNrZXJGaWx0ZXJBc3luYyhkYXRlUGlja2VyLCBmaWVsZCwgJGV2ZW50IClcIiAob3BlbmVkKT1cImhhbmRsZURhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlciwgZmllbGQpXCIgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDYWxlbmRhciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNhbGVuZGFyXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWNhbGVuZGFyXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaW5wdXQ9XCJoaWRkZW5cIiBoaWRkZW4gbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXIgW3NlbGVjdGVkXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSEpPy52YWx1ZVwiIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUhKT8uc2V0VmFsdWUoJGV2ZW50KTtcIiAobW9udGhTZWxlY3RlZCk9XCJoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyLCBmaWVsZCwgJGV2ZW50IClcIiBbaGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPjwvbWF0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGVja2JveCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoZWNrYm94XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgY2xhc3M9XCJtYXQtY2hlY2tib3gtd3JhcFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj57e2ZpZWxkLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVkaXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ29kZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29kZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2ZC1maWxlLWlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiAoc2VsZWN0KT1cImZpZWxkLmNoYW5nZSAmJiBmaWVsZC5jaGFuZ2UoZmllbGQsICRldmVudCwgZm9ybUdyb3VwLCBjb250ZXh0KVwiIFthY2NlcHRdPVwiZmllbGQuZmlsZUV4dGVuc2lvbnNcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBmbGV4PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEN1c3RvbSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gZmllbGRzWzBdPy5yb3cgJiYgY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwLCByb3c6IGZpZWxkc1swXS5yb3d9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgY3VzdG9tRmllbGRzVGVtcGxhdGVzXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gKChmaWVsZHNbMF0/LnJvdz8/MCkrMSkgJiYgIWN1c3RvbUZpZWxkLmlubGluZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIEZvcm0gYm90dG9tIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBzdWZmaXggYnV0dG9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc3VmZml4QnV0dG9ucyBsZXQtZmllbGQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIERlYnVnIHZhbHVlIC0tPlxyXG4gICAgPGNvZGUgKm5nSWY9XCJkZWJ1Z1ZhbHVlXCI+XHJcbiAgICAgICAgPHByZT57e2Zvcm1WYWx1ZSB8IGpzb259fTwvcHJlPlxyXG4gICAgPC9jb2RlPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L2Rpdj4iXX0=
|
|
@@ -46,6 +46,7 @@ export function getFormGroups(origin, type, args) {
|
|
|
46
46
|
instance: origin,
|
|
47
47
|
index: args?.index ?? i,
|
|
48
48
|
hidden: args?.hidden,
|
|
49
|
+
hide: args?.hide,
|
|
49
50
|
groups: Object.values((value).reduce(function (r, a) {
|
|
50
51
|
if (a.row) {
|
|
51
52
|
r[a.row] = (r[a.row] || []);
|
|
@@ -66,4 +67,4 @@ export function getFormGroups(origin, type, args) {
|
|
|
66
67
|
Utils.sortArray(groups, 'index');
|
|
67
68
|
return groups;
|
|
68
69
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWpGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBZTtJQUM3QyxvQ0FBb0M7SUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNyRDtJQUVELDZDQUE2QztJQUM3QyxJQUFJLGNBQWMsR0FBbUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEksSUFBSSxjQUFjLEVBQUU7UUFDaEIsdUNBQXVDO1FBQ3ZDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELGtEQUFrRDtRQUNsRCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFO1lBQ1YsY0FBYyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDdEM7S0FDSjtJQUVELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBVSxNQUFlLEVBQUUsSUFBYyxFQUFFLElBQTJDO0lBQy9HLG9DQUFvQztJQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0tBQ3JEO0lBRUQsK0NBQStDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQTBCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFMUksc0JBQXNCO0lBQ3RCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHdCQUF3QixDQUFDO1FBQ2pHLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDckMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQzVCLElBQUksRUFBRSxJQUFJO1FBQ1YsUUFBUSxFQUFFLE1BQU07UUFDaEIsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQztRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU07UUFDcEIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQ2hCLE1BQU0sRUFBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBMEIsRUFBRSxDQUFzQjtZQUM5RixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLENBQUMsQ0FBQzthQUNaO1lBRUQsT0FBWSxFQUFFLENBQUM7UUFFbkIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBNkI7S0FDdkQsQ0FBQyxDQUFDLENBQUM7SUFFSix1QkFBdUI7SUFDdkIsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLDBCQUEwQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hGLElBQUksaUJBQWlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3ZELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FDN0M7SUFFRCw4QkFBOEI7SUFDOUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFakMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBlbmRwb2ludE1ldGFkYXRhS2V5IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHNcIjtcclxuaW1wb3J0IHsgZm9ybURlZmluaXRpb25NZXRhZGF0YUtleSwgZm9ybUZpZWxkR3JvdXBzTWV0YWRhdGFLZXksIGZvcm1GaWVsZHNNZXRhZGF0YUtleSB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEZvcm1EZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS1maWVsZC1kZWZpbml0aW9uXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9tb2RlbHMvZm9ybS1maWVsZC1ncm91cC1kZWZpbml0aW9uXCI7XHJcblxyXG4vKipcclxuICogR2V0cyBjbGFzc2VzIGRlY29hcmF0ZWQgd2l0aCBARm9ybVxyXG4gKiBAcGFyYW0gb3JpZ2luIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRGVmaW5pdGlvbihvcmlnaW4/OiBvYmplY3QpOiBGb3JtRGVmaW5pdGlvbiB7XHJcbiAgICAvKiBDaGVjayBpZiBvcmlnaW4gaXMgbm90IGRlZmluZWQgKi9cclxuICAgIGlmICghb3JpZ2luKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPcmlnaW4gb2JqZWN0IG11c3QgYmUgZGVmaW5lZC4nKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBTYXZlIHRoZSBmb3JtIGRlZmludGlvbiBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgIHZhciBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb24gPSBSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1EZWZpbml0aW9uTWV0YWRhdGFLZXksIG9yaWdpbi5jb25zdHJ1Y3RvcikgPz8gbmV3IEZvcm1EZWZpbml0aW9uKHt9KTtcclxuICAgIGlmIChmb3JtRGVmaW5pdGlvbikge1xyXG4gICAgICAgIC8qIFNldCBjb2x1bW4gaW4gdGhlIGZvcm0gZGVmaW5pdGlvbiAqL1xyXG4gICAgICAgIGZvcm1EZWZpbml0aW9uLmZpZWxkR3JvdXBzID0gZ2V0Rm9ybUdyb3VwcyhvcmlnaW4pO1xyXG5cclxuICAgICAgICAvKiBTZXQgZW5kcG9pbnQgZnJvbSB0aGUgZGVjb3JhdG9yIEBBcGksIGlmIGFueSAqL1xyXG4gICAgICAgIHZhciBlbmRwb2ludCA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZW5kcG9pbnRNZXRhZGF0YUtleSwgb3JpZ2luKTtcclxuICAgICAgICBpZiAoZW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgZm9ybURlZmluaXRpb24uZW5kcG9pbnQgPSBlbmRwb2ludDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1EZWZpbml0aW9uO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBwb3BlcnRpZXMgZGVjb2FyYXRlZCB3aXRoIEBGb3JtRmllbGQgZ3JvdXBlZCBieSByb3dcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUdyb3VwczxUID0gYW55PihvcmlnaW4/OiBvYmplY3QsIHR5cGU/OiBUeXBlPFQ+LCBhcmdzPzogUGFydGlhbDxGb3JtRmllbGRHcm91cERlZmluaXRpb248VD4+KTogRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uW10ge1xyXG4gICAgLyogQ2hlY2sgaWYgb3JpZ2luIGlzIG5vdCBkZWZpbmVkICovXHJcbiAgICBpZiAoIW9yaWdpbikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignT3JpZ2luIG9iamVjdCBtdXN0IGJlIGRlZmluZWQuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogR2V0IG1haW4gZmllbGRzIGdyb3VwZWQgYnkgdGhlIGdyb3VwIG5hbWUgKi9cclxuICAgIGNvbnN0IG1haW5GaWVsZEdyb3VwcyA9IFV0aWxzLmdyb3VwQXJyYXlCeShSZWZsZWN0LmdldE1ldGFkYXRhKGZvcm1GaWVsZHNNZXRhZGF0YUtleSwgb3JpZ2luKSBhcyBGb3JtRmllbGREZWZpbml0aW9uW10sIHggPT4geC5ncm91cE5hbWUpO1xyXG5cclxuICAgIC8qIEdyb3VwIHRoZSBmaWVsZHMgKi9cclxuICAgIHZhciBncm91cHMgPSBBcnJheS5mcm9tKG1haW5GaWVsZEdyb3VwcykubWFwKChbXywgdmFsdWVdLCBpOiBudW1iZXIpID0+IG5ldyBGb3JtRmllbGRHcm91cERlZmluaXRpb24oe1xyXG4gICAgICAgIG5hbWU6IHZhbHVlWzBdLmdyb3VwTmFtZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVhZGVyOiB2YWx1ZVswXS5ncm91cEhlYWRlcixcclxuICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIGluc3RhbmNlOiBvcmlnaW4sXHJcbiAgICAgICAgaW5kZXg6IGFyZ3M/LmluZGV4ID8/IGksXHJcbiAgICAgICAgaGlkZGVuOiBhcmdzPy5oaWRkZW4sXHJcbiAgICAgICAgaGlkZTogYXJncz8uaGlkZSxcclxuICAgICAgICBncm91cHM6IChPYmplY3QudmFsdWVzKCh2YWx1ZSkucmVkdWNlKGZ1bmN0aW9uIChyOiBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXSwgYTogRm9ybUZpZWxkRGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoYS5yb3cpIHtcclxuICAgICAgICAgICAgICAgIHJbYS5yb3ddID0gKHJbYS5yb3ddIHx8IFtdKTtcclxuICAgICAgICAgICAgICAgIHJbYS5yb3ddLnB1c2goYSk7XHJcbiAgICAgICAgICAgICAgICByW2Eucm93XS5mb3JFYWNoKCh4LCBpKSA9PiB4LmluZGV4ID0geC5pbmRleCB8fCBpKTtcclxuICAgICAgICAgICAgICAgIFV0aWxzLnNvcnRBcnJheShyW2Eucm93XSwgJ2luZGV4Jyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIDxhbnk+W107XHJcblxyXG4gICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpKSBhcyBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXSlcclxuICAgIH0pKTtcclxuXHJcbiAgICAvKiBHZXQgb2JqZWN0IGdyb3VwcyAqL1xyXG4gICAgdmFyIG9iamVjdEZpZWxkR3JvdXBzID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cHNNZXRhZGF0YUtleSwgb3JpZ2luKTtcclxuICAgIGlmIChvYmplY3RGaWVsZEdyb3VwcyAmJiBBcnJheS5pc0FycmF5KG9iamVjdEZpZWxkR3JvdXBzKSkge1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQob2JqZWN0RmllbGRHcm91cHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIFNvcnQgdGhlIGdyb3VwcyBieSBpbmRleCAqL1xyXG4gICAgVXRpbHMuc29ydEFycmF5KGdyb3VwcywgJ2luZGV4Jyk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwcztcclxufSJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Represents a group of form fields definition.
|
|
3
|
-
* @template
|
|
3
|
+
* @template TEntity - The type of data for the form fields.
|
|
4
4
|
*/
|
|
5
5
|
export class FormFieldGroupDefinition {
|
|
6
6
|
/* Public properties */
|
|
@@ -40,6 +40,11 @@ export class FormFieldGroupDefinition {
|
|
|
40
40
|
* Indicates whether the form field group is hidden.
|
|
41
41
|
*/
|
|
42
42
|
hidden;
|
|
43
|
+
/**
|
|
44
|
+
* Callback function to hide the field group.
|
|
45
|
+
* @property
|
|
46
|
+
*/
|
|
47
|
+
hide;
|
|
43
48
|
/**
|
|
44
49
|
* Constructor for the FormFieldGroupDefinition class.
|
|
45
50
|
* @param init - Optional partial data to initialize the form field group.
|
|
@@ -48,4 +53,4 @@ export class FormFieldGroupDefinition {
|
|
|
48
53
|
Object.assign(this, init);
|
|
49
54
|
}
|
|
50
55
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1ncm91cC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZ3JvdXAtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLHVCQUF1QjtJQUV2Qjs7T0FFRztJQUNJLElBQUksR0FBVyxTQUFTLENBQUM7SUFFaEM7O09BRUc7SUFDSSxLQUFLLENBQVU7SUFFdEI7O09BRUc7SUFDSSxNQUFNLENBQVU7SUFFdkI7O09BRUc7SUFDSSxNQUFNLEdBQW1DLEVBQUUsQ0FBQztJQUVuRDs7T0FFRztJQUNJLE1BQU0sR0FBcUMsRUFBRSxDQUFDO0lBRXJEOztPQUVHO0lBQ0ksU0FBUyxDQUFZO0lBRTVCOztPQUVHO0lBQ0ksSUFBSSxDQUFhO0lBRXhCOztPQUVHO0lBQ0ksUUFBUSxDQUFVO0lBRXpCOztPQUVHO0lBQ0ksTUFBTSxDQUFXO0lBRXhCOzs7T0FHRztJQUNJLElBQUksQ0FBZ0Y7SUFFM0Y7OztPQUdHO0lBQ0gsWUFBbUIsSUFBaUQ7UUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Jhc2UvaW50ZXJmYWNlcy9pZ2VuZXJpYy1mb3JtLWJhc2VcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gXCIuL2Zvcm0tZmllbGQtZGVmaW5pdGlvblwiO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBncm91cCBvZiBmb3JtIGZpZWxkcyBkZWZpbml0aW9uLlxyXG4gKiBAdGVtcGxhdGUgVEVudGl0eSAtIFRoZSB0eXBlIG9mIGRhdGEgZm9yIHRoZSBmb3JtIGZpZWxkcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRHcm91cERlZmluaXRpb248VEVudGl0eSA9IGFueT4ge1xyXG4gICAgLyogUHVibGljIHByb3BlcnRpZXMgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGZvcm0gZmllbGQgZ3JvdXAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSAnZGV0YWlscyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRleCBvZiB0aGUgZm9ybSBmaWVsZCBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGluZGV4PzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVhZGVyIGZvciB0aGUgZm9ybSBmaWVsZCBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhlYWRlcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFycmF5IG9mIGZvcm0gZmllbGQgZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbjxURW50aXR5PltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZXN0ZWQgZ3JvdXBzIG9mIGZvcm0gZmllbGQgZGVmaW5pdGlvbnMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBncm91cHM6IEZvcm1GaWVsZERlZmluaXRpb248VEVudGl0eT5bXVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBvZiBmaWVsZCBzZXRzIGZvciBvcmdhbml6aW5nIGZvcm0gZmllbGRzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRTZXRzPzogc3RyaW5nW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBmaWVsZCBncm91cC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHR5cGU/OiBUeXBlPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnN0YW5jZSBvZiBhbiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb3JtIGZpZWxkIGdyb3VwLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5zdGFuY2U/OiBvYmplY3Q7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9ybSBmaWVsZCBncm91cCBpcyBoaWRkZW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRkZW4/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGlkZSB0aGUgZmllbGQgZ3JvdXAuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU/OiAoeDogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBGb3JtRmllbGRHcm91cERlZmluaXRpb24gY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gaW5pdCAtIE9wdGlvbmFsIHBhcnRpYWwgZGF0YSB0byBpbml0aWFsaXplIHRoZSBmb3JtIGZpZWxkIGdyb3VwLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8Rm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uPFRFbnRpdHk+Pikge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
package/fesm2022/messaia-cdk.mjs
CHANGED
|
@@ -7372,7 +7372,7 @@ class FormFieldDefinition {
|
|
|
7372
7372
|
|
|
7373
7373
|
/**
|
|
7374
7374
|
* Represents a group of form fields definition.
|
|
7375
|
-
* @template
|
|
7375
|
+
* @template TEntity - The type of data for the form fields.
|
|
7376
7376
|
*/
|
|
7377
7377
|
class FormFieldGroupDefinition {
|
|
7378
7378
|
/* Public properties */
|
|
@@ -7412,6 +7412,11 @@ class FormFieldGroupDefinition {
|
|
|
7412
7412
|
* Indicates whether the form field group is hidden.
|
|
7413
7413
|
*/
|
|
7414
7414
|
hidden;
|
|
7415
|
+
/**
|
|
7416
|
+
* Callback function to hide the field group.
|
|
7417
|
+
* @property
|
|
7418
|
+
*/
|
|
7419
|
+
hide;
|
|
7415
7420
|
/**
|
|
7416
7421
|
* Constructor for the FormFieldGroupDefinition class.
|
|
7417
7422
|
* @param init - Optional partial data to initialize the form field group.
|
|
@@ -7464,6 +7469,7 @@ function getFormGroups(origin, type, args) {
|
|
|
7464
7469
|
instance: origin,
|
|
7465
7470
|
index: args?.index ?? i,
|
|
7466
7471
|
hidden: args?.hidden,
|
|
7472
|
+
hide: args?.hide,
|
|
7467
7473
|
groups: Object.values((value).reduce(function (r, a) {
|
|
7468
7474
|
if (a.row) {
|
|
7469
7475
|
r[a.row] = (r[a.row] || []);
|
|
@@ -21230,7 +21236,9 @@ class VdGenericFormComponent {
|
|
|
21230
21236
|
this.buildFields();
|
|
21231
21237
|
}
|
|
21232
21238
|
/* Get filed rows */
|
|
21233
|
-
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
21239
|
+
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
21240
|
+
!x.hidden &&
|
|
21241
|
+
(!x.hide || !x.hide(this.formValue, this.formGroup, this.context)))[0]?.groups;
|
|
21234
21242
|
if (fieldRows) {
|
|
21235
21243
|
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return { ...y }; })]; });
|
|
21236
21244
|
}
|