New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@gomomento/sdk

Package Overview
Dependencies
Maintainers
1
Versions
220
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gomomento/sdk - npm Package Compare versions

Comparing version 1.89.1 to 1.90.0

6

dist/package.json
{
"name": "@gomomento/sdk",
"version": "1.89.1",
"version": "1.90.0",
"description": "Client SDK for Momento services",

@@ -33,3 +33,3 @@ "main": "dist/src/index.js",

"devDependencies": {
"@gomomento/common-integration-tests": "file:../common-integration-tests/gomomento-common-integration-tests-1.89.1.tgz",
"@gomomento/common-integration-tests": "file:../common-integration-tests/gomomento-common-integration-tests-1.90.0.tgz",
"@types/jest": "27.5.2",

@@ -57,3 +57,3 @@ "@types/node": "16.18.97",

"@gomomento/generated-types": "0.112.1",
"@gomomento/sdk-core": "1.89.1",
"@gomomento/sdk-core": "1.90.0",
"@grpc/grpc-js": "1.10.9",

@@ -60,0 +60,0 @@ "@types/google-protobuf": "3.15.10",

@@ -24,3 +24,4 @@ "use strict";

new headers_interceptor_1.Header('Authorization', props.credentialProvider.getAuthToken()),
new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`),
new headers_interceptor_1.Header('Agent', `nodejs:cache:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];

@@ -182,2 +183,2 @@ this.interceptors = [

CacheControlClient.REQUEST_TIMEOUT_MS = 60 * 1000;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtY29udHJvbC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2FjaGUtY29udHJvbC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1EO0FBQ25ELElBQU8sV0FBVyxHQUFHLHlCQUFPLENBQUMsY0FBYyxDQUFDO0FBQzVDLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsaUVBQXlEO0FBQ3pELHFGQUE2RTtBQUM3RSwyQ0FBOEQ7QUFDOUQsMEJBUVk7QUFDWixxREFBMkM7QUFDM0MsOEVBQXNFO0FBR3RFLHVFQUE4RTtBQVc5RSxNQUFhLGtCQUFrQjtJQU83Qjs7T0FFRztJQUNILFlBQVksS0FBeUI7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLG9EQUF1QixDQUN4RCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQ3ZDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxzQkFBTyxFQUFFLENBQUM7U0FDekMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSwrQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRSxJQUFBLHFEQUF3QixFQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO1NBQ2hFLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw0Q0FBNEMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFF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QUFZLDBDQUFFLGVBQWUsS0FBSSxDQUFDOzRCQUN2RCxhQUFhLEVBQUUsQ0FBQSxNQUFBLEtBQUssQ0FBQyxZQUFZLDBDQUFFLGdCQUFnQixLQUFJLENBQUM7NEJBQ3hELGlCQUFpQixFQUFFLENBQUEsTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxtQkFBbUIsS0FBSSxDQUFDOzRCQUMvRCxjQUFjLEVBQUUsQ0FBQSxNQUFBLEtBQUssQ0FBQyxZQUFZLDBDQUFFLGdCQUFnQixLQUFJLENBQUM7eUJBQzFELENBQUM7d0JBQ0YsT0FBTyxJQUFJLGFBQVMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUM1RCxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLENBQUMsSUFBSSxjQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBck1ILGdEQXNNQztBQW5NeUIscUNBQWtCLEdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29udHJvbH0gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IGdycGNDb250cm9sID0gY29udHJvbC5jb250cm9sX2NsaWVudDtcbmltcG9ydCB7SGVhZGVyLCBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyfSBmcm9tICcuL2dycGMvaGVhZGVycy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NsaWVudFRpbWVvdXRJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL2NsaWVudC10aW1lb3V0LWludGVyY2VwdG9yJztcbmltcG9ydCB7U3RhdHVzfSBmcm9tICdAZ3JwYy9ncnBjLWpzL2J1aWxkL3NyYy9jb25zdGFudHMnO1xuaW1wb3J0IHtDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vZXJyb3JzL2NhY2hlLXNlcnZpY2UtZXJyb3ItbWFwcGVyJztcbmltcG9ydCB7Q2hhbm5lbENyZWRlbnRpYWxzLCBJbnRlcmNlcHRvcn0gZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQge1xuICBDcmVhdGVDYWNoZSxcbiAgRGVsZXRlQ2FjaGUsXG4gIExpc3RDYWNoZXMsXG4gIENhY2hlRmx1c2gsXG4gIENyZWRlbnRpYWxQcm92aWRlcixcbiAgTW9tZW50b0xvZ2dlcixcbiAgQ2FjaGVJbmZvLFxufSBmcm9tICcuLic7XG5pbXBvcnQge3ZlcnNpb259IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQge0lkbGVHcnBjQ2xpZW50V3JhcHBlcn0gZnJvbSAnLi9ncnBjL2lkbGUtZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0dycGNDbGllbnRXcmFwcGVyfSBmcm9tICcuL2dycGMvZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NvbmZpZy9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7dmFsaWRhdGVDYWNoZU5hbWV9IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2FjaGVMaW1pdHMsXG4gIFRvcGljTGltaXRzLFxufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL21lc3NhZ2VzL2NhY2hlLWluZm8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xDbGllbnRQcm9wcyB7XG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG4gIGNyZWRlbnRpYWxQcm92aWRlcjogQ3JlZGVudGlhbFByb3ZpZGVyO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FjaGVDb250cm9sQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRXcmFwcGVyOiBHcnBjQ2xpZW50V3JhcHBlcjxncnBjQ29udHJvbC5TY3NDb250cm9sQ2xpZW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHRvcnM6IEludGVyY2VwdG9yW107XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJFUVVFU1RfVElNRU9VVF9NUzogbnVtYmVyID0gNjAgKiAxMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29udHJvbENsaWVudFByb3BzfSBwcm9wc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IENvbnRyb2xDbGllbnRQcm9wcykge1xuICAgIHRoaXMubG9nZ2VyID0gcHJvcHMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCkuZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBuZXcgQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIoXG4gICAgICBwcm9wcy5jb25maWd1cmF0aW9uLmdldFRocm93T25FcnJvcnMoKVxuICAgICk7XG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIG5ldyBIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0QXV0aFRva2VuKCkpLFxuICAgICAgbmV3IEhlYWRlcignQWdlbnQnLCBgbm9kZWpzOiR7dmVyc2lvbn1gKSxcbiAgICBdO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gW1xuICAgICAgbmV3IEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIoaGVhZGVycykuY3JlYXRlSGVhZGVyc0ludGVyY2VwdG9yKCksXG4gICAgICBDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3IoQ2FjaGVDb250cm9sQ2xpZW50LlJFUVVFU1RfVElNRU9VVF9NUyksXG4gICAgXTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyBjb250cm9sIGNsaWVudCB1c2luZyBlbmRwb2ludDogJyR7cHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmdldENvbnRyb2xFbmRwb2ludCgpfWBcbiAgICApO1xuICAgIHRoaXMuY2xpZW50V3JhcHBlciA9IG5ldyBJZGxlR3JwY0NsaWVudFdyYXBwZXIoe1xuICAgICAgY2xpZW50RmFjdG9yeUZuOiAoKSA9PlxuICAgICAgICBuZXcgZ3JwY0NvbnRyb2wuU2NzQ29udHJvbENsaWVudChcbiAgICAgICAgICBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0Q29udHJvbEVuZHBvaW50KCksXG4gICAgICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmlzQ29udHJvbEVuZHBvaW50U2VjdXJlKClcbiAgICAgICAgICAgID8gQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpXG4gICAgICAgICAgICA6IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpXG4gICAgICAgICksXG4gICAgICBsb2dnZXJGYWN0b3J5OiBwcm9wcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKSxcbiAgICAgIG1heElkbGVNaWxsaXM6IHByb3BzLmNvbmZpZ3VyYXRpb25cbiAgICAgICAgLmdldFRyYW5zcG9ydFN0cmF0ZWd5KClcbiAgICAgICAgLmdldE1heElkbGVNaWxsaXMoKSxcbiAgICB9KTtcbiAgfVxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2xvc2luZyBjYWNoZSBjb250cm9sIGNsaWVudCcpO1xuICAgIHRoaXMuY2xpZW50V3JhcHBlci5nZXRDbGllbnQoKS5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhY2hlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlQ2FjaGUuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUobmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBDcmVhdGVDYWNoZS5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgY2FjaGU6ICR7bmFtZX1gKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNDb250cm9sLl9DcmVhdGVDYWNoZVJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogbmFtZSxcbiAgICB9KTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8Q3JlYXRlQ2FjaGUuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY2xpZW50V3JhcHBlclxuICAgICAgICAuZ2V0Q2xpZW50KClcbiAgICAgICAgLkNyZWF0ZUNhY2hlKFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnN9LFxuICAgICAgICAgIChlcnIsIF9yZXNwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gU3RhdHVzLkFMUkVBRFlfRVhJU1RTKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShuZXcgQ3JlYXRlQ2FjaGUuQWxyZWFkeUV4aXN0cygpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgQ3JlYXRlQ2FjaGUuRXJyb3IoZSksXG4gICAgICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKG5ldyBDcmVhdGVDYWNoZS5TdWNjZXNzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVDYWNoZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPERlbGV0ZUNhY2hlLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKG5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgRGVsZXRlQ2FjaGUuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjQ29udHJvbC5fRGVsZXRlQ2FjaGVSZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IG5hbWUsXG4gICAgfSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYERlbGV0aW5nIGNhY2hlOiAke25hbWV9YCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPERlbGV0ZUNhY2hlLlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNsaWVudFdyYXBwZXJcbiAgICAgICAgLmdldENsaWVudCgpXG4gICAgICAgIC5EZWxldGVDYWNoZShcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSxcbiAgICAgICAgICAoZXJyLCBfcmVzcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBEZWxldGVDYWNoZS5FcnJvcihlKSxcbiAgICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKG5ldyBEZWxldGVDYWNoZS5TdWNjZXNzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmbHVzaENhY2hlKGNhY2hlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUZsdXNoLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBDYWNoZUZsdXNoLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBGbHVzaGluZyBjYWNoZTogJHtjYWNoZU5hbWV9YCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZEZsdXNoQ2FjaGUoY2FjaGVOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZEZsdXNoQ2FjaGUoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxDYWNoZUZsdXNoLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjQ29udHJvbC5fRmx1c2hDYWNoZVJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNsaWVudFdyYXBwZXIuZ2V0Q2xpZW50KCkuRmx1c2hDYWNoZShcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgQ2FjaGVGbHVzaC5TdWNjZXNzKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IENhY2hlRmx1c2guRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaXN0Q2FjaGVzKCk6IFByb21pc2U8TGlzdENhY2hlcy5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY0NvbnRyb2wuX0xpc3RDYWNoZXNSZXF1ZXN0KCk7XG4gICAgcmVxdWVzdC5uZXh0X3Rva2VuID0gJyc7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJJc3N1aW5nICdsaXN0Q2FjaGVzJyByZXF1ZXN0XCIpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxMaXN0Q2FjaGVzLlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNsaWVudFdyYXBwZXJcbiAgICAgICAgLmdldENsaWVudCgpXG4gICAgICAgIC5MaXN0Q2FjaGVzKHJlcXVlc3QsIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSwgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGlzdENhY2hlcy5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlcyA9IHJlc3AuY2FjaGUubWFwKGNhY2hlID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2FjaGVOYW1lID0gY2FjaGUuY2FjaGVfbmFtZTtcbiAgICAgICAgICAgICAgY29uc3QgdG9waWNMaW1pdHM6IFRvcGljTGltaXRzID0ge1xuICAgICAgICAgICAgICAgIG1heFB1Ymxpc2hNZXNzYWdlU2l6ZUtiOlxuICAgICAgICAgICAgICAgICAgY2FjaGUudG9waWNfbGltaXRzPy5tYXhfcHVibGlzaF9tZXNzYWdlX3NpemVfa2IgfHwgMCxcbiAgICAgICAgICAgICAgICBtYXhTdWJzY3JpcHRpb25Db3VudDpcbiAgICAgICAgICAgICAgICAgIGNhY2hlLnRvcGljX2xpbWl0cz8ubWF4X3N1YnNjcmlwdGlvbl9jb3VudCB8fCAwLFxuICAgICAgICAgICAgICAgIG1heFB1Ymxpc2hSYXRlOiBjYWNoZS50b3BpY19saW1pdHM/Lm1heF9wdWJsaXNoX3JhdGUgfHwgMCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3QgY2FjaGVMaW1pdHM6IENhY2hlTGltaXRzID0ge1xuICAgICAgICAgICAgICAgIG1heFR0bFNlY29uZHM6IGNhY2hlLmNhY2hlX2xpbWl0cz8ubWF4X3R0bF9zZWNvbmRzIHx8IDAsXG4gICAgICAgICAgICAgICAgbWF4SXRlbVNpemVLYjogY2FjaGUuY2FjaGVfbGltaXRzPy5tYXhfaXRlbV9zaXplX2tiIHx8IDAsXG4gICAgICAgICAgICAgICAgbWF4VGhyb3VnaHB1dEticHM6IGNhY2hlLmNhY2hlX2xpbWl0cz8ubWF4X3Rocm91Z2hwdXRfa2JwcyB8fCAwLFxuICAgICAgICAgICAgICAgIG1heFRyYWZmaWNSYXRlOiBjYWNoZS5jYWNoZV9saW1pdHM/Lm1heF90cmFmZmljX3JhdGUgfHwgMCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWNoZUluZm8oY2FjaGVOYW1lLCB0b3BpY0xpbWl0cywgY2FjaGVMaW1pdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMaXN0Q2FjaGVzLlN1Y2Nlc3MoY2FjaGVzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtY29udHJvbC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvY2FjaGUtY29udHJvbC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1EO0FBQ25ELElBQU8sV0FBVyxHQUFHLHlCQUFPLENBQUMsY0FBYyxDQUFDO0FBQzVDLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsaUVBQXlEO0FBQ3pELHFGQUE2RTtBQUM3RSwyQ0FBOEQ7QUFDOUQsMEJBUVk7QUFDWixxREFBMkM7QUFDM0MsOEVBQXNFO0FBR3RFLHVFQUE4RTtBQVc5RSxNQUFhLGtCQUFrQjtJQU83Qjs7T0FFRztJQUNILFlBQVksS0FBeUI7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLG9EQUF1QixDQUN4RCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQ3ZDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLHNCQUFPLEVBQUUsQ0FBQztZQUM5QyxJQUFJLDRCQUFNLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pFLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLElBQUksK0NBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLEVBQUU7WUFDakUsSUFBQSxxREFBd0IsRUFBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztTQUNoRSxDQUFD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QUFDO3lCQUMxRCxDQUFDO3dCQUNGLE1BQU0sV0FBVyxHQUFnQjs0QkFDL0IsYUFBYSxFQUFFLENBQUEsTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxlQUFlLEtBQUksQ0FBQzs0QkFDdkQsYUFBYSxFQUFFLENBQUEsTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxnQkFBZ0IsS0FBSSxDQUFDOzRCQUN4RCxpQkFBaUIsRUFBRSxDQUFBLE1BQUEsS0FBSyxDQUFDLFlBQVksMENBQUUsbUJBQW1CLEtBQUksQ0FBQzs0QkFDL0QsY0FBYyxFQUFFLENBQUEsTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxnQkFBZ0IsS0FBSSxDQUFDO3lCQUMxRCxDQUFDO3dCQUNGLE9BQU8sSUFBSSxhQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDNUQsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLElBQUksY0FBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2lCQUN6QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRNSCxnREF1TUM7QUFwTXlCLHFDQUFrQixHQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbnRyb2x9IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzJztcbmltcG9ydCBncnBjQ29udHJvbCA9IGNvbnRyb2wuY29udHJvbF9jbGllbnQ7XG5pbXBvcnQge0hlYWRlciwgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcn0gZnJvbSAnLi9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9jbGllbnQtdGltZW91dC1pbnRlcmNlcHRvcic7XG5pbXBvcnQge1N0YXR1c30gZnJvbSAnQGdycGMvZ3JwYy1qcy9idWlsZC9zcmMvY29uc3RhbnRzJztcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXJ9IGZyb20gJy4uL2Vycm9ycy9jYWNoZS1zZXJ2aWNlLWVycm9yLW1hcHBlcic7XG5pbXBvcnQge0NoYW5uZWxDcmVkZW50aWFscywgSW50ZXJjZXB0b3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlQ2FjaGUsXG4gIERlbGV0ZUNhY2hlLFxuICBMaXN0Q2FjaGVzLFxuICBDYWNoZUZsdXNoLFxuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIE1vbWVudG9Mb2dnZXIsXG4gIENhY2hlSW5mbyxcbn0gZnJvbSAnLi4nO1xuaW1wb3J0IHt2ZXJzaW9ufSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHtJZGxlR3JwY0NsaWVudFdyYXBwZXJ9IGZyb20gJy4vZ3JwYy9pZGxlLWdycGMtY2xpZW50LXdyYXBwZXInO1xuaW1wb3J0IHtHcnBjQ2xpZW50V3JhcHBlcn0gZnJvbSAnLi9ncnBjL2dycGMtY2xpZW50LXdyYXBwZXInO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9jb25maWcvY29uZmlndXJhdGlvbic7XG5pbXBvcnQge3ZhbGlkYXRlQ2FjaGVOYW1lfSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL2ludGVybmFsL3V0aWxzJztcbmltcG9ydCB7XG4gIENhY2hlTGltaXRzLFxuICBUb3BpY0xpbWl0cyxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9tZXNzYWdlcy9jYWNoZS1pbmZvJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sQ2xpZW50UHJvcHMge1xuICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uO1xuICBjcmVkZW50aWFsUHJvdmlkZXI6IENyZWRlbnRpYWxQcm92aWRlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlQ29udHJvbENsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50V3JhcHBlcjogR3JwY0NsaWVudFdyYXBwZXI8Z3JwY0NvbnRyb2wuU2NzQ29udHJvbENsaWVudD47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJjZXB0b3JzOiBJbnRlcmNlcHRvcltdO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSRVFVRVNUX1RJTUVPVVRfTVM6IG51bWJlciA9IDYwICogMTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE1vbWVudG9Mb2dnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IENhY2hlU2VydmljZUVycm9yTWFwcGVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0NvbnRyb2xDbGllbnRQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDb250cm9sQ2xpZW50UHJvcHMpIHtcbiAgICB0aGlzLmxvZ2dlciA9IHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLmdldExvZ2dlcih0aGlzKTtcbiAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyID0gbmV3IENhY2hlU2VydmljZUVycm9yTWFwcGVyKFxuICAgICAgcHJvcHMuY29uZmlndXJhdGlvbi5nZXRUaHJvd09uRXJyb3JzKClcbiAgICApO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBuZXcgSGVhZGVyKCdBdXRob3JpemF0aW9uJywgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmdldEF1dGhUb2tlbigpKSxcbiAgICAgIG5ldyBIZWFkZXIoJ0FnZW50JywgYG5vZGVqczpjYWNoZToke3ZlcnNpb259YCksXG4gICAgICBuZXcgSGVhZGVyKCdSdW50aW1lLVZlcnNpb24nLCBgbm9kZWpzOiR7cHJvY2Vzcy52ZXJzaW9ucy5ub2RlfWApLFxuICAgIF07XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSBbXG4gICAgICBuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKSxcbiAgICAgIENsaWVudFRpbWVvdXRJbnRlcmNlcHRvcihDYWNoZUNvbnRyb2xDbGllbnQuUkVRVUVTVF9USU1FT1VUX01TKSxcbiAgICBdO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIGNvbnRyb2wgY2xpZW50IHVzaW5nIGVuZHBvaW50OiAnJHtwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0Q29udHJvbEVuZHBvaW50KCl9YFxuICAgICk7XG4gICAgdGhpcy5jbGllbnRXcmFwcGVyID0gbmV3IElkbGVHcnBjQ2xpZW50V3JhcHBlcih7XG4gICAgICBjbGllbnRGYWN0b3J5Rm46ICgpID0+XG4gICAgICAgIG5ldyBncnBjQ29udHJvbC5TY3NDb250cm9sQ2xpZW50KFxuICAgICAgICAgIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDb250cm9sRW5kcG9pbnQoKSxcbiAgICAgICAgICBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXIuaXNDb250cm9sRW5kcG9pbnRTZWN1cmUoKVxuICAgICAgICAgICAgPyBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlU3NsKClcbiAgICAgICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKClcbiAgICAgICAgKSxcbiAgICAgIGxvZ2dlckZhY3Rvcnk6IHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLFxuICAgICAgbWF4SWRsZU1pbGxpczogcHJvcHMuY29uZmlndXJhdGlvblxuICAgICAgICAuZ2V0VHJhbnNwb3J0U3RyYXRlZ3koKVxuICAgICAgICAuZ2V0TWF4SWRsZU1pbGxpcygpLFxuICAgIH0pO1xuICB9XG4gIGNsb3NlKCkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGNhY2hlIGNvbnRyb2wgY2xpZW50Jyk7XG4gICAgdGhpcy5jbGllbnRXcmFwcGVyLmdldENsaWVudCgpLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ2FjaGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVDYWNoZS5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShuYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IENyZWF0ZUNhY2hlLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBDcmVhdGluZyBjYWNoZTogJHtuYW1lfWApO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY0NvbnRyb2wuX0NyZWF0ZUNhY2hlUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBuYW1lLFxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxDcmVhdGVDYWNoZS5SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jbGllbnRXcmFwcGVyXG4gICAgICAgIC5nZXRDbGllbnQoKVxuICAgICAgICAuQ3JlYXRlQ2FjaGUoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9yc30sXG4gICAgICAgICAgKGVyciwgX3Jlc3ApID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBTdGF0dXMuQUxSRUFEWV9FWElTVFMpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG5ldyBDcmVhdGVDYWNoZS5BbHJlYWR5RXhpc3RzKCkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBDcmVhdGVDYWNoZS5FcnJvcihlKSxcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUobmV3IENyZWF0ZUNhY2hlLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUNhY2hlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8RGVsZXRlQ2FjaGUuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUobmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBEZWxldGVDYWNoZS5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNDb250cm9sLl9EZWxldGVDYWNoZVJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogbmFtZSxcbiAgICB9KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRGVsZXRpbmcgY2FjaGU6ICR7bmFtZX1gKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8RGVsZXRlQ2FjaGUuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY2xpZW50V3JhcHBlclxuICAgICAgICAuZ2V0Q2xpZW50KClcbiAgICAgICAgLkRlbGV0ZUNhY2hlKFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnN9LFxuICAgICAgICAgIChlcnIsIF9yZXNwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IERlbGV0ZUNhY2hlLkVycm9yKGUpLFxuICAgICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUobmV3IERlbGV0ZUNhY2hlLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZsdXNoQ2FjaGUoY2FjaGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlRmx1c2guUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUoY2FjaGVOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IENhY2hlRmx1c2guRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYEZsdXNoaW5nIGNhY2hlOiAke2NhY2hlTmFtZX1gKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kRmx1c2hDYWNoZShjYWNoZU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kRmx1c2hDYWNoZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPENhY2hlRmx1c2guUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNDb250cm9sLl9GbHVzaENhY2hlUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY2xpZW50V3JhcHBlci5nZXRDbGllbnQoKS5GbHVzaENhY2hlKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBDYWNoZUZsdXNoLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgQ2FjaGVGbHVzaC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RDYWNoZXMoKTogUHJvbWlzZTxMaXN0Q2FjaGVzLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjQ29udHJvbC5fTGlzdENhY2hlc1JlcXVlc3QoKTtcbiAgICByZXF1ZXN0Lm5leHRfdG9rZW4gPSAnJztcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIklzc3VpbmcgJ2xpc3RDYWNoZXMnIHJlcXVlc3RcIik7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPExpc3RDYWNoZXMuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY2xpZW50V3JhcHBlclxuICAgICAgICAuZ2V0Q2xpZW50KClcbiAgICAgICAgLkxpc3RDYWNoZXMocmVxdWVzdCwge2ludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnN9LCAoZXJyLCByZXNwKSA9PiB7XG4gICAgICAgICAgaWYgKGVyciB8fCAhcmVzcCkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXNvbHZlT3JSZWplY3RFcnJvcih7XG4gICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBMaXN0Q2FjaGVzLkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVzID0gcmVzcC5jYWNoZS5tYXAoY2FjaGUgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjYWNoZU5hbWUgPSBjYWNoZS5jYWNoZV9uYW1lO1xuICAgICAgICAgICAgICBjb25zdCB0b3BpY0xpbWl0czogVG9waWNMaW1pdHMgPSB7XG4gICAgICAgICAgICAgICAgbWF4UHVibGlzaE1lc3NhZ2VTaXplS2I6XG4gICAgICAgICAgICAgICAgICBjYWNoZS50b3BpY19saW1pdHM/Lm1heF9wdWJsaXNoX21lc3NhZ2Vfc2l6ZV9rYiB8fCAwLFxuICAgICAgICAgICAgICAgIG1heFN1YnNjcmlwdGlvbkNvdW50OlxuICAgICAgICAgICAgICAgICAgY2FjaGUudG9waWNfbGltaXRzPy5tYXhfc3Vic2NyaXB0aW9uX2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgbWF4UHVibGlzaFJhdGU6IGNhY2hlLnRvcGljX2xpbWl0cz8ubWF4X3B1Ymxpc2hfcmF0ZSB8fCAwLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjb25zdCBjYWNoZUxpbWl0czogQ2FjaGVMaW1pdHMgPSB7XG4gICAgICAgICAgICAgICAgbWF4VHRsU2Vjb25kczogY2FjaGUuY2FjaGVfbGltaXRzPy5tYXhfdHRsX3NlY29uZHMgfHwgMCxcbiAgICAgICAgICAgICAgICBtYXhJdGVtU2l6ZUtiOiBjYWNoZS5jYWNoZV9saW1pdHM/Lm1heF9pdGVtX3NpemVfa2IgfHwgMCxcbiAgICAgICAgICAgICAgICBtYXhUaHJvdWdocHV0S2JwczogY2FjaGUuY2FjaGVfbGltaXRzPy5tYXhfdGhyb3VnaHB1dF9rYnBzIHx8IDAsXG4gICAgICAgICAgICAgICAgbWF4VHJhZmZpY1JhdGU6IGNhY2hlLmNhY2hlX2xpbWl0cz8ubWF4X3RyYWZmaWNfcmF0ZSB8fCAwLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IENhY2hlSW5mbyhjYWNoZU5hbWUsIHRvcGljTGltaXRzLCBjYWNoZUxpbWl0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExpc3RDYWNoZXMuU3VjY2VzcyhjYWNoZXMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=

@@ -11,3 +11,3 @@ "use strict";

constructor(name, value) {
this.onceOnlyHeaders = ['Agent'];
this.onceOnlyHeaders = ['Agent', 'Runtime-Version'];
this.name = name;

@@ -43,2 +43,2 @@ this.value = value;

HeaderInterceptorProvider.areOnlyOnceHeadersSent = false;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTREO0FBRTVELE1BQWEsTUFBTTtJQUtqQjs7O09BR0c7SUFDSCxZQUFZLElBQVksRUFBRSxLQUFhO1FBUnZCLG9CQUFlLEdBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQVNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFiRCx3QkFhQztBQUVELE1BQWEseUJBQXlCO0lBS3BDOztPQUVHO0lBQ0gsWUFBWSxPQUFpQjtRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUM5QyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzdDLENBQUM7UUFDRixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMzQixPQUFPLElBQUksMEJBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixFQUFFO3dCQUNyRCx5QkFBeUIsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7d0JBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQ25FO29CQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDOztBQWhDSCw4REFpQ0M7QUE5QmdCLGdEQUFzQixHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJjZXB0aW5nQ2FsbCwgSW50ZXJjZXB0b3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuXG5leHBvcnQgY2xhc3MgSGVhZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IG9uY2VPbmx5SGVhZGVyczogc3RyaW5nW10gPSBbJ0FnZW50J107XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJzVG9BZGRFdmVyeVRpbWU6IEhlYWRlcltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlcnNUb0FkZE9uY2U6IEhlYWRlcltdO1xuICBwcml2YXRlIHN0YXRpYyBhcmVPbmx5T25jZUhlYWRlcnNTZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SGVhZGVyW119IGhlYWRlcnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGhlYWRlcnM6IEhlYWRlcltdKSB7XG4gICAgdGhpcy5oZWFkZXJzVG9BZGRPbmNlID0gaGVhZGVycy5maWx0ZXIoaGVhZGVyID0+XG4gICAgICBoZWFkZXIub25jZU9ubHlIZWFkZXJzLmluY2x1ZGVzKGhlYWRlci5uYW1lKVxuICAgICk7XG4gICAgdGhpcy5oZWFkZXJzVG9BZGRFdmVyeVRpbWUgPSBoZWFkZXJzLmZpbHRlcihcbiAgICAgIGhlYWRlciA9PiAhaGVhZGVyLm9uY2VPbmx5SGVhZGVycy5pbmNsdWRlcyhoZWFkZXIubmFtZSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUhlYWRlcnNJbnRlcmNlcHRvcigpOiBJbnRlcmNlcHRvciB7XG4gICAgcmV0dXJuIChvcHRpb25zLCBuZXh0Q2FsbCkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcmNlcHRpbmdDYWxsKG5leHRDYWxsKG9wdGlvbnMpLCB7XG4gICAgICAgIHN0YXJ0OiAobWV0YWRhdGEsIGxpc3RlbmVyLCBuZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzVG9BZGRFdmVyeVRpbWUuZm9yRWFjaChoID0+XG4gICAgICAgICAgICBtZXRhZGF0YS5hZGQoaC5uYW1lLCBoLnZhbHVlKVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyLmFyZU9ubHlPbmNlSGVhZGVyc1NlbnQpIHtcbiAgICAgICAgICAgIEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIuYXJlT25seU9uY2VIZWFkZXJzU2VudCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmhlYWRlcnNUb0FkZE9uY2UuZm9yRWFjaChoID0+IG1ldGFkYXRhLmFkZChoLm5hbWUsIGgudmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dChtZXRhZGF0YSwge30pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTREO0FBRTVELE1BQWEsTUFBTTtJQUtqQjs7O09BR0c7SUFDSCxZQUFZLElBQVksRUFBRSxLQUFhO1FBUnZCLG9CQUFlLEdBQWEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQVN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFiRCx3QkFhQztBQUVELE1BQWEseUJBQXlCO0lBS3BDOztPQUVHO0lBQ0gsWUFBWSxPQUFpQjtRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUM5QyxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzdDLENBQUM7UUFDRixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMzQixPQUFPLElBQUksMEJBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixFQUFFO3dCQUNyRCx5QkFBeUIsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7d0JBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7cUJBQ25FO29CQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDOztBQWhDSCw4REFpQ0M7QUE5QmdCLGdEQUFzQixHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJjZXB0aW5nQ2FsbCwgSW50ZXJjZXB0b3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuXG5leHBvcnQgY2xhc3MgSGVhZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IG9uY2VPbmx5SGVhZGVyczogc3RyaW5nW10gPSBbJ0FnZW50JywgJ1J1bnRpbWUtVmVyc2lvbiddO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyc1RvQWRkRXZlcnlUaW1lOiBIZWFkZXJbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJzVG9BZGRPbmNlOiBIZWFkZXJbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgYXJlT25seU9uY2VIZWFkZXJzU2VudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0hlYWRlcltdfSBoZWFkZXJzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihoZWFkZXJzOiBIZWFkZXJbXSkge1xuICAgIHRoaXMuaGVhZGVyc1RvQWRkT25jZSA9IGhlYWRlcnMuZmlsdGVyKGhlYWRlciA9PlxuICAgICAgaGVhZGVyLm9uY2VPbmx5SGVhZGVycy5pbmNsdWRlcyhoZWFkZXIubmFtZSlcbiAgICApO1xuICAgIHRoaXMuaGVhZGVyc1RvQWRkRXZlcnlUaW1lID0gaGVhZGVycy5maWx0ZXIoXG4gICAgICBoZWFkZXIgPT4gIWhlYWRlci5vbmNlT25seUhlYWRlcnMuaW5jbHVkZXMoaGVhZGVyLm5hbWUpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKTogSW50ZXJjZXB0b3Ige1xuICAgIHJldHVybiAob3B0aW9ucywgbmV4dENhbGwpID0+IHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJjZXB0aW5nQ2FsbChuZXh0Q2FsbChvcHRpb25zKSwge1xuICAgICAgICBzdGFydDogKG1ldGFkYXRhLCBsaXN0ZW5lciwgbmV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMuaGVhZGVyc1RvQWRkRXZlcnlUaW1lLmZvckVhY2goaCA9PlxuICAgICAgICAgICAgbWV0YWRhdGEuYWRkKGgubmFtZSwgaC52YWx1ZSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlci5hcmVPbmx5T25jZUhlYWRlcnNTZW50KSB7XG4gICAgICAgICAgICBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyLmFyZU9ubHlPbmNlSGVhZGVyc1NlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzVG9BZGRPbmNlLmZvckVhY2goaCA9PiBtZXRhZGF0YS5hZGQoaC5uYW1lLCBoLnZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQobWV0YWRhdGEsIHt9KTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==

@@ -24,3 +24,6 @@ "use strict";

this.creds = props.credentialProvider;
const headers = [new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`)];
const headers = [
new headers_interceptor_1.Header('Agent', `nodejs:auth:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];
this.interceptors = [

@@ -359,2 +362,2 @@ new headers_interceptor_1.HeaderInterceptorProvider(headers).createHeadersInterceptor(),

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtYXV0aC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWwtYXV0aC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQXVEO0FBQ3ZELElBQU8sUUFBUSxHQUFHLHNCQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsMkNBQThEO0FBQzlELHFEQUEyQztBQUMzQyxxRkFBNkU7QUFDN0UsdUVBTXFEO0FBQ3JELElBQU8sS0FBSyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUM7QUFDdkQsSUFBTyxPQUFPLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztBQUMzRCxrREFzQjZCO0FBRzdCLGdHQVFtRTtBQUNuRSwyRkFBdUY7QUFDdkYsbUNBQWdDO0FBQ2hDLDRHQU95RTtBQUV6RSxNQUFhLGtCQUFrQjtJQVM3QixZQUFZLEtBQXNCOztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxvREFBdUIsQ0FDeEQsTUFBQSxLQUFLLENBQUMsYUFBYSxtQ0FBSSxLQUFLLENBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxzQkFBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSwrQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRSxJQUFBLHFEQUF3QixFQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO1NBQ2hFLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksdUJBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUM1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QWlCLEdBQUcseUNBQXlDLENBQ2xFLElBQUEseURBQWdDLEVBQUMsVUFBVSxDQUFDLENBQzdDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixrQ0FBa0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUMvRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMseUNBQXlDLENBQ2hELFVBQTBDO0lBRTFDLElBQUksY0FBYyxHQUNoQixJQUFJLHdDQUFtQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzdELGNBQWMsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakUsY0FBYyxHQUFHLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVyRSxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdXRoLCB0b2tlbn0gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IGdycGNBdXRoID0gYXV0aC5hdXRoO1xuaW1wb3J0IHtIZWFkZXIsIEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXJ9IGZyb20gJy4vZ3JwYy9oZWFkZXJzLWludGVyY2VwdG9yJztcbmltcG9ydCB7Q2xpZW50VGltZW91dEludGVyY2VwdG9yfSBmcm9tICcuL2dycGMvY2xpZW50LXRpbWVvdXQtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDaGFubmVsQ3JlZGVudGlhbHMsIEludGVyY2VwdG9yfSBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7dmVyc2lvbn0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXJ9IGZyb20gJy4uL2Vycm9ycy9jYWNoZS1zZXJ2aWNlLWVycm9yLW1hcHBlcic7XG5pbXBvcnQge1xuICBJbnRlcm5hbFN1cGVyVXNlclBlcm1pc3Npb25zLFxuICB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlbkV4cGlyeSxcbiAgdmFsaWRhdGVWYWxpZEZvclNlY29uZHMsXG4gIHZhbGlkYXRlQ2FjaGVLZXlPclByZWZpeCxcbiAgdmFsaWRhdGVEaXNwb3NhYmxlVG9rZW5Ub2tlbklELFxufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL2ludGVybmFsL3V0aWxzJztcbmltcG9ydCBOZXZlciA9IGdycGNBdXRoLl9HZW5lcmF0ZUFwaVRva2VuUmVxdWVzdC5OZXZlcjtcbmltcG9ydCBFeHBpcmVzID0gZ3JwY0F1dGguX0dlbmVyYXRlQXBpVG9rZW5SZXF1ZXN0LkV4cGlyZXM7XG5pbXBvcnQge1xuICBFeHBpcmVzSW4sXG4gIEV4cGlyZXNBdCxcbiAgQ3JlZGVudGlhbFByb3ZpZGVyLFxuICBSZWZyZXNoQXBpS2V5LFxuICBHZW5lcmF0ZUFwaUtleSxcbiAgUGVybWlzc2lvblNjb3BlLFxuICBQZXJtaXNzaW9ucyxcbiAgUGVybWlzc2lvbixcbiAgVG9waWNQZXJtaXNzaW9uLFxuICBDYWNoZVBlcm1pc3Npb24sXG4gIFRvcGljUm9sZSxcbiAgQ2FjaGVSb2xlLFxuICBBbGxDYWNoZXMsXG4gIEFsbFRvcGljcyxcbiAgaXNDYWNoZU5hbWUsXG4gIGlzVG9waWNOYW1lLFxuICBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbixcbiAgQWxsQ2FjaGVJdGVtcyxcbiAgaXNDYWNoZUl0ZW1LZXksXG4gIGlzQ2FjaGVJdGVtS2V5UHJlZml4LFxuICBEaXNwb3NhYmxlVG9rZW5TY29wZSxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZSc7XG5pbXBvcnQge0lBdXRoQ2xpZW50fSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL2ludGVybmFsL2NsaWVudHMnO1xuaW1wb3J0IHtBdXRoQ2xpZW50UHJvcHN9IGZyb20gJy4uL2F1dGgtY2xpZW50LXByb3BzJztcbmltcG9ydCB7XG4gIGFzQ2FjaGVQZXJtaXNzaW9uLFxuICBhc1Blcm1pc3Npb25zT2JqZWN0LFxuICBhc1RvcGljUGVybWlzc2lvbixcbiAgaXNDYWNoZVBlcm1pc3Npb24sXG4gIGlzUGVybWlzc2lvbnNPYmplY3QsXG4gIGlzVG9waWNQZXJtaXNzaW9uLFxuICBQcmVkZWZpbmVkU2NvcGUsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvYXV0aC90b2tlbnMvcGVybWlzc2lvbi1zY29wZSc7XG5pbXBvcnQge3Blcm1pc3Npb25fbWVzc2FnZXN9IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzL2Rpc3QvcGVybWlzc2lvbm1lc3NhZ2VzJztcbmltcG9ydCB7Y29udmVydH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBhc0Rpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvbixcbiAgYXNEaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uc09iamVjdCxcbiAgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uLFxuICBEaXNwb3NhYmxlVG9rZW5Qcm9wcyxcbiAgaXNEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24sXG4gIGlzRGlzcG9zYWJsZVRva2VuUGVybWlzc2lvbnNPYmplY3QsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvYXV0aC90b2tlbnMvZGlzcG9zYWJsZS10b2tlbi1zY29wZSc7XG5cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbEF1dGhDbGllbnQgaW1wbGVtZW50cyBJQXV0aENsaWVudCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJFUVVFU1RfVElNRU9VVF9NUzogbnVtYmVyID0gNjAgKiAxMDAwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IENhY2hlU2VydmljZUVycm9yTWFwcGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNyZWRzOiBDcmVkZW50aWFsUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJjZXB0b3JzOiBJbnRlcmNlcHRvcltdO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuQ2xpZW50OiB0b2tlbi50b2tlbi5Ub2tlbkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoQ2xpZW50OiBncnBjQXV0aC5BdXRoQ2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBdXRoQ2xpZW50UHJvcHMpIHtcbiAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyID0gbmV3IENhY2hlU2VydmljZUVycm9yTWFwcGVyKFxuICAgICAgcHJvcHMudGhyb3dPbkVycm9ycyA/PyBmYWxzZVxuICAgICk7XG4gICAgdGhpcy5jcmVkcyA9IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlcjtcbiAgICBjb25zdCBoZWFkZXJzID0gW25ldyBIZWFkZXIoJ0FnZW50JywgYG5vZGVqczoke3ZlcnNpb259YCldO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gW1xuICAgICAgbmV3IEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIoaGVhZGVycykuY3JlYXRlSGVhZGVyc0ludGVyY2VwdG9yKCksXG4gICAgICBDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3IoSW50ZXJuYWxBdXRoQ2xpZW50LlJFUVVFU1RfVElNRU9VVF9NUyksXG4gICAgXTtcbiAgICB0aGlzLnRva2VuQ2xpZW50ID0gbmV3IHRva2VuLnRva2VuLlRva2VuQ2xpZW50KFxuICAgICAgdGhpcy5jcmVkcy5nZXRUb2tlbkVuZHBvaW50KCksXG4gICAgICB0aGlzLmNyZWRzLmlzVG9rZW5FbmRwb2ludFNlY3VyZSgpXG4gICAgICAgID8gQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpXG4gICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKClcbiAgICApO1xuICAgIHRoaXMuYXV0aENsaWVudCA9IG5ldyBncnBjQXV0aC5BdXRoQ2xpZW50KFxuICAgICAgdGhpcy5jcmVkcy5nZXRDb250cm9sRW5kcG9pbnQoKSxcbiAgICAgIHRoaXMuY3JlZHMuaXNUb2tlbkVuZHBvaW50U2VjdXJlKClcbiAgICAgICAgPyBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlU3NsKClcbiAgICAgICAgOiBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVBcGlLZXkoXG4gICAgc2NvcGU6IFBlcm1pc3Npb25TY29wZSxcbiAgICBleHBpcmVzSW46IEV4cGlyZXNJblxuICApOiBQcm9taXNlPEdlbmVyYXRlQXBpS2V5LlJlc3BvbnNlPiB7XG4gICAgbGV0IHBlcm1pc3Npb25zO1xuICAgIHRyeSB7XG4gICAgICBwZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zRnJvbVRva2VuU2NvcGUoc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgR2VuZXJhdGVBcGlLZXkuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjQXV0aC5fR2VuZXJhdGVBcGlUb2tlblJlcXVlc3Qoe1xuICAgICAgYXV0aF90b2tlbjogdGhpcy5jcmVkcy5nZXRBdXRoVG9rZW4oKSxcbiAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9ucyxcbiAgICB9KTtcblxuICAgIGlmIChleHBpcmVzSW4uZG9lc0V4cGlyZSgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWxpZGF0ZVZhbGlkRm9yU2Vjb25kcyhleHBpcmVzSW4uc2Vjb25kcygpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICAgIGVyciA9PiBuZXcgR2VuZXJhdGVBcGlLZXkuRXJyb3IoZXJyKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0LmV4cGlyZXMgPSBuZXcgRXhwaXJlcyh7XG4gICAgICAgIHZhbGlkX2Zvcl9zZWNvbmRzOiBleHBpcmVzSW4uc2Vjb25kcygpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QubmV2ZXIgPSBuZXcgTmV2ZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8R2VuZXJhdGVBcGlLZXkuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuYXV0aENsaWVudC5HZW5lcmF0ZUFwaVRva2VuKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9yc30sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IEdlbmVyYXRlQXBpS2V5LkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgbmV3IEdlbmVyYXRlQXBpS2V5LlN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgcmVzcC5hcGlfa2V5LFxuICAgICAgICAgICAgICAgIHJlc3AucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgICAgICByZXNwLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIEV4cGlyZXNBdC5mcm9tRXBvY2gocmVzcC52YWxpZF91bnRpbClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBgZ2VuZXJhdGVBcGlLZXlgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUF1dGhUb2tlbihcbiAgICBzY29wZTogUGVybWlzc2lvblNjb3BlLFxuICAgIGV4cGlyZXNJbjogRXhwaXJlc0luXG4gICk6IFByb21pc2U8R2VuZXJhdGVBcGlLZXkuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUFwaUtleShzY29wZSwgZXhwaXJlc0luKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoQXBpS2V5KFxuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nXG4gICk6IFByb21pc2U8UmVmcmVzaEFwaUtleS5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY0F1dGguX1JlZnJlc2hBcGlUb2tlblJlcXVlc3Qoe1xuICAgICAgYXBpX2tleTogdGhpcy5jcmVkcy5nZXRBdXRoVG9rZW4oKSxcbiAgICAgIHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbixcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxSZWZyZXNoQXBpS2V5LlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmF1dGhDbGllbnQuUmVmcmVzaEFwaVRva2VuKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9yc30sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IFJlZnJlc2hBcGlLZXkuRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICBuZXcgUmVmcmVzaEFwaUtleS5TdWNjZXNzKFxuICAgICAgICAgICAgICAgIHJlc3AuYXBpX2tleSxcbiAgICAgICAgICAgICAgICByZXNwLnJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgICAgICAgcmVzcC5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICBFeHBpcmVzQXQuZnJvbUVwb2NoKHJlc3AudmFsaWRfdW50aWwpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHBsZWFzZSB1c2UgYHJlZnJlc2hBcGlLZXlgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyByZWZyZXNoQXV0aFRva2VuKFxuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nXG4gICk6IFByb21pc2U8UmVmcmVzaEFwaUtleS5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hBcGlLZXkocmVmcmVzaFRva2VuKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZURpc3Bvc2FibGVUb2tlbihcbiAgICBzY29wZTogRGlzcG9zYWJsZVRva2VuU2NvcGUsXG4gICAgZXhwaXJlc0luOiBFeHBpcmVzSW4sXG4gICAgZGlzcG9zYWJsZVRva2VuUHJvcHM/OiBEaXNwb3NhYmxlVG9rZW5Qcm9wc1xuICApOiBQcm9taXNlPEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuRXhwaXJ5KGV4cGlyZXNJbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbi5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBleHBpcmVzID0gbmV3IHRva2VuLnRva2VuLl9HZW5lcmF0ZURpc3Bvc2FibGVUb2tlblJlcXVlc3QuRXhwaXJlcyh7XG4gICAgICB2YWxpZF9mb3Jfc2Vjb25kczogZXhwaXJlc0luLnNlY29uZHMoKSxcbiAgICB9KTtcblxuICAgIGxldCBwZXJtaXNzaW9ucztcbiAgICB0cnkge1xuICAgICAgcGVybWlzc2lvbnMgPSBwZXJtaXNzaW9uc0Zyb21EaXNwb3NhYmxlVG9rZW5TY29wZShzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbi5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuSWQgPSBkaXNwb3NhYmxlVG9rZW5Qcm9wcz8udG9rZW5JZDtcbiAgICBpZiAodG9rZW5JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlblRva2VuSUQodG9rZW5JZCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgICBlcnIgPT4gbmV3IEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLkVycm9yKGVycilcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IHRva2VuLnRva2VuLl9HZW5lcmF0ZURpc3Bvc2FibGVUb2tlblJlcXVlc3Qoe1xuICAgICAgZXhwaXJlczogZXhwaXJlcyxcbiAgICAgIGF1dGhfdG9rZW46IHRoaXMuY3JlZHMuZ2V0QXV0aFRva2VuKCksXG4gICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnMsXG4gICAgICB0b2tlbl9pZDogdG9rZW5JZCxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbi5SZXNwb25zZT4oXG4gICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMudG9rZW5DbGllbnQuR2VuZXJhdGVEaXNwb3NhYmxlVG9rZW4oXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9yc30sXG4gICAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciB8fCAhcmVzcCkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+XG4gICAgICAgICAgICAgICAgICBuZXcgR2VuZXJhdGVEaXNwb3NhYmxlVG9rZW4uRXJyb3IoZSksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICBuZXcgR2VuZXJhdGVEaXNwb3NhYmxlVG9rZW4uU3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgIHJlc3AuYXBpX2tleSxcbiAgICAgICAgICAgICAgICAgIHJlc3AuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICBFeHBpcmVzQXQuZnJvbUVwb2NoKHJlc3AudmFsaWRfdW50aWwpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uc0Zyb21Ub2tlblNjb3BlKFxuICBzY29wZTogUGVybWlzc2lvblNjb3BlXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zIHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnMoKTtcbiAgaWYgKHNjb3BlIGluc3RhbmNlb2YgSW50ZXJuYWxTdXBlclVzZXJQZXJtaXNzaW9ucykge1xuICAgIHJlc3VsdC5zdXBlcl91c2VyID0gcGVybWlzc2lvbl9tZXNzYWdlcy5TdXBlclVzZXJQZXJtaXNzaW9ucy5TdXBlclVzZXI7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGlmIChpc1Blcm1pc3Npb25zT2JqZWN0KHNjb3BlKSkge1xuICAgIGNvbnN0IHNjb3BlUGVybWlzc2lvbnM6IFBlcm1pc3Npb25zID0gYXNQZXJtaXNzaW9uc09iamVjdChzY29wZSk7XG4gICAgY29uc3QgZXhwbGljaXRQZXJtaXNzaW9ucyA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLkV4cGxpY2l0UGVybWlzc2lvbnMoKTtcbiAgICBleHBsaWNpdFBlcm1pc3Npb25zLnBlcm1pc3Npb25zID0gc2NvcGVQZXJtaXNzaW9ucy5wZXJtaXNzaW9ucy5tYXAocCA9PlxuICAgICAgdG9rZW5QZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihwKVxuICAgICk7XG4gICAgcmVzdWx0LmV4cGxpY2l0ID0gZXhwbGljaXRQZXJtaXNzaW9ucztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIHRva2VuIHNjb3BlOiAke0pTT04uc3RyaW5naWZ5KHNjb3BlKX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zRnJvbURpc3Bvc2FibGVUb2tlblNjb3BlKFxuICBzY29wZTogRGlzcG9zYWJsZVRva2VuU2NvcGVcbik6IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnMge1xuICBjb25zdCByZXN1bHQgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9ucygpO1xuICBpZiAoXG4gICAgIShzY29wZSBpbnN0YW5jZW9mIFByZWRlZmluZWRTY29wZSkgJiZcbiAgICBpc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25zT2JqZWN0KHNjb3BlKVxuICApIHtcbiAgICBjb25zdCBzY29wZVBlcm1pc3Npb25zID0gYXNEaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uc09iamVjdChzY29wZSk7XG4gICAgY29uc3QgZXhwbGljaXRQZXJtaXNzaW9ucyA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLkV4cGxpY2l0UGVybWlzc2lvbnMoKTtcbiAgICBleHBsaWNpdFBlcm1pc3Npb25zLnBlcm1pc3Npb25zID0gc2NvcGVQZXJtaXNzaW9ucy5wZXJtaXNzaW9ucy5tYXAocCA9PlxuICAgICAgZGlzcG9zYWJsZVRva2VuUGVybWlzc2lvblRvR3JwY1Blcm1pc3Npb24ocClcbiAgICApO1xuICAgIHJlc3VsdC5leHBsaWNpdCA9IGV4cGxpY2l0UGVybWlzc2lvbnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGlmIChpc1Blcm1pc3Npb25zT2JqZWN0KHNjb3BlKSkge1xuICAgIGNvbnN0IHNjb3BlUGVybWlzc2lvbnM6IFBlcm1pc3Npb25zID0gYXNQZXJtaXNzaW9uc09iamVjdChzY29wZSk7XG4gICAgY29uc3QgZXhwbGljaXRQZXJtaXNzaW9ucyA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLkV4cGxpY2l0UGVybWlzc2lvbnMoKTtcbiAgICBleHBsaWNpdFBlcm1pc3Npb25zLnBlcm1pc3Npb25zID0gc2NvcGVQZXJtaXNzaW9ucy5wZXJtaXNzaW9ucy5tYXAocCA9PlxuICAgICAgdG9rZW5QZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihwKVxuICAgICk7XG4gICAgcmVzdWx0LmV4cGxpY2l0ID0gZXhwbGljaXRQZXJtaXNzaW9ucztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIHRva2VuIHNjb3BlOiAke0pTT04uc3RyaW5naWZ5KHNjb3BlKX1gKTtcbn1cblxuZnVuY3Rpb24gdG9rZW5QZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgcGVybWlzc2lvbjogUGVybWlzc2lvblxuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUge1xuICBjb25zdCByZXN1bHQgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUoKTtcbiAgaWYgKGlzVG9waWNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgcmVzdWx0LnRvcGljX3Blcm1pc3Npb25zID0gdG9waWNQZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgICAgIGFzVG9waWNQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgaWYgKGlzQ2FjaGVQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgcmVzdWx0LmNhY2hlX3Blcm1pc3Npb25zID0gY2FjaGVQZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgICAgIGFzQ2FjaGVQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgVW5yZWNvZ25pemVkIHRva2VuIHBlcm1pc3Npb246ICR7SlNPTi5zdHJpbmdpZnkocGVybWlzc2lvbil9YFxuICApO1xufVxuXG5mdW5jdGlvbiB0b3BpY1Blcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKFxuICBwZXJtaXNzaW9uOiBUb3BpY1Blcm1pc3Npb25cbik6IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLlRvcGljUGVybWlzc2lvbnMge1xuICBjb25zdCBncnBjUGVybWlzc2lvbiA9XG4gICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLlRvcGljUGVybWlzc2lvbnMoKTtcbiAgc3dpdGNoIChwZXJtaXNzaW9uLnJvbGUpIHtcbiAgICBjYXNlIFRvcGljUm9sZS5QdWJsaXNoU3Vic2NyaWJlOiB7XG4gICAgICBncnBjUGVybWlzc2lvbi5yb2xlID0gcGVybWlzc2lvbl9tZXNzYWdlcy5Ub3BpY1JvbGUuVG9waWNSZWFkV3JpdGU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBUb3BpY1JvbGUuU3Vic2NyaWJlT25seToge1xuICAgICAgZ3JwY1Blcm1pc3Npb24ucm9sZSA9IHBlcm1pc3Npb25fbWVzc2FnZXMuVG9waWNSb2xlLlRvcGljUmVhZE9ubHk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBUb3BpY1JvbGUuUHVibGlzaE9ubHk6IHtcbiAgICAgIGdycGNQZXJtaXNzaW9uLnJvbGUgPSBwZXJtaXNzaW9uX21lc3NhZ2VzLlRvcGljUm9sZS5Ub3BpY1dyaXRlT25seTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCB0b3BpYyByb2xlOiAke0pTT04uc3RyaW5naWZ5KHBlcm1pc3Npb24pfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwZXJtaXNzaW9uLmNhY2hlID09PSBBbGxDYWNoZXMpIHtcbiAgICBncnBjUGVybWlzc2lvbi5hbGxfY2FjaGVzID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkFsbCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwZXJtaXNzaW9uLmNhY2hlID09PSAnc3RyaW5nJykge1xuICAgIGdycGNQZXJtaXNzaW9uLmNhY2hlX3NlbGVjdG9yID1cbiAgICAgIG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVNlbGVjdG9yKHtcbiAgICAgICAgY2FjaGVfbmFtZTogcGVybWlzc2lvbi5jYWNoZSxcbiAgICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQ2FjaGVOYW1lKHBlcm1pc3Npb24uY2FjaGUpKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uY2FjaGVfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlU2VsZWN0b3Ioe1xuICAgICAgICBjYWNoZV9uYW1lOiBwZXJtaXNzaW9uLmNhY2hlLm5hbWUsXG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5yZWNvZ25pemVkIGNhY2hlIHNwZWNpZmljYXRpb24gaW4gdG9waWMgcGVybWlzc2lvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcGVybWlzc2lvblxuICAgICAgKX1gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChwZXJtaXNzaW9uLnRvcGljID09PSBBbGxUb3BpY3MpIHtcbiAgICBncnBjUGVybWlzc2lvbi5hbGxfdG9waWNzID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkFsbCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwZXJtaXNzaW9uLnRvcGljID09PSAnc3RyaW5nJykge1xuICAgIGdycGNQZXJtaXNzaW9uLnRvcGljX3NlbGVjdG9yID1cbiAgICAgIG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5Ub3BpY1NlbGVjdG9yKHtcbiAgICAgICAgdG9waWNfbmFtZTogcGVybWlzc2lvbi50b3BpYyxcbiAgICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzVG9waWNOYW1lKHBlcm1pc3Npb24udG9waWMpKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24udG9waWNfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLlRvcGljU2VsZWN0b3Ioe1xuICAgICAgICB0b3BpY19uYW1lOiBwZXJtaXNzaW9uLnRvcGljLm5hbWUsXG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5yZWNvZ25pemVkIHRvcGljIHNwZWNpZmljYXRpb24gaW4gdG9waWMgcGVybWlzc2lvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcGVybWlzc2lvblxuICAgICAgKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZ3JwY1Blcm1pc3Npb247XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkNhY2hlUm9sZShcbiAgcGVybWlzc2lvbjogQ2FjaGVQZXJtaXNzaW9uIHwgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uLFxuICBncnBjUGVybWlzc2lvbjogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9uc1xuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9ucyB7XG4gIHN3aXRjaCAocGVybWlzc2lvbi5yb2xlKSB7XG4gICAgY2FzZSBDYWNoZVJvbGUuUmVhZFdyaXRlOiB7XG4gICAgICBncnBjUGVybWlzc2lvbi5yb2xlID0gcGVybWlzc2lvbl9tZXNzYWdlcy5DYWNoZVJvbGUuQ2FjaGVSZWFkV3JpdGU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDYWNoZVJvbGUuUmVhZE9ubHk6IHtcbiAgICAgIGdycGNQZXJtaXNzaW9uLnJvbGUgPSBwZXJtaXNzaW9uX21lc3NhZ2VzLkNhY2hlUm9sZS5DYWNoZVJlYWRPbmx5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2FjaGVSb2xlLldyaXRlT25seToge1xuICAgICAgZ3JwY1Blcm1pc3Npb24ucm9sZSA9IHBlcm1pc3Npb25fbWVzc2FnZXMuQ2FjaGVSb2xlLkNhY2hlV3JpdGVPbmx5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGNhY2hlIHJvbGU6ICR7SlNPTi5zdHJpbmdpZnkocGVybWlzc2lvbil9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ2FjaGVTZWxlY3RvcihcbiAgcGVybWlzc2lvbjogQ2FjaGVQZXJtaXNzaW9uIHwgRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uLFxuICBncnBjUGVybWlzc2lvbjogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9uc1xuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9ucyB7XG4gIGlmIChwZXJtaXNzaW9uLmNhY2hlID09PSBBbGxDYWNoZXMpIHtcbiAgICBncnBjUGVybWlzc2lvbi5hbGxfY2FjaGVzID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkFsbCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwZXJtaXNzaW9uLmNhY2hlID09PSAnc3RyaW5nJykge1xuICAgIGdycGNQZXJtaXNzaW9uLmNhY2hlX3NlbGVjdG9yID1cbiAgICAgIG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVNlbGVjdG9yKHtcbiAgICAgICAgY2FjaGVfbmFtZTogcGVybWlzc2lvbi5jYWNoZSxcbiAgICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQ2FjaGVOYW1lKHBlcm1pc3Npb24uY2FjaGUpKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uY2FjaGVfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlU2VsZWN0b3Ioe1xuICAgICAgICBjYWNoZV9uYW1lOiBwZXJtaXNzaW9uLmNhY2hlLm5hbWUsXG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5yZWNvZ25pemVkIGNhY2hlIHNwZWNpZmljYXRpb24gaW4gY2FjaGUgcGVybWlzc2lvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcGVybWlzc2lvblxuICAgICAgKX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZ3JwY1Blcm1pc3Npb247XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkNhY2hlSXRlbVNlbGVjdG9yKFxuICBwZXJtaXNzaW9uOiBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24sXG4gIGdycGNQZXJtaXNzaW9uOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zIHtcbiAgaWYgKHBlcm1pc3Npb24uaXRlbSA9PT0gQWxsQ2FjaGVJdGVtcykge1xuICAgIGdycGNQZXJtaXNzaW9uLmFsbF9pdGVtcyA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5BbGwoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcGVybWlzc2lvbi5pdGVtID09PSAnc3RyaW5nJykge1xuICAgIGdycGNQZXJtaXNzaW9uLml0ZW1fc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlSXRlbVNlbGVjdG9yKHtcbiAgICAgICAga2V5OiBjb252ZXJ0KHBlcm1pc3Npb24uaXRlbSksXG4gICAgICB9KTtcbiAgfSBlbHNlIGlmIChpc0NhY2hlSXRlbUtleShwZXJtaXNzaW9uLml0ZW0pKSB7XG4gICAgdmFsaWRhdGVDYWNoZUtleU9yUHJlZml4KHBlcm1pc3Npb24uaXRlbS5rZXkpO1xuICAgIGdycGNQZXJtaXNzaW9uLml0ZW1fc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlSXRlbVNlbGVjdG9yKHtcbiAgICAgICAga2V5OiBjb252ZXJ0KHBlcm1pc3Npb24uaXRlbS5rZXkpLFxuICAgICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNDYWNoZUl0ZW1LZXlQcmVmaXgocGVybWlzc2lvbi5pdGVtKSkge1xuICAgIHZhbGlkYXRlQ2FjaGVLZXlPclByZWZpeChwZXJtaXNzaW9uLml0ZW0ua2V5UHJlZml4KTtcbiAgICBncnBjUGVybWlzc2lvbi5pdGVtX3NlbGVjdG9yID1cbiAgICAgIG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZUl0ZW1TZWxlY3Rvcih7XG4gICAgICAgIGtleV9wcmVmaXg6IGNvbnZlcnQocGVybWlzc2lvbi5pdGVtLmtleVByZWZpeCksXG4gICAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5yZWNvZ25pemVkIGNhY2hlIGl0ZW0gc3BlY2lmaWNhdGlvbiBpbiBjYWNoZSBwZXJtaXNzaW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBwZXJtaXNzaW9uXG4gICAgICApfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gY2FjaGVQZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgcGVybWlzc2lvbjogQ2FjaGVQZXJtaXNzaW9uXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zIHtcbiAgbGV0IGdycGNQZXJtaXNzaW9uID1cbiAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9ucygpO1xuICBncnBjUGVybWlzc2lvbiA9IGFzc2lnbkNhY2hlUm9sZShwZXJtaXNzaW9uLCBncnBjUGVybWlzc2lvbik7XG4gIGdycGNQZXJtaXNzaW9uID0gYXNzaWduQ2FjaGVTZWxlY3RvcihwZXJtaXNzaW9uLCBncnBjUGVybWlzc2lvbik7XG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gZGlzcG9zYWJsZVRva2VuUGVybWlzc2lvblRvR3JwY1Blcm1pc3Npb24oXG4gIHBlcm1pc3Npb246IERpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvblxuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUge1xuICBjb25zdCByZXN1bHQgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUoKTtcbiAgaWYgKGlzRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgcmVzdWx0LmNhY2hlX3Blcm1pc3Npb25zID0gZGlzcG9zYWJsZUNhY2hlUGVybWlzc2lvblRvR3JwY1Blcm1pc3Npb24oXG4gICAgICBhc0Rpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvbihwZXJtaXNzaW9uKVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYFVucmVjb2duaXplZCB0b2tlbiBwZXJtaXNzaW9uOiAke0pTT04uc3RyaW5naWZ5KHBlcm1pc3Npb24pfWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gZGlzcG9zYWJsZUNhY2hlUGVybWlzc2lvblRvR3JwY1Blcm1pc3Npb24oXG4gIHBlcm1pc3Npb246IERpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvblxuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9ucyB7XG4gIGxldCBncnBjUGVybWlzc2lvbiA9XG4gICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlUGVybWlzc2lvbnMoKTtcbiAgZ3JwY1Blcm1pc3Npb24gPSBhc3NpZ25DYWNoZVJvbGUocGVybWlzc2lvbiwgZ3JwY1Blcm1pc3Npb24pO1xuICBncnBjUGVybWlzc2lvbiA9IGFzc2lnbkNhY2hlU2VsZWN0b3IocGVybWlzc2lvbiwgZ3JwY1Blcm1pc3Npb24pO1xuICBncnBjUGVybWlzc2lvbiA9IGFzc2lnbkNhY2hlSXRlbVNlbGVjdG9yKHBlcm1pc3Npb24sIGdycGNQZXJtaXNzaW9uKTtcblxuICByZXR1cm4gZ3JwY1Blcm1pc3Npb247XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtYXV0aC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvaW50ZXJuYWwtYXV0aC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQXVEO0FBQ3ZELElBQU8sUUFBUSxHQUFHLHNCQUFJLENBQUMsSUFBSSxDQUFDO0FBQzVCLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsMkNBQThEO0FBQzlELHFEQUEyQztBQUMzQyxxRkFBNkU7QUFDN0UsdUVBTXFEO0FBQ3JELElBQU8sS0FBSyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUM7QUFDdkQsSUFBTyxPQUFPLEdBQUcsUUFBUSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztBQUMzRCxrREFzQjZCO0FBRzdCLGdHQVFtRTtBQUNuRSwyRkFBdUY7QUFDdkYsbUNBQWdDO0FBQ2hDLDRHQU95RTtBQUV6RSxNQUFhLGtCQUFrQjtJQVM3QixZQUFZLEtBQXNCOztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxvREFBdUIsQ0FDeEQsTUFBQSxLQUFLLENBQUMsYUFBYSxtQ0FBSSxLQUFLLENBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUN0QyxNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxzQkFBTyxFQUFFLENBQUM7WUFDN0MsSUFBSSw0QkFBTSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixJQUFJLCtDQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLHdCQUF3QixFQUFFO1lBQ2pFLElBQUEscURBQXdCLEVBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENB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ZSxFQUFFLENBQUM7SUFDekQsSUFBSSxJQUFBLHlEQUFnQyxFQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ2hELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyx5Q0FBeUMsQ0FDbEUsSUFBQSx5REFBZ0MsRUFBQyxVQUFVLENBQUMsQ0FDN0MsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGtDQUFrQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQy9ELENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyx5Q0FBeUMsQ0FDaEQsVUFBMEM7SUFFMUMsSUFBSSxjQUFjLEdBQ2hCLElBQUksd0NBQW1CLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDN0QsY0FBYyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsY0FBYyxHQUFHLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRSxjQUFjLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRXJFLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2F1dGgsIHRva2VufSBmcm9tICdAZ29tb21lbnRvL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQgZ3JwY0F1dGggPSBhdXRoLmF1dGg7XG5pbXBvcnQge0hlYWRlciwgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcn0gZnJvbSAnLi9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9jbGllbnQtdGltZW91dC1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NoYW5uZWxDcmVkZW50aWFscywgSW50ZXJjZXB0b3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHt2ZXJzaW9ufSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHtDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vZXJyb3JzL2NhY2hlLXNlcnZpY2UtZXJyb3ItbWFwcGVyJztcbmltcG9ydCB7XG4gIEludGVybmFsU3VwZXJVc2VyUGVybWlzc2lvbnMsXG4gIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuRXhwaXJ5LFxuICB2YWxpZGF0ZVZhbGlkRm9yU2Vjb25kcyxcbiAgdmFsaWRhdGVDYWNoZUtleU9yUHJlZml4LFxuICB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlblRva2VuSUQsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IE5ldmVyID0gZ3JwY0F1dGguX0dlbmVyYXRlQXBpVG9rZW5SZXF1ZXN0Lk5ldmVyO1xuaW1wb3J0IEV4cGlyZXMgPSBncnBjQXV0aC5fR2VuZXJhdGVBcGlUb2tlblJlcXVlc3QuRXhwaXJlcztcbmltcG9ydCB7XG4gIEV4cGlyZXNJbixcbiAgRXhwaXJlc0F0LFxuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIFJlZnJlc2hBcGlLZXksXG4gIEdlbmVyYXRlQXBpS2V5LFxuICBQZXJtaXNzaW9uU2NvcGUsXG4gIFBlcm1pc3Npb25zLFxuICBQZXJtaXNzaW9uLFxuICBUb3BpY1Blcm1pc3Npb24sXG4gIENhY2hlUGVybWlzc2lvbixcbiAgVG9waWNSb2xlLFxuICBDYWNoZVJvbGUsXG4gIEFsbENhY2hlcyxcbiAgQWxsVG9waWNzLFxuICBpc0NhY2hlTmFtZSxcbiAgaXNUb3BpY05hbWUsXG4gIEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLFxuICBBbGxDYWNoZUl0ZW1zLFxuICBpc0NhY2hlSXRlbUtleSxcbiAgaXNDYWNoZUl0ZW1LZXlQcmVmaXgsXG4gIERpc3Bvc2FibGVUb2tlblNjb3BlLFxufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlJztcbmltcG9ydCB7SUF1dGhDbGllbnR9IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvY2xpZW50cyc7XG5pbXBvcnQge0F1dGhDbGllbnRQcm9wc30gZnJvbSAnLi4vYXV0aC1jbGllbnQtcHJvcHMnO1xuaW1wb3J0IHtcbiAgYXNDYWNoZVBlcm1pc3Npb24sXG4gIGFzUGVybWlzc2lvbnNPYmplY3QsXG4gIGFzVG9waWNQZXJtaXNzaW9uLFxuICBpc0NhY2hlUGVybWlzc2lvbixcbiAgaXNQZXJtaXNzaW9uc09iamVjdCxcbiAgaXNUb3BpY1Blcm1pc3Npb24sXG4gIFByZWRlZmluZWRTY29wZSxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9hdXRoL3Rva2Vucy9wZXJtaXNzaW9uLXNjb3BlJztcbmltcG9ydCB7cGVybWlzc2lvbl9tZXNzYWdlc30gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMvZGlzdC9wZXJtaXNzaW9ubWVzc2FnZXMnO1xuaW1wb3J0IHtjb252ZXJ0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIGFzRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uLFxuICBhc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25zT2JqZWN0LFxuICBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24sXG4gIERpc3Bvc2FibGVUb2tlblByb3BzLFxuICBpc0Rpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvbixcbiAgaXNEaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uc09iamVjdCxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9hdXRoL3Rva2Vucy9kaXNwb3NhYmxlLXRva2VuLXNjb3BlJztcblxuZXhwb3J0IGNsYXNzIEludGVybmFsQXV0aENsaWVudCBpbXBsZW1lbnRzIElBdXRoQ2xpZW50IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUkVRVUVTVF9USU1FT1VUX01TOiBudW1iZXIgPSA2MCAqIDEwMDA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3JlZHM6IENyZWRlbnRpYWxQcm92aWRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHRvcnM6IEludGVyY2VwdG9yW107XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5DbGllbnQ6IHRva2VuLnRva2VuLlRva2VuQ2xpZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhDbGllbnQ6IGdycGNBdXRoLkF1dGhDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEF1dGhDbGllbnRQcm9wcykge1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBuZXcgQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIoXG4gICAgICBwcm9wcy50aHJvd09uRXJyb3JzID8/IGZhbHNlXG4gICAgKTtcbiAgICB0aGlzLmNyZWRzID0gcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBuZXcgSGVhZGVyKCdBZ2VudCcsIGBub2RlanM6YXV0aDoke3ZlcnNpb259YCksXG4gICAgICBuZXcgSGVhZGVyKCdSdW50aW1lLVZlcnNpb24nLCBgbm9kZWpzOiR7cHJvY2Vzcy52ZXJzaW9ucy5ub2RlfWApLFxuICAgIF07XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSBbXG4gICAgICBuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKSxcbiAgICAgIENsaWVudFRpbWVvdXRJbnRlcmNlcHRvcihJbnRlcm5hbEF1dGhDbGllbnQuUkVRVUVTVF9USU1FT1VUX01TKSxcbiAgICBdO1xuICAgIHRoaXMudG9rZW5DbGllbnQgPSBuZXcgdG9rZW4udG9rZW4uVG9rZW5DbGllbnQoXG4gICAgICB0aGlzLmNyZWRzLmdldFRva2VuRW5kcG9pbnQoKSxcbiAgICAgIHRoaXMuY3JlZHMuaXNUb2tlbkVuZHBvaW50U2VjdXJlKClcbiAgICAgICAgPyBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlU3NsKClcbiAgICAgICAgOiBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKVxuICAgICk7XG4gICAgdGhpcy5hdXRoQ2xpZW50ID0gbmV3IGdycGNBdXRoLkF1dGhDbGllbnQoXG4gICAgICB0aGlzLmNyZWRzLmdldENvbnRyb2xFbmRwb2ludCgpLFxuICAgICAgdGhpcy5jcmVkcy5pc1Rva2VuRW5kcG9pbnRTZWN1cmUoKVxuICAgICAgICA/IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVTc2woKVxuICAgICAgICA6IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZUFwaUtleShcbiAgICBzY29wZTogUGVybWlzc2lvblNjb3BlLFxuICAgIGV4cGlyZXNJbjogRXhwaXJlc0luXG4gICk6IFByb21pc2U8R2VuZXJhdGVBcGlLZXkuUmVzcG9uc2U+IHtcbiAgICBsZXQgcGVybWlzc2lvbnM7XG4gICAgdHJ5IHtcbiAgICAgIHBlcm1pc3Npb25zID0gcGVybWlzc2lvbnNGcm9tVG9rZW5TY29wZShzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBHZW5lcmF0ZUFwaUtleS5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNBdXRoLl9HZW5lcmF0ZUFwaVRva2VuUmVxdWVzdCh7XG4gICAgICBhdXRoX3Rva2VuOiB0aGlzLmNyZWRzLmdldEF1dGhUb2tlbigpLFxuICAgICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKGV4cGlyZXNJbi5kb2VzRXhwaXJlKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbGlkYXRlVmFsaWRGb3JTZWNvbmRzKGV4cGlyZXNJbi5zZWNvbmRzKCkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgICAgZXJyID0+IG5ldyBHZW5lcmF0ZUFwaUtleS5FcnJvcihlcnIpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3QuZXhwaXJlcyA9IG5ldyBFeHBpcmVzKHtcbiAgICAgICAgdmFsaWRfZm9yX3NlY29uZHM6IGV4cGlyZXNJbi5zZWNvbmRzKCksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5uZXZlciA9IG5ldyBOZXZlcigpO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxHZW5lcmF0ZUFwaUtleS5SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5hdXRoQ2xpZW50LkdlbmVyYXRlQXBpVG9rZW4oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgR2VuZXJhdGVBcGlLZXkuRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICBuZXcgR2VuZXJhdGVBcGlLZXkuU3VjY2VzcyhcbiAgICAgICAgICAgICAgICByZXNwLmFwaV9rZXksXG4gICAgICAgICAgICAgICAgcmVzcC5yZWZyZXNoX3Rva2VuLFxuICAgICAgICAgICAgICAgIHJlc3AuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgRXhwaXJlc0F0LmZyb21FcG9jaChyZXNwLnZhbGlkX3VudGlsKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIGBnZW5lcmF0ZUFwaUtleWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlQXV0aFRva2VuKFxuICAgIHNjb3BlOiBQZXJtaXNzaW9uU2NvcGUsXG4gICAgZXhwaXJlc0luOiBFeHBpcmVzSW5cbiAgKTogUHJvbWlzZTxHZW5lcmF0ZUFwaUtleS5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQXBpS2V5KHNjb3BlLCBleHBpcmVzSW4pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hBcGlLZXkoXG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxSZWZyZXNoQXBpS2V5LlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjQXV0aC5fUmVmcmVzaEFwaVRva2VuUmVxdWVzdCh7XG4gICAgICBhcGlfa2V5OiB0aGlzLmNyZWRzLmdldEF1dGhUb2tlbigpLFxuICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPFJlZnJlc2hBcGlLZXkuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuYXV0aENsaWVudC5SZWZyZXNoQXBpVG9rZW4oXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgUmVmcmVzaEFwaUtleS5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICAgIG5ldyBSZWZyZXNoQXBpS2V5LlN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgcmVzcC5hcGlfa2V5LFxuICAgICAgICAgICAgICAgIHJlc3AucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgICAgICByZXNwLmVuZHBvaW50LFxuICAgICAgICAgICAgICAgIEV4cGlyZXNBdC5mcm9tRXBvY2gocmVzcC52YWxpZF91bnRpbClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBgcmVmcmVzaEFwaUtleWAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIHJlZnJlc2hBdXRoVG9rZW4oXG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxSZWZyZXNoQXBpS2V5LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaEFwaUtleShyZWZyZXNoVG9rZW4pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlRGlzcG9zYWJsZVRva2VuKFxuICAgIHNjb3BlOiBEaXNwb3NhYmxlVG9rZW5TY29wZSxcbiAgICBleHBpcmVzSW46IEV4cGlyZXNJbixcbiAgICBkaXNwb3NhYmxlVG9rZW5Qcm9wcz86IERpc3Bvc2FibGVUb2tlblByb3BzXG4gICk6IFByb21pc2U8R2VuZXJhdGVEaXNwb3NhYmxlVG9rZW4uUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVEaXNwb3NhYmxlVG9rZW5FeHBpcnkoZXhwaXJlc0luKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGV4cGlyZXMgPSBuZXcgdG9rZW4udG9rZW4uX0dlbmVyYXRlRGlzcG9zYWJsZVRva2VuUmVxdWVzdC5FeHBpcmVzKHtcbiAgICAgIHZhbGlkX2Zvcl9zZWNvbmRzOiBleHBpcmVzSW4uc2Vjb25kcygpLFxuICAgIH0pO1xuXG4gICAgbGV0IHBlcm1pc3Npb25zO1xuICAgIHRyeSB7XG4gICAgICBwZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zRnJvbURpc3Bvc2FibGVUb2tlblNjb3BlKHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5JZCA9IGRpc3Bvc2FibGVUb2tlblByb3BzPy50b2tlbklkO1xuICAgIGlmICh0b2tlbklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuVG9rZW5JRCh0b2tlbklkKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICAgIGVyciA9PiBuZXcgR2VuZXJhdGVEaXNwb3NhYmxlVG9rZW4uRXJyb3IoZXJyKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgdG9rZW4udG9rZW4uX0dlbmVyYXRlRGlzcG9zYWJsZVRva2VuUmVxdWVzdCh7XG4gICAgICBleHBpcmVzOiBleHBpcmVzLFxuICAgICAgYXV0aF90b2tlbjogdGhpcy5jcmVkcy5nZXRBdXRoVG9rZW4oKSxcbiAgICAgIHBlcm1pc3Npb25zOiBwZXJtaXNzaW9ucyxcbiAgICAgIHRva2VuX2lkOiB0b2tlbklkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPEdlbmVyYXRlRGlzcG9zYWJsZVRva2VuLlJlc3BvbnNlPihcbiAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy50b2tlbkNsaWVudC5HZW5lcmF0ZURpc3Bvc2FibGVUb2tlbihcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSxcbiAgICAgICAgICAoZXJyLCByZXNwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT5cbiAgICAgICAgICAgICAgICAgIG5ldyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbi5FcnJvcihlKSxcbiAgICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICAgIG5ldyBHZW5lcmF0ZURpc3Bvc2FibGVUb2tlbi5TdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgcmVzcC5hcGlfa2V5LFxuICAgICAgICAgICAgICAgICAgcmVzcC5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgIEV4cGlyZXNBdC5mcm9tRXBvY2gocmVzcC52YWxpZF91bnRpbClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zRnJvbVRva2VuU2NvcGUoXG4gIHNjb3BlOiBQZXJtaXNzaW9uU2NvcGVcbik6IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnMge1xuICBjb25zdCByZXN1bHQgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9ucygpO1xuICBpZiAoc2NvcGUgaW5zdGFuY2VvZiBJbnRlcm5hbFN1cGVyVXNlclBlcm1pc3Npb25zKSB7XG4gICAgcmVzdWx0LnN1cGVyX3VzZXIgPSBwZXJtaXNzaW9uX21lc3NhZ2VzLlN1cGVyVXNlclBlcm1pc3Npb25zLlN1cGVyVXNlcjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgaWYgKGlzUGVybWlzc2lvbnNPYmplY3Qoc2NvcGUpKSB7XG4gICAgY29uc3Qgc2NvcGVQZXJtaXNzaW9uczogUGVybWlzc2lvbnMgPSBhc1Blcm1pc3Npb25zT2JqZWN0KHNjb3BlKTtcbiAgICBjb25zdCBleHBsaWNpdFBlcm1pc3Npb25zID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuRXhwbGljaXRQZXJtaXNzaW9ucygpO1xuICAgIGV4cGxpY2l0UGVybWlzc2lvbnMucGVybWlzc2lvbnMgPSBzY29wZVBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+XG4gICAgICB0b2tlblBlcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKHApXG4gICAgKTtcbiAgICByZXN1bHQuZXhwbGljaXQgPSBleHBsaWNpdFBlcm1pc3Npb25zO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdG9rZW4gc2NvcGU6ICR7SlNPTi5zdHJpbmdpZnkoc2NvcGUpfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzc2lvbnNGcm9tRGlzcG9zYWJsZVRva2VuU2NvcGUoXG4gIHNjb3BlOiBEaXNwb3NhYmxlVG9rZW5TY29wZVxuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9ucyB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zKCk7XG4gIGlmIChcbiAgICAhKHNjb3BlIGluc3RhbmNlb2YgUHJlZGVmaW5lZFNjb3BlKSAmJlxuICAgIGlzRGlzcG9zYWJsZVRva2VuUGVybWlzc2lvbnNPYmplY3Qoc2NvcGUpXG4gICkge1xuICAgIGNvbnN0IHNjb3BlUGVybWlzc2lvbnMgPSBhc0Rpc3Bvc2FibGVUb2tlblBlcm1pc3Npb25zT2JqZWN0KHNjb3BlKTtcbiAgICBjb25zdCBleHBsaWNpdFBlcm1pc3Npb25zID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuRXhwbGljaXRQZXJtaXNzaW9ucygpO1xuICAgIGV4cGxpY2l0UGVybWlzc2lvbnMucGVybWlzc2lvbnMgPSBzY29wZVBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+XG4gICAgICBkaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihwKVxuICAgICk7XG4gICAgcmVzdWx0LmV4cGxpY2l0ID0gZXhwbGljaXRQZXJtaXNzaW9ucztcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgaWYgKGlzUGVybWlzc2lvbnNPYmplY3Qoc2NvcGUpKSB7XG4gICAgY29uc3Qgc2NvcGVQZXJtaXNzaW9uczogUGVybWlzc2lvbnMgPSBhc1Blcm1pc3Npb25zT2JqZWN0KHNjb3BlKTtcbiAgICBjb25zdCBleHBsaWNpdFBlcm1pc3Npb25zID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuRXhwbGljaXRQZXJtaXNzaW9ucygpO1xuICAgIGV4cGxpY2l0UGVybWlzc2lvbnMucGVybWlzc2lvbnMgPSBzY29wZVBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+XG4gICAgICB0b2tlblBlcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKHApXG4gICAgKTtcbiAgICByZXN1bHQuZXhwbGljaXQgPSBleHBsaWNpdFBlcm1pc3Npb25zO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdG9rZW4gc2NvcGU6ICR7SlNPTi5zdHJpbmdpZnkoc2NvcGUpfWApO1xufVxuXG5mdW5jdGlvbiB0b2tlblBlcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKFxuICBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZSgpO1xuICBpZiAoaXNUb3BpY1Blcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICByZXN1bHQudG9waWNfcGVybWlzc2lvbnMgPSB0b3BpY1Blcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKFxuICAgICAgYXNUb3BpY1Blcm1pc3Npb24ocGVybWlzc2lvbilcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBpZiAoaXNDYWNoZVBlcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICByZXN1bHQuY2FjaGVfcGVybWlzc2lvbnMgPSBjYWNoZVBlcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKFxuICAgICAgYXNDYWNoZVBlcm1pc3Npb24ocGVybWlzc2lvbilcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBVbnJlY29nbml6ZWQgdG9rZW4gcGVybWlzc2lvbjogJHtKU09OLnN0cmluZ2lmeShwZXJtaXNzaW9uKX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvcGljUGVybWlzc2lvblRvR3JwY1Blcm1pc3Npb24oXG4gIHBlcm1pc3Npb246IFRvcGljUGVybWlzc2lvblxuKTogcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuVG9waWNQZXJtaXNzaW9ucyB7XG4gIGNvbnN0IGdycGNQZXJtaXNzaW9uID1cbiAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuVG9waWNQZXJtaXNzaW9ucygpO1xuICBzd2l0Y2ggKHBlcm1pc3Npb24ucm9sZSkge1xuICAgIGNhc2UgVG9waWNSb2xlLlB1Ymxpc2hTdWJzY3JpYmU6IHtcbiAgICAgIGdycGNQZXJtaXNzaW9uLnJvbGUgPSBwZXJtaXNzaW9uX21lc3NhZ2VzLlRvcGljUm9sZS5Ub3BpY1JlYWRXcml0ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFRvcGljUm9sZS5TdWJzY3JpYmVPbmx5OiB7XG4gICAgICBncnBjUGVybWlzc2lvbi5yb2xlID0gcGVybWlzc2lvbl9tZXNzYWdlcy5Ub3BpY1JvbGUuVG9waWNSZWFkT25seTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFRvcGljUm9sZS5QdWJsaXNoT25seToge1xuICAgICAgZ3JwY1Blcm1pc3Npb24ucm9sZSA9IHBlcm1pc3Npb25fbWVzc2FnZXMuVG9waWNSb2xlLlRvcGljV3JpdGVPbmx5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIHRvcGljIHJvbGU6ICR7SlNPTi5zdHJpbmdpZnkocGVybWlzc2lvbil9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBlcm1pc3Npb24uY2FjaGUgPT09IEFsbENhY2hlcykge1xuICAgIGdycGNQZXJtaXNzaW9uLmFsbF9jYWNoZXMgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQWxsKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHBlcm1pc3Npb24uY2FjaGUgPT09ICdzdHJpbmcnKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uY2FjaGVfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlU2VsZWN0b3Ioe1xuICAgICAgICBjYWNoZV9uYW1lOiBwZXJtaXNzaW9uLmNhY2hlLFxuICAgICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNDYWNoZU5hbWUocGVybWlzc2lvbi5jYWNoZSkpIHtcbiAgICBncnBjUGVybWlzc2lvbi5jYWNoZV9zZWxlY3RvciA9XG4gICAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVTZWxlY3Rvcih7XG4gICAgICAgIGNhY2hlX25hbWU6IHBlcm1pc3Npb24uY2FjaGUubmFtZSxcbiAgICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbnJlY29nbml6ZWQgY2FjaGUgc3BlY2lmaWNhdGlvbiBpbiB0b3BpYyBwZXJtaXNzaW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBwZXJtaXNzaW9uXG4gICAgICApfWBcbiAgICApO1xuICB9XG5cbiAgaWYgKHBlcm1pc3Npb24udG9waWMgPT09IEFsbFRvcGljcykge1xuICAgIGdycGNQZXJtaXNzaW9uLmFsbF90b3BpY3MgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQWxsKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHBlcm1pc3Npb24udG9waWMgPT09ICdzdHJpbmcnKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24udG9waWNfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLlRvcGljU2VsZWN0b3Ioe1xuICAgICAgICB0b3BpY19uYW1lOiBwZXJtaXNzaW9uLnRvcGljLFxuICAgICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNUb3BpY05hbWUocGVybWlzc2lvbi50b3BpYykpIHtcbiAgICBncnBjUGVybWlzc2lvbi50b3BpY19zZWxlY3RvciA9XG4gICAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuVG9waWNTZWxlY3Rvcih7XG4gICAgICAgIHRvcGljX25hbWU6IHBlcm1pc3Npb24udG9waWMubmFtZSxcbiAgICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbnJlY29nbml6ZWQgdG9waWMgc3BlY2lmaWNhdGlvbiBpbiB0b3BpYyBwZXJtaXNzaW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBwZXJtaXNzaW9uXG4gICAgICApfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ2FjaGVSb2xlKFxuICBwZXJtaXNzaW9uOiBDYWNoZVBlcm1pc3Npb24gfCBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24sXG4gIGdycGNQZXJtaXNzaW9uOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zIHtcbiAgc3dpdGNoIChwZXJtaXNzaW9uLnJvbGUpIHtcbiAgICBjYXNlIENhY2hlUm9sZS5SZWFkV3JpdGU6IHtcbiAgICAgIGdycGNQZXJtaXNzaW9uLnJvbGUgPSBwZXJtaXNzaW9uX21lc3NhZ2VzLkNhY2hlUm9sZS5DYWNoZVJlYWRXcml0ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENhY2hlUm9sZS5SZWFkT25seToge1xuICAgICAgZ3JwY1Blcm1pc3Npb24ucm9sZSA9IHBlcm1pc3Npb25fbWVzc2FnZXMuQ2FjaGVSb2xlLkNhY2hlUmVhZE9ubHk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDYWNoZVJvbGUuV3JpdGVPbmx5OiB7XG4gICAgICBncnBjUGVybWlzc2lvbi5yb2xlID0gcGVybWlzc2lvbl9tZXNzYWdlcy5DYWNoZVJvbGUuQ2FjaGVXcml0ZU9ubHk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgY2FjaGUgcm9sZTogJHtKU09OLnN0cmluZ2lmeShwZXJtaXNzaW9uKX1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdycGNQZXJtaXNzaW9uO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25DYWNoZVNlbGVjdG9yKFxuICBwZXJtaXNzaW9uOiBDYWNoZVBlcm1pc3Npb24gfCBEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24sXG4gIGdycGNQZXJtaXNzaW9uOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zIHtcbiAgaWYgKHBlcm1pc3Npb24uY2FjaGUgPT09IEFsbENhY2hlcykge1xuICAgIGdycGNQZXJtaXNzaW9uLmFsbF9jYWNoZXMgPSBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQWxsKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHBlcm1pc3Npb24uY2FjaGUgPT09ICdzdHJpbmcnKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uY2FjaGVfc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlU2VsZWN0b3Ioe1xuICAgICAgICBjYWNoZV9uYW1lOiBwZXJtaXNzaW9uLmNhY2hlLFxuICAgICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNDYWNoZU5hbWUocGVybWlzc2lvbi5jYWNoZSkpIHtcbiAgICBncnBjUGVybWlzc2lvbi5jYWNoZV9zZWxlY3RvciA9XG4gICAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVTZWxlY3Rvcih7XG4gICAgICAgIGNhY2hlX25hbWU6IHBlcm1pc3Npb24uY2FjaGUubmFtZSxcbiAgICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbnJlY29nbml6ZWQgY2FjaGUgc3BlY2lmaWNhdGlvbiBpbiBjYWNoZSBwZXJtaXNzaW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBwZXJtaXNzaW9uXG4gICAgICApfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ2FjaGVJdGVtU2VsZWN0b3IoXG4gIHBlcm1pc3Npb246IERpc3Bvc2FibGVUb2tlbkNhY2hlUGVybWlzc2lvbixcbiAgZ3JwY1Blcm1pc3Npb246IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlUGVybWlzc2lvbnNcbik6IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlUGVybWlzc2lvbnMge1xuICBpZiAocGVybWlzc2lvbi5pdGVtID09PSBBbGxDYWNoZUl0ZW1zKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uYWxsX2l0ZW1zID0gbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkFsbCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwZXJtaXNzaW9uLml0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgZ3JwY1Blcm1pc3Npb24uaXRlbV9zZWxlY3RvciA9XG4gICAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVJdGVtU2VsZWN0b3Ioe1xuICAgICAgICBrZXk6IGNvbnZlcnQocGVybWlzc2lvbi5pdGVtKSxcbiAgICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQ2FjaGVJdGVtS2V5KHBlcm1pc3Npb24uaXRlbSkpIHtcbiAgICB2YWxpZGF0ZUNhY2hlS2V5T3JQcmVmaXgocGVybWlzc2lvbi5pdGVtLmtleSk7XG4gICAgZ3JwY1Blcm1pc3Npb24uaXRlbV9zZWxlY3RvciA9XG4gICAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVJdGVtU2VsZWN0b3Ioe1xuICAgICAgICBrZXk6IGNvbnZlcnQocGVybWlzc2lvbi5pdGVtLmtleSksXG4gICAgICB9KTtcbiAgfSBlbHNlIGlmIChpc0NhY2hlSXRlbUtleVByZWZpeChwZXJtaXNzaW9uLml0ZW0pKSB7XG4gICAgdmFsaWRhdGVDYWNoZUtleU9yUHJlZml4KHBlcm1pc3Npb24uaXRlbS5rZXlQcmVmaXgpO1xuICAgIGdycGNQZXJtaXNzaW9uLml0ZW1fc2VsZWN0b3IgPVxuICAgICAgbmV3IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlSXRlbVNlbGVjdG9yKHtcbiAgICAgICAga2V5X3ByZWZpeDogY29udmVydChwZXJtaXNzaW9uLml0ZW0ua2V5UHJlZml4KSxcbiAgICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbnJlY29nbml6ZWQgY2FjaGUgaXRlbSBzcGVjaWZpY2F0aW9uIGluIGNhY2hlIHBlcm1pc3Npb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHBlcm1pc3Npb25cbiAgICAgICl9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGdycGNQZXJtaXNzaW9uO1xufVxuXG5mdW5jdGlvbiBjYWNoZVBlcm1pc3Npb25Ub0dycGNQZXJtaXNzaW9uKFxuICBwZXJtaXNzaW9uOiBDYWNoZVBlcm1pc3Npb25cbik6IHBlcm1pc3Npb25fbWVzc2FnZXMuUGVybWlzc2lvbnNUeXBlLkNhY2hlUGVybWlzc2lvbnMge1xuICBsZXQgZ3JwY1Blcm1pc3Npb24gPVxuICAgIG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zKCk7XG4gIGdycGNQZXJtaXNzaW9uID0gYXNzaWduQ2FjaGVSb2xlKHBlcm1pc3Npb24sIGdycGNQZXJtaXNzaW9uKTtcbiAgZ3JwY1Blcm1pc3Npb24gPSBhc3NpZ25DYWNoZVNlbGVjdG9yKHBlcm1pc3Npb24sIGdycGNQZXJtaXNzaW9uKTtcbiAgcmV0dXJuIGdycGNQZXJtaXNzaW9uO1xufVxuXG5mdW5jdGlvbiBkaXNwb3NhYmxlVG9rZW5QZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgcGVybWlzc2lvbjogRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZSgpO1xuICBpZiAoaXNEaXNwb3NhYmxlVG9rZW5DYWNoZVBlcm1pc3Npb24ocGVybWlzc2lvbikpIHtcbiAgICByZXN1bHQuY2FjaGVfcGVybWlzc2lvbnMgPSBkaXNwb3NhYmxlQ2FjaGVQZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgICAgIGFzRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uKHBlcm1pc3Npb24pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgVW5yZWNvZ25pemVkIHRva2VuIHBlcm1pc3Npb246ICR7SlNPTi5zdHJpbmdpZnkocGVybWlzc2lvbil9YFxuICApO1xufVxuXG5mdW5jdGlvbiBkaXNwb3NhYmxlQ2FjaGVQZXJtaXNzaW9uVG9HcnBjUGVybWlzc2lvbihcbiAgcGVybWlzc2lvbjogRGlzcG9zYWJsZVRva2VuQ2FjaGVQZXJtaXNzaW9uXG4pOiBwZXJtaXNzaW9uX21lc3NhZ2VzLlBlcm1pc3Npb25zVHlwZS5DYWNoZVBlcm1pc3Npb25zIHtcbiAgbGV0IGdycGNQZXJtaXNzaW9uID1cbiAgICBuZXcgcGVybWlzc2lvbl9tZXNzYWdlcy5QZXJtaXNzaW9uc1R5cGUuQ2FjaGVQZXJtaXNzaW9ucygpO1xuICBncnBjUGVybWlzc2lvbiA9IGFzc2lnbkNhY2hlUm9sZShwZXJtaXNzaW9uLCBncnBjUGVybWlzc2lvbik7XG4gIGdycGNQZXJtaXNzaW9uID0gYXNzaWduQ2FjaGVTZWxlY3RvcihwZXJtaXNzaW9uLCBncnBjUGVybWlzc2lvbik7XG4gIGdycGNQZXJtaXNzaW9uID0gYXNzaWduQ2FjaGVJdGVtU2VsZWN0b3IocGVybWlzc2lvbiwgZ3JwY1Blcm1pc3Npb24pO1xuXG4gIHJldHVybiBncnBjUGVybWlzc2lvbjtcbn1cbiJdfQ==

@@ -66,3 +66,4 @@ "use strict";

new headers_interceptor_1.Header('Authorization', this.credentialProvider.getAuthToken()),
new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`),
new headers_interceptor_1.Header('Agent', `nodejs:leaderboard:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];

@@ -371,2 +372,2 @@ return [

exports.LeaderboardDataClient = LeaderboardDataClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZGVyYm9hcmQtZGF0YS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvbGVhZGVyYm9hcmQtZGF0YS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBVzZCO0FBQzdCLHVFQU9xRDtBQUVyRCw2RUFBd0U7QUFDeEUsSUFBTyxRQUFRLEdBQUcseUJBQVcsQ0FBQyxRQUFRLENBQUM7QUFDdkMsOEVBQXNFO0FBRXRFLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLDJDQUt1QjtBQUN2QixxREFBMkM7QUFHM0MsNEVBQXNFO0FBS3RFLHNFQUE2RTtBQUM3RSxtRUFBOEQ7QUFFakQsUUFBQSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEQsTUFBYSxxQkFBcUI7SUFVaEM7OztPQUdHO0lBQ0gsWUFBWSxLQUF1QyxFQUFFLFlBQW9CO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxvREFBdUIsQ0FDeEQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUN2QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDbEMsb0JBQW9CLEVBQUU7YUFDdEIsYUFBYSxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZ0JB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Q0FBQztRQUM5RCxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFqakJELHNEQWlqQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBMZWFkZXJib2FyZERlbGV0ZSxcbiAgTGVhZGVyYm9hcmRGZXRjaCxcbiAgTGVhZGVyYm9hcmRMZW5ndGgsXG4gIExlYWRlcmJvYXJkUmVtb3ZlRWxlbWVudHMsXG4gIExlYWRlcmJvYXJkVXBzZXJ0LFxuICBNb21lbnRvTG9nZ2VyLFxuICBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgTGVhZGVyYm9hcmRPcmRlcixcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZSc7XG5pbXBvcnQge1xuICB2YWxpZGF0ZUxlYWRlcmJvYXJkTnVtYmVyT2ZFbGVtZW50cyxcbiAgdmFsaWRhdGVTb3J0ZWRTZXRTY29yZXMsXG4gIHZhbGlkYXRlTGVhZGVyYm9hcmRPZmZzZXQsXG4gIHZhbGlkYXRlTGVhZGVyYm9hcmRDb3VudCxcbiAgdmFsaWRhdGVMZWFkZXJib2FyZFJhbmtzLFxuICByYW5nZSxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9pbnRlcm5hbC91dGlscyc7XG5pbXBvcnQge0xlYWRlcmJvYXJkQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vY29uZmlnL2xlYWRlcmJvYXJkLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtsZWFkZXJib2FyZH0gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMvZGlzdC9sZWFkZXJib2FyZCc7XG5pbXBvcnQgX0VsZW1lbnQgPSBsZWFkZXJib2FyZC5fRWxlbWVudDtcbmltcG9ydCB7SWRsZUdycGNDbGllbnRXcmFwcGVyfSBmcm9tICcuL2dycGMvaWRsZS1ncnBjLWNsaWVudC13cmFwcGVyJztcbmltcG9ydCB7R3JwY0NsaWVudFdyYXBwZXJ9IGZyb20gJy4vZ3JwYy9ncnBjLWNsaWVudC13cmFwcGVyJztcbmltcG9ydCB7SGVhZGVyLCBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyfSBmcm9tICcuL2dycGMvaGVhZGVycy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NsaWVudFRpbWVvdXRJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL2NsaWVudC10aW1lb3V0LWludGVyY2VwdG9yJztcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXJ9IGZyb20gJy4uL2Vycm9ycy9jYWNoZS1zZXJ2aWNlLWVycm9yLW1hcHBlcic7XG5pbXBvcnQge1xuICBDaGFubmVsQ3JlZGVudGlhbHMsXG4gIEludGVyY2VwdG9yLFxuICBNZXRhZGF0YSxcbiAgU2VydmljZUVycm9yLFxufSBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7dmVyc2lvbn0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB7SUxlYWRlcmJvYXJkRGF0YUNsaWVudH0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9pbnRlcm5hbC9jbGllbnRzL2xlYWRlcmJvYXJkL0lMZWFkZXJib2FyZERhdGFDbGllbnQnO1xuaW1wb3J0IHtMZWFkZXJib2FyZENsaWVudFByb3BzV2l0aENvbmZpZ30gZnJvbSAnLi9sZWFkZXJib2FyZC1jbGllbnQtcHJvcHMtd2l0aC1jb25maWcnO1xuaW1wb3J0IHttaWRkbGV3YXJlc0ludGVyY2VwdG9yfSBmcm9tICcuL2dycGMvbWlkZGxld2FyZXMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtcbiAgTWlkZGxld2FyZSxcbiAgTWlkZGxld2FyZVJlcXVlc3RIYW5kbGVyQ29udGV4dCxcbn0gZnJvbSAnLi4vY29uZmlnL21pZGRsZXdhcmUvbWlkZGxld2FyZSc7XG5pbXBvcnQge2dycGNDaGFubmVsT3B0aW9uc0Zyb21HcnBjQ29uZmlnfSBmcm9tICcuL2dycGMvZ3JwYy1jaGFubmVsLW9wdGlvbnMnO1xuaW1wb3J0IHtjb21tb259IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzL2Rpc3QvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IENPTk5FQ1RJT05fSURfS0VZID0gU3ltYm9sKCdjb25uZWN0aW9uSUQnKTtcblxuZXhwb3J0IGNsYXNzIExlYWRlcmJvYXJkRGF0YUNsaWVudCBpbXBsZW1lbnRzIElMZWFkZXJib2FyZERhdGFDbGllbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IExlYWRlcmJvYXJkQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXI6IENyZWRlbnRpYWxQcm92aWRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE1vbWVudG9Mb2dnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IENhY2hlU2VydmljZUVycm9yTWFwcGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RUaW1lb3V0TXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRXcmFwcGVyczogR3JwY0NsaWVudFdyYXBwZXI8bGVhZGVyYm9hcmQuTGVhZGVyYm9hcmRDbGllbnQ+W107XG4gIHByb3RlY3RlZCBuZXh0RGF0YUNsaWVudEluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJjZXB0b3JzOiBJbnRlcmNlcHRvcltdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0xlYWRlcmJvYXJkQ2xpZW50UHJvcHNXaXRoQ29uZmlnfSBwcm9wc1xuICAgKiBAcGFyYW0gZGF0YUNsaWVudElEXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogTGVhZGVyYm9hcmRDbGllbnRQcm9wc1dpdGhDb25maWcsIGRhdGFDbGllbnRJRDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gcHJvcHMuY29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyID0gbmV3IENhY2hlU2VydmljZUVycm9yTWFwcGVyKFxuICAgICAgcHJvcHMuY29uZmlndXJhdGlvbi5nZXRUaHJvd09uRXJyb3JzKClcbiAgICApO1xuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyID0gcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyO1xuICAgIHRoaXMubG9nZ2VyID0gdGhpcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKS5nZXRMb2dnZXIodGhpcyk7XG4gICAgY29uc3QgZ3JwY0NvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvblxuICAgICAgLmdldFRyYW5zcG9ydFN0cmF0ZWd5KClcbiAgICAgIC5nZXRHcnBjQ29uZmlnKCk7XG5cbiAgICB0aGlzLnJlcXVlc3RUaW1lb3V0TXMgPSBncnBjQ29uZmlnLmdldERlYWRsaW5lTWlsbGlzKCk7XG4gICAgdGhpcy52YWxpZGF0ZVJlcXVlc3RUaW1lb3V0KHRoaXMucmVxdWVzdFRpbWVvdXRNcyk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgQ3JlYXRpbmcgbGVhZGVyYm9hcmQgY2xpZW50IHVzaW5nIGVuZHBvaW50OiAnJHt0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDYWNoZUVuZHBvaW50KCl9J2BcbiAgICApO1xuXG4gICAgY29uc3QgbnVtRGF0YUNsaWVudHMgPSBncnBjQ29uZmlnLmdldE51bUNsaWVudHMoKTtcblxuICAgIC8vIFdlIHJvdW5kLXJvYmluIHRoZSByZXF1ZXN0cyB0aHJvdWdoIGFsbCBvZiBvdXIgY2xpZW50cy4gIFNpbmNlIGphdmFzY3JpcHRcbiAgICAvLyBpcyBzaW5nbGUtdGhyZWFkZWQsIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhyZWFkIHNhZmV0eSBvbiB0aGlzXG4gICAgLy8gaW5kZXggdmFyaWFibGUuXG4gICAgdGhpcy5uZXh0RGF0YUNsaWVudEluZGV4ID0gMDtcblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zID0gZ3JwY0NoYW5uZWxPcHRpb25zRnJvbUdycGNDb25maWcoZ3JwY0NvbmZpZyk7XG5cbiAgICB0aGlzLmNsaWVudFdyYXBwZXJzID0gcmFuZ2UobnVtRGF0YUNsaWVudHMpLm1hcChcbiAgICAgICgpID0+XG4gICAgICAgIG5ldyBJZGxlR3JwY0NsaWVudFdyYXBwZXIoe1xuICAgICAgICAgIGNsaWVudEZhY3RvcnlGbjogKCkgPT5cbiAgICAgICAgICAgIG5ldyBsZWFkZXJib2FyZC5MZWFkZXJib2FyZENsaWVudChcbiAgICAgICAgICAgICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0Q2FjaGVFbmRwb2ludCgpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5pc0NhY2hlRW5kcG9pbnRTZWN1cmUoKVxuICAgICAgICAgICAgICAgID8gQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpXG4gICAgICAgICAgICAgICAgOiBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKSxcbiAgICAgICAgICAgICAgY2hhbm5lbE9wdGlvbnNcbiAgICAgICAgICAgICksXG4gICAgICAgICAgbG9nZ2VyRmFjdG9yeTogdGhpcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKSxcbiAgICAgICAgICBtYXhJZGxlTWlsbGlzOiB0aGlzLmNvbmZpZ3VyYXRpb25cbiAgICAgICAgICAgIC5nZXRUcmFuc3BvcnRTdHJhdGVneSgpXG4gICAgICAgICAgICAuZ2V0TWF4SWRsZU1pbGxpcygpLFxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBjb250ZXh0OiBNaWRkbGV3YXJlUmVxdWVzdEhhbmRsZXJDb250ZXh0ID0ge307XG4gICAgY29udGV4dFtDT05ORUNUSU9OX0lEX0tFWV0gPSBkYXRhQ2xpZW50SUQ7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMgPSB0aGlzLmluaXRpYWxpemVJbnRlcmNlcHRvcnMoXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmdldE1pZGRsZXdhcmVzKCksXG4gICAgICBjb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDbG9zaW5nIGxlYWRlcmJvYXJkIGRhdGEgY2xpZW50cycpO1xuICAgIHRoaXMuY2xpZW50V3JhcHBlcnMubWFwKHdyYXBwZXIgPT4gd3JhcHBlci5nZXRDbGllbnQoKS5jbG9zZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVSZXF1ZXN0VGltZW91dCh0aW1lb3V0PzogbnVtYmVyKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFJlcXVlc3QgdGltZW91dCBtczogJHtTdHJpbmcodGltZW91dCl9YCk7XG4gICAgaWYgKHRpbWVvdXQgIT09IHVuZGVmaW5lZCAmJiB0aW1lb3V0IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgJ3JlcXVlc3QgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSW50ZXJjZXB0b3JzKFxuICAgIF9sb2dnZXJGYWN0b3J5OiBNb21lbnRvTG9nZ2VyRmFjdG9yeSxcbiAgICBtaWRkbGV3YXJlczogTWlkZGxld2FyZVtdLFxuICAgIG1pZGRsZXdhcmVSZXF1ZXN0Q29udGV4dDogTWlkZGxld2FyZVJlcXVlc3RIYW5kbGVyQ29udGV4dFxuICApOiBJbnRlcmNlcHRvcltdIHtcbiAgICBjb25zdCBoZWFkZXJzID0gW1xuICAgICAgbmV3IEhlYWRlcignQXV0aG9yaXphdGlvbicsIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyLmdldEF1dGhUb2tlbigpKSxcbiAgICAgIG5ldyBIZWFkZXIoJ0FnZW50JywgYG5vZGVqczoke3ZlcnNpb259YCksXG4gICAgXTtcbiAgICByZXR1cm4gW1xuICAgICAgbWlkZGxld2FyZXNJbnRlcmNlcHRvcihcbiAgICAgICAgX2xvZ2dlckZhY3RvcnksXG4gICAgICAgIG1pZGRsZXdhcmVzLFxuICAgICAgICBtaWRkbGV3YXJlUmVxdWVzdENvbnRleHRcbiAgICAgICksXG4gICAgICBuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKSxcbiAgICAgIENsaWVudFRpbWVvdXRJbnRlcmNlcHRvcih0aGlzLnJlcXVlc3RUaW1lb3V0TXMpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1ldGFkYXRhKGNhY2hlTmFtZTogc3RyaW5nKTogTWV0YWRhdGEge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgbWV0YWRhdGEuc2V0KCdjYWNoZScsIGNhY2hlTmFtZSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWFwT3JSZWNvcmRUb0VsZW1lbnRzTGlzdChcbiAgICBlbGVtZW50czogUmVjb3JkPG51bWJlciwgbnVtYmVyPiB8IE1hcDxudW1iZXIsIG51bWJlcj5cbiAgKTogX0VsZW1lbnRbXSB7XG4gICAgY29uc3QgY29udmVydGVkRWxlbWVudHM6IF9FbGVtZW50W10gPSBbXTtcbiAgICBpZiAoZWxlbWVudHMgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKHNjb3JlLCBpZCkgPT5cbiAgICAgICAgY29udmVydGVkRWxlbWVudHMucHVzaChuZXcgX0VsZW1lbnQoe2lkOiBpZCwgc2NvcmU6IHNjb3JlfSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3QuZW50cmllcyhlbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+XG4gICAgICAgIGNvbnZlcnRlZEVsZW1lbnRzLnB1c2goXG4gICAgICAgICAgbmV3IF9FbGVtZW50KHtpZDogTnVtYmVyKGVsZW1lbnRbMF0pLCBzY29yZTogZWxlbWVudFsxXX0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0ZWRFbGVtZW50cztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cHNlcnQoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxudW1iZXIsIG51bWJlcj4gfCBNYXA8bnVtYmVyLCBudW1iZXI+XG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRVcHNlcnQuUmVzcG9uc2U+IHtcbiAgICBjb25zdCBzaXplID1cbiAgICAgIGVsZW1lbnRzIGluc3RhbmNlb2YgTWFwID8gZWxlbWVudHMuc2l6ZSA6IE9iamVjdC5rZXlzKGVsZW1lbnRzKS5sZW5ndGg7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlTGVhZGVyYm9hcmROdW1iZXJPZkVsZW1lbnRzKHNpemUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgTGVhZGVyYm9hcmRVcHNlcnQuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICBgSXNzdWluZyAndXBzZXJ0JyByZXF1ZXN0OyBjYWNoZTogJHtjYWNoZU5hbWV9LCBsZWFkZXJib2FyZDogJHtsZWFkZXJib2FyZE5hbWV9LCBudW1iZXIgb2YgZWxlbWVudHM6ICR7c2l6ZX1gXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVXBzZXJ0KGNhY2hlTmFtZSwgbGVhZGVyYm9hcmROYW1lLCBlbGVtZW50cyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRVcHNlcnQoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxudW1iZXIsIG51bWJlcj4gfCBNYXA8bnVtYmVyLCBudW1iZXI+XG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRVcHNlcnQuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGxlYWRlcmJvYXJkLl9VcHNlcnRFbGVtZW50c1JlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmNvbnZlcnRNYXBPclJlY29yZFRvRWxlbWVudHNMaXN0KGVsZW1lbnRzKSxcbiAgICB9KTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3JlYXRlTWV0YWRhdGEoY2FjaGVOYW1lKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXROZXh0RGF0YUNsaWVudCgpLlVwc2VydEVsZW1lbnRzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IFNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3A6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgTGVhZGVyYm9hcmRVcHNlcnQuU3VjY2VzcygpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXNvbHZlT3JSZWplY3RFcnJvcih7XG4gICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBMZWFkZXJib2FyZFVwc2VydC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZldGNoQnlTY29yZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBtaW5TY29yZT86IG51bWJlcixcbiAgICBtYXhTY29yZT86IG51bWJlcixcbiAgICBvcmRlcj86IExlYWRlcmJvYXJkT3JkZXIsXG4gICAgb2Zmc2V0PzogbnVtYmVyLFxuICAgIGNvdW50PzogbnVtYmVyXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRGZXRjaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IG9mZnNldFZhbHVlID0gb2Zmc2V0ID09PSB1bmRlZmluZWQgPyAwIDogb2Zmc2V0O1xuICAgIGNvbnN0IGNvdW50VmFsdWUgPSBjb3VudCA9PT0gdW5kZWZpbmVkID8gODE5MiA6IGNvdW50O1xuICAgIGNvbnN0IG9yZGVyVmFsdWUgPSBvcmRlciA/PyBMZWFkZXJib2FyZE9yZGVyLkFzY2VuZGluZztcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVTb3J0ZWRTZXRTY29yZXMobWluU2NvcmUsIG1heFNjb3JlKTtcbiAgICAgIHZhbGlkYXRlTGVhZGVyYm9hcmRPZmZzZXQob2Zmc2V0VmFsdWUpO1xuICAgICAgdmFsaWRhdGVMZWFkZXJib2FyZENvdW50KGNvdW50VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgTGVhZGVyYm9hcmRGZXRjaC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgIGBJc3N1aW5nICdmZXRjaEJ5U2NvcmUnIHJlcXVlc3Q7IGNhY2hlOiAke2NhY2hlTmFtZX0sIGxlYWRlcmJvYXJkOiAke2xlYWRlcmJvYXJkTmFtZX0sIG9yZGVyOiAke29yZGVyVmFsdWUudG9TdHJpbmcoKX0sIG1pblNjb3JlOiAke1xuICAgICAgICBtaW5TY29yZSA/PyAnbnVsbCdcbiAgICAgIH0sIG1heFNjb3JlOiAke1xuICAgICAgICBtYXhTY29yZT8udG9TdHJpbmcoKSA/PyAnbnVsbCdcbiAgICAgIH0sIG9mZnNldDogJHtvZmZzZXRWYWx1ZS50b1N0cmluZygpfSwgY291bnQ6ICR7Y291bnRWYWx1ZS50b1N0cmluZygpfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRGZXRjaEJ5U2NvcmUoXG4gICAgICBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZE5hbWUsXG4gICAgICBvcmRlclZhbHVlLFxuICAgICAgb2Zmc2V0VmFsdWUsXG4gICAgICBjb3VudFZhbHVlLFxuICAgICAgbWluU2NvcmUsXG4gICAgICBtYXhTY29yZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRGZXRjaEJ5U2NvcmUoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgb3JkZXI6IExlYWRlcmJvYXJkT3JkZXIsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBtaW5TY29yZT86IG51bWJlcixcbiAgICBtYXhTY29yZT86IG51bWJlclxuICApOiBQcm9taXNlPExlYWRlcmJvYXJkRmV0Y2guUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwcm90b0J1Zk9yZGVyID1cbiAgICAgIG9yZGVyID09PSBMZWFkZXJib2FyZE9yZGVyLkRlc2NlbmRpbmdcbiAgICAgICAgPyBsZWFkZXJib2FyZC5fT3JkZXIuREVTQ0VORElOR1xuICAgICAgICA6IGxlYWRlcmJvYXJkLl9PcmRlci5BU0NFTkRJTkc7XG5cbiAgICBjb25zdCBwcm90b0J1ZlNjb3JlUmFuZ2UgPSBuZXcgbGVhZGVyYm9hcmQuX1Njb3JlUmFuZ2UoKTtcbiAgICBpZiAobWluU2NvcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvdG9CdWZTY29yZVJhbmdlLm1pbl9pbmNsdXNpdmUgPSBtaW5TY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdG9CdWZTY29yZVJhbmdlLnVuYm91bmRlZF9taW4gPSBuZXcgY29tbW9uLl9VbmJvdW5kZWQoKTtcbiAgICB9XG4gICAgaWYgKG1heFNjb3JlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHByb3RvQnVmU2NvcmVSYW5nZS5tYXhfZXhjbHVzaXZlID0gbWF4U2NvcmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3RvQnVmU2NvcmVSYW5nZS51bmJvdW5kZWRfbWF4ID0gbmV3IGNvbW1vbi5fVW5ib3VuZGVkKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBsZWFkZXJib2FyZC5fR2V0QnlTY29yZVJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIHNjb3JlX3JhbmdlOiBwcm90b0J1ZlNjb3JlUmFuZ2UsXG4gICAgICBvcmRlcjogcHJvdG9CdWZPcmRlcixcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgbGltaXRfZWxlbWVudHM6IGNvdW50LFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuR2V0QnlTY29yZShcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzLFxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBTZXJ2aWNlRXJyb3IgfCBudWxsLCByZXNwOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRWxlbWVudHMgPSAocmVzcCBhcyBsZWFkZXJib2FyZC5fR2V0QnlTY29yZVJlc3BvbnNlKVxuICAgICAgICAgICAgICAuZWxlbWVudHM7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZEZldGNoLlN1Y2Nlc3MoZm91bmRFbGVtZW50cykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExlYWRlcmJvYXJkRmV0Y2guRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaEJ5UmFuayhcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBzdGFydFJhbms6IG51bWJlcixcbiAgICBlbmRSYW5rOiBudW1iZXIsXG4gICAgb3JkZXI/OiBMZWFkZXJib2FyZE9yZGVyXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRGZXRjaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJhbmtPcmRlciA9IG9yZGVyID8/IExlYWRlcmJvYXJkT3JkZXIuQXNjZW5kaW5nO1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUxlYWRlcmJvYXJkUmFua3Moc3RhcnRSYW5rLCBlbmRSYW5rKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IExlYWRlcmJvYXJkRmV0Y2guRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICBgSXNzdWluZyAnZmV0Y2hCeVJhbmsnIHJlcXVlc3Q7IGNhY2hlOiAke2NhY2hlTmFtZX0sIGxlYWRlcmJvYXJkOiAke2xlYWRlcmJvYXJkTmFtZX0sIG9yZGVyOiAke3JhbmtPcmRlci50b1N0cmluZygpfSwgc3RhcnRSYW5rOiAke3N0YXJ0UmFua30sIGVuZFJhbms6ICR7ZW5kUmFua31gXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kRmV0Y2hCeVJhbmsoXG4gICAgICBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZE5hbWUsXG4gICAgICBzdGFydFJhbmssXG4gICAgICBlbmRSYW5rLFxuICAgICAgcmFua09yZGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZEZldGNoQnlSYW5rKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0UmFuazogbnVtYmVyLFxuICAgIGVuZFJhbms6IG51bWJlcixcbiAgICBvcmRlcjogTGVhZGVyYm9hcmRPcmRlclxuICApOiBQcm9taXNlPExlYWRlcmJvYXJkRmV0Y2guUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwcm90b0J1Zk9yZGVyID1cbiAgICAgIG9yZGVyID09PSBMZWFkZXJib2FyZE9yZGVyLkRlc2NlbmRpbmdcbiAgICAgICAgPyBsZWFkZXJib2FyZC5fT3JkZXIuREVTQ0VORElOR1xuICAgICAgICA6IGxlYWRlcmJvYXJkLl9PcmRlci5BU0NFTkRJTkc7XG5cbiAgICBjb25zdCBwcm90b0J1ZlJhbmtSYW5nZSA9IG5ldyBsZWFkZXJib2FyZC5fUmFua1JhbmdlKHtcbiAgICAgIHN0YXJ0X2luY2x1c2l2ZTogc3RhcnRSYW5rLFxuICAgICAgZW5kX2V4Y2x1c2l2ZTogZW5kUmFuayxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgbGVhZGVyYm9hcmQuX0dldEJ5UmFua1JlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIHJhbmtfcmFuZ2U6IHByb3RvQnVmUmFua1JhbmdlLFxuICAgICAgb3JkZXI6IHByb3RvQnVmT3JkZXIsXG4gICAgfSk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNyZWF0ZU1ldGFkYXRhKGNhY2hlTmFtZSk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0TmV4dERhdGFDbGllbnQoKS5HZXRCeVJhbmsoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcDogdW5rbm93bikgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZEVsZW1lbnRzID0gKHJlc3AgYXMgbGVhZGVyYm9hcmQuX0dldEJ5UmFua1Jlc3BvbnNlKVxuICAgICAgICAgICAgICAuZWxlbWVudHM7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZEZldGNoLlN1Y2Nlc3MoZm91bmRFbGVtZW50cykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExlYWRlcmJvYXJkRmV0Y2guRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSYW5rKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8bnVtYmVyPixcbiAgICBvcmRlcj86IExlYWRlcmJvYXJkT3JkZXJcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZEZldGNoLlJlc3BvbnNlPiB7XG4gICAgY29uc3Qgb3JkZXJWYWx1ZSA9IG9yZGVyID8/IExlYWRlcmJvYXJkT3JkZXIuQXNjZW5kaW5nO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgYElzc3VpbmcgJ2dldFJhbmsnIHJlcXVlc3Q7IGNhY2hlOiAke2NhY2hlTmFtZX0sIGxlYWRlcmJvYXJkOiAke2xlYWRlcmJvYXJkTmFtZX0sIG9yZGVyOiAke29yZGVyVmFsdWUudG9TdHJpbmcoKX0sIG51bWJlciBvZiBpZHM6ICR7XG4gICAgICAgIGlkcy5sZW5ndGhcbiAgICAgIH1gXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kR2V0UmFuayhjYWNoZU5hbWUsIGxlYWRlcmJvYXJkTmFtZSwgaWRzLCBvcmRlclZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZEdldFJhbmsoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxudW1iZXI+LFxuICAgIG9yZGVyOiBMZWFkZXJib2FyZE9yZGVyXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRGZXRjaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHByb3RvQnVmT3JkZXIgPVxuICAgICAgb3JkZXIgPT09IExlYWRlcmJvYXJkT3JkZXIuRGVzY2VuZGluZ1xuICAgICAgICA/IGxlYWRlcmJvYXJkLl9PcmRlci5ERVNDRU5ESU5HXG4gICAgICAgIDogbGVhZGVyYm9hcmQuX09yZGVyLkFTQ0VORElORztcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgbGVhZGVyYm9hcmQuX0dldFJhbmtSZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IGNhY2hlTmFtZSxcbiAgICAgIGxlYWRlcmJvYXJkOiBsZWFkZXJib2FyZE5hbWUsXG4gICAgICBpZHM6IGlkcyxcbiAgICAgIG9yZGVyOiBwcm90b0J1Zk9yZGVyLFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuR2V0UmFuayhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzLFxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBTZXJ2aWNlRXJyb3IgfCBudWxsLCByZXNwOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRWxlbWVudHMgPSAocmVzcCBhcyBsZWFkZXJib2FyZC5fR2V0UmFua1Jlc3BvbnNlKVxuICAgICAgICAgICAgICAuZWxlbWVudHM7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZEZldGNoLlN1Y2Nlc3MoZm91bmRFbGVtZW50cykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExlYWRlcmJvYXJkRmV0Y2guRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsZW5ndGgoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZExlbmd0aC5SZXNwb25zZT4ge1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgYElzc3VpbmcgJ2xlbmd0aCcgcmVxdWVzdDsgY2FjaGU6ICR7Y2FjaGVOYW1lfSwgbGVhZGVyYm9hcmQ6ICR7bGVhZGVyYm9hcmROYW1lfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRMZW5ndGgoY2FjaGVOYW1lLCBsZWFkZXJib2FyZE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTGVuZ3RoKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRMZW5ndGguUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGxlYWRlcmJvYXJkLl9HZXRMZWFkZXJib2FyZExlbmd0aFJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICB9KTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3JlYXRlTWV0YWRhdGEoY2FjaGVOYW1lKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXROZXh0RGF0YUNsaWVudCgpLkdldExlYWRlcmJvYXJkTGVuZ3RoKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IFNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3A6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gKHJlc3AgYXMgbGVhZGVyYm9hcmQuX0dldExlYWRlcmJvYXJkTGVuZ3RoUmVzcG9uc2UpXG4gICAgICAgICAgICAgIC5jb3VudDtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExlYWRlcmJvYXJkTGVuZ3RoLlN1Y2Nlc3MobGVuZ3RoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGVhZGVyYm9hcmRMZW5ndGguRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZW1vdmVFbGVtZW50cyhcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBpZHM6IEFycmF5PG51bWJlcj5cbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlTGVhZGVyYm9hcmROdW1iZXJPZkVsZW1lbnRzKGlkcy5sZW5ndGgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgTGVhZGVyYm9hcmRSZW1vdmVFbGVtZW50cy5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgIGBJc3N1aW5nICdyZW1vdmVFbGVtZW50cycgcmVxdWVzdDsgY2FjaGU6ICR7Y2FjaGVOYW1lfSwgbGVhZGVyYm9hcmQ6ICR7bGVhZGVyYm9hcmROYW1lfSwgbnVtYmVyIG9mIGVsZW1lbnRzOiAke2lkcy5sZW5ndGgudG9TdHJpbmcoKX1gXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kUmVtb3ZlRWxlbWVudHMoY2FjaGVOYW1lLCBsZWFkZXJib2FyZE5hbWUsIGlkcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRSZW1vdmVFbGVtZW50cyhcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBpZHM6IEFycmF5PG51bWJlcj5cbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBsZWFkZXJib2FyZC5fUmVtb3ZlRWxlbWVudHNSZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IGNhY2hlTmFtZSxcbiAgICAgIGxlYWRlcmJvYXJkOiBsZWFkZXJib2FyZE5hbWUsXG4gICAgICBpZHM6IGlkcyxcbiAgICB9KTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3JlYXRlTWV0YWRhdGEoY2FjaGVOYW1lKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXROZXh0RGF0YUNsaWVudCgpLlJlbW92ZUVsZW1lbnRzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IFNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3A6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgTGVhZGVyYm9hcmRSZW1vdmVFbGVtZW50cy5TdWNjZXNzKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT5cbiAgICAgICAgICAgICAgICBuZXcgTGVhZGVyYm9hcmRSZW1vdmVFbGVtZW50cy5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPExlYWRlcmJvYXJkRGVsZXRlLlJlc3BvbnNlPiB7XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICBgSXNzdWluZyAnZGVsZXRlJyByZXF1ZXN0OyBjYWNoZTogJHtjYWNoZU5hbWV9LCBsZWFkZXJib2FyZDogJHtsZWFkZXJib2FyZE5hbWV9YFxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZERlbGV0ZShjYWNoZU5hbWUsIGxlYWRlcmJvYXJkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmREZWxldGUoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZERlbGV0ZS5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgbGVhZGVyYm9hcmQuX0RlbGV0ZUxlYWRlcmJvYXJkUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZDogbGVhZGVyYm9hcmROYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuRGVsZXRlTGVhZGVyYm9hcmQoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcDogdW5rbm93bikgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZERlbGV0ZS5TdWNjZXNzKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExlYWRlcmJvYXJkRGVsZXRlLkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TmV4dERhdGFDbGllbnQoKTogbGVhZGVyYm9hcmQuTGVhZGVyYm9hcmRDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudFdyYXBwZXIgPSB0aGlzLmNsaWVudFdyYXBwZXJzW3RoaXMubmV4dERhdGFDbGllbnRJbmRleF07XG4gICAgdGhpcy5uZXh0RGF0YUNsaWVudEluZGV4ID1cbiAgICAgICh0aGlzLm5leHREYXRhQ2xpZW50SW5kZXggKyAxKSAlIHRoaXMuY2xpZW50V3JhcHBlcnMubGVuZ3RoO1xuICAgIHJldHVybiBjbGllbnRXcmFwcGVyLmdldENsaWVudCgpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZGVyYm9hcmQtZGF0YS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvbGVhZGVyYm9hcmQtZGF0YS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBVzZCO0FBQzdCLHVFQU9xRDtBQUVyRCw2RUFBd0U7QUFDeEUsSUFBTyxRQUFRLEdBQUcseUJBQVcsQ0FBQyxRQUFRLENBQUM7QUFDdkMsOEVBQXNFO0FBRXRFLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLDJDQUt1QjtBQUN2QixxREFBMkM7QUFHM0MsNEVBQXNFO0FBS3RFLHNFQUE2RTtBQUM3RSxtRUFBOEQ7QUFFakQsUUFBQSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFeEQsTUFBYSxxQkFBcUI7SUFVaEM7OztPQUdHO0lBQ0gsWUFBWSxLQUF1QyxFQUFFLFlBQW9CO1FBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxvREFBdUIsQ0FDeEQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUN2QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWE7YUFDbEMsb0JBQW9CLEVBQUU7YUFDdEIsYUFBYSxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZ0JB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bUI7WUFDdEIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDOUQsT0FBTyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBbGpCRCxzREFrakJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ3JlZGVudGlhbFByb3ZpZGVyLFxuICBJbnZhbGlkQXJndW1lbnRFcnJvcixcbiAgTGVhZGVyYm9hcmREZWxldGUsXG4gIExlYWRlcmJvYXJkRmV0Y2gsXG4gIExlYWRlcmJvYXJkTGVuZ3RoLFxuICBMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLFxuICBMZWFkZXJib2FyZFVwc2VydCxcbiAgTW9tZW50b0xvZ2dlcixcbiAgTW9tZW50b0xvZ2dlckZhY3RvcnksXG4gIExlYWRlcmJvYXJkT3JkZXIsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgdmFsaWRhdGVMZWFkZXJib2FyZE51bWJlck9mRWxlbWVudHMsXG4gIHZhbGlkYXRlU29ydGVkU2V0U2NvcmVzLFxuICB2YWxpZGF0ZUxlYWRlcmJvYXJkT2Zmc2V0LFxuICB2YWxpZGF0ZUxlYWRlcmJvYXJkQ291bnQsXG4gIHZhbGlkYXRlTGVhZGVyYm9hcmRSYW5rcyxcbiAgcmFuZ2UsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IHtMZWFkZXJib2FyZENvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NvbmZpZy9sZWFkZXJib2FyZC1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7bGVhZGVyYm9hcmR9IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzL2Rpc3QvbGVhZGVyYm9hcmQnO1xuaW1wb3J0IF9FbGVtZW50ID0gbGVhZGVyYm9hcmQuX0VsZW1lbnQ7XG5pbXBvcnQge0lkbGVHcnBjQ2xpZW50V3JhcHBlcn0gZnJvbSAnLi9ncnBjL2lkbGUtZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0dycGNDbGllbnRXcmFwcGVyfSBmcm9tICcuL2dycGMvZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0hlYWRlciwgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcn0gZnJvbSAnLi9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9jbGllbnQtdGltZW91dC1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NhY2hlU2VydmljZUVycm9yTWFwcGVyfSBmcm9tICcuLi9lcnJvcnMvY2FjaGUtc2VydmljZS1lcnJvci1tYXBwZXInO1xuaW1wb3J0IHtcbiAgQ2hhbm5lbENyZWRlbnRpYWxzLFxuICBJbnRlcmNlcHRvcixcbiAgTWV0YWRhdGEsXG4gIFNlcnZpY2VFcnJvcixcbn0gZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQge3ZlcnNpb259IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQge0lMZWFkZXJib2FyZERhdGFDbGllbnR9IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvY2xpZW50cy9sZWFkZXJib2FyZC9JTGVhZGVyYm9hcmREYXRhQ2xpZW50JztcbmltcG9ydCB7TGVhZGVyYm9hcmRDbGllbnRQcm9wc1dpdGhDb25maWd9IGZyb20gJy4vbGVhZGVyYm9hcmQtY2xpZW50LXByb3BzLXdpdGgtY29uZmlnJztcbmltcG9ydCB7bWlkZGxld2FyZXNJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL21pZGRsZXdhcmVzLWludGVyY2VwdG9yJztcbmltcG9ydCB7XG4gIE1pZGRsZXdhcmUsXG4gIE1pZGRsZXdhcmVSZXF1ZXN0SGFuZGxlckNvbnRleHQsXG59IGZyb20gJy4uL2NvbmZpZy9taWRkbGV3YXJlL21pZGRsZXdhcmUnO1xuaW1wb3J0IHtncnBjQ2hhbm5lbE9wdGlvbnNGcm9tR3JwY0NvbmZpZ30gZnJvbSAnLi9ncnBjL2dycGMtY2hhbm5lbC1vcHRpb25zJztcbmltcG9ydCB7Y29tbW9ufSBmcm9tICdAZ29tb21lbnRvL2dlbmVyYXRlZC10eXBlcy9kaXN0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBDT05ORUNUSU9OX0lEX0tFWSA9IFN5bWJvbCgnY29ubmVjdGlvbklEJyk7XG5cbmV4cG9ydCBjbGFzcyBMZWFkZXJib2FyZERhdGFDbGllbnQgaW1wbGVtZW50cyBJTGVhZGVyYm9hcmREYXRhQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0aW9uOiBMZWFkZXJib2FyZENvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyOiBDcmVkZW50aWFsUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBNb21lbnRvTG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlU2VydmljZUVycm9yTWFwcGVyOiBDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0VGltZW91dE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50V3JhcHBlcnM6IEdycGNDbGllbnRXcmFwcGVyPGxlYWRlcmJvYXJkLkxlYWRlcmJvYXJkQ2xpZW50PltdO1xuICBwcm90ZWN0ZWQgbmV4dERhdGFDbGllbnRJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtMZWFkZXJib2FyZENsaWVudFByb3BzV2l0aENvbmZpZ30gcHJvcHNcbiAgICogQHBhcmFtIGRhdGFDbGllbnRJRFxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IExlYWRlcmJvYXJkQ2xpZW50UHJvcHNXaXRoQ29uZmlnLCBkYXRhQ2xpZW50SUQ6IHN0cmluZykge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHByb3BzLmNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlciA9IG5ldyBDYWNoZVNlcnZpY2VFcnJvck1hcHBlcihcbiAgICAgIHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0VGhyb3dPbkVycm9ycygpXG4gICAgKTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlciA9IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlcjtcbiAgICB0aGlzLmxvZ2dlciA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCkuZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIGNvbnN0IGdycGNDb25maWcgPSB0aGlzLmNvbmZpZ3VyYXRpb25cbiAgICAgIC5nZXRUcmFuc3BvcnRTdHJhdGVneSgpXG4gICAgICAuZ2V0R3JwY0NvbmZpZygpO1xuXG4gICAgdGhpcy5yZXF1ZXN0VGltZW91dE1zID0gZ3JwY0NvbmZpZy5nZXREZWFkbGluZU1pbGxpcygpO1xuICAgIHRoaXMudmFsaWRhdGVSZXF1ZXN0VGltZW91dCh0aGlzLnJlcXVlc3RUaW1lb3V0TXMpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIGxlYWRlcmJvYXJkIGNsaWVudCB1c2luZyBlbmRwb2ludDogJyR7dGhpcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0Q2FjaGVFbmRwb2ludCgpfSdgXG4gICAgKTtcblxuICAgIGNvbnN0IG51bURhdGFDbGllbnRzID0gZ3JwY0NvbmZpZy5nZXROdW1DbGllbnRzKCk7XG5cbiAgICAvLyBXZSByb3VuZC1yb2JpbiB0aGUgcmVxdWVzdHMgdGhyb3VnaCBhbGwgb2Ygb3VyIGNsaWVudHMuICBTaW5jZSBqYXZhc2NyaXB0XG4gICAgLy8gaXMgc2luZ2xlLXRocmVhZGVkLCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRocmVhZCBzYWZldHkgb24gdGhpc1xuICAgIC8vIGluZGV4IHZhcmlhYmxlLlxuICAgIHRoaXMubmV4dERhdGFDbGllbnRJbmRleCA9IDA7XG5cbiAgICBjb25zdCBjaGFubmVsT3B0aW9ucyA9IGdycGNDaGFubmVsT3B0aW9uc0Zyb21HcnBjQ29uZmlnKGdycGNDb25maWcpO1xuXG4gICAgdGhpcy5jbGllbnRXcmFwcGVycyA9IHJhbmdlKG51bURhdGFDbGllbnRzKS5tYXAoXG4gICAgICAoKSA9PlxuICAgICAgICBuZXcgSWRsZUdycGNDbGllbnRXcmFwcGVyKHtcbiAgICAgICAgICBjbGllbnRGYWN0b3J5Rm46ICgpID0+XG4gICAgICAgICAgICBuZXcgbGVhZGVyYm9hcmQuTGVhZGVyYm9hcmRDbGllbnQoXG4gICAgICAgICAgICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyLmdldENhY2hlRW5kcG9pbnQoKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIuaXNDYWNoZUVuZHBvaW50U2VjdXJlKClcbiAgICAgICAgICAgICAgICA/IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVTc2woKVxuICAgICAgICAgICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCksXG4gICAgICAgICAgICAgIGNoYW5uZWxPcHRpb25zXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGxvZ2dlckZhY3Rvcnk6IHRoaXMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCksXG4gICAgICAgICAgbWF4SWRsZU1pbGxpczogdGhpcy5jb25maWd1cmF0aW9uXG4gICAgICAgICAgICAuZ2V0VHJhbnNwb3J0U3RyYXRlZ3koKVxuICAgICAgICAgICAgLmdldE1heElkbGVNaWxsaXMoKSxcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgY29udGV4dDogTWlkZGxld2FyZVJlcXVlc3RIYW5kbGVyQ29udGV4dCA9IHt9O1xuICAgIGNvbnRleHRbQ09OTkVDVElPTl9JRF9LRVldID0gZGF0YUNsaWVudElEO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gdGhpcy5pbml0aWFsaXplSW50ZXJjZXB0b3JzKFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKSxcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5nZXRNaWRkbGV3YXJlcygpLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ2xvc2luZyBsZWFkZXJib2FyZCBkYXRhIGNsaWVudHMnKTtcbiAgICB0aGlzLmNsaWVudFdyYXBwZXJzLm1hcCh3cmFwcGVyID0+IHdyYXBwZXIuZ2V0Q2xpZW50KCkuY2xvc2UoKSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmVxdWVzdFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBSZXF1ZXN0IHRpbWVvdXQgbXM6ICR7U3RyaW5nKHRpbWVvdXQpfWApO1xuICAgIGlmICh0aW1lb3V0ICE9PSB1bmRlZmluZWQgJiYgdGltZW91dCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgICdyZXF1ZXN0IHRpbWVvdXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUludGVyY2VwdG9ycyhcbiAgICBfbG9nZ2VyRmFjdG9yeTogTW9tZW50b0xvZ2dlckZhY3RvcnksXG4gICAgbWlkZGxld2FyZXM6IE1pZGRsZXdhcmVbXSxcbiAgICBtaWRkbGV3YXJlUmVxdWVzdENvbnRleHQ6IE1pZGRsZXdhcmVSZXF1ZXN0SGFuZGxlckNvbnRleHRcbiAgKTogSW50ZXJjZXB0b3JbXSB7XG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIG5ldyBIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRBdXRoVG9rZW4oKSksXG4gICAgICBuZXcgSGVhZGVyKCdBZ2VudCcsIGBub2RlanM6bGVhZGVyYm9hcmQ6JHt2ZXJzaW9ufWApLFxuICAgICAgbmV3IEhlYWRlcignUnVudGltZS1WZXJzaW9uJywgYG5vZGVqczoke3Byb2Nlc3MudmVyc2lvbnMubm9kZX1gKSxcbiAgICBdO1xuICAgIHJldHVybiBbXG4gICAgICBtaWRkbGV3YXJlc0ludGVyY2VwdG9yKFxuICAgICAgICBfbG9nZ2VyRmFjdG9yeSxcbiAgICAgICAgbWlkZGxld2FyZXMsXG4gICAgICAgIG1pZGRsZXdhcmVSZXF1ZXN0Q29udGV4dFxuICAgICAgKSxcbiAgICAgIG5ldyBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyKGhlYWRlcnMpLmNyZWF0ZUhlYWRlcnNJbnRlcmNlcHRvcigpLFxuICAgICAgQ2xpZW50VGltZW91dEludGVyY2VwdG9yKHRoaXMucmVxdWVzdFRpbWVvdXRNcyksXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWV0YWRhdGEoY2FjaGVOYW1lOiBzdHJpbmcpOiBNZXRhZGF0YSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBtZXRhZGF0YS5zZXQoJ2NhY2hlJywgY2FjaGVOYW1lKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRNYXBPclJlY29yZFRvRWxlbWVudHNMaXN0KFxuICAgIGVsZW1lbnRzOiBSZWNvcmQ8bnVtYmVyLCBudW1iZXI+IHwgTWFwPG51bWJlciwgbnVtYmVyPlxuICApOiBfRWxlbWVudFtdIHtcbiAgICBjb25zdCBjb252ZXJ0ZWRFbGVtZW50czogX0VsZW1lbnRbXSA9IFtdO1xuICAgIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoc2NvcmUsIGlkKSA9PlxuICAgICAgICBjb252ZXJ0ZWRFbGVtZW50cy5wdXNoKG5ldyBfRWxlbWVudCh7aWQ6IGlkLCBzY29yZTogc2NvcmV9KSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGVsZW1lbnRzKS5mb3JFYWNoKGVsZW1lbnQgPT5cbiAgICAgICAgY29udmVydGVkRWxlbWVudHMucHVzaChcbiAgICAgICAgICBuZXcgX0VsZW1lbnQoe2lkOiBOdW1iZXIoZWxlbWVudFswXSksIHNjb3JlOiBlbGVtZW50WzFdfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZEVsZW1lbnRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwc2VydChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czogUmVjb3JkPG51bWJlciwgbnVtYmVyPiB8IE1hcDxudW1iZXIsIG51bWJlcj5cbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZFVwc2VydC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHNpemUgPVxuICAgICAgZWxlbWVudHMgaW5zdGFuY2VvZiBNYXAgPyBlbGVtZW50cy5zaXplIDogT2JqZWN0LmtleXMoZWxlbWVudHMpLmxlbmd0aDtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVMZWFkZXJib2FyZE51bWJlck9mRWxlbWVudHMoc2l6ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBMZWFkZXJib2FyZFVwc2VydC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgIGBJc3N1aW5nICd1cHNlcnQnIHJlcXVlc3Q7IGNhY2hlOiAke2NhY2hlTmFtZX0sIGxlYWRlcmJvYXJkOiAke2xlYWRlcmJvYXJkTmFtZX0sIG51bWJlciBvZiBlbGVtZW50czogJHtzaXplfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRVcHNlcnQoY2FjaGVOYW1lLCBsZWFkZXJib2FyZE5hbWUsIGVsZW1lbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZFVwc2VydChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czogUmVjb3JkPG51bWJlciwgbnVtYmVyPiB8IE1hcDxudW1iZXIsIG51bWJlcj5cbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZFVwc2VydC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgbGVhZGVyYm9hcmQuX1Vwc2VydEVsZW1lbnRzUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZDogbGVhZGVyYm9hcmROYW1lLFxuICAgICAgZWxlbWVudHM6IHRoaXMuY29udmVydE1hcE9yUmVjb3JkVG9FbGVtZW50c0xpc3QoZWxlbWVudHMpLFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuVXBzZXJ0RWxlbWVudHMoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcDogdW5rbm93bikgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZFVwc2VydC5TdWNjZXNzKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExlYWRlcmJvYXJkVXBzZXJ0LkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2hCeVNjb3JlKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIG1pblNjb3JlPzogbnVtYmVyLFxuICAgIG1heFNjb3JlPzogbnVtYmVyLFxuICAgIG9yZGVyPzogTGVhZGVyYm9hcmRPcmRlcixcbiAgICBvZmZzZXQ/OiBudW1iZXIsXG4gICAgY291bnQ/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZEZldGNoLlJlc3BvbnNlPiB7XG4gICAgY29uc3Qgb2Zmc2V0VmFsdWUgPSBvZmZzZXQgPT09IHVuZGVmaW5lZCA/IDAgOiBvZmZzZXQ7XG4gICAgY29uc3QgY291bnRWYWx1ZSA9IGNvdW50ID09PSB1bmRlZmluZWQgPyA4MTkyIDogY291bnQ7XG4gICAgY29uc3Qgb3JkZXJWYWx1ZSA9IG9yZGVyID8/IExlYWRlcmJvYXJkT3JkZXIuQXNjZW5kaW5nO1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZVNvcnRlZFNldFNjb3JlcyhtaW5TY29yZSwgbWF4U2NvcmUpO1xuICAgICAgdmFsaWRhdGVMZWFkZXJib2FyZE9mZnNldChvZmZzZXRWYWx1ZSk7XG4gICAgICB2YWxpZGF0ZUxlYWRlcmJvYXJkQ291bnQoY291bnRWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBMZWFkZXJib2FyZEZldGNoLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgYElzc3VpbmcgJ2ZldGNoQnlTY29yZScgcmVxdWVzdDsgY2FjaGU6ICR7Y2FjaGVOYW1lfSwgbGVhZGVyYm9hcmQ6ICR7bGVhZGVyYm9hcmROYW1lfSwgb3JkZXI6ICR7b3JkZXJWYWx1ZS50b1N0cmluZygpfSwgbWluU2NvcmU6ICR7XG4gICAgICAgIG1pblNjb3JlID8/ICdudWxsJ1xuICAgICAgfSwgbWF4U2NvcmU6ICR7XG4gICAgICAgIG1heFNjb3JlPy50b1N0cmluZygpID8/ICdudWxsJ1xuICAgICAgfSwgb2Zmc2V0OiAke29mZnNldFZhbHVlLnRvU3RyaW5nKCl9LCBjb3VudDogJHtjb3VudFZhbHVlLnRvU3RyaW5nKCl9YFxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZEZldGNoQnlTY29yZShcbiAgICAgIGNhY2hlTmFtZSxcbiAgICAgIGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIG9yZGVyVmFsdWUsXG4gICAgICBvZmZzZXRWYWx1ZSxcbiAgICAgIGNvdW50VmFsdWUsXG4gICAgICBtaW5TY29yZSxcbiAgICAgIG1heFNjb3JlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZEZldGNoQnlTY29yZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBvcmRlcjogTGVhZGVyYm9hcmRPcmRlcixcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIG1pblNjb3JlPzogbnVtYmVyLFxuICAgIG1heFNjb3JlPzogbnVtYmVyXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRGZXRjaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHByb3RvQnVmT3JkZXIgPVxuICAgICAgb3JkZXIgPT09IExlYWRlcmJvYXJkT3JkZXIuRGVzY2VuZGluZ1xuICAgICAgICA/IGxlYWRlcmJvYXJkLl9PcmRlci5ERVNDRU5ESU5HXG4gICAgICAgIDogbGVhZGVyYm9hcmQuX09yZGVyLkFTQ0VORElORztcblxuICAgIGNvbnN0IHByb3RvQnVmU2NvcmVSYW5nZSA9IG5ldyBsZWFkZXJib2FyZC5fU2NvcmVSYW5nZSgpO1xuICAgIGlmIChtaW5TY29yZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm90b0J1ZlNjb3JlUmFuZ2UubWluX2luY2x1c2l2ZSA9IG1pblNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm90b0J1ZlNjb3JlUmFuZ2UudW5ib3VuZGVkX21pbiA9IG5ldyBjb21tb24uX1VuYm91bmRlZCgpO1xuICAgIH1cbiAgICBpZiAobWF4U2NvcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvdG9CdWZTY29yZVJhbmdlLm1heF9leGNsdXNpdmUgPSBtYXhTY29yZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdG9CdWZTY29yZVJhbmdlLnVuYm91bmRlZF9tYXggPSBuZXcgY29tbW9uLl9VbmJvdW5kZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGxlYWRlcmJvYXJkLl9HZXRCeVNjb3JlUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZDogbGVhZGVyYm9hcmROYW1lLFxuICAgICAgc2NvcmVfcmFuZ2U6IHByb3RvQnVmU2NvcmVSYW5nZSxcbiAgICAgIG9yZGVyOiBwcm90b0J1Zk9yZGVyLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdF9lbGVtZW50czogY291bnQsXG4gICAgfSk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNyZWF0ZU1ldGFkYXRhKGNhY2hlTmFtZSk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0TmV4dERhdGFDbGllbnQoKS5HZXRCeVNjb3JlKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IFNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3A6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRFbGVtZW50cyA9IChyZXNwIGFzIGxlYWRlcmJvYXJkLl9HZXRCeVNjb3JlUmVzcG9uc2UpXG4gICAgICAgICAgICAgIC5lbGVtZW50cztcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExlYWRlcmJvYXJkRmV0Y2guU3VjY2Vzcyhmb3VuZEVsZW1lbnRzKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGVhZGVyYm9hcmRGZXRjaC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZldGNoQnlSYW5rKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIHN0YXJ0UmFuazogbnVtYmVyLFxuICAgIGVuZFJhbms6IG51bWJlcixcbiAgICBvcmRlcj86IExlYWRlcmJvYXJkT3JkZXJcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZEZldGNoLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmFua09yZGVyID0gb3JkZXIgPz8gTGVhZGVyYm9hcmRPcmRlci5Bc2NlbmRpbmc7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlTGVhZGVyYm9hcmRSYW5rcyhzdGFydFJhbmssIGVuZFJhbmspO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgTGVhZGVyYm9hcmRGZXRjaC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgIGBJc3N1aW5nICdmZXRjaEJ5UmFuaycgcmVxdWVzdDsgY2FjaGU6ICR7Y2FjaGVOYW1lfSwgbGVhZGVyYm9hcmQ6ICR7bGVhZGVyYm9hcmROYW1lfSwgb3JkZXI6ICR7cmFua09yZGVyLnRvU3RyaW5nKCl9LCBzdGFydFJhbms6ICR7c3RhcnRSYW5rfSwgZW5kUmFuazogJHtlbmRSYW5rfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRGZXRjaEJ5UmFuayhcbiAgICAgIGNhY2hlTmFtZSxcbiAgICAgIGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIHN0YXJ0UmFuayxcbiAgICAgIGVuZFJhbmssXG4gICAgICByYW5rT3JkZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kRmV0Y2hCeVJhbmsoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgc3RhcnRSYW5rOiBudW1iZXIsXG4gICAgZW5kUmFuazogbnVtYmVyLFxuICAgIG9yZGVyOiBMZWFkZXJib2FyZE9yZGVyXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmRGZXRjaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHByb3RvQnVmT3JkZXIgPVxuICAgICAgb3JkZXIgPT09IExlYWRlcmJvYXJkT3JkZXIuRGVzY2VuZGluZ1xuICAgICAgICA/IGxlYWRlcmJvYXJkLl9PcmRlci5ERVNDRU5ESU5HXG4gICAgICAgIDogbGVhZGVyYm9hcmQuX09yZGVyLkFTQ0VORElORztcblxuICAgIGNvbnN0IHByb3RvQnVmUmFua1JhbmdlID0gbmV3IGxlYWRlcmJvYXJkLl9SYW5rUmFuZ2Uoe1xuICAgICAgc3RhcnRfaW5jbHVzaXZlOiBzdGFydFJhbmssXG4gICAgICBlbmRfZXhjbHVzaXZlOiBlbmRSYW5rLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBsZWFkZXJib2FyZC5fR2V0QnlSYW5rUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZDogbGVhZGVyYm9hcmROYW1lLFxuICAgICAgcmFua19yYW5nZTogcHJvdG9CdWZSYW5rUmFuZ2UsXG4gICAgICBvcmRlcjogcHJvdG9CdWZPcmRlcixcbiAgICB9KTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3JlYXRlTWV0YWRhdGEoY2FjaGVOYW1lKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXROZXh0RGF0YUNsaWVudCgpLkdldEJ5UmFuayhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzLFxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBTZXJ2aWNlRXJyb3IgfCBudWxsLCByZXNwOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3ApIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRWxlbWVudHMgPSAocmVzcCBhcyBsZWFkZXJib2FyZC5fR2V0QnlSYW5rUmVzcG9uc2UpXG4gICAgICAgICAgICAgIC5lbGVtZW50cztcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExlYWRlcmJvYXJkRmV0Y2guU3VjY2Vzcyhmb3VuZEVsZW1lbnRzKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGVhZGVyYm9hcmRGZXRjaC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJhbmsoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmcsXG4gICAgaWRzOiBBcnJheTxudW1iZXI+LFxuICAgIG9yZGVyPzogTGVhZGVyYm9hcmRPcmRlclxuICApOiBQcm9taXNlPExlYWRlcmJvYXJkRmV0Y2guUmVzcG9uc2U+IHtcbiAgICBjb25zdCBvcmRlclZhbHVlID0gb3JkZXIgPz8gTGVhZGVyYm9hcmRPcmRlci5Bc2NlbmRpbmc7XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICBgSXNzdWluZyAnZ2V0UmFuaycgcmVxdWVzdDsgY2FjaGU6ICR7Y2FjaGVOYW1lfSwgbGVhZGVyYm9hcmQ6ICR7bGVhZGVyYm9hcmROYW1lfSwgb3JkZXI6ICR7b3JkZXJWYWx1ZS50b1N0cmluZygpfSwgbnVtYmVyIG9mIGlkczogJHtcbiAgICAgICAgaWRzLmxlbmd0aFxuICAgICAgfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRHZXRSYW5rKGNhY2hlTmFtZSwgbGVhZGVyYm9hcmROYW1lLCBpZHMsIG9yZGVyVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kR2V0UmFuayhcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZyxcbiAgICBpZHM6IEFycmF5PG51bWJlcj4sXG4gICAgb3JkZXI6IExlYWRlcmJvYXJkT3JkZXJcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZEZldGNoLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcHJvdG9CdWZPcmRlciA9XG4gICAgICBvcmRlciA9PT0gTGVhZGVyYm9hcmRPcmRlci5EZXNjZW5kaW5nXG4gICAgICAgID8gbGVhZGVyYm9hcmQuX09yZGVyLkRFU0NFTkRJTkdcbiAgICAgICAgOiBsZWFkZXJib2FyZC5fT3JkZXIuQVNDRU5ESU5HO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBsZWFkZXJib2FyZC5fR2V0UmFua1JlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIGlkczogaWRzLFxuICAgICAgb3JkZXI6IHByb3RvQnVmT3JkZXIsXG4gICAgfSk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNyZWF0ZU1ldGFkYXRhKGNhY2hlTmFtZSk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0TmV4dERhdGFDbGllbnQoKS5HZXRSYW5rKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy5pbnRlcmNlcHRvcnMsXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IFNlcnZpY2VFcnJvciB8IG51bGwsIHJlc3A6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRFbGVtZW50cyA9IChyZXNwIGFzIGxlYWRlcmJvYXJkLl9HZXRSYW5rUmVzcG9uc2UpXG4gICAgICAgICAgICAgIC5lbGVtZW50cztcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExlYWRlcmJvYXJkRmV0Y2guU3VjY2Vzcyhmb3VuZEVsZW1lbnRzKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGVhZGVyYm9hcmRGZXRjaC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxlbmd0aChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPExlYWRlcmJvYXJkTGVuZ3RoLlJlc3BvbnNlPiB7XG4gICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICBgSXNzdWluZyAnbGVuZ3RoJyByZXF1ZXN0OyBjYWNoZTogJHtjYWNoZU5hbWV9LCBsZWFkZXJib2FyZDogJHtsZWFkZXJib2FyZE5hbWV9YFxuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZExlbmd0aChjYWNoZU5hbWUsIGxlYWRlcmJvYXJkTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMZW5ndGgoXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgbGVhZGVyYm9hcmROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxMZWFkZXJib2FyZExlbmd0aC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgbGVhZGVyYm9hcmQuX0dldExlYWRlcmJvYXJkTGVuZ3RoUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICBsZWFkZXJib2FyZDogbGVhZGVyYm9hcmROYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuR2V0TGVhZGVyYm9hcmRMZW5ndGgoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcDogdW5rbm93bikgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSAocmVzcCBhcyBsZWFkZXJib2FyZC5fR2V0TGVhZGVyYm9hcmRMZW5ndGhSZXNwb25zZSlcbiAgICAgICAgICAgICAgLmNvdW50O1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgTGVhZGVyYm9hcmRMZW5ndGguU3VjY2VzcyhsZW5ndGgpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXNvbHZlT3JSZWplY3RFcnJvcih7XG4gICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBMZWFkZXJib2FyZExlbmd0aC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZUVsZW1lbnRzKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8bnVtYmVyPlxuICApOiBQcm9taXNlPExlYWRlcmJvYXJkUmVtb3ZlRWxlbWVudHMuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVMZWFkZXJib2FyZE51bWJlck9mRWxlbWVudHMoaWRzLmxlbmd0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLnRyYWNlKFxuICAgICAgYElzc3VpbmcgJ3JlbW92ZUVsZW1lbnRzJyByZXF1ZXN0OyBjYWNoZTogJHtjYWNoZU5hbWV9LCBsZWFkZXJib2FyZDogJHtsZWFkZXJib2FyZE5hbWV9LCBudW1iZXIgb2YgZWxlbWVudHM6ICR7aWRzLmxlbmd0aC50b1N0cmluZygpfWBcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRSZW1vdmVFbGVtZW50cyhjYWNoZU5hbWUsIGxlYWRlcmJvYXJkTmFtZSwgaWRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZFJlbW92ZUVsZW1lbnRzKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nLFxuICAgIGlkczogQXJyYXk8bnVtYmVyPlxuICApOiBQcm9taXNlPExlYWRlcmJvYXJkUmVtb3ZlRWxlbWVudHMuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGxlYWRlcmJvYXJkLl9SZW1vdmVFbGVtZW50c1JlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogY2FjaGVOYW1lLFxuICAgICAgbGVhZGVyYm9hcmQ6IGxlYWRlcmJvYXJkTmFtZSxcbiAgICAgIGlkczogaWRzLFxuICAgIH0pO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jcmVhdGVNZXRhZGF0YShjYWNoZU5hbWUpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmdldE5leHREYXRhQ2xpZW50KCkuUmVtb3ZlRWxlbWVudHMoXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogU2VydmljZUVycm9yIHwgbnVsbCwgcmVzcDogdW5rbm93bikgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PlxuICAgICAgICAgICAgICAgIG5ldyBMZWFkZXJib2FyZFJlbW92ZUVsZW1lbnRzLkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlKFxuICAgIGNhY2hlTmFtZTogc3RyaW5nLFxuICAgIGxlYWRlcmJvYXJkTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8TGVhZGVyYm9hcmREZWxldGUuUmVzcG9uc2U+IHtcbiAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgIGBJc3N1aW5nICdkZWxldGUnIHJlcXVlc3Q7IGNhY2hlOiAke2NhY2hlTmFtZX0sIGxlYWRlcmJvYXJkOiAke2xlYWRlcmJvYXJkTmFtZX1gXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kRGVsZXRlKGNhY2hlTmFtZSwgbGVhZGVyYm9hcmROYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZERlbGV0ZShcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICBsZWFkZXJib2FyZE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPExlYWRlcmJvYXJkRGVsZXRlLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBsZWFkZXJib2FyZC5fRGVsZXRlTGVhZGVyYm9hcmRSZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IGNhY2hlTmFtZSxcbiAgICAgIGxlYWRlcmJvYXJkOiBsZWFkZXJib2FyZE5hbWUsXG4gICAgfSk7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmNyZWF0ZU1ldGFkYXRhKGNhY2hlTmFtZSk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0TmV4dERhdGFDbGllbnQoKS5EZWxldGVMZWFkZXJib2FyZChcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzLFxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBTZXJ2aWNlRXJyb3IgfCBudWxsLCByZXNwOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3ApIHtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExlYWRlcmJvYXJkRGVsZXRlLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGVhZGVyYm9hcmREZWxldGUuRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROZXh0RGF0YUNsaWVudCgpOiBsZWFkZXJib2FyZC5MZWFkZXJib2FyZENsaWVudCB7XG4gICAgY29uc3QgY2xpZW50V3JhcHBlciA9IHRoaXMuY2xpZW50V3JhcHBlcnNbdGhpcy5uZXh0RGF0YUNsaWVudEluZGV4XTtcbiAgICB0aGlzLm5leHREYXRhQ2xpZW50SW5kZXggPVxuICAgICAgKHRoaXMubmV4dERhdGFDbGllbnRJbmRleCArIDEpICUgdGhpcy5jbGllbnRXcmFwcGVycy5sZW5ndGg7XG4gICAgcmV0dXJuIGNsaWVudFdyYXBwZXIuZ2V0Q2xpZW50KCk7XG4gIH1cbn1cbiJdfQ==

@@ -17,3 +17,6 @@ "use strict";

this.logger = props.configuration.getLoggerFactory().getLogger(this);
const headers = [new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`)];
const headers = [
new headers_interceptor_1.Header('Agent', `nodejs:ping:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];
this.interceptors = [

@@ -55,2 +58,2 @@ new headers_interceptor_1.HeaderInterceptorProvider(headers).createHeadersInterceptor(),

InternalNodeGrpcPingClient.REQUEST_TIMEOUT_MS = 60 * 1000;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluZy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvcGluZy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQWdEO0FBQ2hELElBQU8sUUFBUSxHQUFHLHNCQUFJLENBQUMsWUFBWSxDQUFDO0FBQ3BDLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsMkNBQThEO0FBQzlELHFEQUEyQztBQUMzQyw4RUFBc0U7QUFXdEUsTUFBYSwwQkFBMEI7SUFNckM7O09BRUc7SUFDSCxZQUFZLEtBQXNCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxzQkFBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsSUFBSSwrQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRSxJQUFBLHFEQUF3QixFQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDO1NBQ3hFLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix5Q0FBeUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUMxRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGdEQUFxQixDQUFDO1lBQzdDLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FDcEIsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUNyQixLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDOUMsQ0FBQyxDQUFDLDRCQUFrQixDQUFDLFNBQVMsRUFBRTtnQkFDaEMsQ0FBQyxDQUFDLDRCQUFrQixDQUFDLGNBQWMsRUFBRSxDQUN4QztZQUNILGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtpQkFDL0Isb0JBQW9CLEVBQUU7aUJBQ3RCLGdCQUFnQixFQUFFO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsYUFBYTtpQkFDZixTQUFTLEVBQUU7Z0JBQ1osNkRBQTZEO2lCQUM1RCxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDOUQsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFDO2lCQUNYO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbERILGdFQW1EQztBQWhEeUIsNkNBQWtCLEdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGluZ30gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IGdycGNQaW5nID0gcGluZy5jYWNoZV9jbGllbnQ7XG5pbXBvcnQge0hlYWRlciwgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcn0gZnJvbSAnLi9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9jbGllbnQtdGltZW91dC1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NoYW5uZWxDcmVkZW50aWFscywgSW50ZXJjZXB0b3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHt2ZXJzaW9ufSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHtJZGxlR3JwY0NsaWVudFdyYXBwZXJ9IGZyb20gJy4vZ3JwYy9pZGxlLWdycGMtY2xpZW50LXdyYXBwZXInO1xuaW1wb3J0IHtHcnBjQ2xpZW50V3JhcHBlcn0gZnJvbSAnLi9ncnBjL2dycGMtY2xpZW50LXdyYXBwZXInO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9jb25maWcvY29uZmlndXJhdGlvbic7XG5pbXBvcnQge0NyZWRlbnRpYWxQcm92aWRlciwgTW9tZW50b0xvZ2dlcn0gZnJvbSAnLi4vJztcblxuZXhwb3J0IGludGVyZmFjZSBQaW5nQ2xpZW50UHJvcHMge1xuICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uO1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBjcmVkZW50aWFsUHJvdmlkZXI6IENyZWRlbnRpYWxQcm92aWRlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEludGVybmFsTm9kZUdycGNQaW5nQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRXcmFwcGVyOiBHcnBjQ2xpZW50V3JhcHBlcjxncnBjUGluZy5QaW5nQ2xpZW50PjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHRvcnM6IEludGVyY2VwdG9yW107XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJFUVVFU1RfVElNRU9VVF9NUzogbnVtYmVyID0gNjAgKiAxMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcblxuICAvKipcbiAgICogQHBhcmFtIHtQaW5nQ2xpZW50UHJvcHN9IHByb3BzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogUGluZ0NsaWVudFByb3BzKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBwcm9wcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKS5nZXRMb2dnZXIodGhpcyk7XG4gICAgY29uc3QgaGVhZGVycyA9IFtuZXcgSGVhZGVyKCdBZ2VudCcsIGBub2RlanM6JHt2ZXJzaW9ufWApXTtcbiAgICB0aGlzLmludGVyY2VwdG9ycyA9IFtcbiAgICAgIG5ldyBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyKGhlYWRlcnMpLmNyZWF0ZUhlYWRlcnNJbnRlcmNlcHRvcigpLFxuICAgICAgQ2xpZW50VGltZW91dEludGVyY2VwdG9yKEludGVybmFsTm9kZUdycGNQaW5nQ2xpZW50LlJFUVVFU1RfVElNRU9VVF9NUyksXG4gICAgXTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyBwaW5nIGNsaWVudCB1c2luZyBlbmRwb2ludDogJyR7cHJvcHMuZW5kcG9pbnR9YFxuICAgICk7XG4gICAgdGhpcy5jbGllbnRXcmFwcGVyID0gbmV3IElkbGVHcnBjQ2xpZW50V3JhcHBlcih7XG4gICAgICBjbGllbnRGYWN0b3J5Rm46ICgpID0+XG4gICAgICAgIG5ldyBncnBjUGluZy5QaW5nQ2xpZW50KFxuICAgICAgICAgIHByb3BzLmVuZHBvaW50LFxuICAgICAgICAgIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlci5pc0NhY2hlRW5kcG9pbnRTZWN1cmUoKVxuICAgICAgICAgICAgPyBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlU3NsKClcbiAgICAgICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKClcbiAgICAgICAgKSxcbiAgICAgIGxvZ2dlckZhY3Rvcnk6IHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLFxuICAgICAgbWF4SWRsZU1pbGxpczogcHJvcHMuY29uZmlndXJhdGlvblxuICAgICAgICAuZ2V0VHJhbnNwb3J0U3RyYXRlZ3koKVxuICAgICAgICAuZ2V0TWF4SWRsZU1pbGxpcygpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbygncGluZ2luZy4uLicpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY1BpbmcuX1BpbmdSZXF1ZXN0KCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuY2xpZW50V3JhcHBlclxuICAgICAgICAuZ2V0Q2xpZW50KClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAuUGluZyhyZXF1ZXN0LCB7aW50ZXJjZXB0b3JzOiB0aGlzLmludGVyY2VwdG9yc30sIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignZmFpbGVkIHRvIHBpbmcnKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluZy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvcGluZy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQWdEO0FBQ2hELElBQU8sUUFBUSxHQUFHLHNCQUFJLENBQUMsWUFBWSxDQUFDO0FBQ3BDLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UsMkNBQThEO0FBQzlELHFEQUEyQztBQUMzQyw4RUFBc0U7QUFXdEUsTUFBYSwwQkFBMEI7SUFNckM7O09BRUc7SUFDSCxZQUFZLEtBQXNCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxzQkFBTyxFQUFFLENBQUM7WUFDN0MsSUFBSSw0QkFBTSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQixJQUFJLCtDQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLHdCQUF3QixFQUFFO1lBQ2pFLElBQUEscURBQXdCLEVBQUMsMEJBQTBCLENBQUMsa0JBQWtCLENBQUM7U0FDeEUsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHlDQUF5QyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQzFELENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZ0RBQXFCLENBQUM7WUFDN0MsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUNwQixJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQ3JCLEtBQUssQ0FBQyxRQUFRLEVBQ2QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUFFO2dCQUM5QyxDQUFDLENBQUMsNEJBQWtCLENBQUMsU0FBUyxFQUFFO2dCQUNoQyxDQUFDLENBQUMsNEJBQWtCLENBQUMsY0FBYyxFQUFFLENBQ3hDO1lBQ0gsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUU7WUFDckQsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO2lCQUMvQixvQkFBb0IsRUFBRTtpQkFDdEIsZ0JBQWdCLEVBQUU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsT0FBTyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxhQUFhO2lCQUNmLFNBQVMsRUFBRTtnQkFDWiw2REFBNkQ7aUJBQzVELElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUM5RCxJQUFJLEdBQUcsRUFBRTtvQkFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2I7cUJBQU07b0JBQ0wsT0FBTyxFQUFFLENBQUM7aUJBQ1g7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFyREgsZ0VBc0RDO0FBbkR5Qiw2Q0FBa0IsR0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwaW5nfSBmcm9tICdAZ29tb21lbnRvL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQgZ3JwY1BpbmcgPSBwaW5nLmNhY2hlX2NsaWVudDtcbmltcG9ydCB7SGVhZGVyLCBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyfSBmcm9tICcuL2dycGMvaGVhZGVycy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NsaWVudFRpbWVvdXRJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL2NsaWVudC10aW1lb3V0LWludGVyY2VwdG9yJztcbmltcG9ydCB7Q2hhbm5lbENyZWRlbnRpYWxzLCBJbnRlcmNlcHRvcn0gZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQge3ZlcnNpb259IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQge0lkbGVHcnBjQ2xpZW50V3JhcHBlcn0gZnJvbSAnLi9ncnBjL2lkbGUtZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0dycGNDbGllbnRXcmFwcGVyfSBmcm9tICcuL2dycGMvZ3JwYy1jbGllbnQtd3JhcHBlcic7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NvbmZpZy9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7Q3JlZGVudGlhbFByb3ZpZGVyLCBNb21lbnRvTG9nZ2VyfSBmcm9tICcuLi8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpbmdDbGllbnRQcm9wcyB7XG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG4gIGVuZHBvaW50OiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxQcm92aWRlcjogQ3JlZGVudGlhbFByb3ZpZGVyO1xufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxOb2RlR3JwY1BpbmdDbGllbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudFdyYXBwZXI6IEdycGNDbGllbnRXcmFwcGVyPGdycGNQaW5nLlBpbmdDbGllbnQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUkVRVUVTVF9USU1FT1VUX01TOiBudW1iZXIgPSA2MCAqIDEwMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBNb21lbnRvTG9nZ2VyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1BpbmdDbGllbnRQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQaW5nQ2xpZW50UHJvcHMpIHtcbiAgICB0aGlzLmxvZ2dlciA9IHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLmdldExvZ2dlcih0aGlzKTtcbiAgICBjb25zdCBoZWFkZXJzID0gW1xuICAgICAgbmV3IEhlYWRlcignQWdlbnQnLCBgbm9kZWpzOnBpbmc6JHt2ZXJzaW9ufWApLFxuICAgICAgbmV3IEhlYWRlcignUnVudGltZS1WZXJzaW9uJywgYG5vZGVqczoke3Byb2Nlc3MudmVyc2lvbnMubm9kZX1gKSxcbiAgICBdO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0gW1xuICAgICAgbmV3IEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIoaGVhZGVycykuY3JlYXRlSGVhZGVyc0ludGVyY2VwdG9yKCksXG4gICAgICBDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3IoSW50ZXJuYWxOb2RlR3JwY1BpbmdDbGllbnQuUkVRVUVTVF9USU1FT1VUX01TKSxcbiAgICBdO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIHBpbmcgY2xpZW50IHVzaW5nIGVuZHBvaW50OiAnJHtwcm9wcy5lbmRwb2ludH1gXG4gICAgKTtcbiAgICB0aGlzLmNsaWVudFdyYXBwZXIgPSBuZXcgSWRsZUdycGNDbGllbnRXcmFwcGVyKHtcbiAgICAgIGNsaWVudEZhY3RvcnlGbjogKCkgPT5cbiAgICAgICAgbmV3IGdycGNQaW5nLlBpbmdDbGllbnQoXG4gICAgICAgICAgcHJvcHMuZW5kcG9pbnQsXG4gICAgICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpXG4gICAgICAgICAgICA/IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVTc2woKVxuICAgICAgICAgICAgOiBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKVxuICAgICAgICApLFxuICAgICAgbG9nZ2VyRmFjdG9yeTogcHJvcHMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCksXG4gICAgICBtYXhJZGxlTWlsbGlzOiBwcm9wcy5jb25maWd1cmF0aW9uXG4gICAgICAgIC5nZXRUcmFuc3BvcnRTdHJhdGVneSgpXG4gICAgICAgIC5nZXRNYXhJZGxlTWlsbGlzKCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdwaW5naW5nLi4uJyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjUGluZy5fUGluZ1JlcXVlc3QoKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jbGllbnRXcmFwcGVyXG4gICAgICAgIC5nZXRDbGllbnQoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIC5QaW5nKHJlcXVlc3QsIHtpbnRlcmNlcHRvcnM6IHRoaXMuaW50ZXJjZXB0b3JzfSwgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdmYWlsZWQgdG8gcGluZycpO1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=

@@ -42,3 +42,4 @@ "use strict";

new headers_interceptor_1.Header('Authorization', this.credentialProvider.getAuthToken()),
new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`),
new headers_interceptor_1.Header('Agent', `nodejs:topic:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];

@@ -193,2 +194,2 @@ this.unaryInterceptors = PubsubClient.initializeUnaryInterceptors(headers, props.configuration, this.unaryRequestTimeoutMs);

PubsubClient.RST_STREAM_NO_ERROR_MESSAGE = 'Received RST_STREAM with code 0';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVic3ViLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9wdWJzdWItY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUFrRDtBQUNsRCxJQUFPLFVBQVUsR0FBRyx3QkFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7QUFDL0MsMEdBQTBHO0FBQzFHLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLDJDQUE0RTtBQUM1RSxpRUFBeUQ7QUFDekQscURBQTJDO0FBQzNDLDRFQUFzRTtBQUN0RSwyQkFRYTtBQUNiLHVFQUEyRTtBQUMzRSxvSEFJbUY7QUFHbkYsc0VBQTZFO0FBRTdFLE1BQWEsWUFBYSxTQUFRLDJDQUFrQztJQWVsRTs7T0FFRztJQUNILFlBQVksS0FBd0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksb0RBQXVCLENBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FDdEMsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsMEJBQTBCLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsMENBQTBDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQ3hGLENBQUM7UUFFRiw4RkFBOEY7UUFDOUYsbURBQW1EO1FBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksMkJBQXVC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QyxLQUFLLENBQzNDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQ3hELENBQUM7WUFDRixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsMkJBQTJCLENBQ3hDLE9BQWlCLEVBQ2pCLGFBQWlDLEVBQ2pDLGdCQUF3QjtRQUV4QixPQUFPO1lBQ0wsSUFBQSxnREFBc0IsRUFBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hFLElBQUksK0NBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLEVBQUU7WUFDakUsSUFBQSxxREFBd0IsRUFBQyxnQkFBZ0IsQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVELGlFQUFpRTtJQUNqRSxtREFBbUQ7SUFDM0MsTUFBTSxDQUFDLCtCQUErQixDQUM1QyxPQUFpQjtRQUVqQixPQUFPLENBQUMsSUFBSSwrQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQzs7QUE3UEgsb0NBOFBDO0FBelB5Qix1Q0FBMEIsR0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlDLDBDQUE2QixHQUFXLEdBQUcsQ0FBQztBQU01Qyx3Q0FBMkIsR0FDakQsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3B1YnN1Yn0gZnJvbSAnQGdvbW9tZW50by9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IGdycGNQdWJzdWIgPSBwdWJzdWIuY2FjaGVfY2xpZW50LnB1YnN1Yjtcbi8vIG9sZGVyIHZlcnNpb25zIG9mIG5vZGUgZG9uJ3QgaGF2ZSB0aGUgZ2xvYmFsIHV0aWwgdmFyaWFibGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMjAzNjVcbmltcG9ydCB7SGVhZGVyLCBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyfSBmcm9tICcuL2dycGMvaGVhZGVycy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NsaWVudFRpbWVvdXRJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL2NsaWVudC10aW1lb3V0LWludGVyY2VwdG9yJztcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXJ9IGZyb20gJy4uL2Vycm9ycy9jYWNoZS1zZXJ2aWNlLWVycm9yLW1hcHBlcic7XG5pbXBvcnQge0NoYW5uZWxDcmVkZW50aWFscywgSW50ZXJjZXB0b3IsIFNlcnZpY2VFcnJvcn0gZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQge1N0YXR1c30gZnJvbSAnQGdycGMvZ3JwYy1qcy9idWlsZC9zcmMvY29uc3RhbnRzJztcbmltcG9ydCB7dmVyc2lvbn0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB7bWlkZGxld2FyZXNJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL21pZGRsZXdhcmVzLWludGVyY2VwdG9yJztcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxQcm92aWRlcixcbiAgTW9tZW50b0xvZ2dlcixcbiAgU3RhdGljR3JwY0NvbmZpZ3VyYXRpb24sXG4gIFRvcGljSXRlbSxcbiAgVG9waWNQdWJsaXNoLFxuICBUb3BpY1N1YnNjcmliZSxcbiAgVW5rbm93bkVycm9yLFxufSBmcm9tICcuLi8nO1xuaW1wb3J0IHt0cnVuY2F0ZVN0cmluZ30gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9pbnRlcm5hbC91dGlscyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdFB1YnN1YkNsaWVudCxcbiAgU2VuZFN1YnNjcmliZU9wdGlvbnMsXG4gIFByZXBhcmVTdWJzY3JpYmVDYWxsYmFja09wdGlvbnMsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvQWJzdHJhY3RQdWJzdWJDbGllbnQnO1xuaW1wb3J0IHtUb3BpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2NvbmZpZy90b3BpYy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7VG9waWNDbGllbnRQcm9wc1dpdGhDb25maWd1cmF0aW9ufSBmcm9tICcuL3RvcGljLWNsaWVudC1wcm9wcy13aXRoLWNvbmZpZyc7XG5pbXBvcnQge2dycGNDaGFubmVsT3B0aW9uc0Zyb21HcnBjQ29uZmlnfSBmcm9tICcuL2dycGMvZ3JwYy1jaGFubmVsLW9wdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgUHVic3ViQ2xpZW50IGV4dGVuZHMgQWJzdHJhY3RQdWJzdWJDbGllbnQ8U2VydmljZUVycm9yPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBncnBjUHVic3ViLlB1YnN1YkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0aW9uOiBUb3BpY0NvbmZpZ3VyYXRpb247XG4gIHByb3RlY3RlZCBvdmVycmlkZSByZWFkb25seSBjcmVkZW50aWFsUHJvdmlkZXI6IENyZWRlbnRpYWxQcm92aWRlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmFyeVJlcXVlc3RUaW1lb3V0TXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVM6IG51bWJlciA9IDUgKiAxMDAwO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9TRVNTSU9OX01FTU9SWV9NQjogbnVtYmVyID0gMjU2O1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbG9nZ2VyOiBNb21lbnRvTG9nZ2VyO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI6IENhY2hlU2VydmljZUVycm9yTWFwcGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuYXJ5SW50ZXJjZXB0b3JzOiBJbnRlcmNlcHRvcltdO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0cmVhbWluZ0ludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSU1RfU1RSRUFNX05PX0VSUk9SX01FU1NBR0UgPVxuICAgICdSZWNlaXZlZCBSU1RfU1RSRUFNIHdpdGggY29kZSAwJztcblxuICAvKipcbiAgICogQHBhcmFtIHtUb3BpY0NsaWVudFByb3BzfSBwcm9wc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFRvcGljQ2xpZW50UHJvcHNXaXRoQ29uZmlndXJhdGlvbikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gcHJvcHMuY29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlciA9IHByb3BzLmNyZWRlbnRpYWxQcm92aWRlcjtcbiAgICB0aGlzLmxvZ2dlciA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCkuZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBuZXcgQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIoXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0VGhyb3dPbkVycm9ycygpXG4gICAgKTtcbiAgICB0aGlzLnVuYXJ5UmVxdWVzdFRpbWVvdXRNcyA9IFB1YnN1YkNsaWVudC5ERUZBVUxUX1JFUVVFU1RfVElNRU9VVF9NUztcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyB0b3BpYyBjbGllbnQgdXNpbmcgZW5kcG9pbnQ6ICcke3RoaXMuY3JlZGVudGlhbFByb3ZpZGVyLmdldENhY2hlRW5kcG9pbnQoKX0nYFxuICAgICk7XG5cbiAgICAvLyBOT1RFOiBUaGlzIGlzIGhhcmQtY29kZWQgZm9yIG5vdyBidXQgd2UgbWF5IHdhbnQgdG8gZXhwb3NlIGl0IHZpYSBUb3BpY0NvbmZpZ3VyYXRpb24gaW4gdGhlXG4gICAgLy8gZnV0dXJlLCBhcyB3ZSBkbyB3aXRoIHNvbWUgb2YgdGhlIG90aGVyIGNsaWVudHMuXG4gICAgY29uc3QgZ3JwY0NvbmZpZyA9IG5ldyBTdGF0aWNHcnBjQ29uZmlndXJhdGlvbih7XG4gICAgICBkZWFkbGluZU1pbGxpczogdGhpcy51bmFyeVJlcXVlc3RUaW1lb3V0TXMsXG4gICAgICBtYXhTZXNzaW9uTWVtb3J5TWI6IFB1YnN1YkNsaWVudC5ERUZBVUxUX01BWF9TRVNTSU9OX01FTU9SWV9NQixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zID0gZ3JwY0NoYW5uZWxPcHRpb25zRnJvbUdycGNDb25maWcoZ3JwY0NvbmZpZyk7XG5cbiAgICB0aGlzLmNsaWVudCA9IG5ldyBncnBjUHVic3ViLlB1YnN1YkNsaWVudChcbiAgICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyLmdldENhY2hlRW5kcG9pbnQoKSxcbiAgICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyLmlzQ2FjaGVFbmRwb2ludFNlY3VyZSgpXG4gICAgICAgID8gQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpXG4gICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCksXG4gICAgICBjaGFubmVsT3B0aW9uc1xuICAgICk7XG5cbiAgICBjb25zdCBoZWFkZXJzOiBIZWFkZXJbXSA9IFtcbiAgICAgIG5ldyBIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRBdXRoVG9rZW4oKSksXG4gICAgICBuZXcgSGVhZGVyKCdBZ2VudCcsIGBub2RlanM6JHt2ZXJzaW9ufWApLFxuICAgIF07XG4gICAgdGhpcy51bmFyeUludGVyY2VwdG9ycyA9IFB1YnN1YkNsaWVudC5pbml0aWFsaXplVW5hcnlJbnRlcmNlcHRvcnMoXG4gICAgICBoZWFkZXJzLFxuICAgICAgcHJvcHMuY29uZmlndXJhdGlvbixcbiAgICAgIHRoaXMudW5hcnlSZXF1ZXN0VGltZW91dE1zXG4gICAgKTtcbiAgICB0aGlzLnN0cmVhbWluZ0ludGVyY2VwdG9ycyA9XG4gICAgICBQdWJzdWJDbGllbnQuaW5pdGlhbGl6ZVN0cmVhbWluZ0ludGVyY2VwdG9ycyhoZWFkZXJzKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXRFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0Q2FjaGVFbmRwb2ludCgpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBVc2luZyBjYWNoZSBlbmRwb2ludDogJHtlbmRwb2ludH1gKTtcbiAgICByZXR1cm4gZW5kcG9pbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgc2VuZFB1Ymxpc2goXG4gICAgY2FjaGVOYW1lOiBzdHJpbmcsXG4gICAgdG9waWNOYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxUb3BpY1B1Ymxpc2guUmVzcG9uc2U+IHtcbiAgICBjb25zdCB0b3BpY1ZhbHVlID0gbmV3IGdycGNQdWJzdWIuX1RvcGljVmFsdWUoKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdG9waWNWYWx1ZS50ZXh0ID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvcGljVmFsdWUuYmluYXJ5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjUHVic3ViLl9QdWJsaXNoUmVxdWVzdCh7XG4gICAgICBjYWNoZV9uYW1lOiBjYWNoZU5hbWUsXG4gICAgICB0b3BpYzogdG9waWNOYW1lLFxuICAgICAgdmFsdWU6IHRvcGljVmFsdWUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5jbGllbnQuUHVibGlzaChcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge1xuICAgICAgICAgIGludGVyY2VwdG9yczogdGhpcy51bmFyeUludGVyY2VwdG9ycyxcbiAgICAgICAgfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwKSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBUb3BpY1B1Ymxpc2guU3VjY2VzcygpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXNvbHZlT3JSZWplY3RFcnJvcih7XG4gICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBUb3BpY1B1Ymxpc2guRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmVtYXJrIFRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0YXJ0aW5nIHRoZSBzdHJlYW0gaWYgaXQgZW5kcyB1bmV4cGVjdGVkbHkuXG4gICAqIFNpbmNlIHdlIHJldHVybiBhIHNpbmdsZSBzdWJzY3JpcHRpb24gb2JqZWN0IHRvIHRoZSB1c2VyLCB3ZSBuZWVkIHRvIHVwZGF0ZSBpdCB3aXRoIHRoZVxuICAgKiB1bnN1YnNjcmliZSBmdW5jdGlvbiBzaG91bGQgd2UgcmVzdGFydCB0aGUgc3RyZWFtLiBUaGlzIGlzIHdoeSB3ZSBwYXNzIHRoZSBzdWJzY3JpcHRpb25cbiAgICogc3RhdGUgYW5kIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhpcyBtZXRob2QuXG4gICAqXG4gICAqIEhhbmRsaW5nIGEgY2FjaGUgbm90IGV4aXN0cyByZXF1aXJlcyBzcGVjaWFsIGNhcmUgYXMgd2VsbC4gSW4gdGhlIG1vc3QgbGlrZWx5IGNhc2UsXG4gICAqIHdoZW4gdGhlIHN1YnNjcmlwdGlvbiBzdGFydHMgYW5kIHRoZSBjYWNoZSBkb2VzIG5vdCBleGlzdCwgd2UgcmVjZWl2ZSBhbiBlcnJvciBpbW1lZGlhdGVseS5cbiAgICogV2UgcmV0dXJuIGFuIGVycm9yIGZyb20gdGhlIHN1YnNjcmliZSBtZXRob2QgYW5kIGRvIGltbWVkaWF0ZWx5IHVuc3Vic2NyaWJlLiBJbiBhIGRpc3RpbmN0LFxuICAgKiB1bmxpa2VseSBidXQgcG9zc2libGUgY2FzZSwgdGhlIHVzZXIgZGVsZXRlcyB0aGUgY2FjaGUgd2hpbGUgdGhlIHN0cmVhbSBpcyBydW5uaW5nLiBJbiB0aGlzXG4gICAqIGNhc2Ugd2UgYWxyZWFkeSByZXR1cm5lZCBhIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhlIHVzZXIsIHNvIHdlIGluc3RlYWQgY2FuY2VsIHRoZSBzdHJlYW0gYW5kXG4gICAqIHByb3BhZ2F0ZSBhbiBlcnJvciB0byB0aGUgdXNlciB2aWEgdGhlIGVycm9yIGhhbmRsZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VuZFN1YnNjcmliZShcbiAgICBvcHRpb25zOiBTZW5kU3Vic2NyaWJlT3B0aW9uc1xuICApOiBQcm9taXNlPFRvcGljU3Vic2NyaWJlLlJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjUHVic3ViLl9TdWJzY3JpcHRpb25SZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IG9wdGlvbnMuY2FjaGVOYW1lLFxuICAgICAgdG9waWM6IG9wdGlvbnMudG9waWNOYW1lLFxuICAgICAgcmVzdW1lX2F0X3RvcGljX3NlcXVlbmNlX251bWJlcjpcbiAgICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5yZXN1bWVBdFRvcGljU2VxdWVuY2VOdW1iZXIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjYWxsID0gdGhpcy5jbGllbnQuU3Vic2NyaWJlKHJlcXVlc3QsIHtcbiAgICAgIGludGVyY2VwdG9yczogdGhpcy5zdHJlYW1pbmdJbnRlcmNlcHRvcnMsXG4gICAgfSk7XG4gICAgb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5zZXRTdWJzY3JpYmVkKCk7XG5cbiAgICAvLyBBbGxvdyB0aGUgY2FsbGVyIHRvIGNhbmNlbCB0aGUgc3RyZWFtLlxuICAgIC8vIE5vdGUgdGhhdCBiZWNhdXNlIHdlIHJlc3RhcnQgdGhlIHN0cmVhbSBvbiBlcnJvciBvciBzdHJlYW0gZW5kLFxuICAgIC8vIHdlIG5lZWQgdG8gZW5zdXJlIHdlIGtlZXAgdGhlIHNhbWUgc3Vic2NyaXB0aW9uIG9iamVjdC4gVGhhdCB3YXlcbiAgICAvLyBzdHJlYW0gcmVzdGFydHMgYXJlIHRyYW5zcGFyZW50IHRvIHRoZSBjYWxsZXIuXG4gICAgb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS51bnN1YnNjcmliZUZuID0gKCkgPT4ge1xuICAgICAgY2FsbC5jYW5jZWwoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBwcmVwYXJlQ2FsbGJhY2tPcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zID0ge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICByZXN0YXJ0ZWREdWVUb0Vycm9yOiBmYWxzZSxcbiAgICAgICAgZmlyc3RNZXNzYWdlOiB0cnVlLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgfTtcbiAgICAgIGNhbGwub24oJ2RhdGEnLCB0aGlzLnByZXBhcmVEYXRhQ2FsbGJhY2socHJlcGFyZUNhbGxiYWNrT3B0aW9ucykpO1xuICAgICAgY2FsbC5vbignZXJyb3InLCB0aGlzLnByZXBhcmVFcnJvckNhbGxiYWNrKHByZXBhcmVDYWxsYmFja09wdGlvbnMpKTtcbiAgICAgIGNhbGwub24oJ2VuZCcsIHRoaXMucHJlcGFyZUVuZENhbGxiYWNrKHByZXBhcmVDYWxsYmFja09wdGlvbnMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZURhdGFDYWxsYmFjayhcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zXG4gICk6IChyZXNwOiBncnBjUHVic3ViLl9TdWJzY3JpcHRpb25JdGVtKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKHJlc3A6IGdycGNQdWJzdWIuX1N1YnNjcmlwdGlvbkl0ZW0pID0+IHtcbiAgICAgIGlmIChvcHRpb25zLmZpcnN0TWVzc2FnZSkge1xuICAgICAgICBvcHRpb25zLnJlc29sdmUob3B0aW9ucy5zdWJzY3JpcHRpb24pO1xuICAgICAgfVxuICAgICAgb3B0aW9ucy5maXJzdE1lc3NhZ2UgPSBmYWxzZTtcblxuICAgICAgaWYgKHJlc3A/Lml0ZW0pIHtcbiAgICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5sYXN0VG9waWNTZXF1ZW5jZU51bWJlciA9XG4gICAgICAgICAgcmVzcC5pdGVtLnRvcGljX3NlcXVlbmNlX251bWJlcjtcbiAgICAgICAgaWYgKHJlc3AuaXRlbS52YWx1ZS50ZXh0KSB7XG4gICAgICAgICAgb3B0aW9ucy5vbkl0ZW0oXG4gICAgICAgICAgICBuZXcgVG9waWNJdGVtKHJlc3AuaXRlbS52YWx1ZS50ZXh0LCB7XG4gICAgICAgICAgICAgIHRva2VuSWQ6IHJlc3AuaXRlbS5wdWJsaXNoZXJfaWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzcC5pdGVtLnZhbHVlLmJpbmFyeSkge1xuICAgICAgICAgIG9wdGlvbnMub25JdGVtKFxuICAgICAgICAgICAgbmV3IFRvcGljSXRlbShyZXNwLml0ZW0udmFsdWUuYmluYXJ5LCB7XG4gICAgICAgICAgICAgIHRva2VuSWQ6IHJlc3AuaXRlbS5wdWJsaXNoZXJfaWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAnUmVjZWl2ZWQgc3Vic2NyaXB0aW9uIGl0ZW0gd2l0aCB1bmtub3duIHR5cGU7IHRvcGljOiAlcycsXG4gICAgICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSlcbiAgICAgICAgICApO1xuICAgICAgICAgIG9wdGlvbnMub25FcnJvcihcbiAgICAgICAgICAgIG5ldyBUb3BpY1N1YnNjcmliZS5FcnJvcihcbiAgICAgICAgICAgICAgbmV3IFVua25vd25FcnJvcignVW5rbm93biBpdGVtIHZhbHVlIHR5cGUnKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9wdGlvbnMuc3Vic2NyaXB0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZXNwPy5oZWFydGJlYXQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgJ1JlY2VpdmVkIGhlYXJ0YmVhdCBmcm9tIHN1YnNjcmlwdGlvbiBzdHJlYW07IHRvcGljOiAlcycsXG4gICAgICAgICAgdHJ1bmNhdGVTdHJpbmcob3B0aW9ucy50b3BpY05hbWUpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHJlc3A/LmRpc2NvbnRpbnVpdHkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIudHJhY2UoXG4gICAgICAgICAgJ1JlY2VpdmVkIGRpc2NvbnRpbnVpdHkgZnJvbSBzdWJzY3JpcHRpb24gc3RyZWFtOyB0b3BpYzogJXMnLFxuICAgICAgICAgIHRydW5jYXRlU3RyaW5nKG9wdGlvbnMudG9waWNOYW1lKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgJ1JlY2VpdmVkIHVua25vd24gc3Vic2NyaXB0aW9uIGl0ZW07IHRvcGljOiAlcycsXG4gICAgICAgICAgdHJ1bmNhdGVTdHJpbmcob3B0aW9ucy50b3BpY05hbWUpXG4gICAgICAgICk7XG4gICAgICAgIG9wdGlvbnMub25FcnJvcihcbiAgICAgICAgICBuZXcgVG9waWNTdWJzY3JpYmUuRXJyb3IobmV3IFVua25vd25FcnJvcignVW5rbm93biBpdGVtIHR5cGUnKSksXG4gICAgICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb25cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlRXJyb3JDYWxsYmFjayhcbiAgICBvcHRpb25zOiBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zXG4gICk6IChlcnI6IEVycm9yKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKGVycjogRXJyb3IpID0+IHtcbiAgICAgIC8vIFdoZW4gdGhlIGNhbGxlciB1bnN1YnNjcmliZXMsIHdlIG1heSBnZXQgYSBmb2xsb3cgb24gZXJyb3IsIHdoaWNoIHdlIGlnbm9yZS5cbiAgICAgIGlmICghb3B0aW9ucy5zdWJzY3JpcHRpb25TdGF0ZS5pc1N1YnNjcmliZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXJ2aWNlRXJyb3IgPSBlcnIgYXMgdW5rbm93biBhcyBTZXJ2aWNlRXJyb3I7XG4gICAgICBjb25zdCBpc1JzdFN0cmVhbU5vRXJyb3IgPVxuICAgICAgICBzZXJ2aWNlRXJyb3IuY29kZSA9PT0gU3RhdHVzLklOVEVSTkFMICYmXG4gICAgICAgIHNlcnZpY2VFcnJvci5kZXRhaWxzID09PSBQdWJzdWJDbGllbnQuUlNUX1NUUkVBTV9OT19FUlJPUl9NRVNTQUdFO1xuICAgICAgY29uc3QgbW9tZW50b0Vycm9yID0gbmV3IFRvcGljU3Vic2NyaWJlLkVycm9yKFxuICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLmNvbnZlcnRFcnJvcihzZXJ2aWNlRXJyb3IpXG4gICAgICApO1xuICAgICAgdGhpcy5oYW5kbGVTdWJzY3JpYmVFcnJvcihvcHRpb25zLCBtb21lbnRvRXJyb3IsIGlzUnN0U3RyZWFtTm9FcnJvcik7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVVbmFyeUludGVyY2VwdG9ycyhcbiAgICBoZWFkZXJzOiBIZWFkZXJbXSxcbiAgICBjb25maWd1cmF0aW9uOiBUb3BpY0NvbmZpZ3VyYXRpb24sXG4gICAgcmVxdWVzdFRpbWVvdXRNczogbnVtYmVyXG4gICk6IEludGVyY2VwdG9yW10ge1xuICAgIHJldHVybiBbXG4gICAgICBtaWRkbGV3YXJlc0ludGVyY2VwdG9yKGNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLCBbXSwge30pLFxuICAgICAgbmV3IEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIoaGVhZGVycykuY3JlYXRlSGVhZGVyc0ludGVyY2VwdG9yKCksXG4gICAgICBDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3IocmVxdWVzdFRpbWVvdXRNcyksXG4gICAgXTtcbiAgfVxuXG4gIC8vIFRPRE8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudG9ocS9jbGllbnQtc2RrLW5vZGVqcy9pc3N1ZXMvMzQ5XG4gIC8vIGRlY2lkZSBvbiBzdHJlYW1pbmcgaW50ZXJjZXB0b3JzIGFuZCBtaWRkbGV3YXJlc1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplU3RyZWFtaW5nSW50ZXJjZXB0b3JzKFxuICAgIGhlYWRlcnM6IEhlYWRlcltdXG4gICk6IEludGVyY2VwdG9yW10ge1xuICAgIHJldHVybiBbbmV3IEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXIoaGVhZGVycykuY3JlYXRlSGVhZGVyc0ludGVyY2VwdG9yKCldO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVic3ViLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcm5hbC9wdWJzdWItY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUFrRDtBQUNsRCxJQUFPLFVBQVUsR0FBRyx3QkFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7QUFDL0MsMEdBQTBHO0FBQzFHLG9FQUE2RTtBQUM3RSxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLDJDQUE0RTtBQUM1RSxpRUFBeUQ7QUFDekQscURBQTJDO0FBQzNDLDRFQUFzRTtBQUN0RSwyQkFRYTtBQUNiLHVFQUEyRTtBQUMzRSxvSEFJbUY7QUFHbkYsc0VBQTZFO0FBRTdFLE1BQWEsWUFBYSxTQUFRLDJDQUFrQztJQWVsRTs7T0FFRztJQUNILFlBQVksS0FBd0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksb0RBQXVCLENBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FDdEMsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsMEJBQTBCLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsMENBQTBDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQ3hGLENBQUM7UUFFRiw4RkFBOEY7UUFDOUYsbURBQW1EO1FBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksMkJBQXVCLENBQUM7WUFDN0MsY0FBYyxFQUFFLElBQUksQ0FBQyxxQkFBcUI7WUFDMUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLDZCQUE2QjtTQUMvRCxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFBLHVEQUFnQyxFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsRUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUFFO1lBQzdDLENBQUMsQ0FBQyw0QkFBa0IsQ0FBQyxTQUFTLEVBQUU7WUFDaEMsQ0FBQyxDQUFDLDRCQUFrQixDQUFDLGNBQWMsRUFBRSxFQUN2QyxjQUFjLENBQ2YsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFhO1lBQ3hCLElBQUksNEJBQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25FLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLHNCQUFPLEVBQUUsQ0FBQztZQUM5QyxJQUFJLDRCQUFNLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pFLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLDJCQUEyQixDQUMvRCxPQUFPLEVBQ1AsS0FBSyxDQUFDLGFBQWEsRUFDbkIsSUFBSSxDQUFDLHFCQUFxQixDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQjtZQUN4QixZQUFZLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVlLFdBQVc7UUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXLENBQ3pCLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEtBQTBCO1FBRTFCLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQztZQUM3QyxVQUFVLEVBQUUsU0FBUztZQUNyQixLQUFLLEVBQUUsU0FBUztZQUNoQixLQUFLLEVBQUUsVUFBVTtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2pCLE9BQU8sRUFDUDtnQkFDRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNyQyxFQUNELENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNaLElBQUksSUFBSSxFQUFFO29CQUNSLE9BQU8sQ0FBQyxJQUFJLGdCQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztpQkFDckM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDO3dCQUNoRCxHQUFHLEVBQUUsR0FBRzt3QkFDUixzQkFBc0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksZ0JBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUN0RCxTQUFTLEVBQUUsT0FBTzt3QkFDbEIsUUFBUSxFQUFFLE1BQU07cUJBQ2pCLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ08sYUFBYSxDQUNyQixPQUE2QjtRQUU3QixNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztZQUNsRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQ3hCLCtCQUErQixFQUM3QixPQUFPLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtTQUN6QyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFMUMseUNBQXlDO1FBQ3pDLGtFQUFrRTtRQUNsRSxtRUFBbUU7UUFDbkUsaURBQWlEO1FBQ2pELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7UUFFRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLE1BQU0sc0JBQXNCLEdBQW9DO2dCQUM5RCxHQUFHLE9BQU87Z0JBQ1YsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLE9BQU87YUFDUixDQUFDO1lBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQ3pCLE9BQXdDO1FBRXhDLE9BQU8sQ0FBQyxJQUFrQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO2dCQUN4QixPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN2QztZQUNELE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRTdCLElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksRUFBRTtnQkFDZCxPQUFPLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCO29CQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FDWixJQUFJLGFBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7d0JBQ2xDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7cUJBQ2hDLENBQUMsQ0FDSCxDQUFDO2lCQUNIO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUNqQyxPQUFPLENBQUMsTUFBTSxDQUNaLElBQUksYUFBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTt3QkFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtxQkFDaEMsQ0FBQyxDQUNILENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YseURBQXlELEVBQ3pELElBQUEsc0JBQWMsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQ2xDLENBQUM7b0JBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FDYixJQUFJLGtCQUFjLENBQUMsS0FBSyxDQUN0QixJQUFJLGdCQUFZLENBQUMseUJBQXlCLENBQUMsQ0FDNUMsRUFDRCxPQUFPLENBQUMsWUFBWSxDQUNyQixDQUFDO2lCQUNIO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsU0FBUyxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix3REFBd0QsRUFDeEQsSUFBQSxzQkFBYyxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDbEMsQ0FBQzthQUNIO2lCQUFNLElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLGFBQWEsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsNERBQTRELEVBQzVELElBQUEsc0JBQWMsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQ2xDLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwrQ0FBK0MsRUFDL0MsSUFBQSxzQkFBYyxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDbEMsQ0FBQztnQkFDRixPQUFPLENBQUMsT0FBTyxDQUNiLElBQUksa0JBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxnQkFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFDL0QsT0FBTyxDQUFDLFlBQVksQ0FDckIsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUMxQixPQUF3QztRQUV4QyxPQUFPLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDcEIsK0VBQStFO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO2dCQUMzQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLFlBQVksR0FBRyxHQUE4QixDQUFDO1lBQ3BELE1BQU0sa0JBQWtCLEdBQ3RCLFlBQVksQ0FBQyxJQUFJLEtBQUssa0JBQU0sQ0FBQyxRQUFRO2dCQUNyQyxZQUFZLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FBQywyQkFBMkIsQ0FBQztZQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLGtCQUFjLENBQUMsS0FBSyxDQUMzQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUN4RCxDQUFDO1lBQ0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUN4QyxPQUFpQixFQUNqQixhQUFpQyxFQUNqQyxnQkFBd0I7UUFFeEIsT0FBTztZQUNMLElBQUEsZ0RBQXNCLEVBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoRSxJQUFJLCtDQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLHdCQUF3QixFQUFFO1lBQ2pFLElBQUEscURBQXdCLEVBQUMsZ0JBQWdCLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsbURBQW1EO0lBQzNDLE1BQU0sQ0FBQywrQkFBK0IsQ0FDNUMsT0FBaUI7UUFFakIsT0FBTyxDQUFDLElBQUksK0NBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7O0FBOVBILG9DQStQQztBQTFQeUIsdUNBQTBCLEdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM5QywwQ0FBNkIsR0FBVyxHQUFHLENBQUM7QUFNNUMsd0NBQTJCLEdBQ2pELGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwdWJzdWJ9IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzJztcbmltcG9ydCBncnBjUHVic3ViID0gcHVic3ViLmNhY2hlX2NsaWVudC5wdWJzdWI7XG4vLyBvbGRlciB2ZXJzaW9ucyBvZiBub2RlIGRvbid0IGhhdmUgdGhlIGdsb2JhbCB1dGlsIHZhcmlhYmxlcyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzIwMzY1XG5pbXBvcnQge0hlYWRlciwgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcn0gZnJvbSAnLi9ncnBjL2hlYWRlcnMtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDbGllbnRUaW1lb3V0SW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9jbGllbnQtdGltZW91dC1pbnRlcmNlcHRvcic7XG5pbXBvcnQge0NhY2hlU2VydmljZUVycm9yTWFwcGVyfSBmcm9tICcuLi9lcnJvcnMvY2FjaGUtc2VydmljZS1lcnJvci1tYXBwZXInO1xuaW1wb3J0IHtDaGFubmVsQ3JlZGVudGlhbHMsIEludGVyY2VwdG9yLCBTZXJ2aWNlRXJyb3J9IGZyb20gJ0BncnBjL2dycGMtanMnO1xuaW1wb3J0IHtTdGF0dXN9IGZyb20gJ0BncnBjL2dycGMtanMvYnVpbGQvc3JjL2NvbnN0YW50cyc7XG5pbXBvcnQge3ZlcnNpb259IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQge21pZGRsZXdhcmVzSW50ZXJjZXB0b3J9IGZyb20gJy4vZ3JwYy9taWRkbGV3YXJlcy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge1xuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIE1vbWVudG9Mb2dnZXIsXG4gIFN0YXRpY0dycGNDb25maWd1cmF0aW9uLFxuICBUb3BpY0l0ZW0sXG4gIFRvcGljUHVibGlzaCxcbiAgVG9waWNTdWJzY3JpYmUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnLi4vJztcbmltcG9ydCB7dHJ1bmNhdGVTdHJpbmd9IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RQdWJzdWJDbGllbnQsXG4gIFNlbmRTdWJzY3JpYmVPcHRpb25zLFxuICBQcmVwYXJlU3Vic2NyaWJlQ2FsbGJhY2tPcHRpb25zLFxufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL2ludGVybmFsL2NsaWVudHMvcHVic3ViL0Fic3RyYWN0UHVic3ViQ2xpZW50JztcbmltcG9ydCB7VG9waWNDb25maWd1cmF0aW9ufSBmcm9tICcuLi9jb25maWcvdG9waWMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1RvcGljQ2xpZW50UHJvcHNXaXRoQ29uZmlndXJhdGlvbn0gZnJvbSAnLi90b3BpYy1jbGllbnQtcHJvcHMtd2l0aC1jb25maWcnO1xuaW1wb3J0IHtncnBjQ2hhbm5lbE9wdGlvbnNGcm9tR3JwY0NvbmZpZ30gZnJvbSAnLi9ncnBjL2dycGMtY2hhbm5lbC1vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIFB1YnN1YkNsaWVudCBleHRlbmRzIEFic3RyYWN0UHVic3ViQ2xpZW50PFNlcnZpY2VFcnJvcj4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogZ3JwY1B1YnN1Yi5QdWJzdWJDbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogVG9waWNDb25maWd1cmF0aW9uO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyOiBDcmVkZW50aWFsUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5hcnlSZXF1ZXN0VGltZW91dE1zOiBudW1iZXI7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUX01TOiBudW1iZXIgPSA1ICogMTAwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NQVhfU0VTU0lPTl9NRU1PUllfTUI6IG51bWJlciA9IDI1NjtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IGNhY2hlU2VydmljZUVycm9yTWFwcGVyOiBDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmFyeUludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW1pbmdJbnRlcmNlcHRvcnM6IEludGVyY2VwdG9yW107XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUlNUX1NUUkVBTV9OT19FUlJPUl9NRVNTQUdFID1cbiAgICAnUmVjZWl2ZWQgUlNUX1NUUkVBTSB3aXRoIGNvZGUgMCc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9waWNDbGllbnRQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBUb3BpY0NsaWVudFByb3BzV2l0aENvbmZpZ3VyYXRpb24pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHByb3BzLmNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIgPSBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXI7XG4gICAgdGhpcy5sb2dnZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0TG9nZ2VyRmFjdG9yeSgpLmdldExvZ2dlcih0aGlzKTtcbiAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyID0gbmV3IENhY2hlU2VydmljZUVycm9yTWFwcGVyKFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmdldFRocm93T25FcnJvcnMoKVxuICAgICk7XG4gICAgdGhpcy51bmFyeVJlcXVlc3RUaW1lb3V0TXMgPSBQdWJzdWJDbGllbnQuREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVM7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgQ3JlYXRpbmcgdG9waWMgY2xpZW50IHVzaW5nIGVuZHBvaW50OiAnJHt0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDYWNoZUVuZHBvaW50KCl9J2BcbiAgICApO1xuXG4gICAgLy8gTk9URTogVGhpcyBpcyBoYXJkLWNvZGVkIGZvciBub3cgYnV0IHdlIG1heSB3YW50IHRvIGV4cG9zZSBpdCB2aWEgVG9waWNDb25maWd1cmF0aW9uIGluIHRoZVxuICAgIC8vIGZ1dHVyZSwgYXMgd2UgZG8gd2l0aCBzb21lIG9mIHRoZSBvdGhlciBjbGllbnRzLlxuICAgIGNvbnN0IGdycGNDb25maWcgPSBuZXcgU3RhdGljR3JwY0NvbmZpZ3VyYXRpb24oe1xuICAgICAgZGVhZGxpbmVNaWxsaXM6IHRoaXMudW5hcnlSZXF1ZXN0VGltZW91dE1zLFxuICAgICAgbWF4U2Vzc2lvbk1lbW9yeU1iOiBQdWJzdWJDbGllbnQuREVGQVVMVF9NQVhfU0VTU0lPTl9NRU1PUllfTUIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsT3B0aW9ucyA9IGdycGNDaGFubmVsT3B0aW9uc0Zyb21HcnBjQ29uZmlnKGdycGNDb25maWcpO1xuXG4gICAgdGhpcy5jbGllbnQgPSBuZXcgZ3JwY1B1YnN1Yi5QdWJzdWJDbGllbnQoXG4gICAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDYWNoZUVuZHBvaW50KCksXG4gICAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5pc0NhY2hlRW5kcG9pbnRTZWN1cmUoKVxuICAgICAgICA/IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVTc2woKVxuICAgICAgICA6IENoYW5uZWxDcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpLFxuICAgICAgY2hhbm5lbE9wdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgaGVhZGVyczogSGVhZGVyW10gPSBbXG4gICAgICBuZXcgSGVhZGVyKCdBdXRob3JpemF0aW9uJywgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0QXV0aFRva2VuKCkpLFxuICAgICAgbmV3IEhlYWRlcignQWdlbnQnLCBgbm9kZWpzOnRvcGljOiR7dmVyc2lvbn1gKSxcbiAgICAgIG5ldyBIZWFkZXIoJ1J1bnRpbWUtVmVyc2lvbicsIGBub2RlanM6JHtwcm9jZXNzLnZlcnNpb25zLm5vZGV9YCksXG4gICAgXTtcbiAgICB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzID0gUHVic3ViQ2xpZW50LmluaXRpYWxpemVVbmFyeUludGVyY2VwdG9ycyhcbiAgICAgIGhlYWRlcnMsXG4gICAgICBwcm9wcy5jb25maWd1cmF0aW9uLFxuICAgICAgdGhpcy51bmFyeVJlcXVlc3RUaW1lb3V0TXNcbiAgICApO1xuICAgIHRoaXMuc3RyZWFtaW5nSW50ZXJjZXB0b3JzID1cbiAgICAgIFB1YnN1YkNsaWVudC5pbml0aWFsaXplU3RyZWFtaW5nSW50ZXJjZXB0b3JzKGhlYWRlcnMpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDYWNoZUVuZHBvaW50KCk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFVzaW5nIGNhY2hlIGVuZHBvaW50OiAke2VuZHBvaW50fWApO1xuICAgIHJldHVybiBlbmRwb2ludDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzZW5kUHVibGlzaChcbiAgICBjYWNoZU5hbWU6IHN0cmluZyxcbiAgICB0b3BpY05hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPFRvcGljUHVibGlzaC5SZXNwb25zZT4ge1xuICAgIGNvbnN0IHRvcGljVmFsdWUgPSBuZXcgZ3JwY1B1YnN1Yi5fVG9waWNWYWx1ZSgpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0b3BpY1ZhbHVlLnRleHQgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9waWNWYWx1ZS5iaW5hcnkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNQdWJzdWIuX1B1Ymxpc2hSZXF1ZXN0KHtcbiAgICAgIGNhY2hlX25hbWU6IGNhY2hlTmFtZSxcbiAgICAgIHRvcGljOiB0b3BpY05hbWUsXG4gICAgICB2YWx1ZTogdG9waWNWYWx1ZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNsaWVudC5QdWJsaXNoKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzLFxuICAgICAgICB9LFxuICAgICAgICAoZXJyLCByZXNwKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3ApIHtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IFRvcGljUHVibGlzaC5TdWNjZXNzKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IFRvcGljUHVibGlzaC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZW1hcmsgVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgZm9yIHJlc3RhcnRpbmcgdGhlIHN0cmVhbSBpZiBpdCBlbmRzIHVuZXhwZWN0ZWRseS5cbiAgICogU2luY2Ugd2UgcmV0dXJuIGEgc2luZ2xlIHN1YnNjcmlwdGlvbiBvYmplY3QgdG8gdGhlIHVzZXIsIHdlIG5lZWQgdG8gdXBkYXRlIGl0IHdpdGggdGhlXG4gICAqIHVuc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCB3ZSByZXN0YXJ0IHRoZSBzdHJlYW0uIFRoaXMgaXMgd2h5IHdlIHBhc3MgdGhlIHN1YnNjcmlwdGlvblxuICAgKiBzdGF0ZSBhbmQgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogSGFuZGxpbmcgYSBjYWNoZSBub3QgZXhpc3RzIHJlcXVpcmVzIHNwZWNpYWwgY2FyZSBhcyB3ZWxsLiBJbiB0aGUgbW9zdCBsaWtlbHkgY2FzZSxcbiAgICogd2hlbiB0aGUgc3Vic2NyaXB0aW9uIHN0YXJ0cyBhbmQgdGhlIGNhY2hlIGRvZXMgbm90IGV4aXN0LCB3ZSByZWNlaXZlIGFuIGVycm9yIGltbWVkaWF0ZWx5LlxuICAgKiBXZSByZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGUgc3Vic2NyaWJlIG1ldGhvZCBhbmQgZG8gaW1tZWRpYXRlbHkgdW5zdWJzY3JpYmUuIEluIGEgZGlzdGluY3QsXG4gICAqIHVubGlrZWx5IGJ1dCBwb3NzaWJsZSBjYXNlLCB0aGUgdXNlciBkZWxldGVzIHRoZSBjYWNoZSB3aGlsZSB0aGUgc3RyZWFtIGlzIHJ1bm5pbmcuIEluIHRoaXNcbiAgICogY2FzZSB3ZSBhbHJlYWR5IHJldHVybmVkIGEgc3Vic2NyaXB0aW9uIG9iamVjdCB0byB0aGUgdXNlciwgc28gd2UgaW5zdGVhZCBjYW5jZWwgdGhlIHN0cmVhbSBhbmRcbiAgICogcHJvcGFnYXRlIGFuIGVycm9yIHRvIHRoZSB1c2VyIHZpYSB0aGUgZXJyb3IgaGFuZGxlci5cbiAgICovXG4gIHByb3RlY3RlZCBzZW5kU3Vic2NyaWJlKFxuICAgIG9wdGlvbnM6IFNlbmRTdWJzY3JpYmVPcHRpb25zXG4gICk6IFByb21pc2U8VG9waWNTdWJzY3JpYmUuUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNQdWJzdWIuX1N1YnNjcmlwdGlvblJlcXVlc3Qoe1xuICAgICAgY2FjaGVfbmFtZTogb3B0aW9ucy5jYWNoZU5hbWUsXG4gICAgICB0b3BpYzogb3B0aW9ucy50b3BpY05hbWUsXG4gICAgICByZXN1bWVfYXRfdG9waWNfc2VxdWVuY2VfbnVtYmVyOlxuICAgICAgICBvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLnJlc3VtZUF0VG9waWNTZXF1ZW5jZU51bWJlcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbGwgPSB0aGlzLmNsaWVudC5TdWJzY3JpYmUocmVxdWVzdCwge1xuICAgICAgaW50ZXJjZXB0b3JzOiB0aGlzLnN0cmVhbWluZ0ludGVyY2VwdG9ycyxcbiAgICB9KTtcbiAgICBvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLnNldFN1YnNjcmliZWQoKTtcblxuICAgIC8vIEFsbG93IHRoZSBjYWxsZXIgdG8gY2FuY2VsIHRoZSBzdHJlYW0uXG4gICAgLy8gTm90ZSB0aGF0IGJlY2F1c2Ugd2UgcmVzdGFydCB0aGUgc3RyZWFtIG9uIGVycm9yIG9yIHN0cmVhbSBlbmQsXG4gICAgLy8gd2UgbmVlZCB0byBlbnN1cmUgd2Uga2VlcCB0aGUgc2FtZSBzdWJzY3JpcHRpb24gb2JqZWN0LiBUaGF0IHdheVxuICAgIC8vIHN0cmVhbSByZXN0YXJ0cyBhcmUgdHJhbnNwYXJlbnQgdG8gdGhlIGNhbGxlci5cbiAgICBvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLnVuc3Vic2NyaWJlRm4gPSAoKSA9PiB7XG4gICAgICBjYWxsLmNhbmNlbCgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHByZXBhcmVDYWxsYmFja09wdGlvbnM6IFByZXBhcmVTdWJzY3JpYmVDYWxsYmFja09wdGlvbnMgPSB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHJlc3RhcnRlZER1ZVRvRXJyb3I6IGZhbHNlLFxuICAgICAgICBmaXJzdE1lc3NhZ2U6IHRydWUsXG4gICAgICAgIHJlc29sdmUsXG4gICAgICB9O1xuICAgICAgY2FsbC5vbignZGF0YScsIHRoaXMucHJlcGFyZURhdGFDYWxsYmFjayhwcmVwYXJlQ2FsbGJhY2tPcHRpb25zKSk7XG4gICAgICBjYWxsLm9uKCdlcnJvcicsIHRoaXMucHJlcGFyZUVycm9yQ2FsbGJhY2socHJlcGFyZUNhbGxiYWNrT3B0aW9ucykpO1xuICAgICAgY2FsbC5vbignZW5kJywgdGhpcy5wcmVwYXJlRW5kQ2FsbGJhY2socHJlcGFyZUNhbGxiYWNrT3B0aW9ucykpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlRGF0YUNhbGxiYWNrKFxuICAgIG9wdGlvbnM6IFByZXBhcmVTdWJzY3JpYmVDYWxsYmFja09wdGlvbnNcbiAgKTogKHJlc3A6IGdycGNQdWJzdWIuX1N1YnNjcmlwdGlvbkl0ZW0pID0+IHZvaWQge1xuICAgIHJldHVybiAocmVzcDogZ3JwY1B1YnN1Yi5fU3Vic2NyaXB0aW9uSXRlbSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnMuZmlyc3RNZXNzYWdlKSB7XG4gICAgICAgIG9wdGlvbnMucmVzb2x2ZShvcHRpb25zLnN1YnNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgICBvcHRpb25zLmZpcnN0TWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgICBpZiAocmVzcD8uaXRlbSkge1xuICAgICAgICBvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmxhc3RUb3BpY1NlcXVlbmNlTnVtYmVyID1cbiAgICAgICAgICByZXNwLml0ZW0udG9waWNfc2VxdWVuY2VfbnVtYmVyO1xuICAgICAgICBpZiAocmVzcC5pdGVtLnZhbHVlLnRleHQpIHtcbiAgICAgICAgICBvcHRpb25zLm9uSXRlbShcbiAgICAgICAgICAgIG5ldyBUb3BpY0l0ZW0ocmVzcC5pdGVtLnZhbHVlLnRleHQsIHtcbiAgICAgICAgICAgICAgdG9rZW5JZDogcmVzcC5pdGVtLnB1Ymxpc2hlcl9pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNwLml0ZW0udmFsdWUuYmluYXJ5KSB7XG4gICAgICAgICAgb3B0aW9ucy5vbkl0ZW0oXG4gICAgICAgICAgICBuZXcgVG9waWNJdGVtKHJlc3AuaXRlbS52YWx1ZS5iaW5hcnksIHtcbiAgICAgICAgICAgICAgdG9rZW5JZDogcmVzcC5pdGVtLnB1Ymxpc2hlcl9pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICdSZWNlaXZlZCBzdWJzY3JpcHRpb24gaXRlbSB3aXRoIHVua25vd24gdHlwZTsgdG9waWM6ICVzJyxcbiAgICAgICAgICAgIHRydW5jYXRlU3RyaW5nKG9wdGlvbnMudG9waWNOYW1lKVxuICAgICAgICAgICk7XG4gICAgICAgICAgb3B0aW9ucy5vbkVycm9yKFxuICAgICAgICAgICAgbmV3IFRvcGljU3Vic2NyaWJlLkVycm9yKFxuICAgICAgICAgICAgICBuZXcgVW5rbm93bkVycm9yKCdVbmtub3duIGl0ZW0gdmFsdWUgdHlwZScpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb3B0aW9ucy5zdWJzY3JpcHRpb25cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlc3A/LmhlYXJ0YmVhdCkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnUmVjZWl2ZWQgaGVhcnRiZWF0IGZyb20gc3Vic2NyaXB0aW9uIHN0cmVhbTsgdG9waWM6ICVzJyxcbiAgICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzcD8uZGlzY29udGludWl0eSkge1xuICAgICAgICB0aGlzLmxvZ2dlci50cmFjZShcbiAgICAgICAgICAnUmVjZWl2ZWQgZGlzY29udGludWl0eSBmcm9tIHN1YnNjcmlwdGlvbiBzdHJlYW07IHRvcGljOiAlcycsXG4gICAgICAgICAgdHJ1bmNhdGVTdHJpbmcob3B0aW9ucy50b3BpY05hbWUpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAnUmVjZWl2ZWQgdW5rbm93biBzdWJzY3JpcHRpb24gaXRlbTsgdG9waWM6ICVzJyxcbiAgICAgICAgICB0cnVuY2F0ZVN0cmluZyhvcHRpb25zLnRvcGljTmFtZSlcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKFxuICAgICAgICAgIG5ldyBUb3BpY1N1YnNjcmliZS5FcnJvcihuZXcgVW5rbm93bkVycm9yKCdVbmtub3duIGl0ZW0gdHlwZScpKSxcbiAgICAgICAgICBvcHRpb25zLnN1YnNjcmlwdGlvblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVFcnJvckNhbGxiYWNrKFxuICAgIG9wdGlvbnM6IFByZXBhcmVTdWJzY3JpYmVDYWxsYmFja09wdGlvbnNcbiAgKTogKGVycjogRXJyb3IpID0+IHZvaWQge1xuICAgIHJldHVybiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgLy8gV2hlbiB0aGUgY2FsbGVyIHVuc3Vic2NyaWJlcywgd2UgbWF5IGdldCBhIGZvbGxvdyBvbiBlcnJvciwgd2hpY2ggd2UgaWdub3JlLlxuICAgICAgaWYgKCFvcHRpb25zLnN1YnNjcmlwdGlvblN0YXRlLmlzU3Vic2NyaWJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlcnZpY2VFcnJvciA9IGVyciBhcyB1bmtub3duIGFzIFNlcnZpY2VFcnJvcjtcbiAgICAgIGNvbnN0IGlzUnN0U3RyZWFtTm9FcnJvciA9XG4gICAgICAgIHNlcnZpY2VFcnJvci5jb2RlID09PSBTdGF0dXMuSU5URVJOQUwgJiZcbiAgICAgICAgc2VydmljZUVycm9yLmRldGFpbHMgPT09IFB1YnN1YkNsaWVudC5SU1RfU1RSRUFNX05PX0VSUk9SX01FU1NBR0U7XG4gICAgICBjb25zdCBtb21lbnRvRXJyb3IgPSBuZXcgVG9waWNTdWJzY3JpYmUuRXJyb3IoXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIuY29udmVydEVycm9yKHNlcnZpY2VFcnJvcilcbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZVN1YnNjcmliZUVycm9yKG9wdGlvbnMsIG1vbWVudG9FcnJvciwgaXNSc3RTdHJlYW1Ob0Vycm9yKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZVVuYXJ5SW50ZXJjZXB0b3JzKFxuICAgIGhlYWRlcnM6IEhlYWRlcltdLFxuICAgIGNvbmZpZ3VyYXRpb246IFRvcGljQ29uZmlndXJhdGlvbixcbiAgICByZXF1ZXN0VGltZW91dE1zOiBudW1iZXJcbiAgKTogSW50ZXJjZXB0b3JbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG1pZGRsZXdhcmVzSW50ZXJjZXB0b3IoY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCksIFtdLCB7fSksXG4gICAgICBuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKSxcbiAgICAgIENsaWVudFRpbWVvdXRJbnRlcmNlcHRvcihyZXF1ZXN0VGltZW91dE1zKSxcbiAgICBdO1xuICB9XG5cbiAgLy8gVE9ETyBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50b2hxL2NsaWVudC1zZGstbm9kZWpzL2lzc3Vlcy8zNDlcbiAgLy8gZGVjaWRlIG9uIHN0cmVhbWluZyBpbnRlcmNlcHRvcnMgYW5kIG1pZGRsZXdhcmVzXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVTdHJlYW1pbmdJbnRlcmNlcHRvcnMoXG4gICAgaGVhZGVyczogSGVhZGVyW11cbiAgKTogSW50ZXJjZXB0b3JbXSB7XG4gICAgcmV0dXJuIFtuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKV07XG4gIH1cbn1cbiJdfQ==

@@ -23,3 +23,4 @@ "use strict";

new headers_interceptor_1.Header('Authorization', props.credentialProvider.getAuthToken()),
new headers_interceptor_1.Header('Agent', `nodejs:${package_json_1.version}`),
new headers_interceptor_1.Header('Agent', `nodejs:webhook:${package_json_1.version}`),
new headers_interceptor_1.Header('Runtime-Version', `nodejs:${process.versions.node}`),
];

@@ -210,2 +211,2 @@ this.unaryInterceptors = [

WebhookClient.DEFAULT_REQUEST_TIMEOUT_MS = 5 * 1000;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvd2ViaG9vay1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1EO0FBQ25ELElBQU8sV0FBVyxHQUFHLHlCQUFPLENBQUMsT0FBTyxDQUFDO0FBQ3JDLGtEQVc2QjtBQUM3QiwyQ0FBOEQ7QUFFOUQsb0VBQTZFO0FBQzdFLHFEQUEyQztBQUMzQyxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLHVFQUlxRDtBQUdyRCxNQUFhLGFBQWE7SUFReEI7O09BRUc7SUFDSCxZQUFZLEtBQXdDO1FBQ2xELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLG9EQUF1QixDQUN4RCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQ3ZDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxzQkFBTyxFQUFFLENBQUM7U0FDekMsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRztZQUN2QixJQUFJLCtDQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLHdCQUF3QixFQUFFO1lBQ2pFLElBQUEscURBQXdCLEVBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDO1NBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUkseUJBQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUNwRCxL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QUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBRTNELE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FDdEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDcEMsT0FBTyxFQUNQLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBQyxFQUN0QyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDWixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDaEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDO3dCQUNoRCxHQUFHLEVBQUUsR0FBRzt3QkFDUixzQkFBc0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksOEJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDN0QsU0FBUyxFQUFFLE9BQU87d0JBQ2xCLFFBQVEsRUFBRSxNQUFNO3FCQUNqQixDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsT0FBTyxDQUNMLElBQUksOEJBQW1CLENBQUMsT0FBTyxDQUFDO3dCQUM5QixNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7d0JBQzFCLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVzt3QkFDM0IsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTO3FCQUN4QixDQUFDLENBQ0gsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOztBQTVQSCxzQ0E2UEM7QUF4UHlCLHdDQUEwQixHQUFXLENBQUMsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3dlYmhvb2t9IGZyb20gJ0Bnb21vbWVudG8vZ2VuZXJhdGVkLXR5cGVzJztcbmltcG9ydCBncnBjV2ViaG9vayA9IHdlYmhvb2sud2ViaG9vaztcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxQcm92aWRlcixcbiAgTW9tZW50b0xvZ2dlcixcbiAgV2ViaG9vayxcbiAgV2ViaG9va0lkLFxuICBEZWxldGVXZWJob29rLFxuICBQdXRXZWJob29rLFxuICBMaXN0V2ViaG9va3MsXG4gIFBvc3RVcmxXZWJob29rRGVzdGluYXRpb24sXG4gIEdldFdlYmhvb2tTZWNyZXQsXG4gIFJvdGF0ZVdlYmhvb2tTZWNyZXQsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUnO1xuaW1wb3J0IHtDaGFubmVsQ3JlZGVudGlhbHMsIEludGVyY2VwdG9yfSBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7SVdlYmhvb2tDbGllbnR9IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvY2xpZW50cy9wdWJzdWIvSVdlYmhvb2tDbGllbnQnO1xuaW1wb3J0IHtIZWFkZXIsIEhlYWRlckludGVyY2VwdG9yUHJvdmlkZXJ9IGZyb20gJy4vZ3JwYy9oZWFkZXJzLWludGVyY2VwdG9yJztcbmltcG9ydCB7dmVyc2lvbn0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbmltcG9ydCB7Q2xpZW50VGltZW91dEludGVyY2VwdG9yfSBmcm9tICcuL2dycGMvY2xpZW50LXRpbWVvdXQtaW50ZXJjZXB0b3InO1xuaW1wb3J0IHtDYWNoZVNlcnZpY2VFcnJvck1hcHBlcn0gZnJvbSAnLi4vZXJyb3JzL2NhY2hlLXNlcnZpY2UtZXJyb3ItbWFwcGVyJztcbmltcG9ydCB7XG4gIHZhbGlkYXRlQ2FjaGVOYW1lLFxuICB2YWxpZGF0ZVRvcGljTmFtZSxcbiAgdmFsaWRhdGVXZWJob29rTmFtZSxcbn0gZnJvbSAnQGdvbW9tZW50by9zZGstY29yZS9kaXN0L3NyYy9pbnRlcm5hbC91dGlscyc7XG5pbXBvcnQge1RvcGljQ2xpZW50UHJvcHNXaXRoQ29uZmlndXJhdGlvbn0gZnJvbSAnLi90b3BpYy1jbGllbnQtcHJvcHMtd2l0aC1jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgV2ViaG9va0NsaWVudCBpbXBsZW1lbnRzIElXZWJob29rQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSB3ZWJob29rQ2xpZW50OiBncnBjV2ViaG9vay5XZWJob29rQ2xpZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyOiBDcmVkZW50aWFsUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBNb21lbnRvTG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlU2VydmljZUVycm9yTWFwcGVyOiBDYWNoZVNlcnZpY2VFcnJvck1hcHBlcjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVM6IG51bWJlciA9IDUgKiAxMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuYXJ5SW50ZXJjZXB0b3JzOiBJbnRlcmNlcHRvcltdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RvcGljQ2xpZW50UHJvcHN9IHByb3BzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wczogVG9waWNDbGllbnRQcm9wc1dpdGhDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIgPSBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXI7XG4gICAgdGhpcy5sb2dnZXIgPSBwcm9wcy5jb25maWd1cmF0aW9uLmdldExvZ2dlckZhY3RvcnkoKS5nZXRMb2dnZXIodGhpcyk7XG4gICAgdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlciA9IG5ldyBDYWNoZVNlcnZpY2VFcnJvck1hcHBlcihcbiAgICAgIHByb3BzLmNvbmZpZ3VyYXRpb24uZ2V0VGhyb3dPbkVycm9ycygpXG4gICAgKTtcbiAgICBjb25zdCBoZWFkZXJzID0gW1xuICAgICAgbmV3IEhlYWRlcignQXV0aG9yaXphdGlvbicsIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRBdXRoVG9rZW4oKSksXG4gICAgICBuZXcgSGVhZGVyKCdBZ2VudCcsIGBub2RlanM6JHt2ZXJzaW9ufWApLFxuICAgIF07XG4gICAgdGhpcy51bmFyeUludGVyY2VwdG9ycyA9IFtcbiAgICAgIG5ldyBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyKGhlYWRlcnMpLmNyZWF0ZUhlYWRlcnNJbnRlcmNlcHRvcigpLFxuICAgICAgQ2xpZW50VGltZW91dEludGVyY2VwdG9yKFdlYmhvb2tDbGllbnQuREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVMpLFxuICAgIF07XG4gICAgdGhpcy53ZWJob29rQ2xpZW50ID0gbmV3IHdlYmhvb2sud2ViaG9vay5XZWJob29rQ2xpZW50KFxuICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmdldENvbnRyb2xFbmRwb2ludCgpLFxuICAgICAgcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyLmlzQ29udHJvbEVuZHBvaW50U2VjdXJlKClcbiAgICAgICAgPyBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlU3NsKClcbiAgICAgICAgOiBDaGFubmVsQ3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVXZWJob29rKGlkOiBXZWJob29rSWQpOiBQcm9taXNlPERlbGV0ZVdlYmhvb2suUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUoaWQuY2FjaGVOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IERlbGV0ZVdlYmhvb2suRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjV2ViaG9vay5fRGVsZXRlV2ViaG9va1JlcXVlc3Qoe1xuICAgICAgd2ViaG9va19pZDogbmV3IGdycGNXZWJob29rLl9XZWJob29rSWQoe1xuICAgICAgICBjYWNoZV9uYW1lOiBpZC5jYWNoZU5hbWUsXG4gICAgICAgIHdlYmhvb2tfbmFtZTogaWQud2ViaG9va05hbWUsXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnaXNzdWluZyBcIkRlbGV0ZVdlYmhvb2tcIiByZXF1ZXN0Jyk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8RGVsZXRlV2ViaG9vay5SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy53ZWJob29rQ2xpZW50LkRlbGV0ZVdlYmhvb2soXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIHtpbnRlcmNlcHRvcnM6IHRoaXMudW5hcnlJbnRlcmNlcHRvcnN9LFxuICAgICAgICAoZXJyLCBfcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgRGVsZXRlV2ViaG9vay5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IERlbGV0ZVdlYmhvb2suU3VjY2VzcygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0V2ViaG9va3MoY2FjaGU6IHN0cmluZyk6IFByb21pc2U8TGlzdFdlYmhvb2tzLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGNhY2hlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IExpc3RXZWJob29rcy5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNXZWJob29rLl9MaXN0V2ViaG9va1JlcXVlc3Qoe2NhY2hlX25hbWU6IGNhY2hlfSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzc3VpbmcgXCJMaXN0V2ViaG9va3NcIiByZXF1ZXN0Jyk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8TGlzdFdlYmhvb2tzLlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLndlYmhvb2tDbGllbnQuTGlzdFdlYmhvb2tzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgTGlzdFdlYmhvb2tzLkVycm9yKGUpLFxuICAgICAgICAgICAgICByZXNvbHZlRm46IHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgd2ViaG9va3MgPSByZXNwLndlYmhvb2subWFwKHdoID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2ViaG9vazogV2ViaG9vayA9IHtcbiAgICAgICAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgICAgICAgY2FjaGVOYW1lOiB3aC53ZWJob29rX2lkLmNhY2hlX25hbWUsXG4gICAgICAgICAgICAgICAgICB3ZWJob29rTmFtZTogd2gud2ViaG9va19pZC53ZWJob29rX25hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3BpY05hbWU6IHdoLnRvcGljX25hbWUsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb246IG5ldyBQb3N0VXJsV2ViaG9va0Rlc3RpbmF0aW9uKFxuICAgICAgICAgICAgICAgICAgd2guZGVzdGluYXRpb24ucG9zdF91cmxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gd2ViaG9vaztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgTGlzdFdlYmhvb2tzLlN1Y2Nlc3Mod2ViaG9va3MpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwdXRXZWJob29rKHdlYmhvb2s6IFdlYmhvb2spOiBQcm9taXNlPFB1dFdlYmhvb2suUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUod2ViaG9vay5pZC5jYWNoZU5hbWUpO1xuICAgICAgdmFsaWRhdGVUb3BpY05hbWUod2ViaG9vay50b3BpY05hbWUpO1xuICAgICAgdmFsaWRhdGVXZWJob29rTmFtZSh3ZWJob29rLmlkLndlYmhvb2tOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IFB1dFdlYmhvb2suRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNXZWJob29rLl9QdXRXZWJob29rUmVxdWVzdCh7XG4gICAgICB3ZWJob29rOiBuZXcgZ3JwY1dlYmhvb2suX1dlYmhvb2soe1xuICAgICAgICB3ZWJob29rX2lkOiBuZXcgZ3JwY1dlYmhvb2suX1dlYmhvb2tJZCh7XG4gICAgICAgICAgY2FjaGVfbmFtZTogd2ViaG9vay5pZC5jYWNoZU5hbWUsXG4gICAgICAgICAgd2ViaG9va19uYW1lOiB3ZWJob29rLmlkLndlYmhvb2tOYW1lLFxuICAgICAgICB9KSxcbiAgICAgICAgZGVzdGluYXRpb246IG5ldyBncnBjV2ViaG9vay5fV2ViaG9va0Rlc3RpbmF0aW9uKHtcbiAgICAgICAgICBwb3N0X3VybDogd2ViaG9vay5kZXN0aW5hdGlvbi51cmwoKSxcbiAgICAgICAgfSksXG4gICAgICAgIHRvcGljX25hbWU6IHdlYmhvb2sudG9waWNOYW1lLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzc3VpbmcgXCJQdXRXZWJob29rXCIgcmVxdWVzdCcpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPFB1dFdlYmhvb2suUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMud2ViaG9va0NsaWVudC5QdXRXZWJob29rKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgUHV0V2ViaG9vay5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IFB1dFdlYmhvb2suU3VjY2VzcyhyZXNwLnNlY3JldF9zdHJpbmcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRXZWJob29rU2VjcmV0KGlkOiBXZWJob29rSWQpOiBQcm9taXNlPEdldFdlYmhvb2tTZWNyZXQuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUoaWQuY2FjaGVOYW1lKTtcbiAgICAgIHZhbGlkYXRlV2ViaG9va05hbWUoaWQud2ViaG9va05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgR2V0V2ViaG9va1NlY3JldC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY1dlYmhvb2suX0dldFdlYmhvb2tTZWNyZXRSZXF1ZXN0KHtcbiAgICAgIHdlYmhvb2tfbmFtZTogaWQud2ViaG9va05hbWUsXG4gICAgICBjYWNoZV9uYW1lOiBpZC5jYWNoZU5hbWUsXG4gICAgfSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzc3VpbmcgXCJHZXRXZWJob29rU2VjcmV0XCIgcmVxdWVzdCcpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPEdldFdlYmhvb2tTZWNyZXQuUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMud2ViaG9va0NsaWVudC5HZXRXZWJob29rU2VjcmV0KFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgIGlmIChlcnIgfHwgIXJlc3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgZXJyb3JSZXNwb25zZUZhY3RvcnlGbjogZSA9PiBuZXcgR2V0V2ViaG9va1NlY3JldC5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICAgIG5ldyBHZXRXZWJob29rU2VjcmV0LlN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgIHNlY3JldDogcmVzcC5zZWNyZXRfc3RyaW5nLFxuICAgICAgICAgICAgICAgIHdlYmhvb2tOYW1lOiByZXNwLndlYmhvb2tfbmFtZSxcbiAgICAgICAgICAgICAgICBjYWNoZU5hbWU6IHJlc3AuY2FjaGVfbmFtZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcm90YXRlV2ViaG9va1NlY3JldChcbiAgICBpZDogV2ViaG9va0lkXG4gICk6IFByb21pc2U8Um90YXRlV2ViaG9va1NlY3JldC5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShpZC5jYWNoZU5hbWUpO1xuICAgICAgdmFsaWRhdGVXZWJob29rTmFtZShpZC53ZWJob29rTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBSb3RhdGVXZWJob29rU2VjcmV0LkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2ViaG9va0lkID0gZ3JwY1dlYmhvb2suX1dlYmhvb2tJZC5mcm9tT2JqZWN0KHtcbiAgICAgIHdlYmhvb2tfbmFtZTogaWQud2ViaG9va05hbWUsXG4gICAgICBjYWNoZV9uYW1lOiBpZC5jYWNoZU5hbWUsXG4gICAgfSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjV2ViaG9vay5fUm90YXRlV2ViaG9va1NlY3JldFJlcXVlc3Qoe1xuICAgICAgd2ViaG9va19pZDogd2ViaG9va0lkLFxuICAgIH0pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdpc3N1aW5nIFwiUm90YXRlV2ViaG9va1NlY3JldFwiIHJlcXVlc3QnKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxSb3RhdGVXZWJob29rU2VjcmV0LlJlc3BvbnNlPihcbiAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy53ZWJob29rQ2xpZW50LlJvdGF0ZVdlYmhvb2tTZWNyZXQoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzfSxcbiAgICAgICAgICAoZXJyLCByZXNwKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmVzb2x2ZU9yUmVqZWN0RXJyb3Ioe1xuICAgICAgICAgICAgICAgIGVycjogZXJyLFxuICAgICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IFJvdGF0ZVdlYmhvb2tTZWNyZXQuRXJyb3IoZSksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdEZuOiByZWplY3QsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShcbiAgICAgICAgICAgICAgICBuZXcgUm90YXRlV2ViaG9va1NlY3JldC5TdWNjZXNzKHtcbiAgICAgICAgICAgICAgICAgIHNlY3JldDogcmVzcC5zZWNyZXRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgd2ViaG9va05hbWU6IGlkLndlYmhvb2tOYW1lLFxuICAgICAgICAgICAgICAgICAgY2FjaGVOYW1lOiBpZC5jYWNoZU5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvd2ViaG9vay1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1EO0FBQ25ELElBQU8sV0FBVyxHQUFHLHlCQUFPLENBQUMsT0FBTyxDQUFDO0FBQ3JDLGtEQVc2QjtBQUM3QiwyQ0FBOEQ7QUFFOUQsb0VBQTZFO0FBQzdFLHFEQUEyQztBQUMzQyxrRkFBMkU7QUFDM0UscUZBQTZFO0FBQzdFLHVFQUlxRDtBQUdyRCxNQUFhLGFBQWE7SUFReEI7O09BRUc7SUFDSCxZQUFZLEtBQXdDO1FBQ2xELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLG9EQUF1QixDQUN4RCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQ3ZDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksNEJBQU0sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksNEJBQU0sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLHNCQUFPLEVBQUUsQ0FBQztZQUNoRCxJQUFJLDRCQUFNLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2pFLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsSUFBSSwrQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyx3QkFBd0IsRUFBRTtZQUNqRSxJQUFBLHFEQUF3QixFQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FB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LEdBQUcsSUFBSSxXQUFXLENBQUMsMkJBQTJCLENBQUM7WUFDMUQsVUFBVSxFQUFFLFNBQVM7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUUzRCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQ3RCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQ3BDLE9BQU8sRUFDUCxFQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUMsRUFDdEMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQzt3QkFDaEQsR0FBRyxFQUFFLEdBQUc7d0JBQ1Isc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLDhCQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQzdELFNBQVMsRUFBRSxPQUFPO3dCQUNsQixRQUFRLEVBQUUsTUFBTTtxQkFDakIsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLE9BQU8sQ0FDTCxJQUFJLDhCQUFtQixDQUFDLE9BQU8sQ0FBQzt3QkFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO3dCQUMxQixXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVc7d0JBQzNCLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUztxQkFDeEIsQ0FBQyxDQUNILENBQUM7aUJBQ0g7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7QUE3UEgsc0NBOFBDO0FBelB5Qix3Q0FBMEIsR0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt3ZWJob29rfSBmcm9tICdAZ29tb21lbnRvL2dlbmVyYXRlZC10eXBlcyc7XG5pbXBvcnQgZ3JwY1dlYmhvb2sgPSB3ZWJob29rLndlYmhvb2s7XG5pbXBvcnQge1xuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIE1vbWVudG9Mb2dnZXIsXG4gIFdlYmhvb2ssXG4gIFdlYmhvb2tJZCxcbiAgRGVsZXRlV2ViaG9vayxcbiAgUHV0V2ViaG9vayxcbiAgTGlzdFdlYmhvb2tzLFxuICBQb3N0VXJsV2ViaG9va0Rlc3RpbmF0aW9uLFxuICBHZXRXZWJob29rU2VjcmV0LFxuICBSb3RhdGVXZWJob29rU2VjcmV0LFxufSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlJztcbmltcG9ydCB7Q2hhbm5lbENyZWRlbnRpYWxzLCBJbnRlcmNlcHRvcn0gZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQge0lXZWJob29rQ2xpZW50fSBmcm9tICdAZ29tb21lbnRvL3Nkay1jb3JlL2Rpc3Qvc3JjL2ludGVybmFsL2NsaWVudHMvcHVic3ViL0lXZWJob29rQ2xpZW50JztcbmltcG9ydCB7SGVhZGVyLCBIZWFkZXJJbnRlcmNlcHRvclByb3ZpZGVyfSBmcm9tICcuL2dycGMvaGVhZGVycy1pbnRlcmNlcHRvcic7XG5pbXBvcnQge3ZlcnNpb259IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQge0NsaWVudFRpbWVvdXRJbnRlcmNlcHRvcn0gZnJvbSAnLi9ncnBjL2NsaWVudC10aW1lb3V0LWludGVyY2VwdG9yJztcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXJ9IGZyb20gJy4uL2Vycm9ycy9jYWNoZS1zZXJ2aWNlLWVycm9yLW1hcHBlcic7XG5pbXBvcnQge1xuICB2YWxpZGF0ZUNhY2hlTmFtZSxcbiAgdmFsaWRhdGVUb3BpY05hbWUsXG4gIHZhbGlkYXRlV2ViaG9va05hbWUsXG59IGZyb20gJ0Bnb21vbWVudG8vc2RrLWNvcmUvZGlzdC9zcmMvaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IHtUb3BpY0NsaWVudFByb3BzV2l0aENvbmZpZ3VyYXRpb259IGZyb20gJy4vdG9waWMtY2xpZW50LXByb3BzLXdpdGgtY29uZmlnJztcblxuZXhwb3J0IGNsYXNzIFdlYmhvb2tDbGllbnQgaW1wbGVtZW50cyBJV2ViaG9va0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2ViaG9va0NsaWVudDogZ3JwY1dlYmhvb2suV2ViaG9va0NsaWVudDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlcjogQ3JlZGVudGlhbFByb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTW9tZW50b0xvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZVNlcnZpY2VFcnJvck1hcHBlcjogQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXI7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUX01TOiBudW1iZXIgPSA1ICogMTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmFyeUludGVyY2VwdG9yczogSW50ZXJjZXB0b3JbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtUb3BpY0NsaWVudFByb3BzfSBwcm9wc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM6IFRvcGljQ2xpZW50UHJvcHNXaXRoQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyID0gcHJvcHMuY3JlZGVudGlhbFByb3ZpZGVyO1xuICAgIHRoaXMubG9nZ2VyID0gcHJvcHMuY29uZmlndXJhdGlvbi5nZXRMb2dnZXJGYWN0b3J5KCkuZ2V0TG9nZ2VyKHRoaXMpO1xuICAgIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIgPSBuZXcgQ2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIoXG4gICAgICBwcm9wcy5jb25maWd1cmF0aW9uLmdldFRocm93T25FcnJvcnMoKVxuICAgICk7XG4gICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgIG5ldyBIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCBwcm9wcy5jcmVkZW50aWFsUHJvdmlkZXIuZ2V0QXV0aFRva2VuKCkpLFxuICAgICAgbmV3IEhlYWRlcignQWdlbnQnLCBgbm9kZWpzOndlYmhvb2s6JHt2ZXJzaW9ufWApLFxuICAgICAgbmV3IEhlYWRlcignUnVudGltZS1WZXJzaW9uJywgYG5vZGVqczoke3Byb2Nlc3MudmVyc2lvbnMubm9kZX1gKSxcbiAgICBdO1xuICAgIHRoaXMudW5hcnlJbnRlcmNlcHRvcnMgPSBbXG4gICAgICBuZXcgSGVhZGVySW50ZXJjZXB0b3JQcm92aWRlcihoZWFkZXJzKS5jcmVhdGVIZWFkZXJzSW50ZXJjZXB0b3IoKSxcbiAgICAgIENsaWVudFRpbWVvdXRJbnRlcmNlcHRvcihXZWJob29rQ2xpZW50LkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUX01TKSxcbiAgICBdO1xuICAgIHRoaXMud2ViaG9va0NsaWVudCA9IG5ldyB3ZWJob29rLndlYmhvb2suV2ViaG9va0NsaWVudChcbiAgICAgIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlci5nZXRDb250cm9sRW5kcG9pbnQoKSxcbiAgICAgIHByb3BzLmNyZWRlbnRpYWxQcm92aWRlci5pc0NvbnRyb2xFbmRwb2ludFNlY3VyZSgpXG4gICAgICAgID8gQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZVNzbCgpXG4gICAgICAgIDogQ2hhbm5lbENyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlV2ViaG9vayhpZDogV2ViaG9va0lkKTogUHJvbWlzZTxEZWxldGVXZWJob29rLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGlkLmNhY2hlTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBEZWxldGVXZWJob29rLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY1dlYmhvb2suX0RlbGV0ZVdlYmhvb2tSZXF1ZXN0KHtcbiAgICAgIHdlYmhvb2tfaWQ6IG5ldyBncnBjV2ViaG9vay5fV2ViaG9va0lkKHtcbiAgICAgICAgY2FjaGVfbmFtZTogaWQuY2FjaGVOYW1lLFxuICAgICAgICB3ZWJob29rX25hbWU6IGlkLndlYmhvb2tOYW1lLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzc3VpbmcgXCJEZWxldGVXZWJob29rXCIgcmVxdWVzdCcpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPERlbGV0ZVdlYmhvb2suUmVzcG9uc2U+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMud2ViaG9va0NsaWVudC5EZWxldGVXZWJob29rKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB7aW50ZXJjZXB0b3JzOiB0aGlzLnVuYXJ5SW50ZXJjZXB0b3JzfSxcbiAgICAgICAgKGVyciwgX3Jlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IERlbGV0ZVdlYmhvb2suRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBEZWxldGVXZWJob29rLlN1Y2Nlc3MoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdFdlYmhvb2tzKGNhY2hlOiBzdHJpbmcpOiBQcm9taXNlPExpc3RXZWJob29rcy5SZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNhY2hlTmFtZShjYWNoZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBMaXN0V2ViaG9va3MuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjV2ViaG9vay5fTGlzdFdlYmhvb2tSZXF1ZXN0KHtjYWNoZV9uYW1lOiBjYWNoZX0pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdpc3N1aW5nIFwiTGlzdFdlYmhvb2tzXCIgcmVxdWVzdCcpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPExpc3RXZWJob29rcy5SZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy53ZWJob29rQ2xpZW50Lkxpc3RXZWJob29rcyhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy51bmFyeUludGVyY2VwdG9yc30sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IExpc3RXZWJob29rcy5FcnJvcihlKSxcbiAgICAgICAgICAgICAgcmVzb2x2ZUZuOiByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHdlYmhvb2tzID0gcmVzcC53ZWJob29rLm1hcCh3aCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlYmhvb2s6IFdlYmhvb2sgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgICAgICAgIGNhY2hlTmFtZTogd2gud2ViaG9va19pZC5jYWNoZV9uYW1lLFxuICAgICAgICAgICAgICAgICAgd2ViaG9va05hbWU6IHdoLndlYmhvb2tfaWQud2ViaG9va19uYW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9waWNOYW1lOiB3aC50b3BpY19uYW1lLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uOiBuZXcgUG9zdFVybFdlYmhvb2tEZXN0aW5hdGlvbihcbiAgICAgICAgICAgICAgICAgIHdoLmRlc3RpbmF0aW9uLnBvc3RfdXJsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIHdlYmhvb2s7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc29sdmUobmV3IExpc3RXZWJob29rcy5TdWNjZXNzKHdlYmhvb2tzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcHV0V2ViaG9vayh3ZWJob29rOiBXZWJob29rKTogUHJvbWlzZTxQdXRXZWJob29rLlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKHdlYmhvb2suaWQuY2FjaGVOYW1lKTtcbiAgICAgIHZhbGlkYXRlVG9waWNOYW1lKHdlYmhvb2sudG9waWNOYW1lKTtcbiAgICAgIHZhbGlkYXRlV2ViaG9va05hbWUod2ViaG9vay5pZC53ZWJob29rTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVNlcnZpY2VFcnJvck1hcHBlci5yZXR1cm5PclRocm93RXJyb3IoXG4gICAgICAgIGVyciBhcyBFcnJvcixcbiAgICAgICAgZXJyID0+IG5ldyBQdXRXZWJob29rLkVycm9yKGVycilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBncnBjV2ViaG9vay5fUHV0V2ViaG9va1JlcXVlc3Qoe1xuICAgICAgd2ViaG9vazogbmV3IGdycGNXZWJob29rLl9XZWJob29rKHtcbiAgICAgICAgd2ViaG9va19pZDogbmV3IGdycGNXZWJob29rLl9XZWJob29rSWQoe1xuICAgICAgICAgIGNhY2hlX25hbWU6IHdlYmhvb2suaWQuY2FjaGVOYW1lLFxuICAgICAgICAgIHdlYmhvb2tfbmFtZTogd2ViaG9vay5pZC53ZWJob29rTmFtZSxcbiAgICAgICAgfSksXG4gICAgICAgIGRlc3RpbmF0aW9uOiBuZXcgZ3JwY1dlYmhvb2suX1dlYmhvb2tEZXN0aW5hdGlvbih7XG4gICAgICAgICAgcG9zdF91cmw6IHdlYmhvb2suZGVzdGluYXRpb24udXJsKCksXG4gICAgICAgIH0pLFxuICAgICAgICB0b3BpY19uYW1lOiB3ZWJob29rLnRvcGljTmFtZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdpc3N1aW5nIFwiUHV0V2ViaG9va1wiIHJlcXVlc3QnKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxQdXRXZWJob29rLlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLndlYmhvb2tDbGllbnQuUHV0V2ViaG9vayhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy51bmFyeUludGVyY2VwdG9yc30sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IFB1dFdlYmhvb2suRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBQdXRXZWJob29rLlN1Y2Nlc3MocmVzcC5zZWNyZXRfc3RyaW5nKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0V2ViaG9va1NlY3JldChpZDogV2ViaG9va0lkKTogUHJvbWlzZTxHZXRXZWJob29rU2VjcmV0LlJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHZhbGlkYXRlQ2FjaGVOYW1lKGlkLmNhY2hlTmFtZSk7XG4gICAgICB2YWxpZGF0ZVdlYmhvb2tOYW1lKGlkLndlYmhvb2tOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJldHVybk9yVGhyb3dFcnJvcihcbiAgICAgICAgZXJyIGFzIEVycm9yLFxuICAgICAgICBlcnIgPT4gbmV3IEdldFdlYmhvb2tTZWNyZXQuRXJyb3IoZXJyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IGdycGNXZWJob29rLl9HZXRXZWJob29rU2VjcmV0UmVxdWVzdCh7XG4gICAgICB3ZWJob29rX25hbWU6IGlkLndlYmhvb2tOYW1lLFxuICAgICAgY2FjaGVfbmFtZTogaWQuY2FjaGVOYW1lLFxuICAgIH0pO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdpc3N1aW5nIFwiR2V0V2ViaG9va1NlY3JldFwiIHJlcXVlc3QnKTtcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxHZXRXZWJob29rU2VjcmV0LlJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLndlYmhvb2tDbGllbnQuR2V0V2ViaG9va1NlY3JldChcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy51bmFyeUludGVyY2VwdG9yc30sXG4gICAgICAgIChlcnIsIHJlc3ApID0+IHtcbiAgICAgICAgICBpZiAoZXJyIHx8ICFyZXNwKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgZXJyOiBlcnIsXG4gICAgICAgICAgICAgIGVycm9yUmVzcG9uc2VGYWN0b3J5Rm46IGUgPT4gbmV3IEdldFdlYmhvb2tTZWNyZXQuRXJyb3IoZSksXG4gICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgcmVqZWN0Rm46IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICBuZXcgR2V0V2ViaG9va1NlY3JldC5TdWNjZXNzKHtcbiAgICAgICAgICAgICAgICBzZWNyZXQ6IHJlc3Auc2VjcmV0X3N0cmluZyxcbiAgICAgICAgICAgICAgICB3ZWJob29rTmFtZTogcmVzcC53ZWJob29rX25hbWUsXG4gICAgICAgICAgICAgICAgY2FjaGVOYW1lOiByZXNwLmNhY2hlX25hbWUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJvdGF0ZVdlYmhvb2tTZWNyZXQoXG4gICAgaWQ6IFdlYmhvb2tJZFxuICApOiBQcm9taXNlPFJvdGF0ZVdlYmhvb2tTZWNyZXQuUmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGVDYWNoZU5hbWUoaWQuY2FjaGVOYW1lKTtcbiAgICAgIHZhbGlkYXRlV2ViaG9va05hbWUoaWQud2ViaG9va05hbWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTZXJ2aWNlRXJyb3JNYXBwZXIucmV0dXJuT3JUaHJvd0Vycm9yKFxuICAgICAgICBlcnIgYXMgRXJyb3IsXG4gICAgICAgIGVyciA9PiBuZXcgUm90YXRlV2ViaG9va1NlY3JldC5FcnJvcihlcnIpXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHdlYmhvb2tJZCA9IGdycGNXZWJob29rLl9XZWJob29rSWQuZnJvbU9iamVjdCh7XG4gICAgICB3ZWJob29rX25hbWU6IGlkLndlYmhvb2tOYW1lLFxuICAgICAgY2FjaGVfbmFtZTogaWQuY2FjaGVOYW1lLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgZ3JwY1dlYmhvb2suX1JvdGF0ZVdlYmhvb2tTZWNyZXRSZXF1ZXN0KHtcbiAgICAgIHdlYmhvb2tfaWQ6IHdlYmhvb2tJZCxcbiAgICB9KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnaXNzdWluZyBcIlJvdGF0ZVdlYmhvb2tTZWNyZXRcIiByZXF1ZXN0Jyk7XG5cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8Um90YXRlV2ViaG9va1NlY3JldC5SZXNwb25zZT4oXG4gICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMud2ViaG9va0NsaWVudC5Sb3RhdGVXZWJob29rU2VjcmV0KFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAge2ludGVyY2VwdG9yczogdGhpcy51bmFyeUludGVyY2VwdG9yc30sXG4gICAgICAgICAgKGVyciwgcmVzcCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVyciB8fCAhcmVzcCkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZUVycm9yTWFwcGVyLnJlc29sdmVPclJlamVjdEVycm9yKHtcbiAgICAgICAgICAgICAgICBlcnI6IGVycixcbiAgICAgICAgICAgICAgICBlcnJvclJlc3BvbnNlRmFjdG9yeUZuOiBlID0+IG5ldyBSb3RhdGVXZWJob29rU2VjcmV0LkVycm9yKGUpLFxuICAgICAgICAgICAgICAgIHJlc29sdmVGbjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RGbjogcmVqZWN0LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICAgICAgbmV3IFJvdGF0ZVdlYmhvb2tTZWNyZXQuU3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICBzZWNyZXQ6IHJlc3Auc2VjcmV0X3N0cmluZyxcbiAgICAgICAgICAgICAgICAgIHdlYmhvb2tOYW1lOiBpZC53ZWJob29rTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNhY2hlTmFtZTogaWQuY2FjaGVOYW1lLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
{
"name": "@gomomento/sdk",
"version": "1.89.1",
"version": "1.90.0",
"description": "Client SDK for Momento services",

@@ -33,3 +33,3 @@ "main": "dist/src/index.js",

"devDependencies": {
"@gomomento/common-integration-tests": "file:../common-integration-tests/gomomento-common-integration-tests-1.89.1.tgz",
"@gomomento/common-integration-tests": "file:../common-integration-tests/gomomento-common-integration-tests-1.90.0.tgz",
"@types/jest": "27.5.2",

@@ -57,3 +57,3 @@ "@types/node": "16.18.97",

"@gomomento/generated-types": "0.112.1",
"@gomomento/sdk-core": "1.89.1",
"@gomomento/sdk-core": "1.90.0",
"@grpc/grpc-js": "1.10.9",

@@ -60,0 +60,0 @@ "@types/google-protobuf": "3.15.10",

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc