@mavogel/cdk-vscode-server 0.0.78 → 0.0.80
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
CHANGED
|
@@ -5056,6 +5056,6 @@
|
|
|
5056
5056
|
"symbolId": "src/vscode-server:VSCodeServerProps"
|
|
5057
5057
|
}
|
|
5058
5058
|
},
|
|
5059
|
-
"version": "0.0.
|
|
5060
|
-
"fingerprint": "
|
|
5059
|
+
"version": "0.0.80",
|
|
5060
|
+
"fingerprint": "zy2J9BRv5W/pP1groPULqgS/KrgV+R6cJR8QD6ytI44="
|
|
5061
5061
|
}
|
|
@@ -83,5 +83,5 @@ class IdleMonitor extends constructs_1.Construct {
|
|
|
83
83
|
}
|
|
84
84
|
exports.IdleMonitor = IdleMonitor;
|
|
85
85
|
_a = JSII_RTTI_SYMBOL_1;
|
|
86
|
-
IdleMonitor[_a] = { fqn: "@mavogel/cdk-vscode-server.IdleMonitor", version: "0.0.
|
|
86
|
+
IdleMonitor[_a] = { fqn: "@mavogel/cdk-vscode-server.IdleMonitor", version: "0.0.80" };
|
|
87
87
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRsZS1tb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2lkbGUtbW9uaXRvci9pZGxlLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsNkNBQThDO0FBRzlDLHVEQUF3RDtBQUN4RCx1RUFBd0Y7QUFDeEYsaURBQXNEO0FBQ3RELHVEQUFtRjtBQUNuRixxQ0FBMEM7QUFDMUMsMkNBQXVDO0FBcUN2Qzs7R0FFRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBV3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25ELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLCtDQUErQyxDQUFDLENBQUM7WUFDM0YsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsR0FBRztZQUNmLFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVO2dCQUN0QyxlQUFlLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjO2dCQUNsRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO2dCQUN6RCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTzthQUM5RDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUMzQixJQUFJLHlCQUFlLENBQUM7WUFDbEIsT0FBTyxFQUFFO2dCQUNQLGdDQUFnQztnQkFDaEMsMEJBQTBCO2FBQzNCO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUMsQ0FDSCxDQUFDO1FBRUYsd0ZBQXdGO1FBQ3hGLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCx1QkFBdUI7Z0JBQ3ZCLDRCQUE0QjthQUM3QjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCxtQkFBbUI7YUFDcEI7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsZUFBZSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxhQUFhLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO2FBQ3ZHO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRiwyREFBMkQ7UUFDM0QseUVBQXlFO1FBQ3pFLDZFQUE2RTtRQUM3RSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxpQkFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDakQsUUFBUSxFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUscURBQXFEO1NBQ3RFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksbUNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFckUsdUJBQXVCO1FBQ3ZCLHlCQUFlLENBQUMsdUJBQXVCLENBQ3JDLElBQUksQ0FBQyxRQUFRLEVBQ2I7WUFDRTtnQkFDRSxFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsMkRBQTJEO2FBQ3BFO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLG1CQUFtQjtnQkFDdkIsTUFBTSxFQUFFLGlEQUFpRDthQUMxRDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxpQkFBaUI7Z0JBQ3JCLE1BQU0sRUFBRSwrQ0FBK0M7YUFDeEQ7U0FDRixFQUNELElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs7QUE1Rkgsa0NBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElEaXN0cmlidXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBJSW5zdGFuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiBhcyBMYW1iZGFGdW5jdGlvblRhcmdldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUsIENvZGUsIEZ1bmN0aW9uIGFzIExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdjZGstbmFnJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBJZGxlTW9uaXRvciBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZGxlTW9uaXRvclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBFQzIgaW5zdGFuY2UgdG8gbW9uaXRvclxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IElJbnN0YW5jZTtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiB0byBtb25pdG9yIGZvciBhY3Rpdml0eVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBJRGlzdHJpYnV0aW9uO1xuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbnV0ZXMgb2YgaW5hY3Rpdml0eSBiZWZvcmUgc3RvcHBpbmcgdGhlIGluc3RhbmNlXG4gICAqL1xuICByZWFkb25seSBpZGxlVGltZW91dE1pbnV0ZXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIEhvdyBvZnRlbiB0byBjaGVjayBmb3IgaWRsZSBhY3Rpdml0eSAoaW4gbWludXRlcylcbiAgICogQGRlZmF1bHQgNSAtIENoZWNrIGV2ZXJ5IDUgbWludXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJbnRlcnZhbE1pbnV0ZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTa2lwIGluc3RhbmNlIHN0YXR1cyBjaGVja3MgYmVmb3JlIHN0b3BwaW5nXG4gICAqIFdoZW4gdHJ1ZSwgSWRsZU1vbml0b3Igd2lsbCBzdG9wIGlkbGUgaW5zdGFuY2VzIGV2ZW4gaWYgc3RhdHVzIGNoZWNrcyBoYXZlbid0IHBhc3NlZFxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgd2hlcmUgc3RhdHVzIGNoZWNrIGluaXRpYWxpemF0aW9uIHRpbWVcbiAgICogZXhjZWVkcyB0ZXN0IHRpbWVvdXQgbGltaXRzXG4gICAqXG4gICAqIFdBUk5JTkc6IEZvciB0ZXN0aW5nIG9ubHkgLSBpbiBwcm9kdWN0aW9uLCB5b3Ugc2hvdWxkIHdhaXQgZm9yIHN0YXR1cyBjaGVja3NcbiAgICogdG8gcGFzcyBiZWZvcmUgc3RvcHBpbmcgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwU3RhdHVzQ2hlY2tzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhhdCBtb25pdG9ycyBDbG91ZEZyb250IHJlcXVlc3QgbWV0cmljcyBhbmQgc3RvcHMgdGhlIEVDMiBpbnN0YW5jZSB3aGVuIGlkbGVcbiAqL1xuZXhwb3J0IGNsYXNzIElkbGVNb25pdG9yIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBpZGxlIG1vbml0b3JpbmdcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbjogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBFdmVudEJyaWRnZSBydWxlIHRoYXQgdHJpZ2dlcnMgaWRsZSBtb25pdG9yaW5nIGNoZWNrc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlUnVsZTogUnVsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRsZU1vbml0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdGdW5jdGlvbicsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXNzZXRzL2lkbGUtbW9uaXRvci9pZGxlLW1vbml0b3IubGFtYmRhJykpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBJTlNUQU5DRV9JRDogcHJvcHMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgRElTVFJJQlVUSU9OX0lEOiBwcm9wcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uSWQsXG4gICAgICAgIElETEVfVElNRU9VVF9NSU5VVEVTOiBwcm9wcy5pZGxlVGltZW91dE1pbnV0ZXMudG9TdHJpbmcoKSxcbiAgICAgICAgU0tJUF9TVEFUVVNfQ0hFQ0tTOiBwcm9wcy5za2lwU3RhdHVzQ2hlY2tzID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2Nsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljcycsXG4gICAgICAgICAgJ2Nsb3Vkd2F0Y2g6R2V0TWV0cmljRGF0YScsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gRGVzY3JpYmVJbnN0YW5jZXMgYW5kIERlc2NyaWJlSW5zdGFuY2VTdGF0dXMgZG9uJ3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBwZXJtaXNzaW9uc1xuICAgIC8vIFRoZXkgcmVxdWlyZSB3aWxkY2FyZCByZXNvdXJjZXNcbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZUluc3RhbmNlU3RhdHVzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBTdG9wSW5zdGFuY2VzIHN1cHBvcnRzIHJlc291cmNlLWxldmVsIHBlcm1pc3Npb25zLCBzbyB3ZSBjYW4gcmVzdHJpY3QgaXRcbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpTdG9wSW5zdGFuY2VzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgYGFybjphd3M6ZWMyOiR7U3RhY2sub2YodGhpcykucmVnaW9ufToke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9Omluc3RhbmNlLyR7cHJvcHMuaW5zdGFuY2UuaW5zdGFuY2VJZH1gLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBFdmVudEJyaWRnZSBydWxlIHRvIHRyaWdnZXIgYXQgc3BlY2lmaWVkIGludGVydmFsXG4gICAgLy8gTk9URTogUnVsZSBpcyBjcmVhdGVkIGluIERJU0FCTEVEIHN0YXRlIGFuZCBtdXN0IGJlIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgIC8vIGFmdGVyIGluc3RhbGxhdGlvbiBjb21wbGV0ZXMgdG8gcHJldmVudCBzdG9wcGluZyB0aGUgaW5zdGFuY2UgZHVyaW5nIHNldHVwXG4gICAgY29uc3QgY2hlY2tJbnRlcnZhbCA9IHByb3BzLmNoZWNrSW50ZXJ2YWxNaW51dGVzID8/IDU7XG4gICAgdGhpcy5zY2hlZHVsZVJ1bGUgPSBuZXcgUnVsZSh0aGlzLCAnU2NoZWR1bGVSdWxlJywge1xuICAgICAgc2NoZWR1bGU6IFNjaGVkdWxlLnJhdGUoRHVyYXRpb24ubWludXRlcyhjaGVja0ludGVydmFsKSksXG4gICAgICBlbmFibGVkOiBmYWxzZSwgLy8gU3RhcnQgZGlzYWJsZWQsIHdpbGwgYmUgZW5hYmxlZCBhZnRlciBpbnN0YWxsYXRpb25cbiAgICB9KTtcblxuICAgIHRoaXMuc2NoZWR1bGVSdWxlLmFkZFRhcmdldChuZXcgTGFtYmRhRnVuY3Rpb25UYXJnZXQodGhpcy5mdW5jdGlvbikpO1xuXG4gICAgLy8gQ0RLLW5hZyBzdXBwcmVzc2lvbnNcbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICB0aGlzLmZ1bmN0aW9uLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOiAnTWFuYWdlZCBwb2xpY2llcyBhY2NlcHRhYmxlIGZvciB3b3Jrc2hvcCBMYW1iZGEgZnVuY3Rpb25zJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgIHJlYXNvbjogJ0Nsb3VkV2F0Y2ggbWV0cmljcyByZXF1aXJlIHdpbGRjYXJkIHBlcm1pc3Npb25zJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUwxJyxcbiAgICAgICAgICByZWFzb246ICdMYXRlc3QgcnVudGltZSBub3QgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -342,7 +342,7 @@ fi`,
|
|
|
342
342
|
'#!/bin/bash',
|
|
343
343
|
`export HOME=/home/${vsCodeUser}`,
|
|
344
344
|
// renovate: datasource=github-releases depName=coder/code-server
|
|
345
|
-
'curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.
|
|
345
|
+
'curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.118.0',
|
|
346
346
|
`systemctl enable --now code-server@${vsCodeUser} 2>&1`,
|
|
347
347
|
`tee /etc/nginx/conf.d/code-server.conf <<EOF
|
|
348
348
|
server {
|
|
@@ -1077,4 +1077,4 @@ class CustomResourceInstaller extends Installer {
|
|
|
1077
1077
|
}
|
|
1078
1078
|
_bind() { }
|
|
1079
1079
|
}
|
|
1080
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbGxlci9pbnN0YWxsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXNEO0FBRXRELDJDQUEyQztBQUMzQywyQ0FBd0U7QUFDeEUsbUVBQXdEO0FBQ3hELHFDQUEwQztBQUUxQyw2REFBeUQ7QUFDekQsb0RBQXNFO0FBc0h0RSxNQUFzQixTQUFTO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBeUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLFNBQVM7WUFDMUIsS0FBSyxDQUFDLEtBQWdCO2dCQUMzQixJQUFJLFlBQVksQ0FBQztnQkFDakIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztnQkFDcEQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNyQyxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLGNBQWMsRUFDdEIsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLGtCQUFrQixDQUMzQixDQUFDO29CQUNGLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSyxDQUFDO2dCQUNoQyxDQUFD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RCxJQUFJLENBQ0wsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7WUFDeEQsY0FBYyxFQUFFLE9BQU87U0FDeEIsQ0FBQyxDQUFDO1FBQ0gseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDckMsQ0FBQyxRQUFRLENBQUMsRUFDVjtZQUNFO2dCQUNFLEVBQUUsRUFBRSxtQkFBbUI7Z0JBQ3ZCLE1BQU0sRUFDSiwrREFBK0Q7YUFDbEU7WUFDRDtnQkFDRSxFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsc0NBQXNDO2FBQy9DO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsTUFBTSxFQUFFLG9EQUFvRDthQUM3RDtTQUNGLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLHFCQUFjLENBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFO1lBQ3RELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsY0FBYyxFQUFFLGVBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLG9DQUFvQztnQkFDMUYsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0I7Z0JBQ3RELGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYzthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLEtBQUksQ0FBQztDQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IEFybiwgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IE5hZ1N1cHByZXNzaW9ucyB9IGZyb20gJ2Nkay1uYWcnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJbnN0YWxsZXJGdW5jdGlvbiB9IGZyb20gJy4vaW5zdGFsbGVyLWZ1bmN0aW9uJztcbmltcG9ydCB7IExpbnV4Rmxhdm9yVHlwZSwgQ3VzdG9tSW5zdGFsbFN0ZXAgfSBmcm9tICcuLi92c2NvZGUtc2VydmVyJztcblxuaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBlYzIgaW5zdGFuY2UgaWQgdG8gaW5zdGFsbCB0aGUgc3NtIGRvY3VtZW50IG9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjdXN0b20gc3NtIGRvY3VtZW50IHRvIGluc3RhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBzc20gZG9jdW1lbnQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSBpbnN0YWxsIGxvZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9XG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSByZXN0IHBhdGggdnMgY29kZSBzZXJ2ZXIgd2lsbCBydW5cbiAgICpcbiAgICogQGRlZmF1bHQgYXBwXG4gICAqL1xuICByZWFkb25seSBkZXZTZXJ2ZXJCYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdnNjb2RlciBzZXJ2ZXIgd2lsbCBiZSBzZXJ2ZWQgaW4gdGhlIGluc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwODFcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gZG9tYWluIG5hbWUgZm9yIHRoZSBWUyBDb2RlIHNlcnZlclxuICAgKiBVc2VkIHRvIGNvbmZpZ3VyZSBuZ2lueCBzZXJ2ZXJfbmFtZSBkaXJlY3RpdmVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VzICouY2xvdWRmcm9udC5uZXQgb25seVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIExpbnV4IGZsYXZvciB0eXBlIGZvciB0aGUgaW5zdGFuY2VcbiAgICovXG4gIHJlYWRvbmx5IGxpbnV4Rmxhdm9yVHlwZTogTGludXhGbGF2b3JUeXBlO1xuXG4gIC8qKlxuICAgKiBSZW1vdGUgZ2l0IHJlcG9zaXRvcnkgVVJMIHRvIGNsb25lIGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgdXNlcidzIGhvbWUgZm9sZGVyIGR1cmluZyBpbnN0YW5jZSBzZXR1cC5cbiAgICogVXNlZnVsIGZvciBwcmUtcG9wdWxhdGluZyB3b3Jrc2hvcCBlbnZpcm9ubWVudHMgd2l0aCBzdGFydGVyIGNvZGUuXG4gICAqXG4gICAqIEBleGFtcGxlICdodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvbXktd29ya3Nob3AtcmVwby5naXQnXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVwbyBjbG9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9Vcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGFzc2V0cyB0byBleHRyYWN0IGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBUaGUgemlwIGNvbnRlbnRzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSB1c2VyJ3MgaG9tZSBmb2xkZXIgYW5kIGNvbW1pdHRlZCB0byBnaXQuXG4gICAqIFVzZSB0aGlzIHRvIHByb3ZpZGUgd29ya3Nob3AgbWF0ZXJpYWxzLCBzYW1wbGUgZGF0YSwgb3IgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9hc3NldHMvd29ya3Nob3AtbWF0ZXJpYWxzLnppcCdcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldHMgZG93bmxvYWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGdpdCBicmFuY2hlcyB0byBjcmVhdGUgaW4gdGhlIGhvbWUgZm9sZGVyIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEVhY2ggdG9wLWxldmVsIGZvbGRlciBpbiB0aGUgemlwIGJlY29tZXMgYSBzZXBhcmF0ZSBnaXQgYnJhbmNoIHdpdGggdGhhdCBmb2xkZXIncyBjb250ZW50cy5cbiAgICogSWRlYWwgZm9yIGNyZWF0aW5nIHN0ZXAtYnktc3RlcCB3b3Jrc2hvcCBicmFuY2hlcyAoZS5nLiwgc3RlcC0xLCBzdGVwLTIsIHNvbHV0aW9uKS5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9icmFuY2hlcy9sYWItYnJhbmNoZXMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBzdGVwLTEvLCBzdGVwLTIvLCBzb2x1dGlvbi8pXG4gICAqIEBkZWZhdWx0IC0gbm8gYnJhbmNoZXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoWmlwUzNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBwYXRoIHRvIGEgemlwIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBmb2xkZXJzIHRvIGNyZWF0ZSBhcyBzZXBhcmF0ZSBnaXQgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBFYWNoIHRvcC1sZXZlbCBmb2xkZXIgaW4gdGhlIHppcCBiZWNvbWVzIGEgc2VwYXJhdGUgc3ViZm9sZGVyIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LFxuICAgKiBpbml0aWFsaXplZCBhcyBpdHMgb3duIGdpdCByZXBvc2l0b3J5LiBVc2VmdWwgZm9yIG11bHRpLXByb2plY3Qgd29ya3Nob3BzLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnbXktd29ya3Nob3AtYnVja2V0L2ZvbGRlcnMvd29ya3Nob3AtcHJvamVjdHMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBmcm9udGVuZC8sIGJhY2tlbmQvLCBpbmZyYXN0cnVjdHVyZS8pXG4gICAqIEBkZWZhdWx0IC0gbm8gZm9sZGVycyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgdG8gZXh0ZW5kIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjdXN0b20gaW5zdGFsbGF0aW9uIHN0ZXBzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21JbnN0YWxsU3RlcHM/OiBDdXN0b21JbnN0YWxsU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnMgZXh0ZW5kcyBJbnN0YWxsZXJPcHRpb25zQmFzZSB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5zdGFsbGVyIHtcbiAgcHVibGljIHN0YXRpYyB1YnVudHUob3B0aW9uczogSW5zdGFsbGVyT3B0aW9ucyk6IEluc3RhbGxlciB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBJbnN0YWxsZXIge1xuICAgICAgcHVibGljIF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiBJbnN0YWxsZXIge1xuICAgICAgICBsZXQgZG9jdW1lbnROYW1lO1xuICAgICAgICBjb25zdCBkZXZTZXJ2ZXJCYXNlUGF0aCA9IG9wdGlvbnMuZGV2U2VydmVyQmFzZVBhdGggPz8gJ2FwcCc7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlclBvcnQgPSBvcHRpb25zLmRldlNlcnZlclBvcnQgPz8gODA4MTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZG9jdW1lbnROYW1lICYmIG9wdGlvbnMuZG9jdW1lbnROYW1lICE9ICcnKSB7XG4gICAgICAgICAgZG9jdW1lbnROYW1lID0gb3B0aW9ucy5kb2N1bWVudE5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLmNyZWF0ZVNTTURvY3VtZW50KFxuICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICBkZXZTZXJ2ZXJCYXNlUGF0aCxcbiAgICAgICAgICAgIGRldlNlcnZlclBvcnQsXG4gICAgICAgICAgICBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgICBvcHRpb25zLmhvbWVGb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zLmxpbnV4Rmxhdm9yVHlwZSxcbiAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVwb1VybCxcbiAgICAgICAgICAgIG9wdGlvbnMuYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgICBvcHRpb25zLmJyYW5jaFppcFMzUGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9sZGVyWmlwUzNQYXRoLFxuICAgICAgICAgICAgb3B0aW9ucy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBkb2N1bWVudC5uYW1lITtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgICAgICAgIG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA/PyBgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9YDtcblxuICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXIoc2NvcGUsIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgICAgZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB2c0NvZGVVc2VyOiBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5zdGFsbGVyO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFtYXpvbkxpbnV4MjAyMyhvcHRpb25zOiBJbnN0YWxsZXJPcHRpb25zKTogSW5zdGFsbGVyIHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIEluc3RhbGxlciB7XG4gICAgICBwdWJsaWMgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IEluc3RhbGxlciB7XG4gICAgICAgIGxldCBkb2N1bWVudE5hbWU7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlckJhc2VQYXRoID0gb3B0aW9ucy5kZXZTZXJ2ZXJCYXNlUGF0aCA/PyAnYXBwJztcbiAgICAgICAgY29uc3QgZGV2U2VydmVyUG9ydCA9IG9wdGlvbnMuZGV2U2VydmVyUG9ydCA/PyA4MDgxO1xuICAgICAgICBpZiAob3B0aW9ucy5kb2N1bWVudE5hbWUgJiYgb3B0aW9ucy5kb2N1bWVudE5hbWUgIT0gJycpIHtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBvcHRpb25zLmRvY3VtZW50TmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgICAgZGV2U2VydmVyUG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaG9tZUZvbGRlcixcbiAgICAgICAgICAgIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMyxcbiAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVwb1VybCxcbiAgICAgICAgICAgIG9wdGlvbnMuYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgICBvcHRpb25zLmJyYW5jaFppcFMzUGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9sZGVyWmlwUzNQYXRoLFxuICAgICAgICAgICAgb3B0aW9ucy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBkb2N1bWVudC5uYW1lITtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgICAgICAgIG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA/PyBgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9YDtcblxuICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXIoc2NvcGUsIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgICAgZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB2c0NvZGVVc2VyOiBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5zdGFsbGVyO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgaW5zdGFuY2VJZCE6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50TmFtZSE6IHN0cmluZztcbiAgcHVibGljIGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyB2c0NvZGVQYXNzd29yZCE6IHN0cmluZztcbiAgcHVibGljIHZzQ29kZVBhc3N3b3JkVGVzdCE6IHN0cmluZztcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfYmluZChzY29wZTogQ29uc3RydWN0KTogYW55O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQ2xvdWRXYXRjaEFnZW50IHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxDbG91ZFdhdGNoQWdlbnRTdGVwKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpjb25maWd1cmVQYWNrYWdlJyxcbiAgICAgIG5hbWU6ICdJbnN0YWxsQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBuYW1lOiAnQW1hem9uQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgYWN0aW9uOiAnSW5zdGFsbCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQ29uZmlndXJlQ2xvdWRXYXRjaEFnZW50IHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyZUNsb3VkV2F0Y2hBZ2VudFN0ZXAoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnYXdzOnJ1bkRvY3VtZW50JyxcbiAgICAgIG5hbWU6ICdDb25maWd1cmVDbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgaW5wdXRzOiB7XG4gICAgICAgIGRvY3VtZW50VHlwZTogJ1NTTURvY3VtZW50JyxcbiAgICAgICAgZG9jdW1lbnRQYXRoOiAnQW1hem9uQ2xvdWRXYXRjaC1NYW5hZ2VBZ2VudCcsXG4gICAgICAgIGRvY3VtZW50UGFyYW1ldGVyczoge1xuICAgICAgICAgIGFjdGlvbjogJ2NvbmZpZ3VyZScsXG4gICAgICAgICAgbW9kZTogJ2VjMicsXG4gICAgICAgICAgb3B0aW9uYWxDb25maWd1cmF0aW9uU291cmNlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgb3B0aW9uYWxSZXN0YXJ0OiAneWVzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBVcGRhdGVQcm9maWxlIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVVwZGF0ZVByb2ZpbGVTdGVwKHZzQ29kZVVzZXI6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIGFjY291bnQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnVXBkYXRlUHJvZmlsZScsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ2VjaG8gTEFORz1lbl9VUy51dGYtOCA+PiAvZXRjL2Vudmlyb25tZW50JyxcbiAgICAgICAgICAnZWNobyBMQ19BTEw9ZW5fVVMuVVRGLTggPj4gL2V0Yy9lbnZpcm9ubWVudCcsXG4gICAgICAgICAgYGVjaG8gJ1BBVEg9JFBBVEg6L2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgUEFUSCcgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICBgZWNobyAnZXhwb3J0IEFXU19SRUdJT049JHtyZWdpb259JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgQVdTX0FDQ09VTlRJRD0ke2FjY291bnR9JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgTkVYVF9URUxFTUVUUllfRElTQUJMRUQ9MScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICBgZWNobyBcImV4cG9ydCBQUzE9J1xcXFxbXFxcXDAzM1swMTszMm1cXFxcXVxcXFx1OlxcXFxbXFxcXDAzM1swMTszNG1cXFxcXVxcXFx3XFxcXFtcXFxcMDMzWzAwbVxcXFxdXFxcXCQgJ1wiID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQVdTQ0xJIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxBV1NDTElTdGVwKHZzQ29kZVVzZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbEFXU0NMSScsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ21rZGlyIC1wIC90bXAnLFxuICAgICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vYXdzY2xpLmFtYXpvbmF3cy5jb20vYXdzY2xpLWV4ZS1saW51eC0kKHVuYW1lIC1tKS56aXAgLW8gL3RtcC9hd3MtY2xpLnppcCcsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL2F3cy1jbGkuemlwYCxcbiAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAnc3VkbyAvdG1wL2F3cy9pbnN0YWxsJyxcbiAgICAgICAgICAncm0gLXJmIC90bXAvYXdzJyxcbiAgICAgICAgICAnZWNobyBcIkFXUyBDTEkgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICdhd3MgLS12ZXJzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBDbG9uZVJlcG8gc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gICAqIFRoaXMgc3RlcCBpcyBpZGVudGljYWwgZm9yIGJvdGggVWJ1bnR1IGFuZCBBbWF6b24gTGludXhcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ2xvbmVSZXBvU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnQ2xvbmVSZXBvJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgaWYgW1sgLXogXCJ7eyBSZXBvVXJsIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIFJlcG9cIlxuZWxzZVxuICBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9XG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY2xvbmUge3sgUmVwb1VybCB9fSAke2hvbWVGb2xkZXJ9XG4gIGVjaG8gXCJSZXBvIHt7IFJlcG9VcmwgfX0gY2xvbmVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCJcbiAgbHMgLWxhICR7aG9tZUZvbGRlcn1cbiAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IHJlbW90ZSAtdlxuZmlgLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIERvd25sb2FkQXNzZXRzIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURvd25sb2FkQXNzZXRzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRBc3NldHMnLFxuICAgICAgaW5wdXRzOiB7XG4gICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgIGBpZiBbWyAteiBcInt7IEFzc2V0WmlwUzNQYXRoIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIGFzc2V0c1wiXG5lbHNlXG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgbWtkaXIgLXAgL3RtcFxuICBhd3MgczMgY3AgczM6Ly97eyBBc3NldFppcFMzUGF0aCB9fSAvdG1wL2Fzc2V0LnppcFxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9hc3NldC56aXBcbiAgdW56aXAgLW8gL3RtcC9hc3NldC56aXAgLWQgJHtob21lRm9sZGVyfVxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gJHtob21lRm9sZGVyfVxuICBpZiAgW1sgLWQgJHtob21lRm9sZGVyfS8uZ2l0IF1dXG4gIHRoZW5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gYWRkIC5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY29tbWl0IC1tICdjaG9yZTogd29ya3Nob3AgY29tbWl0J1xuICBlbHNlXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGluaXRcbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gYWRkIC5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY29tbWl0IC1tICdjaG9yZTogaW5pdGlhbCBjb21taXQnXG4gIGZpXG4gIGVjaG8gXCJBc3NldHMgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHtob21lRm9sZGVyfVwiXG4gIGxzIC1sYSAke2hvbWVGb2xkZXJ9XG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSBicmFuY2hcbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBEb3dubG9hZEZvbGRlcnMgc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gICAqIFRoaXMgc3RlcCBpcyBpZGVudGljYWwgZm9yIGJvdGggVWJ1bnR1IGFuZCBBbWF6b24gTGludXhcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRG93bmxvYWRGb2xkZXJzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRGb2xkZXJzJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgaWYgW1sgLXogXCJ7eyBGb2xkZXJaaXBTM1BhdGggfX1cIiBdXVxudGhlblxuICBlY2hvIFwiTm8gZm9sZGVyc1wiXG5lbHNlXG4gIHJtIC1yZiAvdG1wL2ZvbGRlclxuICBta2RpciAtcCAvdG1wL2ZvbGRlciAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9mb2xkZXJcbiAgYXdzIHMzIGNwIHMzOi8ve3sgRm9sZGVyWmlwUzNQYXRoIH19IC90bXAvYXNzZXQtZm9sZGVyLnppcFxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9hc3NldC1mb2xkZXIuemlwXG4gIHVuemlwIC1vIC90bXAvYXNzZXQtZm9sZGVyLnppcCAtZCAvdG1wL2ZvbGRlclxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9mb2xkZXJcbiAgbWtkaXIgLXAgJHtob21lRm9sZGVyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gJHtob21lRm9sZGVyfVxuICBjZCBcIiR7aG9tZUZvbGRlcn1cIiAmJiBjZCAuLlxuICBpZiBbWyAkKHB3ZCkgPT0gIFwiL1wiIF1dXG4gIHRoZW5cbiAgICB0YXJnZXRSb290Rm9sZGVyPVwiXCJcbiAgZWxzZVxuICAgIHRhcmdldFJvb3RGb2xkZXI9JChwd2QpXG4gICAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC5cbiAgZmlcbiAgZmluZCBcIi90bXAvZm9sZGVyXCIgLW1heGRlcHRoIDEgLW1pbmRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc291cmNlRm9sZGVyOyBkb1xuICAgIGZvbGRlcj1cIiQoYmFzZW5hbWUgJHNvdXJjZUZvbGRlcilcIlxuICAgIGVjaG8gXCJQcm9jZXNzaW5nIGZvbGRlcjogJGZvbGRlclwiXG4gICAgdGFyZ2V0Rm9sZGVyPSR0YXJnZXRSb290Rm9sZGVyLyRmb2xkZXJcbiAgICBpZiBbWyAkdGFyZ2V0Um9vdEZvbGRlciA9PSBcIlwiIF1dXG4gICAgdGhlblxuICAgICAgbXYgJHNvdXJjZUZvbGRlciAvXG4gICAgZWxzZVxuICAgICAgbXYgJHNvdXJjZUZvbGRlciAkdGFyZ2V0Um9vdEZvbGRlclxuICAgIGZpXG4gICAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR0YXJnZXRGb2xkZXJcbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR0YXJnZXRGb2xkZXIgaW5pdFxuICAgIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHRhcmdldEZvbGRlciBhZGQgLlxuICAgIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHRhcmdldEZvbGRlciBjb21taXQgLW0gXCJjaG9yZTogaW5pdGlhbCBjb21taXRcIlxuICAgIGVjaG8gXCJGb2xkZXIgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHRhcmdldEZvbGRlclwiXG4gICAgbHMgLWxhICR0YXJnZXRGb2xkZXJcbiAgZG9uZVxuICBybSAtcmYgL3RtcC9mb2xkZXJcbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQ0RLIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxDREtTdGVwKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbENESycsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnLFxuICAgICAgICAgICdlY2hvIFwiQVdTIENESyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgJ2NkayAtLXZlcnNpb24nLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIEluc3RhbGxRQ0xJIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxRQ0xJU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgbmFtZTogJ0luc3RhbGxRQ0xJJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAnY3VybCAtLXByb3RvIFxcJz1odHRwc1xcJyAtLXRsc3YxLjIgLXNTZiBcImh0dHBzOi8vZGVza3RvcC1yZWxlYXNlLnEudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vbGF0ZXN0L3EtJCh1bmFtZSAtbSktbGludXguemlwXCIgLW8gL3RtcC9xLnppcCcsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL3EuemlwYCxcbiAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL3EuemlwJyxcbiAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvcWAsXG4gICAgICAgICAgJ2NobW9kICt4IC90bXAvcS9pbnN0YWxsLnNoJyxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC90bXAvcS9pbnN0YWxsLnNoIC0tbm8tY29uZmlybWAsXG4gICAgICAgICAgJ3JtIC1yZiAvdG1wL3EnLFxuICAgICAgICAgICdxIC0tdmVyc2lvbicsXG4gICAgICAgICAgJ2VjaG8gXCJBbWF6b24gUSBDTEkgaW5zdGFsbGVkXCInLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIEluc3RhbGx1diBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbnN0YWxsdXZTdGVwKHZzQ29kZVVzZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbHV2JyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY3VybCAtZnNTTCBodHRwczovL2FzdHJhbC5zaC91di9pbnN0YWxsLnNoIC1vIC90bXAvdXZfaW5zdGFsbC5zaGAsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGJhc2ggL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICBgaWYgdXYgZ2VuZXJhdGUtc2hlbGwtY29tcGxldGlvbiBiYXNoICY+L2Rldi9udWxsOyB0aGVuXG4gIGVjaG8gJ2V2YWwgXCIkKHV2IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaClcIicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjXG5maWAsXG4gICAgICAgICAgYGlmIHV2eCBnZW5lcmF0ZS1zaGVsbC1jb21wbGV0aW9uIGJhc2ggJj4vZGV2L251bGw7IHRoZW5cbiAgZWNobyAnZXZhbCBcIiQodXZ4IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaClcIicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjXG5maWAsXG4gICAgICAgICAgJ2VjaG8gXCJ1diBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIHV2IC0tdmVyc2lvbmAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQ29uZmlndXJlQ29kZVNlcnZlciBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmVDb2RlU2VydmVyU3RlcChcbiAgICB2c0NvZGVVc2VyOiBzdHJpbmcsXG4gICAgaG9tZUZvbGRlcjogc3RyaW5nLFxuICAgIGRldlNlcnZlckJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZGV2U2VydmVyUG9ydDogbnVtYmVyLFxuICAgIHNlcnZlck5hbWVEaXJlY3RpdmU6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgIG5hbWU6ICdDb25maWd1cmVDb2RlU2VydmVyJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgZXhwb3J0IEhPTUU9L2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgLy8gcmVub3ZhdGU6IGRhdGFzb3VyY2U9Z2l0aHViLXJlbGVhc2VzIGRlcE5hbWU9Y29kZXIvY29kZS1zZXJ2ZXJcbiAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2NvZGUtc2VydmVyLmRldi9pbnN0YWxsLnNoIHwgc2ggLXMgLS0gLS12ZXJzaW9uIDQuMTE3LjAnLFxuICAgICAgICAgIGBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0gMj4mMWAsXG4gICAgICAgICAgYHRlZSAvZXRjL25naW54L2NvbmYuZC9jb2RlLXNlcnZlci5jb25mIDw8RU9GXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiA4MDtcbiAgICBsaXN0ZW4gWzo6XTo4MDtcbiAgICAjIHNlcnZlcl9uYW1lIFxcXFwkXFxcXHtDbG91ZEZyb250RGlzdHJpYnV0aW9uLkRvbWFpbk5hbWVcXFxcfTtcbiAgICAke3NlcnZlck5hbWVEaXJlY3RpdmV9XG4gICAgbG9jYXRpb24gLyB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC87XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbiAgICBsb2NhdGlvbiAvJHtkZXZTZXJ2ZXJCYXNlUGF0aH0ge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7ZGV2U2VydmVyUG9ydH0vJHtkZXZTZXJ2ZXJCYXNlUGF0aH07XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbn1cbkVPRmAsXG4gICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0vLmNvbmZpZy9jb2RlLXNlcnZlcmAsXG4gICAgICAgICAgYHRlZSAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5jb25maWcvY29kZS1zZXJ2ZXIvY29uZmlnLnlhbWwgPDxFT0ZcbmNlcnQ6IGZhbHNlXG5hdXRoOiBwYXNzd29yZFxuaGFzaGVkLXBhc3N3b3JkOiBcIiQoZWNobyAtbiB7eyBWU0NvZGVQYXNzd29yZCB9fSB8IGFyZ29uMiAkKG9wZW5zc2wgcmFuZCAtYmFzZTY0IDEyKSAtZSlcIlxuRU9GYCxcbiAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9gLFxuICAgICAgICAgIGB0b3VjaCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5odXNobG9naW5gLFxuICAgICAgICAgIGBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9YCxcbiAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiA8PEVPRlxue1xuICBcImV4dGVuc2lvbnMuYXV0b1VwZGF0ZVwiOiBmYWxzZSxcbiAgXCJleHRlbnNpb25zLmF1dG9DaGVja1VwZGF0ZXNcIjogZmFsc2UsXG4gIFwidGVsZW1ldHJ5LnRlbGVtZXRyeUxldmVsXCI6IFwib2ZmXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LnN0YXJ0dXBQcm9tcHRcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbmFibGVkXCI6IGZhbHNlLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5iYW5uZXJcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbXB0eVdpbmRvd1wiOiBmYWxzZSxcbiAgXCJhdXRvLXJ1bi1jb21tYW5kLnJ1bGVzXCI6IFtcbiAgICB7XG4gICAgICBcImNvbW1hbmRcIjogXCJ3b3JrYmVuY2guYWN0aW9uLnRlcm1pbmFsLm5ld1wiXG4gICAgfVxuICBdXG59XG5FT0ZgLFxuICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCBuZ2lueCcsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gQW1hem9uV2ViU2VydmljZXMuYXdzLXRvb2xraXQtdnNjb2RlIC0tZm9yY2VgLFxuICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIEFtYXpvbldlYlNlcnZpY2VzLmFtYXpvbi1xLXZzY29kZSAtLWZvcmNlYCxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBtcy12c2NvZGUubGl2ZS1zZXJ2ZXIgLS1mb3JjZWAsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gc3luZWRyYS5hdXRvLXJ1bi1jb21tYW5kIC0tZm9yY2VgLFxuICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgJ2VjaG8gXCJOZ2lueCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgJ25naW54IC10IDI+JjEnLFxuICAgICAgICAgICdzeXN0ZW1jdGwgc3RhdHVzIG5naW54JyxcbiAgICAgICAgICAnZWNobyBcIkNvZGVTZXJ2ZXIgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICdjb2RlLXNlcnZlciAtdicsXG4gICAgICAgICAgYHN5c3RlbWN0bCBzdGF0dXMgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRG93bmxvYWRCcmFuY2hlcyBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEb3dubG9hZEJyYW5jaGVzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRCcmFuY2hlcycsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgYGlmIFtbIC16IFwie3sgQnJhbmNoWmlwUzNQYXRoIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIGJyYW5jaGVzXCJcbmVsc2VcbiAgcm0gLXJmIC90bXAvYnJhbmNoXG4gIHJtIC1yZiAvdG1wL2dpdFxuICBta2RpciAtcCAvdG1wL2JyYW5jaCAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9icmFuY2hcbiAgbWtkaXIgLXAgL3RtcC9naXQgJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvZ2l0XG4gIGF3cyBzMyBjcCBzMzovL3t7IEJyYW5jaFppcFMzUGF0aCB9fSAvdG1wL2Fzc2V0LWJyYW5jaC56aXBcbiAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvYXNzZXQtYnJhbmNoLnppcFxuICB1bnppcCAtbyAvdG1wL2Fzc2V0LWJyYW5jaC56aXAgLWQgL3RtcC9icmFuY2hcbiAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvYnJhbmNoXG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGluaXRcbiAgbXYgJHtob21lRm9sZGVyfS8uZ2l0IC90bXAvZ2l0XG4gIHJtIC1yZiAke2hvbWVGb2xkZXJ9XG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgbXYgL3RtcC9naXQvLmdpdCAke2hvbWVGb2xkZXJ9XG4gIGZpbmQgL3RtcC9icmFuY2ggLW1heGRlcHRoIDEgLW1pbmRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc291cmNlRm9sZGVyOyBkb1xuICAgIGJyYW5jaD1cIiQoYmFzZW5hbWUgJHNvdXJjZUZvbGRlcilcIlxuICAgIGVjaG8gXCJQcm9jZXNzaW5nIGJyYW5jaDogJGJyYW5jaFwiXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGNoZWNrb3V0IC1iICRicmFuY2ggMj4mMVxuICAgIGNwIC1hICRzb3VyY2VGb2xkZXIvLiAke2hvbWVGb2xkZXJ9XG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGFkZCAuXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGNvbW1pdCAtbSBcImNob3JlOiBpbml0aWFsIGNvbW1pdCAkYnJhbmNoXCJcbiAgICBtdiAke2hvbWVGb2xkZXJ9Ly5naXQgL3RtcC9naXRcbiAgICBybSAtcmYgJHtob21lRm9sZGVyfVxuICAgIG1rZGlyICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgICBtdiAvdG1wL2dpdC8uZ2l0ICR7aG9tZUZvbGRlcn1cbiAgZG9uZVxuICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY2hlY2tvdXQgbWFpbiAyPiYxXG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSByZXN0b3JlIC5cbiAgcm0gLXJmIC90bXAvYnJhbmNoXG4gIHJtIC1yZiAvdG1wL2dpdFxuICBlY2hvIFwiQnJhbmNoZXMgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHtob21lRm9sZGVyfVwiXG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSBicmFuY2hcbiAgbHMgLWxhICR7aG9tZUZvbGRlcn1cbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBkZXZTZXJ2ZXJCYXNlUGF0aDogc3RyaW5nLFxuICAgIGRldlNlcnZlclBvcnQ6IG51bWJlcixcbiAgICB2c0NvZGVVc2VyOiBzdHJpbmcsXG4gICAgaG9tZUZvbGRlcjogc3RyaW5nLFxuICAgIGxpbnV4Rmxhdm9yOiBMaW51eEZsYXZvclR5cGUsXG4gICAgY3VzdG9tRG9tYWluTmFtZT86IHN0cmluZyxcbiAgICByZXBvVXJsPzogc3RyaW5nLFxuICAgIGFzc2V0WmlwUzNQYXRoPzogc3RyaW5nLFxuICAgIGJyYW5jaFppcFMzUGF0aD86IHN0cmluZyxcbiAgICBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmcsXG4gICAgY3VzdG9tSW5zdGFsbFN0ZXBzPzogQ3VzdG9tSW5zdGFsbFN0ZXBbXSxcbiAgKTogc3NtLkNmbkRvY3VtZW50IHtcbiAgICAvLyBHZW5lcmF0ZSBuZ2lueCBzZXJ2ZXJfbmFtZSBkaXJlY3RpdmUgYmFzZWQgb24gY3VzdG9tIGRvbWFpblxuICAgIGNvbnN0IHNlcnZlck5hbWVEaXJlY3RpdmUgPSBjdXN0b21Eb21haW5OYW1lXG4gICAgICA/IGBzZXJ2ZXJfbmFtZSAqLmNsb3VkZnJvbnQubmV0ICR7Y3VzdG9tRG9tYWluTmFtZX07YFxuICAgICAgOiAnc2VydmVyX25hbWUgKi5jbG91ZGZyb250Lm5ldDsnO1xuXG4gICAgbGV0IHNzbURvY3VtZW50OiBzc20uQ2ZuRG9jdW1lbnQ7XG4gICAgc3dpdGNoIChsaW51eEZsYXZvcikge1xuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzIyOlxuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzI0OlxuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzI1OlxuICAgICAgICAvLyBDcmVhdGUgYW4gU1NNIGRvY3VtZW50IHdpdGggbXVsdGlwbGUgYWN0aW9ucyB0byBpbnN0YWxsIHRoZSBzb2Z0d2FyZVxuICAgICAgICBzc21Eb2N1bWVudCA9IG5ldyBzc20uQ2ZuRG9jdW1lbnQoc2NvcGUsICdzc20tZG9jdW1lbnQtdWJ1bnR1Jywge1xuICAgICAgICAgIG5hbWU6IGB2c2NvZGUtc2VydmVyLXVidW50dS0ke1N0YWNrLm9mKHNjb3BlKS5zdGFja05hbWV9YCxcbiAgICAgICAgICBkb2N1bWVudFR5cGU6ICdDb21tYW5kJyxcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICBzY2hlbWFWZXJzaW9uOiAnMi4yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIFZTQ29kZSBjb2RlLXNlcnZlciBpbnN0YW5jZScsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIFZTQ29kZVBhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogU3RhY2sub2Yoc2NvcGUpLnN0YWNrSWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIE5vZGVWZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJzIyJyxcbiAgICAgICAgICAgICAgICBhbGxvd2VkVmFsdWVzOiBbJzI0JywgJzIyJywgJzIwJywgJzE4J10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFJlcG9Vcmw6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXBvVXJsID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBBc3NldFppcFMzUGF0aDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGFzc2V0WmlwUzNQYXRoID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBCcmFuY2haaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmFuY2haaXBTM1BhdGggPz8gJycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIEZvbGRlclppcFMzUGF0aDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZvbGRlclppcFMzUGF0aCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBhbGwgbWFpblN0ZXBzIHNjcmlwdHMgYXJlIGluIGluIC92YXIvbGliL2FtYXpvbi9zc20vPGluc3RhbmNlaWQ+L2RvY3VtZW50L29yY2hlc3RyYXRpb24vPHV1aWQ+LzxTdGVwTmFtZT4vX3NjcmlwdC5zaFxuICAgICAgICAgICAgbWFpblN0ZXBzOiBbXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbENsb3VkV2F0Y2hBZ2VudFN0ZXAoKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb25maWd1cmVDbG91ZFdhdGNoQWdlbnRTdGVwKCksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQXB0UGFja2FnZXNBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGFwdC11dGlscycsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIG5lZWRyZXN0YXJ0IHVuYXR0ZW5kZWQtdXBncmFkZXMnLFxuICAgICAgICAgICAgICAgICAgICBcInNlZCAtaSAncy8jJG5yY29uZntrZXJuZWxoaW50c30gPSAtMTsvJG5yY29uZntrZXJuZWxoaW50c30gPSAwOy8nIC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZlwiLFxuICAgICAgICAgICAgICAgICAgICBcInNlZCAtaSAncy8jJG5yY29uZnt2ZXJib3NpdHl9ID0gMjsvJG5yY29uZnt2ZXJib3NpdHl9ID0gMDsvJyAvZXRjL25lZWRyZXN0YXJ0L25lZWRyZXN0YXJ0LmNvbmZcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzZWQgLWkgXFxcInMvI1xcJG5yY29uZntyZXN0YXJ0fSA9ICdpJzsvXFwkbnJjb25me3Jlc3RhcnR9ID0gJ2EnOy9cXFwiIC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZlwiLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFwdCBoZWxwZXIgcGFja2FnZXMgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdjYXQgL2V0Yy9uZWVkcmVzdGFydC9uZWVkcmVzdGFydC5jb25mJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxCYXNlUGFja2FnZXNBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGN1cmwgZ251cGcgd2hvaXMgYXJnb24yIHVuemlwIG5naW54IG9wZW5zc2wgbG9jYWxlcyBsb2NhbGVzLWFsbCBhcHQtdHJhbnNwb3J0LWh0dHBzIGNhLWNlcnRpZmljYXRlcyBzb2Z0d2FyZS1wcm9wZXJ0aWVzLWNvbW1vbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBZGRVc2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICBgaWYgW1sgXCIke3ZzQ29kZVVzZXJ9XCIgPT0gXCJ1YnVudHVcIiBdXVxudGhlblxuICBlY2hvICdVc2luZyBleGlzdGluZyB1c2VyOiAke3ZzQ29kZVVzZXJ9J1xuZWxzZVxuICBlY2hvICdBZGRpbmcgdXNlcjogJHt2c0NvZGVVc2VyfSdcbiAgYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgJHt2c0NvZGVVc2VyfVxuICBlY2hvIFwiJHt2c0NvZGVVc2VyfTp7eyBWU0NvZGVQYXNzd29yZCB9fVwiIHwgY2hwYXNzd2RcbiAgdXNlcm1vZCAtYUcgc3VkbyAke3ZzQ29kZVVzZXJ9XG5maWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2V0Yy9zdWRvZXJzLmQvOTEtdnNjb2RlLXVzZXIgPDxFT0ZcbiR7dnNDb2RlVXNlcn0gQUxMPShBTEwpIE5PUEFTU1dEOkFMTFxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvYmluICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJVc2VyIGFkZGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICBgZ2V0ZW50IHBhc3N3ZCAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVVcGRhdGVQcm9maWxlU3RlcCh2c0NvZGVVc2VyLCBTdGFjay5vZihzY29wZSkucmVnaW9uLCBTdGFjay5vZihzY29wZSkuYWNjb3VudCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbEFXU0NMSVN0ZXAodnNDb2RlVXNlciksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR2l0QXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICAnYWRkLWFwdC1yZXBvc2l0b3J5IHBwYTpnaXQtY29yZS9wcGEnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBnaXQnLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcInBhcnRpY2lwYW50QGV4YW1wbGUuY29tXCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiV29ya3Nob3AgUGFydGljaXBhbnRcImAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCBpbml0LmRlZmF1bHRCcmFuY2ggXCJtYWluXCJgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdpdCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnaXQgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDbG9uZVJlcG9TdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvd25sb2FkQXNzZXRzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEZvbGRlcnNTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvd25sb2FkQnJhbmNoZXNTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbmZpZ3VyZUNvZGVTZXJ2ZXJTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIsIGRldlNlcnZlckJhc2VQYXRoLCBkZXZTZXJ2ZXJQb3J0LCBzZXJ2ZXJOYW1lRGlyZWN0aXZlKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxOb2RlQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9kZWIubm9kZXNvdXJjZS5jb20vZ3Bna2V5L25vZGVzb3VyY2UtcmVwby5ncGcua2V5IHwgZ3BnIC0tZGVhcm1vciAtbyAvdXNyL3NoYXJlL2tleXJpbmdzL25vZGVzb3VyY2UuZ3BnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJkZWIgW2FyY2g9JChkcGtnIC0tcHJpbnQtYXJjaGl0ZWN0dXJlKSBzaWduZWQtYnk9L3Vzci9zaGFyZS9rZXlyaW5ncy9ub2Rlc291cmNlLmdwZ10gaHR0cHM6Ly9kZWIubm9kZXNvdXJjZS5jb20vbm9kZV97eyBOb2RlVmVyc2lvbiB9fS54IG5vZGlzdHJvIG1haW5cIiA+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL25vZGVzb3VyY2UubGlzdCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIG5vZGVqcycsXG4gICAgICAgICAgICAgICAgICAgICducG0gaW5zdGFsbCAtZyBucG1AbGF0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJOb2RlIGFuZCBucG0gaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnbm9kZSAtdicsXG4gICAgICAgICAgICAgICAgICAgICducG0gLXYnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGxDREtTdGVwKCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbFFDTElTdGVwKHZzQ29kZVVzZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGx1dlN0ZXAodnNDb2RlVXNlciksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsUHl0aG9uQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gVWJ1bnR1IDIyIGRlZmF1bHQgaXMgUHl0aG9uIDMuMTBcbiAgICAgICAgICAgICAgICAgICAgLy8gVWJ1bnR1IDI0IGRlZmF1bHQgaXMgUHl0aG9uIDMuMTJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW5zdGFsbGVkIFB5dGhvbiB2ZXJzaW9uIHdpbGwgbWFwIHRvIFB5dGhvbjNcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBweXRob24zLXBpcCBweXRob24zLXZlbnYgcHl0aG9uMy1ib3RvMyBweXRob24zLXB5dGVzdCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBweXRlc3Q9cHl0ZXN0LTMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgbXVsdGlwYXRoZC5zZXJ2aWNlIHBhY2thZ2VraXQuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCB1bmF0dGVuZGVkLXVwZ3JhZGVzLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHJlc3RhcnQgbmV0d29ya2QtZGlzcGF0Y2hlci5zZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gbXMtcHl0aG9uLnB5dGhvbiAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYGlmIFsgLWYgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uIF07IHRoZW5cbiAgc2VkIC1pIFwiMmlcXFxcXFxcXCAgXFxcXFwicHl0aG9uLnRlc3RpbmcucHl0ZXN0RW5hYmxlZFxcXFxcIjogdHJ1ZSxcIiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9zaGFyZS9jb2RlLXNlcnZlci9Vc2VyL3NldHRpbmdzLmpzb25cbmVsc2VcbiAgZWNobyAne1xuICAgIFwicHl0aG9uLnRlc3RpbmcucHl0ZXN0RW5hYmxlZFwiOiB0cnVlXG4gIH0nID4gL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uXG5maWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiUHl0aG9uIGFuZCBQaXAgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAncHl0aG9uMyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAncGlwMyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEphdmFBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vYXB0LmNvcnJldHRvLmF3cy9jb3JyZXR0by5rZXkgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvY29ycmV0dG8ta2V5cmluZy5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3MvY29ycmV0dG8ta2V5cmluZy5ncGddIGh0dHBzOi8vYXB0LmNvcnJldHRvLmF3cyBzdGFibGUgbWFpblwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvY29ycmV0dG8ubGlzdCcsXG4gICAgICAgICAgICAgICAgICAgICdERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCB1cGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICAnREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBqYXZhLTIxLWFtYXpvbi1jb3JyZXR0by1qZGsgamF2YS0xNy1hbWF6b24tY29ycmV0dG8tamRrIGphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvLWpkayBtYXZlbicsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV84X0hPTUU9JCh1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tbGlzdCBqYXZhIHwgZ3JlcCBcImphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvXCIgfCBoZWFkIC0xKScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzhfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xLjguMC1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xNy1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xNy1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IFBBVEg9JFBBVEg6JEpBVkFfSE9NRS9iaW46L3Vzci9zaGFyZS9tYXZlbi9iaW4nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIHZzY2phdmEudnNjb2RlLWphdmEtcGFjayAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJKYXZhIGFuZCBNYXZlbiBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdqYXZhIC12ZXJzaW9uIDI+JjEnLFxuICAgICAgICAgICAgICAgICAgICAnbXZuIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tbGlzdCBqYXZhJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxEb3RuZXRBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGRvdG5ldC1zZGstOC4wJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvdG5ldCB0b29sIGluc3RhbGwgLWcgTWljcm9zb2Z0LldlYi5MaWJyYXJ5TWFuYWdlci5DbGknLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnUEFUSD0kUEFUSDovaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5kb3RuZXQvdG9vbHMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG90bmV0IGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvdG5ldCAtLWxpc3Qtc2RrcycsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsRG9ja2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9ncGcgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGddIGh0dHBzOi8vZG93bmxvYWQuZG9ja2VyLmNvbS9saW51eC91YnVudHUgJChsc2JfcmVsZWFzZSAtLWNvZGVuYW1lIC0tc2hvcnQpIHN0YWJsZVwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZG9ja2VyLmxpc3QnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBkb2NrZXItY2UgZG9ja2VyLWNlLWNsaSBjb250YWluZXJkLmlvJyxcbiAgICAgICAgICAgICAgICAgICAgYHVzZXJtb2QgLWFHIGRvY2tlciAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0uc2VydmljZWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvY2tlciBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb2NrZXIgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEdvbGFuZ0FwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGdvbGFuZycsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vZ28vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdvbGFuZyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnbyB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgICAgLi4uKGN1c3RvbUluc3RhbGxTdGVwcz8ubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RlcC5uYW1lLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogc3RlcC5jb21tYW5kcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSkgPz8gW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMzpcbiAgICAgICAgc3NtRG9jdW1lbnQgPSBuZXcgc3NtLkNmbkRvY3VtZW50KHNjb3BlLCAnc3NtLWRvY3VtZW50LWFsMjAyMycsIHtcbiAgICAgICAgICBuYW1lOiBgdnNjb2RlLXNlcnZlci1hbDIwMjMtJHtTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lfWAsXG4gICAgICAgICAgZG9jdW1lbnRUeXBlOiAnQ29tbWFuZCcsXG4gICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgc2NoZW1hVmVyc2lvbjogJzIuMicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBWU0NvZGUgY29kZS1zZXJ2ZXIgaW5zdGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBWU0NvZGVQYXNzd29yZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFN0YWNrLm9mKHNjb3BlKS5zdGFja0lkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBOb2RlVmVyc2lvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcyMicsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWycyNCcsICcyMicsICcyMCcsICcxOCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBSZXBvVXJsOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmVwb1VybCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgQXNzZXRaaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhc3NldFppcFMzUGF0aCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgQnJhbmNoWmlwUzNQYXRoOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogYnJhbmNoWmlwUzNQYXRoID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBGb2xkZXJaaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBmb2xkZXJaaXBTM1BhdGggPz8gJycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gYWxsIG1haW5TdGVwcyBzY3JpcHRzIGFyZSBpbiBpbiAvdmFyL2xpYi9hbWF6b24vc3NtLzxpbnN0YW5jZWlkPi9kb2N1bWVudC9vcmNoZXN0cmF0aW9uLzx1dWlkPi88U3RlcE5hbWU+L19zY3JpcHQuc2hcbiAgICAgICAgICAgIG1haW5TdGVwczogW1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGxDbG91ZFdhdGNoQWdlbnRTdGVwKCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ29uZmlndXJlQ2xvdWRXYXRjaEFnZW50U3RlcCgpLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEJhc2VQYWNrYWdlc0RuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSAtLWFsbG93ZXJhc2luZyB3aG9pcyBhcmdvbjIgdW56aXAgbmdpbnggY3VybCBnbnVwZyBvcGVuc3NsJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0FkZFVzZXJEbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICBgaWYgW1sgXCIke3ZzQ29kZVVzZXJ9XCIgPT0gXCJlYzItdXNlclwiIF1dXG50aGVuXG4gIGVjaG8gJ1VzaW5nIGV4aXN0aW5nIHVzZXI6ICR7dnNDb2RlVXNlcn0nXG5lbHNlXG4gIGVjaG8gJ0FkZGluZyB1c2VyOiAke3ZzQ29kZVVzZXJ9J1xuICBhZGR1c2VyIC1jICcnICR7dnNDb2RlVXNlcn1cbiAgcGFzc3dkIC1sICR7dnNDb2RlVXNlcn1cbiAgZWNobyBcIiR7dnNDb2RlVXNlcn06e3sgVlNDb2RlUGFzc3dvcmQgfX1cIiB8IGNocGFzc3dkXG4gIHVzZXJtb2QgLWFHIHdoZWVsICR7dnNDb2RlVXNlcn1cbmZpYCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvZXRjL3N1ZG9lcnMuZC85MS12c2NvZGUtdXNlciA8PEVPRlxuJHt2c0NvZGVVc2VyfSBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMXG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9iaW4gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlVzZXIgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBnZXRlbnQgcGFzc3dkICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVVwZGF0ZVByb2ZpbGVTdGVwKHZzQ29kZVVzZXIsIFN0YWNrLm9mKHNjb3BlKS5yZWdpb24sIFN0YWNrLm9mKHNjb3BlKS5hY2NvdW50KSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVJbnN0YWxsQVdTQ0xJU3RlcCh2c0NvZGVVc2VyKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxHaXREbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgZ2l0JyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCJwYXJ0aWNpcGFudEBleGFtcGxlLmNvbVwiYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIldvcmtzaG9wIFBhcnRpY2lwYW50XCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgaW5pdC5kZWZhdWx0QnJhbmNoIFwibWFpblwiYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJHaXQgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnZ2l0IC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ2xvbmVSZXBvU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEFzc2V0c1N0ZXAodnNDb2RlVXNlciwgaG9tZUZvbGRlciksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlRG93bmxvYWRGb2xkZXJzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEJyYW5jaGVzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb25maWd1cmVDb2RlU2VydmVyU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyLCBkZXZTZXJ2ZXJCYXNlUGF0aCwgZGV2U2VydmVyUG9ydCwgc2VydmVyTmFtZURpcmVjdGl2ZSksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsTm9kZURuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBub2RlanMgbnBtJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIG5wbUBsYXRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIk5vZGUgYW5kIG5wbSBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdub2RlIC12JyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSAtdicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQ0RLJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFXUyBDREsgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY2RrIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsUUNMSScsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdjdXJsIC0tcHJvdG8gXFwnPWh0dHBzXFwnIC0tdGxzdjEuMiAtc1NmIFwiaHR0cHM6Ly9kZXNrdG9wLXJlbGVhc2UucS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9sYXRlc3QvcS0kKHVuYW1lIC1tKS1saW51eC56aXBcIiAtbyAvdG1wL3EuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL3EuemlwYCxcbiAgICAgICAgICAgICAgICAgICAgJ3VuemlwIC1xIC1kIC90bXAgL3RtcC9xLnppcCcsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9xYCxcbiAgICAgICAgICAgICAgICAgICAgJ2NobW9kICt4IC90bXAvcS9pbnN0YWxsLnNoJyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAvdG1wL3EvaW5zdGFsbC5zaCAtLW5vLWNvbmZpcm1gLFxuICAgICAgICAgICAgICAgICAgICAncm0gLXJmIC90bXAvcScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQW1hem9uIFEgQ0xJIGluc3RhbGxlZFwiJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGx1dicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjdXJsIC1mc1NMIGh0dHBzOi8vYXN0cmFsLnNoL3V2L2luc3RhbGwuc2ggLW8gL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGJhc2ggL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICAgICAgICAgICAgYGlmIHV2IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaCAmPi9kZXYvbnVsbDsgdGhlblxuICBlY2hvICdldmFsIFwiJCh1diBnZW5lcmF0ZS1zaGVsbC1jb21wbGV0aW9uIGJhc2gpXCInID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY1xuZmlgLFxuICAgICAgICAgICAgICAgICAgICBgaWYgdXZ4IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaCAmPi9kZXYvbnVsbDsgdGhlblxuICBlY2hvICdldmFsIFwiJCh1dnggZ2VuZXJhdGUtc2hlbGwtY29tcGxldGlvbiBiYXNoKVwiJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNcbmZpYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJ1diBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiB1diAtLXZlcnNpb25gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbFB5dGhvbkRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIEFMMjAyMyBjdXJyZW50bHkgc2hpcHMgd2l0aCBQeXRob24gMy45IHByZWluc3RhbGxlZCwgYnV0IDMuMTEgaXMgYXZhaWxhYmxlIGluIHRoZSByZXBvc2l0b3J5XG4gICAgICAgICAgICAgICAgICAgIC8vIEluc3RhbGwgMy4xMSBhbG9uZ3NpZGUgMy45IGFuZCBzZXR1cCBzb21lIGFsaWFzIHNvIHRoYXQgMy4xMSBpcyBsb2FkZWQgd2hlbiBwYXJ0aWNpcGFudCBydW5zIFB5dGhvbjNcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgUHl0aG9uIDMuMTIgYmVjb21lIGF2YWlsYWJsZSwgdXBkYXRlIGJlbG93XG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBweXRob24zLjExIHB5dGhvbjMuMTEtcGlwIHB5dGhvbjMtdmlydHVhbGVudiBweXRob24zLXB5dGVzdCBweXRob24zLWJvdG8zJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHB5dGVzdD1weXRlc3QtMycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHB5dGhvbjM9cHl0aG9uMy4xMScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHBpcDM9cGlwMy4xMScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgXCJlY2hvICdhbGlhcz1weXRob24zPXB5dGhvbjMuMTEnID4+IH4vLmJhc2hyY1wiLFxuICAgICAgICAgICAgICAgICAgICBcImVjaG8gJ2FsaWFzIHBpcDM9cGlwMy4xMScgPj4gfi8uYmFzaHJjXCIsXG4gICAgICAgICAgICAgICAgICAgICdweXRob24zLjExIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgMj4mMScsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIG1zLXB5dGhvbi5weXRob24gLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBpZiBbIC1mIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiBdOyB0aGVuXG4gIHNlZCAtaSBcIjJpXFxcXFxcXFwgIFxcXFxcInB5dGhvbi50ZXN0aW5nLnB5dGVzdEVuYWJsZWRcXFxcXCI6IHRydWUsXCIgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uXG5lbHNlXG4gIGVjaG8gJ3tcbiAgICBcInB5dGhvbi50ZXN0aW5nLnB5dGVzdEVuYWJsZWRcIjogdHJ1ZVxuICB9JyA+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvblxuZmlgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlB5dGhvbiBhbmQgUGlwIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLW0gcGlwIC0tdmVyc2lvbiAyPiYxJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxKYXZhRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IGphdmEtMjEtYW1hem9uLWNvcnJldHRvIGphdmEtMTctYW1hem9uLWNvcnJldHRvIGphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvIG1hdmVuJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzhfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0xLjguMC1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV84X1BBVEg9L3Vzci9saWIvanZtL2phdmEtMS44LjAtYW1hem9uLWNvcnJldHRvJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfUEFUSD0vdXNyL2xpYi9qdm0vamF2YS0xNy1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV8xN19IT01FPS91c3IvbGliL2p2bS9qYXZhLTE3LWFtYXpvbi1jb3JyZXR0bycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzIxX1BBVEg9L3Vzci9saWIvanZtL2phdmEtMjEtYW1hem9uLWNvcnJldHRvJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0yMS1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV9IT01FPS91c3IvbGliL2p2bS9qYXZhLTIxLWFtYXpvbi1jb3JyZXR0bycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBQQVRIPSRQQVRIOiRKQVZBX0hPTUUvYmluOi91c3Ivc2hhcmUvbWF2ZW4vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiB2c2NqYXZhLnZzY29kZS1qYXZhLXBhY2sgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiSmF2YSBhbmQgTWF2ZW4gaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnamF2YSAtdmVyc2lvbiAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgJ212biAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbERvdG5ldERuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBkb3RuZXQtc2RrLTguMCcsXG4gICAgICAgICAgICAgICAgICAgICdkb3RuZXQgdG9vbCBpbnN0YWxsIC1nIE1pY3Jvc29mdC5XZWIuTGlicmFyeU1hbmFnZXIuQ2xpJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ1BBVEg9JFBBVEg6L2hvbWUvJHt2c0NvZGVVc2VyfS8uZG90bmV0L3Rvb2xzJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvdG5ldCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb3RuZXQgLS1saXN0LXNka3MnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbERvY2tlckRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBkb2NrZXInLFxuICAgICAgICAgICAgICAgICAgICBgdXNlcm1vZCAtYUcgZG9ja2VyICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHJlc3RhcnQgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfS5zZXJ2aWNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG9ja2VyIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvY2tlciAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXR1cyBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR29sYW5nRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IGdvbGFuZycsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vZ28vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdvbGFuZyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnbyB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgICAgLi4uKGN1c3RvbUluc3RhbGxTdGVwcz8ubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RlcC5uYW1lLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogc3RlcC5jb21tYW5kcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSkgPz8gW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIExpbnV4IGZsYXZvcjogJHtsaW51eEZsYXZvcn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3NtRG9jdW1lbnQ7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlSW5zdGFsbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZWMyIGluc3RhbmNlIGlkIHRvIGluc3RhbGwgdGhlIHNzbSBkb2N1bWVudCBvblxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3VzdG9tIHNzbSBkb2N1bWVudCB0byBpbnN0YWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjbG91ZHdhdGNoIGxvZyBncm91cCBmb3IgdGhlIGluc3RhbGwgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xufVxuXG5jbGFzcyBDdXN0b21SZXNvdXJjZUluc3RhbGxlciBleHRlbmRzIEluc3RhbGxlciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IEN1c3RvbVJlc291cmNlSW5zdGFsbGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBvbkV2ZW50OiBGdW5jdGlvbiA9IG5ldyBJbnN0YWxsZXJGdW5jdGlvbihcbiAgICAgIHNjb3BlLFxuICAgICAgJ0luc3RhbGxlck9uRXZlbnRIYW5kbGVyJyxcbiAgICAgIHtcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksIC8vIDE1IG1pbnV0ZXMgdG8gYWxsb3cgZm9yIFZTIENvZGUgU2VydmVyIGluc3RhbGxhdGlvblxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsIC8vIFRPRE8gY29uZmlndXJhYmxlXG4gICAgICB9LFxuICAgICk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW29uRXZlbnRdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIGV2ZW50IGhhbmRsZXIgd2UgZG8gbm90IG5lZWQgdG8gcmVzdHJpY3QgbWFuYWdlZCBwb2xpY2llcycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgbGFtYmRhIHRoZSBsYXRlc3QgcnVudGltZSBpcyBub3QgbmVlZGVkJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBkb2N1bWVudEFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdzc20nLFxuICAgICAgICByZXNvdXJjZTogJ2RvY3VtZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBvcHRpb25zLmRvY3VtZW50TmFtZSxcbiAgICAgIH0sXG4gICAgICBTdGFjay5vZihzY29wZSksXG4gICAgKTtcblxuICAgIGNvbnN0IGN3TWFuYWdlQWdlbnRBcm4gPSBBcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiAnc3NtJyxcbiAgICAgICAgcmVzb3VyY2U6ICdkb2N1bWVudCcsXG4gICAgICAgIHJlc291cmNlTmFtZTogJ0FtYXpvbkNsb3VkV2F0Y2gtTWFuYWdlQWdlbnQnLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgY29uc3QgdGFyZ2V0RWMySW5zdGFuY2VBcm4gPSBBcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbnN0YW5jZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogb3B0aW9ucy5pbnN0YW5jZUlkLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgLy8gU2VuZENvbW1hbmQgc3VwcG9ydHMgcmVzb3VyY2UtbGV2ZWwgcGVybWlzc2lvbnNcbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3NzbTpTZW5kQ29tbWFuZCddLFxuICAgICAgICByZXNvdXJjZXM6IFtkb2N1bWVudEFybiwgY3dNYW5hZ2VBZ2VudEFybiwgdGFyZ2V0RWMySW5zdGFuY2VBcm5dLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIEdldENvbW1hbmRJbnZvY2F0aW9uIGFuZCBMaXN0Q29tbWFuZEludm9jYXRpb25zIHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzXG4gICAgLy8gVGhleSBkb24ndCBzdXBwb3J0IHJlc291cmNlLWxldmVsIHBlcm1pc3Npb25zXG4gICAgb25FdmVudC5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzc206R2V0Q29tbWFuZEludm9jYXRpb24nLCAnc3NtOkxpc3RDb21tYW5kSW52b2NhdGlvbnMnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBTdXBwcmVzcyBjZGstbmFnIHdhcm5pbmcgZm9yIHdpbGRjYXJkIHBlcm1pc3Npb25zIG9uIEdldENvbW1hbmRJbnZvY2F0aW9uXG4gICAgLy8gVGhlc2UgU1NNIGFjdGlvbnMgZG9uJ3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBwZXJtaXNzaW9ucyBwZXIgQVdTIGRvY3VtZW50YXRpb25cbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBvbkV2ZW50LFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ3NzbTpHZXRDb21tYW5kSW52b2NhdGlvbiBhbmQgc3NtOkxpc3RDb21tYW5kSW52b2NhdGlvbnMgZG8gbm90IHN1cHBvcnQgcmVzb3VyY2UtbGV2ZWwgcGVybWlzc2lvbnMgYW5kIHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzJyxcbiAgICAgICAgICBhcHBsaWVzVG86IFsnUmVzb3VyY2U6OionXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcihzY29wZSwgJ0luc3RhbGxlclByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnQsXG4gICAgfSk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW3Byb3ZpZGVyXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLFxuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdGb3IgdGhpcyBwcm92aWRlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZShzY29wZSwgJ1NTTUluc3RhbGxlckN1c3RvbVJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFNlcnZpY2VUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KS50b1NlY29uZHMoKSArIDUsIC8vIExhbWJkYSB0aW1lb3V0ICsgNSBzZWNvbmRzIGJ1ZmZlclxuICAgICAgICBJbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgIERvY3VtZW50TmFtZTogb3B0aW9ucy5kb2N1bWVudE5hbWUsXG4gICAgICAgIENsb3VkV2F0Y2hMb2dHcm91cE5hbWU6IG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgVlNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKCkge31cbn1cbiJdfQ==
|
|
1080
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc3RhbGxlci9pbnN0YWxsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXNEO0FBRXRELDJDQUEyQztBQUMzQywyQ0FBd0U7QUFDeEUsbUVBQXdEO0FBQ3hELHFDQUEwQztBQUUxQyw2REFBeUQ7QUFDekQsb0RBQXNFO0FBc0h0RSxNQUFzQixTQUFTO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBeUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLFNBQVM7WUFDMUIsS0FBSyxDQUFDLEtBQWdCO2dCQUMzQixJQUFJLFlBQVksQ0FBQztnQkFDakIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO2dCQUM3RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztnQkFDcEQsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ3ZELFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNyQyxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZ0JBQWdCLEVBQ3hCLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLGNBQWMsRUFDdEIsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLGtCQUFrQixDQUMzQixDQUFDO29CQUNGLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSyxDQUFDO2dCQUNoQyxDQUFD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RCxJQUFJLENBQ0wsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7WUFDeEQsY0FBYyxFQUFFLE9BQU87U0FDeEIsQ0FBQyxDQUFDO1FBQ0gseUJBQWUsQ0FBQyx1QkFBdUIsQ0FDckMsQ0FBQyxRQUFRLENBQUMsRUFDVjtZQUNFO2dCQUNFLEVBQUUsRUFBRSxtQkFBbUI7Z0JBQ3ZCLE1BQU0sRUFDSiwrREFBK0Q7YUFDbEU7WUFDRDtnQkFDRSxFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsc0NBQXNDO2FBQy9DO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGlCQUFpQjtnQkFDckIsTUFBTSxFQUFFLG9EQUFvRDthQUM3RDtTQUNGLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixJQUFJLHFCQUFjLENBQUMsS0FBSyxFQUFFLDRCQUE0QixFQUFFO1lBQ3RELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsY0FBYyxFQUFFLGVBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLG9DQUFvQztnQkFDMUYsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0I7Z0JBQ3RELGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYzthQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLEtBQUksQ0FBQztDQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IEFybiwgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IE5hZ1N1cHByZXNzaW9ucyB9IGZyb20gJ2Nkay1uYWcnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJbnN0YWxsZXJGdW5jdGlvbiB9IGZyb20gJy4vaW5zdGFsbGVyLWZ1bmN0aW9uJztcbmltcG9ydCB7IExpbnV4Rmxhdm9yVHlwZSwgQ3VzdG9tSW5zdGFsbFN0ZXAgfSBmcm9tICcuLi92c2NvZGUtc2VydmVyJztcblxuaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnNCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBlYzIgaW5zdGFuY2UgaWQgdG8gaW5zdGFsbCB0aGUgc3NtIGRvY3VtZW50IG9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjdXN0b20gc3NtIGRvY3VtZW50IHRvIGluc3RhbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBzc20gZG9jdW1lbnQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xvdWR3YXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSBpbnN0YWxsIGxvZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9XG4gICAqL1xuICByZWFkb25seSBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSByZXN0IHBhdGggdnMgY29kZSBzZXJ2ZXIgd2lsbCBydW5cbiAgICpcbiAgICogQGRlZmF1bHQgYXBwXG4gICAqL1xuICByZWFkb25seSBkZXZTZXJ2ZXJCYXNlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgdnNjb2RlciBzZXJ2ZXIgd2lsbCBiZSBzZXJ2ZWQgaW4gdGhlIGluc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IDgwODFcbiAgICovXG4gIHJlYWRvbmx5IGRldlNlcnZlclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gZG9tYWluIG5hbWUgZm9yIHRoZSBWUyBDb2RlIHNlcnZlclxuICAgKiBVc2VkIHRvIGNvbmZpZ3VyZSBuZ2lueCBzZXJ2ZXJfbmFtZSBkaXJlY3RpdmVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VzICouY2xvdWRmcm9udC5uZXQgb25seVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIExpbnV4IGZsYXZvciB0eXBlIGZvciB0aGUgaW5zdGFuY2VcbiAgICovXG4gIHJlYWRvbmx5IGxpbnV4Rmxhdm9yVHlwZTogTGludXhGbGF2b3JUeXBlO1xuXG4gIC8qKlxuICAgKiBSZW1vdGUgZ2l0IHJlcG9zaXRvcnkgVVJMIHRvIGNsb25lIGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIHJlcG9zaXRvcnkgd2lsbCBiZSBjbG9uZWQgaW50byB0aGUgdXNlcidzIGhvbWUgZm9sZGVyIGR1cmluZyBpbnN0YW5jZSBzZXR1cC5cbiAgICogVXNlZnVsIGZvciBwcmUtcG9wdWxhdGluZyB3b3Jrc2hvcCBlbnZpcm9ubWVudHMgd2l0aCBzdGFydGVyIGNvZGUuXG4gICAqXG4gICAqIEBleGFtcGxlICdodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvbXktd29ya3Nob3AtcmVwby5naXQnXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVwbyBjbG9uZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9Vcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGFzc2V0cyB0byBleHRyYWN0IGludG8gdGhlIGhvbWUgZm9sZGVyLlxuICAgKlxuICAgKiBUaGUgemlwIGNvbnRlbnRzIHdpbGwgYmUgZXh0cmFjdGVkIHRvIHRoZSB1c2VyJ3MgaG9tZSBmb2xkZXIgYW5kIGNvbW1pdHRlZCB0byBnaXQuXG4gICAqIFVzZSB0aGlzIHRvIHByb3ZpZGUgd29ya3Nob3AgbWF0ZXJpYWxzLCBzYW1wbGUgZGF0YSwgb3IgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9hc3NldHMvd29ya3Nob3AtbWF0ZXJpYWxzLnppcCdcbiAgICogQGRlZmF1bHQgLSBubyBhc3NldHMgZG93bmxvYWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIHBhdGggdG8gYSB6aXAgZmlsZSBjb250YWluaW5nIGdpdCBicmFuY2hlcyB0byBjcmVhdGUgaW4gdGhlIGhvbWUgZm9sZGVyIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEVhY2ggdG9wLWxldmVsIGZvbGRlciBpbiB0aGUgemlwIGJlY29tZXMgYSBzZXBhcmF0ZSBnaXQgYnJhbmNoIHdpdGggdGhhdCBmb2xkZXIncyBjb250ZW50cy5cbiAgICogSWRlYWwgZm9yIGNyZWF0aW5nIHN0ZXAtYnktc3RlcCB3b3Jrc2hvcCBicmFuY2hlcyAoZS5nLiwgc3RlcC0xLCBzdGVwLTIsIHNvbHV0aW9uKS5cbiAgICpcbiAgICogQGV4YW1wbGUgJ215LXdvcmtzaG9wLWJ1Y2tldC9icmFuY2hlcy9sYWItYnJhbmNoZXMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBzdGVwLTEvLCBzdGVwLTIvLCBzb2x1dGlvbi8pXG4gICAqIEBkZWZhdWx0IC0gbm8gYnJhbmNoZXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoWmlwUzNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBwYXRoIHRvIGEgemlwIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBmb2xkZXJzIHRvIGNyZWF0ZSBhcyBzZXBhcmF0ZSBnaXQgcmVwb3NpdG9yaWVzLlxuICAgKlxuICAgKiBFYWNoIHRvcC1sZXZlbCBmb2xkZXIgaW4gdGhlIHppcCBiZWNvbWVzIGEgc2VwYXJhdGUgc3ViZm9sZGVyIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LFxuICAgKiBpbml0aWFsaXplZCBhcyBpdHMgb3duIGdpdCByZXBvc2l0b3J5LiBVc2VmdWwgZm9yIG11bHRpLXByb2plY3Qgd29ya3Nob3BzLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnbXktd29ya3Nob3AtYnVja2V0L2ZvbGRlcnMvd29ya3Nob3AtcHJvamVjdHMuemlwJyAoY29udGFpbmluZyBmb2xkZXJzOiBmcm9udGVuZC8sIGJhY2tlbmQvLCBpbmZyYXN0cnVjdHVyZS8pXG4gICAqIEBkZWZhdWx0IC0gbm8gZm9sZGVycyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgdG8gZXh0ZW5kIHRoZSBTU00gZG9jdW1lbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjdXN0b20gaW5zdGFsbGF0aW9uIHN0ZXBzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21JbnN0YWxsU3RlcHM/OiBDdXN0b21JbnN0YWxsU3RlcFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxlck9wdGlvbnMgZXh0ZW5kcyBJbnN0YWxsZXJPcHRpb25zQmFzZSB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5zdGFsbGVyIHtcbiAgcHVibGljIHN0YXRpYyB1YnVudHUob3B0aW9uczogSW5zdGFsbGVyT3B0aW9ucyk6IEluc3RhbGxlciB7XG4gICAgcmV0dXJuIG5ldyAoY2xhc3MgZXh0ZW5kcyBJbnN0YWxsZXIge1xuICAgICAgcHVibGljIF9iaW5kKHNjb3BlOiBDb25zdHJ1Y3QpOiBJbnN0YWxsZXIge1xuICAgICAgICBsZXQgZG9jdW1lbnROYW1lO1xuICAgICAgICBjb25zdCBkZXZTZXJ2ZXJCYXNlUGF0aCA9IG9wdGlvbnMuZGV2U2VydmVyQmFzZVBhdGggPz8gJ2FwcCc7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlclBvcnQgPSBvcHRpb25zLmRldlNlcnZlclBvcnQgPz8gODA4MTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZG9jdW1lbnROYW1lICYmIG9wdGlvbnMuZG9jdW1lbnROYW1lICE9ICcnKSB7XG4gICAgICAgICAgZG9jdW1lbnROYW1lID0gb3B0aW9ucy5kb2N1bWVudE5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLmNyZWF0ZVNTTURvY3VtZW50KFxuICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICBkZXZTZXJ2ZXJCYXNlUGF0aCxcbiAgICAgICAgICAgIGRldlNlcnZlclBvcnQsXG4gICAgICAgICAgICBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgICBvcHRpb25zLmhvbWVGb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zLmxpbnV4Rmxhdm9yVHlwZSxcbiAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVwb1VybCxcbiAgICAgICAgICAgIG9wdGlvbnMuYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgICBvcHRpb25zLmJyYW5jaFppcFMzUGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9sZGVyWmlwUzNQYXRoLFxuICAgICAgICAgICAgb3B0aW9ucy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBkb2N1bWVudC5uYW1lITtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgICAgICAgIG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA/PyBgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9YDtcblxuICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXIoc2NvcGUsIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgICAgZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB2c0NvZGVVc2VyOiBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5zdGFsbGVyO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFtYXpvbkxpbnV4MjAyMyhvcHRpb25zOiBJbnN0YWxsZXJPcHRpb25zKTogSW5zdGFsbGVyIHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIEluc3RhbGxlciB7XG4gICAgICBwdWJsaWMgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IEluc3RhbGxlciB7XG4gICAgICAgIGxldCBkb2N1bWVudE5hbWU7XG4gICAgICAgIGNvbnN0IGRldlNlcnZlckJhc2VQYXRoID0gb3B0aW9ucy5kZXZTZXJ2ZXJCYXNlUGF0aCA/PyAnYXBwJztcbiAgICAgICAgY29uc3QgZGV2U2VydmVyUG9ydCA9IG9wdGlvbnMuZGV2U2VydmVyUG9ydCA/PyA4MDgxO1xuICAgICAgICBpZiAob3B0aW9ucy5kb2N1bWVudE5hbWUgJiYgb3B0aW9ucy5kb2N1bWVudE5hbWUgIT0gJycpIHtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBvcHRpb25zLmRvY3VtZW50TmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMuY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGRldlNlcnZlckJhc2VQYXRoLFxuICAgICAgICAgICAgZGV2U2VydmVyUG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnMudnNDb2RlVXNlcixcbiAgICAgICAgICAgIG9wdGlvbnMuaG9tZUZvbGRlcixcbiAgICAgICAgICAgIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMyxcbiAgICAgICAgICAgIG9wdGlvbnMuY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgICAgICAgIG9wdGlvbnMucmVwb1VybCxcbiAgICAgICAgICAgIG9wdGlvbnMuYXNzZXRaaXBTM1BhdGgsXG4gICAgICAgICAgICBvcHRpb25zLmJyYW5jaFppcFMzUGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9sZGVyWmlwUzNQYXRoLFxuICAgICAgICAgICAgb3B0aW9ucy5jdXN0b21JbnN0YWxsU3RlcHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkb2N1bWVudE5hbWUgPSBkb2N1bWVudC5uYW1lITtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUgPVxuICAgICAgICAgIG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSA/PyBgL2F3cy9zc20vJHtkb2N1bWVudE5hbWV9YDtcblxuICAgICAgICBjb25zdCBpbnN0YWxsZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2VJbnN0YWxsZXIoc2NvcGUsIHtcbiAgICAgICAgICBpbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgICAgZG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB2c0NvZGVVc2VyOiBvcHRpb25zLnZzQ29kZVVzZXIsXG4gICAgICAgICAgdnNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICAgICAgaG9tZUZvbGRlcjogb3B0aW9ucy5ob21lRm9sZGVyLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaW5zdGFsbGVyO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgaW5zdGFuY2VJZCE6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50TmFtZSE6IHN0cmluZztcbiAgcHVibGljIGNsb3VkV2F0Y2hMb2dHcm91cE5hbWUhOiBzdHJpbmc7XG4gIHB1YmxpYyB2c0NvZGVQYXNzd29yZCE6IHN0cmluZztcbiAgcHVibGljIHZzQ29kZVBhc3N3b3JkVGVzdCE6IHN0cmluZztcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfYmluZChzY29wZTogQ29uc3RydWN0KTogYW55O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQ2xvdWRXYXRjaEFnZW50IHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxDbG91ZFdhdGNoQWdlbnRTdGVwKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpjb25maWd1cmVQYWNrYWdlJyxcbiAgICAgIG5hbWU6ICdJbnN0YWxsQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBuYW1lOiAnQW1hem9uQ2xvdWRXYXRjaEFnZW50JyxcbiAgICAgICAgYWN0aW9uOiAnSW5zdGFsbCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQ29uZmlndXJlQ2xvdWRXYXRjaEFnZW50IHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNvbmZpZ3VyZUNsb3VkV2F0Y2hBZ2VudFN0ZXAoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnYXdzOnJ1bkRvY3VtZW50JyxcbiAgICAgIG5hbWU6ICdDb25maWd1cmVDbG91ZFdhdGNoQWdlbnQnLFxuICAgICAgaW5wdXRzOiB7XG4gICAgICAgIGRvY3VtZW50VHlwZTogJ1NTTURvY3VtZW50JyxcbiAgICAgICAgZG9jdW1lbnRQYXRoOiAnQW1hem9uQ2xvdWRXYXRjaC1NYW5hZ2VBZ2VudCcsXG4gICAgICAgIGRvY3VtZW50UGFyYW1ldGVyczoge1xuICAgICAgICAgIGFjdGlvbjogJ2NvbmZpZ3VyZScsXG4gICAgICAgICAgbW9kZTogJ2VjMicsXG4gICAgICAgICAgb3B0aW9uYWxDb25maWd1cmF0aW9uU291cmNlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgb3B0aW9uYWxSZXN0YXJ0OiAneWVzJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBVcGRhdGVQcm9maWxlIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVVwZGF0ZVByb2ZpbGVTdGVwKHZzQ29kZVVzZXI6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIGFjY291bnQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnVXBkYXRlUHJvZmlsZScsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ2VjaG8gTEFORz1lbl9VUy51dGYtOCA+PiAvZXRjL2Vudmlyb25tZW50JyxcbiAgICAgICAgICAnZWNobyBMQ19BTEw9ZW5fVVMuVVRGLTggPj4gL2V0Yy9lbnZpcm9ubWVudCcsXG4gICAgICAgICAgYGVjaG8gJ1BBVEg9JFBBVEg6L2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgUEFUSCcgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICBgZWNobyAnZXhwb3J0IEFXU19SRUdJT049JHtyZWdpb259JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgQVdTX0FDQ09VTlRJRD0ke2FjY291bnR9JyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgIGBlY2hvICdleHBvcnQgTkVYVF9URUxFTUVUUllfRElTQUJMRUQ9MScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICBgZWNobyBcImV4cG9ydCBQUzE9J1xcXFxbXFxcXDAzM1swMTszMm1cXFxcXVxcXFx1OlxcXFxbXFxcXDAzM1swMTszNG1cXFxcXVxcXFx3XFxcXFtcXFxcMDMzWzAwbVxcXFxdXFxcXCQgJ1wiID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQVdTQ0xJIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxBV1NDTElTdGVwKHZzQ29kZVVzZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbEFXU0NMSScsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ21rZGlyIC1wIC90bXAnLFxuICAgICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vYXdzY2xpLmFtYXpvbmF3cy5jb20vYXdzY2xpLWV4ZS1saW51eC0kKHVuYW1lIC1tKS56aXAgLW8gL3RtcC9hd3MtY2xpLnppcCcsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL2F3cy1jbGkuemlwYCxcbiAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL2F3cy1jbGkuemlwJyxcbiAgICAgICAgICAnc3VkbyAvdG1wL2F3cy9pbnN0YWxsJyxcbiAgICAgICAgICAncm0gLXJmIC90bXAvYXdzJyxcbiAgICAgICAgICAnZWNobyBcIkFXUyBDTEkgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICdhd3MgLS12ZXJzaW9uJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBDbG9uZVJlcG8gc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gICAqIFRoaXMgc3RlcCBpcyBpZGVudGljYWwgZm9yIGJvdGggVWJ1bnR1IGFuZCBBbWF6b24gTGludXhcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ2xvbmVSZXBvU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnQ2xvbmVSZXBvJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgaWYgW1sgLXogXCJ7eyBSZXBvVXJsIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIFJlcG9cIlxuZWxzZVxuICBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9XG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY2xvbmUge3sgUmVwb1VybCB9fSAke2hvbWVGb2xkZXJ9XG4gIGVjaG8gXCJSZXBvIHt7IFJlcG9VcmwgfX0gY2xvbmVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCJcbiAgbHMgLWxhICR7aG9tZUZvbGRlcn1cbiAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IHJlbW90ZSAtdlxuZmlgLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIERvd25sb2FkQXNzZXRzIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZURvd25sb2FkQXNzZXRzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRBc3NldHMnLFxuICAgICAgaW5wdXRzOiB7XG4gICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgIGBpZiBbWyAteiBcInt7IEFzc2V0WmlwUzNQYXRoIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIGFzc2V0c1wiXG5lbHNlXG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgbWtkaXIgLXAgL3RtcFxuICBhd3MgczMgY3AgczM6Ly97eyBBc3NldFppcFMzUGF0aCB9fSAvdG1wL2Fzc2V0LnppcFxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9hc3NldC56aXBcbiAgdW56aXAgLW8gL3RtcC9hc3NldC56aXAgLWQgJHtob21lRm9sZGVyfVxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gJHtob21lRm9sZGVyfVxuICBpZiAgW1sgLWQgJHtob21lRm9sZGVyfS8uZ2l0IF1dXG4gIHRoZW5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gYWRkIC5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY29tbWl0IC1tICdjaG9yZTogd29ya3Nob3AgY29tbWl0J1xuICBlbHNlXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGluaXRcbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gYWRkIC5cbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY29tbWl0IC1tICdjaG9yZTogaW5pdGlhbCBjb21taXQnXG4gIGZpXG4gIGVjaG8gXCJBc3NldHMgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHtob21lRm9sZGVyfVwiXG4gIGxzIC1sYSAke2hvbWVGb2xkZXJ9XG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSBicmFuY2hcbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBEb3dubG9hZEZvbGRlcnMgc3RlcCBmb3IgU1NNIGRvY3VtZW50XG4gICAqIFRoaXMgc3RlcCBpcyBpZGVudGljYWwgZm9yIGJvdGggVWJ1bnR1IGFuZCBBbWF6b24gTGludXhcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRG93bmxvYWRGb2xkZXJzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRGb2xkZXJzJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgaWYgW1sgLXogXCJ7eyBGb2xkZXJaaXBTM1BhdGggfX1cIiBdXVxudGhlblxuICBlY2hvIFwiTm8gZm9sZGVyc1wiXG5lbHNlXG4gIHJtIC1yZiAvdG1wL2ZvbGRlclxuICBta2RpciAtcCAvdG1wL2ZvbGRlciAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9mb2xkZXJcbiAgYXdzIHMzIGNwIHMzOi8ve3sgRm9sZGVyWmlwUzNQYXRoIH19IC90bXAvYXNzZXQtZm9sZGVyLnppcFxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9hc3NldC1mb2xkZXIuemlwXG4gIHVuemlwIC1vIC90bXAvYXNzZXQtZm9sZGVyLnppcCAtZCAvdG1wL2ZvbGRlclxuICBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9mb2xkZXJcbiAgbWtkaXIgLXAgJHtob21lRm9sZGVyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gJHtob21lRm9sZGVyfVxuICBjZCBcIiR7aG9tZUZvbGRlcn1cIiAmJiBjZCAuLlxuICBpZiBbWyAkKHB3ZCkgPT0gIFwiL1wiIF1dXG4gIHRoZW5cbiAgICB0YXJnZXRSb290Rm9sZGVyPVwiXCJcbiAgZWxzZVxuICAgIHRhcmdldFJvb3RGb2xkZXI9JChwd2QpXG4gICAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC5cbiAgZmlcbiAgZmluZCBcIi90bXAvZm9sZGVyXCIgLW1heGRlcHRoIDEgLW1pbmRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc291cmNlRm9sZGVyOyBkb1xuICAgIGZvbGRlcj1cIiQoYmFzZW5hbWUgJHNvdXJjZUZvbGRlcilcIlxuICAgIGVjaG8gXCJQcm9jZXNzaW5nIGZvbGRlcjogJGZvbGRlclwiXG4gICAgdGFyZ2V0Rm9sZGVyPSR0YXJnZXRSb290Rm9sZGVyLyRmb2xkZXJcbiAgICBpZiBbWyAkdGFyZ2V0Um9vdEZvbGRlciA9PSBcIlwiIF1dXG4gICAgdGhlblxuICAgICAgbXYgJHNvdXJjZUZvbGRlciAvXG4gICAgZWxzZVxuICAgICAgbXYgJHNvdXJjZUZvbGRlciAkdGFyZ2V0Um9vdEZvbGRlclxuICAgIGZpXG4gICAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR0YXJnZXRGb2xkZXJcbiAgICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR0YXJnZXRGb2xkZXIgaW5pdFxuICAgIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHRhcmdldEZvbGRlciBhZGQgLlxuICAgIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHRhcmdldEZvbGRlciBjb21taXQgLW0gXCJjaG9yZTogaW5pdGlhbCBjb21taXRcIlxuICAgIGVjaG8gXCJGb2xkZXIgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHRhcmdldEZvbGRlclwiXG4gICAgbHMgLWxhICR0YXJnZXRGb2xkZXJcbiAgZG9uZVxuICBybSAtcmYgL3RtcC9mb2xkZXJcbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBJbnN0YWxsQ0RLIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxDREtTdGVwKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbENESycsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnLFxuICAgICAgICAgICdlY2hvIFwiQVdTIENESyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgJ2NkayAtLXZlcnNpb24nLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIEluc3RhbGxRQ0xJIHN0ZXAgZm9yIFNTTSBkb2N1bWVudFxuICAgKiBUaGlzIHN0ZXAgaXMgaWRlbnRpY2FsIGZvciBib3RoIFVidW50dSBhbmQgQW1hem9uIExpbnV4XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUluc3RhbGxRQ0xJU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgbmFtZTogJ0luc3RhbGxRQ0xJJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAnY3VybCAtLXByb3RvIFxcJz1odHRwc1xcJyAtLXRsc3YxLjIgLXNTZiBcImh0dHBzOi8vZGVza3RvcC1yZWxlYXNlLnEudXMtZWFzdC0xLmFtYXpvbmF3cy5jb20vbGF0ZXN0L3EtJCh1bmFtZSAtbSktbGludXguemlwXCIgLW8gL3RtcC9xLnppcCcsXG4gICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL3EuemlwYCxcbiAgICAgICAgICAndW56aXAgLXEgLWQgL3RtcCAvdG1wL3EuemlwJyxcbiAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvcWAsXG4gICAgICAgICAgJ2NobW9kICt4IC90bXAvcS9pbnN0YWxsLnNoJyxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC90bXAvcS9pbnN0YWxsLnNoIC0tbm8tY29uZmlybWAsXG4gICAgICAgICAgJ3JtIC1yZiAvdG1wL3EnLFxuICAgICAgICAgICdxIC0tdmVyc2lvbicsXG4gICAgICAgICAgJ2VjaG8gXCJBbWF6b24gUSBDTEkgaW5zdGFsbGVkXCInLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIEluc3RhbGx1diBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbnN0YWxsdXZTdGVwKHZzQ29kZVVzZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnSW5zdGFsbHV2JyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY3VybCAtZnNTTCBodHRwczovL2FzdHJhbC5zaC91di9pbnN0YWxsLnNoIC1vIC90bXAvdXZfaW5zdGFsbC5zaGAsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGJhc2ggL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICBgaWYgdXYgZ2VuZXJhdGUtc2hlbGwtY29tcGxldGlvbiBiYXNoICY+L2Rldi9udWxsOyB0aGVuXG4gIGVjaG8gJ2V2YWwgXCIkKHV2IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaClcIicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjXG5maWAsXG4gICAgICAgICAgYGlmIHV2eCBnZW5lcmF0ZS1zaGVsbC1jb21wbGV0aW9uIGJhc2ggJj4vZGV2L251bGw7IHRoZW5cbiAgZWNobyAnZXZhbCBcIiQodXZ4IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaClcIicgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjXG5maWAsXG4gICAgICAgICAgJ2VjaG8gXCJ1diBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIHV2IC0tdmVyc2lvbmAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgQ29uZmlndXJlQ29kZVNlcnZlciBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDb25maWd1cmVDb2RlU2VydmVyU3RlcChcbiAgICB2c0NvZGVVc2VyOiBzdHJpbmcsXG4gICAgaG9tZUZvbGRlcjogc3RyaW5nLFxuICAgIGRldlNlcnZlckJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZGV2U2VydmVyUG9ydDogbnVtYmVyLFxuICAgIHNlcnZlck5hbWVEaXJlY3RpdmU6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgIG5hbWU6ICdDb25maWd1cmVDb2RlU2VydmVyJyxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICBgZXhwb3J0IEhPTUU9L2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgLy8gcmVub3ZhdGU6IGRhdGFzb3VyY2U9Z2l0aHViLXJlbGVhc2VzIGRlcE5hbWU9Y29kZXIvY29kZS1zZXJ2ZXJcbiAgICAgICAgICAnY3VybCAtZnNTTCBodHRwczovL2NvZGUtc2VydmVyLmRldi9pbnN0YWxsLnNoIHwgc2ggLXMgLS0gLS12ZXJzaW9uIDQuMTE4LjAnLFxuICAgICAgICAgIGBzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0gMj4mMWAsXG4gICAgICAgICAgYHRlZSAvZXRjL25naW54L2NvbmYuZC9jb2RlLXNlcnZlci5jb25mIDw8RU9GXG5zZXJ2ZXIge1xuICAgIGxpc3RlbiA4MDtcbiAgICBsaXN0ZW4gWzo6XTo4MDtcbiAgICAjIHNlcnZlcl9uYW1lIFxcXFwkXFxcXHtDbG91ZEZyb250RGlzdHJpYnV0aW9uLkRvbWFpbk5hbWVcXFxcfTtcbiAgICAke3NlcnZlck5hbWVEaXJlY3RpdmV9XG4gICAgbG9jYXRpb24gLyB7XG4gICAgICBwcm94eV9wYXNzIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC87XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbiAgICBsb2NhdGlvbiAvJHtkZXZTZXJ2ZXJCYXNlUGF0aH0ge1xuICAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7ZGV2U2VydmVyUG9ydH0vJHtkZXZTZXJ2ZXJCYXNlUGF0aH07XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgXFxcXCRob3N0O1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBVcGdyYWRlIFxcXFwkaHR0cF91cGdyYWRlO1xuICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIHVwZ3JhZGU7XG4gICAgICBwcm94eV9zZXRfaGVhZGVyIEFjY2VwdC1FbmNvZGluZyBnemlwO1xuICAgIH1cbn1cbkVPRmAsXG4gICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0vLmNvbmZpZy9jb2RlLXNlcnZlcmAsXG4gICAgICAgICAgYHRlZSAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5jb25maWcvY29kZS1zZXJ2ZXIvY29uZmlnLnlhbWwgPDxFT0ZcbmNlcnQ6IGZhbHNlXG5hdXRoOiBwYXNzd29yZFxuaGFzaGVkLXBhc3N3b3JkOiBcIiQoZWNobyAtbiB7eyBWU0NvZGVQYXNzd29yZCB9fSB8IGFyZ29uMiAkKG9wZW5zc2wgcmFuZCAtYmFzZTY0IDEyKSAtZSlcIlxuRU9GYCxcbiAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9gLFxuICAgICAgICAgIGB0b3VjaCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5odXNobG9naW5gLFxuICAgICAgICAgIGBta2RpciAtcCAke2hvbWVGb2xkZXJ9ICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAke2hvbWVGb2xkZXJ9YCxcbiAgICAgICAgICBgdGVlIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiA8PEVPRlxue1xuICBcImV4dGVuc2lvbnMuYXV0b1VwZGF0ZVwiOiBmYWxzZSxcbiAgXCJleHRlbnNpb25zLmF1dG9DaGVja1VwZGF0ZXNcIjogZmFsc2UsXG4gIFwidGVsZW1ldHJ5LnRlbGVtZXRyeUxldmVsXCI6IFwib2ZmXCIsXG4gIFwic2VjdXJpdHkud29ya3NwYWNlLnRydXN0LnN0YXJ0dXBQcm9tcHRcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbmFibGVkXCI6IGZhbHNlLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5iYW5uZXJcIjogXCJuZXZlclwiLFxuICBcInNlY3VyaXR5LndvcmtzcGFjZS50cnVzdC5lbXB0eVdpbmRvd1wiOiBmYWxzZSxcbiAgXCJhdXRvLXJ1bi1jb21tYW5kLnJ1bGVzXCI6IFtcbiAgICB7XG4gICAgICBcImNvbW1hbmRcIjogXCJ3b3JrYmVuY2guYWN0aW9uLnRlcm1pbmFsLm5ld1wiXG4gICAgfVxuICBdXG59XG5FT0ZgLFxuICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCBuZ2lueCcsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gQW1hem9uV2ViU2VydmljZXMuYXdzLXRvb2xraXQtdnNjb2RlIC0tZm9yY2VgLFxuICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIEFtYXpvbldlYlNlcnZpY2VzLmFtYXpvbi1xLXZzY29kZSAtLWZvcmNlYCxcbiAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiBtcy12c2NvZGUubGl2ZS1zZXJ2ZXIgLS1mb3JjZWAsXG4gICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gc3luZWRyYS5hdXRvLXJ1bi1jb21tYW5kIC0tZm9yY2VgLFxuICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgJ2VjaG8gXCJOZ2lueCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgJ25naW54IC10IDI+JjEnLFxuICAgICAgICAgICdzeXN0ZW1jdGwgc3RhdHVzIG5naW54JyxcbiAgICAgICAgICAnZWNobyBcIkNvZGVTZXJ2ZXIgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICdjb2RlLXNlcnZlciAtdicsXG4gICAgICAgICAgYHN5c3RlbWN0bCBzdGF0dXMgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgRG93bmxvYWRCcmFuY2hlcyBzdGVwIGZvciBTU00gZG9jdW1lbnRcbiAgICogVGhpcyBzdGVwIGlzIGlkZW50aWNhbCBmb3IgYm90aCBVYnVudHUgYW5kIEFtYXpvbiBMaW51eFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEb3dubG9hZEJyYW5jaGVzU3RlcCh2c0NvZGVVc2VyOiBzdHJpbmcsIGhvbWVGb2xkZXI6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICBuYW1lOiAnRG93bmxvYWRCcmFuY2hlcycsXG4gICAgICBpbnB1dHM6IHtcbiAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgYGlmIFtbIC16IFwie3sgQnJhbmNoWmlwUzNQYXRoIH19XCIgXV1cbnRoZW5cbiAgZWNobyBcIk5vIGJyYW5jaGVzXCJcbmVsc2VcbiAgcm0gLXJmIC90bXAvYnJhbmNoXG4gIHJtIC1yZiAvdG1wL2dpdFxuICBta2RpciAtcCAvdG1wL2JyYW5jaCAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9icmFuY2hcbiAgbWtkaXIgLXAgL3RtcC9naXQgJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvZ2l0XG4gIGF3cyBzMyBjcCBzMzovL3t7IEJyYW5jaFppcFMzUGF0aCB9fSAvdG1wL2Fzc2V0LWJyYW5jaC56aXBcbiAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvYXNzZXQtYnJhbmNoLnppcFxuICB1bnppcCAtbyAvdG1wL2Fzc2V0LWJyYW5jaC56aXAgLWQgL3RtcC9icmFuY2hcbiAgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC90bXAvYnJhbmNoXG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGluaXRcbiAgbXYgJHtob21lRm9sZGVyfS8uZ2l0IC90bXAvZ2l0XG4gIHJtIC1yZiAke2hvbWVGb2xkZXJ9XG4gIG1rZGlyIC1wICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgbXYgL3RtcC9naXQvLmdpdCAke2hvbWVGb2xkZXJ9XG4gIGZpbmQgL3RtcC9icmFuY2ggLW1heGRlcHRoIDEgLW1pbmRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc291cmNlRm9sZGVyOyBkb1xuICAgIGJyYW5jaD1cIiQoYmFzZW5hbWUgJHNvdXJjZUZvbGRlcilcIlxuICAgIGVjaG8gXCJQcm9jZXNzaW5nIGJyYW5jaDogJGJyYW5jaFwiXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGNoZWNrb3V0IC1iICRicmFuY2ggMj4mMVxuICAgIGNwIC1hICRzb3VyY2VGb2xkZXIvLiAke2hvbWVGb2xkZXJ9XG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGFkZCAuXG4gICAgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCAtQyAke2hvbWVGb2xkZXJ9IGNvbW1pdCAtbSBcImNob3JlOiBpbml0aWFsIGNvbW1pdCAkYnJhbmNoXCJcbiAgICBtdiAke2hvbWVGb2xkZXJ9Ly5naXQgL3RtcC9naXRcbiAgICBybSAtcmYgJHtob21lRm9sZGVyfVxuICAgIG1rZGlyICR7aG9tZUZvbGRlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9ICR7aG9tZUZvbGRlcn1cbiAgICBtdiAvdG1wL2dpdC8uZ2l0ICR7aG9tZUZvbGRlcn1cbiAgZG9uZVxuICBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IC1DICR7aG9tZUZvbGRlcn0gY2hlY2tvdXQgbWFpbiAyPiYxXG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSByZXN0b3JlIC5cbiAgcm0gLXJmIC90bXAvYnJhbmNoXG4gIHJtIC1yZiAvdG1wL2dpdFxuICBlY2hvIFwiQnJhbmNoZXMgZG93bmxvYWRlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvbjogJHtob21lRm9sZGVyfVwiXG4gIHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgLUMgJHtob21lRm9sZGVyfSBicmFuY2hcbiAgbHMgLWxhICR7aG9tZUZvbGRlcn1cbmZpYCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU1NNRG9jdW1lbnQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBkZXZTZXJ2ZXJCYXNlUGF0aDogc3RyaW5nLFxuICAgIGRldlNlcnZlclBvcnQ6IG51bWJlcixcbiAgICB2c0NvZGVVc2VyOiBzdHJpbmcsXG4gICAgaG9tZUZvbGRlcjogc3RyaW5nLFxuICAgIGxpbnV4Rmxhdm9yOiBMaW51eEZsYXZvclR5cGUsXG4gICAgY3VzdG9tRG9tYWluTmFtZT86IHN0cmluZyxcbiAgICByZXBvVXJsPzogc3RyaW5nLFxuICAgIGFzc2V0WmlwUzNQYXRoPzogc3RyaW5nLFxuICAgIGJyYW5jaFppcFMzUGF0aD86IHN0cmluZyxcbiAgICBmb2xkZXJaaXBTM1BhdGg/OiBzdHJpbmcsXG4gICAgY3VzdG9tSW5zdGFsbFN0ZXBzPzogQ3VzdG9tSW5zdGFsbFN0ZXBbXSxcbiAgKTogc3NtLkNmbkRvY3VtZW50IHtcbiAgICAvLyBHZW5lcmF0ZSBuZ2lueCBzZXJ2ZXJfbmFtZSBkaXJlY3RpdmUgYmFzZWQgb24gY3VzdG9tIGRvbWFpblxuICAgIGNvbnN0IHNlcnZlck5hbWVEaXJlY3RpdmUgPSBjdXN0b21Eb21haW5OYW1lXG4gICAgICA/IGBzZXJ2ZXJfbmFtZSAqLmNsb3VkZnJvbnQubmV0ICR7Y3VzdG9tRG9tYWluTmFtZX07YFxuICAgICAgOiAnc2VydmVyX25hbWUgKi5jbG91ZGZyb250Lm5ldDsnO1xuXG4gICAgbGV0IHNzbURvY3VtZW50OiBzc20uQ2ZuRG9jdW1lbnQ7XG4gICAgc3dpdGNoIChsaW51eEZsYXZvcikge1xuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzIyOlxuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzI0OlxuICAgICAgY2FzZSBMaW51eEZsYXZvclR5cGUuVUJVTlRVXzI1OlxuICAgICAgICAvLyBDcmVhdGUgYW4gU1NNIGRvY3VtZW50IHdpdGggbXVsdGlwbGUgYWN0aW9ucyB0byBpbnN0YWxsIHRoZSBzb2Z0d2FyZVxuICAgICAgICBzc21Eb2N1bWVudCA9IG5ldyBzc20uQ2ZuRG9jdW1lbnQoc2NvcGUsICdzc20tZG9jdW1lbnQtdWJ1bnR1Jywge1xuICAgICAgICAgIG5hbWU6IGB2c2NvZGUtc2VydmVyLXVidW50dS0ke1N0YWNrLm9mKHNjb3BlKS5zdGFja05hbWV9YCxcbiAgICAgICAgICBkb2N1bWVudFR5cGU6ICdDb21tYW5kJyxcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICBzY2hlbWFWZXJzaW9uOiAnMi4yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIFZTQ29kZSBjb2RlLXNlcnZlciBpbnN0YW5jZScsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIFZTQ29kZVBhc3N3b3JkOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogU3RhY2sub2Yoc2NvcGUpLnN0YWNrSWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIE5vZGVWZXJzaW9uOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJzIyJyxcbiAgICAgICAgICAgICAgICBhbGxvd2VkVmFsdWVzOiBbJzI0JywgJzIyJywgJzIwJywgJzE4J10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFJlcG9Vcmw6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXBvVXJsID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBBc3NldFppcFMzUGF0aDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGFzc2V0WmlwUzNQYXRoID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBCcmFuY2haaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmFuY2haaXBTM1BhdGggPz8gJycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIEZvbGRlclppcFMzUGF0aDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZvbGRlclppcFMzUGF0aCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBhbGwgbWFpblN0ZXBzIHNjcmlwdHMgYXJlIGluIGluIC92YXIvbGliL2FtYXpvbi9zc20vPGluc3RhbmNlaWQ+L2RvY3VtZW50L29yY2hlc3RyYXRpb24vPHV1aWQ+LzxTdGVwTmFtZT4vX3NjcmlwdC5zaFxuICAgICAgICAgICAgbWFpblN0ZXBzOiBbXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbENsb3VkV2F0Y2hBZ2VudFN0ZXAoKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb25maWd1cmVDbG91ZFdhdGNoQWdlbnRTdGVwKCksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQXB0UGFja2FnZXNBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGFwdC11dGlscycsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIG5lZWRyZXN0YXJ0IHVuYXR0ZW5kZWQtdXBncmFkZXMnLFxuICAgICAgICAgICAgICAgICAgICBcInNlZCAtaSAncy8jJG5yY29uZntrZXJuZWxoaW50c30gPSAtMTsvJG5yY29uZntrZXJuZWxoaW50c30gPSAwOy8nIC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZlwiLFxuICAgICAgICAgICAgICAgICAgICBcInNlZCAtaSAncy8jJG5yY29uZnt2ZXJib3NpdHl9ID0gMjsvJG5yY29uZnt2ZXJib3NpdHl9ID0gMDsvJyAvZXRjL25lZWRyZXN0YXJ0L25lZWRyZXN0YXJ0LmNvbmZcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzZWQgLWkgXFxcInMvI1xcJG5yY29uZntyZXN0YXJ0fSA9ICdpJzsvXFwkbnJjb25me3Jlc3RhcnR9ID0gJ2EnOy9cXFwiIC9ldGMvbmVlZHJlc3RhcnQvbmVlZHJlc3RhcnQuY29uZlwiLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFwdCBoZWxwZXIgcGFja2FnZXMgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdjYXQgL2V0Yy9uZWVkcmVzdGFydC9uZWVkcmVzdGFydC5jb25mJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxCYXNlUGFja2FnZXNBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGN1cmwgZ251cGcgd2hvaXMgYXJnb24yIHVuemlwIG5naW54IG9wZW5zc2wgbG9jYWxlcyBsb2NhbGVzLWFsbCBhcHQtdHJhbnNwb3J0LWh0dHBzIGNhLWNlcnRpZmljYXRlcyBzb2Z0d2FyZS1wcm9wZXJ0aWVzLWNvbW1vbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdBZGRVc2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICBgaWYgW1sgXCIke3ZzQ29kZVVzZXJ9XCIgPT0gXCJ1YnVudHVcIiBdXVxudGhlblxuICBlY2hvICdVc2luZyBleGlzdGluZyB1c2VyOiAke3ZzQ29kZVVzZXJ9J1xuZWxzZVxuICBlY2hvICdBZGRpbmcgdXNlcjogJHt2c0NvZGVVc2VyfSdcbiAgYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgJHt2c0NvZGVVc2VyfVxuICBlY2hvIFwiJHt2c0NvZGVVc2VyfTp7eyBWU0NvZGVQYXNzd29yZCB9fVwiIHwgY2hwYXNzd2RcbiAgdXNlcm1vZCAtYUcgc3VkbyAke3ZzQ29kZVVzZXJ9XG5maWAsXG4gICAgICAgICAgICAgICAgICAgIGB0ZWUgL2V0Yy9zdWRvZXJzLmQvOTEtdnNjb2RlLXVzZXIgPDxFT0ZcbiR7dnNDb2RlVXNlcn0gQUxMPShBTEwpIE5PUEFTU1dEOkFMTFxuRU9GYCxcbiAgICAgICAgICAgICAgICAgICAgYG1rZGlyIC1wIC9ob21lLyR7dnNDb2RlVXNlcn0gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvYmluICYmIGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvaG9tZS8ke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJVc2VyIGFkZGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICBgZ2V0ZW50IHBhc3N3ZCAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVVcGRhdGVQcm9maWxlU3RlcCh2c0NvZGVVc2VyLCBTdGFjay5vZihzY29wZSkucmVnaW9uLCBTdGFjay5vZihzY29wZSkuYWNjb3VudCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbEFXU0NMSVN0ZXAodnNDb2RlVXNlciksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR2l0QXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICAnYWRkLWFwdC1yZXBvc2l0b3J5IHBwYTpnaXQtY29yZS9wcGEnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBnaXQnLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcInBhcnRpY2lwYW50QGV4YW1wbGUuY29tXCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiV29ya3Nob3AgUGFydGljaXBhbnRcImAsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gZ2l0IGNvbmZpZyAtLWdsb2JhbCBpbml0LmRlZmF1bHRCcmFuY2ggXCJtYWluXCJgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdpdCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnaXQgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDbG9uZVJlcG9TdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvd25sb2FkQXNzZXRzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEZvbGRlcnNTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURvd25sb2FkQnJhbmNoZXNTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNvbmZpZ3VyZUNvZGVTZXJ2ZXJTdGVwKHZzQ29kZVVzZXIsIGhvbWVGb2xkZXIsIGRldlNlcnZlckJhc2VQYXRoLCBkZXZTZXJ2ZXJQb3J0LCBzZXJ2ZXJOYW1lRGlyZWN0aXZlKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxOb2RlQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9kZWIubm9kZXNvdXJjZS5jb20vZ3Bna2V5L25vZGVzb3VyY2UtcmVwby5ncGcua2V5IHwgZ3BnIC0tZGVhcm1vciAtbyAvdXNyL3NoYXJlL2tleXJpbmdzL25vZGVzb3VyY2UuZ3BnJyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJkZWIgW2FyY2g9JChkcGtnIC0tcHJpbnQtYXJjaGl0ZWN0dXJlKSBzaWduZWQtYnk9L3Vzci9zaGFyZS9rZXlyaW5ncy9ub2Rlc291cmNlLmdwZ10gaHR0cHM6Ly9kZWIubm9kZXNvdXJjZS5jb20vbm9kZV97eyBOb2RlVmVyc2lvbiB9fS54IG5vZGlzdHJvIG1haW5cIiA+IC9ldGMvYXB0L3NvdXJjZXMubGlzdC5kL25vZGVzb3VyY2UubGlzdCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIG5vZGVqcycsXG4gICAgICAgICAgICAgICAgICAgICducG0gaW5zdGFsbCAtZyBucG1AbGF0ZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJOb2RlIGFuZCBucG0gaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnbm9kZSAtdicsXG4gICAgICAgICAgICAgICAgICAgICducG0gLXYnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGxDREtTdGVwKCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlSW5zdGFsbFFDTElTdGVwKHZzQ29kZVVzZXIpLFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGx1dlN0ZXAodnNDb2RlVXNlciksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsUHl0aG9uQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gVWJ1bnR1IDIyIGRlZmF1bHQgaXMgUHl0aG9uIDMuMTBcbiAgICAgICAgICAgICAgICAgICAgLy8gVWJ1bnR1IDI0IGRlZmF1bHQgaXMgUHl0aG9uIDMuMTJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgaW5zdGFsbGVkIFB5dGhvbiB2ZXJzaW9uIHdpbGwgbWFwIHRvIFB5dGhvbjNcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2Rwa2cgLS1jb25maWd1cmUgLWEnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBweXRob24zLXBpcCBweXRob24zLXZlbnYgcHl0aG9uMy1ib3RvMyBweXRob24zLXB5dGVzdCcsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdhbGlhcyBweXRlc3Q9cHl0ZXN0LTMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgbXVsdGlwYXRoZC5zZXJ2aWNlIHBhY2thZ2VraXQuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgcmVzdGFydCB1bmF0dGVuZGVkLXVwZ3JhZGVzLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHJlc3RhcnQgbmV0d29ya2QtZGlzcGF0Y2hlci5zZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGNvZGUtc2VydmVyIC0taW5zdGFsbC1leHRlbnNpb24gbXMtcHl0aG9uLnB5dGhvbiAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgYGlmIFsgLWYgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uIF07IHRoZW5cbiAgc2VkIC1pIFwiMmlcXFxcXFxcXCAgXFxcXFwicHl0aG9uLnRlc3RpbmcucHl0ZXN0RW5hYmxlZFxcXFxcIjogdHJ1ZSxcIiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9zaGFyZS9jb2RlLXNlcnZlci9Vc2VyL3NldHRpbmdzLmpzb25cbmVsc2VcbiAgZWNobyAne1xuICAgIFwicHl0aG9uLnRlc3RpbmcucHl0ZXN0RW5hYmxlZFwiOiB0cnVlXG4gIH0nID4gL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uXG5maWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiUHl0aG9uIGFuZCBQaXAgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAncHl0aG9uMyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAncGlwMyAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEphdmFBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdjdXJsIC1mc1NMIGh0dHBzOi8vYXB0LmNvcnJldHRvLmF3cy9jb3JyZXR0by5rZXkgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvY29ycmV0dG8ta2V5cmluZy5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3MvY29ycmV0dG8ta2V5cmluZy5ncGddIGh0dHBzOi8vYXB0LmNvcnJldHRvLmF3cyBzdGFibGUgbWFpblwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvY29ycmV0dG8ubGlzdCcsXG4gICAgICAgICAgICAgICAgICAgICdERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCB1cGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICAnREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBqYXZhLTIxLWFtYXpvbi1jb3JyZXR0by1qZGsgamF2YS0xNy1hbWF6b24tY29ycmV0dG8tamRrIGphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvLWpkayBtYXZlbicsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV84X0hPTUU9JCh1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tbGlzdCBqYXZhIHwgZ3JlcCBcImphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvXCIgfCBoZWFkIC0xKScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzhfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xLjguMC1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xNy1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0xNy1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfUEFUSD0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfSE9NRT0kKHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGphdmEgfCBncmVwIFwiamF2YS0yMS1hbWF6b24tY29ycmV0dG9cIiB8IGhlYWQgLTEpJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IFBBVEg9JFBBVEg6JEpBVkFfSE9NRS9iaW46L3Vzci9zaGFyZS9tYXZlbi9iaW4nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIHZzY2phdmEudnNjb2RlLWphdmEtcGFjayAtLWZvcmNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJKYXZhIGFuZCBNYXZlbiBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdqYXZhIC12ZXJzaW9uIDI+JjEnLFxuICAgICAgICAgICAgICAgICAgICAnbXZuIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tbGlzdCBqYXZhJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxEb3RuZXRBcHQnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZHBrZyAtLWNvbmZpZ3VyZSAtYScsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGRvdG5ldC1zZGstOC4wJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvdG5ldCB0b29sIGluc3RhbGwgLWcgTWljcm9zb2Z0LldlYi5MaWJyYXJ5TWFuYWdlci5DbGknLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnUEFUSD0kUEFUSDovaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5kb3RuZXQvdG9vbHMnID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG90bmV0IGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvdG5ldCAtLWxpc3Qtc2RrcycsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsRG9ja2VyQXB0JyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cmwgLWZzU0wgaHR0cHM6Ly9kb3dubG9hZC5kb2NrZXIuY29tL2xpbnV4L3VidW50dS9ncGcgfCBncGcgLS1kZWFybW9yIC1vIC91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGcnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcImRlYiBbc2lnbmVkLWJ5PS91c3Ivc2hhcmUva2V5cmluZ3MvZG9ja2VyLWFyY2hpdmUta2V5cmluZy5ncGddIGh0dHBzOi8vZG93bmxvYWQuZG9ja2VyLmNvbS9saW51eC91YnVudHUgJChsc2JfcmVsZWFzZSAtLWNvZGVuYW1lIC0tc2hvcnQpIHN0YWJsZVwiID4gL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvZG9ja2VyLmxpc3QnLFxuICAgICAgICAgICAgICAgICAgICAnYXB0LWdldCAtcSB1cGRhdGUgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtcSBkb2NrZXItY2UgZG9ja2VyLWNlLWNsaSBjb250YWluZXJkLmlvJyxcbiAgICAgICAgICAgICAgICAgICAgYHVzZXJtb2QgLWFHIGRvY2tlciAke3ZzQ29kZVVzZXJ9YCxcbiAgICAgICAgICAgICAgICAgICAgYHN5c3RlbWN0bCByZXN0YXJ0IGNvZGUtc2VydmVyQCR7dnNDb2RlVXNlcn0uc2VydmljZWAsXG4gICAgICAgICAgICAgICAgICAgICdzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvY2tlciBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb2NrZXIgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGF0dXMgZG9ja2VyLnNlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEdvbGFuZ0FwdCcsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdhcHQtZ2V0IC1xIHVwZGF0ZSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC1xIGdvbGFuZycsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vZ28vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdvbGFuZyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnbyB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgICAgLi4uKGN1c3RvbUluc3RhbGxTdGVwcz8ubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RlcC5uYW1lLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogc3RlcC5jb21tYW5kcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSkgPz8gW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExpbnV4Rmxhdm9yVHlwZS5BTUFaT05fTElOVVhfMjAyMzpcbiAgICAgICAgc3NtRG9jdW1lbnQgPSBuZXcgc3NtLkNmbkRvY3VtZW50KHNjb3BlLCAnc3NtLWRvY3VtZW50LWFsMjAyMycsIHtcbiAgICAgICAgICBuYW1lOiBgdnNjb2RlLXNlcnZlci1hbDIwMjMtJHtTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lfWAsXG4gICAgICAgICAgZG9jdW1lbnRUeXBlOiAnQ29tbWFuZCcsXG4gICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgc2NoZW1hVmVyc2lvbjogJzIuMicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBWU0NvZGUgY29kZS1zZXJ2ZXIgaW5zdGFuY2UnLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBWU0NvZGVQYXNzd29yZDoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFN0YWNrLm9mKHNjb3BlKS5zdGFja0lkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBOb2RlVmVyc2lvbjoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICcyMicsXG4gICAgICAgICAgICAgICAgYWxsb3dlZFZhbHVlczogWycyNCcsICcyMicsICcyMCcsICcxOCddLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBSZXBvVXJsOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmVwb1VybCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgQXNzZXRaaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBhc3NldFppcFMzUGF0aCA/PyAnJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgQnJhbmNoWmlwUzNQYXRoOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogYnJhbmNoWmlwUzNQYXRoID8/ICcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBGb2xkZXJaaXBTM1BhdGg6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiBmb2xkZXJaaXBTM1BhdGggPz8gJycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gYWxsIG1haW5TdGVwcyBzY3JpcHRzIGFyZSBpbiBpbiAvdmFyL2xpYi9hbWF6b24vc3NtLzxpbnN0YW5jZWlkPi9kb2N1bWVudC9vcmNoZXN0cmF0aW9uLzx1dWlkPi88U3RlcE5hbWU+L19zY3JpcHQuc2hcbiAgICAgICAgICAgIG1haW5TdGVwczogW1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUluc3RhbGxDbG91ZFdhdGNoQWdlbnRTdGVwKCksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ29uZmlndXJlQ2xvdWRXYXRjaEFnZW50U3RlcCgpLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbEJhc2VQYWNrYWdlc0RuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSAtLWFsbG93ZXJhc2luZyB3aG9pcyBhcmdvbjIgdW56aXAgbmdpbnggY3VybCBnbnVwZyBvcGVuc3NsJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0FkZFVzZXJEbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICBgaWYgW1sgXCIke3ZzQ29kZVVzZXJ9XCIgPT0gXCJlYzItdXNlclwiIF1dXG50aGVuXG4gIGVjaG8gJ1VzaW5nIGV4aXN0aW5nIHVzZXI6ICR7dnNDb2RlVXNlcn0nXG5lbHNlXG4gIGVjaG8gJ0FkZGluZyB1c2VyOiAke3ZzQ29kZVVzZXJ9J1xuICBhZGR1c2VyIC1jICcnICR7dnNDb2RlVXNlcn1cbiAgcGFzc3dkIC1sICR7dnNDb2RlVXNlcn1cbiAgZWNobyBcIiR7dnNDb2RlVXNlcn06e3sgVlNDb2RlUGFzc3dvcmQgfX1cIiB8IGNocGFzc3dkXG4gIHVzZXJtb2QgLWFHIHdoZWVsICR7dnNDb2RlVXNlcn1cbmZpYCxcbiAgICAgICAgICAgICAgICAgICAgYHRlZSAvZXRjL3N1ZG9lcnMuZC85MS12c2NvZGUtdXNlciA8PEVPRlxuJHt2c0NvZGVVc2VyfSBBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMXG5FT0ZgLFxuICAgICAgICAgICAgICAgICAgICBgbWtkaXIgLXAgL2hvbWUvJHt2c0NvZGVVc2VyfSAmJiBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL2hvbWUvJHt2c0NvZGVVc2VyfWAsXG4gICAgICAgICAgICAgICAgICAgIGBta2RpciAtcCAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5sb2NhbC9iaW4gJiYgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlVzZXIgYWRkZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBnZXRlbnQgcGFzc3dkICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVVwZGF0ZVByb2ZpbGVTdGVwKHZzQ29kZVVzZXIsIFN0YWNrLm9mKHNjb3BlKS5yZWdpb24sIFN0YWNrLm9mKHNjb3BlKS5hY2NvdW50KSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVJbnN0YWxsQVdTQ0xJU3RlcCh2c0NvZGVVc2VyKSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxHaXREbmYnLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogW1xuICAgICAgICAgICAgICAgICAgICAnIyEvYmluL2Jhc2gnLFxuICAgICAgICAgICAgICAgICAgICAnZG5mIGluc3RhbGwgLXkgZ2l0JyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCJwYXJ0aWNpcGFudEBleGFtcGxlLmNvbVwiYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIldvcmtzaG9wIFBhcnRpY2lwYW50XCJgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IGdpdCBjb25maWcgLS1nbG9iYWwgaW5pdC5kZWZhdWx0QnJhbmNoIFwibWFpblwiYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJHaXQgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnZ2l0IC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ2xvbmVSZXBvU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEFzc2V0c1N0ZXAodnNDb2RlVXNlciwgaG9tZUZvbGRlciksXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlRG93bmxvYWRGb2xkZXJzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEb3dubG9hZEJyYW5jaGVzU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyKSxcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDb25maWd1cmVDb2RlU2VydmVyU3RlcCh2c0NvZGVVc2VyLCBob21lRm9sZGVyLCBkZXZTZXJ2ZXJCYXNlUGF0aCwgZGV2U2VydmVyUG9ydCwgc2VydmVyTmFtZURpcmVjdGl2ZSksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsTm9kZURuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBub2RlanMgbnBtJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIG5wbUBsYXRlc3QnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIk5vZGUgYW5kIG5wbSBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdub2RlIC12JyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSAtdicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsQ0RLJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC1nIGF3cy1jZGsnLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkFXUyBDREsgaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnY2RrIC0tdmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsUUNMSScsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdjdXJsIC0tcHJvdG8gXFwnPWh0dHBzXFwnIC0tdGxzdjEuMiAtc1NmIFwiaHR0cHM6Ly9kZXNrdG9wLXJlbGVhc2UucS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9sYXRlc3QvcS0kKHVuYW1lIC1tKS1saW51eC56aXBcIiAtbyAvdG1wL3EuemlwJyxcbiAgICAgICAgICAgICAgICAgICAgYGNob3duIC1SICR7dnNDb2RlVXNlcn06JHt2c0NvZGVVc2VyfSAvdG1wL3EuemlwYCxcbiAgICAgICAgICAgICAgICAgICAgJ3VuemlwIC1xIC1kIC90bXAgL3RtcC9xLnppcCcsXG4gICAgICAgICAgICAgICAgICAgIGBjaG93biAtUiAke3ZzQ29kZVVzZXJ9OiR7dnNDb2RlVXNlcn0gL3RtcC9xYCxcbiAgICAgICAgICAgICAgICAgICAgJ2NobW9kICt4IC90bXAvcS9pbnN0YWxsLnNoJyxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAvdG1wL3EvaW5zdGFsbC5zaCAtLW5vLWNvbmZpcm1gLFxuICAgICAgICAgICAgICAgICAgICAncm0gLXJmIC90bXAvcScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiQW1hem9uIFEgQ0xJIGluc3RhbGxlZFwiJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGx1dicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjdXJsIC1mc1NMIGh0dHBzOi8vYXN0cmFsLnNoL3V2L2luc3RhbGwuc2ggLW8gL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICAgICAgICAgICAgYHN1ZG8gLXUgJHt2c0NvZGVVc2VyfSAtLWxvZ2luIGJhc2ggL3RtcC91dl9pbnN0YWxsLnNoYCxcbiAgICAgICAgICAgICAgICAgICAgYGlmIHV2IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaCAmPi9kZXYvbnVsbDsgdGhlblxuICBlY2hvICdldmFsIFwiJCh1diBnZW5lcmF0ZS1zaGVsbC1jb21wbGV0aW9uIGJhc2gpXCInID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY1xuZmlgLFxuICAgICAgICAgICAgICAgICAgICBgaWYgdXZ4IGdlbmVyYXRlLXNoZWxsLWNvbXBsZXRpb24gYmFzaCAmPi9kZXYvbnVsbDsgdGhlblxuICBlY2hvICdldmFsIFwiJCh1dnggZ2VuZXJhdGUtc2hlbGwtY29tcGxldGlvbiBiYXNoKVwiJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNcbmZpYCxcbiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gXCJ1diBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiB1diAtLXZlcnNpb25gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbFB5dGhvbkRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIEFMMjAyMyBjdXJyZW50bHkgc2hpcHMgd2l0aCBQeXRob24gMy45IHByZWluc3RhbGxlZCwgYnV0IDMuMTEgaXMgYXZhaWxhYmxlIGluIHRoZSByZXBvc2l0b3J5XG4gICAgICAgICAgICAgICAgICAgIC8vIEluc3RhbGwgMy4xMSBhbG9uZ3NpZGUgMy45IGFuZCBzZXR1cCBzb21lIGFsaWFzIHNvIHRoYXQgMy4xMSBpcyBsb2FkZWQgd2hlbiBwYXJ0aWNpcGFudCBydW5zIFB5dGhvbjNcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgUHl0aG9uIDMuMTIgYmVjb21lIGF2YWlsYWJsZSwgdXBkYXRlIGJlbG93XG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBweXRob24zLjExIHB5dGhvbjMuMTEtcGlwIHB5dGhvbjMtdmlydHVhbGVudiBweXRob24zLXB5dGVzdCBweXRob24zLWJvdG8zJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHB5dGVzdD1weXRlc3QtMycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHB5dGhvbjM9cHl0aG9uMy4xMScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2FsaWFzIHBpcDM9cGlwMy4xMScgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgXCJlY2hvICdhbGlhcz1weXRob24zPXB5dGhvbjMuMTEnID4+IH4vLmJhc2hyY1wiLFxuICAgICAgICAgICAgICAgICAgICBcImVjaG8gJ2FsaWFzIHBpcDM9cGlwMy4xMScgPj4gfi8uYmFzaHJjXCIsXG4gICAgICAgICAgICAgICAgICAgICdweXRob24zLjExIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAgMj4mMScsXG4gICAgICAgICAgICAgICAgICAgIGBzdWRvIC11ICR7dnNDb2RlVXNlcn0gLS1sb2dpbiBjb2RlLXNlcnZlciAtLWluc3RhbGwtZXh0ZW5zaW9uIG1zLXB5dGhvbi5weXRob24gLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgIGBpZiBbIC1mIC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvbiBdOyB0aGVuXG4gIHNlZCAtaSBcIjJpXFxcXFxcXFwgIFxcXFxcInB5dGhvbi50ZXN0aW5nLnB5dGVzdEVuYWJsZWRcXFxcXCI6IHRydWUsXCIgL2hvbWUvJHt2c0NvZGVVc2VyfS8ubG9jYWwvc2hhcmUvY29kZS1zZXJ2ZXIvVXNlci9zZXR0aW5ncy5qc29uXG5lbHNlXG4gIGVjaG8gJ3tcbiAgICBcInB5dGhvbi50ZXN0aW5nLnB5dGVzdEVuYWJsZWRcIjogdHJ1ZVxuICB9JyA+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmxvY2FsL3NoYXJlL2NvZGUtc2VydmVyL1VzZXIvc2V0dGluZ3MuanNvblxuZmlgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIlB5dGhvbiBhbmQgUGlwIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLS12ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjMuMTEgLW0gcGlwIC0tdmVyc2lvbiAyPiYxJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxKYXZhRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IGphdmEtMjEtYW1hem9uLWNvcnJldHRvIGphdmEtMTctYW1hem9uLWNvcnJldHRvIGphdmEtMS44LjAtYW1hem9uLWNvcnJldHRvIG1hdmVuJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzhfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0xLjguMC1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV84X1BBVEg9L3Vzci9saWIvanZtL2phdmEtMS44LjAtYW1hem9uLWNvcnJldHRvJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMTdfUEFUSD0vdXNyL2xpYi9qdm0vamF2YS0xNy1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV8xN19IT01FPS91c3IvbGliL2p2bS9qYXZhLTE3LWFtYXpvbi1jb3JyZXR0bycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBKQVZBXzIxX1BBVEg9L3Vzci9saWIvanZtL2phdmEtMjEtYW1hem9uLWNvcnJldHRvJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgZWNobyAnZXhwb3J0IEpBVkFfMjFfSE9NRT0vdXNyL2xpYi9qdm0vamF2YS0yMS1hbWF6b24tY29ycmV0dG8nID4+IC9ob21lLyR7dnNDb2RlVXNlcn0vLmJhc2hyY2AsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdleHBvcnQgSkFWQV9IT01FPS91c3IvbGliL2p2bS9qYXZhLTIxLWFtYXpvbi1jb3JyZXR0bycgPj4gL2hvbWUvJHt2c0NvZGVVc2VyfS8uYmFzaHJjYCxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ2V4cG9ydCBQQVRIPSRQQVRIOiRKQVZBX0hPTUUvYmluOi91c3Ivc2hhcmUvbWF2ZW4vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgc3VkbyAtdSAke3ZzQ29kZVVzZXJ9IC0tbG9naW4gY29kZS1zZXJ2ZXIgLS1pbnN0YWxsLWV4dGVuc2lvbiB2c2NqYXZhLnZzY29kZS1qYXZhLXBhY2sgLS1mb3JjZWAsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiSmF2YSBhbmQgTWF2ZW4gaW5zdGFsbGVkLiBDaGVja2luZyBjb25maWd1cmF0aW9uXCInLFxuICAgICAgICAgICAgICAgICAgICAnamF2YSAtdmVyc2lvbiAyPiYxJyxcbiAgICAgICAgICAgICAgICAgICAgJ212biAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbERvdG5ldERuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBkb3RuZXQtc2RrLTguMCcsXG4gICAgICAgICAgICAgICAgICAgICdkb3RuZXQgdG9vbCBpbnN0YWxsIC1nIE1pY3Jvc29mdC5XZWIuTGlicmFyeU1hbmFnZXIuQ2xpJyxcbiAgICAgICAgICAgICAgICAgICAgYGVjaG8gJ1BBVEg9JFBBVEg6L2hvbWUvJHt2c0NvZGVVc2VyfS8uZG90bmV0L3Rvb2xzJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICBgY2hvd24gLVIgJHt2c0NvZGVVc2VyfToke3ZzQ29kZVVzZXJ9IC9ob21lLyR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkRvdG5ldCBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdkb3RuZXQgLS1saXN0LXNka3MnLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnYXdzOnJ1blNoZWxsU2NyaXB0JyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnSW5zdGFsbERvY2tlckRuZicsXG4gICAgICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgICAgICBydW5Db21tYW5kOiBbXG4gICAgICAgICAgICAgICAgICAgICcjIS9iaW4vYmFzaCcsXG4gICAgICAgICAgICAgICAgICAgICdkbmYgaW5zdGFsbCAteSBkb2NrZXInLFxuICAgICAgICAgICAgICAgICAgICBgdXNlcm1vZCAtYUcgZG9ja2VyICR7dnNDb2RlVXNlcn1gLFxuICAgICAgICAgICAgICAgICAgICBgc3lzdGVtY3RsIHJlc3RhcnQgY29kZS1zZXJ2ZXJAJHt2c0NvZGVVc2VyfS5zZXJ2aWNlYCxcbiAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWN0bCBzdGFydCBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICdlY2hvIFwiRG9ja2VyIGluc3RhbGxlZC4gQ2hlY2tpbmcgY29uZmlndXJhdGlvblwiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RvY2tlciAtLXZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgICAnc3lzdGVtY3RsIHN0YXR1cyBkb2NrZXIuc2VydmljZScsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdhd3M6cnVuU2hlbGxTY3JpcHQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdJbnN0YWxsR29sYW5nRG5mJyxcbiAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgIHJ1bkNvbW1hbmQ6IFtcbiAgICAgICAgICAgICAgICAgICAgJyMhL2Jpbi9iYXNoJyxcbiAgICAgICAgICAgICAgICAgICAgJ2RuZiBpbnN0YWxsIC15IGdvbGFuZycsXG4gICAgICAgICAgICAgICAgICAgIGBlY2hvICdQQVRIPSRQQVRIOi9ob21lLyR7dnNDb2RlVXNlcn0vZ28vYmluJyA+PiAvaG9tZS8ke3ZzQ29kZVVzZXJ9Ly5iYXNocmNgLFxuICAgICAgICAgICAgICAgICAgICAnZWNobyBcIkdvbGFuZyBpbnN0YWxsZWQuIENoZWNraW5nIGNvbmZpZ3VyYXRpb25cIicsXG4gICAgICAgICAgICAgICAgICAgICdnbyB2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gQWRkIGN1c3RvbSBpbnN0YWxsYXRpb24gc3RlcHMgaWYgcHJvdmlkZWRcbiAgICAgICAgICAgICAgLi4uKGN1c3RvbUluc3RhbGxTdGVwcz8ubWFwKChzdGVwKSA9PiAoe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2F3czpydW5TaGVsbFNjcmlwdCcgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RlcC5uYW1lLFxuICAgICAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICAgICAgcnVuQ29tbWFuZDogc3RlcC5jb21tYW5kcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KSkgPz8gW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIExpbnV4IGZsYXZvcjogJHtsaW51eEZsYXZvcn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3NtRG9jdW1lbnQ7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlSW5zdGFsbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZWMyIGluc3RhbmNlIGlkIHRvIGluc3RhbGwgdGhlIHNzbSBkb2N1bWVudCBvblxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3VzdG9tIHNzbSBkb2N1bWVudCB0byBpbnN0YWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjbG91ZHdhdGNoIGxvZyBncm91cCBmb3IgdGhlIGluc3RhbGwgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRXYXRjaExvZ0dyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVVc2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgdXNlciB1bmRlciB3aGljaCB0aGUgdnNjb2RlIHNlcnZlciBydW5zXG4gICAqL1xuICByZWFkb25seSB2c0NvZGVQYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9tZSBmb2xkZXIgb2YgdGhlIHVzZXIgdW5kZXIgd2hpY2ggdGhlIHZzY29kZSBzZXJ2ZXIgcnVuc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9tZUZvbGRlcjogc3RyaW5nO1xufVxuXG5jbGFzcyBDdXN0b21SZXNvdXJjZUluc3RhbGxlciBleHRlbmRzIEluc3RhbGxlciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IEN1c3RvbVJlc291cmNlSW5zdGFsbGVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBvbkV2ZW50OiBGdW5jdGlvbiA9IG5ldyBJbnN0YWxsZXJGdW5jdGlvbihcbiAgICAgIHNjb3BlLFxuICAgICAgJ0luc3RhbGxlck9uRXZlbnRIYW5kbGVyJyxcbiAgICAgIHtcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksIC8vIDE1IG1pbnV0ZXMgdG8gYWxsb3cgZm9yIFZTIENvZGUgU2VydmVyIGluc3RhbGxhdGlvblxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsIC8vIFRPRE8gY29uZmlndXJhYmxlXG4gICAgICB9LFxuICAgICk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW29uRXZlbnRdLFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ0ZvciB0aGlzIGV2ZW50IGhhbmRsZXIgd2UgZG8gbm90IG5lZWQgdG8gcmVzdHJpY3QgbWFuYWdlZCBwb2xpY2llcycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgbGFtYmRhIHRoZSBsYXRlc3QgcnVudGltZSBpcyBub3QgbmVlZGVkJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBkb2N1bWVudEFybiA9IEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6ICdzc20nLFxuICAgICAgICByZXNvdXJjZTogJ2RvY3VtZW50JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBvcHRpb25zLmRvY3VtZW50TmFtZSxcbiAgICAgIH0sXG4gICAgICBTdGFjay5vZihzY29wZSksXG4gICAgKTtcblxuICAgIGNvbnN0IGN3TWFuYWdlQWdlbnRBcm4gPSBBcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiAnc3NtJyxcbiAgICAgICAgcmVzb3VyY2U6ICdkb2N1bWVudCcsXG4gICAgICAgIHJlc291cmNlTmFtZTogJ0FtYXpvbkNsb3VkV2F0Y2gtTWFuYWdlQWdlbnQnLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgY29uc3QgdGFyZ2V0RWMySW5zdGFuY2VBcm4gPSBBcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbnN0YW5jZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogb3B0aW9ucy5pbnN0YW5jZUlkLFxuICAgICAgfSxcbiAgICAgIFN0YWNrLm9mKHNjb3BlKSxcbiAgICApO1xuXG4gICAgLy8gU2VuZENvbW1hbmQgc3VwcG9ydHMgcmVzb3VyY2UtbGV2ZWwgcGVybWlzc2lvbnNcbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3NzbTpTZW5kQ29tbWFuZCddLFxuICAgICAgICByZXNvdXJjZXM6IFtkb2N1bWVudEFybiwgY3dNYW5hZ2VBZ2VudEFybiwgdGFyZ2V0RWMySW5zdGFuY2VBcm5dLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIEdldENvbW1hbmRJbnZvY2F0aW9uIGFuZCBMaXN0Q29tbWFuZEludm9jYXRpb25zIHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzXG4gICAgLy8gVGhleSBkb24ndCBzdXBwb3J0IHJlc291cmNlLWxldmVsIHBlcm1pc3Npb25zXG4gICAgb25FdmVudC5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzc206R2V0Q29tbWFuZEludm9jYXRpb24nLCAnc3NtOkxpc3RDb21tYW5kSW52b2NhdGlvbnMnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBTdXBwcmVzcyBjZGstbmFnIHdhcm5pbmcgZm9yIHdpbGRjYXJkIHBlcm1pc3Npb25zIG9uIEdldENvbW1hbmRJbnZvY2F0aW9uXG4gICAgLy8gVGhlc2UgU1NNIGFjdGlvbnMgZG9uJ3Qgc3VwcG9ydCByZXNvdXJjZS1sZXZlbCBwZXJtaXNzaW9ucyBwZXIgQVdTIGRvY3VtZW50YXRpb25cbiAgICBOYWdTdXBwcmVzc2lvbnMuYWRkUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICBvbkV2ZW50LFxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsXG4gICAgICAgICAgcmVhc29uOlxuICAgICAgICAgICAgJ3NzbTpHZXRDb21tYW5kSW52b2NhdGlvbiBhbmQgc3NtOkxpc3RDb21tYW5kSW52b2NhdGlvbnMgZG8gbm90IHN1cHBvcnQgcmVzb3VyY2UtbGV2ZWwgcGVybWlzc2lvbnMgYW5kIHJlcXVpcmUgd2lsZGNhcmQgcmVzb3VyY2VzJyxcbiAgICAgICAgICBhcHBsaWVzVG86IFsnUmVzb3VyY2U6OionXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcihzY29wZSwgJ0luc3RhbGxlclByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnQsXG4gICAgfSk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFxuICAgICAgW3Byb3ZpZGVyXSxcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLFxuICAgICAgICAgIHJlYXNvbjpcbiAgICAgICAgICAgICdGb3IgdGhpcyBwcm92aWRlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgICAgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZShzY29wZSwgJ1NTTUluc3RhbGxlckN1c3RvbVJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFNlcnZpY2VUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KS50b1NlY29uZHMoKSArIDUsIC8vIExhbWJkYSB0aW1lb3V0ICsgNSBzZWNvbmRzIGJ1ZmZlclxuICAgICAgICBJbnN0YW5jZUlkOiBvcHRpb25zLmluc3RhbmNlSWQsXG4gICAgICAgIERvY3VtZW50TmFtZTogb3B0aW9ucy5kb2N1bWVudE5hbWUsXG4gICAgICAgIENsb3VkV2F0Y2hMb2dHcm91cE5hbWU6IG9wdGlvbnMuY2xvdWRXYXRjaExvZ0dyb3VwTmFtZSxcbiAgICAgICAgVlNDb2RlUGFzc3dvcmQ6IG9wdGlvbnMudnNDb2RlUGFzc3dvcmQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKCkge31cbn1cbiJdfQ==
|
package/lib/vscode-server.js
CHANGED
|
@@ -648,7 +648,7 @@ class VSCodeServer extends constructs_1.Construct {
|
|
|
648
648
|
}
|
|
649
649
|
exports.VSCodeServer = VSCodeServer;
|
|
650
650
|
_a = JSII_RTTI_SYMBOL_1;
|
|
651
|
-
VSCodeServer[_a] = { fqn: "@mavogel/cdk-vscode-server.VSCodeServer", version: "0.0.
|
|
651
|
+
VSCodeServer[_a] = { fqn: "@mavogel/cdk-vscode-server.VSCodeServer", version: "0.0.80" };
|
|
652
652
|
/**
|
|
653
653
|
* Tags all the resources in the construct
|
|
654
654
|
*/
|
|
@@ -3,11 +3,11 @@ module github.com/MV-Consulting/cdk-vscode-server/mavogelcdkvscodeserver
|
|
|
3
3
|
go 1.23
|
|
4
4
|
|
|
5
5
|
require (
|
|
6
|
-
github.com/aws/jsii-runtime-go v1.
|
|
6
|
+
github.com/aws/jsii-runtime-go v1.129.0
|
|
7
7
|
github.com/MV-Consulting/mvc-projen/mavogelmvcprojen v0.0.25
|
|
8
|
-
github.com/aws/aws-cdk-go/awscdk/v2 v2.
|
|
8
|
+
github.com/aws/aws-cdk-go/awscdk/v2 v2.253.0
|
|
9
9
|
github.com/cdklabs/cdk-nag-go/cdknag/v2 v2.38.2
|
|
10
|
-
github.com/aws/constructs-go/constructs/v10 v10.
|
|
10
|
+
github.com/aws/constructs-go/constructs/v10 v10.6.0
|
|
11
11
|
github.com/projen/projen-go/projen v0.91.8 // indirect
|
|
12
12
|
github.com/cdklabs/awscdk-asset-awscli-go/awscliv1/v2 v2.2.242 // indirect
|
|
13
13
|
github.com/cdklabs/awscdk-asset-node-proxy-agent-go/nodeproxyagentv6/v2 v2.1.0 // indirect
|
package/package.json
CHANGED
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@aws-cdk/integ-runner": "2.190.0",
|
|
52
52
|
"@aws-cdk/integ-tests-alpha": "2.190.0-alpha.0",
|
|
53
|
-
"@aws-sdk/client-cloudwatch": "^3.
|
|
54
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
55
|
-
"@aws-sdk/client-ec2": "^3.
|
|
56
|
-
"@aws-sdk/client-eventbridge": "^3.
|
|
57
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
|
58
|
-
"@aws-sdk/client-ssm": "^3.
|
|
59
|
-
"@aws-sdk/lib-dynamodb": "^3.
|
|
53
|
+
"@aws-sdk/client-cloudwatch": "^3.1044.0",
|
|
54
|
+
"@aws-sdk/client-dynamodb": "^3.1044.0",
|
|
55
|
+
"@aws-sdk/client-ec2": "^3.1044.0",
|
|
56
|
+
"@aws-sdk/client-eventbridge": "^3.1044.0",
|
|
57
|
+
"@aws-sdk/client-secrets-manager": "^3.1044.0",
|
|
58
|
+
"@aws-sdk/client-ssm": "^3.1044.0",
|
|
59
|
+
"@aws-sdk/lib-dynamodb": "^3.1044.0",
|
|
60
60
|
"@commitlint/cli": "^20.1.0",
|
|
61
61
|
"@commitlint/config-conventional": "^20.0.0",
|
|
62
62
|
"@stylistic/eslint-plugin": "^2",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"jsii-docgen": "^10.5.0",
|
|
82
82
|
"jsii-pacmak": "^1.129.0",
|
|
83
83
|
"jsii-rosetta": "~5.9.0",
|
|
84
|
-
"projen": "0.99.
|
|
84
|
+
"projen": "0.99.53",
|
|
85
85
|
"ts-jest": "^29.4.9",
|
|
86
86
|
"ts-node": "^10.9.2",
|
|
87
87
|
"typescript": "^6.0.3"
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"publishConfig": {
|
|
121
121
|
"access": "public"
|
|
122
122
|
},
|
|
123
|
-
"version": "0.0.
|
|
123
|
+
"version": "0.0.80",
|
|
124
124
|
"jest": {
|
|
125
125
|
"coverageProvider": "v8",
|
|
126
126
|
"testMatch": [
|