@posiwise/common-services 0.1.75 → 0.1.77
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/index.mjs +2 -2
- package/esm2022/lib/auth.service.mjs +33 -22
- package/esm2022/lib/brain.service.mjs +1 -1
- package/esm2022/lib/permission.service.mjs +158 -3
- package/esm2022/lib/secure-token-storage.service.mjs +264 -0
- package/esm2022/lib/sentry.service.mjs +2 -2
- package/esm2022/lib/subscription.service.mjs +4 -1
- package/fesm2022/posiwise-common-services.mjs +475 -81
- package/fesm2022/posiwise-common-services.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/lib/auth.service.d.ts +8 -2
- package/lib/brain.service.d.ts +1 -1
- package/lib/permission.service.d.ts +27 -0
- package/lib/secure-token-storage.service.d.ts +94 -0
- package/lib/subscription.service.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/jquery.service.mjs +0 -35
- package/lib/jquery.service.d.ts +0 -14
|
@@ -113,7 +113,7 @@ export class SentryErrorHandler {
|
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
115
|
// Check if it's a non-error exception
|
|
116
|
-
const isNonErrorException = event?.exception?.values?.[0]?.value?.startsWith('Non-Error exception captured')
|
|
116
|
+
const isNonErrorException = event?.exception?.values?.[0]?.value?.startsWith('Non-Error exception captured') ??
|
|
117
117
|
hint?.originalException?.message?.startsWith('Non-Error exception captured');
|
|
118
118
|
if (isNonErrorException) {
|
|
119
119
|
// We want to ignore those kinds of errors
|
|
@@ -379,4 +379,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
379
379
|
providedIn: 'root'
|
|
380
380
|
}]
|
|
381
381
|
}], ctorParameters: () => [{ type: i1.AppConfigService }] });
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3NlbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7OztBQUs5QyxNQUFNLE9BQU8sa0JBQWtCO2FBRVosc0JBQWlCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFekMsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELEtBQUssQ0FBQyxxQkFBcUI7UUFDL0IsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLHdEQUF3RDtZQUN4RCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxD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RSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUNKLENBQUM7UUFDTixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDOytHQTNhUSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZmLE1BQU07OzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEVycm9ySGFuZGxlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1jb25maWctc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBTdGF0dXNDb2RlcyB9IGZyb20gJ2h0dHAtc3RhdHVzLWNvZGVzJztcbmltcG9ydCB7IGZyb21FcnJvciB9IGZyb20gJ3N0YWNrdHJhY2UtanMnO1xuXG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSAnQHNlbnRyeS9hbmd1bGFyLWl2eSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VudHJ5RXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyB1c2VyOiBQYXJ0aWFsPFVzZXI+O1xuICAgIHByaXZhdGUgc3RhdGljIHNlbnRyeUluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTZW50cnlBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFNlbnRyeUVycm9ySGFuZGxlci5zZW50cnlJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgLy8gU2VudHJ5IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBTZW50cnkuY3JlYXRlRXJyb3JIYW5kbGVyKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5nZXRTZW50cnlDb25maWdBc3luYygpO1xuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnN1YnNjcmliZShlbnYgPT4ge1xuICAgICAgICAgICAgaWYgKGVudj8uaW50ZWdyYXRpb25zPy5zZW50cnlfY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgU2VudHJ5LmluaXQoeyAuLi5jb25maWcsIC4uLmVudi5pbnRlZ3JhdGlvbnMuc2VudHJ5X2NvbmZpZyB9KTtcbiAgICAgICAgICAgICAgICBTZW50cnlFcnJvckhhbmRsZXIuc2VudHJ5SW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gQWRkIGEgZ2xvYmFsIGxpc3RlbmVyIGZvciB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZVJlamVjdGlvbihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBBZGQgYSBnbG9iYWwgbGlzdGVuZXIgZm9yIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldFNlbnRyeUNvbmZpZ0FzeW5jKCk6IFByb21pc2U8U2VudHJ5LkJyb3dzZXJPcHRpb25zPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudmlyb25tZW50ID1cbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdD8uaW5jbHVkZXMoJ2RldicpIHx8IHdpbmRvdy5sb2NhdGlvbi5ob3N0Py5pbmNsdWRlcygnbG9jYWxob3N0JylcbiAgICAgICAgICAgICAgICAgICAgPyAnZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgaGVhbHRoQ2hlY2tQYXRocyA9IFsnL3BpbmcnXTtcbiAgICAgICAgICAgIGNvbnN0IG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgZml2ZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuXG4gICAgICAgICAgICBjb25zdCBjb25maWc6IFNlbnRyeS5Ccm93c2VyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBkc246IG51bGwsXG4gICAgICAgICAgICAgICAgdHJhY2VzU2FtcGxlUmF0ZTogMC4xLFxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQoZXZlbnQsIGhpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9mIHR5cGUgQ2xvc2VFdmVudCBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjb25kaXRpb24gYmFzZWQgb24gdGhlIGFjdHVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdDbG9zZUV2ZW50JyB8fCB2YWx1ZS52YWx1ZS5pbmNsdWRlcygnQ2xvc2VFdmVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYXRlcyBmcm9tIHZlbmRvci5qcyBmaWxlXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSnNvblBhcnNpbmdFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1N5bnRheEVycm9yJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT8udmFsdWU/LmluY2x1ZGVzKFwiZXhwZWN0ZWQgJzonIGFmdGVyIHByb3BlcnR5IG5hbWUgaW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pzb25QYXJzaW5nRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCBpcyBhIENodW5rTG9hZEVycm9yIGFuZCBpZ25vcmUgaXQgKGl0IGNvdWxkIGJlIGJlY2F1c2Ugb2YgcG9vciBuZXR3b3JrKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnQ2h1bmtMb2FkRXJyb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDaHVua0xvYWRFcnJvcjogTG9hZGluZyBjaHVuaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgc2NyaXB0IGxvYWRpbmcgZXJyb3IgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDb3VsZCBub3QgbG9hZCBcInV0aWxcIicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgdGltZW91dCBlcnJvciBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ0Vycm9yIGxvYWRpbmcgcGxvdGx5LmpzIGxpYnJhcnkgZnJvbScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIHJlbGF0ZWQgdG8gY3Jvc3Mtb3JpZ2luIGZyYW1lIGFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Nyb3NzT3JpZ2luRnJhbWVFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1NlY3VyaXR5RXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPy52YWx1ZT8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byByZWFkIGEgbmFtZWQgcHJvcGVydHkgJ25hdmlnYXRvcicgZnJvbSAnV2luZG93JzogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5GcmFtZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBjcm9zcy1vcmlnaW4gZnJhbWUgZXJyb3JzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gU2VudHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaGFzIGFuIGV4Y2VwdGlvbiBhbmQgdmFsdWVzIGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgZXZlbnRzIGdlbmVyYXRlZCBieSBUcnlDYXRjaCBhbmQgR2xvYmFsSGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVjaGFuaXNtID0gdmFsdWUubWVjaGFuaXNtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lY2hhbmlzbS50eXBlID09PSAnVHJ5Q2F0Y2gnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20udHlwZSA9PT0gJ0dsb2JhbEhhbmRsZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGEgbm9uLWVycm9yIGV4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc05vbkVycm9yRXhjZXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcz8uWzBdPy52YWx1ZT8uc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUVycm9yIGV4Y2VwdGlvbiBjYXB0dXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChoaW50Py5vcmlnaW5hbEV4Y2VwdGlvbiBhcyBFcnJvcik/Lm1lc3NhZ2U/LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbi1FcnJvciBleGNlcHRpb24gY2FwdHVyZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05vbkVycm9yRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGlnbm9yZSB0aG9zZSBraW5kcyBvZiBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVueVVybHM6IFsvZHJpZnQuKlxcLmpzL2ksIC9hbmFseXRpY3MuKlxcLmpzL2ksIC9wb2x5ZmlsbHMuKlxcLmpzL2ksIC92ZW5kb3IuKlxcLmpzL2ldLFxuICAgICAgICAgICAgICAgIGludGVncmF0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlcnMgYW5kIGNvbmZpZ3VyZXMgdGhlIFRyYWNpbmcgaW50ZWdyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGF1dG9tYXRpY2FsbHkgaW5zdHJ1bWVudHMgeW91ciBhcHBsaWNhdGlvbiB0byBtb25pdG9yIGl0c1xuICAgICAgICAgICAgICAgICAgICAvLyBwZXJmb3JtYW5jZSwgaW5jbHVkaW5nIGN1c3RvbSBBbmd1bGFyIHJvdXRpbmcgaW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZW50cnkuQnJvd3NlclRyYWNpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0luc3RydW1lbnRhdGlvbjogU2VudHJ5LnJvdXRpbmdJbnN0cnVtZW50YXRpb25cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRyYWNlc1NhbXBsZXI6IHNhbXBsaW5nQ29udGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4YW1pbmUgcHJvdmlkZWQgY29udGV4dCBkYXRhIChpbmNsdWRpbmcgcGFyZW50IGRlY2lzaW9uLCBpZiBhbnkpIGFsb25nXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggYW55dGhpbmcgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gY29tcHV0ZSB0aGUgc2FtcGxlIHJhdGUgb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gc2FtcGxpbmcgZGVjaXNpb24gZm9yIHRoaXMgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aG5hbWUgPSBzYW1wbGluZ0NvbnRleHQubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFsdGhDaGVja1BhdGhzLmluY2x1ZGVzKHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmVyeSBsb3cgcmF0ZSBhcyB0aGVzZSBhcmUgZXh0cmVtZWx5IGZyZXF1ZW50IGFuZCBwcmV0dHkgdXNlbGVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4wMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaXZlUGVyY2VudElnbm9yZWRQYXRocy5pbmNsdWRlcyhwYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjA1O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBzYW1wbGUgcmF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsXG5cbiAgICAgICAgICAgICAgICAvLyBXZSBpZ25vcmUgU2VydmVyIEVycm9ycy4gV2UgaGF2ZSB0byBkZWZpbmUgaGVyZSBzaW5jZSBBbmd1bGFyXG4gICAgICAgICAgICAgICAgLy8gaHR0cCBjbGllbnQgdXNlcyBzZXRUaW1lb3V0IHRvIGRldGVjdCBodHRwIGNhbGwgcHJvZ3Jlc3MuXG4gICAgICAgICAgICAgICAgLy8gQW5kIHdoZW4gdGhlIGNhbGwgZmFpbHMsIGl0IHRocm93cyBhbiBleGNlcHRpb24gaW5zaWRlIHRoYXQgdGltZW91dFxuICAgICAgICAgICAgICAgIC8vIHRoYXQgYnViYmxlcyB1cCBoaWdoZXIgdG8gdGhlIG1haW4gQW5ndWxhcidzIGVycm9yIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgaWdub3JlRXJyb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0b3AuR0xPQkFMUycsXG4gICAgICAgICAgICAgICAgICAgICdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMnXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXRpYWxpemVVc2VyKHVzZXI6IFBhcnRpYWw8VXNlcj4pIHtcbiAgICAgICAgU2VudHJ5RXJyb3JIYW5kbGVyLnVzZXIgPSB7XG4gICAgICAgICAgICBpZDogdXNlcj8uaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyPy5maXJzdF9uYW1lLFxuICAgICAgICAgICAgZW1haWw6IHVzZXI/LmVtYWlsXG4gICAgICAgIH0gYXMgUGFydGlhbDxVc2VyPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQ6IFByb21pc2VSZWplY3Rpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcnJvciA9IGV2ZW50LnJlYXNvbjtcbiAgICAgICAgdGhpcy5sb2dUb1NlbnRyeShlcnJvcik7XG4gICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihpbmNvbWluZ0Vycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IEVycm9yKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgNDAxLCByZXR1cm4gbm8gZXhjZXB0aW9uXG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5BVVRIT1JJWkVEIHx8XG4gICAgICAgICAgICAgICAgaW5jb21pbmdFcnJvci5zdGF0dXMgPT09IFN0YXR1c0NvZGVzLkZPUkJJRERFTlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQwMSBlcnJvciAoZS5nLiwgcmVkaXJlY3QgdG8gbG9naW4gcGFnZSlcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmF1dGhvcml6ZWQgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5QUk9DRVNTQUJMRV9FTlRJVFkpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgNDIyIGVycm9yXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVU5QUk9DRVNTQUJMRV9FTlRJVFkgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gNDMzKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQzMyBlcnJvclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ292ZXIgbWVzc2FnZSBxdW90YTonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBpbmNvbWluZ0Vycm9yOyAvLyBUaGUgYWN0dWFsIGVycm9yIHRvIGxvZ1xuICAgICAgICAgICAgd2hpbGUgKCdvcmlnaW5hbEVycm9yJyBpbiBlcnJvciAmJiBlcnJvci5vcmlnaW5hbEVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1RvQ29uc29sZShlcnJvcik7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5vcmlnaW5hbEVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcikge1xuICAgICAgICAvLyBFeGNsdWRlIHNwZWNpZmljIGVycm9yc1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlZCA0MDQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCBsb2dnaW5nIHRvIFNlbnRyeVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gMCAmJiBlcnJvci5zdGF0dXNUZXh0ID09PSAnVW5rbm93biBFcnJvcicpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbmV0d29yay1yZWxhdGVkIGVycm9ycyBkaWZmZXJlbnRseSBvciBzdXBwcmVzcyB0aGVtXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdOZXR3b3JrLXJlbGF0ZWQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcmV0aHJvdyB0aGUgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcik7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihgR290IEh0dHBFcnJvclJlc3BvbnNlIG9uIFVSTCAke2Vycm9yLnVybH0gbWVzc2FnZTogJHttZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVOb25IdHRwRXJyb3JSZXNwb25zZShlcnJvcik7XG5cbiAgICAgICAgLy8gRW5zdXJlIGFsbCBlcnJvcnMgaGF2ZSBhIHByb3BlciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlRm9ybWF0dGVyKGVycm9yKTtcblxuICAgICAgICAvLyBFeGlzdGluZyBTZW50cnkgaW5pdGlhbGl6YXRpb24gbG9naWNcbiAgICAgICAgdGhpcy5zZW50cnlJbml0aWFsaXphdGlvbihlcnJvciwgaW5jb21pbmdFcnJvcik7XG4gICAgfVxuXG4gICAgZ2V0RXJyb3JNZXNzYWdlKGVycm9yKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHsgbWVzc2FnZSB9ID0gZXJyb3I7XG4gICAgICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBlcnJvci50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGhhbmRsZU5vbkh0dHBFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSBTdGF0dXNDb2Rlcy5VTkFVVEhPUklaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE9iamVjdCBjYXB0dXJlZCBhcyBleGNlcHRpb246ICR7ZXJyb3J9YCk7IC8vIE5PU09OQVJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeGNsdWRlIHJlcG9ydGluZyA0MDEgZXJyb3JzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvck1lc3NhZ2VGb3JtYXR0ZXIoZXJyb3IpIHtcbiAgICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgfHwgIWVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRNZXNzYWdlID0gJ0NhcHR1cmVkIGFuIHVubGFiZWxlZCBldmVudCc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciAmJiAnaXNUcnVzdGVkJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JlZCBpc1RydXN0ZWQgYnJvd3NlciBldmVudDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlcnJvckRldGFpbHMgPSBlcnJvciA/IEpTT04uc3RyaW5naWZ5KGVycm9yKSA6ICdObyBtb3JlIGFkZGl0aW9uYWwgZXJyb3IgaW5mbyc7XG4gICAgICAgICAgICBjb25zdCBlbmhhbmNlZEVycm9yTWVzc2FnZSA9IGAke2RlZmF1bHRNZXNzYWdlfSB8IE9yaWdpbmFsIGVycm9yIGRldGFpbDogJHtlcnJvckRldGFpbHN9YDtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGVuaGFuY2VkRXJyb3JNZXNzYWdlKTsgLy8gTk9TT05BUlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VudHJ5SW5pdGlhbGl6YXRpb24oZXJyb3IsIGluY29taW5nRXJyb3IpIHtcbiAgICAgICAgaWYgKCFTZW50cnlFcnJvckhhbmRsZXIuc2VudHJ5SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlbnRyeUFzeW5jKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nVG9TZW50cnkoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBpbmNvbWluZ0Vycm9yO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBTZW50cnk6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dUb0NvbnNvbGUoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2dUb1NlbnRyeShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvZ1RvU2VudHJ5KGVycm9yOiBFcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IFNlbnRyeUVycm9ySGFuZGxlci51c2VyIGFzIEVycm9yO1xuICAgICAgICAgICAgdGhpcy5zY29wZVdpdGhTZW50cnkoZXJyb3IsIHVzZXIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gbG9nIHRoZSBlcnJvciB0byBTZW50cnkuIEFuIGV4Y2VwdGlvbiBvY2N1cnJlZDonKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNjb3BlV2l0aFNlbnRyeShlcnJvciwgdXNlcikge1xuICAgICAgICBTZW50cnkud2l0aFNjb3BlKHNjb3BlID0+IHtcbiAgICAgICAgICAgIC8vIEFwcGVuZHMgdXNlciBkZXRhaWxzIGZvciBzZW50cnkgbG9nXG4gICAgICAgICAgICBzY29wZS5zZXRVc2VyKHtcbiAgICAgICAgICAgICAgICAuLi51c2VyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gRW5zdXJlIGVycm9yIGlzIHByb3Blcmx5IGZvcm1hdHRlZFxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiBlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9uU3RhbmRhcmRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVW5sYWJlbGVkRXZlbnQoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU5vblN0YW5kYXJkRXJyb3IoZXJyb3I6IG9iamVjdCkge1xuICAgICAgICBpZiAoJ2lzVHJ1c3RlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCBidXQgbm90IGEgc3RhbmRhcmQgRXJyb3IsIGF0dGVtcHQgdG8gbG9nIGl0cyBwcm9wZXJ0aWVzIHNhZmVseVxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gJ0NhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvciB3aXRoIG5vIG1lc3NhZ2UnOyAvLyBOT1NPTkFSXG5cbiAgICAgICAgLy8gVHJ5IHRvIGV4dHJhY3QgYW55IG1lc3NhZ2UtbGlrZSBwcm9wZXJ0eSBzYWZlbHlcbiAgICAgICAgaWYgKCdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2VUZXh0ID0gJyc7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gJ29iamVjdCcgJiYgZXJyb3IubWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYEVycm9yIG1lc3NhZ2U6ICR7bWVzc2FnZVRleHR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gY2FwdHVyZSBrZXkgcHJvcGVydGllcyBzYWZlbHlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYENhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShlcnJvciwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXJyb3IpKX1gO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICB9IGNhdGNoIChqc29uRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBDYXB0dXJlZCBub24tc3RhbmRhcmQgZXJyb3Igd2l0aCBzZXJpYWxpemF0aW9uIGlzc3VlOiAke2pzb25FcnJvci5tZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgRXJyb3Igb2JqZWN0IHdpdGggdGhlIGVuaGFuY2VkIG1lc3NhZ2VcbiAgICAgICAgY29uc3QgZXJyb3JPYmplY3QgPSBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZXJyb3JPYmplY3QpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVW5sYWJlbGVkRXZlbnQoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdE1lc3NhZ2UgPSAnQ2FwdHVyZWQgYW4gdW5sYWJlbGVkIGV2ZW50JztcblxuICAgICAgICBpZiAoZXJyb3IgJiYgJ2lzVHJ1c3RlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JlZCBpc1RydXN0ZWQgYnJvd3NlciBldmVudDonLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvckRldGFpbHMgPSBlcnJvciA/IEpTT04uc3RyaW5naWZ5KGVycm9yKSA6ICdObyBhZGRpdGlvbmFsIGVycm9yIGluZm8nO1xuICAgICAgICBjb25zdCBlbmhhbmNlZEVycm9yTWVzc2FnZSA9IGAke2RlZmF1bHRNZXNzYWdlfSB8IE9yaWdpbmFsIGVycm9yIGRldGFpbHM6ICR7ZXJyb3JEZXRhaWxzfWA7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkRXJyb3IgPSBuZXcgRXJyb3IoZW5oYW5jZWRFcnJvck1lc3NhZ2UpO1xuXG4gICAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGVuaGFuY2VkRXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9nVG9Db25zb2xlKGVycm9yOiBFcnJvcikge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIHByaW50IGluIHRoZSBjb25zb2xlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXZSB1c2UgU3RhY2tUcmFjZSB0byB0cnkgZ2V0dGluZyBhIGdvb2Qgc3RhY2t0cmFjZS4gSWYgaXQgZmFpbHMsIGp1c3QgcHJpbnQgdGhlIGVycm9yXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZSA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvci50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgICBmcm9tRXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKCdOb24tRXJyb3IgT2JqZWN0JykpLnRoZW4oXG4gICAgICAgICAgICAgICAgc3RhY2tGcmFtZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFja1N0cmluZyA9IHN0YWNrRnJhbWVzLnNwbGljZSgwLCAyMCkubWFwKHNmID0+IHNmLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeyBtZXNzYWdlLCB1cmwsIHN0YWNrOiBzdGFja1N0cmluZywgZXJyb3IgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvciwgZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3NlbnRyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sS0FBSyxNQUFNLE1BQU0scUJBQXFCLENBQUM7OztBQUs5QyxNQUFNLE9BQU8sa0JBQWtCO2FBRVosc0JBQWlCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFekMsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELEtBQUssQ0FBQyxxQkFBcUI7UUFDL0IsSUFBSSxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZDLHdEQUF3RDtZQUN4RCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxD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RSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQyxDQUNKLENBQUM7UUFDTixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDOytHQTNhUSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZmLE1BQU07OzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEVycm9ySGFuZGxlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1jb25maWctc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBTdGF0dXNDb2RlcyB9IGZyb20gJ2h0dHAtc3RhdHVzLWNvZGVzJztcbmltcG9ydCB7IGZyb21FcnJvciB9IGZyb20gJ3N0YWNrdHJhY2UtanMnO1xuXG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSAnQHNlbnRyeS9hbmd1bGFyLWl2eSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VudHJ5RXJyb3JIYW5kbGVyIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyIHtcbiAgICBwcml2YXRlIHN0YXRpYyB1c2VyOiBQYXJ0aWFsPFVzZXI+O1xuICAgIHByaXZhdGUgc3RhdGljIHNlbnRyeUluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVTZW50cnlBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFNlbnRyeUVycm9ySGFuZGxlci5zZW50cnlJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgLy8gU2VudHJ5IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBTZW50cnkuY3JlYXRlRXJyb3JIYW5kbGVyKCk7XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5nZXRTZW50cnlDb25maWdBc3luYygpO1xuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnN1YnNjcmliZShlbnYgPT4ge1xuICAgICAgICAgICAgaWYgKGVudj8uaW50ZWdyYXRpb25zPy5zZW50cnlfY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgU2VudHJ5LmluaXQoeyAuLi5jb25maWcsIC4uLmVudi5pbnRlZ3JhdGlvbnMuc2VudHJ5X2NvbmZpZyB9KTtcbiAgICAgICAgICAgICAgICBTZW50cnlFcnJvckhhbmRsZXIuc2VudHJ5SW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgLy8gQWRkIGEgZ2xvYmFsIGxpc3RlbmVyIGZvciB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZVJlamVjdGlvbihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBBZGQgYSBnbG9iYWwgbGlzdGVuZXIgZm9yIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIChldmVudDogUHJvbWlzZVJlamVjdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldFNlbnRyeUNvbmZpZ0FzeW5jKCk6IFByb21pc2U8U2VudHJ5LkJyb3dzZXJPcHRpb25zPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVudmlyb25tZW50ID1cbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdD8uaW5jbHVkZXMoJ2RldicpIHx8IHdpbmRvdy5sb2NhdGlvbi5ob3N0Py5pbmNsdWRlcygnbG9jYWxob3N0JylcbiAgICAgICAgICAgICAgICAgICAgPyAnZGV2ZWxvcG1lbnQnXG4gICAgICAgICAgICAgICAgICAgIDogJ3Byb2R1Y3Rpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgaGVhbHRoQ2hlY2tQYXRocyA9IFsnL3BpbmcnXTtcbiAgICAgICAgICAgIGNvbnN0IG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuICAgICAgICAgICAgY29uc3QgZml2ZVBlcmNlbnRJZ25vcmVkUGF0aHMgPSBbJyddO1xuXG4gICAgICAgICAgICBjb25zdCBjb25maWc6IFNlbnRyeS5Ccm93c2VyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBkc246IG51bGwsXG4gICAgICAgICAgICAgICAgdHJhY2VzU2FtcGxlUmF0ZTogMC4xLFxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQoZXZlbnQsIGhpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9mIHR5cGUgQ2xvc2VFdmVudCBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjb25kaXRpb24gYmFzZWQgb24gdGhlIGFjdHVhbCBzdHJ1Y3R1cmUgb2YgdGhlIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdDbG9zZUV2ZW50JyB8fCB2YWx1ZS52YWx1ZS5pbmNsdWRlcygnQ2xvc2VFdmVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZXhjZXB0aW9uLnZhbHVlcyA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYXRlcyBmcm9tIHZlbmRvci5qcyBmaWxlXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSnNvblBhcnNpbmdFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1N5bnRheEVycm9yJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT8udmFsdWU/LmluY2x1ZGVzKFwiZXhwZWN0ZWQgJzonIGFmdGVyIHByb3BlcnR5IG5hbWUgaW5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pzb25QYXJzaW5nRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCBpcyBhIENodW5rTG9hZEVycm9yIGFuZCBpZ25vcmUgaXQgKGl0IGNvdWxkIGJlIGJlY2F1c2Ugb2YgcG9vciBuZXR3b3JrKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnQ2h1bmtMb2FkRXJyb3InIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDaHVua0xvYWRFcnJvcjogTG9hZGluZyBjaHVuaycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgc2NyaXB0IGxvYWRpbmcgZXJyb3IgYW5kIGlnbm9yZSBpdFxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5leGNlcHRpb24udmFsdWVzID0gZXZlbnQuZXhjZXB0aW9uLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50eXBlID09PSAnRXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKCdDb3VsZCBub3QgbG9hZCBcInV0aWxcIicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIGEgdGltZW91dCBlcnJvciBhbmQgaWdub3JlIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnR5cGUgPT09ICdFcnJvcicgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoJ0Vycm9yIGxvYWRpbmcgcGxvdGx5LmpzIGxpYnJhcnkgZnJvbScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IGlzIHJlbGF0ZWQgdG8gY3Jvc3Mtb3JpZ2luIGZyYW1lIGFjY2Vzc1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LmV4Y2VwdGlvbj8udmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Nyb3NzT3JpZ2luRnJhbWVFcnJvciA9IGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMuc29tZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudHlwZSA9PT0gJ1NlY3VyaXR5RXJyb3InICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPy52YWx1ZT8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkZhaWxlZCB0byByZWFkIGEgbmFtZWQgcHJvcGVydHkgJ25hdmlnYXRvcicgZnJvbSAnV2luZG93JzogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5GcmFtZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjbHVkZSBjcm9zcy1vcmlnaW4gZnJhbWUgZXJyb3JzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gU2VudHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXZlbnQgaGFzIGFuIGV4Y2VwdGlvbiBhbmQgdmFsdWVzIGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudD8uZXhjZXB0aW9uPy52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgZXZlbnRzIGdlbmVyYXRlZCBieSBUcnlDYXRjaCBhbmQgR2xvYmFsSGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2VwdGlvbi52YWx1ZXMgPSBldmVudC5leGNlcHRpb24udmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVjaGFuaXNtID0gdmFsdWUubWVjaGFuaXNtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lY2hhbmlzbS50eXBlID09PSAnVHJ5Q2F0Y2gnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc20udHlwZSA9PT0gJ0dsb2JhbEhhbmRsZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGEgbm9uLWVycm9yIGV4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc05vbkVycm9yRXhjZXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Py5leGNlcHRpb24/LnZhbHVlcz8uWzBdPy52YWx1ZT8uc3RhcnRzV2l0aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUVycm9yIGV4Y2VwdGlvbiBjYXB0dXJlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIChoaW50Py5vcmlnaW5hbEV4Y2VwdGlvbiBhcyBFcnJvcik/Lm1lc3NhZ2U/LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbi1FcnJvciBleGNlcHRpb24gY2FwdHVyZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05vbkVycm9yRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGlnbm9yZSB0aG9zZSBraW5kcyBvZiBlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVueVVybHM6IFsvZHJpZnQuKlxcLmpzL2ksIC9hbmFseXRpY3MuKlxcLmpzL2ksIC9wb2x5ZmlsbHMuKlxcLmpzL2ksIC92ZW5kb3IuKlxcLmpzL2ldLFxuICAgICAgICAgICAgICAgIGludGVncmF0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlcnMgYW5kIGNvbmZpZ3VyZXMgdGhlIFRyYWNpbmcgaW50ZWdyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGF1dG9tYXRpY2FsbHkgaW5zdHJ1bWVudHMgeW91ciBhcHBsaWNhdGlvbiB0byBtb25pdG9yIGl0c1xuICAgICAgICAgICAgICAgICAgICAvLyBwZXJmb3JtYW5jZSwgaW5jbHVkaW5nIGN1c3RvbSBBbmd1bGFyIHJvdXRpbmcgaW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZW50cnkuQnJvd3NlclRyYWNpbmcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ0luc3RydW1lbnRhdGlvbjogU2VudHJ5LnJvdXRpbmdJbnN0cnVtZW50YXRpb25cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRyYWNlc1NhbXBsZXI6IHNhbXBsaW5nQ29udGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4YW1pbmUgcHJvdmlkZWQgY29udGV4dCBkYXRhIChpbmNsdWRpbmcgcGFyZW50IGRlY2lzaW9uLCBpZiBhbnkpIGFsb25nXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpdGggYW55dGhpbmcgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gY29tcHV0ZSB0aGUgc2FtcGxlIHJhdGUgb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gc2FtcGxpbmcgZGVjaXNpb24gZm9yIHRoaXMgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aG5hbWUgPSBzYW1wbGluZ0NvbnRleHQubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFsdGhDaGVja1BhdGhzLmluY2x1ZGVzKHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmVyeSBsb3cgcmF0ZSBhcyB0aGVzZSBhcmUgZXh0cmVtZWx5IGZyZXF1ZW50IGFuZCBwcmV0dHkgdXNlbGVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMDAxO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9uZVBlcmNlbnRJZ25vcmVkUGF0aHMuaW5jbHVkZXMocGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC4wMTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaXZlUGVyY2VudElnbm9yZWRQYXRocy5pbmNsdWRlcyhwYXRobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjA1O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBzYW1wbGUgcmF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsXG5cbiAgICAgICAgICAgICAgICAvLyBXZSBpZ25vcmUgU2VydmVyIEVycm9ycy4gV2UgaGF2ZSB0byBkZWZpbmUgaGVyZSBzaW5jZSBBbmd1bGFyXG4gICAgICAgICAgICAgICAgLy8gaHR0cCBjbGllbnQgdXNlcyBzZXRUaW1lb3V0IHRvIGRldGVjdCBodHRwIGNhbGwgcHJvZ3Jlc3MuXG4gICAgICAgICAgICAgICAgLy8gQW5kIHdoZW4gdGhlIGNhbGwgZmFpbHMsIGl0IHRocm93cyBhbiBleGNlcHRpb24gaW5zaWRlIHRoYXQgdGltZW91dFxuICAgICAgICAgICAgICAgIC8vIHRoYXQgYnViYmxlcyB1cCBoaWdoZXIgdG8gdGhlIG1haW4gQW5ndWxhcidzIGVycm9yIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgaWdub3JlRXJyb3JzOiBbXG4gICAgICAgICAgICAgICAgICAgICd0b3AuR0xPQkFMUycsXG4gICAgICAgICAgICAgICAgICAgICdSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMnXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXRpYWxpemVVc2VyKHVzZXI6IFBhcnRpYWw8VXNlcj4pIHtcbiAgICAgICAgU2VudHJ5RXJyb3JIYW5kbGVyLnVzZXIgPSB7XG4gICAgICAgICAgICBpZDogdXNlcj8uaWQsXG4gICAgICAgICAgICBuYW1lOiB1c2VyPy5maXJzdF9uYW1lLFxuICAgICAgICAgICAgZW1haWw6IHVzZXI/LmVtYWlsXG4gICAgICAgIH0gYXMgUGFydGlhbDxVc2VyPjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb21pc2VSZWplY3Rpb24oZXZlbnQ6IFByb21pc2VSZWplY3Rpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcnJvciA9IGV2ZW50LnJlYXNvbjtcbiAgICAgICAgdGhpcy5sb2dUb1NlbnRyeShlcnJvcik7XG4gICAgICAgIHRoaXMubG9nVG9Db25zb2xlKGVycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihpbmNvbWluZ0Vycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IEVycm9yKSB7XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgNDAxLCByZXR1cm4gbm8gZXhjZXB0aW9uXG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5BVVRIT1JJWkVEIHx8XG4gICAgICAgICAgICAgICAgaW5jb21pbmdFcnJvci5zdGF0dXMgPT09IFN0YXR1c0NvZGVzLkZPUkJJRERFTlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQwMSBlcnJvciAoZS5nLiwgcmVkaXJlY3QgdG8gbG9naW4gcGFnZSlcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmF1dGhvcml6ZWQgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuVU5QUk9DRVNTQUJMRV9FTlRJVFkpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgNDIyIGVycm9yXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVU5QUk9DRVNTQUJMRV9FTlRJVFkgcmVxdWVzdDonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0Vycm9yLnN0YXR1cyA9PT0gNDMzKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIDQzMyBlcnJvclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ292ZXIgbWVzc2FnZSBxdW90YTonLCBpbmNvbWluZ0Vycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFeGNlcHRpb25FcnJvcihpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgIGlmIChpbmNvbWluZ0Vycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBpbmNvbWluZ0Vycm9yOyAvLyBUaGUgYWN0dWFsIGVycm9yIHRvIGxvZ1xuICAgICAgICAgICAgd2hpbGUgKCdvcmlnaW5hbEVycm9yJyBpbiBlcnJvciAmJiBlcnJvci5vcmlnaW5hbEVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ1RvQ29uc29sZShlcnJvcik7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5vcmlnaW5hbEVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnJvciwgaW5jb21pbmdFcnJvcikge1xuICAgICAgICAvLyBFeGNsdWRlIHNwZWNpZmljIGVycm9yc1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gU3RhdHVzQ29kZXMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdFeGNsdWRlZCA0MDQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCBsb2dnaW5nIHRvIFNlbnRyeVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gMCAmJiBlcnJvci5zdGF0dXNUZXh0ID09PSAnVW5rbm93biBFcnJvcicpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbmV0d29yay1yZWxhdGVkIGVycm9ycyBkaWZmZXJlbnRseSBvciBzdXBwcmVzcyB0aGVtXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdOZXR3b3JrLXJlbGF0ZWQgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcmV0aHJvdyB0aGUgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcik7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihgR290IEh0dHBFcnJvclJlc3BvbnNlIG9uIFVSTCAke2Vycm9yLnVybH0gbWVzc2FnZTogJHttZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVOb25IdHRwRXJyb3JSZXNwb25zZShlcnJvcik7XG5cbiAgICAgICAgLy8gRW5zdXJlIGFsbCBlcnJvcnMgaGF2ZSBhIHByb3BlciBtZXNzYWdlXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlRm9ybWF0dGVyKGVycm9yKTtcblxuICAgICAgICAvLyBFeGlzdGluZyBTZW50cnkgaW5pdGlhbGl6YXRpb24gbG9naWNcbiAgICAgICAgdGhpcy5zZW50cnlJbml0aWFsaXphdGlvbihlcnJvciwgaW5jb21pbmdFcnJvcik7XG4gICAgfVxuXG4gICAgZ2V0RXJyb3JNZXNzYWdlKGVycm9yKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHsgbWVzc2FnZSB9ID0gZXJyb3I7XG4gICAgICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IEpTT04uc3RyaW5naWZ5KGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBlcnJvci50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGhhbmRsZU5vbkh0dHBFcnJvclJlc3BvbnNlKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSBTdGF0dXNDb2Rlcy5VTkFVVEhPUklaRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoYE9iamVjdCBjYXB0dXJlZCBhcyBleGNlcHRpb246ICR7ZXJyb3J9YCk7IC8vIE5PU09OQVJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeGNsdWRlIHJlcG9ydGluZyA0MDEgZXJyb3JzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlcnJvck1lc3NhZ2VGb3JtYXR0ZXIoZXJyb3IpIHtcbiAgICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgfHwgIWVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRNZXNzYWdlID0gJ0NhcHR1cmVkIGFuIHVubGFiZWxlZCBldmVudCc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciAmJiAnaXNUcnVzdGVkJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JlZCBpc1RydXN0ZWQgYnJvd3NlciBldmVudDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlcnJvckRldGFpbHMgPSBlcnJvciA/IEpTT04uc3RyaW5naWZ5KGVycm9yKSA6ICdObyBtb3JlIGFkZGl0aW9uYWwgZXJyb3IgaW5mbyc7XG4gICAgICAgICAgICBjb25zdCBlbmhhbmNlZEVycm9yTWVzc2FnZSA9IGAke2RlZmF1bHRNZXNzYWdlfSB8IE9yaWdpbmFsIGVycm9yIGRldGFpbDogJHtlcnJvckRldGFpbHN9YDtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGVuaGFuY2VkRXJyb3JNZXNzYWdlKTsgLy8gTk9TT05BUlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VudHJ5SW5pdGlhbGl6YXRpb24oZXJyb3IsIGluY29taW5nRXJyb3IpIHtcbiAgICAgICAgaWYgKCFTZW50cnlFcnJvckhhbmRsZXIuc2VudHJ5SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNlbnRyeUFzeW5jKClcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nVG9TZW50cnkoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBpbmNvbWluZ0Vycm9yO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBTZW50cnk6JywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dUb0NvbnNvbGUoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2dUb1NlbnRyeShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvZ1RvU2VudHJ5KGVycm9yOiBFcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IFNlbnRyeUVycm9ySGFuZGxlci51c2VyIGFzIEVycm9yO1xuICAgICAgICAgICAgdGhpcy5zY29wZVdpdGhTZW50cnkoZXJyb3IsIHVzZXIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gbG9nIHRoZSBlcnJvciB0byBTZW50cnkuIEFuIGV4Y2VwdGlvbiBvY2N1cnJlZDonKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNjb3BlV2l0aFNlbnRyeShlcnJvciwgdXNlcikge1xuICAgICAgICBTZW50cnkud2l0aFNjb3BlKHNjb3BlID0+IHtcbiAgICAgICAgICAgIC8vIEFwcGVuZHMgdXNlciBkZXRhaWxzIGZvciBzZW50cnkgbG9nXG4gICAgICAgICAgICBzY29wZS5zZXRVc2VyKHtcbiAgICAgICAgICAgICAgICAuLi51c2VyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gRW5zdXJlIGVycm9yIGlzIHByb3Blcmx5IGZvcm1hdHRlZFxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJiBlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9uU3RhbmRhcmRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVW5sYWJlbGVkRXZlbnQoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZU5vblN0YW5kYXJkRXJyb3IoZXJyb3I6IG9iamVjdCkge1xuICAgICAgICBpZiAoJ2lzVHJ1c3RlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBpdCdzIGFuIG9iamVjdCBidXQgbm90IGEgc3RhbmRhcmQgRXJyb3IsIGF0dGVtcHQgdG8gbG9nIGl0cyBwcm9wZXJ0aWVzIHNhZmVseVxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gJ0NhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvciB3aXRoIG5vIG1lc3NhZ2UnOyAvLyBOT1NPTkFSXG5cbiAgICAgICAgLy8gVHJ5IHRvIGV4dHJhY3QgYW55IG1lc3NhZ2UtbGlrZSBwcm9wZXJ0eSBzYWZlbHlcbiAgICAgICAgaWYgKCdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2VUZXh0ID0gJyc7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gJ29iamVjdCcgJiYgZXJyb3IubWVzc2FnZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYEVycm9yIG1lc3NhZ2U6ICR7bWVzc2FnZVRleHR9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gY2FwdHVyZSBrZXkgcHJvcGVydGllcyBzYWZlbHlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYENhcHR1cmVkIG5vbi1zdGFuZGFyZCBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShlcnJvciwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXJyb3IpKX1gO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICB9IGNhdGNoIChqc29uRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGBDYXB0dXJlZCBub24tc3RhbmRhcmQgZXJyb3Igd2l0aCBzZXJpYWxpemF0aW9uIGlzc3VlOiAke2pzb25FcnJvci5tZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgRXJyb3Igb2JqZWN0IHdpdGggdGhlIGVuaGFuY2VkIG1lc3NhZ2VcbiAgICAgICAgY29uc3QgZXJyb3JPYmplY3QgPSBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZXJyb3JPYmplY3QpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVW5sYWJlbGVkRXZlbnQoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdE1lc3NhZ2UgPSAnQ2FwdHVyZWQgYW4gdW5sYWJlbGVkIGV2ZW50JztcblxuICAgICAgICBpZiAoZXJyb3IgJiYgJ2lzVHJ1c3RlZCcgaW4gZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSWdub3JlZCBpc1RydXN0ZWQgYnJvd3NlciBldmVudDonLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvckRldGFpbHMgPSBlcnJvciA/IEpTT04uc3RyaW5naWZ5KGVycm9yKSA6ICdObyBhZGRpdGlvbmFsIGVycm9yIGluZm8nO1xuICAgICAgICBjb25zdCBlbmhhbmNlZEVycm9yTWVzc2FnZSA9IGAke2RlZmF1bHRNZXNzYWdlfSB8IE9yaWdpbmFsIGVycm9yIGRldGFpbHM6ICR7ZXJyb3JEZXRhaWxzfWA7XG4gICAgICAgIGNvbnN0IGVuaGFuY2VkRXJyb3IgPSBuZXcgRXJyb3IoZW5oYW5jZWRFcnJvck1lc3NhZ2UpO1xuXG4gICAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGVuaGFuY2VkRXJyb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9nVG9Db25zb2xlKGVycm9yOiBFcnJvcikge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIHByaW50IGluIHRoZSBjb25zb2xlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXZSB1c2UgU3RhY2tUcmFjZSB0byB0cnkgZ2V0dGluZyBhIGdvb2Qgc3RhY2t0cmFjZS4gSWYgaXQgZmFpbHMsIGp1c3QgcHJpbnQgdGhlIGVycm9yXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZSA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvci50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICAgICAgICBmcm9tRXJyb3IoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKCdOb24tRXJyb3IgT2JqZWN0JykpLnRoZW4oXG4gICAgICAgICAgICAgICAgc3RhY2tGcmFtZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFja1N0cmluZyA9IHN0YWNrRnJhbWVzLnNwbGljZSgwLCAyMCkubWFwKHNmID0+IHNmLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeyBtZXNzYWdlLCB1cmwsIHN0YWNrOiBzdGFja1N0cmluZywgZXJyb3IgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvciwgZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -77,6 +77,9 @@ export class SubscriptionService {
|
|
|
77
77
|
updateSubscriptionAPIKey(id) {
|
|
78
78
|
return this.api.put(`/subscriptions/${id}/update_api_key`);
|
|
79
79
|
}
|
|
80
|
+
refreshApiTokens(id) {
|
|
81
|
+
return this.api.get(`/subscriptions/${id}/refresh_api_tokens`);
|
|
82
|
+
}
|
|
80
83
|
addFullLogo(id, data) {
|
|
81
84
|
return this.api.upload(`/subscriptions/${id}`, data, 'full_logo');
|
|
82
85
|
}
|
|
@@ -123,4 +126,4 @@ export class SubscriptionService {
|
|
|
123
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SubscriptionService, decorators: [{
|
|
124
127
|
type: Injectable
|
|
125
128
|
}], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUc1QixZQUE2QixHQUF1QjtRQUF2QixRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUZwRCxhQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFFMEIsQ0FBQztJQUV4RCxPQUFPLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVUsRUFBRSxPQUFlO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQTJCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUEyQjtRQUN0RCxPQUFPLElBQUksQ0FBQyxH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OytHQXpKUSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUGFnaW5nLCBTdWJzY3JpcHRpb24gfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSB7XG4gICAgZW5kcG9pbnQgPSAnL3N1YnNjcmlwdGlvbnMvJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBNYWluQXBpSHR0cFNlcnZpY2UpIHt9XG5cbiAgICBnZXRCeUlkKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fSR7aWR9YCk7XG4gICAgfVxuXG4gICAgZGVsZXRlU3Vic2NyaXB0aW9uKGlkOiBudW1iZXIsIHJlcUpzb246IG9iamVjdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAvc3Vic2NyaXB0aW9ucy8ke2lkfWAsIHJlcUpzb24pO1xuICAgIH1cblxuICAgIGdldFN1YnNjcmlwdGlvbnMoaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfWApO1xuICAgIH1cblxuICAgIHBvc3RTdWJzY3JpcHRpb24oZGF0YTogUGFydGlhbDxTdWJzY3JpcHRpb24+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvc3Vic2NyaXB0aW9ucycsIGRhdGEpO1xuICAgIH1cblxuICAgIHVwZGF0ZVN1YnNjcmlwdGlvbihpZDogbnVtYmVyLCBkYXRhOiBQYXJ0aWFsPFN1YnNjcmlwdGlvbj4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3N1YnNjcmlwdGlvbnMvJHtpZH1gLCBkYXRhKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdWJzY3JpcHRpb25Vbml0KGlkOiBudW1iZXIsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC9zdWJzY3JpcHRpb25zLyR7aWR9L3VwZGF0ZV91bml0c2AsIHsgcHVyY2hhc2VkX3VuaXRzOiB1bml0cyB9KTtcbiAgICB9XG5cbiAgICBhZGRQYXJ0bmVyc1RvU3Vic2NyaXB0aW9uKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZGF0YSwga2V5KSkge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL3N1YnNjcmlwdGlvbnMvJHtpZH0vcGFydG5lcnMvaW52aXRlX3BhcnRuZXJgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRQcm9kdWN0TGlzdChwYWdpbmc/OiBQYWdpbmcsIHN1YnNjcmlwdGlvbl9pZD86IG51bWJlciwgX3BhcmFtcz8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25faWR9L3BhcnRuZXJzL3Byb2R1Y3RzX2Zvcl9wYXJ0bmVyc2AsXG4gICAgICAgICAgICBIZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVtb3ZlUGFydG5lcihpZDogbnVtYmVyLCBwYXJ0bmVyX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgL3N1YnNjcmlwdGlvbnMvJHtpZH0vcGFydG5lcnMvcmVtb3ZlX3BhcnRuZXIvJHtwYXJ0bmVyX2lkfWApO1xuICAgIH1cblxuICAgIGRlYWN0aXZhdGVQYXJ0bmVyKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZGF0YSwga2V5KSkge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfS9wYXJ0bmVycy90b2dnbGVfYWN0aXZlX3N0YXR1c2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGFkZE1lbWJlcnNUb1N1YnNjcmlwdGlvbihpZDogbnVtYmVyLCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC9zdWJzY3JpcHRpb25zLyR7aWR9L3NpZ251cF9tZW1iZXJzYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgc2lnblVwTWVtYmVyVXJsKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGAvc3Vic2NyaXB0aW9ucy8ke2lkfS9zaWdudXBfbWVtYmVyc2A7XG4gICAgfVxuXG4gICAgZ2V0RW5yb2xsZWRTdWJzY3JpcHRpb24oaWQ6IG51bWJlciwgcGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYC9zdWJzY3JpcHRpb25zLyR7aWR9L21lbWJlcnNgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cbiAgICByZW1vdmVFbnJvbGxlZFN1YnNjcmlwdGlvbihpZDogbnVtYmVyLCB1c2VyX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgL3N1YnNjcmlwdGlvbnMvJHtpZH0vcmVtb3ZlX21lbWJlci8ke3VzZXJfaWR9YCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlQWRtaW4oaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfS90b2dnbGVfYWRtaW5gLCBkYXRhKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdWJzY3JpcHRpb25BUElLZXkoaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfS91cGRhdGVfYXBpX2tleWApO1xuICAgIH1cblxuICAgIGFkZEZ1bGxMb2dvKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnVwbG9hZChgL3N1YnNjcmlwdGlvbnMvJHtpZH1gLCBkYXRhLCAnZnVsbF9sb2dvJyk7XG4gICAgfVxuXG4gICAgYWRkU3F1YXJlZExvZ28oaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkudXBsb2FkKGAvc3Vic2NyaXB0aW9ucy8ke2lkfWAsIGRhdGEsICdzcXVhcmVkX2xvZ28nKTtcbiAgICB9XG5cbiAgICBnZXRDYXJkRGV0YWlscyhzdWJzY3JpcHRpb25JZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC9zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uSWR9L2NhcmRfZGV0YWlsYCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2FyZERldGFpbHMoZGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC9zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uX2lkfS91cGRhdGVfY2FyZGAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEVudGVycHJpc2VJbnNpZ2h0KHN1YnNjcmlwdGlvbklkOiBudW1iZXIsIHN0YXJ0aW5nX2F0Pzogc3RyaW5nLCBlbmRpbmdfYXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoXG4gICAgICAgICAgICBgL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25JZH0vZW50ZXJwcmlzZV9hbmFseXRpY3M/dHlwZT1zdW1tYXJ5YCxcbiAgICAgICAgICAgIHsgc3RhcnRpbmdfYXQsIGVuZGluZ19hdCB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcG9zdFN1YnNjcmlwdGlvbkNyZWRlbnRpYWwoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL3N1YnNjcmlwdGlvbl9jcmVkZW50aWFsc2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGVkaXRTdWJzY3JpcHRpb25DcmVkZW50aWFsKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3N1YnNjcmlwdGlvbl9jcmVkZW50aWFscy8ke2lkfWAsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEFsbFN1YnNjcmlwdGlvbkNyZWRlbnRpYWxzKHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyLCBwYWdpbmc/OiBQYWdpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYC9zdWJzY3JpcHRpb25fY3JlZGVudGlhbHMvZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsU3Vic2NyaXB0aW9uUGFydG5lcnMoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25faWR9L3BhcnRuZXJzL2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVN1YnNjcmlwdGlvbkNyZWRlbnRpYWwoaWQ6IG51bWJlciwgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAvc3Vic2NyaXB0aW9uX2NyZWRlbnRpYWxzLyR7aWR9P3N1YnNjcmlwdGlvbl9pZD0ke3N1YnNjcmlwdGlvbklkfWApO1xuICAgIH1cblxuICAgIGdldEFsbENyZWRlbnRpYWxzKHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgL2NyZWRlbnRpYWxzL2dldF9hbGxgLCB7XG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYWdpbmcpXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUc1QixZQUE2QixHQUF1QjtRQUF2QixRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUZwRCxhQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFFMEIsQ0FBQztJQUV4RCxPQUFPLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVUsRUFBRSxPQUFlO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQTJCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUEyQjtRQUN0RCxPQUFPLElBQUksQ0FBQyxH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Q0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHNCQUFzQixFQUFFO1lBQ2xELEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7U0FDM0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E3SlEsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBhZ2luZywgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblNlcnZpY2Uge1xuICAgIGVuZHBvaW50ID0gJy9zdWJzY3JpcHRpb25zLyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgZ2V0QnlJZChpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7dGhpcy5lbmRwb2ludH0ke2lkfWApO1xuICAgIH1cblxuICAgIGRlbGV0ZVN1YnNjcmlwdGlvbihpZDogbnVtYmVyLCByZXFKc29uOiBvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmRlbGV0ZShgL3N1YnNjcmlwdGlvbnMvJHtpZH1gLCByZXFKc29uKTtcbiAgICB9XG5cbiAgICBnZXRTdWJzY3JpcHRpb25zKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3N1YnNjcmlwdGlvbnMvJHtpZH1gKTtcbiAgICB9XG5cbiAgICBwb3N0U3Vic2NyaXB0aW9uKGRhdGE6IFBhcnRpYWw8U3Vic2NyaXB0aW9uPikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL3N1YnNjcmlwdGlvbnMnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdWJzY3JpcHRpb24oaWQ6IG51bWJlciwgZGF0YTogUGFydGlhbDxTdWJzY3JpcHRpb24+KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC9zdWJzY3JpcHRpb25zLyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgdXBkYXRlU3Vic2NyaXB0aW9uVW5pdChpZDogbnVtYmVyLCB1bml0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfS91cGRhdGVfdW5pdHNgLCB7IHB1cmNoYXNlZF91bml0czogdW5pdHMgfSk7XG4gICAgfVxuXG4gICAgYWRkUGFydG5lcnNUb1N1YnNjcmlwdGlvbihpZDogbnVtYmVyLCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC9zdWJzY3JpcHRpb25zLyR7aWR9L3BhcnRuZXJzL2ludml0ZV9wYXJ0bmVyYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0UHJvZHVjdExpc3QocGFnaW5nPzogUGFnaW5nLCBzdWJzY3JpcHRpb25faWQ/OiBudW1iZXIsIF9wYXJhbXM/KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKFxuICAgICAgICAgICAgYC9zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uX2lkfS9wYXJ0bmVycy9wcm9kdWN0c19mb3JfcGFydG5lcnNgLFxuICAgICAgICAgICAgSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlbW92ZVBhcnRuZXIoaWQ6IG51bWJlciwgcGFydG5lcl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9zdWJzY3JpcHRpb25zLyR7aWR9L3BhcnRuZXJzL3JlbW92ZV9wYXJ0bmVyLyR7cGFydG5lcl9pZH1gKTtcbiAgICB9XG5cbiAgICBkZWFjdGl2YXRlUGFydG5lcihpZDogbnVtYmVyLCBkYXRhKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGRhdGEsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3N1YnNjcmlwdGlvbnMvJHtpZH0vcGFydG5lcnMvdG9nZ2xlX2FjdGl2ZV9zdGF0dXNgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhZGRNZW1iZXJzVG9TdWJzY3JpcHRpb24oaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvc3Vic2NyaXB0aW9ucy8ke2lkfS9zaWdudXBfbWVtYmVyc2AsIGRhdGEpO1xuICAgIH1cblxuICAgIHNpZ25VcE1lbWJlclVybChpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBgL3N1YnNjcmlwdGlvbnMvJHtpZH0vc2lnbnVwX21lbWJlcnNgO1xuICAgIH1cblxuICAgIGdldEVucm9sbGVkU3Vic2NyaXB0aW9uKGlkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAvc3Vic2NyaXB0aW9ucy8ke2lkfS9tZW1iZXJzYCxcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmVtb3ZlRW5yb2xsZWRTdWJzY3JpcHRpb24oaWQ6IG51bWJlciwgdXNlcl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9zdWJzY3JpcHRpb25zLyR7aWR9L3JlbW92ZV9tZW1iZXIvJHt1c2VyX2lkfWApO1xuICAgIH1cblxuICAgIHRvZ2dsZUFkbWluKGlkOiBudW1iZXIsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3N1YnNjcmlwdGlvbnMvJHtpZH0vdG9nZ2xlX2FkbWluYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgdXBkYXRlU3Vic2NyaXB0aW9uQVBJS2V5KGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3N1YnNjcmlwdGlvbnMvJHtpZH0vdXBkYXRlX2FwaV9rZXlgKTtcbiAgICB9XG5cbiAgICByZWZyZXNoQXBpVG9rZW5zKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3N1YnNjcmlwdGlvbnMvJHtpZH0vcmVmcmVzaF9hcGlfdG9rZW5zYCk7XG4gICAgfVxuXG4gICAgYWRkRnVsbExvZ28oaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkudXBsb2FkKGAvc3Vic2NyaXB0aW9ucy8ke2lkfWAsIGRhdGEsICdmdWxsX2xvZ28nKTtcbiAgICB9XG5cbiAgICBhZGRTcXVhcmVkTG9nbyhpZDogbnVtYmVyLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS51cGxvYWQoYC9zdWJzY3JpcHRpb25zLyR7aWR9YCwgZGF0YSwgJ3NxdWFyZWRfbG9nbycpO1xuICAgIH1cblxuICAgIGdldENhcmREZXRhaWxzKHN1YnNjcmlwdGlvbklkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25JZH0vY2FyZF9kZXRhaWxgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVDYXJkRGV0YWlscyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25faWR9L3VwZGF0ZV9jYXJkYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0RW50ZXJwcmlzZUluc2lnaHQoc3Vic2NyaXB0aW9uSWQ6IG51bWJlciwgc3RhcnRpbmdfYXQ/OiBzdHJpbmcsIGVuZGluZ19hdD86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhcbiAgICAgICAgICAgIGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbklkfS9lbnRlcnByaXNlX2FuYWx5dGljcz90eXBlPXN1bW1hcnlgLFxuICAgICAgICAgICAgeyBzdGFydGluZ19hdCwgZW5kaW5nX2F0IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0U3Vic2NyaXB0aW9uQ3JlZGVudGlhbChkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvc3Vic2NyaXB0aW9uX2NyZWRlbnRpYWxzYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZWRpdFN1YnNjcmlwdGlvbkNyZWRlbnRpYWwoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvc3Vic2NyaXB0aW9uX2NyZWRlbnRpYWxzLyR7aWR9YCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsU3Vic2NyaXB0aW9uQ3JlZGVudGlhbHMoc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIsIHBhZ2luZz86IFBhZ2luZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgL3N1YnNjcmlwdGlvbl9jcmVkZW50aWFscy9nZXRfYWxsYCwge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkLFxuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbGxTdWJzY3JpcHRpb25QYXJ0bmVycyhzdWJzY3JpcHRpb25faWQ6IG51bWJlciwgcGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbl9pZH0vcGFydG5lcnMvZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlU3Vic2NyaXB0aW9uQ3JlZGVudGlhbChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25JZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYC9zdWJzY3JpcHRpb25fY3JlZGVudGlhbHMvJHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uSWR9YCk7XG4gICAgfVxuXG4gICAgZ2V0QWxsQ3JlZGVudGlhbHMocGFnaW5nPzogUGFnaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAvY3JlZGVudGlhbHMvZ2V0X2FsbGAsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|