serverless-spy 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +3 -3
- package/dist/releasetag.txt +1 -1
- package/lib/src/ServerlessSpy.js +15 -3
- package/lib/src/ServerlessSpy.mjs +14 -2
- package/package.json +1 -1
- package/extension/dist/layer/spy-wrapper +0 -4
package/.jsii
CHANGED
|
@@ -3178,7 +3178,7 @@
|
|
|
3178
3178
|
},
|
|
3179
3179
|
"locationInModule": {
|
|
3180
3180
|
"filename": "src/ServerlessSpy.ts",
|
|
3181
|
-
"line":
|
|
3181
|
+
"line": 425
|
|
3182
3182
|
},
|
|
3183
3183
|
"name": "getConstructName",
|
|
3184
3184
|
"parameters": [
|
|
@@ -3215,6 +3215,6 @@
|
|
|
3215
3215
|
"symbolId": "src/ServerlessSpy:ServerlessSpy"
|
|
3216
3216
|
}
|
|
3217
3217
|
},
|
|
3218
|
-
"version": "0.0.
|
|
3219
|
-
"fingerprint": "
|
|
3218
|
+
"version": "0.0.21",
|
|
3219
|
+
"fingerprint": "Hn8Z9+Fh1T9nt8NCu/USgmlo6Io/JUmAYChr1mK5Jy8="
|
|
3220
3220
|
}
|
package/dist/releasetag.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v0.0.
|
|
1
|
+
v0.0.21
|
package/lib/src/ServerlessSpy.js
CHANGED
|
@@ -25,13 +25,25 @@ class ServerlessSpy extends constructs_1.Construct {
|
|
|
25
25
|
super(scope, id);
|
|
26
26
|
this.ownContructs = [];
|
|
27
27
|
this.functionSubscriptionPool = [];
|
|
28
|
+
const extensionAssetLocation = path.join(__dirname, '../extension/dist/layer');
|
|
29
|
+
if (!fs.existsSync(extensionAssetLocation)) {
|
|
30
|
+
throw new Error(`Folder with assets for extension does not exists ${extensionAssetLocation}`);
|
|
31
|
+
}
|
|
32
|
+
const extensionAssetLocationWraper = path.join(extensionAssetLocation, 'spy-wrapper');
|
|
33
|
+
if (!fs.existsSync(extensionAssetLocationWraper)) {
|
|
34
|
+
throw new Error(`Wraper script for extension does not exists ${extensionAssetLocation}`);
|
|
35
|
+
}
|
|
36
|
+
const extensionAssetLocationCode = path.join(extensionAssetLocation, 'nodejs/node_modules/interceptor.js');
|
|
37
|
+
if (!fs.existsSync(extensionAssetLocationCode)) {
|
|
38
|
+
throw new Error(`Code for extension does not exists ${extensionAssetLocationCode}`);
|
|
39
|
+
}
|
|
28
40
|
this.extensionLayer = new lambda.LayerVersion(this, 'Extension', {
|
|
29
41
|
compatibleRuntimes: [
|
|
30
42
|
lambda.Runtime.NODEJS_12_X,
|
|
31
43
|
lambda.Runtime.NODEJS_14_X,
|
|
32
44
|
lambda.Runtime.NODEJS_16_X,
|
|
33
45
|
],
|
|
34
|
-
code: lambda.Code.fromAsset(
|
|
46
|
+
code: lambda.Code.fromAsset(extensionAssetLocation),
|
|
35
47
|
});
|
|
36
48
|
this.ownContructs.push(this.extensionLayer);
|
|
37
49
|
this.table = new dynamoDb.Table(this, 'WebSocket', {
|
|
@@ -298,7 +310,7 @@ class ServerlessSpy extends constructs_1.Construct {
|
|
|
298
310
|
}
|
|
299
311
|
exports.ServerlessSpy = ServerlessSpy;
|
|
300
312
|
_a = JSII_RTTI_SYMBOL_1;
|
|
301
|
-
ServerlessSpy[_a] = { fqn: "serverless-spy.ServerlessSpy", version: "0.0.
|
|
313
|
+
ServerlessSpy[_a] = { fqn: "serverless-spy.ServerlessSpy", version: "0.0.21" };
|
|
302
314
|
function getAssetLocation(location) {
|
|
303
315
|
const loc = path.join(__dirname, '../' + location);
|
|
304
316
|
if (fs.existsSync(loc)) {
|
|
@@ -310,4 +322,4 @@ function getAssetLocation(location) {
|
|
|
310
322
|
}
|
|
311
323
|
throw new Error(`Location ${loc} and ${loc2} does not exists.`);
|
|
312
324
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVybGVzc1NweS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TZXJ2ZXJsZXNzU3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QiwyREFBMkQ7QUFDM0QsMkVBQTJFO0FBQzNFLDZDQUE4QztBQUU5QyxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsdUVBQXVFO0FBQ3ZFLDREQUE0RDtBQUM1RCx5Q0FBeUM7QUFDekMsNERBQTREO0FBQzVELDJDQUEyQztBQUMzQyw2REFBNkQ7QUFDN0QsMkNBQTJDO0FBQzNDLDJDQUFtRDtBQUVuRCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQWlCMUMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQVhYLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUVoQyw2QkFBd0IsR0FBMkIsRUFBRSxDQUFDO1FBVzVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDL0Qsa0JBQWtCLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7YUFDM0I7WUFDRCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQ2hEO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxD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S0FBSyxZQUFZLENBQzFELENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sV0FBVyxDQUNqQixVQUF5QyxFQUN6QyxNQUFtQjtRQUVuQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN2QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEIsT0FBTyxJQUFTLENBQUM7YUFDbEI7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O0FBcmFILHNDQXNhQzs7O0FBU0QsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFnQjtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFdkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksbUJBQW1CLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGFwaUd3VjIgZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYSc7XG5pbXBvcnQgKiBhcyBhcGlHd1YySW50IGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFndyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyJztcbmltcG9ydCAqIGFzIGR5bmFtb0RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkeW5hbW9EYlN0cmVhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhTm9kZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNub3RpZiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NTcHkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGV4dGVuc2lvbkxheWVyOiBsYW1iZGEuTGF5ZXJWZXJzaW9uO1xuXG4gIHByaXZhdGUgdGFibGU6IGR5bmFtb0RiLlRhYmxlO1xuXG4gIHByaXZhdGUgd2ViU29ja2V0QXBpOiBhcGlHd1YyLldlYlNvY2tldEFwaTtcblxuICBwcml2YXRlIG93bkNvbnRydWN0czogSUNvbnN0cnVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBmdW5jdGlvblN1YnNjcmlwdGlvblBvb2w6IEZ1bmN0aW9uU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIGZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbjogRnVuY3Rpb25TdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSB3ZWJTb2NrZXRTdGFnZTogYXBpR3dWMi5XZWJTb2NrZXRTdGFnZTtcblxuICB3c1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5leHRlbnNpb25MYXllciA9IG5ldyBsYW1iZGEuTGF5ZXJWZXJzaW9uKHRoaXMsICdFeHRlbnNpb24nLCB7XG4gICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtcbiAgICAgICAgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICAgIGxhbWJkYS5SdW50aW1lLk5PREVKU18xNF9YLFxuICAgICAgICBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIF0sXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9leHRlbnNpb24vZGlzdC9sYXllcicpXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy5leHRlbnNpb25MYXllcik7XG5cbiAgICB0aGlzLnRhYmxlID0gbmV3IGR5bmFtb0RiLlRhYmxlKHRoaXMsICdXZWJTb2NrZXQnLCB7XG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogJ2Nvbm5lY3Rpb25JZCcsXG4gICAgICAgIHR5cGU6IGR5bmFtb0RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW9EYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgfSk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaCh0aGlzLnRhYmxlKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uT25Db25uZWN0ID0gbmV3IGxhbWJkYU5vZGUuTm9kZWpzRnVuY3Rpb24odGhpcywgJ09uQ29ubmVjdCcsIHtcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvb25Db25uZWN0LnRzJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBUQUJMRV9OQU1FOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy50YWJsZS5ncmFudFdyaXRlRGF0YShmdW5jdGlvbk9uQ29ubmVjdCk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChmdW5jdGlvbk9uQ29ubmVjdCk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk9uRGlzY29ubmVjdCA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdPbkRpc2Nvbm5lY3QnLFxuICAgICAge1xuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvb25EaXNjb25uZWN0LnRzJyksXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgVEFCTEVfTkFNRTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnRhYmxlLmdyYW50V3JpdGVEYXRhKGZ1bmN0aW9uT25EaXNjb25uZWN0KTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKGZ1bmN0aW9uT25EaXNjb25uZWN0KTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpID0gbmV3IGFwaUd3VjIuV2ViU29ja2V0QXBpKHRoaXMsICdBcGlHd1dlYlNvY2tldCcpO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy53ZWJTb2NrZXRBcGkpO1xuICAgIHRoaXMud2ViU29ja2V0U3RhZ2UgPSBuZXcgYXBpR3dWMi5XZWJTb2NrZXRTdGFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnQXBpR3dXZWJTb2NrZXRTdGFnZScsXG4gICAgICB7XG4gICAgICAgIHdlYlNvY2tldEFwaTogdGhpcy53ZWJTb2NrZXRBcGksXG4gICAgICAgIHN0YWdlTmFtZTogJ3Byb2QnLFxuICAgICAgICBhdXRvRGVwbG95OiB0cnVlLFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaCh0aGlzLndlYlNvY2tldFN0YWdlKTtcbiAgICBjb25zdCB3ZWJTb2NrZXRBcGlSb3V0ZSA9IHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCckY29ubmVjdCcsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJyRjb25uZWN0JyxcbiAgICAgICAgZnVuY3Rpb25PbkNvbm5lY3RcbiAgICAgICksXG4gICAgfSk7XG4gICAgKHdlYlNvY2tldEFwaVJvdXRlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGFndy5DZm5Sb3V0ZSkuYXV0aG9yaXphdGlvblR5cGUgPVxuICAgICAgJ0FXU19JQU0nO1xuXG4gICAgdGhpcy53ZWJTb2NrZXRBcGkuYWRkUm91dGUoJyRkaXNjb25uZWN0Jywge1xuICAgICAgaW50ZWdyYXRpb246IG5ldyBhcGlHd1YySW50LldlYlNvY2tldExhbWJkYUludGVncmF0aW9uKFxuICAgICAgICAnJGRpc2Nvbm5lY3QnLFxuICAgICAgICBmdW5jdGlvbk9uRGlzY29ubmVjdFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oKTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCdzZW5kbWVzc2FnZScsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJ1NlbmRNZXNzYWdlJyxcbiAgICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb25cbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLml0ZXJhdGVBbGxFbGVtZW50cyhTdGFjay5vZih0aGlzKSk7XG5cbiAgICBmb3IgKGNvbnN0IGZ1bmMgb2YgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wpIHtcbiAgICAgIGZ1bmMuZnVuY3Rpb24uYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICdJTkZSQV9NQVBQSU5HJyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZnVuYy5tYXBwaW5nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQVBJX1VSTFwiLCB7XG4gICAgLy8gICB2YWx1ZTogYHdzczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgLy8gICAgIFN0YWNrLm9mKHNjb3BlKS5yZWdpb25cbiAgICAvLyAgIH0uYW1hem9uYXdzLmNvbS8ke3RoaXMud2ViU29ja2V0U3RhZ2Uuc3RhZ2VOYW1lfWAsXG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLndzVXJsID0gYHdzczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgICBTdGFjay5vZih0aGlzKS5yZWdpb25cbiAgICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gO1xuXG4gICAgLy8gbmV3IENmbk91dHB1dCh0aGlzLCBcIkFQSV9VUkxcIiwge1xuICAgIC8vICAgdmFsdWU6IHRoaXMud3NVcmwsXG4gICAgLy8gfSk7XG4gIH1cblxuICBwcml2YXRlIGl0ZXJhdGVBbGxFbGVtZW50cyhwYXJlbnQ6IElDb25zdHJ1Y3QpIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcGFyZW50Lm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGlmICh0aGlzLm93bkNvbnRydWN0cy5pbmNsdWRlcyhub2RlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sLmZpbmQoKHMpID0+IHMuZnVuY3Rpb24gPT09IG5vZGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnTk9ERScsIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgbGFtYmRhLkZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0RnVuY3Rpb24obm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBzbnMuVG9waWMpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2ludGVyY2VwdFNuc1RvcGljJyk7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U25zVG9waWMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBzbnMuU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U25zU3Vic2NyaXB0aW9uKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgczMuQnVja2V0KSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0UzMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBkeW5hbW9EYi5UYWJsZSkge1xuICAgICAgICB0aGlzLmludGVyY2VwdER5bmFtb2RiKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZXZlbnRzLkV2ZW50QnVzKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0RXZlbnRCdXMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBldmVudHMuUnVsZSkge1xuICAgICAgICB0aGlzLmludGVyY2VwdEV2ZW50QnVzUnVsZShub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIGxhbWJkYS5DZm5FdmVudFNvdXJjZU1hcHBpbmcpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRTcXMobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnTk8gTUFUQ0gnLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pdGVyYXRlQWxsRWxlbWVudHMobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTcXMobm9kZTogbGFtYmRhLkNmbkV2ZW50U291cmNlTWFwcGluZykge1xuICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5maW5kRWxlbWVudDxzcXMuUXVldWU+KFxuICAgICAgKG46IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG4gaW5zdGFuY2VvZiBzcXMuUXVldWUgJiZcbiAgICAgICAgKG4gYXMgc3FzLlF1ZXVlKS5xdWV1ZUFybiA9PT0gbm9kZS5ldmVudFNvdXJjZUFyblxuICAgICk7XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5maW5kRWxlbWVudDxsYW1iZGEuRnVuY3Rpb24+KFxuICAgICAgKG46IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG4gaW5zdGFuY2VvZiBsYW1iZGEuRnVuY3Rpb24gJiZcbiAgICAgICAgKG4gYXMgbGFtYmRhLkZ1bmN0aW9uKS5mdW5jdGlvbk5hbWUgPT09IG5vZGUuZnVuY3Rpb25OYW1lXG4gICAgKTtcblxuICAgIGlmIChxdWV1ZSAmJiBmdW5jKSB7XG4gICAgICBjb25zdCBxdWV1ZU5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUocXVldWUpO1xuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4ubWFwcGluZ1tcbiAgICAgICAgcXVldWUucXVldWVBcm5cbiAgICAgIF0gPSBgU3FzIyR7cXVldWVOYW1lfWA7XG4gICAgICBmdW5jLmFkZEVudmlyb25tZW50KCdGTFVFTlRfVEVTVF9TVUJTQ1JJQkVEX1RPX1NRUycsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZnVuYyA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIGBTdWJzY3JpcHRpb24ke2luZGV4fWAsIHtcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvc2VuZE1lc3NhZ2UudHMnKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFRBQkxFX05BTUU6IHRoaXMudGFibGUudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGUuZ3JhbnRXcml0ZURhdGEoZnVuYyk7XG4gICAgdGhpcy50YWJsZS5ncmFudFJlYWREYXRhKGZ1bmMpO1xuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAnV1NfRU5EUE9JTlQnLFxuICAgICAgYGh0dHBzOi8vJHt0aGlzLndlYlNvY2tldEFwaS5hcGlJZH0uZXhlY3V0ZS1hcGkuJHtcbiAgICAgICAgU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gXG4gICAgKTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmdyYW50TWFuYWdlQ29ubmVjdGlvbnMoZnVuYyk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdFMzKHMzQnVja2V0OiBzMy5CdWNrZXQpIHtcbiAgICBzM0J1Y2tldC5hZGRFdmVudE5vdGlmaWNhdGlvbihcbiAgICAgIHMzLkV2ZW50VHlwZS5PQkpFQ1RfQ1JFQVRFRF9QVVQsXG4gICAgICBuZXcgczNub3RpZi5MYW1iZGFEZXN0aW5hdGlvbih0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbilcbiAgICApO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShzM0J1Y2tldCk7XG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4ubWFwcGluZ1tzM0J1Y2tldC5idWNrZXRBcm5dID0gYFMzIyR7bmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHREeW5hbW9kYih0YWJsZTogZHluYW1vRGIuVGFibGUpIHtcbiAgICAvLyBlbmFibGUgRHluYW1vREIgc3RyZWFtcyB3aXRoIGEgaGFja1xuICAgICh0YWJsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBkeW5hbW9EYi5DZm5UYWJsZSkuc3RyZWFtU3BlY2lmaWNhdGlvbiA9IHtcbiAgICAgIHN0cmVhbVZpZXdUeXBlOiBkeW5hbW9EYi5TdHJlYW1WaWV3VHlwZS5ORVdfQU5EX09MRF9JTUFHRVMsXG4gICAgfTtcbiAgICAodGFibGUgYXMgYW55KS50YWJsZVN0cmVhbUFybiA9IChcbiAgICAgIHRhYmxlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGR5bmFtb0RiLkNmblRhYmxlXG4gICAgKS5hdHRyU3RyZWFtQXJuO1xuXG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgZHluYW1vRGJTdHJlYW0uRHluYW1vRXZlbnRTb3VyY2UodGFibGUsIHtcbiAgICAgICAgc3RhcnRpbmdQb3NpdGlvbjogbGFtYmRhLlN0YXJ0aW5nUG9zaXRpb24uTEFURVNULFxuICAgICAgICBiYXRjaFNpemU6IDEsXG4gICAgICAgIHJldHJ5QXR0ZW1wdHM6IDAsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRhYmxlKTtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbdGFibGUudGFibGVBcm5dID0gYER5bmFtb0RCIyR7bmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRFdmVudEJ1c1J1bGUocnVsZTogZXZlbnRzLlJ1bGUpIHtcbiAgICBjb25zdCB7IGV2ZW50QnVzTmFtZSB9ID0gcnVsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBldmVudHMuQ2ZuUnVsZTtcbiAgICBjb25zdCBldmVudEJyaWRnZSA9IHRoaXMuZ2V0RXZlbnRCcmlkZ2UoXG4gICAgICAocnVsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhbnkpLmV2ZW50QnVzTmFtZVxuICAgICk7XG5cbiAgICBpZiAoIWV2ZW50QnJpZGdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZmluZCBFdmVudEJyaWRnZSB3aXRoIG5hbWUgXCIke2V2ZW50QnVzTmFtZX1cImApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMudXNlZEZvckV2ZW50QnJpZGdlXG4gICAgKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi51c2VkRm9yRXZlbnRCcmlkZ2UgPSB0cnVlO1xuXG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pKTtcblxuICAgIGNvbnN0IGJyaWRnZU5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoZXZlbnRCcmlkZ2UpO1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHJ1bGUpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmcuZXZlbnRCcmlkZ2UgPSBgRXZlbnRCcmlkZ2VSdWxlIyR7YnJpZGdlTmFtZX0jJHtydWxlTmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRFdmVudEJ1cyhldmVudEJ1czogZXZlbnRzLkV2ZW50QnVzKSB7XG4gICAgY29uc3QgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgIChzKSA9PiAhcy51c2VkRm9yRXZlbnRCcmlkZ2VcbiAgICApO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnVzZWRGb3JFdmVudEJyaWRnZSA9IHRydWU7XG5cbiAgICBjb25zdCBicmlkZ2VOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKGV2ZW50QnVzKTtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGBSdWxlQWxsJHticmlkZ2VOYW1lfWAsIHtcbiAgICAgIGV2ZW50QnVzLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7IHZlcnNpb246IFsnMCddIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXSxcbiAgICB9KTtcblxuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2gocnVsZSk7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24ubWFwcGluZy5ldmVudEJyaWRnZSA9IGBFdmVudEJyaWRnZSMke2JyaWRnZU5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U25zVG9waWModG9waWM6IHNucy5Ub3BpYykge1xuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMuc3Vic3JpYmVkVG9waWNzLmluY2x1ZGVzKHRvcGljKVxuICAgICk7XG5cbiAgICB0b3BpYy5hZGRTdWJzY3JpcHRpb24oXG4gICAgICBuZXcgc25zU3Vicy5MYW1iZGFTdWJzY3JpcHRpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXG4gICAgKTtcbiAgICBjb25zdCB0b3BpY05hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUodG9waWMpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmdbdG9waWMudG9waWNBcm5dID0gYFNuc1RvcGljIyR7dG9waWNOYW1lfWA7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24uc3Vic3JpYmVkVG9waWNzLnB1c2godG9waWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTbnNTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBzbnMuU3Vic2NyaXB0aW9uKSB7XG4gICAgaWYgKCFzdWJzY3JpcHRpb24ubm9kZS5zY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcGljID0gdGhpcy5nZXRUb3BpYyhcbiAgICAgIChzdWJzY3JpcHRpb24ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgc25zLkNmblN1YnNjcmlwdGlvbikudG9waWNBcm5cbiAgICApO1xuXG4gICAgaWYgKCF0b3BpYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gbm90IGZpbmQgVG9waWMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnN1YnNyaWJlZFRvcGljcy5pbmNsdWRlcyh0b3BpYylcbiAgICApO1xuXG4gICAgY29uc3QgeyBmaWx0ZXJQb2xpY3kgfSA9IHN1YnNjcmlwdGlvbi5ub2RlXG4gICAgICAuZGVmYXVsdENoaWxkIGFzIHNucy5DZm5TdWJzY3JpcHRpb247XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb25DbG9uZSA9IHRvcGljLmFkZFN1YnNjcmlwdGlvbihcbiAgICAgIG5ldyBzbnNTdWJzLkxhbWJkYVN1YnNjcmlwdGlvbihmdW5jdGlvblN1YnNjcmlwdGlvbi5mdW5jdGlvbilcbiAgICApO1xuICAgIChzdWJzY3JpcHRpb25DbG9uZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBzbnMuQ2ZuU3Vic2NyaXB0aW9uKS5maWx0ZXJQb2xpY3kgPVxuICAgICAgZmlsdGVyUG9saWN5O1xuXG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChzdWJzY3JpcHRpb25DbG9uZSk7XG5cbiAgICBjb25zdCB0b3BpY05hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUodG9waWMpO1xuICAgIGNvbnN0IHRhcmdldE5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoc3Vic2NyaXB0aW9uLm5vZGUuc2NvcGUpO1xuXG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24uc3Vic3JpYmVkVG9waWNzLnB1c2godG9waWMpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmdbXG4gICAgICB0b3BpYy50b3BpY0FyblxuICAgIF0gPSBgU25zU3Vic2NyaXB0aW9uIyR7dG9waWNOYW1lfSMke3RhcmdldE5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgIGZpbHRlckZ1bmN0aW9uPzogKHN1YnNjcmlwdGlvbjogRnVuY3Rpb25TdWJzY3JpcHRpb24pID0+IGJvb2xlYW5cbiAgKSB7XG4gICAgbGV0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uOiBGdW5jdGlvblN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChmaWx0ZXJGdW5jdGlvbikge1xuICAgICAgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5maW5kKGZpbHRlckZ1bmN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sLmxlbmd0aCA+IDApIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2xbMF07XG4gICAgfVxuXG4gICAgaWYgKCFmdW5jdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB7XG4gICAgICAgIHN1YnNyaWJlZFRvcGljczogW10sXG4gICAgICAgIHVzZWRGb3JFdmVudEJyaWRnZTogZmFsc2UsXG4gICAgICAgIG1hcHBpbmc6IHt9LFxuICAgICAgICBmdW5jdGlvbjogdGhpcy5jcmVhdGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5sZW5ndGhcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5wdXNoKGZ1bmN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRGdW5jdGlvbihmdW5jOiBsYW1iZGEuRnVuY3Rpb24pIHtcbiAgICBmdW5jLmFkZExheWVycyh0aGlzLmV4dGVuc2lvbkxheWVyKTtcbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbi5ncmFudEludm9rZShmdW5jKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShmdW5jKTtcblxuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoJ0ZVTkNUSU9OX05BTUUnLCBmdW5jdGlvbk5hbWUpO1xuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoJ0FXU19MQU1CREFfRVhFQ19XUkFQUEVSJywgJy9vcHQvc3B5LXdyYXBwZXInKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KFxuICAgICAgJ0ZMVUVOVF9URVNUX1NFTkRfRlVOQ1RJT05fTkFNRScsXG4gICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbi5mdW5jdGlvbk5hbWVcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldENvbnN0cnVjdE5hbWUoY29uc3RydWN0OiBJQ29uc3RydWN0KSB7XG4gICAgbGV0IGZ1bmN0aW9uTmFtZSA9IGNvbnN0cnVjdC5ub2RlLnBhdGg7XG4gICAgY29uc3QgeyBzdGFja05hbWUgfSA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgaWYgKGZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKHN0YWNrTmFtZSkpIHtcbiAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZS5zdWJzdHJpbmcoc3RhY2tOYW1lLmxlbmd0aCArIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb25OYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3BpYyh0b3BpY0Fybjogc3RyaW5nKTogc25zLlRvcGljIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0b3BpYyA9IHRoaXMuZmluZEVsZW1lbnQ8c25zLlRvcGljPihcbiAgICAgIChub2RlOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBub2RlIGluc3RhbmNlb2Ygc25zLlRvcGljICYmIChub2RlIGFzIHNucy5Ub3BpYykudG9waWNBcm4gPT09IHRvcGljQXJuXG4gICAgKTtcblxuICAgIHJldHVybiB0b3BpYztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRCcmlkZ2UoZXZlbnRCdXNOYW1lOiBzdHJpbmcpOiBldmVudHMuRXZlbnRCdXMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGV2ZW50QnJpZGdlID0gdGhpcy5maW5kRWxlbWVudDxldmVudHMuRXZlbnRCdXM+KFxuICAgICAgKG5vZGU6IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG5vZGUgaW5zdGFuY2VvZiBldmVudHMuRXZlbnRCdXMgJiZcbiAgICAgICAgKG5vZGUgYXMgZXZlbnRzLkV2ZW50QnVzKS5ldmVudEJ1c05hbWUgPT09IGV2ZW50QnVzTmFtZVxuICAgICk7XG5cbiAgICByZXR1cm4gZXZlbnRCcmlkZ2U7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFbGVtZW50PFQgZXh0ZW5kcyBJQ29uc3RydWN0ID0gSUNvbnN0cnVjdD4oXG4gICAgZmlsdGVyRnVuYzogKG5vZGU6IElDb25zdHJ1Y3QpID0+IGJvb2xlYW4sXG4gICAgcGFyZW50PzogSUNvbnN0cnVjdFxuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcGFyZW50ID0gU3RhY2sub2YodGhpcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoZmlsdGVyRnVuYyhub2RlKSkge1xuICAgICAgICByZXR1cm4gbm9kZSBhcyBUO1xuICAgICAgfVxuICAgICAgdGhpcy5maW5kRWxlbWVudDxUPihmaWx0ZXJGdW5jLCBub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbnR5cGUgRnVuY3Rpb25TdWJzY3JpcHRpb24gPSB7XG4gIHN1YnNyaWJlZFRvcGljczogc25zLlRvcGljW107XG4gIHVzZWRGb3JFdmVudEJyaWRnZTogYm9vbGVhbjtcbiAgZnVuY3Rpb246IGxhbWJkYU5vZGUuTm9kZWpzRnVuY3Rpb247XG4gIG1hcHBpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5mdW5jdGlvbiBnZXRBc3NldExvY2F0aW9uKGxvY2F0aW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgbG9jID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycgKyBsb2NhdGlvbik7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMobG9jKSkge1xuICAgIHJldHVybiBsb2M7XG4gIH1cblxuICBjb25zdCBsb2MyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycgKyBsb2NhdGlvbik7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMobG9jMikpIHtcbiAgICByZXR1cm4gbG9jMjtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgTG9jYXRpb24gJHtsb2N9IGFuZCAke2xvYzJ9IGRvZXMgbm90IGV4aXN0cy5gKTtcbn1cbiJdfQ==
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVybGVzc1NweS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TZXJ2ZXJsZXNzU3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QiwyREFBMkQ7QUFDM0QsMkVBQTJFO0FBQzNFLDZDQUE4QztBQUU5QyxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELDBEQUEwRDtBQUMxRCxpREFBaUQ7QUFDakQsdUVBQXVFO0FBQ3ZFLDREQUE0RDtBQUM1RCx5Q0FBeUM7QUFDekMsNERBQTREO0FBQzVELDJDQUEyQztBQUMzQyw2REFBNkQ7QUFDN0QsMkNBQTJDO0FBQzNDLDJDQUFtRDtBQUVuRCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQWlCMUMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQVhYLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUVoQyw2QkFBd0IsR0FBMkIsRUFBRSxDQUFDO1FBVzVELE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDdEMsU0FBUyxFQUNULHlCQUF5QixDQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsRUFBRTtZQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxzQkFBc0IsRUFBRSxDQUM3RSxDQUFDO1NBQ0g7UUFFRCxNQUFNLDRCQUE0QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQzVDLHNCQUFzQixFQUN0QixhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrQ0FBK0Msc0JBQXNCLEVBQUUsQ0FDeEUsQ0FBQztTQUNIO1FBRUQsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsSUFBSSxD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LHNDQW1jQzs7O0FBU0QsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFnQjtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFdkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksbUJBQW1CLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGFwaUd3VjIgZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYSc7XG5pbXBvcnQgKiBhcyBhcGlHd1YySW50IGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFndyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyJztcbmltcG9ydCAqIGFzIGR5bmFtb0RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkeW5hbW9EYlN0cmVhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhTm9kZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNub3RpZiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NTcHkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGV4dGVuc2lvbkxheWVyOiBsYW1iZGEuTGF5ZXJWZXJzaW9uO1xuXG4gIHByaXZhdGUgdGFibGU6IGR5bmFtb0RiLlRhYmxlO1xuXG4gIHByaXZhdGUgd2ViU29ja2V0QXBpOiBhcGlHd1YyLldlYlNvY2tldEFwaTtcblxuICBwcml2YXRlIG93bkNvbnRydWN0czogSUNvbnN0cnVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBmdW5jdGlvblN1YnNjcmlwdGlvblBvb2w6IEZ1bmN0aW9uU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIGZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbjogRnVuY3Rpb25TdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSB3ZWJTb2NrZXRTdGFnZTogYXBpR3dWMi5XZWJTb2NrZXRTdGFnZTtcblxuICB3c1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbiA9IHBhdGguam9pbihcbiAgICAgIF9fZGlybmFtZSxcbiAgICAgICcuLi9leHRlbnNpb24vZGlzdC9sYXllcidcbiAgICApO1xuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGV4dGVuc2lvbkFzc2V0TG9jYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGb2xkZXIgd2l0aCBhc3NldHMgZm9yIGV4dGVuc2lvbiBkb2VzIG5vdCBleGlzdHMgJHtleHRlbnNpb25Bc3NldExvY2F0aW9ufWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbldyYXBlciA9IHBhdGguam9pbihcbiAgICAgIGV4dGVuc2lvbkFzc2V0TG9jYXRpb24sXG4gICAgICAnc3B5LXdyYXBwZXInXG4gICAgKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbldyYXBlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFdyYXBlciBzY3JpcHQgZm9yIGV4dGVuc2lvbiBkb2VzIG5vdCBleGlzdHMgJHtleHRlbnNpb25Bc3NldExvY2F0aW9ufWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGUgPSBwYXRoLmpvaW4oXG4gICAgICBleHRlbnNpb25Bc3NldExvY2F0aW9uLFxuICAgICAgJ25vZGVqcy9ub2RlX21vZHVsZXMvaW50ZXJjZXB0b3IuanMnXG4gICAgKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb2RlIGZvciBleHRlbnNpb24gZG9lcyBub3QgZXhpc3RzICR7ZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmV4dGVuc2lvbkxheWVyID0gbmV3IGxhbWJkYS5MYXllclZlcnNpb24odGhpcywgJ0V4dGVuc2lvbicsIHtcbiAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW1xuICAgICAgICBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgICAgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgIGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgXSxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChleHRlbnNpb25Bc3NldExvY2F0aW9uKSxcbiAgICB9KTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHRoaXMuZXh0ZW5zaW9uTGF5ZXIpO1xuXG4gICAgdGhpcy50YWJsZSA9IG5ldyBkeW5hbW9EYi5UYWJsZSh0aGlzLCAnV2ViU29ja2V0Jywge1xuICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgIG5hbWU6ICdjb25uZWN0aW9uSWQnLFxuICAgICAgICB0eXBlOiBkeW5hbW9EYi5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBiaWxsaW5nTW9kZTogZHluYW1vRGIuQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgIH0pO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy50YWJsZSk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk9uQ29ubmVjdCA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdPbkNvbm5lY3QnLCB7XG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL29uQ29ubmVjdC50cycpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgVEFCTEVfTkFNRTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudGFibGUuZ3JhbnRXcml0ZURhdGEoZnVuY3Rpb25PbkNvbm5lY3QpO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2goZnVuY3Rpb25PbkNvbm5lY3QpO1xuXG4gICAgY29uc3QgZnVuY3Rpb25PbkRpc2Nvbm5lY3QgPSBuZXcgbGFtYmRhTm9kZS5Ob2RlanNGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnT25EaXNjb25uZWN0JyxcbiAgICAgIHtcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL29uRGlzY29ubmVjdC50cycpLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFRBQkxFX05BTUU6IHRoaXMudGFibGUudGFibGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy50YWJsZS5ncmFudFdyaXRlRGF0YShmdW5jdGlvbk9uRGlzY29ubmVjdCk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChmdW5jdGlvbk9uRGlzY29ubmVjdCk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaSA9IG5ldyBhcGlHd1YyLldlYlNvY2tldEFwaSh0aGlzLCAnQXBpR3dXZWJTb2NrZXQnKTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHRoaXMud2ViU29ja2V0QXBpKTtcbiAgICB0aGlzLndlYlNvY2tldFN0YWdlID0gbmV3IGFwaUd3VjIuV2ViU29ja2V0U3RhZ2UoXG4gICAgICB0aGlzLFxuICAgICAgJ0FwaUd3V2ViU29ja2V0U3RhZ2UnLFxuICAgICAge1xuICAgICAgICB3ZWJTb2NrZXRBcGk6IHRoaXMud2ViU29ja2V0QXBpLFxuICAgICAgICBzdGFnZU5hbWU6ICdwcm9kJyxcbiAgICAgICAgYXV0b0RlcGxveTogdHJ1ZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy53ZWJTb2NrZXRTdGFnZSk7XG4gICAgY29uc3Qgd2ViU29ja2V0QXBpUm91dGUgPSB0aGlzLndlYlNvY2tldEFwaS5hZGRSb3V0ZSgnJGNvbm5lY3QnLCB7XG4gICAgICBpbnRlZ3JhdGlvbjogbmV3IGFwaUd3VjJJbnQuV2ViU29ja2V0TGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICAgICckY29ubmVjdCcsXG4gICAgICAgIGZ1bmN0aW9uT25Db25uZWN0XG4gICAgICApLFxuICAgIH0pO1xuICAgICh3ZWJTb2NrZXRBcGlSb3V0ZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhZ3cuQ2ZuUm91dGUpLmF1dGhvcml6YXRpb25UeXBlID1cbiAgICAgICdBV1NfSUFNJztcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCckZGlzY29ubmVjdCcsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJyRkaXNjb25uZWN0JyxcbiAgICAgICAgZnVuY3Rpb25PbkRpc2Nvbm5lY3RcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKCk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaS5hZGRSb3V0ZSgnc2VuZG1lc3NhZ2UnLCB7XG4gICAgICBpbnRlZ3JhdGlvbjogbmV3IGFwaUd3VjJJbnQuV2ViU29ja2V0TGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICAgICdTZW5kTWVzc2FnZScsXG4gICAgICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLmZ1bmN0aW9uXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pdGVyYXRlQWxsRWxlbWVudHMoU3RhY2sub2YodGhpcykpO1xuXG4gICAgZm9yIChjb25zdCBmdW5jIG9mIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sKSB7XG4gICAgICBmdW5jLmZ1bmN0aW9uLmFkZEVudmlyb25tZW50KFxuICAgICAgICAnSU5GUkFfTUFQUElORycsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGZ1bmMubWFwcGluZylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gbmV3IENmbk91dHB1dCh0aGlzLCBcIkFQSV9VUkxcIiwge1xuICAgIC8vICAgdmFsdWU6IGB3c3M6Ly8ke3RoaXMud2ViU29ja2V0QXBpLmFwaUlkfS5leGVjdXRlLWFwaS4ke1xuICAgIC8vICAgICBTdGFjay5vZihzY29wZSkucmVnaW9uXG4gICAgLy8gICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gLFxuICAgIC8vIH0pO1xuXG4gICAgdGhpcy53c1VybCA9IGB3c3M6Ly8ke3RoaXMud2ViU29ja2V0QXBpLmFwaUlkfS5leGVjdXRlLWFwaS4ke1xuICAgICAgU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgfS5hbWF6b25hd3MuY29tLyR7dGhpcy53ZWJTb2NrZXRTdGFnZS5zdGFnZU5hbWV9YDtcblxuICAgIC8vIG5ldyBDZm5PdXRwdXQodGhpcywgXCJBUElfVVJMXCIsIHtcbiAgICAvLyAgIHZhbHVlOiB0aGlzLndzVXJsLFxuICAgIC8vIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVyYXRlQWxsRWxlbWVudHMocGFyZW50OiBJQ29uc3RydWN0KSB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAodGhpcy5vd25Db250cnVjdHMuaW5jbHVkZXMobm9kZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5maW5kKChzKSA9PiBzLmZ1bmN0aW9uID09PSBub2RlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coJ05PREUnLCBub2RlLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGxhbWJkYS5GdW5jdGlvbikge1xuICAgICAgICB0aGlzLmludGVyY2VwdEZ1bmN0aW9uKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2Ygc25zLlRvcGljKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcmNlcHRTbnNUb3BpYycpO1xuICAgICAgICB0aGlzLmludGVyY2VwdFNuc1RvcGljKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2Ygc25zLlN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLmludGVyY2VwdFNuc1N1YnNjcmlwdGlvbihub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIHMzLkJ1Y2tldCkge1xuICAgICAgICB0aGlzLmludGVyY2VwdFMzKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZHluYW1vRGIuVGFibGUpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHREeW5hbW9kYihub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIGV2ZW50cy5FdmVudEJ1cykge1xuICAgICAgICB0aGlzLmludGVyY2VwdEV2ZW50QnVzKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZXZlbnRzLlJ1bGUpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRFdmVudEJ1c1J1bGUobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBsYW1iZGEuQ2ZuRXZlbnRTb3VyY2VNYXBwaW5nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U3FzKG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ05PIE1BVENIJywgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXRlcmF0ZUFsbEVsZW1lbnRzKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U3FzKG5vZGU6IGxhbWJkYS5DZm5FdmVudFNvdXJjZU1hcHBpbmcpIHtcbiAgICBjb25zdCBxdWV1ZSA9IHRoaXMuZmluZEVsZW1lbnQ8c3FzLlF1ZXVlPihcbiAgICAgIChuOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBuIGluc3RhbmNlb2Ygc3FzLlF1ZXVlICYmXG4gICAgICAgIChuIGFzIHNxcy5RdWV1ZSkucXVldWVBcm4gPT09IG5vZGUuZXZlbnRTb3VyY2VBcm5cbiAgICApO1xuXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuZmluZEVsZW1lbnQ8bGFtYmRhLkZ1bmN0aW9uPihcbiAgICAgIChuOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBuIGluc3RhbmNlb2YgbGFtYmRhLkZ1bmN0aW9uICYmXG4gICAgICAgIChuIGFzIGxhbWJkYS5GdW5jdGlvbikuZnVuY3Rpb25OYW1lID09PSBub2RlLmZ1bmN0aW9uTmFtZVxuICAgICk7XG5cbiAgICBpZiAocXVldWUgJiYgZnVuYykge1xuICAgICAgY29uc3QgcXVldWVOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHF1ZXVlKTtcbiAgICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbXG4gICAgICAgIHF1ZXVlLnF1ZXVlQXJuXG4gICAgICBdID0gYFNxcyMke3F1ZXVlTmFtZX1gO1xuICAgICAgZnVuYy5hZGRFbnZpcm9ubWVudCgnRkxVRU5UX1RFU1RfU1VCU0NSSUJFRF9UT19TUVMnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZ1bmMgPSBuZXcgbGFtYmRhTm9kZS5Ob2RlanNGdW5jdGlvbih0aGlzLCBgU3Vic2NyaXB0aW9uJHtpbmRleH1gLCB7XG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL3NlbmRNZXNzYWdlLnRzJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBUQUJMRV9OQU1FOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhYmxlLmdyYW50V3JpdGVEYXRhKGZ1bmMpO1xuICAgIHRoaXMudGFibGUuZ3JhbnRSZWFkRGF0YShmdW5jKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KFxuICAgICAgJ1dTX0VORFBPSU5UJyxcbiAgICAgIGBodHRwczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgICAgIFN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuICAgICAgfS5hbWF6b25hd3MuY29tLyR7dGhpcy53ZWJTb2NrZXRTdGFnZS5zdGFnZU5hbWV9YFxuICAgICk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaS5ncmFudE1hbmFnZUNvbm5lY3Rpb25zKGZ1bmMpO1xuICAgIHJldHVybiBmdW5jO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTMyhzM0J1Y2tldDogczMuQnVja2V0KSB7XG4gICAgczNCdWNrZXQuYWRkRXZlbnROb3RpZmljYXRpb24oXG4gICAgICBzMy5FdmVudFR5cGUuT0JKRUNUX0NSRUFURURfUFVULFxuICAgICAgbmV3IHMzbm90aWYuTGFtYmRhRGVzdGluYXRpb24odGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24pXG4gICAgKTtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoczNCdWNrZXQpO1xuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbczNCdWNrZXQuYnVja2V0QXJuXSA9IGBTMyMke25hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RHluYW1vZGIodGFibGU6IGR5bmFtb0RiLlRhYmxlKSB7XG4gICAgLy8gZW5hYmxlIER5bmFtb0RCIHN0cmVhbXMgd2l0aCBhIGhhY2tcbiAgICAodGFibGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgZHluYW1vRGIuQ2ZuVGFibGUpLnN0cmVhbVNwZWNpZmljYXRpb24gPSB7XG4gICAgICBzdHJlYW1WaWV3VHlwZTogZHluYW1vRGIuU3RyZWFtVmlld1R5cGUuTkVXX0FORF9PTERfSU1BR0VTLFxuICAgIH07XG4gICAgKHRhYmxlIGFzIGFueSkudGFibGVTdHJlYW1Bcm4gPSAoXG4gICAgICB0YWJsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBkeW5hbW9EYi5DZm5UYWJsZVxuICAgICkuYXR0clN0cmVhbUFybjtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLmZ1bmN0aW9uLmFkZEV2ZW50U291cmNlKFxuICAgICAgbmV3IGR5bmFtb0RiU3RyZWFtLkR5bmFtb0V2ZW50U291cmNlKHRhYmxlLCB7XG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb246IGxhbWJkYS5TdGFydGluZ1Bvc2l0aW9uLkxBVEVTVCxcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiAwLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZSh0YWJsZSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5tYXBwaW5nW3RhYmxlLnRhYmxlQXJuXSA9IGBEeW5hbW9EQiMke25hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RXZlbnRCdXNSdWxlKHJ1bGU6IGV2ZW50cy5SdWxlKSB7XG4gICAgY29uc3QgeyBldmVudEJ1c05hbWUgfSA9IHJ1bGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgZXZlbnRzLkNmblJ1bGU7XG4gICAgY29uc3QgZXZlbnRCcmlkZ2UgPSB0aGlzLmdldEV2ZW50QnJpZGdlKFxuICAgICAgKHJ1bGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgYW55KS5ldmVudEJ1c05hbWVcbiAgICApO1xuXG4gICAgaWYgKCFldmVudEJyaWRnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IGZpbmQgRXZlbnRCcmlkZ2Ugd2l0aCBuYW1lIFwiJHtldmVudEJ1c05hbWV9XCJgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnVzZWRGb3JFdmVudEJyaWRnZVxuICAgICk7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24udXNlZEZvckV2ZW50QnJpZGdlID0gdHJ1ZTtcblxuICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKSk7XG5cbiAgICBjb25zdCBicmlkZ2VOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKGV2ZW50QnJpZGdlKTtcbiAgICBjb25zdCBydWxlTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShydWxlKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nLmV2ZW50QnJpZGdlID0gYEV2ZW50QnJpZGdlUnVsZSMke2JyaWRnZU5hbWV9IyR7cnVsZU5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RXZlbnRCdXMoZXZlbnRCdXM6IGV2ZW50cy5FdmVudEJ1cykge1xuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMudXNlZEZvckV2ZW50QnJpZGdlXG4gICAgKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi51c2VkRm9yRXZlbnRCcmlkZ2UgPSB0cnVlO1xuXG4gICAgY29uc3QgYnJpZGdlTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShldmVudEJ1cyk7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBldmVudHMuUnVsZSh0aGlzLCBgUnVsZUFsbCR7YnJpZGdlTmFtZX1gLCB7XG4gICAgICBldmVudEJ1cyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyB2ZXJzaW9uOiBbJzAnXSB9LFxuICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHJ1bGUpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmcuZXZlbnRCcmlkZ2UgPSBgRXZlbnRCcmlkZ2UjJHticmlkZ2VOYW1lfWA7XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdFNuc1RvcGljKHRvcGljOiBzbnMuVG9waWMpIHtcbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnN1YnNyaWJlZFRvcGljcy5pbmNsdWRlcyh0b3BpYylcbiAgICApO1xuXG4gICAgdG9waWMuYWRkU3Vic2NyaXB0aW9uKFxuICAgICAgbmV3IHNuc1N1YnMuTGFtYmRhU3Vic2NyaXB0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKVxuICAgICk7XG4gICAgY29uc3QgdG9waWNOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRvcGljKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nW3RvcGljLnRvcGljQXJuXSA9IGBTbnNUb3BpYyMke3RvcGljTmFtZX1gO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnN1YnNyaWJlZFRvcGljcy5wdXNoKHRvcGljKTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U25zU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogc25zLlN1YnNjcmlwdGlvbikge1xuICAgIGlmICghc3Vic2NyaXB0aW9uLm5vZGUuc2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3BpYyA9IHRoaXMuZ2V0VG9waWMoXG4gICAgICAoc3Vic2NyaXB0aW9uLm5vZGUuZGVmYXVsdENoaWxkIGFzIHNucy5DZm5TdWJzY3JpcHRpb24pLnRvcGljQXJuXG4gICAgKTtcblxuICAgIGlmICghdG9waWMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBmaW5kIFRvcGljJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgIChzKSA9PiAhcy5zdWJzcmliZWRUb3BpY3MuaW5jbHVkZXModG9waWMpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZmlsdGVyUG9saWN5IH0gPSBzdWJzY3JpcHRpb24ubm9kZVxuICAgICAgLmRlZmF1bHRDaGlsZCBhcyBzbnMuQ2ZuU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uQ2xvbmUgPSB0b3BpYy5hZGRTdWJzY3JpcHRpb24oXG4gICAgICBuZXcgc25zU3Vicy5MYW1iZGFTdWJzY3JpcHRpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXG4gICAgKTtcbiAgICAoc3Vic2NyaXB0aW9uQ2xvbmUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgc25zLkNmblN1YnNjcmlwdGlvbikuZmlsdGVyUG9saWN5ID1cbiAgICAgIGZpbHRlclBvbGljeTtcblxuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2goc3Vic2NyaXB0aW9uQ2xvbmUpO1xuXG4gICAgY29uc3QgdG9waWNOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRvcGljKTtcbiAgICBjb25zdCB0YXJnZXROYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHN1YnNjcmlwdGlvbi5ub2RlLnNjb3BlKTtcblxuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnN1YnNyaWJlZFRvcGljcy5wdXNoKHRvcGljKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nW1xuICAgICAgdG9waWMudG9waWNBcm5cbiAgICBdID0gYFNuc1N1YnNjcmlwdGlvbiMke3RvcGljTmFtZX0jJHt0YXJnZXROYW1lfWA7XG4gIH1cblxuICBwcml2YXRlIHByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICBmaWx0ZXJGdW5jdGlvbj86IChzdWJzY3JpcHRpb246IEZ1bmN0aW9uU3Vic2NyaXB0aW9uKSA9PiBib29sZWFuXG4gICkge1xuICAgIGxldCBmdW5jdGlvblN1YnNjcmlwdGlvbjogRnVuY3Rpb25TdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZmlsdGVyRnVuY3Rpb24pIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wuZmluZChmaWx0ZXJGdW5jdGlvbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sWzBdO1xuICAgIH1cblxuICAgIGlmICghZnVuY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0ge1xuICAgICAgICBzdWJzcmliZWRUb3BpY3M6IFtdLFxuICAgICAgICB1c2VkRm9yRXZlbnRCcmlkZ2U6IGZhbHNlLFxuICAgICAgICBtYXBwaW5nOiB7fSxcbiAgICAgICAgZnVuY3Rpb246IHRoaXMuY3JlYXRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wubGVuZ3RoXG4gICAgICAgICksXG4gICAgICB9O1xuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wucHVzaChmdW5jdGlvblN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvblN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RnVuY3Rpb24oZnVuYzogbGFtYmRhLkZ1bmN0aW9uKSB7XG4gICAgZnVuYy5hZGRMYXllcnModGhpcy5leHRlbnNpb25MYXllcik7XG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uZ3JhbnRJbnZva2UoZnVuYyk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoZnVuYyk7XG5cbiAgICBmdW5jLmFkZEVudmlyb25tZW50KCdGVU5DVElPTl9OQU1FJywgZnVuY3Rpb25OYW1lKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KCdBV1NfTEFNQkRBX0VYRUNfV1JBUFBFUicsICcvb3B0L3NweS13cmFwcGVyJyk7XG4gICAgZnVuYy5hZGRFbnZpcm9ubWVudChcbiAgICAgICdGTFVFTlRfVEVTVF9TRU5EX0ZVTkNUSU9OX05BTUUnLFxuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uZnVuY3Rpb25OYW1lXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25zdHJ1Y3ROYW1lKGNvbnN0cnVjdDogSUNvbnN0cnVjdCkge1xuICAgIGxldCBmdW5jdGlvbk5hbWUgPSBjb25zdHJ1Y3Qubm9kZS5wYXRoO1xuICAgIGNvbnN0IHsgc3RhY2tOYW1lIH0gPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGlmIChmdW5jdGlvbk5hbWUuc3RhcnRzV2l0aChzdGFja05hbWUpKSB7XG4gICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWUuc3Vic3RyaW5nKHN0YWNrTmFtZS5sZW5ndGggKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9waWModG9waWNBcm46IHN0cmluZyk6IHNucy5Ub3BpYyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdG9waWMgPSB0aGlzLmZpbmRFbGVtZW50PHNucy5Ub3BpYz4oXG4gICAgICAobm9kZTogSUNvbnN0cnVjdCkgPT5cbiAgICAgICAgbm9kZSBpbnN0YW5jZW9mIHNucy5Ub3BpYyAmJiAobm9kZSBhcyBzbnMuVG9waWMpLnRvcGljQXJuID09PSB0b3BpY0FyblxuICAgICk7XG5cbiAgICByZXR1cm4gdG9waWM7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50QnJpZGdlKGV2ZW50QnVzTmFtZTogc3RyaW5nKTogZXZlbnRzLkV2ZW50QnVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBldmVudEJyaWRnZSA9IHRoaXMuZmluZEVsZW1lbnQ8ZXZlbnRzLkV2ZW50QnVzPihcbiAgICAgIChub2RlOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBub2RlIGluc3RhbmNlb2YgZXZlbnRzLkV2ZW50QnVzICYmXG4gICAgICAgIChub2RlIGFzIGV2ZW50cy5FdmVudEJ1cykuZXZlbnRCdXNOYW1lID09PSBldmVudEJ1c05hbWVcbiAgICApO1xuXG4gICAgcmV0dXJuIGV2ZW50QnJpZGdlO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRWxlbWVudDxUIGV4dGVuZHMgSUNvbnN0cnVjdCA9IElDb25zdHJ1Y3Q+KFxuICAgIGZpbHRlckZ1bmM6IChub2RlOiBJQ29uc3RydWN0KSA9PiBib29sZWFuLFxuICAgIHBhcmVudD86IElDb25zdHJ1Y3RcbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBwYXJlbnQubm9kZS5jaGlsZHJlbikge1xuICAgICAgaWYgKGZpbHRlckZ1bmMobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUgYXMgVDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZEVsZW1lbnQ8VD4oZmlsdGVyRnVuYywgbm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIEZ1bmN0aW9uU3Vic2NyaXB0aW9uID0ge1xuICBzdWJzcmliZWRUb3BpY3M6IHNucy5Ub3BpY1tdO1xuICB1c2VkRm9yRXZlbnRCcmlkZ2U6IGJvb2xlYW47XG4gIGZ1bmN0aW9uOiBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uO1xuICBtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuZnVuY3Rpb24gZ2V0QXNzZXRMb2NhdGlvbihsb2NhdGlvbjogc3RyaW5nKSB7XG4gIGNvbnN0IGxvYyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nICsgbG9jYXRpb24pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGxvYykpIHtcbiAgICByZXR1cm4gbG9jO1xuICB9XG5cbiAgY29uc3QgbG9jMiA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nICsgbG9jYXRpb24pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGxvYzIpKSB7XG4gICAgcmV0dXJuIGxvYzI7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYExvY2F0aW9uICR7bG9jfSBhbmQgJHtsb2MyfSBkb2VzIG5vdCBleGlzdHMuYCk7XG59XG4iXX0=
|
|
@@ -20,13 +20,25 @@ export class ServerlessSpy extends Construct {
|
|
|
20
20
|
super(scope, id);
|
|
21
21
|
this.ownContructs = [];
|
|
22
22
|
this.functionSubscriptionPool = [];
|
|
23
|
+
const extensionAssetLocation = path.join(__dirname, '../extension/dist/layer');
|
|
24
|
+
if (!fs.existsSync(extensionAssetLocation)) {
|
|
25
|
+
throw new Error(`Folder with assets for extension does not exists ${extensionAssetLocation}`);
|
|
26
|
+
}
|
|
27
|
+
const extensionAssetLocationWraper = path.join(extensionAssetLocation, 'spy-wrapper');
|
|
28
|
+
if (!fs.existsSync(extensionAssetLocationWraper)) {
|
|
29
|
+
throw new Error(`Wraper script for extension does not exists ${extensionAssetLocation}`);
|
|
30
|
+
}
|
|
31
|
+
const extensionAssetLocationCode = path.join(extensionAssetLocation, 'nodejs/node_modules/interceptor.js');
|
|
32
|
+
if (!fs.existsSync(extensionAssetLocationCode)) {
|
|
33
|
+
throw new Error(`Code for extension does not exists ${extensionAssetLocationCode}`);
|
|
34
|
+
}
|
|
23
35
|
this.extensionLayer = new lambda.LayerVersion(this, 'Extension', {
|
|
24
36
|
compatibleRuntimes: [
|
|
25
37
|
lambda.Runtime.NODEJS_12_X,
|
|
26
38
|
lambda.Runtime.NODEJS_14_X,
|
|
27
39
|
lambda.Runtime.NODEJS_16_X,
|
|
28
40
|
],
|
|
29
|
-
code: lambda.Code.fromAsset(
|
|
41
|
+
code: lambda.Code.fromAsset(extensionAssetLocation),
|
|
30
42
|
});
|
|
31
43
|
this.ownContructs.push(this.extensionLayer);
|
|
32
44
|
this.table = new dynamoDb.Table(this, 'WebSocket', {
|
|
@@ -302,4 +314,4 @@ function getAssetLocation(location) {
|
|
|
302
314
|
}
|
|
303
315
|
throw new Error(`Location ${loc} and ${loc2} does not exists.`);
|
|
304
316
|
}
|
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVybGVzc1NweS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZXJ2ZXJsZXNzU3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxLQUFLLFVBQVUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEtBQUssUUFBUSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRCxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxjQUFjLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLFlBQVksQ0FBQztBQUVuRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFpQjFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFYWCxpQkFBWSxHQUFpQixFQUFFLENB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UUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFdkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksbUJBQW1CLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGFwaUd3VjIgZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYSc7XG5pbXBvcnQgKiBhcyBhcGlHd1YySW50IGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFndyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyJztcbmltcG9ydCAqIGFzIGR5bmFtb0RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkeW5hbW9EYlN0cmVhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhTm9kZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNub3RpZiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NTcHkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGV4dGVuc2lvbkxheWVyOiBsYW1iZGEuTGF5ZXJWZXJzaW9uO1xuXG4gIHByaXZhdGUgdGFibGU6IGR5bmFtb0RiLlRhYmxlO1xuXG4gIHByaXZhdGUgd2ViU29ja2V0QXBpOiBhcGlHd1YyLldlYlNvY2tldEFwaTtcblxuICBwcml2YXRlIG93bkNvbnRydWN0czogSUNvbnN0cnVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBmdW5jdGlvblN1YnNjcmlwdGlvblBvb2w6IEZ1bmN0aW9uU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIGZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbjogRnVuY3Rpb25TdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSB3ZWJTb2NrZXRTdGFnZTogYXBpR3dWMi5XZWJTb2NrZXRTdGFnZTtcblxuICB3c1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5leHRlbnNpb25MYXllciA9IG5ldyBsYW1iZGEuTGF5ZXJWZXJzaW9uKHRoaXMsICdFeHRlbnNpb24nLCB7XG4gICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtcbiAgICAgICAgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICAgIGxhbWJkYS5SdW50aW1lLk5PREVKU18xNF9YLFxuICAgICAgICBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIF0sXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9leHRlbnNpb24vZGlzdC9sYXllcicpXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy5leHRlbnNpb25MYXllcik7XG5cbiAgICB0aGlzLnRhYmxlID0gbmV3IGR5bmFtb0RiLlRhYmxlKHRoaXMsICdXZWJTb2NrZXQnLCB7XG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogJ2Nvbm5lY3Rpb25JZCcsXG4gICAgICAgIHR5cGU6IGR5bmFtb0RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIGJpbGxpbmdNb2RlOiBkeW5hbW9EYi5CaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgfSk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaCh0aGlzLnRhYmxlKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uT25Db25uZWN0ID0gbmV3IGxhbWJkYU5vZGUuTm9kZWpzRnVuY3Rpb24odGhpcywgJ09uQ29ubmVjdCcsIHtcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvb25Db25uZWN0LnRzJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBUQUJMRV9OQU1FOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy50YWJsZS5ncmFudFdyaXRlRGF0YShmdW5jdGlvbk9uQ29ubmVjdCk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChmdW5jdGlvbk9uQ29ubmVjdCk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk9uRGlzY29ubmVjdCA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdPbkRpc2Nvbm5lY3QnLFxuICAgICAge1xuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvb25EaXNjb25uZWN0LnRzJyksXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgVEFCTEVfTkFNRTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnRhYmxlLmdyYW50V3JpdGVEYXRhKGZ1bmN0aW9uT25EaXNjb25uZWN0KTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKGZ1bmN0aW9uT25EaXNjb25uZWN0KTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpID0gbmV3IGFwaUd3VjIuV2ViU29ja2V0QXBpKHRoaXMsICdBcGlHd1dlYlNvY2tldCcpO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy53ZWJTb2NrZXRBcGkpO1xuICAgIHRoaXMud2ViU29ja2V0U3RhZ2UgPSBuZXcgYXBpR3dWMi5XZWJTb2NrZXRTdGFnZShcbiAgICAgIHRoaXMsXG4gICAgICAnQXBpR3dXZWJTb2NrZXRTdGFnZScsXG4gICAgICB7XG4gICAgICAgIHdlYlNvY2tldEFwaTogdGhpcy53ZWJTb2NrZXRBcGksXG4gICAgICAgIHN0YWdlTmFtZTogJ3Byb2QnLFxuICAgICAgICBhdXRvRGVwbG95OiB0cnVlLFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaCh0aGlzLndlYlNvY2tldFN0YWdlKTtcbiAgICBjb25zdCB3ZWJTb2NrZXRBcGlSb3V0ZSA9IHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCckY29ubmVjdCcsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJyRjb25uZWN0JyxcbiAgICAgICAgZnVuY3Rpb25PbkNvbm5lY3RcbiAgICAgICksXG4gICAgfSk7XG4gICAgKHdlYlNvY2tldEFwaVJvdXRlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGFndy5DZm5Sb3V0ZSkuYXV0aG9yaXphdGlvblR5cGUgPVxuICAgICAgJ0FXU19JQU0nO1xuXG4gICAgdGhpcy53ZWJTb2NrZXRBcGkuYWRkUm91dGUoJyRkaXNjb25uZWN0Jywge1xuICAgICAgaW50ZWdyYXRpb246IG5ldyBhcGlHd1YySW50LldlYlNvY2tldExhbWJkYUludGVncmF0aW9uKFxuICAgICAgICAnJGRpc2Nvbm5lY3QnLFxuICAgICAgICBmdW5jdGlvbk9uRGlzY29ubmVjdFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oKTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCdzZW5kbWVzc2FnZScsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJ1NlbmRNZXNzYWdlJyxcbiAgICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb25cbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLml0ZXJhdGVBbGxFbGVtZW50cyhTdGFjay5vZih0aGlzKSk7XG5cbiAgICBmb3IgKGNvbnN0IGZ1bmMgb2YgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wpIHtcbiAgICAgIGZ1bmMuZnVuY3Rpb24uYWRkRW52aXJvbm1lbnQoXG4gICAgICAgICdJTkZSQV9NQVBQSU5HJyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZnVuYy5tYXBwaW5nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQVBJX1VSTFwiLCB7XG4gICAgLy8gICB2YWx1ZTogYHdzczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgLy8gICAgIFN0YWNrLm9mKHNjb3BlKS5yZWdpb25cbiAgICAvLyAgIH0uYW1hem9uYXdzLmNvbS8ke3RoaXMud2ViU29ja2V0U3RhZ2Uuc3RhZ2VOYW1lfWAsXG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLndzVXJsID0gYHdzczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgICBTdGFjay5vZih0aGlzKS5yZWdpb25cbiAgICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gO1xuXG4gICAgLy8gbmV3IENmbk91dHB1dCh0aGlzLCBcIkFQSV9VUkxcIiwge1xuICAgIC8vICAgdmFsdWU6IHRoaXMud3NVcmwsXG4gICAgLy8gfSk7XG4gIH1cblxuICBwcml2YXRlIGl0ZXJhdGVBbGxFbGVtZW50cyhwYXJlbnQ6IElDb25zdHJ1Y3QpIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcGFyZW50Lm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGlmICh0aGlzLm93bkNvbnRydWN0cy5pbmNsdWRlcyhub2RlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sLmZpbmQoKHMpID0+IHMuZnVuY3Rpb24gPT09IG5vZGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnTk9ERScsIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgbGFtYmRhLkZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0RnVuY3Rpb24obm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBzbnMuVG9waWMpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2ludGVyY2VwdFNuc1RvcGljJyk7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U25zVG9waWMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBzbnMuU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U25zU3Vic2NyaXB0aW9uKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgczMuQnVja2V0KSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0UzMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBkeW5hbW9EYi5UYWJsZSkge1xuICAgICAgICB0aGlzLmludGVyY2VwdER5bmFtb2RiKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZXZlbnRzLkV2ZW50QnVzKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0RXZlbnRCdXMobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBldmVudHMuUnVsZSkge1xuICAgICAgICB0aGlzLmludGVyY2VwdEV2ZW50QnVzUnVsZShub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIGxhbWJkYS5DZm5FdmVudFNvdXJjZU1hcHBpbmcpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRTcXMobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnTk8gTUFUQ0gnLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pdGVyYXRlQWxsRWxlbWVudHMobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTcXMobm9kZTogbGFtYmRhLkNmbkV2ZW50U291cmNlTWFwcGluZykge1xuICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5maW5kRWxlbWVudDxzcXMuUXVldWU+KFxuICAgICAgKG46IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG4gaW5zdGFuY2VvZiBzcXMuUXVldWUgJiZcbiAgICAgICAgKG4gYXMgc3FzLlF1ZXVlKS5xdWV1ZUFybiA9PT0gbm9kZS5ldmVudFNvdXJjZUFyblxuICAgICk7XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5maW5kRWxlbWVudDxsYW1iZGEuRnVuY3Rpb24+KFxuICAgICAgKG46IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG4gaW5zdGFuY2VvZiBsYW1iZGEuRnVuY3Rpb24gJiZcbiAgICAgICAgKG4gYXMgbGFtYmRhLkZ1bmN0aW9uKS5mdW5jdGlvbk5hbWUgPT09IG5vZGUuZnVuY3Rpb25OYW1lXG4gICAgKTtcblxuICAgIGlmIChxdWV1ZSAmJiBmdW5jKSB7XG4gICAgICBjb25zdCBxdWV1ZU5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUocXVldWUpO1xuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4ubWFwcGluZ1tcbiAgICAgICAgcXVldWUucXVldWVBcm5cbiAgICAgIF0gPSBgU3FzIyR7cXVldWVOYW1lfWA7XG4gICAgICBmdW5jLmFkZEVudmlyb25tZW50KCdGTFVFTlRfVEVTVF9TVUJTQ1JJQkVEX1RPX1NRUycsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZnVuYyA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsIGBTdWJzY3JpcHRpb24ke2luZGV4fWAsIHtcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgIGVudHJ5OiBnZXRBc3NldExvY2F0aW9uKCdmdW5jdGlvbnMvc2VuZE1lc3NhZ2UudHMnKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFRBQkxFX05BTUU6IHRoaXMudGFibGUudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGUuZ3JhbnRXcml0ZURhdGEoZnVuYyk7XG4gICAgdGhpcy50YWJsZS5ncmFudFJlYWREYXRhKGZ1bmMpO1xuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoXG4gICAgICAnV1NfRU5EUE9JTlQnLFxuICAgICAgYGh0dHBzOi8vJHt0aGlzLndlYlNvY2tldEFwaS5hcGlJZH0uZXhlY3V0ZS1hcGkuJHtcbiAgICAgICAgU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gXG4gICAgKTtcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmdyYW50TWFuYWdlQ29ubmVjdGlvbnMoZnVuYyk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdFMzKHMzQnVja2V0OiBzMy5CdWNrZXQpIHtcbiAgICBzM0J1Y2tldC5hZGRFdmVudE5vdGlmaWNhdGlvbihcbiAgICAgIHMzLkV2ZW50VHlwZS5PQkpFQ1RfQ1JFQVRFRF9QVVQsXG4gICAgICBuZXcgczNub3RpZi5MYW1iZGFEZXN0aW5hdGlvbih0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbilcbiAgICApO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShzM0J1Y2tldCk7XG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4ubWFwcGluZ1tzM0J1Y2tldC5idWNrZXRBcm5dID0gYFMzIyR7bmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHREeW5hbW9kYih0YWJsZTogZHluYW1vRGIuVGFibGUpIHtcbiAgICAvLyBlbmFibGUgRHluYW1vREIgc3RyZWFtcyB3aXRoIGEgaGFja1xuICAgICh0YWJsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBkeW5hbW9EYi5DZm5UYWJsZSkuc3RyZWFtU3BlY2lmaWNhdGlvbiA9IHtcbiAgICAgIHN0cmVhbVZpZXdUeXBlOiBkeW5hbW9EYi5TdHJlYW1WaWV3VHlwZS5ORVdfQU5EX09MRF9JTUFHRVMsXG4gICAgfTtcbiAgICAodGFibGUgYXMgYW55KS50YWJsZVN0cmVhbUFybiA9IChcbiAgICAgIHRhYmxlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGR5bmFtb0RiLkNmblRhYmxlXG4gICAgKS5hdHRyU3RyZWFtQXJuO1xuXG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgZHluYW1vRGJTdHJlYW0uRHluYW1vRXZlbnRTb3VyY2UodGFibGUsIHtcbiAgICAgICAgc3RhcnRpbmdQb3NpdGlvbjogbGFtYmRhLlN0YXJ0aW5nUG9zaXRpb24uTEFURVNULFxuICAgICAgICBiYXRjaFNpemU6IDEsXG4gICAgICAgIHJldHJ5QXR0ZW1wdHM6IDAsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRhYmxlKTtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbdGFibGUudGFibGVBcm5dID0gYER5bmFtb0RCIyR7bmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRFdmVudEJ1c1J1bGUocnVsZTogZXZlbnRzLlJ1bGUpIHtcbiAgICBjb25zdCB7IGV2ZW50QnVzTmFtZSB9ID0gcnVsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBldmVudHMuQ2ZuUnVsZTtcbiAgICBjb25zdCBldmVudEJyaWRnZSA9IHRoaXMuZ2V0RXZlbnRCcmlkZ2UoXG4gICAgICAocnVsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhbnkpLmV2ZW50QnVzTmFtZVxuICAgICk7XG5cbiAgICBpZiAoIWV2ZW50QnJpZGdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgZmluZCBFdmVudEJyaWRnZSB3aXRoIG5hbWUgXCIke2V2ZW50QnVzTmFtZX1cImApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMudXNlZEZvckV2ZW50QnJpZGdlXG4gICAgKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi51c2VkRm9yRXZlbnRCcmlkZ2UgPSB0cnVlO1xuXG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pKTtcblxuICAgIGNvbnN0IGJyaWRnZU5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoZXZlbnRCcmlkZ2UpO1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHJ1bGUpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmcuZXZlbnRCcmlkZ2UgPSBgRXZlbnRCcmlkZ2VSdWxlIyR7YnJpZGdlTmFtZX0jJHtydWxlTmFtZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRFdmVudEJ1cyhldmVudEJ1czogZXZlbnRzLkV2ZW50QnVzKSB7XG4gICAgY29uc3QgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgIChzKSA9PiAhcy51c2VkRm9yRXZlbnRCcmlkZ2VcbiAgICApO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnVzZWRGb3JFdmVudEJyaWRnZSA9IHRydWU7XG5cbiAgICBjb25zdCBicmlkZ2VOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKGV2ZW50QnVzKTtcbiAgICBjb25zdCBydWxlID0gbmV3IGV2ZW50cy5SdWxlKHRoaXMsIGBSdWxlQWxsJHticmlkZ2VOYW1lfWAsIHtcbiAgICAgIGV2ZW50QnVzLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7IHZlcnNpb246IFsnMCddIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuTGFtYmRhRnVuY3Rpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXSxcbiAgICB9KTtcblxuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2gocnVsZSk7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24ubWFwcGluZy5ldmVudEJyaWRnZSA9IGBFdmVudEJyaWRnZSMke2JyaWRnZU5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U25zVG9waWModG9waWM6IHNucy5Ub3BpYykge1xuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMuc3Vic3JpYmVkVG9waWNzLmluY2x1ZGVzKHRvcGljKVxuICAgICk7XG5cbiAgICB0b3BpYy5hZGRTdWJzY3JpcHRpb24oXG4gICAgICBuZXcgc25zU3Vicy5MYW1iZGFTdWJzY3JpcHRpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXG4gICAgKTtcbiAgICBjb25zdCB0b3BpY05hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUodG9waWMpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmdbdG9waWMudG9waWNBcm5dID0gYFNuc1RvcGljIyR7dG9waWNOYW1lfWA7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24uc3Vic3JpYmVkVG9waWNzLnB1c2godG9waWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTbnNTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBzbnMuU3Vic2NyaXB0aW9uKSB7XG4gICAgaWYgKCFzdWJzY3JpcHRpb24ubm9kZS5zY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcGljID0gdGhpcy5nZXRUb3BpYyhcbiAgICAgIChzdWJzY3JpcHRpb24ubm9kZS5kZWZhdWx0Q2hpbGQgYXMgc25zLkNmblN1YnNjcmlwdGlvbikudG9waWNBcm5cbiAgICApO1xuXG4gICAgaWYgKCF0b3BpYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gbm90IGZpbmQgVG9waWMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnN1YnNyaWJlZFRvcGljcy5pbmNsdWRlcyh0b3BpYylcbiAgICApO1xuXG4gICAgY29uc3QgeyBmaWx0ZXJQb2xpY3kgfSA9IHN1YnNjcmlwdGlvbi5ub2RlXG4gICAgICAuZGVmYXVsdENoaWxkIGFzIHNucy5DZm5TdWJzY3JpcHRpb247XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb25DbG9uZSA9IHRvcGljLmFkZFN1YnNjcmlwdGlvbihcbiAgICAgIG5ldyBzbnNTdWJzLkxhbWJkYVN1YnNjcmlwdGlvbihmdW5jdGlvblN1YnNjcmlwdGlvbi5mdW5jdGlvbilcbiAgICApO1xuICAgIChzdWJzY3JpcHRpb25DbG9uZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBzbnMuQ2ZuU3Vic2NyaXB0aW9uKS5maWx0ZXJQb2xpY3kgPVxuICAgICAgZmlsdGVyUG9saWN5O1xuXG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChzdWJzY3JpcHRpb25DbG9uZSk7XG5cbiAgICBjb25zdCB0b3BpY05hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUodG9waWMpO1xuICAgIGNvbnN0IHRhcmdldE5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoc3Vic2NyaXB0aW9uLm5vZGUuc2NvcGUpO1xuXG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24uc3Vic3JpYmVkVG9waWNzLnB1c2godG9waWMpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmdbXG4gICAgICB0b3BpYy50b3BpY0FyblxuICAgIF0gPSBgU25zU3Vic2NyaXB0aW9uIyR7dG9waWNOYW1lfSMke3RhcmdldE5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgcHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgIGZpbHRlckZ1bmN0aW9uPzogKHN1YnNjcmlwdGlvbjogRnVuY3Rpb25TdWJzY3JpcHRpb24pID0+IGJvb2xlYW5cbiAgKSB7XG4gICAgbGV0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uOiBGdW5jdGlvblN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChmaWx0ZXJGdW5jdGlvbikge1xuICAgICAgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5maW5kKGZpbHRlckZ1bmN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sLmxlbmd0aCA+IDApIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2xbMF07XG4gICAgfVxuXG4gICAgaWYgKCFmdW5jdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB7XG4gICAgICAgIHN1YnNyaWJlZFRvcGljczogW10sXG4gICAgICAgIHVzZWRGb3JFdmVudEJyaWRnZTogZmFsc2UsXG4gICAgICAgIG1hcHBpbmc6IHt9LFxuICAgICAgICBmdW5jdGlvbjogdGhpcy5jcmVhdGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5sZW5ndGhcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5wdXNoKGZ1bmN0aW9uU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRGdW5jdGlvbihmdW5jOiBsYW1iZGEuRnVuY3Rpb24pIHtcbiAgICBmdW5jLmFkZExheWVycyh0aGlzLmV4dGVuc2lvbkxheWVyKTtcbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbi5ncmFudEludm9rZShmdW5jKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShmdW5jKTtcblxuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoJ0ZVTkNUSU9OX05BTUUnLCBmdW5jdGlvbk5hbWUpO1xuICAgIGZ1bmMuYWRkRW52aXJvbm1lbnQoJ0FXU19MQU1CREFfRVhFQ19XUkFQUEVSJywgJy9vcHQvc3B5LXdyYXBwZXInKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KFxuICAgICAgJ0ZMVUVOVF9URVNUX1NFTkRfRlVOQ1RJT05fTkFNRScsXG4gICAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5mdW5jdGlvbi5mdW5jdGlvbk5hbWVcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldENvbnN0cnVjdE5hbWUoY29uc3RydWN0OiBJQ29uc3RydWN0KSB7XG4gICAgbGV0IGZ1bmN0aW9uTmFtZSA9IGNvbnN0cnVjdC5ub2RlLnBhdGg7XG4gICAgY29uc3QgeyBzdGFja05hbWUgfSA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgaWYgKGZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKHN0YWNrTmFtZSkpIHtcbiAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZS5zdWJzdHJpbmcoc3RhY2tOYW1lLmxlbmd0aCArIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb25OYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3BpYyh0b3BpY0Fybjogc3RyaW5nKTogc25zLlRvcGljIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0b3BpYyA9IHRoaXMuZmluZEVsZW1lbnQ8c25zLlRvcGljPihcbiAgICAgIChub2RlOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBub2RlIGluc3RhbmNlb2Ygc25zLlRvcGljICYmIChub2RlIGFzIHNucy5Ub3BpYykudG9waWNBcm4gPT09IHRvcGljQXJuXG4gICAgKTtcblxuICAgIHJldHVybiB0b3BpYztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRCcmlkZ2UoZXZlbnRCdXNOYW1lOiBzdHJpbmcpOiBldmVudHMuRXZlbnRCdXMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGV2ZW50QnJpZGdlID0gdGhpcy5maW5kRWxlbWVudDxldmVudHMuRXZlbnRCdXM+KFxuICAgICAgKG5vZGU6IElDb25zdHJ1Y3QpID0+XG4gICAgICAgIG5vZGUgaW5zdGFuY2VvZiBldmVudHMuRXZlbnRCdXMgJiZcbiAgICAgICAgKG5vZGUgYXMgZXZlbnRzLkV2ZW50QnVzKS5ldmVudEJ1c05hbWUgPT09IGV2ZW50QnVzTmFtZVxuICAgICk7XG5cbiAgICByZXR1cm4gZXZlbnRCcmlkZ2U7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFbGVtZW50PFQgZXh0ZW5kcyBJQ29uc3RydWN0ID0gSUNvbnN0cnVjdD4oXG4gICAgZmlsdGVyRnVuYzogKG5vZGU6IElDb25zdHJ1Y3QpID0+IGJvb2xlYW4sXG4gICAgcGFyZW50PzogSUNvbnN0cnVjdFxuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcGFyZW50ID0gU3RhY2sub2YodGhpcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoZmlsdGVyRnVuYyhub2RlKSkge1xuICAgICAgICByZXR1cm4gbm9kZSBhcyBUO1xuICAgICAgfVxuICAgICAgdGhpcy5maW5kRWxlbWVudDxUPihmaWx0ZXJGdW5jLCBub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbnR5cGUgRnVuY3Rpb25TdWJzY3JpcHRpb24gPSB7XG4gIHN1YnNyaWJlZFRvcGljczogc25zLlRvcGljW107XG4gIHVzZWRGb3JFdmVudEJyaWRnZTogYm9vbGVhbjtcbiAgZnVuY3Rpb246IGxhbWJkYU5vZGUuTm9kZWpzRnVuY3Rpb247XG4gIG1hcHBpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5mdW5jdGlvbiBnZXRBc3NldExvY2F0aW9uKGxvY2F0aW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgbG9jID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycgKyBsb2NhdGlvbik7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMobG9jKSkge1xuICAgIHJldHVybiBsb2M7XG4gIH1cblxuICBjb25zdCBsb2MyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycgKyBsb2NhdGlvbik7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMobG9jMikpIHtcbiAgICByZXR1cm4gbG9jMjtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgTG9jYXRpb24gJHtsb2N9IGFuZCAke2xvYzJ9IGRvZXMgbm90IGV4aXN0cy5gKTtcbn1cbiJdfQ==
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVybGVzc1NweS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZXJ2ZXJsZXNzU3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxPQUFPLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxLQUFLLFVBQVUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEtBQUssUUFBUSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxNQUFNLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRCxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sS0FBSyxjQUFjLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLFlBQVksQ0FBQztBQUVuRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFpQjFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFYWCxpQkFBWSxHQUFpQixFQUFFLENB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Q25CLElBQUksWUFBWSxNQUFNLENBQUMsUUFBUTtZQUM5QixJQUF3QixDQUFDLFlBQVksS0FBSyxZQUFZLENBQzFELENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sV0FBVyxDQUNqQixVQUF5QyxFQUN6QyxNQUFtQjtRQUVuQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQixPQUFPLElBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxXQUFXLENBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBU0QsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFnQjtJQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFbkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFFdkQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksbUJBQW1CLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGFwaUd3VjIgZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYSc7XG5pbXBvcnQgKiBhcyBhcGlHd1YySW50IGZyb20gJ0Bhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItaW50ZWdyYXRpb25zLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFndyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyJztcbmltcG9ydCAqIGFzIGR5bmFtb0RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkeW5hbW9EYlN0cmVhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhTm9kZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgczNub3RpZiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzbnNTdWJzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGNsYXNzIFNlcnZlcmxlc3NTcHkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGV4dGVuc2lvbkxheWVyOiBsYW1iZGEuTGF5ZXJWZXJzaW9uO1xuXG4gIHByaXZhdGUgdGFibGU6IGR5bmFtb0RiLlRhYmxlO1xuXG4gIHByaXZhdGUgd2ViU29ja2V0QXBpOiBhcGlHd1YyLldlYlNvY2tldEFwaTtcblxuICBwcml2YXRlIG93bkNvbnRydWN0czogSUNvbnN0cnVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBmdW5jdGlvblN1YnNjcmlwdGlvblBvb2w6IEZ1bmN0aW9uU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIGZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbjogRnVuY3Rpb25TdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSB3ZWJTb2NrZXRTdGFnZTogYXBpR3dWMi5XZWJTb2NrZXRTdGFnZTtcblxuICB3c1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbiA9IHBhdGguam9pbihcbiAgICAgIF9fZGlybmFtZSxcbiAgICAgICcuLi9leHRlbnNpb24vZGlzdC9sYXllcidcbiAgICApO1xuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGV4dGVuc2lvbkFzc2V0TG9jYXRpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGb2xkZXIgd2l0aCBhc3NldHMgZm9yIGV4dGVuc2lvbiBkb2VzIG5vdCBleGlzdHMgJHtleHRlbnNpb25Bc3NldExvY2F0aW9ufWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbldyYXBlciA9IHBhdGguam9pbihcbiAgICAgIGV4dGVuc2lvbkFzc2V0TG9jYXRpb24sXG4gICAgICAnc3B5LXdyYXBwZXInXG4gICAgKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbldyYXBlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFdyYXBlciBzY3JpcHQgZm9yIGV4dGVuc2lvbiBkb2VzIG5vdCBleGlzdHMgJHtleHRlbnNpb25Bc3NldExvY2F0aW9ufWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGUgPSBwYXRoLmpvaW4oXG4gICAgICBleHRlbnNpb25Bc3NldExvY2F0aW9uLFxuICAgICAgJ25vZGVqcy9ub2RlX21vZHVsZXMvaW50ZXJjZXB0b3IuanMnXG4gICAgKTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb2RlIGZvciBleHRlbnNpb24gZG9lcyBub3QgZXhpc3RzICR7ZXh0ZW5zaW9uQXNzZXRMb2NhdGlvbkNvZGV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmV4dGVuc2lvbkxheWVyID0gbmV3IGxhbWJkYS5MYXllclZlcnNpb24odGhpcywgJ0V4dGVuc2lvbicsIHtcbiAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW1xuICAgICAgICBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgICAgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgIGxhbWJkYS5SdW50aW1lLk5PREVKU18xNl9YLFxuICAgICAgXSxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChleHRlbnNpb25Bc3NldExvY2F0aW9uKSxcbiAgICB9KTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHRoaXMuZXh0ZW5zaW9uTGF5ZXIpO1xuXG4gICAgdGhpcy50YWJsZSA9IG5ldyBkeW5hbW9EYi5UYWJsZSh0aGlzLCAnV2ViU29ja2V0Jywge1xuICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgIG5hbWU6ICdjb25uZWN0aW9uSWQnLFxuICAgICAgICB0eXBlOiBkeW5hbW9EYi5BdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBiaWxsaW5nTW9kZTogZHluYW1vRGIuQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgIH0pO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy50YWJsZSk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk9uQ29ubmVjdCA9IG5ldyBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdPbkNvbm5lY3QnLCB7XG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL29uQ29ubmVjdC50cycpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgVEFCTEVfTkFNRTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudGFibGUuZ3JhbnRXcml0ZURhdGEoZnVuY3Rpb25PbkNvbm5lY3QpO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2goZnVuY3Rpb25PbkNvbm5lY3QpO1xuXG4gICAgY29uc3QgZnVuY3Rpb25PbkRpc2Nvbm5lY3QgPSBuZXcgbGFtYmRhTm9kZS5Ob2RlanNGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICAnT25EaXNjb25uZWN0JyxcbiAgICAgIHtcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgICAgaGFuZGxlcjogJ2hhbmRsZXInLFxuICAgICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL29uRGlzY29ubmVjdC50cycpLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFRBQkxFX05BTUU6IHRoaXMudGFibGUudGFibGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy50YWJsZS5ncmFudFdyaXRlRGF0YShmdW5jdGlvbk9uRGlzY29ubmVjdCk7XG4gICAgdGhpcy5vd25Db250cnVjdHMucHVzaChmdW5jdGlvbk9uRGlzY29ubmVjdCk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaSA9IG5ldyBhcGlHd1YyLldlYlNvY2tldEFwaSh0aGlzLCAnQXBpR3dXZWJTb2NrZXQnKTtcbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHRoaXMud2ViU29ja2V0QXBpKTtcbiAgICB0aGlzLndlYlNvY2tldFN0YWdlID0gbmV3IGFwaUd3VjIuV2ViU29ja2V0U3RhZ2UoXG4gICAgICB0aGlzLFxuICAgICAgJ0FwaUd3V2ViU29ja2V0U3RhZ2UnLFxuICAgICAge1xuICAgICAgICB3ZWJTb2NrZXRBcGk6IHRoaXMud2ViU29ja2V0QXBpLFxuICAgICAgICBzdGFnZU5hbWU6ICdwcm9kJyxcbiAgICAgICAgYXV0b0RlcGxveTogdHJ1ZSxcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2godGhpcy53ZWJTb2NrZXRTdGFnZSk7XG4gICAgY29uc3Qgd2ViU29ja2V0QXBpUm91dGUgPSB0aGlzLndlYlNvY2tldEFwaS5hZGRSb3V0ZSgnJGNvbm5lY3QnLCB7XG4gICAgICBpbnRlZ3JhdGlvbjogbmV3IGFwaUd3VjJJbnQuV2ViU29ja2V0TGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICAgICckY29ubmVjdCcsXG4gICAgICAgIGZ1bmN0aW9uT25Db25uZWN0XG4gICAgICApLFxuICAgIH0pO1xuICAgICh3ZWJTb2NrZXRBcGlSb3V0ZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBhZ3cuQ2ZuUm91dGUpLmF1dGhvcml6YXRpb25UeXBlID1cbiAgICAgICdBV1NfSUFNJztcblxuICAgIHRoaXMud2ViU29ja2V0QXBpLmFkZFJvdXRlKCckZGlzY29ubmVjdCcsIHtcbiAgICAgIGludGVncmF0aW9uOiBuZXcgYXBpR3dWMkludC5XZWJTb2NrZXRMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgJyRkaXNjb25uZWN0JyxcbiAgICAgICAgZnVuY3Rpb25PbkRpc2Nvbm5lY3RcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKCk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaS5hZGRSb3V0ZSgnc2VuZG1lc3NhZ2UnLCB7XG4gICAgICBpbnRlZ3JhdGlvbjogbmV3IGFwaUd3VjJJbnQuV2ViU29ja2V0TGFtYmRhSW50ZWdyYXRpb24oXG4gICAgICAgICdTZW5kTWVzc2FnZScsXG4gICAgICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLmZ1bmN0aW9uXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pdGVyYXRlQWxsRWxlbWVudHMoU3RhY2sub2YodGhpcykpO1xuXG4gICAgZm9yIChjb25zdCBmdW5jIG9mIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sKSB7XG4gICAgICBmdW5jLmZ1bmN0aW9uLmFkZEVudmlyb25tZW50KFxuICAgICAgICAnSU5GUkFfTUFQUElORycsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGZ1bmMubWFwcGluZylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gbmV3IENmbk91dHB1dCh0aGlzLCBcIkFQSV9VUkxcIiwge1xuICAgIC8vICAgdmFsdWU6IGB3c3M6Ly8ke3RoaXMud2ViU29ja2V0QXBpLmFwaUlkfS5leGVjdXRlLWFwaS4ke1xuICAgIC8vICAgICBTdGFjay5vZihzY29wZSkucmVnaW9uXG4gICAgLy8gICB9LmFtYXpvbmF3cy5jb20vJHt0aGlzLndlYlNvY2tldFN0YWdlLnN0YWdlTmFtZX1gLFxuICAgIC8vIH0pO1xuXG4gICAgdGhpcy53c1VybCA9IGB3c3M6Ly8ke3RoaXMud2ViU29ja2V0QXBpLmFwaUlkfS5leGVjdXRlLWFwaS4ke1xuICAgICAgU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgfS5hbWF6b25hd3MuY29tLyR7dGhpcy53ZWJTb2NrZXRTdGFnZS5zdGFnZU5hbWV9YDtcblxuICAgIC8vIG5ldyBDZm5PdXRwdXQodGhpcywgXCJBUElfVVJMXCIsIHtcbiAgICAvLyAgIHZhbHVlOiB0aGlzLndzVXJsLFxuICAgIC8vIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVyYXRlQWxsRWxlbWVudHMocGFyZW50OiBJQ29uc3RydWN0KSB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAodGhpcy5vd25Db250cnVjdHMuaW5jbHVkZXMobm9kZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5maW5kKChzKSA9PiBzLmZ1bmN0aW9uID09PSBub2RlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coJ05PREUnLCBub2RlLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIGxhbWJkYS5GdW5jdGlvbikge1xuICAgICAgICB0aGlzLmludGVyY2VwdEZ1bmN0aW9uKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2Ygc25zLlRvcGljKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcmNlcHRTbnNUb3BpYycpO1xuICAgICAgICB0aGlzLmludGVyY2VwdFNuc1RvcGljKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2Ygc25zLlN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLmludGVyY2VwdFNuc1N1YnNjcmlwdGlvbihub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIHMzLkJ1Y2tldCkge1xuICAgICAgICB0aGlzLmludGVyY2VwdFMzKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZHluYW1vRGIuVGFibGUpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHREeW5hbW9kYihub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIGV2ZW50cy5FdmVudEJ1cykge1xuICAgICAgICB0aGlzLmludGVyY2VwdEV2ZW50QnVzKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgZXZlbnRzLlJ1bGUpIHtcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRFdmVudEJ1c1J1bGUobm9kZSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBsYW1iZGEuQ2ZuRXZlbnRTb3VyY2VNYXBwaW5nKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0U3FzKG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ05PIE1BVENIJywgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaXRlcmF0ZUFsbEVsZW1lbnRzKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U3FzKG5vZGU6IGxhbWJkYS5DZm5FdmVudFNvdXJjZU1hcHBpbmcpIHtcbiAgICBjb25zdCBxdWV1ZSA9IHRoaXMuZmluZEVsZW1lbnQ8c3FzLlF1ZXVlPihcbiAgICAgIChuOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBuIGluc3RhbmNlb2Ygc3FzLlF1ZXVlICYmXG4gICAgICAgIChuIGFzIHNxcy5RdWV1ZSkucXVldWVBcm4gPT09IG5vZGUuZXZlbnRTb3VyY2VBcm5cbiAgICApO1xuXG4gICAgY29uc3QgZnVuYyA9IHRoaXMuZmluZEVsZW1lbnQ8bGFtYmRhLkZ1bmN0aW9uPihcbiAgICAgIChuOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBuIGluc3RhbmNlb2YgbGFtYmRhLkZ1bmN0aW9uICYmXG4gICAgICAgIChuIGFzIGxhbWJkYS5GdW5jdGlvbikuZnVuY3Rpb25OYW1lID09PSBub2RlLmZ1bmN0aW9uTmFtZVxuICAgICk7XG5cbiAgICBpZiAocXVldWUgJiYgZnVuYykge1xuICAgICAgY29uc3QgcXVldWVOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHF1ZXVlKTtcbiAgICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbXG4gICAgICAgIHF1ZXVlLnF1ZXVlQXJuXG4gICAgICBdID0gYFNxcyMke3F1ZXVlTmFtZX1gO1xuICAgICAgZnVuYy5hZGRFbnZpcm9ubWVudCgnRkxVRU5UX1RFU1RfU1VCU0NSSUJFRF9UT19TUVMnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZ1bmMgPSBuZXcgbGFtYmRhTm9kZS5Ob2RlanNGdW5jdGlvbih0aGlzLCBgU3Vic2NyaXB0aW9uJHtpbmRleH1gLCB7XG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICBlbnRyeTogZ2V0QXNzZXRMb2NhdGlvbignZnVuY3Rpb25zL3NlbmRNZXNzYWdlLnRzJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBUQUJMRV9OQU1FOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhYmxlLmdyYW50V3JpdGVEYXRhKGZ1bmMpO1xuICAgIHRoaXMudGFibGUuZ3JhbnRSZWFkRGF0YShmdW5jKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KFxuICAgICAgJ1dTX0VORFBPSU5UJyxcbiAgICAgIGBodHRwczovLyR7dGhpcy53ZWJTb2NrZXRBcGkuYXBpSWR9LmV4ZWN1dGUtYXBpLiR7XG4gICAgICAgIFN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuICAgICAgfS5hbWF6b25hd3MuY29tLyR7dGhpcy53ZWJTb2NrZXRTdGFnZS5zdGFnZU5hbWV9YFxuICAgICk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaS5ncmFudE1hbmFnZUNvbm5lY3Rpb25zKGZ1bmMpO1xuICAgIHJldHVybiBmdW5jO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRTMyhzM0J1Y2tldDogczMuQnVja2V0KSB7XG4gICAgczNCdWNrZXQuYWRkRXZlbnROb3RpZmljYXRpb24oXG4gICAgICBzMy5FdmVudFR5cGUuT0JKRUNUX0NSRUFURURfUFVULFxuICAgICAgbmV3IHMzbm90aWYuTGFtYmRhRGVzdGluYXRpb24odGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24pXG4gICAgKTtcblxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoczNCdWNrZXQpO1xuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLm1hcHBpbmdbczNCdWNrZXQuYnVja2V0QXJuXSA9IGBTMyMke25hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RHluYW1vZGIodGFibGU6IGR5bmFtb0RiLlRhYmxlKSB7XG4gICAgLy8gZW5hYmxlIER5bmFtb0RCIHN0cmVhbXMgd2l0aCBhIGhhY2tcbiAgICAodGFibGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgZHluYW1vRGIuQ2ZuVGFibGUpLnN0cmVhbVNwZWNpZmljYXRpb24gPSB7XG4gICAgICBzdHJlYW1WaWV3VHlwZTogZHluYW1vRGIuU3RyZWFtVmlld1R5cGUuTkVXX0FORF9PTERfSU1BR0VTLFxuICAgIH07XG4gICAgKHRhYmxlIGFzIGFueSkudGFibGVTdHJlYW1Bcm4gPSAoXG4gICAgICB0YWJsZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBkeW5hbW9EYi5DZm5UYWJsZVxuICAgICkuYXR0clN0cmVhbUFybjtcblxuICAgIHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25NYWluLmZ1bmN0aW9uLmFkZEV2ZW50U291cmNlKFxuICAgICAgbmV3IGR5bmFtb0RiU3RyZWFtLkR5bmFtb0V2ZW50U291cmNlKHRhYmxlLCB7XG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb246IGxhbWJkYS5TdGFydGluZ1Bvc2l0aW9uLkxBVEVTVCxcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiAwLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZSh0YWJsZSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uTWFpbi5tYXBwaW5nW3RhYmxlLnRhYmxlQXJuXSA9IGBEeW5hbW9EQiMke25hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RXZlbnRCdXNSdWxlKHJ1bGU6IGV2ZW50cy5SdWxlKSB7XG4gICAgY29uc3QgeyBldmVudEJ1c05hbWUgfSA9IHJ1bGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgZXZlbnRzLkNmblJ1bGU7XG4gICAgY29uc3QgZXZlbnRCcmlkZ2UgPSB0aGlzLmdldEV2ZW50QnJpZGdlKFxuICAgICAgKHJ1bGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgYW55KS5ldmVudEJ1c05hbWVcbiAgICApO1xuXG4gICAgaWYgKCFldmVudEJyaWRnZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IGZpbmQgRXZlbnRCcmlkZ2Ugd2l0aCBuYW1lIFwiJHtldmVudEJ1c05hbWV9XCJgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnVzZWRGb3JFdmVudEJyaWRnZVxuICAgICk7XG4gICAgZnVuY3Rpb25TdWJzY3JpcHRpb24udXNlZEZvckV2ZW50QnJpZGdlID0gdHJ1ZTtcblxuICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKSk7XG5cbiAgICBjb25zdCBicmlkZ2VOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKGV2ZW50QnJpZGdlKTtcbiAgICBjb25zdCBydWxlTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShydWxlKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nLmV2ZW50QnJpZGdlID0gYEV2ZW50QnJpZGdlUnVsZSMke2JyaWRnZU5hbWV9IyR7cnVsZU5hbWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RXZlbnRCdXMoZXZlbnRCdXM6IGV2ZW50cy5FdmVudEJ1cykge1xuICAgIGNvbnN0IGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wcm92aWRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAocykgPT4gIXMudXNlZEZvckV2ZW50QnJpZGdlXG4gICAgKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi51c2VkRm9yRXZlbnRCcmlkZ2UgPSB0cnVlO1xuXG4gICAgY29uc3QgYnJpZGdlTmFtZSA9IHRoaXMuZ2V0Q29uc3RydWN0TmFtZShldmVudEJ1cyk7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBldmVudHMuUnVsZSh0aGlzLCBgUnVsZUFsbCR7YnJpZGdlTmFtZX1gLCB7XG4gICAgICBldmVudEJ1cyxcbiAgICAgIGV2ZW50UGF0dGVybjogeyB2ZXJzaW9uOiBbJzAnXSB9LFxuICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkxhbWJkYUZ1bmN0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm93bkNvbnRydWN0cy5wdXNoKHJ1bGUpO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLm1hcHBpbmcuZXZlbnRCcmlkZ2UgPSBgRXZlbnRCcmlkZ2UjJHticmlkZ2VOYW1lfWA7XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdFNuc1RvcGljKHRvcGljOiBzbnMuVG9waWMpIHtcbiAgICBjb25zdCBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucHJvdmlkZUZ1bmN0aW9uRm9yU3Vic2NyaXB0aW9uKFxuICAgICAgKHMpID0+ICFzLnN1YnNyaWJlZFRvcGljcy5pbmNsdWRlcyh0b3BpYylcbiAgICApO1xuXG4gICAgdG9waWMuYWRkU3Vic2NyaXB0aW9uKFxuICAgICAgbmV3IHNuc1N1YnMuTGFtYmRhU3Vic2NyaXB0aW9uKGZ1bmN0aW9uU3Vic2NyaXB0aW9uLmZ1bmN0aW9uKVxuICAgICk7XG4gICAgY29uc3QgdG9waWNOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRvcGljKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nW3RvcGljLnRvcGljQXJuXSA9IGBTbnNUb3BpYyMke3RvcGljTmFtZX1gO1xuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnN1YnNyaWJlZFRvcGljcy5wdXNoKHRvcGljKTtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0U25zU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogc25zLlN1YnNjcmlwdGlvbikge1xuICAgIGlmICghc3Vic2NyaXB0aW9uLm5vZGUuc2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3BpYyA9IHRoaXMuZ2V0VG9waWMoXG4gICAgICAoc3Vic2NyaXB0aW9uLm5vZGUuZGVmYXVsdENoaWxkIGFzIHNucy5DZm5TdWJzY3JpcHRpb24pLnRvcGljQXJuXG4gICAgKTtcblxuICAgIGlmICghdG9waWMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBmaW5kIFRvcGljJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZnVuY3Rpb25TdWJzY3JpcHRpb24gPSB0aGlzLnByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICAgIChzKSA9PiAhcy5zdWJzcmliZWRUb3BpY3MuaW5jbHVkZXModG9waWMpXG4gICAgKTtcblxuICAgIGNvbnN0IHsgZmlsdGVyUG9saWN5IH0gPSBzdWJzY3JpcHRpb24ubm9kZVxuICAgICAgLmRlZmF1bHRDaGlsZCBhcyBzbnMuQ2ZuU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uQ2xvbmUgPSB0b3BpYy5hZGRTdWJzY3JpcHRpb24oXG4gICAgICBuZXcgc25zU3Vicy5MYW1iZGFTdWJzY3JpcHRpb24oZnVuY3Rpb25TdWJzY3JpcHRpb24uZnVuY3Rpb24pXG4gICAgKTtcbiAgICAoc3Vic2NyaXB0aW9uQ2xvbmUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgc25zLkNmblN1YnNjcmlwdGlvbikuZmlsdGVyUG9saWN5ID1cbiAgICAgIGZpbHRlclBvbGljeTtcblxuICAgIHRoaXMub3duQ29udHJ1Y3RzLnB1c2goc3Vic2NyaXB0aW9uQ2xvbmUpO1xuXG4gICAgY29uc3QgdG9waWNOYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHRvcGljKTtcbiAgICBjb25zdCB0YXJnZXROYW1lID0gdGhpcy5nZXRDb25zdHJ1Y3ROYW1lKHN1YnNjcmlwdGlvbi5ub2RlLnNjb3BlKTtcblxuICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uLnN1YnNyaWJlZFRvcGljcy5wdXNoKHRvcGljKTtcbiAgICBmdW5jdGlvblN1YnNjcmlwdGlvbi5tYXBwaW5nW1xuICAgICAgdG9waWMudG9waWNBcm5cbiAgICBdID0gYFNuc1N1YnNjcmlwdGlvbiMke3RvcGljTmFtZX0jJHt0YXJnZXROYW1lfWA7XG4gIH1cblxuICBwcml2YXRlIHByb3ZpZGVGdW5jdGlvbkZvclN1YnNjcmlwdGlvbihcbiAgICBmaWx0ZXJGdW5jdGlvbj86IChzdWJzY3JpcHRpb246IEZ1bmN0aW9uU3Vic2NyaXB0aW9uKSA9PiBib29sZWFuXG4gICkge1xuICAgIGxldCBmdW5jdGlvblN1YnNjcmlwdGlvbjogRnVuY3Rpb25TdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZmlsdGVyRnVuY3Rpb24pIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wuZmluZChmaWx0ZXJGdW5jdGlvbik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZ1bmN0aW9uU3Vic2NyaXB0aW9uUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICBmdW5jdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMuZnVuY3Rpb25TdWJzY3JpcHRpb25Qb29sWzBdO1xuICAgIH1cblxuICAgIGlmICghZnVuY3Rpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgIGZ1bmN0aW9uU3Vic2NyaXB0aW9uID0ge1xuICAgICAgICBzdWJzcmliZWRUb3BpY3M6IFtdLFxuICAgICAgICB1c2VkRm9yRXZlbnRCcmlkZ2U6IGZhbHNlLFxuICAgICAgICBtYXBwaW5nOiB7fSxcbiAgICAgICAgZnVuY3Rpb246IHRoaXMuY3JlYXRlRnVuY3Rpb25Gb3JTdWJzY3JpcHRpb24oXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wubGVuZ3RoXG4gICAgICAgICksXG4gICAgICB9O1xuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvblBvb2wucHVzaChmdW5jdGlvblN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvblN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgaW50ZXJjZXB0RnVuY3Rpb24oZnVuYzogbGFtYmRhLkZ1bmN0aW9uKSB7XG4gICAgZnVuYy5hZGRMYXllcnModGhpcy5leHRlbnNpb25MYXllcik7XG4gICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uZ3JhbnRJbnZva2UoZnVuYyk7XG5cbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSB0aGlzLmdldENvbnN0cnVjdE5hbWUoZnVuYyk7XG5cbiAgICBmdW5jLmFkZEVudmlyb25tZW50KCdGVU5DVElPTl9OQU1FJywgZnVuY3Rpb25OYW1lKTtcbiAgICBmdW5jLmFkZEVudmlyb25tZW50KCdBV1NfTEFNQkRBX0VYRUNfV1JBUFBFUicsICcvb3B0L3NweS13cmFwcGVyJyk7XG4gICAgZnVuYy5hZGRFbnZpcm9ubWVudChcbiAgICAgICdGTFVFTlRfVEVTVF9TRU5EX0ZVTkNUSU9OX05BTUUnLFxuICAgICAgdGhpcy5mdW5jdGlvblN1YnNjcmlwdGlvbk1haW4uZnVuY3Rpb24uZnVuY3Rpb25OYW1lXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25zdHJ1Y3ROYW1lKGNvbnN0cnVjdDogSUNvbnN0cnVjdCkge1xuICAgIGxldCBmdW5jdGlvbk5hbWUgPSBjb25zdHJ1Y3Qubm9kZS5wYXRoO1xuICAgIGNvbnN0IHsgc3RhY2tOYW1lIH0gPSBTdGFjay5vZih0aGlzKTtcblxuICAgIGlmIChmdW5jdGlvbk5hbWUuc3RhcnRzV2l0aChzdGFja05hbWUpKSB7XG4gICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWUuc3Vic3RyaW5nKHN0YWNrTmFtZS5sZW5ndGggKyAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9waWModG9waWNBcm46IHN0cmluZyk6IHNucy5Ub3BpYyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdG9waWMgPSB0aGlzLmZpbmRFbGVtZW50PHNucy5Ub3BpYz4oXG4gICAgICAobm9kZTogSUNvbnN0cnVjdCkgPT5cbiAgICAgICAgbm9kZSBpbnN0YW5jZW9mIHNucy5Ub3BpYyAmJiAobm9kZSBhcyBzbnMuVG9waWMpLnRvcGljQXJuID09PSB0b3BpY0FyblxuICAgICk7XG5cbiAgICByZXR1cm4gdG9waWM7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50QnJpZGdlKGV2ZW50QnVzTmFtZTogc3RyaW5nKTogZXZlbnRzLkV2ZW50QnVzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBldmVudEJyaWRnZSA9IHRoaXMuZmluZEVsZW1lbnQ8ZXZlbnRzLkV2ZW50QnVzPihcbiAgICAgIChub2RlOiBJQ29uc3RydWN0KSA9PlxuICAgICAgICBub2RlIGluc3RhbmNlb2YgZXZlbnRzLkV2ZW50QnVzICYmXG4gICAgICAgIChub2RlIGFzIGV2ZW50cy5FdmVudEJ1cykuZXZlbnRCdXNOYW1lID09PSBldmVudEJ1c05hbWVcbiAgICApO1xuXG4gICAgcmV0dXJuIGV2ZW50QnJpZGdlO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRWxlbWVudDxUIGV4dGVuZHMgSUNvbnN0cnVjdCA9IElDb25zdHJ1Y3Q+KFxuICAgIGZpbHRlckZ1bmM6IChub2RlOiBJQ29uc3RydWN0KSA9PiBib29sZWFuLFxuICAgIHBhcmVudD86IElDb25zdHJ1Y3RcbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBwYXJlbnQubm9kZS5jaGlsZHJlbikge1xuICAgICAgaWYgKGZpbHRlckZ1bmMobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUgYXMgVDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZEVsZW1lbnQ8VD4oZmlsdGVyRnVuYywgbm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIEZ1bmN0aW9uU3Vic2NyaXB0aW9uID0ge1xuICBzdWJzcmliZWRUb3BpY3M6IHNucy5Ub3BpY1tdO1xuICB1c2VkRm9yRXZlbnRCcmlkZ2U6IGJvb2xlYW47XG4gIGZ1bmN0aW9uOiBsYW1iZGFOb2RlLk5vZGVqc0Z1bmN0aW9uO1xuICBtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuZnVuY3Rpb24gZ2V0QXNzZXRMb2NhdGlvbihsb2NhdGlvbjogc3RyaW5nKSB7XG4gIGNvbnN0IGxvYyA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nICsgbG9jYXRpb24pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGxvYykpIHtcbiAgICByZXR1cm4gbG9jO1xuICB9XG5cbiAgY29uc3QgbG9jMiA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nICsgbG9jYXRpb24pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGxvYzIpKSB7XG4gICAgcmV0dXJuIGxvYzI7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYExvY2F0aW9uICR7bG9jfSBhbmQgJHtsb2MyfSBkb2VzIG5vdCBleGlzdHMuYCk7XG59XG4iXX0=
|
package/package.json
CHANGED