ets-fe-ng-sdk 18.0.31 → 18.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Services/api.service.mjs +1 -1
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/api.service.d.ts +2 -4
- package/lib/Services/utility.service.d.ts +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +3 -3
- package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +1 -1
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/text-case-2/text-case-2.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -339,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
|
|
|
339
339
|
providedIn: 'root',
|
|
340
340
|
}]
|
|
341
341
|
}], ctorParameters: () => [] });
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBTyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVVoRSxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRRDtRQWxCUSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBWXZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDTCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTakMsdUJBQWtCLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVB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LElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztTQUMxRixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBb0IsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxDQUFVLEtBQWEsRUFBRSxJQUFjLEVBQUUsTUFBWTtRQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtZQUMxQyx3QkFBd0I7WUFDeEIsR0FBRyxNQUFNLEVBQUUsT0FBTztZQUNsQixvQ0FBb0M7WUFDcEMsc0JBQXNCO1lBQ3RCLHNDQUFzQztZQUN0QyxRQUFRO1lBQ1IsNkJBQTZCO1lBQzdCLEtBQUs7U0FDTixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBa0IsQ0FBQztJQUNoRSxDQUFDO0lBQ0Qsc0JBQXNCLENBQVUsS0FBYSxFQUFFLElBQWM7UUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7YUFDekQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTdUVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGlpZiwgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCByZXRyeSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUNvZGVEZXNjcmlwdGlvbiwgSUNvZGVUaXRsZSB9IGZyb20gJy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi9jYWNoZS9sb2NhbC1jYWNoZS5zZXJ2aWNlJztcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3BvbnNlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXN1bHQ6IGFueTtcbiAgc3RhdHVzOiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2ZhaWx1cmUnO1xuICBzdGF0dXNDb2RlOiAnU00wMDAnIHwgJ1NNMDAxJyB8ICdTTTAwMicgfCAnU00wMDMnO1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2Uge1xuICBwcml2YXRlIHNob3dSb3V0ZXMgPSAwO1xuICBwcml2YXRlIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH07XG4gIH1cbiAgcHJvdGVjdGVkIGdldCBmaWxlSGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIH07XG4gIH1cblxuICBiYXNlVVJMID0gJyc7XG4gIHByaXZhdGUgcmV0cnlDb3VudCA9IDA7XG4gIHB1YmxpYyBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwdWJsaWMgY2FjaGVTID0gaW5qZWN0KENhY2hlU2VydmljZSk7XG4gIHB1YmxpYyBsQ2FjaGVTID0gaW5qZWN0KExvY2FsQ2FjaGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHJpdmF0ZSBsb2dSb3V0ZXMobWV0aG9kOiAnZ2V0JyB8ICdwb3N0JyB8ICdwdXQnIHwgJ2RlbGV0ZScsIHJvdXRlLCAuLi5leHRyYXMpIHtcbiAgICBpZiAodGhpcy5zaG93Um91dGVzKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXRob2QsIHJvdXRlLCAuLi5leHRyYXMpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaGFuZGxlUmVxdWVzdEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAoZXJyPy5lcnJvciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKVxuICAgICAgbWVzc2FnZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkoZXJyPy5lcnJvcikpO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKG1lc3NhZ2UgfHwgZXJyPy5lcnJvcj8ubWVzc2FnZSk7XG4gIH07XG4gIHByb3RlY3RlZCBjb25jYXRlbmF0ZUhlYWRlcnMgPSAoaGVhZGVyczE6IEh0dHBIZWFkZXJzLCBoZWFkZXJzMjogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyA9PiB7XG4gICAgaWYgKCFoZWFkZXJzMSkgcmV0dXJuIGhlYWRlcnMyO1xuICAgIGVsc2UgaWYgKCFoZWFkZXJzMikgcmV0dXJuIGhlYWRlcnMxO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczEua2V5cygpKSBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbSwgaGVhZGVyczEuZ2V0KGl0ZW0pKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczIua2V5cygpKSB7XG4gICAgICBpZiAoaGVhZGVycy5oYXMoaXRlbSkpIGhlYWRlcnMuZGVsZXRlKGl0ZW0pO1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGl0ZW0sIGhlYWRlcnMyLmdldChpdGVtKSk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9O1xuXG4gIC8vI3JlZ2lvbiBQQVRDSFxuICBwYXRjaDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwb3N0Jywgcm91dGUsIGJvZHkpO1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2goZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhoZWFkZXJzLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBQT1NUXG4gIC8vIHBvc3Q8VEJvZHkgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBUQm9keSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VEJvZHk+O1xuICAvLyBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+O1xuICBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncG9zdCcsIHJvdXRlLCBib2R5KTtcbiAgICBjb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnRcbiAgICAgID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJylcbiAgICAgIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICBwb3N0RmlsZTxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSwgZXh0cmFzPzogYW55KSB7XG4gICAgLy8gcmV0dXJuIHRoaXMucG9zdDxUPihyb3V0ZSwgYm9keSwge1xuICAgIC8vICAgb3B0aW9uczoge1xuICAgIC8vICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAvLyAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgIC8vICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAvLyAgICAgICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgIC8vICAgICApLFxuICAgIC8vICAgfSxcbiAgICAvLyB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwb3N0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHBvc3RTdHJpbmcocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVxdWVzdENvdW50JywgKytFVFNlbnZpcm9ubWVudC5yZXF1ZXN0Q291bnQpO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgfSk7XG4gICAgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBoZWFkZXJzLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5wb3N0PHN0cmluZz4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZ1dpdGhMb2NhbENhY2hlKHJvdXRlOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGJkeSA9IGJvZHk/LnRyaW0oKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIGJkeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIGJkeSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RTdHJpbmcocm91dGUsIGJkeSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyBiZHksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBHRVRcbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBHRVQgcmVxdWVzdFxuICAgKiBAcGFyYW0gcm91dGUgQVBJIGVuZHBvaW50XG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9iamVjdCB0byBjb252ZXJ0IGludG8gcXVlcnlwYXJhbXNcbiAgICogQHBhcmFtIGV4dHJhcyBFeHRyYSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldCA9IDxUID0gYW55PihcbiAgICByb3V0ZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnM/OiB7IFtmaWVsZDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9LFxuICAgIGV4dHJhcz86IElFeHRyYXMsXG4gICk6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdnZXQnLCByb3V0ZSwgcGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMICsgcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KHF1ZXJ5LCB7XG4gICAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICByZXRyeSh0aGlzLnJldHJ5Q291bnQpLFxuICAgICAgICAgIHRhcCgoeCkgPT4gKHRoaXMuc2hvd1JvdXRlcyA/IGNvbnNvbGUubG9nKHgpIDogbnVsbCkpLFxuICAgICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpXG4gICAgICAgICAgICAgIGlmIChyZXNbMF0/LmNvZGUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2RlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHJlc1swXT8uY29sdW1uTmFtZSkgcmV0dXJuIHJlcy5zb3J0KCkuc29ydDIoJ2NvbHVtbk5hbWUnLCB0cnVlKTtcbiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVzLnNvcnQoKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvciksXG4gICAgICAgIClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5jYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiByZXMuZXJyb3IoZXJyKSk7XG4gICAgfSk7XG4gIH07XG5cbiAgZ2V0Q29kZXMgPSA8VCBleHRlbmRzIElDb2RlVGl0bGUgfCBJQ29kZURlc2NyaXB0aW9uID0gSUNvZGVUaXRsZSAmIElDb2RlRGVzY3JpcHRpb24+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICkgPT4gdGhpcy5nZXQ8VFtdPihyb3V0ZSkucGlwZShtYXAoKHJlcykgPT4gdGhpcy5zb3J0Q29kZXMocmVzKSkpO1xuXG4gIGdldFRleHQgPSA8VCA9IHN0cmluZz4oXG4gICAgcm91dGU6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzPzogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSxcbiAgICBleHRyYXM/OiBJRXh0cmFzLFxuICApID0+XG4gICAgdGhpcy5nZXQ8VD4ocm91dGUsIHBhcmFtZXRlcnMsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRGaWxlID0gPFQgPSBzdHJpbmc+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IHsgW2ZpZWxkOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0sXG4gICAgZXh0cmFzPzogSUV4dHJhcyxcbiAgKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheUJ1ZmZlcicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gIGdldFdpdGhCb2R5ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZ2V0Jywgcm91dGUpO1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdHRVQnLCB0aGlzLmJhc2VVUkwgKyByb3V0ZSwgYm9keSwge1xuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4ocmVxKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9O1xuXG4gIGdldEZyb21sb2NhbCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogT2JqZWN0LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIGlmICh0aGlzLmxDYWNoZVMuaGFzKHF1ZXJ5KSkge1xuICAgICAgICByZXMubmV4dCh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxUPihxdWVyeSkpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0KHF1ZXJ5LCBudWxsLCBleHRyYXMpKS50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZ2V0V2l0aExvY2FsQ2FjaGUgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IE9iamVjdCwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08VD4ocXVlcnkpKTtcbiAgICAgIH1cbiAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5nZXQocXVlcnksIG51bGwsIGV4dHJhcykpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICBnZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycz86IE9iamVjdCkge1xuICAgIHJldHVybiAhcGFyYW1ldGVyc1xuICAgICAgPyAnJ1xuICAgICAgOiAnPycgK1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHBhcmFtZXRlcnNba2V5XT8udG9TdHJpbmcoKT8udHJpbSgpICE9IG51bGwpXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IGAke2tleX09JHtwYXJhbWV0ZXJzW2tleV0/LnRvU3RyaW5nKCk/LnRyaW0oKX1gKVxuICAgICAgICAgICAgLmpvaW4oJyYnKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUFVUXG4gIHB1dDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwdXQnLCByb3V0ZSwgYm9keSk7XG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMICsgcm91dGUgKyAnJyxcbiAgICAgIG5ib2R5ID0gYm9keTtcbiAgICBpZiAoZXh0cmFzPy5yZXF1ZXN0VHlwZSA9PSAncXVlcnlQYXJhbXMnKSB7XG4gICAgICBxdWVyeSArPSB0aGlzLmdldFJlcXVlc3RQYXJzZShib2R5KTtcbiAgICAgIG5ib2R5ID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50XG4gICAgICA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpXG4gICAgICA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQocXVlcnksIG5ib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH1cbiAgcHV0RmlsZTxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSwgZXh0cmFzPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnB1dChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIC8vIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIC8vIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKFxuICAgICAgICAvLyAgIG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgIC8vICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgIC8vICAgfSksXG4gICAgICAgIC8vICAgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzXG4gICAgICAgIC8vICksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cbiAgcHV0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnB1dDxUPihyb3V0ZSwgYm9keSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIERFTEVURVxuICBkZWxldGUgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdkZWxldGUnLCByb3V0ZSk7XG5cbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnRcbiAgICAgID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJylcbiAgICAgIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmRlbGV0ZTxUPih0aGlzLmJhc2VVUkwgKyByb3V0ZSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9O1xuICBkZWxldGVXaXRoQm9keSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PzogYW55LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2RlbGV0ZScsIHJvdXRlKTtcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ0RFTEVURScsIHRoaXMuYmFzZVVSTCArIHJvdXRlLCBib2R5LCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdDxUPihyZXEpLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfTtcbiAgZGVsZXRlVGV4dCA9IChyb3V0ZTogc3RyaW5nLCBleHRyYXM/OiBJRXh0cmFzKSA9PlxuICAgIHRoaXMuZGVsZXRlPHN0cmluZz4ocm91dGUsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9LFxuICAgIH0pO1xuICAvLyNlbmRyZWdpb25cblxuICBzb3J0Q29kZXMgPSA8VCBleHRlbmRzIHsgY29kZTogc3RyaW5nIH0+KGRhdGE6IFRbXSkgPT4ge1xuICAgIHJldHVybiBkYXRhPy5zb3J0MignY29kZScsIHRydWUpPy5zb3J0MignY29kZScpIGFzIGFueSBhcyBUW107XG4gIH07XG59XG5cbmludGVyZmFjZSBJRXh0cmFzIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0byB1c2UgdGhlIGVuZG9yc2VtZW50IGhlYWRlclxuICAgKi9cbiAgdXNlRW5kb3JzZW1lbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVwb3J0IHByb2dyZXNzIG9mIHRoZSByZXF1ZXN0XG4gICAqL1xuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSByZXF1ZXN0IG9wdGlvbnMuIFRoZSBhZGRlZCBvcHRpb25zIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgb3B0aW9ucz86IHtcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XG4gICAgW3g6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHJlcXVlc3QgdHlwZS4gSWYgdGhlIHJlcXVlc3QgdHlwZSBpcyBxdWVyeVBhcmFtcywgdGhlIGJvZHkgd2lsbCBiZSBzZW50IGFzIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICovXG4gIHJlcXVlc3RUeXBlPzogJ3F1ZXJ5UGFyYW1zJztcbn1cbiJdfQ==
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBTyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVdoRSxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRRDtRQWxCUSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBWXZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDTCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTakMsdUJBQWtCLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVB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LElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztTQUMxRixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBb0IsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsT0FBTyxDQUFVLEtBQWEsRUFBRSxJQUFjLEVBQUUsTUFBWTtRQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtZQUMxQyx3QkFBd0I7WUFDeEIsR0FBRyxNQUFNLEVBQUUsT0FBTztZQUNsQixvQ0FBb0M7WUFDcEMsc0JBQXNCO1lBQ3RCLHNDQUFzQztZQUN0QyxRQUFRO1lBQ1IsNkJBQTZCO1lBQzdCLEtBQUs7U0FDTixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBa0IsQ0FBQztJQUNoRSxDQUFDO0lBQ0Qsc0JBQXNCLENBQVUsS0FBYSxFQUFFLElBQWM7UUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7YUFDekQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpUVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGlpZiwgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCByZXRyeSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUNvZGVEZXNjcmlwdGlvbiwgSUNvZGVUaXRsZSwgSU9iamVjdExpdGVyYWwgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvbG9jYWwtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBwYXJ0aWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3BvbnNlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICByZXN1bHQ6IGFueTtcbiAgc3RhdHVzOiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2ZhaWx1cmUnO1xuICBzdGF0dXNDb2RlOiAnU00wMDAnIHwgJ1NNMDAxJyB8ICdTTTAwMicgfCAnU00wMDMnO1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2Uge1xuICBwcml2YXRlIHNob3dSb3V0ZXMgPSAwO1xuICBwcml2YXRlIGdldCBoZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIH07XG4gIH1cbiAgcHJvdGVjdGVkIGdldCBmaWxlSGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIH07XG4gIH1cblxuICBiYXNlVVJMID0gJyc7XG4gIHByaXZhdGUgcmV0cnlDb3VudCA9IDA7XG4gIHB1YmxpYyBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwdWJsaWMgY2FjaGVTID0gaW5qZWN0KENhY2hlU2VydmljZSk7XG4gIHB1YmxpYyBsQ2FjaGVTID0gaW5qZWN0KExvY2FsQ2FjaGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHJpdmF0ZSBsb2dSb3V0ZXMobWV0aG9kOiAnZ2V0JyB8ICdwb3N0JyB8ICdwdXQnIHwgJ2RlbGV0ZScsIHJvdXRlLCAuLi5leHRyYXMpIHtcbiAgICBpZiAodGhpcy5zaG93Um91dGVzKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXRob2QsIHJvdXRlLCAuLi5leHRyYXMpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaGFuZGxlUmVxdWVzdEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAoZXJyPy5lcnJvciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKVxuICAgICAgbWVzc2FnZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkoZXJyPy5lcnJvcikpO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKG1lc3NhZ2UgfHwgZXJyPy5lcnJvcj8ubWVzc2FnZSk7XG4gIH07XG4gIHByb3RlY3RlZCBjb25jYXRlbmF0ZUhlYWRlcnMgPSAoaGVhZGVyczE6IEh0dHBIZWFkZXJzLCBoZWFkZXJzMjogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyA9PiB7XG4gICAgaWYgKCFoZWFkZXJzMSkgcmV0dXJuIGhlYWRlcnMyO1xuICAgIGVsc2UgaWYgKCFoZWFkZXJzMikgcmV0dXJuIGhlYWRlcnMxO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczEua2V5cygpKSBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbSwgaGVhZGVyczEuZ2V0KGl0ZW0pKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaGVhZGVyczIua2V5cygpKSB7XG4gICAgICBpZiAoaGVhZGVycy5oYXMoaXRlbSkpIGhlYWRlcnMuZGVsZXRlKGl0ZW0pO1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGl0ZW0sIGhlYWRlcnMyLmdldChpdGVtKSk7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9O1xuXG4gIC8vI3JlZ2lvbiBQQVRDSFxuICBwYXRjaDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwb3N0Jywgcm91dGUsIGJvZHkpO1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2goZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhoZWFkZXJzLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBQT1NUXG4gIC8vIHBvc3Q8VEJvZHkgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBUQm9keSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VEJvZHk+O1xuICAvLyBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+O1xuICBwb3N0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncG9zdCcsIHJvdXRlLCBib2R5KTtcbiAgICBjb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnRcbiAgICAgID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJylcbiAgICAgIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICBwb3N0RmlsZTxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSwgZXh0cmFzPzogYW55KSB7XG4gICAgLy8gcmV0dXJuIHRoaXMucG9zdDxUPihyb3V0ZSwgYm9keSwge1xuICAgIC8vICAgb3B0aW9uczoge1xuICAgIC8vICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAvLyAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgIC8vICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAvLyAgICAgICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgIC8vICAgICApLFxuICAgIC8vICAgfSxcbiAgICAvLyB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwb3N0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHBvc3RTdHJpbmcocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVxdWVzdENvdW50JywgKytFVFNlbnZpcm9ubWVudC5yZXF1ZXN0Q291bnQpO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgfSk7XG4gICAgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBoZWFkZXJzLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5wb3N0PHN0cmluZz4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZ1dpdGhMb2NhbENhY2hlKHJvdXRlOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGJkeSA9IGJvZHk/LnRyaW0oKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIGJkeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIGJkeSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RTdHJpbmcocm91dGUsIGJkeSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyBiZHksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBHRVRcbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBHRVQgcmVxdWVzdFxuICAgKiBAcGFyYW0gcm91dGUgQVBJIGVuZHBvaW50XG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9iamVjdCB0byBjb252ZXJ0IGludG8gcXVlcnlwYXJhbXNcbiAgICogQHBhcmFtIGV4dHJhcyBFeHRyYSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogSU9iamVjdExpdGVyYWwsIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZ2V0Jywgcm91dGUsIHBhcmFtZXRlcnMpO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuYmFzZVVSTCArIHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLmdldChxdWVyeSwge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgcmV0cnkodGhpcy5yZXRyeUNvdW50KSxcbiAgICAgICAgICB0YXAoKHgpID0+ICh0aGlzLnNob3dSb3V0ZXMgPyBjb25zb2xlLmxvZyh4KSA6IG51bGwpKSxcbiAgICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKVxuICAgICAgICAgICAgICBpZiAocmVzWzBdPy5jb2RlKSByZXR1cm4gcmVzLnNvcnQoKS5zb3J0MignY29kZScsIHRydWUpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChyZXNbMF0/LmNvbHVtbk5hbWUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2x1bW5OYW1lJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHJlcy5zb3J0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpLFxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMuY2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycikgPT4gcmVzLmVycm9yKGVycikpO1xuICAgIH0pO1xuICB9O1xuXG4gIGdldENvZGVzID0gPFQgZXh0ZW5kcyBJQ29kZVRpdGxlIHwgSUNvZGVEZXNjcmlwdGlvbiA9IElDb2RlVGl0bGUgJiBJQ29kZURlc2NyaXB0aW9uPihcbiAgICByb3V0ZTogc3RyaW5nLFxuICApID0+IHRoaXMuZ2V0PFRbXT4ocm91dGUpLnBpcGUobWFwKChyZXMpID0+IHRoaXMuc29ydENvZGVzKHJlcykpKTtcblxuICBnZXRUZXh0ID0gPFQgPSBzdHJpbmc+KFxuICAgIHJvdXRlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVycz86IHsgW2ZpZWxkOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0sXG4gICAgZXh0cmFzPzogSUV4dHJhcyxcbiAgKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgZ2V0RmlsZSA9IDxUID0gc3RyaW5nPihcbiAgICByb3V0ZTogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnM/OiB7IFtmaWVsZDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9LFxuICAgIGV4dHJhcz86IElFeHRyYXMsXG4gICkgPT5cbiAgICB0aGlzLmdldDxUPihyb3V0ZSwgcGFyYW1ldGVycywge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlCdWZmZXInLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRXaXRoQm9keSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PzogYW55LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2dldCcsIHJvdXRlKTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnR0VUJywgdGhpcy5iYXNlVVJMICsgcm91dGUsIGJvZHksIHtcbiAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfTtcblxuICBnZXRGcm9tbG9jYWwgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IE9iamVjdCwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08VD4ocXVlcnkpKTtcbiAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmdldChxdWVyeSwgbnVsbCwgZXh0cmFzKSkudGhlbigocikgPT4ge1xuICAgICAgICAgIC8vIGlmICghdGhpcy5jUy5oYXMocm91dGUpKVxuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKHF1ZXJ5LCByKTtcbiAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIGdldFdpdGhMb2NhbENhY2hlID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBPYmplY3QsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKHJlcykgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSByb3V0ZSArIHRoaXMuZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnMpO1xuICAgICAgaWYgKHRoaXMubENhY2hlUy5oYXMocXVlcnkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPFQ+KHF1ZXJ5KSk7XG4gICAgICB9XG4gICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0KHF1ZXJ5LCBudWxsLCBleHRyYXMpKVxuICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgIC8vIGlmICghdGhpcy5jUy5oYXMocm91dGUpKVxuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMubENhY2hlUy5zZXRJdGVtKHF1ZXJ5LCByKTtcbiAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgcmVzLmVycm9yKGUpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnM/OiBPYmplY3QpIHtcbiAgICByZXR1cm4gIXBhcmFtZXRlcnNcbiAgICAgID8gJydcbiAgICAgIDogJz8nICtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBwYXJhbWV0ZXJzW2tleV0/LnRvU3RyaW5nKCk/LnRyaW0oKSAhPSBudWxsKVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBgJHtrZXl9PSR7cGFyYW1ldGVyc1trZXldPy50b1N0cmluZygpPy50cmltKCl9YClcbiAgICAgICAgICAgIC5qb2luKCcmJyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFBVVFxuICBwdXQ8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncHV0Jywgcm91dGUsIGJvZHkpO1xuICAgIGxldCBxdWVyeSA9IHRoaXMuYmFzZVVSTCArIHJvdXRlICsgJycsXG4gICAgICBuYm9keSA9IGJvZHk7XG4gICAgaWYgKGV4dHJhcz8ucmVxdWVzdFR5cGUgPT0gJ3F1ZXJ5UGFyYW1zJykge1xuICAgICAgcXVlcnkgKz0gdGhpcy5nZXRSZXF1ZXN0UGFyc2UoYm9keSk7XG4gICAgICBuYm9keSA9IG51bGw7XG4gICAgfVxuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudFxuICAgICAgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKVxuICAgICAgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KHF1ZXJ5LCBuYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHB1dEZpbGU8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEsIGV4dHJhcz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICAvLyByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICAvLyBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAgICAgLy8gICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAvLyAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAvLyAgIH0pLFxuICAgICAgICAvLyAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgICAgICAvLyApLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG4gIHB1dEZpbGVXaXRoRW5kb3JzZW1lbnQ8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5wdXQ8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBERUxFVEVcbiAgZGVsZXRlID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZGVsZXRlJywgcm91dGUpO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50XG4gICAgICA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpXG4gICAgICA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5kZWxldGU8VD4odGhpcy5iYXNlVVJMICsgcm91dGUsIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfTtcbiAgZGVsZXRlV2l0aEJvZHkgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IGFueSwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdkZWxldGUnLCByb3V0ZSk7XG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdERUxFVEUnLCB0aGlzLmJhc2VVUkwgKyByb3V0ZSwgYm9keSwge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4ocmVxKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH07XG4gIGRlbGV0ZVRleHQgPSAocm91dGU6IHN0cmluZywgZXh0cmFzPzogSUV4dHJhcykgPT5cbiAgICB0aGlzLmRlbGV0ZTxzdHJpbmc+KHJvdXRlLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgLy8jZW5kcmVnaW9uXG5cbiAgc29ydENvZGVzID0gPFQgZXh0ZW5kcyB7IGNvZGU6IHN0cmluZyB9PihkYXRhOiBUW10pID0+IHtcbiAgICByZXR1cm4gZGF0YT8uc29ydDIoJ2NvZGUnLCB0cnVlKT8uc29ydDIoJ2NvZGUnKSBhcyBhbnkgYXMgVFtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgSUV4dHJhcyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIHRoZSBlbmRvcnNlbWVudCBoZWFkZXJcbiAgICovXG4gIHVzZUVuZG9yc2VtZW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlcG9ydCBwcm9ncmVzcyBvZiB0aGUgcmVxdWVzdFxuICAgKi9cbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcmVxdWVzdCBvcHRpb25zLiBUaGUgYWRkZWQgb3B0aW9ucyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIG9wdGlvbnM/OiB7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAgIFt4OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSByZXF1ZXN0IHR5cGUuIElmIHRoZSByZXF1ZXN0IHR5cGUgaXMgcXVlcnlQYXJhbXMsIHRoZSBib2R5IHdpbGwgYmUgc2VudCBhcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqL1xuICByZXF1ZXN0VHlwZT86ICdxdWVyeVBhcmFtcyc7XG59XG4iXX0=
|