tuain-ng-forms-lib 17.3.7 → 17.4.0
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/README.md +280 -335
- package/esm2022/lib/classes/forms/action.mjs +3 -3
- package/esm2022/lib/classes/forms/element.mjs +2 -2
- package/esm2022/lib/classes/forms/field.mjs +2 -5
- package/esm2022/lib/classes/forms/form.mjs +4 -6
- package/esm2022/lib/classes/forms/piece-propagate.mjs +1 -1
- package/esm2022/lib/classes/forms/piece.mjs +2 -2
- package/esm2022/lib/classes/forms/section.mjs +2 -2
- package/esm2022/lib/classes/forms/subsection.mjs +1 -1
- package/esm2022/lib/classes/forms/table/action.mjs +1 -1
- package/esm2022/lib/classes/forms/table/column.mjs +1 -1
- package/esm2022/lib/classes/forms/table/row-data.mjs +3 -5
- package/esm2022/lib/classes/forms/table/table.mjs +2 -2
- package/esm2022/lib/components/elements/layout/piece.component.mjs +3 -3
- package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +1 -1
- package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +1 -1
- package/esm2022/lib/components/forms/basic-form.mjs +23 -24
- package/esm2022/lib/interfaces/action.interface.mjs +2 -0
- package/esm2022/lib/interfaces/field.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form-config.interface.mjs +1 -1
- package/esm2022/lib/interfaces/form.interface.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +9 -1
- package/esm2022/lib/interfaces/piece.interface.mjs +2 -0
- package/esm2022/lib/interfaces/section.interface.mjs +2 -0
- package/esm2022/lib/interfaces/sse-live-connection.interface.mjs +2 -0
- package/esm2022/lib/interfaces/table.interface.mjs +2 -0
- package/esm2022/lib/services/file-manager.service.mjs +5 -5
- package/esm2022/lib/services/form-manager.service.mjs +5 -5
- package/esm2022/lib/services/icon-dictionary.service.mjs +1 -1
- package/esm2022/lib/services/sse-live-connection.service.mjs +165 -0
- package/esm2022/lib/tokens/sse-live-connection.token.mjs +7 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/tuain-ng-forms-lib.mjs +213 -53
- package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/classes/forms/action.d.ts +3 -2
- package/lib/classes/forms/element.d.ts +2 -1
- package/lib/classes/forms/field.d.ts +5 -4
- package/lib/classes/forms/form.d.ts +4 -2
- package/lib/classes/forms/piece-propagate.d.ts +2 -1
- package/lib/classes/forms/piece.d.ts +4 -3
- package/lib/classes/forms/section.d.ts +3 -2
- package/lib/classes/forms/subsection.d.ts +2 -1
- package/lib/classes/forms/table/action.d.ts +2 -1
- package/lib/classes/forms/table/column.d.ts +2 -1
- package/lib/classes/forms/table/row-data.d.ts +3 -2
- package/lib/classes/forms/table/table.d.ts +3 -1
- package/lib/components/elements/layout/piece.component.d.ts +2 -2
- package/lib/components/forms/basic-form.d.ts +4 -4
- package/lib/interfaces/action.interface.d.ts +23 -0
- package/lib/interfaces/field.interface.d.ts +70 -0
- package/lib/interfaces/form-config.interface.d.ts +24 -16
- package/lib/interfaces/form.interface.d.ts +106 -0
- package/lib/interfaces/index.d.ts +7 -0
- package/lib/interfaces/piece.interface.d.ts +67 -0
- package/lib/interfaces/section.interface.d.ts +56 -0
- package/lib/interfaces/sse-live-connection.interface.d.ts +59 -0
- package/lib/interfaces/table.interface.d.ts +139 -0
- package/lib/services/file-manager.service.d.ts +4 -4
- package/lib/services/form-manager.service.d.ts +3 -3
- package/lib/services/icon-dictionary.service.d.ts +1 -1
- package/lib/services/sse-live-connection.service.d.ts +48 -0
- package/lib/tokens/sse-live-connection.token.d.ts +7 -0
- package/package.json +2 -1
- package/public-api.d.ts +2 -0
|
@@ -76,7 +76,7 @@ export class FormAction extends FormElement {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
updateRestrictedVisibility(
|
|
79
|
+
updateRestrictedVisibility(_event) {
|
|
80
80
|
const newVisible = this._absoluteVisible && this.viewOnState(this._formState);
|
|
81
81
|
(this._visible !== newVisible) && this.setVisibility(newVisible);
|
|
82
82
|
}
|
|
@@ -103,10 +103,10 @@ export class FormAction extends FormElement {
|
|
|
103
103
|
this[propertyName] = receivedAction[propertyName];
|
|
104
104
|
}
|
|
105
105
|
catch (e) {
|
|
106
|
-
console.
|
|
106
|
+
console.error(`Error actualizando la propiedad ${propertyName} de la acción ${this.actionCode}. ${e}`);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3hDLE1BQU0sS0FBSyxHQUFHO0lBQ1osVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFO0lBQzVELFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRTtJQUM1RCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUU7SUFDdEQsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFO0lBQzVELGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRTtJQUNqRixvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUU7SUFDMUYsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO0NBQ2xGLENBQUE7QUFFRCxNQUFNLE9BQU8sVUFBVyxTQUFRLFdBQVc7SUFDeEIsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNsRCxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLFdBQVcsR0FBVyxFQUFFLENB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LENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsWUFBWSxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlLCBIRUFERVIgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7IEFjdGlvbkRlZmluaXRpb24sIElGb3JtQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5jb25zdCBhdHRycyA9IHtcbiAgYWN0aW9uQ29kZTogeyBuYW1lOiAnX2FjdGlvbkNvZGUnLCBwcm9wYWdhdGU6ICdhY3Rpb25Db2RlJyB9LFxuICBhY3Rpb25OYW1lOiB7IG5hbWU6ICdfYWN0aW9uTmFtZScsIHByb3BhZ2F0ZTogJ2FjdGlvbk5hbWUnIH0sXG4gIGljb25OYW1lOiB7IG5hbWU6ICdfaWNvbk5hbWUnLCBwcm9wYWdhdGU6ICdpY29uTmFtZScgfSxcbiAgaW5Qcm9ncmVzczogeyBuYW1lOiAnX2luUHJvZ3Jlc3MnLCBwcm9wYWdhdGU6ICdpblByb2dyZXNzJyB9LFxuICByZXN0cmljdGVkT25GaWVsZDogeyBuYW1lOiAnX3Jlc3RyaWN0ZWRPbkZpZWxkJywgcHJvcGFnYXRlOiAncmVzdHJpY3RlZE9uRmllbGQnIH0sXG4gIHJlc3RyaWN0ZWRPbk9wZXJhdG9yOiB7IG5hbWU6ICdfcmVzdHJpY3RlZE9uT3BlcmF0b3InLCBwcm9wYWdhdGU6ICdyZXN0cmljdGVkT25PcGVyYXRvcicgfSxcbiAgcmVzdHJpY3RlZE9uVmFsdWU6IHsgbmFtZTogJ19yZXN0cmljdGVkT25WYWx1ZScsIHByb3BhZ2F0ZTogJ3Jlc3RyaWN0ZWRPblZhbHVlJyB9LFxufVxuXG5leHBvcnQgY2xhc3MgRm9ybUFjdGlvbiBleHRlbmRzIEZvcm1FbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uQWN0aXZhdGVkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIF9hY3Rpb25Db2RlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfYWN0aW9uTmFtZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ljb25OYW1lOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBwcml2YXRlIF9uZXdTdGF0ZTogc3RyaW5nO1xuICBwcml2YXRlIF9iYWNrZW5kOiBib29sZWFuO1xuICBwcml2YXRlIF9yZXN0cmljdGVkT25GaWVsZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3Jlc3RyaWN0ZWRPbk9wZXJhdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzdHJpY3RlZE9uVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGFjdGlvbkRlZmluaXRpb246IEFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWc6IElGb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IEVsZW1lbnRUeXBlLkFjdGlvbjtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWN0aW9uQ29kZSwgYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlID8gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlLnRvU3RyaW5nKCkgOiAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFjdGlvbk5hbWUsIGFjdGlvbkRlZmluaXRpb24uYWN0aW9uVGl0bGUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5pY29uTmFtZSwgYWN0aW9uRGVmaW5pdGlvbi5pY29uTmFtZSB8fCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPbkZpZWxkLCBhY3Rpb25EZWZpbml0aW9uLmZpZWxkUmVzdHJpY3RlZENvZGU/LnRvU3RyaW5nKCkgPz8gbnVsbCk7XG4gICAgaWYgKHRoaXMuX3Jlc3RyaWN0ZWRPbkZpZWxkKSB7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uT3BlcmF0b3IsIGFjdGlvbkRlZmluaXRpb24ub3BlcmF0b3JSZXN0cmljdGVkIHx8ICcnKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25WYWx1ZSwgYWN0aW9uRGVmaW5pdGlvbi52YWx1ZVJlc3RyaWN0ZWQgPz8gJycpO1xuICAgIH1cbiAgICB0aGlzLl9iYWNrZW5kID0gYWN0aW9uRGVmaW5pdGlvbj8uc2VydmVyQWN0aW9uID8/IGZhbHNlO1xuICAgIHRoaXMuX25ld1N0YXRlID0gYWN0aW9uRGVmaW5pdGlvbj8ubmV3U3RhdGU7XG4gICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUoJ2xvY2F0aW9uJywgYWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbiB8fCBIRUFERVIpO1xuICB9XG5cbiAgZ2V0IGFjdGlvbkNvZGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2FjdGlvbkNvZGU7IH1cbiAgZ2V0IGFjdGlvbk5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7IH1cbiAgZ2V0IGljb25OYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9pY29uTmFtZTsgfVxuICBnZXQgaW5Qcm9ncmVzcygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2luUHJvZ3Jlc3M7IH1cbiAgZ2V0IG5ld1N0YXRlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9uZXdTdGF0ZTsgfVxuICBnZXQgYmFja2VuZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2JhY2tlbmQ7IH1cbiAgZ2V0IHJlc3RyaWN0ZWRPbkZpZWxkKCk6IHN0cmluZyB8IG51bGwgeyByZXR1cm4gdGhpcy5fcmVzdHJpY3RlZE9uRmllbGQ7IH1cbiAgZ2V0IHJlc3RyaWN0ZWRPbk9wZXJhdG9yKCk6IHN0cmluZyB8IG51bGwgeyByZXR1cm4gdGhpcy5fcmVzdHJpY3RlZE9uT3BlcmF0b3I7IH1cbiAgZ2V0IHJlc3RyaWN0ZWRPblZhbHVlKCk6IHN0cmluZyB8IG51bGwgeyByZXR1cm4gdGhpcy5fcmVzdHJpY3RlZE9uVmFsdWU7IH1cblxuICBzZXQgYWN0aW9uQ29kZShhY3Rpb25Db2RlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5hY3Rpb25Db2RlLCBhY3Rpb25Db2RlKTsgfVxuICBzZXQgYWN0aW9uTmFtZShhY3Rpb25OYW1lKSB7IHRoaXMuc2V0QXR0cihhdHRycy5hY3Rpb25OYW1lLCBhY3Rpb25OYW1lKTsgfVxuICBzZXQgaWNvbk5hbWUoaWNvbk5hbWUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmljb25OYW1lLCBpY29uTmFtZSk7IH1cbiAgc2V0IGluUHJvZ3Jlc3MoaW5Qcm9ncmVzcykgeyB0aGlzLnNldEF0dHIoYXR0cnMuaW5Qcm9ncmVzcywgaW5Qcm9ncmVzcyk7IH1cbiAgc2V0IG5ld1N0YXRlKG5ld1N0YXRlKSB7IHRoaXMuX25ld1N0YXRlID0gbmV3U3RhdGU7IH1cbiAgc2V0IGJhY2tlbmQoYmFja2VuZCkgeyB0aGlzLl9iYWNrZW5kID0gYmFja2VuZDsgfVxuICBzZXQgcmVzdHJpY3RlZE9uRmllbGQocmVzdHJpY3RlZE9uRmllbGQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPbkZpZWxkLCByZXN0cmljdGVkT25GaWVsZCk7IH1cbiAgc2V0IHJlc3RyaWN0ZWRPbk9wZXJhdG9yKHJlc3RyaWN0ZWRPbk9wZXJhdG9yKSB7IHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25PcGVyYXRvciwgcmVzdHJpY3RlZE9uT3BlcmF0b3IpOyB9XG4gIHNldCByZXN0cmljdGVkT25WYWx1ZShyZXN0cmljdGVkT25WYWx1ZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uVmFsdWUsIHJlc3RyaWN0ZWRPblZhbHVlKTsgfVxuXG4gIHN0YXJ0KCk6IHZvaWQgeyB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlOyB9XG4gIHN0b3AoKTogdm9pZCB7IHRoaXMuaW5Qcm9ncmVzcyA9IGZhbHNlOyB9XG5cbiAgb3ZlcnJpZGUgY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm06IGFueSwgZm9ybUNoYW5nZVN1YmplY3Q6IGFueSk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgaWYgKHRoaXMuX3Jlc3RyaWN0ZWRPbkZpZWxkKSB7XG4gICAgICBjb25zdCByZWxhdGVkRmllbGQgPSB0aGlzLl9mb3JtLmZpZWxkcz8uW3RoaXMuX3Jlc3RyaWN0ZWRPbkZpZWxkXTtcbiAgICAgIGlmIChyZWxhdGVkRmllbGQpIHtcbiAgICAgICAgcmVsYXRlZEZpZWxkLmVkaXRpb25GaW5pc2hcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoZXZlbnQ6IGFueSkgPT4gdGhpcy51cGRhdGVSZXN0cmljdGVkVmlzaWJpbGl0eShldmVudCksXG4gICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiBjb25zb2xlLmVycm9yKGBFcnJvciBlbiByZXN0cmljdGVkIHZpc2liaWxpdHkgc3Vic2NyaXB0aW9uOiAke2Vycn1gKVxuICAgICAgICAgIH0pO1xuICAgICAgICByZWxhdGVkRmllbGQuZWRpdGlvblBhcnRpYWxcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoZXZlbnQ6IGFueSkgPT4gdGhpcy51cGRhdGVSZXN0cmljdGVkVmlzaWJpbGl0eShldmVudCksXG4gICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiBjb25zb2xlLmVycm9yKGBFcnJvciBlbiByZXN0cmljdGVkIHZpc2liaWxpdHkgc3Vic2NyaXB0aW9uOiAke2Vycn1gKVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVJlc3RyaWN0ZWRWaXNpYmlsaXR5KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdWaXNpYmxlID0gdGhpcy5fYWJzb2x1dGVWaXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUodGhpcy5fZm9ybVN0YXRlKTtcbiAgICAodGhpcy5fdmlzaWJsZSAhPT0gbmV3VmlzaWJsZSkgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KG5ld1Zpc2libGUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlld09uU3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjdGlvblZpc2libGUgPSAodGhpcy52aXNpYmxlU3RhdGVzICYmIHN0YXRlKSA/IHRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSkgOiBmYWxzZTtcbiAgICBpZiAoYWN0aW9uVmlzaWJsZSAmJiB0aGlzLl9mb3JtICYmIHRoaXMuX3Jlc3RyaWN0ZWRPbkZpZWxkKSB7XG4gICAgICBjb25zdCByZWxhdGVkRmllbGQgPSB0aGlzLl9mb3JtLmZpZWxkcz8uW3RoaXMuX3Jlc3RyaWN0ZWRPbkZpZWxkXTtcbiAgICAgIGlmIChyZWxhdGVkRmllbGQpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHJlbGF0ZWRGaWVsZC52YWx1ZTtcbiAgICAgICAgaWYgKCh0aGlzLl9yZXN0cmljdGVkT25PcGVyYXRvciA9PT0gJz09JyAmJiBmaWVsZFZhbHVlICE9PSB0aGlzLl9yZXN0cmljdGVkT25WYWx1ZSlcbiAgICAgICAgICB8fCAodGhpcy5fcmVzdHJpY3RlZE9uT3BlcmF0b3IgPT09ICchPScgJiYgZmllbGRWYWx1ZSA9PT0gdGhpcy5fcmVzdHJpY3RlZE9uVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb25WaXNpYmxlO1xuICB9XG5cbiAgZ2V0IGFjdGlvbkFjdGl2YXRlZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4geyByZXR1cm4gdGhpcy5fYWN0aW9uQWN0aXZhdGVkLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgbm90aWZ5QWN0aXZhdGlvbigpOiB2b2lkIHsgdGhpcy5fYWN0aW9uQWN0aXZhdGVkLm5leHQodGhpcy5fYWN0aW9uQ29kZSk7IH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHJlY2VpdmVkQWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiByZWNlaXZlZEFjdGlvbikge1xuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gJ2FjdGlvbkNvZGUnICYmIHByb3BlcnR5TmFtZSAhPT0gJ2FjdGlvbklkJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICh0aGlzIGFzIGFueSlbcHJvcGVydHlOYW1lXSA9IHJlY2VpdmVkQWN0aW9uW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgYWN0dWFsaXphbmRvIGxhIHByb3BpZWRhZCAke3Byb3BlcnR5TmFtZX0gZGUgbGEgYWNjacOzbiAke3RoaXMuYWN0aW9uQ29kZX0uICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSXhDLE1BQU0sS0FBSyxHQUFHO0lBQ1osVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFO0lBQzVELFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRTtJQUM1RCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUU7SUFDdEQsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFO0lBQzVELGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRTtJQUNqRixvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUU7SUFDMUYsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO0NBQ2xGLENBQUE7QUFFRCxNQUFNLE9BQU8sVUFBVyxTQUFRLFdBQVc7SUFDeEIsZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNsRCxXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLFdBQVcsR0FBVyxFQUFFLENB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QVksQ0FBQyxZQUFZLENBQUMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxZQUFZLGlCQUFpQixJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pHLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIEhFQURFUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgQWN0aW9uRGVmaW5pdGlvbiwgRmllbGRFZGl0aW9uRXZlbnQsIElGb3JtQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBJQWN0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hY3Rpb24uaW50ZXJmYWNlJztcblxuY29uc3QgYXR0cnMgPSB7XG4gIGFjdGlvbkNvZGU6IHsgbmFtZTogJ19hY3Rpb25Db2RlJywgcHJvcGFnYXRlOiAnYWN0aW9uQ29kZScgfSxcbiAgYWN0aW9uTmFtZTogeyBuYW1lOiAnX2FjdGlvbk5hbWUnLCBwcm9wYWdhdGU6ICdhY3Rpb25OYW1lJyB9LFxuICBpY29uTmFtZTogeyBuYW1lOiAnX2ljb25OYW1lJywgcHJvcGFnYXRlOiAnaWNvbk5hbWUnIH0sXG4gIGluUHJvZ3Jlc3M6IHsgbmFtZTogJ19pblByb2dyZXNzJywgcHJvcGFnYXRlOiAnaW5Qcm9ncmVzcycgfSxcbiAgcmVzdHJpY3RlZE9uRmllbGQ6IHsgbmFtZTogJ19yZXN0cmljdGVkT25GaWVsZCcsIHByb3BhZ2F0ZTogJ3Jlc3RyaWN0ZWRPbkZpZWxkJyB9LFxuICByZXN0cmljdGVkT25PcGVyYXRvcjogeyBuYW1lOiAnX3Jlc3RyaWN0ZWRPbk9wZXJhdG9yJywgcHJvcGFnYXRlOiAncmVzdHJpY3RlZE9uT3BlcmF0b3InIH0sXG4gIHJlc3RyaWN0ZWRPblZhbHVlOiB7IG5hbWU6ICdfcmVzdHJpY3RlZE9uVmFsdWUnLCBwcm9wYWdhdGU6ICdyZXN0cmljdGVkT25WYWx1ZScgfSxcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1BY3Rpb24gZXh0ZW5kcyBGb3JtRWxlbWVudCBpbXBsZW1lbnRzIElBY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpb25BY3RpdmF0ZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgX2FjdGlvbkNvZGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9hY3Rpb25OYW1lOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaWNvbk5hbWU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9pblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgX25ld1N0YXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2JhY2tlbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3Jlc3RyaWN0ZWRPbkZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzdHJpY3RlZE9uT3BlcmF0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZXN0cmljdGVkT25WYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbjogQWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZzogSUZvcm1Db25maWcpIHtcbiAgICBzdXBlcihhY3Rpb25EZWZpbml0aW9uLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gRWxlbWVudFR5cGUuQWN0aW9uO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hY3Rpb25Db2RlLCBhY3Rpb25EZWZpbml0aW9uLmFjdGlvbkNvZGUgPyBhY3Rpb25EZWZpbml0aW9uLmFjdGlvbkNvZGUudG9TdHJpbmcoKSA6ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWN0aW9uTmFtZSwgYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmljb25OYW1lLCBhY3Rpb25EZWZpbml0aW9uLmljb25OYW1lIHx8ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uRmllbGQsIGFjdGlvbkRlZmluaXRpb24uZmllbGRSZXN0cmljdGVkQ29kZT8udG9TdHJpbmcoKSA/PyBudWxsKTtcbiAgICBpZiAodGhpcy5fcmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25PcGVyYXRvciwgYWN0aW9uRGVmaW5pdGlvbi5vcGVyYXRvclJlc3RyaWN0ZWQgfHwgJycpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPblZhbHVlLCBhY3Rpb25EZWZpbml0aW9uLnZhbHVlUmVzdHJpY3RlZCA/PyAnJyk7XG4gICAgfVxuICAgIHRoaXMuX2JhY2tlbmQgPSBhY3Rpb25EZWZpbml0aW9uPy5zZXJ2ZXJBY3Rpb24gPz8gZmFsc2U7XG4gICAgdGhpcy5fbmV3U3RhdGUgPSBhY3Rpb25EZWZpbml0aW9uPy5uZXdTdGF0ZTtcbiAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBhY3Rpb25EZWZpbml0aW9uLnBvc2l0aW9uIHx8IEhFQURFUik7XG4gIH1cblxuICBnZXQgYWN0aW9uQ29kZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fYWN0aW9uQ29kZTsgfVxuICBnZXQgYWN0aW9uTmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fYWN0aW9uTmFtZTsgfVxuICBnZXQgaWNvbk5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ljb25OYW1lOyB9XG4gIGdldCBpblByb2dyZXNzKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faW5Qcm9ncmVzczsgfVxuICBnZXQgbmV3U3RhdGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX25ld1N0YXRlOyB9XG4gIGdldCBiYWNrZW5kKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fYmFja2VuZDsgfVxuICBnZXQgcmVzdHJpY3RlZE9uRmllbGQoKTogc3RyaW5nIHwgbnVsbCB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25GaWVsZDsgfVxuICBnZXQgcmVzdHJpY3RlZE9uT3BlcmF0b3IoKTogc3RyaW5nIHwgbnVsbCB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25PcGVyYXRvcjsgfVxuICBnZXQgcmVzdHJpY3RlZE9uVmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25WYWx1ZTsgfVxuXG4gIHNldCBhY3Rpb25Db2RlKGFjdGlvbkNvZGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmFjdGlvbkNvZGUsIGFjdGlvbkNvZGUpOyB9XG4gIHNldCBhY3Rpb25OYW1lKGFjdGlvbk5hbWUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmFjdGlvbk5hbWUsIGFjdGlvbk5hbWUpOyB9XG4gIHNldCBpY29uTmFtZShpY29uTmFtZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuaWNvbk5hbWUsIGljb25OYW1lKTsgfVxuICBzZXQgaW5Qcm9ncmVzcyhpblByb2dyZXNzKSB7IHRoaXMuc2V0QXR0cihhdHRycy5pblByb2dyZXNzLCBpblByb2dyZXNzKTsgfVxuICBzZXQgbmV3U3RhdGUobmV3U3RhdGUpIHsgdGhpcy5fbmV3U3RhdGUgPSBuZXdTdGF0ZTsgfVxuICBzZXQgYmFja2VuZChiYWNrZW5kKSB7IHRoaXMuX2JhY2tlbmQgPSBiYWNrZW5kOyB9XG4gIHNldCByZXN0cmljdGVkT25GaWVsZChyZXN0cmljdGVkT25GaWVsZCkgeyB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uRmllbGQsIHJlc3RyaWN0ZWRPbkZpZWxkKTsgfVxuICBzZXQgcmVzdHJpY3RlZE9uT3BlcmF0b3IocmVzdHJpY3RlZE9uT3BlcmF0b3IpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPbk9wZXJhdG9yLCByZXN0cmljdGVkT25PcGVyYXRvcik7IH1cbiAgc2V0IHJlc3RyaWN0ZWRPblZhbHVlKHJlc3RyaWN0ZWRPblZhbHVlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25WYWx1ZSwgcmVzdHJpY3RlZE9uVmFsdWUpOyB9XG5cbiAgc3RhcnQoKTogdm9pZCB7IHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7IH1cbiAgc3RvcCgpOiB2b2lkIHsgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7IH1cblxuICBvdmVycmlkZSBjb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybTogYW55LCBmb3JtQ2hhbmdlU3ViamVjdDogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICBpZiAodGhpcy5fcmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRGaWVsZCA9IHRoaXMuX2Zvcm0uZmllbGRzPy5bdGhpcy5fcmVzdHJpY3RlZE9uRmllbGRdO1xuICAgICAgaWYgKHJlbGF0ZWRGaWVsZCkge1xuICAgICAgICByZWxhdGVkRmllbGQuZWRpdGlvbkZpbmlzaFxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChldmVudDogRmllbGRFZGl0aW9uRXZlbnQpID0+IHRoaXMudXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoZXZlbnQpLFxuICAgICAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+IGNvbnNvbGUuZXJyb3IoYEVycm9yIGVuIHJlc3RyaWN0ZWQgdmlzaWJpbGl0eSBzdWJzY3JpcHRpb246ICR7ZXJyfWApXG4gICAgICAgICAgfSk7XG4gICAgICAgIHJlbGF0ZWRGaWVsZC5lZGl0aW9uUGFydGlhbFxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChldmVudDogRmllbGRFZGl0aW9uRXZlbnQpID0+IHRoaXMudXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoZXZlbnQpLFxuICAgICAgICAgICAgZXJyb3I6IChlcnI6IHVua25vd24pID0+IGNvbnNvbGUuZXJyb3IoYEVycm9yIGVuIHJlc3RyaWN0ZWQgdmlzaWJpbGl0eSBzdWJzY3JpcHRpb246ICR7ZXJyfWApXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoX2V2ZW50OiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3QgbmV3VmlzaWJsZSA9IHRoaXMuX2Fic29sdXRlVmlzaWJsZSAmJiB0aGlzLnZpZXdPblN0YXRlKHRoaXMuX2Zvcm1TdGF0ZSk7XG4gICAgKHRoaXMuX3Zpc2libGUgIT09IG5ld1Zpc2libGUpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShuZXdWaXNpYmxlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpZXdPblN0YXRlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBhY3Rpb25WaXNpYmxlID0gKHRoaXMudmlzaWJsZVN0YXRlcyAmJiBzdGF0ZSkgPyB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpIDogZmFsc2U7XG4gICAgaWYgKGFjdGlvblZpc2libGUgJiYgdGhpcy5fZm9ybSAmJiB0aGlzLl9yZXN0cmljdGVkT25GaWVsZCkge1xuICAgICAgY29uc3QgcmVsYXRlZEZpZWxkID0gdGhpcy5fZm9ybS5maWVsZHM/Llt0aGlzLl9yZXN0cmljdGVkT25GaWVsZF07XG4gICAgICBpZiAocmVsYXRlZEZpZWxkKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSByZWxhdGVkRmllbGQudmFsdWU7XG4gICAgICAgIGlmICgodGhpcy5fcmVzdHJpY3RlZE9uT3BlcmF0b3IgPT09ICc9PScgJiYgZmllbGRWYWx1ZSAhPT0gdGhpcy5fcmVzdHJpY3RlZE9uVmFsdWUpXG4gICAgICAgICAgfHwgKHRoaXMuX3Jlc3RyaWN0ZWRPbk9wZXJhdG9yID09PSAnIT0nICYmIGZpZWxkVmFsdWUgPT09IHRoaXMuX3Jlc3RyaWN0ZWRPblZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uVmlzaWJsZTtcbiAgfVxuXG4gIGdldCBhY3Rpb25BY3RpdmF0ZWQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHsgcmV0dXJuIHRoaXMuX2FjdGlvbkFjdGl2YXRlZC5hc09ic2VydmFibGUoKTsgfVxuXG4gIG5vdGlmeUFjdGl2YXRpb24oKTogdm9pZCB7IHRoaXMuX2FjdGlvbkFjdGl2YXRlZC5uZXh0KHRoaXMuX2FjdGlvbkNvZGUpOyB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcihyZWNlaXZlZEFjdGlvbjogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcmVjZWl2ZWRBY3Rpb24pIHtcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25Db2RlJyAmJiBwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25JZCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAodGhpcyBhcyBhbnkpW3Byb3BlcnR5TmFtZV0gPSByZWNlaXZlZEFjdGlvbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgYWN0dWFsaXphbmRvIGxhIHByb3BpZWRhZCAke3Byb3BlcnR5TmFtZX0gZGUgbGEgYWNjacOzbiAke3RoaXMuYWN0aW9uQ29kZX0uICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -15,11 +15,11 @@ export class FormElement extends FormPiecePropagate {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
catch (e) {
|
|
18
|
-
console.
|
|
18
|
+
console.error(`Atributo ${attrName} no presente o valor ${value} inconsistente. ${e}`);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
isField() { return this.elementType === ElementType.Field; }
|
|
22
22
|
isAction() { return this.elementType === ElementType.Action; }
|
|
23
23
|
isTable() { return this.elementType === ElementType.Table; }
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJL0MsTUFBTSxPQUFnQixXQUFZLFNBQVEsa0JBQWtCO0lBQzFELFdBQVcsR0FBa0IsSUFBSSxDQUFDO0lBRWxDLFlBQVksaUJBQWtDLEVBQUUsVUFBdUI7UUFDckUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBc0IsRUFBRSxLQUFVO1FBQ3hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUksSUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMxQixJQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksUUFBUSx3QkFBd0IsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3RFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVBpZWNlUHJvcGFnYXRlIH0gZnJvbSAnLi9waWVjZS1wcm9wYWdhdGUnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEVsZW1lbnRBdHRyaWJ1dGUsIElGb3JtQ29uZmlnLCBQaWVjZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IElGb3JtRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGllY2UuaW50ZXJmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1FbGVtZW50IGV4dGVuZHMgRm9ybVBpZWNlUHJvcGFnYXRlIGltcGxlbWVudHMgSUZvcm1FbGVtZW50IHtcbiAgZWxlbWVudFR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnREZWZpbml0aW9uOiBQaWVjZURlZmluaXRpb24sIGZvcm1Db25maWc6IElGb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudERlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICB9XG5cbiAgc2V0QXR0cihhdHRyOiBFbGVtZW50QXR0cmlidXRlLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgeyBuYW1lOiBhdHRyTmFtZSwgcHJvcGFnYXRlOiBuYW1lIH0gPSBhdHRyO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAodGhpcyBhcyBhbnkpW2F0dHJOYW1lXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbYXR0ck5hbWVdID0gdmFsdWU7XG4gICAgICAgIG5hbWUgJiYgdGhpcy5wcm9wYWdhdGVBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEF0cmlidXRvICR7YXR0ck5hbWV9IG5vIHByZXNlbnRlIG8gdmFsb3IgJHt2YWx1ZX0gaW5jb25zaXN0ZW50ZS4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlzRmllbGQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBFbGVtZW50VHlwZS5GaWVsZDsgfVxuICBpc0FjdGlvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZWxlbWVudFR5cGUgPT09IEVsZW1lbnRUeXBlLkFjdGlvbjsgfVxuICBpc1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gRWxlbWVudFR5cGUuVGFibGU7IH1cbn1cbiJdfQ==
|
|
@@ -311,7 +311,7 @@ export class FieldDescriptor extends FormElement {
|
|
|
311
311
|
/**
|
|
312
312
|
* @deprecated Since v17. Use options instead. Will be removed in v19.
|
|
313
313
|
*/
|
|
314
|
-
setFieldOptions(newOptions) {
|
|
314
|
+
setFieldOptions(newOptions) { this.options = newOptions; }
|
|
315
315
|
/**
|
|
316
316
|
* @deprecated Since v17. Use intrinsicErrorMessage instead. Will be removed in v19.
|
|
317
317
|
*/
|
|
@@ -337,7 +337,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
337
337
|
&& Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0) {
|
|
338
338
|
return true;
|
|
339
339
|
}
|
|
340
|
-
;
|
|
341
340
|
if (this._fieldType === this._formConfig.fieldTypes.phone) {
|
|
342
341
|
if (!Array.isArray(fieldCurrentValue)) {
|
|
343
342
|
return true;
|
|
@@ -347,7 +346,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
347
346
|
}
|
|
348
347
|
return false;
|
|
349
348
|
}
|
|
350
|
-
;
|
|
351
349
|
const arrayFieldTypes = this._formConfig.arrayFieldTypes ?? null;
|
|
352
350
|
if (arrayFieldTypes && Object.keys(arrayFieldTypes).includes(this._fieldType)) {
|
|
353
351
|
let arraySize = arrayFieldTypes[this._fieldType];
|
|
@@ -357,7 +355,6 @@ export class FieldDescriptor extends FormElement {
|
|
|
357
355
|
}
|
|
358
356
|
return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length < arraySize);
|
|
359
357
|
}
|
|
360
|
-
;
|
|
361
358
|
return fieldCurrentValue === '';
|
|
362
359
|
}
|
|
363
360
|
notifyEditionPartial() {
|
|
@@ -481,4 +478,4 @@ export class FieldDescriptor extends FormElement {
|
|
|
481
478
|
return true;
|
|
482
479
|
}
|
|
483
480
|
}
|
|
484
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLGFBQWEsR0FBRztJQUNwQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVc7SUFDcEcsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTTtJQUNsRyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7SUFDcEcsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQy9ELFNBQVMsRUFBRSxFQUFF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QUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeW4gZnJvbSAneW4nO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIE5PX0VSUk9SIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBGaWVsZERlZmluaXRpb24sIEZpZWxkRWRpdGlvbkV2ZW50LCBGaWVsZEN1c3RvbUV2ZW50RGF0YSwgSUZvcm1Db25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tY29uZmlnLmludGVyZmFjZSc7XG5cbmNvbnN0IFVOREVGSU5FRCA9ICd1bmRlZmluZWQnO1xuXG5jb25zdCBERUZBVUxUX0VSUk9SX1RZUEUgPSAnZXJyb3InO1xuY29uc3QgREVGQVVMVF9DQVBUVVJFX1RZUEUgPSAnSU5QVVQnO1xuY29uc3QgREVGQVVMVF9BTElHTk1FTlQgPSAnbGVmdCc7XG5cbmNvbnN0IFNURF9NQVhfTEVOR1RIID0gNTA7XG5jb25zdCBCSUdfTUFYX0xFTkdUSCA9IDUwMDtcblxuY29uc3QgZGlyZWN0Q2hhbmdlcyA9IFtcbiAgJ2RlZmF1bHRFZGl0YWJsZScsICdkZWZhdWx0VmFsdWUnLCAnYWxpZ25tZW50JywgJ3JlcXVpcmVkJywgJ2Vycm9yQ29kZScsICdlcnJvck1lc3NhZ2UnLCAnZXJyb3JUeXBlJyxcbiAgJ3Rvb2x0aXAnLCAnaW5mbycsICdmb3JtYXQnLCAnaW50cmluc2ljRXJyb3JNZXNzYWdlJywgJ291dHB1dE9ubHknLCAnY2FwdHVyZVR5cGUnLCAndGl0bGUnLCAndHlwZScsXG4gICdtYXhMZW5ndGgnLCAnbWF4VmFsdWUnLCAnbWluTGVuZ3RoJywgJ21pblZhbHVlJywgJ3ZhbGlkYXRlT25TZXJ2ZXInLCAnc2VydmVyQWN0aW9uJywgJ3Zpc2libGVMYWJlbCcsXG4gICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJyxcbl07XG5cbmNvbnN0IGF0dHJzID0ge1xuICBjYXB0dXJlVHlwZTogeyBuYW1lOiAnX2NhcHR1cmVUeXBlJywgcHJvcGFnYXRlOiAnY2FwdHVyZVR5cGUnIH0sXG4gIGVycm9yQ29kZTogeyBuYW1lOiAnX2Vycm9yQ29kZScsIHByb3BhZ2F0ZTogJ2Vycm9yQ29kZScgfSxcbiAgZXJyb3JNZXNzYWdlOiB7IG5hbWU6ICdfZXJyb3JNZXNzYWdlJywgcHJvcGFnYXRlOiAnZXJyb3JNZXNzYWdlJyB9LFxuICBlcnJvclR5cGU6IHsgbmFtZTogJ19lcnJvclR5cGUnLCBwcm9wYWdhdGU6ICdlcnJvclR5cGUnIH0sXG4gIGRlZmF1bHRWYWx1ZTogeyBuYW1lOiAnX2RlZmF1bHRWYWx1ZScsIHByb3BhZ2F0ZTogJ2RlZmF1bHRWYWx1ZScgfSxcbiAgZGVmYXVsdEVkaXRhYmxlOiB7IG5hbWU6ICdfZGVmYXVsdEVkaXRhYmxlJywgcHJvcGFnYXRlOiAnZGVmYXVsdEVkaXRhYmxlJyB9LFxuICBmaWVsZEFsaWdubWVudDogeyBuYW1lOiAnX2ZpZWxkQWxpZ25tZW50JywgcHJvcGFnYXRlOiAnYWxpZ25tZW50JyB9LFxuICBmaWVsZENvZGU6IHsgbmFtZTogJ19maWVsZENvZGUnLCBwcm9wYWdhdGU6ICdjb2RlJyB9LFxuICBmaWVsZEluZm86IHsgbmFtZTogJ19maWVsZEluZm8nLCBwcm9wYWdhdGU6ICdpbmZvJyB9LFxuICBmaWVsZFJlcXVpcmVkOiB7IG5hbWU6ICdfZmllbGRSZXF1aXJlZCcsIHByb3BhZ2F0ZTogJ3JlcXVpcmVkJyB9LFxuICBmaWVsZFRpdGxlOiB7IG5hbWU6ICdfZmllbGRUaXRsZScsIHByb3BhZ2F0ZTogJ3RpdGxlJyB9LFxuICBmaWVsZFR5cGU6IHsgbmFtZTogJ19maWVsZFR5cGUnLCBwcm9wYWdhdGU6ICd0eXBlJyB9LFxuICBmaWVsZEZvcm1hdDogeyBuYW1lOiAnX2ZpZWxkRm9ybWF0JywgcHJvcGFnYXRlOiAnZm9ybWF0JyB9LFxuICBmaWVsZE9wdGlvbnM6IHsgbmFtZTogJ19maWVsZE9wdGlvbnMnLCBwcm9wYWdhdGU6ICdvcHRpb25zJyB9LFxuICBmb2N1czogeyBuYW1lOiAnX2ZvY3VzJywgcHJvcGFnYXRlOiAnZm9jdXMnIH0sXG4gIGhhc0NoYW5nZWQ6IHsgbmFtZTogJ19oYXNDaGFuZ2VkJywgcHJvcGFnYXRlOiAnaGFzQ2hhbmdlZCcgfSxcbiAgaW50cmluc2ljRXJyb3JNZXNzYWdlOiB7IG5hbWU6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJywgcHJvcGFnYXRlOiBudWxsIGFzIHN0cmluZyB8IG51bGwgfSxcbiAgbWF4TGVuZ3RoOiB7IG5hbWU6ICdfbWF4TGVuZ3RoJywgcHJvcGFnYXRlOiAnbWF4TGVuZ3RoJyB9LFxuICBtYXhWYWx1ZTogeyBuYW1lOiAnX21heFZhbHVlJywgcHJvcGFnYXRlOiAnbWF4VmFsdWUnIH0sXG4gIG1pbkxlbmd0aDogeyBuYW1lOiAnX21pbkxlbmd0aCcsIHByb3BhZ2F0ZTogJ21pbkxlbmd0aCcgfSxcbiAgbWluVmFsdWU6IHsgbmFtZTogJ19taW5WYWx1ZScsIHByb3BhZ2F0ZTogJ21pblZhbHVlJyB9LFxuICBvblZhbGlkYXRpb246IHsgbmFtZTogJ19vblZhbGlkYXRpb24nLCBwcm9wYWdhdGU6ICdvblZhbGlkYXRpb24nIH0sXG4gIG91dHB1dE9ubHk6IHsgbmFtZTogJ19vdXRwdXRPbmx5JywgcHJvcGFnYXRlOiAnb3V0cHV0T25seScgfSxcbiAgcGxhY2Vob2xkZXI6IHsgbmFtZTogJ19wbGFjZWhvbGRlcicsIHByb3BhZ2F0ZTogJ3BsYWNlaG9sZGVyJyB9LFxuICB0b29sdGlwVGV4dDogeyBuYW1lOiAnX3Rvb2x0aXBUZXh0JywgcHJvcGFnYXRlOiAndG9vbHRpcCcgfSxcbiAgdmFsaWRhdGVPblNlcnZlcjogeyBuYW1lOiAnX3ZhbGlkYXRlT25TZXJ2ZXInLCBwcm9wYWdhdGU6ICd2YWxpZGF0ZU9uU2VydmVyJyB9LFxuICB2YWx1ZTogeyBuYW1lOiAnX3ZhbHVlJywgcHJvcGFnYXRlOiAndmFsdWUnIH0sXG4gIHZpc2libGVMYWJlbDogeyBuYW1lOiAnX3Zpc2libGVMYWJlbCcsIHByb3BhZ2F0ZTogJ3Zpc2libGVMYWJlbCcgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsRXZlbnQge1xuICBjb2RlOiBzdHJpbmc7XG4gIGRldGFpbDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkT3B0aW9uIHtcbiAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUV2ZW50ID0gbmV3IFN1YmplY3Q8RmllbGRDdXN0b21FdmVudERhdGE+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxGaWVsZEVkaXRpb25FdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvblBhcnRpYWwgPSBuZXcgU3ViamVjdDxGaWVsZEVkaXRpb25FdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsUmVxdWVzdCA9IG5ldyBTdWJqZWN0PERldGFpbEV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2Vycm9yVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Vycm9yQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Vycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX21pblZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX21heFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX21heExlbmd0aDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWluTGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9mb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9vblZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogYW55O1xuICBwcml2YXRlIF92aXNpYmxlTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2FwdHVyZVR5cGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IGFueSA9ICcnO1xuICBwcml2YXRlIF9kZWZhdWx0RWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZXh0ZXJuYWxWYWx1ZTogYW55O1xuICBwcml2YXRlIF9maWVsZEFsaWdubWVudDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkSW5mbzogYW55ID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRUaXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkRm9ybWF0OiBSZWdFeHAgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaGFzQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9vdXRwdXRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Rvb2x0aXBUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWVsZENvZGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWVsZE9wdGlvbnM6IEZpZWxkT3B0aW9uW10gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfY3VzdG9tRW1wdHk6ICgodGhpczogRmllbGREZXNjcmlwdG9yKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZDogRmllbGREZWZpbml0aW9uLCBmb3JtQ29uZmlnOiBJRm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IEVsZW1lbnRUeXBlLkZpZWxkO1xuICAgIGNvbnN0IGZsZDogYW55ID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRDb2RlLCBmbGQuZmllbGRDb2RlKTtcbiAgICB0aGlzLnRpdGxlID0gZmxkLmZpZWxkVGl0bGUgPz8gdGhpcy5fZmllbGRDb2RlO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmbGQucGxhY2Vob2xkZXIgPz8gdGhpcy50aXRsZTtcbiAgICB0aGlzLnR5cGUgPSBmbGQuZmllbGRUeXBlQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmxkLmNhcHR1cmVUeXBlID8/IERFRkFVTFRfQ0FQVFVSRV9UWVBFO1xuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmxkLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZSA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLl9maWVsZFR5cGVdICE9IG51bGwpXG4gICAgICA/IHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLl9maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiBERUZBVUxUX0FMSUdOTUVOVDtcbiAgICBjb25zdCBmaWVsZEFsaWdubWVudCA9IChmbGQuYWxpZ25tZW50ICE9IG51bGwpID8gZmxkLmFsaWdubWVudC50b0xvd2VyQ2FzZSgpIDogZGVmYXVsdFR5cGVBbGlnbm1lbnQ7XG4gICAgdGhpcy5hbGlnbm1lbnQgPSBmaWVsZEFsaWdubWVudDtcbiAgICB0aGlzLmluZm8gPSBmbGQuaW5mbyB8fCAnJztcbiAgICBsZXQgZmllbGRGb3JtYXQ7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmbGQuZm9ybWF0ICYmIHR5cGVvZiBmbGQuZm9ybWF0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBmaWVsZEZvcm1hdCA9IG5ldyBSZWdFeHAoZmxkLmZvcm1hdCk7XG4gICAgICB9IGVsc2UgaWYgKGZsZC5mb3JtYXQ/LnJlZ0V4cCkge1xuICAgICAgICBmaWVsZEZvcm1hdCA9IG5ldyBSZWdFeHAoZmxkLmZvcm1hdD8ucmVnRXhwKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZm9ybWF0ID0gZmllbGRGb3JtYXQ7XG4gICAgdGhpcy52YWxpZGF0ZU9uU2VydmVyID0gZmxkLnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLnRvb2x0aXAgPSBmbGQudG9vbHRpcCB8fCAnJztcbiAgICB0aGlzLmRlZmF1bHRFZGl0YWJsZSA9IHRoaXMuZW5hYmxlZDtcbiAgICB0aGlzLnJlcXVpcmVkID0gZmxkLnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMub3V0cHV0T25seSA9IGZsZC5vdXRwdXRPbmx5ID8/IGZhbHNlO1xuICAgIHRoaXMubWluVmFsdWUgPSBmbGQubWluVmFsdWU7XG4gICAgdGhpcy5tYXhWYWx1ZSA9IGZsZC5tYXhWYWx1ZTtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IGZsZC5taW5MZW5ndGggPz8gMDtcbiAgICB0aGlzLm1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggfHwgKHRoaXMuX2NhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSB0aGlzLl9mb3JtQ29uZmlnPy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXT8ubWVzc2FnZVxuICAgICAgPz8gdGhpcy5fZm9ybUNvbmZpZz8uZmllbGRWYWxpZGF0aW9ucz8uREVGQVVMVD8ubWVzc2FnZSA/PyAnJztcblxuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMudmlzaWJsZUxhYmVsID0gZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5vcHRpb25zID0gZmxkLmZpZWxkT3B0aW9ucztcbiAgICB0aGlzLl9zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSA/PyB0aGlzLl9kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IGFsaWdubWVudCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRBbGlnbm1lbnQ7IH1cbiAgc2V0IGFsaWdubWVudChhbGlnbm1lbnQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkQWxpZ25tZW50LCBhbGlnbm1lbnQpOyB9XG4gIGdldCBiYWNrZW5kKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIGdldCBjYXB0dXJlVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fY2FwdHVyZVR5cGU7IH1cbiAgc2V0IGNhcHR1cmVUeXBlKGNhcHR1cmVUeXBlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5jYXB0dXJlVHlwZSwgY2FwdHVyZVR5cGUpOyB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcik7IH1cblxuICBnZXQgY29kZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG4gIGdldCBkZWZhdWx0VmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTsgfVxuICBzZXQgZGVmYXVsdFZhbHVlKGRlZmF1bHRWYWx1ZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWUpOyB9XG4gIGdldCBkZWZhdWx0RWRpdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kZWZhdWx0RWRpdGFibGU7IH1cbiAgc2V0IGRlZmF1bHRFZGl0YWJsZShlZGl0YWJsZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZGVmYXVsdEVkaXRhYmxlLCBlZGl0YWJsZSk7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKTogT2JzZXJ2YWJsZTxEZXRhaWxFdmVudD4geyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdC5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgY3VzdG9tRXZlbnQoKTogT2JzZXJ2YWJsZTxGaWVsZEN1c3RvbUV2ZW50RGF0YT4geyByZXR1cm4gdGhpcy5fY3VzdG9tRXZlbnQuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKTogT2JzZXJ2YWJsZTxGaWVsZEVkaXRpb25FdmVudD4geyByZXR1cm4gdGhpcy5fZWRpdGlvbkZpbmlzaC5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgZWRpdGlvblBhcnRpYWwoKTogT2JzZXJ2YWJsZTxGaWVsZEVkaXRpb25FdmVudD4geyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWwuYXNPYnNlcnZhYmxlKCk7IH1cblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9jdXN0b21FbXB0eSA/IHRoaXMuX2N1c3RvbUVtcHR5LmNhbGwodGhpcykgOiB0aGlzLmRlZmF1bHRFbXB0eSgpOyB9XG4gIGdldCBlcnJvcigpOiB7IHR5cGU6IHN0cmluZzsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB7IHJldHVybiB7IHR5cGU6IHRoaXMuX2Vycm9yVHlwZSwgY29kZTogdGhpcy5fZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLl9lcnJvck1lc3NhZ2UgfTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuICBnZXQgZXJyb3JDb2RlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9lcnJvckNvZGU7IH1cbiAgc2V0IGVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9lcnJvck1lc3NhZ2U7IH1cbiAgc2V0IGVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLl9lcnJvckNvZGUsIG1zZyk7IH1cbiAgZ2V0IGVycm9yVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXJyb3JUeXBlOyB9XG4gIGdldCBleHRlcm5hbFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLl9leHRlcm5hbFZhbHVlOyB9XG4gIGdldCBmb3JtYXQoKTogUmVnRXhwIHwgbnVsbCB7IHJldHVybiB0aGlzLl9maWVsZEZvcm1hdDsgfVxuICBzZXQgZm9ybWF0KGZvcm1hdCkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRGb3JtYXQsIGZvcm1hdCk7IH1cbiAgZ2V0IGhhc0NoYW5nZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oYXNDaGFuZ2VkOyB9XG4gIHNldCBoYXNDaGFuZ2VkKGhhc0NoYW5nZWQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG5cbiAgZ2V0IGluZm8oKTogYW55IHsgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mbzsgfVxuICBzZXQgaW5mbyhuZXdJbmZvOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkSW5mbywgbmV3SW5mbyk7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgbWVzc2FnZSk7IH1cbiAgZ2V0IG1heExlbmd0aCgpOiBzdHJpbmcgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGggPyArcmVxdWlyZWRNYXhMZW5ndGggOiBudWxsKTsgfVxuICBnZXQgbWF4VmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX21heFZhbHVlOyB9XG5cbiAgc2V0IG1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtYXhWYWx1ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9taW5MZW5ndGg7IH1cbiAgc2V0IG1pbkxlbmd0aChyZXF1aXJlZE1pbkxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1pbkxlbmd0aCwgcmVxdWlyZWRNaW5MZW5ndGggPyArcmVxdWlyZWRNaW5MZW5ndGggOiBudWxsKTtcbiAgfVxuICBnZXQgbWluVmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX21pblZhbHVlOyB9XG5cbiAgc2V0IG1pblZhbHVlKGlucHV0TWluVmFsdWUpIHtcbiAgICBsZXQgbWluVmFsdWUgPSBpbnB1dE1pblZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtaW5WYWx1ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogRmllbGRPcHRpb25bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbnM/Lm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29weTogRmllbGRPcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgcmV0dXJuIG9wdGlvbkNvcHk7XG4gICAgfSkgPz8gW107XG4gIH1cblxuICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCghdGhpcy5fZm9ybUNvbmZpZy5jYXB0dXJlVHlwZXNXaXRoT3B0aW9ucy5pbmNsdWRlcyh0aGlzLl9jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkT3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fdmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zPy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuX3NldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRSZXF1aXJlZCAmJiB0aGlzLl9maWVsZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLl92YWx1ZSAhPT0gdGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICB0aGlzLm5vdGlmeUVkaXRpb25GaW5pc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9uVGV4dCgpOiBzdHJpbmcgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpPy5maWVsZE9wdGlvblZhbHVlID8/IG51bGw7IH1cbiAgZ2V0IG91dHB1dE9ubHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vdXRwdXRPbmx5OyB9XG4gIHNldCBvdXRwdXRPbmx5KG91dHB1dE9ubHkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm91dHB1dE9ubHksIG91dHB1dE9ubHkpOyB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZFJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9maWVsZFRpdGxlOyB9XG4gIHNldCB0aXRsZSh0aXRsZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRUaXRsZSwgdGl0bGU/LnRvU3RyaW5nKCkgPz8gJycpOyB9XG4gIGdldCB0b29sdGlwKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl90b29sdGlwVGV4dDsgfVxuICBzZXQgdG9vbHRpcCh0b29sdGlwKSB7IHRoaXMuc2V0QXR0cihhdHRycy50b29sdGlwVGV4dCwgdG9vbHRpcCk7IH1cbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTsgfVxuICBzZXQgdHlwZShmaWVsZFR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVHlwZSwgZmllbGRUeXBlKTsgfVxuICBnZXQgb25WYWxpZGF0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIGdldCB2YWxpZGF0aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhblxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2spID8geW4odGhpcy5fdmFsdWUpIDogdGhpcy5fdmFsdWU7XG4gIH1cbiAgZ2V0IHZhbGlkYXRlT25TZXJ2ZXIoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92YWxpZGF0ZU9uU2VydmVyOyB9XG4gIHNldCB2YWxpZGF0ZU9uU2VydmVyKHZhbGlkYXRlT25TZXJ2ZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbGlkYXRlT25TZXJ2ZXIsIHZhbGlkYXRlT25TZXJ2ZXIpOyB9XG4gIGdldCBzZXJ2ZXJBY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92YWxpZGF0ZU9uU2VydmVyOyB9XG4gIHNldCBzZXJ2ZXJBY3Rpb24odmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbikgeyB0aGlzLnZhbGlkYXRlT25TZXJ2ZXIgPSB2YWxpZGF0ZU9uU2VydmVyOyB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTsgfVxuICBnZXQgdmlzaWJsZUxhYmVsKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdmlzaWJsZUxhYmVsOyB9XG4gIHNldCB2aXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy52aXNpYmxlTGFiZWwsIHZpc2libGVMYWJlbCk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgdmFsdWUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGdldCBmaWVsZFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGhhc0NoYW5nZWQgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGNoYW5nZWQoaGFzQ2hhbmdlZCA9IHRydWUpIHsgdGhpcy5oYXNDaGFuZ2VkID0gaGFzQ2hhbmdlZDsgfVxuXG4gIGNsZWFuKCk6IHZvaWQgeyB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9kZWZhdWx0VmFsdWUgfHwgJycpOyB0aGlzLnJlc2V0RXJyb3IoKTsgfVxuICBzZXRDdXN0b21FbXB0eShmbjogKCh0aGlzOiBGaWVsZERlc2NyaXB0b3IpID0+IGJvb2xlYW4pIHwgbnVsbCk6IHZvaWQgeyB0aGlzLl9jdXN0b21FbXB0eSA9IGZuOyB9XG4gIGZvY3VzKCk6IHZvaWQgeyB0aGlzLnNldEF0dHIoYXR0cnMuZm9jdXMsIHRydWUpOyB9XG4gIGdldEVycm9yQ29kZSgpIHsgcmV0dXJuIHRoaXMuZXJyb3IuY29kZTsgfVxuICBzZXRFcnJvckNvZGUoY29kZTogc3RyaW5nKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiB0aGlzLmVycm9yLm1lc3NhZ2U7IH1cbiAgc2V0RXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7IHRoaXMuc2V0RXJyb3IodGhpcy5fZXJyb3JDb2RlLCBtc2cpOyB9XG4gIGdldFJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5yZXF1aXJlZDsgfVxuICBoYXNFcnJvcigpIHsgcmV0dXJuIHRoaXMuX2Vycm9yQ29kZSAhPT0gTk9fRVJST1I7IH1cbiAgaGlkZUxhYmVsKCk6IHZvaWQgeyB0aGlzLnZpc2libGVMYWJlbCA9IGZhbHNlOyB9XG4gIHJlc2V0RXJyb3IoKSB7ICh0aGlzLl9lcnJvckNvZGUgIT09IE5PX0VSUk9SKSAmJiB0aGlzLnNldEVycm9yKE5PX0VSUk9SLCBudWxsKTsgfVxuICBzZXRFZGl0YWJsZShlZGl0YWJsZTogYm9vbGVhbiA9IHRydWUpIHsgKGVkaXRhYmxlKSA/IHRoaXMuZW5hYmxlKCkgOiB0aGlzLmRpc2FibGUoKTsgfVxuICBzZXRWYWx1ZShuZXdWYWx1ZTogYW55LCB3aWRnZXRVcGRhdGU6IGJvb2xlYW4gPSB0cnVlKSB7IHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlLCB3aWRnZXRVcGRhdGUpOyB9XG4gIHNob3dMYWJlbCgpOiB2b2lkIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB0cnVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGNvZGUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGdldCBmaWVsZENvZGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ZpZWxkQ29kZTsgfVxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIHRpdGxlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBzZXRMYWJlbChsYWJlbDogc3RyaW5nKSB7IHRoaXMudGl0bGUgPSBsYWJlbDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSByZXF1aXJlZCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHsgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGNoYW5nZWQgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldENoYW5nZWQoaGFzQ2hhbmdlZDogYm9vbGVhbikgeyB0aGlzLmNoYW5nZWQoaGFzQ2hhbmdlZCk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgdmFsdWUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGdldFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGVtcHR5IGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBpc0VtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbXB0eSB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGVycm9yIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBnZXRFcnJvcigpIHsgcmV0dXJuIHRoaXMuZXJyb3I7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2Ugb3B0aW9uVGV4dCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgZ2V0T3B0aW9uVGV4dCgpIHsgcmV0dXJuIHRoaXMub3B0aW9uVGV4dDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBvcHRpb25zIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBnZXRGaWVsZE9wdGlvbnMoKSB7IHJldHVybiB0aGlzLm9wdGlvbnM7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2Ugb3B0aW9ucyBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0RmllbGRPcHRpb25zKG5ld09wdGlvbnM6IGFueSkgeyByZXR1cm4gdGhpcy5vcHRpb25zID0gbmV3T3B0aW9uczsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBpbnRyaW5zaWNFcnJvck1lc3NhZ2UgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSBtZXNzYWdlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIG1heFZhbHVlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBzZXRNYXhWYWx1ZShpbnB1dE1heFZhbHVlOiBhbnkpIHsgdGhpcy5tYXhWYWx1ZSA9IGlucHV0TWF4VmFsdWU7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgbWluVmFsdWUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldE1pblZhbHVlKGlucHV0TWluVmFsdWU6IGFueSkgeyB0aGlzLm1pblZhbHVlID0gaW5wdXRNaW5WYWx1ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBzaG93TGFiZWwgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldFZpc2libGVMYWJlbCh2aXNpYmxlTGFiZWw6IGJvb2xlYW4pIHsgdGhpcy52aXNpYmxlTGFiZWwgPSB2aXNpYmxlTGFiZWw7IH1cblxuICBkZWZhdWx0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmllbGRDdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkQ3VycmVudFZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5XG4gICAgICAmJiBBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSAmJiBmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLnBob25lKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCAhPT0gMiB8fCAhZmllbGRDdXJyZW50VmFsdWVbMF0gfHwgIWZpZWxkQ3VycmVudFZhbHVlWzFdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgY29uc3QgYXJyYXlGaWVsZFR5cGVzID0gdGhpcy5fZm9ybUNvbmZpZy5hcnJheUZpZWxkVHlwZXMgPz8gbnVsbDtcbiAgICBpZiAoYXJyYXlGaWVsZFR5cGVzICYmIE9iamVjdC5rZXlzKGFycmF5RmllbGRUeXBlcykuaW5jbHVkZXModGhpcy5fZmllbGRUeXBlKSkge1xuICAgICAgbGV0IGFycmF5U2l6ZSA9IGFycmF5RmllbGRUeXBlc1t0aGlzLl9maWVsZFR5cGVdO1xuICAgICAgYXJyYXlTaXplID0gIU51bWJlci5pc05hTigrYXJyYXlTaXplKSA/ICthcnJheVNpemUgOiAwO1xuICAgICAgaWYgKGFycmF5U2l6ZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA8IGFycmF5U2l6ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gZmllbGRDdXJyZW50VmFsdWUgPT09ICcnO1xuICB9XG5cblxuICBub3RpZnlFZGl0aW9uUGFydGlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICB0aGlzLl9lZGl0aW9uUGFydGlhbC5uZXh0KHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICB9XG5cbiAgdHJpZ2dlckN1c3RvbUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nLCBldmVudERhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2N1c3RvbUV2ZW50Lm5leHQoeyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGV2ZW50TmFtZSwgZXZlbnREYXRhIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkZpbmlzaCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uQ29uZmlnOiBhbnkgPSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVmFsaWRhdGlvbnM/Llt0aGlzLl9maWVsZFR5cGVdID8/IHt9O1xuICAgIGNvbnN0IHsgdHlwZSwgdmFsaWRhdGlvbiB9ID0gdmFsaWRhdGlvbkNvbmZpZztcbiAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRpb25Db25maWc/Lm1lc3NhZ2U7XG4gICAgbGV0IGludHJpbnNpY1ZhbGlkYXRpb24gPSB0cnVlO1xuICAgIGlmIChmaWVsZFZhbHVlICYmICh2YWxpZGF0aW9uIHx8IHRoaXMuX2ZpZWxkRm9ybWF0KSkge1xuICAgICAgaWYgKHR5cGUgPT09ICdyZWdleHAnKSB7XG4gICAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSAodmFsaWRhdGlvbj8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKVxuICAgICAgICAgICYmICh0aGlzLl9maWVsZEZvcm1hdD8udGVzdChmaWVsZFZhbHVlKSA/PyB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsaWRhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCB7IHZhbGlkLCBtZXNzYWdlOiBjdXN0b21NZXNzYWdlIH0gPSB2YWxpZGF0aW9uKGZpZWxkVmFsdWUsIHRoaXMpO1xuICAgICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gdmFsaWQ7XG4gICAgICAgIG1lc3NhZ2UgPSBjdXN0b21NZXNzYWdlO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnRyaW5zaWNWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgbWVzc2FnZSA/PyB0aGlzLl9pbnRyaW5zaWNFcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHRoaXMuX21pblZhbHVlICYmIGZpZWxkVmFsdWUgPCB0aGlzLl9taW5WYWx1ZSkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgY29uc3QgZm9ybWF0ZWRNaW5WYWx1ZSA9ICFpc05hTigrdGhpcy5fbWluVmFsdWUpXG4gICAgICAgID8gTnVtYmVyKHRoaXMuX21pblZhbHVlKS50b0xvY2FsZVN0cmluZygnZXMtQ08nKVxuICAgICAgICA6IHRoaXMuX21pblZhbHVlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCBgRWwgdmFsb3IgZGUgJHt0aGlzLnRpdGxlfSBubyBwdWVkZSBzZXIgaW5mZXJpb3IgYSAke2Zvcm1hdGVkTWluVmFsdWV9YCk7XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdGhpcy5fbWF4VmFsdWUgJiYgZmllbGRWYWx1ZSA+IHRoaXMuX21heFZhbHVlKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICBjb25zdCBmb3JtYXRlZE1heFZhbHVlID0gIWlzTmFOKCt0aGlzLl9tYXhWYWx1ZSlcbiAgICAgICAgPyBOdW1iZXIodGhpcy5fbWF4VmFsdWUpLnRvTG9jYWxlU3RyaW5nKCdlcy1DTycpXG4gICAgICAgIDogdGhpcy5fbWF4VmFsdWU7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsIGBFbCB2YWxvciBkZSAke3RoaXMudGl0bGV9IG5vIHB1ZWRlIHNlciBzdXBlcmlvciBhICR7Zm9ybWF0ZWRNYXhWYWx1ZX1gKTtcbiAgICB9XG4gICAgaWYgKGludHJpbnNpY1ZhbGlkYXRpb24gJiYgZmllbGRWYWx1ZSAmJiB0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICYmIHRoaXMuX21pbkxlbmd0aCAmJiBmaWVsZFZhbHVlPy5sZW5ndGggPCB0aGlzLl9taW5MZW5ndGgpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgYExvbmdpdHVkIGRlICR7dGhpcy5fZmllbGRUaXRsZX0gZGViZSBzZXIgZGUgYWwgbWVub3MgJHt0aGlzLl9taW5MZW5ndGh9YCk7XG4gICAgfVxuICAgIHRoaXMuX2VkaXRpb25GaW5pc2gubmV4dCh7IGNvZGU6IHRoaXMuX2ZpZWxkQ29kZSwgaW50cmluc2ljVmFsaWRhdGlvbiB9KTtcbiAgfVxuXG4gIG5vdGlmeUVkaXRpb25EZXRhaWxSZXF1ZXN0KGRldGFpbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGV0YWlsRXZlbnQ6IERldGFpbEV2ZW50ID0geyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGRldGFpbCB9O1xuICAgIHRoaXMuX2RldGFpbFJlcXVlc3QubmV4dChkZXRhaWxFdmVudCk7XG4gIH1cblxuICBzZXRFcnJvcihjb2RlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwsIHR5cGU6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfVFlQRSkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5lcnJvckNvZGUsIGNvZGUgPz8gTk9fRVJST1IpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5lcnJvclR5cGUsICh0aGlzLl9lcnJvckNvZGUgPT09IE5PX0VSUk9SKSA/ICcnIDogdHlwZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yTWVzc2FnZSwgbWVzc2FnZSA/PyAnJyk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKGZsZDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZmllbGRLZXlzID0gT2JqZWN0LmtleXMoZmxkKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRLZXlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgYXR0ck5hbWUgPSBmaWVsZEtleXNbaW5kZXhdO1xuICAgICAgY29uc3QgYXR0clZhbHVlID0gZmxkW2F0dHJOYW1lXTtcbiAgICAgIGlmIChkaXJlY3RDaGFuZ2VzLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAodGhpcyBhcyBhbnkpW2F0dHJOYW1lXSA9IGF0dHJWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2xhYmVsJykgJiYgKHRoaXMudGl0bGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdsYWJlbFZpc2libGUnKSAmJiAodGhpcy52aXNpYmxlTGFiZWwgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdlZGl0YWJsZScpICYmIHRoaXMuc2V0RWRpdGFibGUoYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAndmlzaWJsZScpICYmIHRoaXMuc2V0VmlzaWJpbGl0eShhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd2YWx1ZScpICYmICh0aGlzLl9zZXRWYWx1ZShhdHRyVmFsdWUpICYmICh0aGlzLmhhc0NoYW5nZWQgPSBmYWxzZSkpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFZhbHVlJykgJiYgKHRoaXMuX3NldFZhbHVlKGF0dHJWYWx1ZSkgJiYgKHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlKSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkT3B0aW9ucycpICYmICh0aGlzLm9wdGlvbnMgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFRpdGxlJykgJiYgKHRoaXMudGl0bGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdmaWVsZFR5cGVDb2RlJykgJiYgKHRoaXMudHlwZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVHlwZScpICYmICh0aGlzLnR5cGUgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd0b29sdGlwVGV4dCcpICYmICh0aGlzLnRvb2x0aXAgPSBhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICdjdXN0b21BdHRyaWJ1dGVzJykgJiYgKHRoaXMuc2V0Q3VzdG9tQXR0cmlidXRlcyhhdHRyVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYWx1ZShuZXdWYWx1ZTogYW55LCB3aWRnZXRVcGRhdGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gVU5ERUZJTkVEKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5ld1ZhbHVlID09PSBudWxsICYmIHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsZXQgbmV3RmluYWxWYWx1ZTtcbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhblxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2spIHtcbiAgICAgIG5ld0ZpbmFsVmFsdWUgPSB5bihuZXdWYWx1ZSkgPz8gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheVxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMubWFwKSB7XG4gICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwgfHwgbmV3VmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5ld0ZpbmFsVmFsdWUgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJywnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmluYWxWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IG5ld0ZpbmFsVmFsdWUpIHtcbiAgICAgIHRoaXMuX2hhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgaWYgKHdpZGdldFVwZGF0ZSkge1xuICAgICAgICB0aGlzLnNldEF0dHIoYXR0cnMudmFsdWUsIG5ld0ZpbmFsVmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBuZXdGaW5hbFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUl4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFFakMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQixNQUFNLGFBQWEsR0FBRztJQUNwQixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVc7SUFDcEcsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTTtJQUNsRyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGNBQWM7SUFDcEcsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHO0lBQ1osV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQy9ELFNBQVMsRUFBRSxFQUFF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LGFBQWEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHluIGZyb20gJ3luJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlLCBOT19FUlJPUiB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgRmllbGREZWZpbml0aW9uLCBGaWVsZEVkaXRpb25FdmVudCwgRmllbGRDdXN0b21FdmVudERhdGEsIElGb3JtQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JtLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBJRmllbGQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZpZWxkLmludGVyZmFjZSc7XG5cbmNvbnN0IFVOREVGSU5FRCA9ICd1bmRlZmluZWQnO1xuXG5jb25zdCBERUZBVUxUX0VSUk9SX1RZUEUgPSAnZXJyb3InO1xuY29uc3QgREVGQVVMVF9DQVBUVVJFX1RZUEUgPSAnSU5QVVQnO1xuY29uc3QgREVGQVVMVF9BTElHTk1FTlQgPSAnbGVmdCc7XG5cbmNvbnN0IFNURF9NQVhfTEVOR1RIID0gNTA7XG5jb25zdCBCSUdfTUFYX0xFTkdUSCA9IDUwMDtcblxuY29uc3QgZGlyZWN0Q2hhbmdlcyA9IFtcbiAgJ2RlZmF1bHRFZGl0YWJsZScsICdkZWZhdWx0VmFsdWUnLCAnYWxpZ25tZW50JywgJ3JlcXVpcmVkJywgJ2Vycm9yQ29kZScsICdlcnJvck1lc3NhZ2UnLCAnZXJyb3JUeXBlJyxcbiAgJ3Rvb2x0aXAnLCAnaW5mbycsICdmb3JtYXQnLCAnaW50cmluc2ljRXJyb3JNZXNzYWdlJywgJ291dHB1dE9ubHknLCAnY2FwdHVyZVR5cGUnLCAndGl0bGUnLCAndHlwZScsXG4gICdtYXhMZW5ndGgnLCAnbWF4VmFsdWUnLCAnbWluTGVuZ3RoJywgJ21pblZhbHVlJywgJ3ZhbGlkYXRlT25TZXJ2ZXInLCAnc2VydmVyQWN0aW9uJywgJ3Zpc2libGVMYWJlbCcsXG4gICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJyxcbl07XG5cbmNvbnN0IGF0dHJzID0ge1xuICBjYXB0dXJlVHlwZTogeyBuYW1lOiAnX2NhcHR1cmVUeXBlJywgcHJvcGFnYXRlOiAnY2FwdHVyZVR5cGUnIH0sXG4gIGVycm9yQ29kZTogeyBuYW1lOiAnX2Vycm9yQ29kZScsIHByb3BhZ2F0ZTogJ2Vycm9yQ29kZScgfSxcbiAgZXJyb3JNZXNzYWdlOiB7IG5hbWU6ICdfZXJyb3JNZXNzYWdlJywgcHJvcGFnYXRlOiAnZXJyb3JNZXNzYWdlJyB9LFxuICBlcnJvclR5cGU6IHsgbmFtZTogJ19lcnJvclR5cGUnLCBwcm9wYWdhdGU6ICdlcnJvclR5cGUnIH0sXG4gIGRlZmF1bHRWYWx1ZTogeyBuYW1lOiAnX2RlZmF1bHRWYWx1ZScsIHByb3BhZ2F0ZTogJ2RlZmF1bHRWYWx1ZScgfSxcbiAgZGVmYXVsdEVkaXRhYmxlOiB7IG5hbWU6ICdfZGVmYXVsdEVkaXRhYmxlJywgcHJvcGFnYXRlOiAnZGVmYXVsdEVkaXRhYmxlJyB9LFxuICBmaWVsZEFsaWdubWVudDogeyBuYW1lOiAnX2ZpZWxkQWxpZ25tZW50JywgcHJvcGFnYXRlOiAnYWxpZ25tZW50JyB9LFxuICBmaWVsZENvZGU6IHsgbmFtZTogJ19maWVsZENvZGUnLCBwcm9wYWdhdGU6ICdjb2RlJyB9LFxuICBmaWVsZEluZm86IHsgbmFtZTogJ19maWVsZEluZm8nLCBwcm9wYWdhdGU6ICdpbmZvJyB9LFxuICBmaWVsZFJlcXVpcmVkOiB7IG5hbWU6ICdfZmllbGRSZXF1aXJlZCcsIHByb3BhZ2F0ZTogJ3JlcXVpcmVkJyB9LFxuICBmaWVsZFRpdGxlOiB7IG5hbWU6ICdfZmllbGRUaXRsZScsIHByb3BhZ2F0ZTogJ3RpdGxlJyB9LFxuICBmaWVsZFR5cGU6IHsgbmFtZTogJ19maWVsZFR5cGUnLCBwcm9wYWdhdGU6ICd0eXBlJyB9LFxuICBmaWVsZEZvcm1hdDogeyBuYW1lOiAnX2ZpZWxkRm9ybWF0JywgcHJvcGFnYXRlOiAnZm9ybWF0JyB9LFxuICBmaWVsZE9wdGlvbnM6IHsgbmFtZTogJ19maWVsZE9wdGlvbnMnLCBwcm9wYWdhdGU6ICdvcHRpb25zJyB9LFxuICBmb2N1czogeyBuYW1lOiAnX2ZvY3VzJywgcHJvcGFnYXRlOiAnZm9jdXMnIH0sXG4gIGhhc0NoYW5nZWQ6IHsgbmFtZTogJ19oYXNDaGFuZ2VkJywgcHJvcGFnYXRlOiAnaGFzQ2hhbmdlZCcgfSxcbiAgaW50cmluc2ljRXJyb3JNZXNzYWdlOiB7IG5hbWU6ICdfaW50cmluc2ljRXJyb3JNZXNzYWdlJywgcHJvcGFnYXRlOiBudWxsIGFzIHN0cmluZyB8IG51bGwgfSxcbiAgbWF4TGVuZ3RoOiB7IG5hbWU6ICdfbWF4TGVuZ3RoJywgcHJvcGFnYXRlOiAnbWF4TGVuZ3RoJyB9LFxuICBtYXhWYWx1ZTogeyBuYW1lOiAnX21heFZhbHVlJywgcHJvcGFnYXRlOiAnbWF4VmFsdWUnIH0sXG4gIG1pbkxlbmd0aDogeyBuYW1lOiAnX21pbkxlbmd0aCcsIHByb3BhZ2F0ZTogJ21pbkxlbmd0aCcgfSxcbiAgbWluVmFsdWU6IHsgbmFtZTogJ19taW5WYWx1ZScsIHByb3BhZ2F0ZTogJ21pblZhbHVlJyB9LFxuICBvblZhbGlkYXRpb246IHsgbmFtZTogJ19vblZhbGlkYXRpb24nLCBwcm9wYWdhdGU6ICdvblZhbGlkYXRpb24nIH0sXG4gIG91dHB1dE9ubHk6IHsgbmFtZTogJ19vdXRwdXRPbmx5JywgcHJvcGFnYXRlOiAnb3V0cHV0T25seScgfSxcbiAgcGxhY2Vob2xkZXI6IHsgbmFtZTogJ19wbGFjZWhvbGRlcicsIHByb3BhZ2F0ZTogJ3BsYWNlaG9sZGVyJyB9LFxuICB0b29sdGlwVGV4dDogeyBuYW1lOiAnX3Rvb2x0aXBUZXh0JywgcHJvcGFnYXRlOiAndG9vbHRpcCcgfSxcbiAgdmFsaWRhdGVPblNlcnZlcjogeyBuYW1lOiAnX3ZhbGlkYXRlT25TZXJ2ZXInLCBwcm9wYWdhdGU6ICd2YWxpZGF0ZU9uU2VydmVyJyB9LFxuICB2YWx1ZTogeyBuYW1lOiAnX3ZhbHVlJywgcHJvcGFnYXRlOiAndmFsdWUnIH0sXG4gIHZpc2libGVMYWJlbDogeyBuYW1lOiAnX3Zpc2libGVMYWJlbCcsIHByb3BhZ2F0ZTogJ3Zpc2libGVMYWJlbCcgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsRXZlbnQge1xuICBjb2RlOiBzdHJpbmc7XG4gIGRldGFpbDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkT3B0aW9uIHtcbiAgZmllbGRPcHRpb25WYWx1ZTogc3RyaW5nO1xuICBmaWVsZE9wdGlvbklkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZERlc2NyaXB0b3IgZXh0ZW5kcyBGb3JtRWxlbWVudCBpbXBsZW1lbnRzIElGaWVsZCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUV2ZW50ID0gbmV3IFN1YmplY3Q8RmllbGRDdXN0b21FdmVudERhdGE+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRpb25GaW5pc2ggPSBuZXcgU3ViamVjdDxGaWVsZEVkaXRpb25FdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGlvblBhcnRpYWwgPSBuZXcgU3ViamVjdDxGaWVsZEVkaXRpb25FdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlsUmVxdWVzdCA9IG5ldyBTdWJqZWN0PERldGFpbEV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2Vycm9yVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Vycm9yQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2Vycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ludHJpbnNpY0Vycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX21pblZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX21heFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgX21heExlbmd0aDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWluTGVuZ3RoOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9mb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9vblZhbGlkYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF92YWx1ZTogYW55O1xuICBwcml2YXRlIF92aXNpYmxlTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2FwdHVyZVR5cGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IGFueSA9ICcnO1xuICBwcml2YXRlIF9kZWZhdWx0RWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZXh0ZXJuYWxWYWx1ZTogYW55O1xuICBwcml2YXRlIF9maWVsZEFsaWdubWVudDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkSW5mbzogYW55ID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRUaXRsZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkVHlwZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2ZpZWxkRm9ybWF0OiBSZWdFeHAgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaGFzQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9vdXRwdXRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Rvb2x0aXBUZXh0OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWVsZENvZGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWVsZE9wdGlvbnM6IEZpZWxkT3B0aW9uW10gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfY3VzdG9tRW1wdHk6ICgodGhpczogRmllbGREZXNjcmlwdG9yKSA9PiBib29sZWFuKSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0RmllbGRSZWNlaXZlZDogRmllbGREZWZpbml0aW9uLCBmb3JtQ29uZmlnOiBJRm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGlucHV0RmllbGRSZWNlaXZlZCwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IEVsZW1lbnRUeXBlLkZpZWxkO1xuICAgIGNvbnN0IGZsZDogYW55ID0gKGlucHV0RmllbGRSZWNlaXZlZCkgPyBpbnB1dEZpZWxkUmVjZWl2ZWQgOiB7fTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRDb2RlLCBmbGQuZmllbGRDb2RlKTtcbiAgICB0aGlzLnRpdGxlID0gZmxkLmZpZWxkVGl0bGUgPz8gdGhpcy5fZmllbGRDb2RlO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmbGQucGxhY2Vob2xkZXIgPz8gdGhpcy50aXRsZTtcbiAgICB0aGlzLnR5cGUgPSBmbGQuZmllbGRUeXBlQ29kZTtcbiAgICB0aGlzLmNhcHR1cmVUeXBlID0gZmxkLmNhcHR1cmVUeXBlID8/IERFRkFVTFRfQ0FQVFVSRV9UWVBFO1xuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmxkLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZSA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLl9maWVsZFR5cGVdICE9IG51bGwpXG4gICAgICA/IHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLl9maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiBERUZBVUxUX0FMSUdOTUVOVDtcbiAgICBjb25zdCBmaWVsZEFsaWdubWVudCA9IChmbGQuYWxpZ25tZW50ICE9IG51bGwpID8gZmxkLmFsaWdubWVudC50b0xvd2VyQ2FzZSgpIDogZGVmYXVsdFR5cGVBbGlnbm1lbnQ7XG4gICAgdGhpcy5hbGlnbm1lbnQgPSBmaWVsZEFsaWdubWVudDtcbiAgICB0aGlzLmluZm8gPSBmbGQuaW5mbyB8fCAnJztcbiAgICBsZXQgZmllbGRGb3JtYXQ7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmbGQuZm9ybWF0ICYmIHR5cGVvZiBmbGQuZm9ybWF0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBmaWVsZEZvcm1hdCA9IG5ldyBSZWdFeHAoZmxkLmZvcm1hdCk7XG4gICAgICB9IGVsc2UgaWYgKGZsZC5mb3JtYXQ/LnJlZ0V4cCkge1xuICAgICAgICBmaWVsZEZvcm1hdCA9IG5ldyBSZWdFeHAoZmxkLmZvcm1hdD8ucmVnRXhwKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmaWVsZEZvcm1hdCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZm9ybWF0ID0gZmllbGRGb3JtYXQ7XG4gICAgdGhpcy52YWxpZGF0ZU9uU2VydmVyID0gZmxkLnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLnRvb2x0aXAgPSBmbGQudG9vbHRpcCB8fCAnJztcbiAgICB0aGlzLmRlZmF1bHRFZGl0YWJsZSA9IHRoaXMuZW5hYmxlZDtcbiAgICB0aGlzLnJlcXVpcmVkID0gZmxkLnJlcXVpcmVkID8/IGZhbHNlO1xuICAgIHRoaXMub3V0cHV0T25seSA9IGZsZC5vdXRwdXRPbmx5ID8/IGZhbHNlO1xuICAgIHRoaXMubWluVmFsdWUgPSBmbGQubWluVmFsdWU7XG4gICAgdGhpcy5tYXhWYWx1ZSA9IGZsZC5tYXhWYWx1ZTtcbiAgICB0aGlzLm1pbkxlbmd0aCA9IGZsZC5taW5MZW5ndGggPz8gMDtcbiAgICB0aGlzLm1heExlbmd0aCA9IGZsZC5tYXhMZW5ndGggfHwgKHRoaXMuX2NhcHR1cmVUeXBlID09PSAnVEVYVEFSRUEnID8gQklHX01BWF9MRU5HVEggOiBTVERfTUFYX0xFTkdUSCk7XG4gICAgdGhpcy5pbnRyaW5zaWNFcnJvck1lc3NhZ2UgPSB0aGlzLl9mb3JtQ29uZmlnPy5maWVsZFZhbGlkYXRpb25zPy5bdGhpcy5fZmllbGRUeXBlXT8ubWVzc2FnZVxuICAgICAgPz8gdGhpcy5fZm9ybUNvbmZpZz8uZmllbGRWYWxpZGF0aW9ucz8uREVGQVVMVD8ubWVzc2FnZSA/PyAnJztcblxuICAgIHRoaXMuc2V0RXJyb3IoZmxkLmVycm9yQ29kZSwgZmxkLmVycm9yTWVzc2FnZSwgZmxkLmVycm9yVHlwZSA/PyBERUZBVUxUX0VSUk9SX1RZUEUpO1xuICAgIHRoaXMuc2V0RWRpdGFibGUoZmxkLmVkaXRhYmxlID8/IHRydWUpO1xuICAgIHRoaXMudmlzaWJsZUxhYmVsID0gZmxkLnZpc2libGVMYWJlbCA/PyB0cnVlO1xuICAgIHRoaXMuc2V0VmlzaWJpbGl0eShmbGQudmlzaWJsZSk7XG4gICAgdGhpcy5vcHRpb25zID0gZmxkLmZpZWxkT3B0aW9ucztcbiAgICB0aGlzLl9zZXRWYWx1ZShmbGQuZmllbGRWYWx1ZSA/PyB0aGlzLl9kZWZhdWx0VmFsdWUgPz8gJycpO1xuICB9XG5cbiAgZ2V0IGFsaWdubWVudCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRBbGlnbm1lbnQ7IH1cbiAgc2V0IGFsaWdubWVudChhbGlnbm1lbnQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkQWxpZ25tZW50LCBhbGlnbm1lbnQpOyB9XG4gIGdldCBiYWNrZW5kKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdmFsaWRhdGVPblNlcnZlcjsgfVxuXG4gIGdldCBjYXB0dXJlVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fY2FwdHVyZVR5cGU7IH1cbiAgc2V0IGNhcHR1cmVUeXBlKGNhcHR1cmVUeXBlKSB7IHRoaXMuc2V0QXR0cihhdHRycy5jYXB0dXJlVHlwZSwgY2FwdHVyZVR5cGUpOyB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxuICBzZXQgcGxhY2Vob2xkZXIocGxhY2Vob2xkZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlcik7IH1cblxuICBnZXQgY29kZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG4gIGdldCBkZWZhdWx0VmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWx1ZTsgfVxuICBzZXQgZGVmYXVsdFZhbHVlKGRlZmF1bHRWYWx1ZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWUpOyB9XG4gIGdldCBkZWZhdWx0RWRpdGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kZWZhdWx0RWRpdGFibGU7IH1cbiAgc2V0IGRlZmF1bHRFZGl0YWJsZShlZGl0YWJsZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZGVmYXVsdEVkaXRhYmxlLCBlZGl0YWJsZSk7IH1cbiAgZ2V0IGRldGFpbFJlcXVlc3QoKTogT2JzZXJ2YWJsZTxEZXRhaWxFdmVudD4geyByZXR1cm4gdGhpcy5fZGV0YWlsUmVxdWVzdC5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgY3VzdG9tRXZlbnQoKTogT2JzZXJ2YWJsZTxGaWVsZEN1c3RvbUV2ZW50RGF0YT4geyByZXR1cm4gdGhpcy5fY3VzdG9tRXZlbnQuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGVkaXRpb25GaW5pc2goKTogT2JzZXJ2YWJsZTxGaWVsZEVkaXRpb25FdmVudD4geyByZXR1cm4gdGhpcy5fZWRpdGlvbkZpbmlzaC5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgZWRpdGlvblBhcnRpYWwoKTogT2JzZXJ2YWJsZTxGaWVsZEVkaXRpb25FdmVudD4geyByZXR1cm4gdGhpcy5fZWRpdGlvblBhcnRpYWwuYXNPYnNlcnZhYmxlKCk7IH1cblxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9jdXN0b21FbXB0eSA/IHRoaXMuX2N1c3RvbUVtcHR5LmNhbGwodGhpcykgOiB0aGlzLmRlZmF1bHRFbXB0eSgpOyB9XG4gIGdldCBlcnJvcigpOiB7IHR5cGU6IHN0cmluZzsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB7IHJldHVybiB7IHR5cGU6IHRoaXMuX2Vycm9yVHlwZSwgY29kZTogdGhpcy5fZXJyb3JDb2RlLCBtZXNzYWdlOiB0aGlzLl9lcnJvck1lc3NhZ2UgfTsgfVxuICBzZXQgZXJyb3IoZXJyb3JPYmopIHsgdGhpcy5zZXRFcnJvcihlcnJvck9iai5jb2RlLCBlcnJvck9iai5tZXNzYWdlLCBlcnJvck9iai50eXBlID8/IERFRkFVTFRfRVJST1JfVFlQRSkgfVxuICBnZXQgZXJyb3JDb2RlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9lcnJvckNvZGU7IH1cbiAgc2V0IGVycm9yQ29kZShjb2RlKSB7IHRoaXMuc2V0RXJyb3IoY29kZSwgdGhpcy5fZXJyb3JNZXNzYWdlKTsgfVxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9lcnJvck1lc3NhZ2U7IH1cbiAgc2V0IGVycm9yTWVzc2FnZShtc2cpIHsgdGhpcy5zZXRFcnJvcih0aGlzLl9lcnJvckNvZGUsIG1zZyk7IH1cbiAgZ2V0IGVycm9yVHlwZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZXJyb3JUeXBlOyB9XG4gIGdldCBleHRlcm5hbFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLl9leHRlcm5hbFZhbHVlOyB9XG4gIGdldCBmb3JtYXQoKTogUmVnRXhwIHwgbnVsbCB7IHJldHVybiB0aGlzLl9maWVsZEZvcm1hdDsgfVxuICBzZXQgZm9ybWF0KGZvcm1hdCkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRGb3JtYXQsIGZvcm1hdCk7IH1cbiAgZ2V0IGhhc0NoYW5nZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9oYXNDaGFuZ2VkOyB9XG4gIHNldCBoYXNDaGFuZ2VkKGhhc0NoYW5nZWQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmhhc0NoYW5nZWQsIGhhc0NoYW5nZWQpOyB9XG5cbiAgZ2V0IGluZm8oKTogYW55IHsgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mbzsgfVxuICBzZXQgaW5mbyhuZXdJbmZvOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkSW5mbywgbmV3SW5mbyk7IH1cbiAgc2V0IGludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmludHJpbnNpY0Vycm9yTWVzc2FnZSwgbWVzc2FnZSk7IH1cbiAgZ2V0IG1heExlbmd0aCgpOiBzdHJpbmcgeyByZXR1cm4gKHRoaXMuX21heExlbmd0aCA+IDApID8gdGhpcy5fbWF4TGVuZ3RoLnRvU3RyaW5nKCkgOiAnJzsgfVxuICBzZXQgbWF4TGVuZ3RoKHJlcXVpcmVkTWF4TGVuZ3RoOiBhbnkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm1heExlbmd0aCwgcmVxdWlyZWRNYXhMZW5ndGggPyArcmVxdWlyZWRNYXhMZW5ndGggOiBudWxsKTsgfVxuICBnZXQgbWF4VmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX21heFZhbHVlOyB9XG5cbiAgc2V0IG1heFZhbHVlKGlucHV0TWF4VmFsdWUpIHtcbiAgICBsZXQgbWF4VmFsdWUgPSBpbnB1dE1heFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtYXhWYWx1ZSA9IG5ldyBEYXRlKG1heFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1heFZhbHVlLCBtYXhWYWx1ZSk7XG4gIH1cblxuICBnZXQgbWluTGVuZ3RoKCk6IG51bWJlciB7IHJldHVybiB0aGlzLl9taW5MZW5ndGg7IH1cbiAgc2V0IG1pbkxlbmd0aChyZXF1aXJlZE1pbkxlbmd0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1pbkxlbmd0aCwgcmVxdWlyZWRNaW5MZW5ndGggPyArcmVxdWlyZWRNaW5MZW5ndGggOiBudWxsKTtcbiAgfVxuICBnZXQgbWluVmFsdWUoKTogYW55IHsgcmV0dXJuIHRoaXMuX21pblZhbHVlOyB9XG5cbiAgc2V0IG1pblZhbHVlKGlucHV0TWluVmFsdWUpIHtcbiAgICBsZXQgbWluVmFsdWUgPSBpbnB1dE1pblZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5kYXRlKSB7XG4gICAgICBtaW5WYWx1ZSA9IG5ldyBEYXRlKG1pblZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLm1pblZhbHVlLCBtaW5WYWx1ZSk7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fZmllbGRDb2RlOyB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogRmllbGRPcHRpb25bXSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbnM/Lm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29weTogRmllbGRPcHRpb24gPSB7IC4uLm9wdGlvbiB9O1xuICAgICAgcmV0dXJuIG9wdGlvbkNvcHk7XG4gICAgfSkgPz8gW107XG4gIH1cblxuICBzZXQgb3B0aW9ucyhuZXdPcHRpb25zKSB7XG4gICAgaWYgKCghdGhpcy5fZm9ybUNvbmZpZy5jYXB0dXJlVHlwZXNXaXRoT3B0aW9ucy5pbmNsdWRlcyh0aGlzLl9jYXB0dXJlVHlwZSkpXG4gICAgICB8fCB0eXBlb2YgbmV3T3B0aW9ucyA9PT0gVU5ERUZJTkVEIHx8ICFuZXdPcHRpb25zXG4gICAgICB8fCAhQXJyYXkuaXNBcnJheShuZXdPcHRpb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZmllbGRPcHRpb25zID0gbmV3T3B0aW9ucy5tYXAoKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLnRleHQgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udGV4dCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb24udmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uLnRleHQsIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbi52YWx1ZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9KTtcbiAgICBmaWVsZE9wdGlvbnMgPSAoZmllbGRPcHRpb25zICYmIEFycmF5LmlzQXJyYXkoZmllbGRPcHRpb25zKVxuICAgICAgJiYgZmllbGRPcHRpb25zLmxlbmd0aCA+IDApID8gZmllbGRPcHRpb25zIDogW107XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkT3B0aW9ucywgZmllbGRPcHRpb25zKTtcbiAgICBpZiAodGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5hcnJheSAmJiBBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5fdmFsdWU/LmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgdGhpcy5fZmllbGRPcHRpb25zPy5maW5kKG9wdCA9PiBvcHQuZmllbGRPcHRpb25JZCA9PT0gaXRlbSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbHVlLCBmaWVsZFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbEluT3B0aW9ucyA9IHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpO1xuICAgICAgICBpZiAoIXZhbEluT3B0aW9ucykge1xuICAgICAgICAgIHRoaXMuX3NldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRSZXF1aXJlZCAmJiB0aGlzLl9maWVsZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJiB0aGlzLl92YWx1ZSAhPT0gdGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fZmllbGRPcHRpb25zPy5bMF0uZmllbGRPcHRpb25JZCk7XG4gICAgICB0aGlzLm5vdGlmeUVkaXRpb25GaW5pc2goKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9uVGV4dCgpOiBzdHJpbmcgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2ZpZWxkT3B0aW9ucz8uZmluZChpdGVtID0+IGl0ZW0uZmllbGRPcHRpb25JZCA9PT0gdGhpcy5fdmFsdWUpPy5maWVsZE9wdGlvblZhbHVlID8/IG51bGw7IH1cbiAgZ2V0IG91dHB1dE9ubHkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vdXRwdXRPbmx5OyB9XG4gIHNldCBvdXRwdXRPbmx5KG91dHB1dE9ubHkpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLm91dHB1dE9ubHksIG91dHB1dE9ubHkpOyB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2ZpZWxkUmVxdWlyZWQ7IH1cbiAgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy5maWVsZFJlcXVpcmVkLCByZXF1aXJlZCA/PyBmYWxzZSk7IH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9maWVsZFRpdGxlOyB9XG4gIHNldCB0aXRsZSh0aXRsZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuZmllbGRUaXRsZSwgdGl0bGU/LnRvU3RyaW5nKCkgPz8gJycpOyB9XG4gIGdldCB0b29sdGlwKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl90b29sdGlwVGV4dDsgfVxuICBzZXQgdG9vbHRpcCh0b29sdGlwKSB7IHRoaXMuc2V0QXR0cihhdHRycy50b29sdGlwVGV4dCwgdG9vbHRpcCk7IH1cbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTsgfVxuICBzZXQgdHlwZShmaWVsZFR5cGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmZpZWxkVHlwZSwgZmllbGRUeXBlKTsgfVxuICBnZXQgb25WYWxpZGF0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIGdldCB2YWxpZGF0aW5nKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fb25WYWxpZGF0aW9uOyB9XG4gIHNldCB2YWxpZGF0aW5nKGlzVmFsaWRhdGluZzogYm9vbGVhbikgeyB0aGlzLnNldEF0dHIoYXR0cnMub25WYWxpZGF0aW9uLCBpc1ZhbGlkYXRpbmcpOyB9XG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYm9vbGVhblxuICAgICAgfHwgdGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuY2hlY2spID8geW4odGhpcy5fdmFsdWUpIDogdGhpcy5fdmFsdWU7XG4gIH1cbiAgZ2V0IHZhbGlkYXRlT25TZXJ2ZXIoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92YWxpZGF0ZU9uU2VydmVyOyB9XG4gIHNldCB2YWxpZGF0ZU9uU2VydmVyKHZhbGlkYXRlT25TZXJ2ZXIpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnZhbGlkYXRlT25TZXJ2ZXIsIHZhbGlkYXRlT25TZXJ2ZXIpOyB9XG4gIGdldCBzZXJ2ZXJBY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl92YWxpZGF0ZU9uU2VydmVyOyB9XG4gIHNldCBzZXJ2ZXJBY3Rpb24odmFsaWRhdGVPblNlcnZlcjogYm9vbGVhbikgeyB0aGlzLnZhbGlkYXRlT25TZXJ2ZXIgPSB2YWxpZGF0ZU9uU2VydmVyOyB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7IHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTsgfVxuICBnZXQgdmlzaWJsZUxhYmVsKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fdmlzaWJsZUxhYmVsOyB9XG4gIHNldCB2aXNpYmxlTGFiZWwodmlzaWJsZUxhYmVsOiBib29sZWFuKSB7IHRoaXMuc2V0QXR0cihhdHRycy52aXNpYmxlTGFiZWwsIHZpc2libGVMYWJlbCk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgdmFsdWUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGdldCBmaWVsZFZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGhhc0NoYW5nZWQgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGNoYW5nZWQoaGFzQ2hhbmdlZCA9IHRydWUpOiB2b2lkIHsgdGhpcy5oYXNDaGFuZ2VkID0gaGFzQ2hhbmdlZDsgfVxuXG4gIGNsZWFuKCk6IHZvaWQgeyB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9kZWZhdWx0VmFsdWUgfHwgJycpOyB0aGlzLnJlc2V0RXJyb3IoKTsgfVxuICBzZXRDdXN0b21FbXB0eShmbjogKCh0aGlzOiBGaWVsZERlc2NyaXB0b3IpID0+IGJvb2xlYW4pIHwgbnVsbCk6IHZvaWQgeyB0aGlzLl9jdXN0b21FbXB0eSA9IGZuOyB9XG4gIGZvY3VzKCk6IHZvaWQgeyB0aGlzLnNldEF0dHIoYXR0cnMuZm9jdXMsIHRydWUpOyB9XG4gIGdldEVycm9yQ29kZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5lcnJvci5jb2RlOyB9XG4gIHNldEVycm9yQ29kZShjb2RlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5zZXRFcnJvcihjb2RlLCB0aGlzLl9lcnJvck1lc3NhZ2UpOyB9XG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5lcnJvci5tZXNzYWdlOyB9XG4gIHNldEVycm9yTWVzc2FnZShtc2c6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnNldEVycm9yKHRoaXMuX2Vycm9yQ29kZSwgbXNnKTsgfVxuICBnZXRSZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMucmVxdWlyZWQ7IH1cbiAgaGFzRXJyb3IoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9lcnJvckNvZGUgIT09IE5PX0VSUk9SOyB9XG4gIGhpZGVMYWJlbCgpOiB2b2lkIHsgdGhpcy52aXNpYmxlTGFiZWwgPSBmYWxzZTsgfVxuICByZXNldEVycm9yKCk6IHZvaWQgeyAodGhpcy5fZXJyb3JDb2RlICE9PSBOT19FUlJPUikgJiYgdGhpcy5zZXRFcnJvcihOT19FUlJPUiwgbnVsbCk7IH1cbiAgc2V0RWRpdGFibGUoZWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7IChlZGl0YWJsZSkgPyB0aGlzLmVuYWJsZSgpIDogdGhpcy5kaXNhYmxlKCk7IH1cbiAgc2V0VmFsdWUobmV3VmFsdWU6IGFueSwgd2lkZ2V0VXBkYXRlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQgeyB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSwgd2lkZ2V0VXBkYXRlKTsgfVxuICBzaG93TGFiZWwoKTogdm9pZCB7IHRoaXMudmlzaWJsZUxhYmVsID0gdHJ1ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBjb2RlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBnZXQgZmllbGRDb2RlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9maWVsZENvZGU7IH1cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSB0aXRsZSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0TGFiZWwobGFiZWw6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnRpdGxlID0gbGFiZWw7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgcmVxdWlyZWQgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldFJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZDsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBjaGFuZ2VkIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBzZXRDaGFuZ2VkKGhhc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5jaGFuZ2VkKGhhc0NoYW5nZWQpOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIHZhbHVlIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy52YWx1ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBlbXB0eSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgaXNFbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZW1wdHkgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBlcnJvciBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgZ2V0RXJyb3IoKTogeyB0eXBlOiBzdHJpbmc7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0geyByZXR1cm4gdGhpcy5lcnJvcjsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBvcHRpb25UZXh0IGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAqL1xuICBnZXRPcHRpb25UZXh0KCk6IHN0cmluZyB8IG51bGwgeyByZXR1cm4gdGhpcy5vcHRpb25UZXh0OyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIG9wdGlvbnMgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIGdldEZpZWxkT3B0aW9ucygpOiBGaWVsZE9wdGlvbltdIHwgbnVsbCB7IHJldHVybiB0aGlzLm9wdGlvbnM7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2Ugb3B0aW9ucyBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0RmllbGRPcHRpb25zKG5ld09wdGlvbnM6IGFueSk6IHZvaWQgeyB0aGlzLm9wdGlvbnMgPSBuZXdPcHRpb25zOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIGludHJpbnNpY0Vycm9yTWVzc2FnZSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQgeyB0aGlzLmludHJpbnNpY0Vycm9yTWVzc2FnZSA9IG1lc3NhZ2U7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdjE3LiBVc2UgbWF4VmFsdWUgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxOS5cbiAgICovXG4gIHNldE1heFZhbHVlKGlucHV0TWF4VmFsdWU6IGFueSk6IHZvaWQgeyB0aGlzLm1heFZhbHVlID0gaW5wdXRNYXhWYWx1ZTsgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2MTcuIFVzZSBtaW5WYWx1ZSBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0TWluVmFsdWUoaW5wdXRNaW5WYWx1ZTogYW55KTogdm9pZCB7IHRoaXMubWluVmFsdWUgPSBpbnB1dE1pblZhbHVlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHYxNy4gVXNlIHNob3dMYWJlbCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgKi9cbiAgc2V0VmlzaWJsZUxhYmVsKHZpc2libGVMYWJlbDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLnZpc2libGVMYWJlbCA9IHZpc2libGVMYWJlbDsgfVxuXG4gIGRlZmF1bHRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWVsZEN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgaWYgKGZpZWxkQ3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgfHwgZmllbGRDdXJyZW50VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZmllbGRUeXBlID09PSB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMuYXJyYXlcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5waG9uZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkQ3VycmVudFZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZEN1cnJlbnRWYWx1ZS5sZW5ndGggIT09IDIgfHwgIWZpZWxkQ3VycmVudFZhbHVlWzBdIHx8ICFmaWVsZEN1cnJlbnRWYWx1ZVsxXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYXJyYXlGaWVsZFR5cGVzID0gdGhpcy5fZm9ybUNvbmZpZy5hcnJheUZpZWxkVHlwZXMgPz8gbnVsbDtcbiAgICBpZiAoYXJyYXlGaWVsZFR5cGVzICYmIE9iamVjdC5rZXlzKGFycmF5RmllbGRUeXBlcykuaW5jbHVkZXModGhpcy5fZmllbGRUeXBlKSkge1xuICAgICAgbGV0IGFycmF5U2l6ZSA9IGFycmF5RmllbGRUeXBlc1t0aGlzLl9maWVsZFR5cGVdO1xuICAgICAgYXJyYXlTaXplID0gIU51bWJlci5pc05hTigrYXJyYXlTaXplKSA/ICthcnJheVNpemUgOiAwO1xuICAgICAgaWYgKGFycmF5U2l6ZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkoZmllbGRDdXJyZW50VmFsdWUpICYmIGZpZWxkQ3VycmVudFZhbHVlLmxlbmd0aCA8IGFycmF5U2l6ZSk7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZEN1cnJlbnRWYWx1ZSA9PT0gJyc7XG4gIH1cblxuXG4gIG5vdGlmeUVkaXRpb25QYXJ0aWFsKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIHRoaXMuX2VkaXRpb25QYXJ0aWFsLm5leHQoeyBjb2RlOiB0aGlzLl9maWVsZENvZGUsIGludHJpbnNpY1ZhbGlkYXRpb246IHRydWUgfSk7XG4gIH1cblxuICB0cmlnZ2VyQ3VzdG9tRXZlbnQoZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50RGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fY3VzdG9tRXZlbnQubmV4dCh7IGNvZGU6IHRoaXMuX2ZpZWxkQ29kZSwgZXZlbnROYW1lLCBldmVudERhdGEgfSk7XG4gIH1cblxuICBub3RpZnlFZGl0aW9uRmluaXNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICAgIGNvbnN0IHZhbGlkYXRpb25Db25maWc6IGFueSA9IHRoaXMuX2Zvcm1Db25maWcuZmllbGRWYWxpZGF0aW9ucz8uW3RoaXMuX2ZpZWxkVHlwZV0gPz8ge307XG4gICAgY29uc3QgeyB0eXBlLCB2YWxpZGF0aW9uIH0gPSB2YWxpZGF0aW9uQ29uZmlnO1xuICAgIGxldCBtZXNzYWdlID0gdmFsaWRhdGlvbkNvbmZpZz8ubWVzc2FnZTtcbiAgICBsZXQgaW50cmluc2ljVmFsaWRhdGlvbiA9IHRydWU7XG4gICAgaWYgKGZpZWxkVmFsdWUgJiYgKHZhbGlkYXRpb24gfHwgdGhpcy5fZmllbGRGb3JtYXQpKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3JlZ2V4cCcpIHtcbiAgICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9ICh2YWxpZGF0aW9uPy50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpXG4gICAgICAgICAgJiYgKHRoaXMuX2ZpZWxkRm9ybWF0Py50ZXN0KGZpZWxkVmFsdWUpID8/IHRydWUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWxpZGF0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHsgdmFsaWQsIG1lc3NhZ2U6IGN1c3RvbU1lc3NhZ2UgfSA9IHZhbGlkYXRpb24oZmllbGRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSB2YWxpZDtcbiAgICAgICAgbWVzc2FnZSA9IGN1c3RvbU1lc3NhZ2U7XG4gICAgICB9XG4gICAgICBpZiAoIWludHJpbnNpY1ZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5zZXRFcnJvcignOTknLCBtZXNzYWdlID8/IHRoaXMuX2ludHJpbnNpY0Vycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnRyaW5zaWNWYWxpZGF0aW9uICYmIGZpZWxkVmFsdWUgJiYgdGhpcy5fbWluVmFsdWUgJiYgZmllbGRWYWx1ZSA8IHRoaXMuX21pblZhbHVlKSB7XG4gICAgICBpbnRyaW5zaWNWYWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICBjb25zdCBmb3JtYXRlZE1pblZhbHVlID0gIWlzTmFOKCt0aGlzLl9taW5WYWx1ZSlcbiAgICAgICAgPyBOdW1iZXIodGhpcy5fbWluVmFsdWUpLnRvTG9jYWxlU3RyaW5nKCdlcy1DTycpXG4gICAgICAgIDogdGhpcy5fbWluVmFsdWU7XG4gICAgICB0aGlzLnNldEVycm9yKCc5OScsIGBFbCB2YWxvciBkZSAke3RoaXMudGl0bGV9IG5vIHB1ZWRlIHNlciBpbmZlcmlvciBhICR7Zm9ybWF0ZWRNaW5WYWx1ZX1gKTtcbiAgICB9XG4gICAgaWYgKGludHJpbnNpY1ZhbGlkYXRpb24gJiYgZmllbGRWYWx1ZSAmJiB0aGlzLl9tYXhWYWx1ZSAmJiBmaWVsZFZhbHVlID4gdGhpcy5fbWF4VmFsdWUpIHtcbiAgICAgIGludHJpbnNpY1ZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIGNvbnN0IGZvcm1hdGVkTWF4VmFsdWUgPSAhaXNOYU4oK3RoaXMuX21heFZhbHVlKVxuICAgICAgICA/IE51bWJlcih0aGlzLl9tYXhWYWx1ZSkudG9Mb2NhbGVTdHJpbmcoJ2VzLUNPJylcbiAgICAgICAgOiB0aGlzLl9tYXhWYWx1ZTtcbiAgICAgIHRoaXMuc2V0RXJyb3IoJzk5JywgYEVsIHZhbG9yIGRlICR7dGhpcy50aXRsZX0gbm8gcHVlZGUgc2VyIHN1cGVyaW9yIGEgJHtmb3JtYXRlZE1heFZhbHVlfWApO1xuICAgIH1cbiAgICBpZiAoaW50cmluc2ljVmFsaWRhdGlvbiAmJiBmaWVsZFZhbHVlICYmIHR5cGVvZiBmaWVsZFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgdGhpcy5fbWluTGVuZ3RoICYmIGZpZWxkVmFsdWU/Lmxlbmd0aCA8IHRoaXMuX21pbkxlbmd0aCkge1xuICAgICAgaW50cmluc2ljVmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRFcnJvcignOTknLCBgTG9uZ2l0dWQgZGUgJHt0aGlzLl9maWVsZFRpdGxlfSBkZWJlIHNlciBkZSBhbCBtZW5vcyAke3RoaXMuX21pbkxlbmd0aH1gKTtcbiAgICB9XG4gICAgdGhpcy5fZWRpdGlvbkZpbmlzaC5uZXh0KHsgY29kZTogdGhpcy5fZmllbGRDb2RlLCBpbnRyaW5zaWNWYWxpZGF0aW9uIH0pO1xuICB9XG5cbiAgbm90aWZ5RWRpdGlvbkRldGFpbFJlcXVlc3QoZGV0YWlsOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkZXRhaWxFdmVudDogRGV0YWlsRXZlbnQgPSB7IGNvZGU6IHRoaXMuX2ZpZWxkQ29kZSwgZGV0YWlsIH07XG4gICAgdGhpcy5fZGV0YWlsUmVxdWVzdC5uZXh0KGRldGFpbEV2ZW50KTtcbiAgfVxuXG4gIHNldEVycm9yKGNvZGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCwgdHlwZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9UWVBFKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yQ29kZSwgY29kZSA/PyBOT19FUlJPUik7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmVycm9yVHlwZSwgKHRoaXMuX2Vycm9yQ29kZSA9PT0gTk9fRVJST1IpID8gJycgOiB0eXBlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZXJyb3JNZXNzYWdlLCBtZXNzYWdlID8/ICcnKTtcbiAgfVxuXG4gIHVwZGF0ZUZyb21TZXJ2ZXIoZmxkOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmbGQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZEtleXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBhdHRyTmFtZSA9IGZpZWxkS2V5c1tpbmRleF07XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBmbGRbYXR0ck5hbWVdO1xuICAgICAgaWYgKGRpcmVjdENoYW5nZXMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbYXR0ck5hbWVdID0gYXR0clZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnbGFiZWwnKSAmJiAodGhpcy50aXRsZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2xhYmVsVmlzaWJsZScpICYmICh0aGlzLnZpc2libGVMYWJlbCA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2VkaXRhYmxlJykgJiYgdGhpcy5zZXRFZGl0YWJsZShhdHRyVmFsdWUpO1xuICAgICAgICAoYXR0ck5hbWUgPT09ICd2aXNpYmxlJykgJiYgdGhpcy5zZXRWaXNpYmlsaXR5KGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ3ZhbHVlJykgJiYgKHRoaXMuX3NldFZhbHVlKGF0dHJWYWx1ZSkgJiYgKHRoaXMuaGFzQ2hhbmdlZCA9IGZhbHNlKSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVmFsdWUnKSAmJiAodGhpcy5fc2V0VmFsdWUoYXR0clZhbHVlKSAmJiAodGhpcy5oYXNDaGFuZ2VkID0gZmFsc2UpKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRPcHRpb25zJykgJiYgKHRoaXMub3B0aW9ucyA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVGl0bGUnKSAmJiAodGhpcy50aXRsZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2ZpZWxkVHlwZUNvZGUnKSAmJiAodGhpcy50eXBlID0gYXR0clZhbHVlKTtcbiAgICAgICAgKGF0dHJOYW1lID09PSAnZmllbGRUeXBlJykgJiYgKHRoaXMudHlwZSA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ3Rvb2x0aXBUZXh0JykgJiYgKHRoaXMudG9vbHRpcCA9IGF0dHJWYWx1ZSk7XG4gICAgICAgIChhdHRyTmFtZSA9PT0gJ2N1c3RvbUF0dHJpYnV0ZXMnKSAmJiAodGhpcy5zZXRDdXN0b21BdHRyaWJ1dGVzKGF0dHJWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFZhbHVlKG5ld1ZhbHVlOiBhbnksIHdpZGdldFVwZGF0ZTogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSBVTkRFRklORUQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09IG51bGwgJiYgdGhpcy5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBuZXdGaW5hbFZhbHVlO1xuICAgIGlmICh0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5ib29sZWFuXG4gICAgICB8fCB0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5jaGVjaykge1xuICAgICAgbmV3RmluYWxWYWx1ZSA9IHluKG5ld1ZhbHVlKSA/PyBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2ZpZWxkVHlwZSA9PT0gdGhpcy5fZm9ybUNvbmZpZy5maWVsZFR5cGVzLmFycmF5XG4gICAgICB8fCB0aGlzLl9maWVsZFR5cGUgPT09IHRoaXMuX2Zvcm1Db25maWcuZmllbGRUeXBlcy5tYXApIHtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgbmV3RmluYWxWYWx1ZSA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdGaW5hbFZhbHVlID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3RmluYWxWYWx1ZSkge1xuICAgICAgdGhpcy5faGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICBpZiAod2lkZ2V0VXBkYXRlKSB7XG4gICAgICAgIHRoaXMuc2V0QXR0cihhdHRycy52YWx1ZSwgbmV3RmluYWxWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG5ld0ZpbmFsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|