@cdklabs/cdk-appmod-catalog-blueprints 1.0.0 → 1.0.1

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.
@@ -54,6 +54,7 @@ class AgenticDocumentProcessing extends bedrock_document_processing_1.BedrockDoc
54
54
  functionName: 'agentic-idp-processing',
55
55
  region,
56
56
  scope: this,
57
+ enableObservability: this.bedrockDocumentProcessingProps.enableObservability,
57
58
  });
58
59
  const agenticFunction = new aws_lambda_python_alpha_1.PythonFunction(this, 'ProcessingAgentFunction', {
59
60
  functionName: generatedLogPermissions.uniqueFunctionName,
@@ -86,5 +87,5 @@ class AgenticDocumentProcessing extends bedrock_document_processing_1.BedrockDoc
86
87
  }
87
88
  exports.AgenticDocumentProcessing = AgenticDocumentProcessing;
88
89
  _a = JSII_RTTI_SYMBOL_1;
89
- AgenticDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.AgenticDocumentProcessing", version: "1.0.0" };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5QyxpREFBOEQ7QUFDOUQsdURBQW9FO0FBQ3BFLGlGQUFtRTtBQUduRSwrRUFBMEc7QUFDMUcsNENBQStDO0FBQy9DLDRDQUE4QztBQUM5QyxvRkFBZ0Y7QUFZaEYsTUFBYSx5QkFBMEIsU0FBUSx1REFBeUI7SUFDdEUsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsY0FBYztRQUN0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsOEJBQWdFLENBQUM7UUFDekYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGlCQUFpQixJQUFJLHVEQUF5QixDQUFDLDJCQUEyQixDQUFDO1FBQy9ILE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2hLLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSx5QkFBZSxDQUFDO1lBQzVDLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFO2dCQUNQLGVBQWU7YUFDaEI7WUFDRCxTQUFTLEVBQUU7Z0JB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SSxFQUFFLG9CQUFvQixDQUFDLDBCQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFRCxPQUFPLElBQUksc0NBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDOUMsY0FBYyxFQUFFLGVBQWU7WUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxjQUFjLEVBQUU7Z0JBQ2QsVUFBVSxFQUFFLGtCQUFrQjthQUMvQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBcEZILDhEQXFGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB5dGhvbkZ1bmN0aW9uIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYS1weXRob24tYWxwaGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgTGF5ZXJWZXJzaW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBMYW1iZGFJbnZva2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIH0gZnJvbSAnLi9iYXNlLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZywgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIH0gZnJvbSAnLi9iZWRyb2NrLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgRGVmYXVsdFJ1bnRpbWVzIH0gZnJvbSAnLi4vZnJhbWV3b3JrJztcbmltcG9ydCB7IExhbWJkYUlhbVV0aWxzIH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IFBvd2VydG9vbHNDb25maWcgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9wb3dlcnRvb2xzLWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRQcm9wcyB7XG4gIHJlYWRvbmx5IGFnZW50U3lzdGVtUHJvbXB0Pzogc3RyaW5nO1xuICByZWFkb25seSB0b29sc0xvY2F0aW9uPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGxhbWJkYUxheWVycz86IExheWVyVmVyc2lvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50aWNEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyBleHRlbmRzIEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyB7XG4gIHJlYWRvbmx5IHByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/OiBBZ2VudFByb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZyBleHRlbmRzIEJlZHJvY2tEb2N1bWVudFByb2Nlc3Npbmcge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIGNvbnN0IGFnZW50UHJvcHMgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyBhcyBBZ2VudGljRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHM7XG4gICAgY29uc3QgZm1Nb2RlbCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnByb2Nlc3NpbmdNb2RlbElkIHx8IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcuREVGQVVMVF9QUk9DRVNTSU5HX01PREVMX0lEO1xuICAgIGNvbnN0IGFkanVzdGVkTW9kZWxJZCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnVzZUNyb3NzUmVnaW9uSW5mZXJlbmNlID8gYCR7dGhpcy5jcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeH0uJHtmbU1vZGVsLm1vZGVsSWR9YCA6IGZtTW9kZWwubW9kZWxJZDtcbiAgICBjb25zdCByb2xlID0gdGhpcy5nZW5lcmF0ZUxhbWJkYVJvbGVGb3JCZWRyb2NrKGZtTW9kZWwsICdQcm9jZXNzaW5nQWdlbnRMYW1iZGFSb2xlJyk7XG4gICAgcm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnczM6TGlzdEJ1Y2tldCcsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIHRoaXMuYnVja2V0LmJ1Y2tldEFybixcbiAgICAgIF0sXG4gICAgfSkpO1xuICAgIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzOlJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBNT0RFTF9JRDogYWRqdXN0ZWRNb2RlbElkLFxuICAgICAgSU5WT0tFX1RZUEU6ICdhZ2VudCcsXG4gICAgICAuLi5Qb3dlcnRvb2xzQ29uZmlnLmdlbmVyYXRlRGVmYXVsdExhbWJkYUNvbmZpZyhcbiAgICAgICAgdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSxcbiAgICAgICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgIHRoaXMubWV0cmljU2VydmljZU5hbWUsXG4gICAgICApLFxuICAgIH07XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICBpZiAodGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICB9XG5cbiAgICBpZiAoYWdlbnRQcm9wcy5wcm9jZXNzaW5nQWdlbnRQYXJhbWV0ZXJzPy50b29sc0xvY2F0aW9uKSB7XG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5UT09MU19DT05GSUcgPSBKU09OLnN0cmluZ2lmeShhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LnRvb2xzTG9jYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LmFnZW50U3lzdGVtUHJvbXB0KSB7XG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5TWVNURU1fUFJPTVBUID0gYWdlbnRQcm9wcy5wcm9jZXNzaW5nQWdlbnRQYXJhbWV0ZXJzPy5hZ2VudFN5c3RlbVByb21wdDtcbiAgICB9XG5cbiAgICBpZiAoYWdlbnRQcm9wcy5wcm9jZXNzaW5nUHJvbXB0KSB7XG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5QUk9NUFQgPSBhZ2VudFByb3BzLnByb2Nlc3NpbmdQcm9tcHQ7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZWdpb24sIGFjY291bnQgfSA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIGFjY291bnQsXG4gICAgICBmdW5jdGlvbk5hbWU6ICdhZ2VudGljLWlkcC1wcm9jZXNzaW5nJyxcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWdlbnRpY0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdQcm9jZXNzaW5nQWdlbnRGdW5jdGlvbicsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogZ2VuZXJhdGVkTG9nUGVybWlzc2lvbnMudW5pcXVlRnVuY3Rpb25OYW1lLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgZW50cnk6IGAke19fZGlybmFtZX0vcmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudGAsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgbGF5ZXJzOiBhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LmxhbWJkYUxheWVycyxcbiAgICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudFZhcmlhYmxlcyxcbiAgICAgIHJvbGUsXG4gICAgICB0aW1lb3V0OiB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5zdGVwVGltZW91dHMgfHwgRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGFnZW50aWNGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBhZ2VudGljRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnUHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogYWdlbnRpY0Z1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQucHJvY2Vzc2luZ1Jlc3VsdCcsXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAncmVzdWx0LiQnOiAnJC5QYXlsb2FkLnJlc3VsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
90
+ AgenticDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.AgenticDocumentProcessing", version: "1.0.1" };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYWdlbnRpYy1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5QyxpREFBOEQ7QUFDOUQsdURBQW9FO0FBQ3BFLGlGQUFtRTtBQUduRSwrRUFBMEc7QUFDMUcsNENBQStDO0FBQy9DLDRDQUE4QztBQUM5QyxvRkFBZ0Y7QUFZaEYsTUFBYSx5QkFBMEIsU0FBUSx1REFBeUI7SUFDdEUsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM3RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsY0FBYztRQUN0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsOEJBQWdFLENBQUM7UUFDekYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGlCQUFpQixJQUFJLHVEQUF5QixDQUFDLDJCQUEyQixDQUFDO1FBQy9ILE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2hLLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSx5QkFBZSxDQUFDO1lBQzVDLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFO2dCQUNQLGVBQWU7YUFDaEI7WUFDRCxTQUFTLEVBQUU7Z0JB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LDhCQUE4QixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hELGVBQWUsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsMEJBQWMsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUVELE9BQU8sSUFBSSxzQ0FBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUM5QyxjQUFjLEVBQUUsZUFBZTtZQUMvQixVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLGNBQWMsRUFBRTtnQkFDZCxVQUFVLEVBQUUsa0JBQWtCO2FBQy9CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFyRkgsOERBc0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHl0aG9uRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBMYXllclZlcnNpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IExhbWJkYUludm9rZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfSBmcm9tICcuL2Jhc2UtZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nLCBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMgfSBmcm9tICcuL2JlZHJvY2stZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBEZWZhdWx0UnVudGltZXMgfSBmcm9tICcuLi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgTGFtYmRhSWFtVXRpbHMgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgUG93ZXJ0b29sc0NvbmZpZyB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L3Bvd2VydG9vbHMtY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFByb3BzIHtcbiAgcmVhZG9ubHkgYWdlbnRTeXN0ZW1Qcm9tcHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2xzTG9jYXRpb24/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgbGFtYmRhTGF5ZXJzPzogTGF5ZXJWZXJzaW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRpY0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIGV4dGVuZHMgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIHtcbiAgcmVhZG9ubHkgcHJvY2Vzc2luZ0FnZW50UGFyYW1ldGVycz86IEFnZW50UHJvcHM7XG59XG5cbmV4cG9ydCBjbGFzcyBBZ2VudGljRG9jdW1lbnRQcm9jZXNzaW5nIGV4dGVuZHMgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBZ2VudGljRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzaW5nU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB7XG4gICAgY29uc3QgYWdlbnRQcm9wcyA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIGFzIEFnZW50aWNEb2N1bWVudFByb2Nlc3NpbmdQcm9wcztcbiAgICBjb25zdCBmbU1vZGVsID0gdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMucHJvY2Vzc2luZ01vZGVsSWQgfHwgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZy5ERUZBVUxUX1BST0NFU1NJTkdfTU9ERUxfSUQ7XG4gICAgY29uc3QgYWRqdXN0ZWRNb2RlbElkID0gdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMudXNlQ3Jvc3NSZWdpb25JbmZlcmVuY2UgPyBgJHt0aGlzLmNyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4fS4ke2ZtTW9kZWwubW9kZWxJZH1gIDogZm1Nb2RlbC5tb2RlbElkO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLmdlbmVyYXRlTGFtYmRhUm9sZUZvckJlZHJvY2soZm1Nb2RlbCwgJ1Byb2Nlc3NpbmdBZ2VudExhbWJkYVJvbGUnKTtcbiAgICByb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdzMzpMaXN0QnVja2V0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgdGhpcy5idWNrZXQuYnVja2V0QXJuLFxuICAgICAgXSxcbiAgICB9KSk7XG4gICAgY29uc3QgZW52aXJvbm1lbnRWYXJpYWJsZXM6UmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIE1PREVMX0lEOiBhZGp1c3RlZE1vZGVsSWQsXG4gICAgICBJTlZPS0VfVFlQRTogJ2FnZW50JyxcbiAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LFxuICAgICAgICB0aGlzLm1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICksXG4gICAgfTtcblxuICAgIHRoaXMuZW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KHJvbGUpO1xuICAgIGlmICh0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMuYnVja2V0RW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KHJvbGUpO1xuICAgIH1cblxuICAgIGlmIChhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LnRvb2xzTG9jYXRpb24pIHtcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLlRPT0xTX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KGFnZW50UHJvcHMucHJvY2Vzc2luZ0FnZW50UGFyYW1ldGVycz8udG9vbHNMb2NhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFnZW50UHJvcHMucHJvY2Vzc2luZ0FnZW50UGFyYW1ldGVycz8uYWdlbnRTeXN0ZW1Qcm9tcHQpIHtcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLlNZU1RFTV9QUk9NUFQgPSBhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LmFnZW50U3lzdGVtUHJvbXB0O1xuICAgIH1cblxuICAgIGlmIChhZ2VudFByb3BzLnByb2Nlc3NpbmdQcm9tcHQpIHtcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLlBST01QVCA9IGFnZW50UHJvcHMucHJvY2Vzc2luZ1Byb21wdDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgZ2VuZXJhdGVkTG9nUGVybWlzc2lvbnMgPSBMYW1iZGFJYW1VdGlscy5jcmVhdGVMb2dzUGVybWlzc2lvbnMoe1xuICAgICAgYWNjb3VudCxcbiAgICAgIGZ1bmN0aW9uTmFtZTogJ2FnZW50aWMtaWRwLXByb2Nlc3NpbmcnLFxuICAgICAgcmVnaW9uLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBlbmFibGVPYnNlcnZhYmlsaXR5OiB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWdlbnRpY0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdQcm9jZXNzaW5nQWdlbnRGdW5jdGlvbicsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogZ2VuZXJhdGVkTG9nUGVybWlzc2lvbnMudW5pcXVlRnVuY3Rpb25OYW1lLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgZW50cnk6IGAke19fZGlybmFtZX0vcmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudGAsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgbGF5ZXJzOiBhZ2VudFByb3BzLnByb2Nlc3NpbmdBZ2VudFBhcmFtZXRlcnM/LmxhbWJkYUxheWVycyxcbiAgICAgIGVudmlyb25tZW50OiBlbnZpcm9ubWVudFZhcmlhYmxlcyxcbiAgICAgIHJvbGUsXG4gICAgICB0aW1lb3V0OiB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5zdGVwVGltZW91dHMgfHwgRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGFnZW50aWNGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBhZ2VudGljRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnUHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogYWdlbnRpY0Z1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQucHJvY2Vzc2luZ1Jlc3VsdCcsXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAncmVzdWx0LiQnOiAnJC5QYXlsb2FkLnJlc3VsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59Il19
@@ -370,6 +370,7 @@ class BaseDocumentProcessing extends constructs_1.Construct {
370
370
  functionName: 'SQSConsumer',
371
371
  region,
372
372
  account,
373
+ enableObservability: this.props.enableObservability,
373
374
  });
374
375
  // Create policy statements for SQS consumer Lambda
375
376
  const policyStatements = [
@@ -505,5 +506,5 @@ class BaseDocumentProcessing extends constructs_1.Construct {
505
506
  }
506
507
  exports.BaseDocumentProcessing = BaseDocumentProcessing;
507
508
  _a = JSII_RTTI_SYMBOL_1;
508
- BaseDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseDocumentProcessing", version: "1.0.0" };
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYmFzZS1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0QyxrQ0FBa0M7QUFDbEMsOEVBQWtFO0FBQ2xFLDZDQUFnRjtBQUVoRiwyREFBOEY7QUFDOUYsaURBQXFFO0FBQ3JFLGlEQUFzRztBQUN0RyxpREFBZ0Q7QUFFaEQsbUZBQXNFO0FBQ3RFLCtDQUF5RTtBQUN6RSwyRUFBa0U7QUFDbEUsaURBQTZEO0FBQzdELHFFQUErSDtBQUMvSCxpRkFBMkw7QUFDM0wsMkNBQXVDO0FBQ3ZDLDRDQUF3RDtBQUV4RCw0Q0FBMkU7QUFDM0UsOEhBQXdIO0FBRXhILG9GQUFnRjtBQUNoRiw0SUFBcUk7QUFpRXJJOzs7Ozs7O0dBT0c7QUFDSCxJQUFZLHdCQU9YO0FBUEQsV0FBWSx3QkFBd0I7SUFDbEMsOERBQThEO0lBQzlELHdDQUFZLENBQUE7SUFDWixrREFBa0Q7SUFDbEQsOENBQWtCLENBQUE7SUFDbEIsa0RBQWtEO0lBQ2xELG9EQUF3QixDQUFBO0FBQzFCLENBQUMsRUFQVyx3QkFBd0Isd0NBQXhCLHdCQUF3QixRQU9uQztBQVFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFzQixzQkFBdUIsU0FBUSxzQkFBUztJQXNCNUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLHdDQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BGLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLHdDQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLHdDQUE4QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9GLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLHdDQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNGLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLHdDQUE4QixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNqRyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSx3Q0FBOEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzVHLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksYUFBRyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM1RSxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztTQUM1RCxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyw0QkFBNEIsbUJBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDNUUsU0FBUyxFQUFFLEVBQUUsR0FBRywyQkFBMkIsQ0FBQyxNQUFNO1NBQ25ELENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixVQUFVLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksMEJBQWdCLENBQUMsa0JBQWtCLEVBQUU7WUFDOUUsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRTtvQkFDVCxrQ0FBa0MsRUFBRSxTQUFTO2lCQUM5QzthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3pFLFVBQVU7WUFDVixpQkFBaUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ2hJLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxVQUFVLEVBQUUseUJBQWdCLENBQUMsR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUVyRCxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSTtZQUNqRSxxQkFBcUIsRUFBRSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzVELGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTzthQUM1RCxDQUFDO1NBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxzQkFBc0IsR0FBRztnQkFDNUIseUJBQXlCLEVBQUUsMEJBQTBCLENBQUMseUJBQXlCO2dCQUMvRSxxQkFBcUIsRUFBRSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7b0JBQzVELGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztpQkFDNUQsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxzQkFBc0IsR0FBRywwQkFBMEIsQ0FBQztRQUMzRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDOUQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN4RSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87WUFDM0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLHlCQUFlLENBQUMsR0FBRztZQUMvQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN0RCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUU7Z0JBQ2YsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDNUI7WUFDRCxVQUFVLEVBQUUseUJBQWUsQ0FBQyxHQUFHO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksSUFBSSxvQkFBSyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN6RyxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxXQUFXLEVBQUUsMEJBQVcsQ0FBQyxlQUFlO1lBQ3hDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxnQ0FBZ0MsRUFBRTtnQkFDaEMsMEJBQTBCLEVBQUUsSUFBSTthQUNqQztZQUNELFVBQVUsRUFBRSw4QkFBZSxDQUFDLGdCQUFnQjtZQUM1QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5QiwrQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUM1QixJQUFJLHlGQUF5QyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxRSxJQUFJLDRFQUFtQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxnQkFBZ0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLHFCQUFxQixDQUFDO0lBQzVFLENBQUM7SUFHUywwQkFBMEIsQ0FBQyxjQUFzQjtRQUN6RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksdUNBQWEsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDckUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7WUFDbkMsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzlFLE1BQU0sRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RFLEdBQUcsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLGNBQWMsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUMxRCxrQkFBa0IsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUMxRjtZQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRTFELE1BQU0sZUFBZSxHQUFHLGNBQWM7YUFDbkMsUUFBUSxDQUFDLElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQy9FO1lBQ0QsZ0JBQWdCLEVBQUUsaUNBQWlDO1lBQ25ELHlCQUF5QixFQUFFO2dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDO2FBQ3BFO1lBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQzthQUNELElBQUksQ0FDSCxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMvRTtZQUNELGdCQUFnQixFQUFFLHVFQUF1RTtZQUN6Rix5QkFBeUIsRUFBRTtnQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDcEUsbUJBQW1CLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsWUFBWSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQzthQUNySDtZQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUNILENBQUM7UUFFSixvREFBb0Q7UUFDcEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixNQUFNLGVBQWUsR0FBRyxjQUFjO2lCQUNuQyxRQUFRLENBQUMsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUU7Z0JBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNuQyxHQUFHLEVBQUU7b0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0U7Z0JBQ0QsZ0JBQWdCLEVBQUUsaUNBQWlDO2dCQUNuRCx5QkFBeUIsRUFBRTtvQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDcEU7Z0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTzthQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNyQixVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2FBQzdCLENBQUM7aUJBQ0QsSUFBSSxDQUNILElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtnQkFDbkMsR0FBRyxFQUFFO29CQUNILFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQy9FO2dCQUNELGdCQUFnQixFQUFFLHVFQUF1RTtnQkFDekYseUJBQXlCLEVBQUU7b0JBQ3pCLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsOENBQW9CLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3ZJLG1CQUFtQixFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7aUJBQ25IO2dCQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQyxDQUNILENBQUM7WUFFSixlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXRDLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0I7cUJBQzNDLFFBQVEsQ0FBQyxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtvQkFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7b0JBQ25DLEdBQUcsRUFBRTt3QkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUMvRTtvQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7b0JBQ25ELHlCQUF5QixFQUFFO3dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO3FCQUN6RTtvQkFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2lCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNyQixVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2lCQUM3QixDQUFDO3FCQUNELElBQUksQ0FDSCxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtvQkFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7b0JBQ25DLEdBQUcsRUFBRTt3QkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUMvRTtvQkFDRCxnQkFBZ0IsRUFBRSwrRUFBK0U7b0JBQ2pHLHlCQUF5QixFQUFFO3dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzt3QkFDekQsdUJBQXVCLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsWUFBWSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztxQkFDNUg7b0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztpQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDekIsQ0FBQztnQkFDSixlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0I7aUJBQzNDLFFBQVEsQ0FBQyxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtnQkFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUMvRTtnQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7Z0JBQ25ELHlCQUF5QixFQUFFO29CQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO2lCQUN6RTtnQkFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2FBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3JCLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQztpQkFDRCxJQUFJLENBQ0gsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7Z0JBQ3hELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNuQyxHQUFHLEVBQUU7b0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0U7Z0JBQ0QsZ0JBQWdCLEVBQUUsK0VBQStFO2dCQUNqRyx5QkFBeUIsRUFBRTtvQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3pELHVCQUF1QixFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7aUJBQzVIO2dCQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDekIsQ0FBQztZQUNKLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHdEQUF3RDtZQUN4RCxlQUFlLENBQUMsSUFBSSxDQUNsQixJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtnQkFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUMvRTtnQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7Z0JBQ25ELHlCQUF5QixFQUFFO29CQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztpQkFDMUQ7Z0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTzthQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUMvQyxrQkFBa0I7YUFDZixRQUFRLENBQUMsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7WUFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7WUFDbkMsR0FBRyxFQUFFO2dCQUNILFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDL0U7WUFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7WUFDbkQseUJBQXlCLEVBQUU7Z0JBQ3pCLFlBQVksRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUM7YUFDeEU7WUFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckIsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDO2FBQ0QsSUFBSSxDQUNILElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFFO1lBQ3hELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQy9FO1lBQ0QsZ0JBQWdCLEVBQUUsK0VBQStFO1lBQ2pHLHlCQUF5QixFQUFFO2dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RSx1QkFBdUIsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxZQUFZLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO2FBQzdIO1lBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQ0gsQ0FDSixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUMxRCxjQUFjLEVBQUUsa0NBQWMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDaEUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJO1lBQ0osdUJBQXVCLEVBQUUsSUFBSSwwREFBc0MsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3hGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRVMscUJBQXFCLENBQUMsWUFBMEI7UUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBUyxDQUFDLGNBQWMsRUFBRSxJQUFJLHFDQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pGLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxHQUFHO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsWUFBMEI7UUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRywwQkFBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCx1REFBdUQ7UUFDdkQsTUFBTSxlQUFlLEdBQUcsMEJBQWMsQ0FBQyxxQkFBcUIsQ0FBQztZQUMzRCxLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxhQUFhO1lBQzNCLE1BQU07WUFDTixPQUFPO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsbURBQW1EO1FBQ25ELE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxlQUFlLENBQUMsZ0JBQWdCO1lBQ25DLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7YUFDMUMsQ0FBQztTQUNILENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDBCQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELGNBQWMsRUFBRTtnQkFDZCwwQkFBMEIsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQzdDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEQsc0NBQXNDO1FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDaEUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxrQkFBa0I7WUFDaEQsT0FBTyxFQUFFLDJCQUFlLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUNBQWlDLENBQUM7WUFDOUQsV0FBVyxFQUFFO2dCQUNYLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxlQUFlO2dCQUMvQyxHQUFHLG9DQUFnQixDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDOUg7WUFDRCxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxzRkFBc0Y7WUFDbkcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDekMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDNUQsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdGLENBQUMsQ0FBQztRQUVILGlDQUFpQztRQUNqQyxpQkFBaUIsQ0FBQyxjQUFjLENBQzlCLElBQUkseUNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzdCLFNBQVMsRUFBRSxFQUFFO1lBQ2IsaUJBQWlCLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLHVCQUF1QixFQUFFLElBQUk7U0FDOUIsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDeEMsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsY0FBYyxFQUFFO2dCQUNkLDJCQUEyQixFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDOUMsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLENBQUM7NEJBQzdFLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQzt5QkFDMUMsQ0FBQzt3QkFDRixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7NEJBQ3BCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDOzRCQUNwRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDO3lCQUNuRCxDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDM0QsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsWUFBWTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsVUFBVSxFQUFFLDRCQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0YsR0FBRyxFQUFFLDRCQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNuRTtZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQ0wsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEMsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsY0FBYztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsR0FBRyxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUNoQztZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsV0FBVyxDQUFDLElBQUksQ0FDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsNEJBQTRCLEVBQzVCO2dCQUNFLFVBQVUsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLE1BQU0sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7YUFDMUMsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLHdDQUFjLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pFLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLFlBQVk7WUFDcEIsVUFBVSxFQUFFO2dCQUNWLE1BQU0sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JDLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9GLEdBQUcsRUFBRSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEU7WUFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDNUMsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQUMsSUFBSSxDQUNMLElBQUksd0NBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDL0MsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsY0FBYztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsR0FBRyxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUNoQztZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsY0FBYyxDQUFDLElBQUksQ0FDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQzFDLCtCQUErQixFQUMvQjtnQkFDRSxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxNQUFNLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxRQUFRLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUN6QyxjQUFjLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsK0NBQStDLENBQUM7YUFDbkYsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O0FBbmhCSCx3REE0akJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBQeXRob25GdW5jdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBOYW1lcywgUHJvcGVydHlJbmplY3RvcnMsIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJTWV0cmljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQXR0cmlidXRlVHlwZSwgQmlsbGluZ01vZGUsIFRhYmxlLCBUYWJsZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElLZXksIEtleSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJ1Y2tldCwgQnVja2V0RW5jcnlwdGlvbiwgRXZlbnRUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFNxc0Rlc3RpbmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24sIERlZmluaXRpb25Cb2R5LCBKc29uUGF0aCwgU3RhdGVNYWNoaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0IHsgQmVkcm9ja0ludm9rZU1vZGVsLCBEeW5hbW9BdHRyaWJ1dGVWYWx1ZSwgRHluYW1vUHV0SXRlbSwgRHluYW1vVXBkYXRlSXRlbSwgTGFtYmRhSW52b2tlLCBDYWxsQXdzU2VydmljZSwgU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEZWZhdWx0UnVudGltZXMsIE5ldHdvcmsgfSBmcm9tICcuLi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgRXZlbnRicmlkZ2VCcm9rZXIgfSBmcm9tICcuLi9mcmFtZXdvcmsvZm91bmRhdGlvbi9ldmVudGJyaWRnZS1icm9rZXInO1xuaW1wb3J0IHsgTGFtYmRhSWFtVXRpbHMsIExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcyB9IGZyb20gJy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L2xhbWJkYS1vYnNlcnZhYmlsaXR5LXByb3BlcnR5LWluamVjdG9yJztcbmltcG9ydCB7IElPYnNlcnZhYmxlLCBPYnNlcnZhYmxlUHJvcHMgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9vYnNlcnZhYmxlJztcbmltcG9ydCB7IFBvd2VydG9vbHNDb25maWcgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9wb3dlcnRvb2xzLWNvbmZpZyc7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmVPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L3N0YXRlLW1hY2hpbmUtb2JzZXJ2YWJpbGl0eS1wcm9wZXJ0eS1pbmplY3Rvcic7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMgZXh0ZW5kcyBPYnNlcnZhYmxlUHJvcHMge1xuICAvKipcbiAgICogUzMgYnVja2V0IGZvciBkb2N1bWVudCBzdG9yYWdlIHdpdGggb3JnYW5pemVkIHByZWZpeGVzIChyYXcvLCBwcm9jZXNzZWQvLCBmYWlsZWQvKS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5ldyBidWNrZXQgd2lsbCBiZSBjcmVhdGVkIHdpdGggYXV0by1kZWxldGUgZW5hYmxlZCBiYXNlZCBvbiByZW1vdmFsUG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0PzogQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIHN0b3JpbmcgZG9jdW1lbnQgcHJvY2Vzc2luZyBtZXRhZGF0YSBhbmQgd29ya2Zsb3cgc3RhdGUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYSBuZXcgdGFibGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggRG9jdW1lbnRJZCBhcyBwYXJ0aXRpb24ga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRQcm9jZXNzaW5nVGFibGU/OiBUYWJsZTtcbiAgLyoqXG4gICAqIFNRUyBxdWV1ZSB2aXNpYmlsaXR5IHRpbWVvdXQgZm9yIHByb2Nlc3NpbmcgbWVzc2FnZXMuXG4gICAqIFNob3VsZCBiZSBsb25nZXIgdGhhbiBleHBlY3RlZCBwcm9jZXNzaW5nIHRpbWUgdG8gcHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZy5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygzMDApXG4gICAqL1xuICByZWFkb25seSBxdWV1ZVZpc2liaWxpdHlUaW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgYSBtZXNzYWdlIGNhbiBiZSB1bnN1Y2Nlc3NmdWxseSBkZXF1ZXVlZCBiZWZvcmUgYmVpbmcgbW92ZWQgdG8gdGhlIGRlYWQtbGV0dGVyIHF1ZXVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICByZWFkb25seSBkbHFNYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gZXhlY3V0aW9uIHRpbWUgZm9yIHRoZSBTdGVwIEZ1bmN0aW9ucyB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcygzMClcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VGltZW91dD86IER1cmF0aW9uO1xuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIGNyZWF0ZWQgcmVzb3VyY2VzIChidWNrZXQsIHRhYmxlLCBxdWV1ZSkuXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBFdmVudEJyaWRnZSBicm9rZXIgZm9yIHB1Ymxpc2hpbmcgY3VzdG9tIGV2ZW50cyBkdXJpbmcgcHJvY2Vzc2luZy5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBubyBjdXN0b20gZXZlbnRzIHdpbGwgYmUgc2VudCBvdXQuXG4gICAqL1xuICByZWFkb25seSBldmVudGJyaWRnZUJyb2tlcj86IEV2ZW50YnJpZGdlQnJva2VyO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgbG9nZ2luZyBhbmQgdHJhY2luZyBmb3IgYWxsIHN1cHBvcnRpbmcgcmVzb3VyY2VcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZXMgdGhhdCBjYW4gcnVuIGluc2lkZSBhIFZQQyB3aWxsIGZvbGxvdyB0aGUgcHJvdmlkZWQgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IHJlc291cmNlcyB3aWxsIHJ1biBvdXRzaWRlIG9mIGEgVlBDXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29yaztcblxuICAvKipcbiAgICogS01TIGtleSB0byBiZSB1c2VkLlxuICAgKiBAZGVmYXVsdCBBIG5ldyBrZXkgd291bGQgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IEtleTtcbn1cblxuLyoqXG4gKiBTMyBwcmVmaXggY29uc3RhbnRzIGZvciBvcmdhbml6aW5nIGRvY3VtZW50cyB0aHJvdWdob3V0IHRoZSBwcm9jZXNzaW5nIGxpZmVjeWNsZS5cbiAqXG4gKiBEb2N1bWVudHMgZmxvdyB0aHJvdWdoIHRoZXNlIHByZWZpeGVzIGJhc2VkIG9uIHByb2Nlc3Npbmcgb3V0Y29tZXM6XG4gKiAtIFVwbG9hZCDihpIgcmF3LyAodHJpZ2dlcnMgcHJvY2Vzc2luZylcbiAqIC0gU3VjY2VzcyDihpIgcHJvY2Vzc2VkLyAod29ya2Zsb3cgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSlcbiAqIC0gRmFpbHVyZSDihpIgZmFpbGVkLyAod29ya2Zsb3cgZW5jb3VudGVyZWQgZXJyb3JzKVxuICovXG5leHBvcnQgZW51bSBEb2N1bWVudFByb2Nlc3NpbmdQcmVmaXgge1xuICAvKiogUHJlZml4IGZvciBuZXdseSB1cGxvYWRlZCBkb2N1bWVudHMgYXdhaXRpbmcgcHJvY2Vzc2luZyAqL1xuICBSQVcgPSAncmF3LycsXG4gIC8qKiBQcmVmaXggZm9yIGRvY3VtZW50cyB0aGF0IGZhaWxlZCBwcm9jZXNzaW5nICovXG4gIEZBSUxFRCA9ICdmYWlsZWQvJyxcbiAgLyoqIFByZWZpeCBmb3Igc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBkb2N1bWVudHMgKi9cbiAgUFJPQ0VTU0VEID0gJ3Byb2Nlc3NlZC8nLFxufVxuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIFN0ZXAgRnVuY3Rpb25zIHRhc2tzIHRoYXQgY2FuIGJlIHVzZWQgaW4gZG9jdW1lbnQgcHJvY2Vzc2luZyB3b3JrZmxvd3MuXG4gKiBTdXBwb3J0cyBCZWRyb2NrIG1vZGVsIGludm9jYXRpb24sIExhbWJkYSBmdW5jdGlvbiBpbnZvY2F0aW9uLCBhbmQgbmVzdGVkIFN0ZXAgRnVuY3Rpb25zIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgPSBCZWRyb2NrSW52b2tlTW9kZWwgfCBMYW1iZGFJbnZva2UgfCBTdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb247XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3Igc2VydmVybGVzcyBkb2N1bWVudCBwcm9jZXNzaW5nIHdvcmtmbG93cy5cbiAqXG4gKiBQcm92aWRlcyBhIGNvbXBsZXRlIGRvY3VtZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgd2l0aDpcbiAqIC0gKipTMyBTdG9yYWdlKio6IE9yZ2FuaXplZCB3aXRoIHByZWZpeGVzIChyYXcvLCBwcm9jZXNzZWQvLCBmYWlsZWQvKSBmb3IgZG9jdW1lbnQgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAqIC0gKipTUVMgUXVldWUqKjogUmVsaWFibGUgbWVzc2FnZSBwcm9jZXNzaW5nIHdpdGggY29uZmlndXJhYmxlIHZpc2liaWxpdHkgdGltZW91dCBhbmQgZGVhZCBsZXR0ZXIgcXVldWVcbiAqIC0gKipEeW5hbW9EQiBUYWJsZSoqOiBXb3JrZmxvdyBtZXRhZGF0YSB0cmFja2luZyB3aXRoIERvY3VtZW50SWQgYXMgcGFydGl0aW9uIGtleVxuICogLSAqKlN0ZXAgRnVuY3Rpb25zKio6IE9yY2hlc3RyYXRlZCB3b3JrZmxvdyB3aXRoIGF1dG9tYXRpYyBmaWxlIG1vdmVtZW50IGJhc2VkIG9uIHByb2Nlc3Npbmcgb3V0Y29tZVxuICogLSAqKkF1dG8tdHJpZ2dlcmluZyoqOiBTMyBldmVudCBub3RpZmljYXRpb25zIGF1dG9tYXRpY2FsbHkgc3RhcnQgcHJvY2Vzc2luZyB3aGVuIGZpbGVzIGFyZSB1cGxvYWRlZCB0byByYXcvIHByZWZpeFxuICogLSAqKkVycm9yIEhhbmRsaW5nKio6IEZhaWxlZCBkb2N1bWVudHMgYXJlIG1vdmVkIHRvIGZhaWxlZC8gcHJlZml4IHdpdGggZXJyb3IgZGV0YWlscyBzdG9yZWQgaW4gRHluYW1vREJcbiAqIC0gKipFdmVudEJyaWRnZSBJbnRlZ3JhdGlvbioqOiBPcHRpb25hbCBjdXN0b20gZXZlbnQgcHVibGlzaGluZyBmb3Igd29ya2Zsb3cgc3RhdGUgY2hhbmdlc1xuICpcbiAqICMjIEFyY2hpdGVjdHVyZSBGbG93XG4gKiBTMyBVcGxvYWQgKHJhdy8pIOKGkiBTUVMg4oaSIExhbWJkYSBDb25zdW1lciDihpIgU3RlcCBGdW5jdGlvbnMg4oaSIFByb2Nlc3NpbmcgU3RlcHMg4oaSIFMzIChwcm9jZXNzZWQvZmFpbGVkLylcbiAqXG4gKiAjIyBJbXBsZW1lbnRhdGlvbiBSZXF1aXJlbWVudHNcbiAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgZm91ciBhYnN0cmFjdCBtZXRob2RzIHRvIGRlZmluZSB0aGUgcHJvY2Vzc2luZyB3b3JrZmxvdzpcbiAqIC0gYGNsYXNzaWZpY2F0aW9uU3RlcCgpYDogRG9jdW1lbnQgdHlwZSBjbGFzc2lmaWNhdGlvblxuICogLSBgZXh0cmFjdGlvblN0ZXAoKWA6IERhdGEgZXh0cmFjdGlvbiBmcm9tIGRvY3VtZW50c1xuICogLSBgZW5yaWNobWVudFN0ZXAoKWA6IE9wdGlvbmFsIGRhdGEgZW5yaWNobWVudCAocmV0dXJuIHVuZGVmaW5lZCB0byBza2lwKVxuICogLSBgcG9zdFByb2Nlc3NpbmdTdGVwKClgOiBPcHRpb25hbCBwb3N0LXByb2Nlc3NpbmcgKHJldHVybiB1bmRlZmluZWQgdG8gc2tpcClcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEb2N1bWVudFByb2Nlc3NpbmcgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJT2JzZXJ2YWJsZSB7XG4gIC8qKiBCdXNpbmVzcyBtZXRyaWMgc2VydmljZSBuYW1lLiBUaGlzIGlzIHBhcnQgb2YgdGhlIGluaXRpYWwgc2VydmljZSBkaW1lbnNpb24gKi9cbiAgcmVhZG9ubHkgbWV0cmljU2VydmljZU5hbWU6IHN0cmluZztcbiAgLyoqIEJ1c2luZXNzIG1ldHJpYyBuYW1lc3BhY2UuICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZTogc3RyaW5nO1xuICAvKiogbG9nIGdyb3VwIGRhdGEgcHJvdGVjdGlvbiBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwRGF0YVByb3RlY3Rpb246IExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcztcbiAgLyoqIFMzIGJ1Y2tldCBmb3IgZG9jdW1lbnQgc3RvcmFnZSB3aXRoIG9yZ2FuaXplZCBwcmVmaXhlcyAocmF3LywgcHJvY2Vzc2VkLywgZmFpbGVkLykgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIC8qKiBTUVMgcXVldWUgZm9yIHJlbGlhYmxlIG1lc3NhZ2UgcHJvY2Vzc2luZyB3aXRoIGRlYWQgbGV0dGVyIHF1ZXVlIHN1cHBvcnQgKi9cbiAgcmVhZG9ubHkgcXVldWU6IFF1ZXVlO1xuICAvKiogRHluYW1vREIgdGFibGUgZm9yIHN0b3JpbmcgZG9jdW1lbnQgcHJvY2Vzc2luZyBtZXRhZGF0YSBhbmQgd29ya2Zsb3cgc3RhdGUgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRQcm9jZXNzaW5nVGFibGU6IFRhYmxlO1xuICAvKiogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHM7XG4gIC8qKiBEZWFkIGxldHRlciBxdWV1ZSAgKi9cbiAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlOiBRdWV1ZTtcbiAgLyoqIEtNUyBrZXkgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleTogS2V5O1xuICAvKiogRW5jcnlwdGlvbiBrZXkgdXNlZCBieSB0aGUgRG9jdW1lbnRQcm9jZXNzaW5nQnVja2V0ICovXG4gIHJlYWRvbmx5IGJ1Y2tldEVuY3J5cHRpb25LZXk/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJhc2VEb2N1bWVudFByb2Nlc3NpbmcgY29uc3RydWN0LlxuICAgKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcGxldGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBpbmZyYXN0cnVjdHVyZSBpbmNsdWRpbmcgUzMgYnVja2V0LFxuICAgKiBTUVMgcXVldWUsIER5bmFtb0RCIHRhYmxlLCBhbmQgc2V0cyB1cCBTMyBldmVudCBub3RpZmljYXRpb25zIHRvIHRyaWdnZXIgcHJvY2Vzc2luZy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS5cbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VEb2N1bWVudFByb2Nlc3NpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIGlmIChwcm9wcy5uZXR3b3JrKSB7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1zcXMnLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1FTKTtcbiAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLXMzJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzKTtcbiAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLXNmbicsIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TVEVQX0ZVTkNUSU9OUyk7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1lYicsIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FVkVOVEJSSURHRSk7XG4gICAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1sb2dzJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyk7XG4gICAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLW1ldHJpY3MnLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQ0xPVURXQVRDSF9NT05JVE9SSU5HKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5IHx8IG5ldyBLZXkodGhpcywgJ0lEUEVuY3J5cHRpb25LZXknLCB7XG4gICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnVja2V0TmFtZSA9IGBkb2N1bWVudHByb2Nlc3NpbmdidWNrZXQtJHtOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiA2MCAtICdkb2N1bWVudHByb2Nlc3NpbmdidWNrZXQtJy5sZW5ndGgsXG4gICAgfSl9YC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgYnVja2V0QXJuID0gYGFybjphd3M6czM6Ojoke2J1Y2tldE5hbWV9YDtcblxuICAgIHRoaXMuZW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdzMy5hbWF6b25hd3MuY29tJywge1xuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBBcm5FcXVhbHM6IHtcbiAgICAgICAgICAna21zOkVuY3J5cHRpb25Db250ZXh0OmF3czpzMzphcm4nOiBidWNrZXRBcm4sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHRoaXMuYnVja2V0ID0gcHJvcHMuYnVja2V0IHx8IG5ldyBCdWNrZXQodGhpcywgJ0RvY3VtZW50UHJvY2Vzc2luZ0J1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogKHByb3BzLnJlbW92YWxQb2xpY3kgJiYgcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKSB8fCAhcHJvcHMucmVtb3ZhbFBvbGljeSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgYnVja2V0S2V5RW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuXG4gICAgdGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5ID0gdGhpcy5idWNrZXQuZW5jcnlwdGlvbktleTtcblxuICAgIGNvbnN0IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uID0gcHJvcHMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiB8fCB7XG4gICAgICBsb2dHcm91cEVuY3J5cHRpb25LZXk6IG5ldyBLZXkodGhpcywgJ0xvZ0dyb3VwRW5jcnlwdGlvbktleScsIHtcbiAgICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGlmICghdGVtcExvZ0dyb3VwRGF0YVByb3RlY3Rpb24ubG9nR3JvdXBFbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvZ0dyb3VwRGF0YVByb3RlY3Rpb24gPSB7XG4gICAgICAgIGRhdGFQcm90ZWN0aW9uSWRlbnRpZmllcnM6IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uLmRhdGFQcm90ZWN0aW9uSWRlbnRpZmllcnMsXG4gICAgICAgIGxvZ0dyb3VwRW5jcnlwdGlvbktleTogbmV3IEtleSh0aGlzLCAnTG9nR3JvdXBFbmNyeXB0aW9uS2V5Jywge1xuICAgICAgICAgIGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlLFxuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiA9IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsICdEb2N1bWVudFByb2Nlc3NpbmdETFEnLCB7XG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMucXVldWVWaXNpYmlsaXR5VGltZW91dCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TLFxuICAgICAgZW5jcnlwdGlvbk1hc3RlcktleTogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRG9jdW1lbnRQcm9jZXNzaW5nUXVldWUnLCB7XG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMucXVldWVWaXNpYmlsaXR5VGltZW91dCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBkZWFkTGV0dGVyUXVldWU6IHtcbiAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiBwcm9wcy5kbHFNYXhSZWNlaXZlQ291bnQgfHwgNSxcbiAgICAgICAgcXVldWU6IHRoaXMuZGVhZExldHRlclF1ZXVlLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uTWFzdGVyS2V5OiB0aGlzLmVuY3J5cHRpb25LZXksXG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlID0gcHJvcHMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUgfHwgbmV3IFRhYmxlKHRoaXMsICdEb2N1bWVudFByb2Nlc3NpbmdUYWJsZScsIHtcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiAnRG9jdW1lbnRJZCcsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIGJpbGxpbmdNb2RlOiBCaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb246IFRhYmxlRW5jcnlwdGlvbi5DVVNUT01FUl9NQU5BR0VELFxuICAgICAgZW5jcnlwdGlvbktleTogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHkpIHtcbiAgICAgIFByb3BlcnR5SW5qZWN0b3JzLm9mKHRoaXMpLmFkZChcbiAgICAgICAgbmV3IFN0YXRlTWFjaGluZU9ic2VydmFiaWxpdHlQcm9wZXJ0eUluamVjdG9yKHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiksXG4gICAgICAgIG5ldyBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3Rvcih0aGlzLmxvZ0dyb3VwRGF0YVByb3RlY3Rpb24pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm1ldHJpY05hbWVzcGFjZSA9IHByb3BzLm1ldHJpY05hbWVzcGFjZSB8fCAnYXBwbW9kLWNhdGFsb2cnO1xuICAgIHRoaXMubWV0cmljU2VydmljZU5hbWUgPSBwcm9wcy5tZXRyaWNTZXJ2aWNlTmFtZSB8fCAnZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdGF0ZU1hY2hpbmVDcmVhdGlvbihzdGF0ZU1hY2hpbmVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xhc3NpZmljYXRpb25TdGVwID0gdGhpcy5jbGFzc2lmaWNhdGlvblN0ZXAoKTtcbiAgICBjb25zdCBwcm9jZXNzaW5nU3RlcCA9IHRoaXMucHJvY2Vzc2luZ1N0ZXAoKTtcbiAgICBjb25zdCBlbnJpY2htZW50U3RlcCA9IHRoaXMuZW5yaWNobWVudFN0ZXAoKTtcbiAgICBjb25zdCBwb3N0UHJvY2Vzc2luZ1N0ZXAgPSB0aGlzLnBvc3RQcm9jZXNzaW5nU3RlcCgpO1xuXG4gICAgY29uc3QgaW5pdE1ldGFkYXRhRW50cnkgPSBuZXcgRHluYW1vUHV0SXRlbSh0aGlzLCAnSW5pdE1ldGFkYXRhRW50cnknLCB7XG4gICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgIGl0ZW06IHtcbiAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICBCdWNrZXQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JykpLFxuICAgICAgICBLZXk6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQua2V5JykpLFxuICAgICAgICBXb3JrZmxvd1N0YXR1czogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygncGVuZGluZycpLFxuICAgICAgICBTdGF0ZU1hY2hpbmVFeGVjSWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQkLkV4ZWN1dGlvbi5JZCcpKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgIH0pO1xuXG4gICAgLy8gRmlsZSBtb3ZlbWVudCBvcGVyYXRpb25zXG4gICAgY29uc3QgbW92ZVRvRmFpbGVkID0gdGhpcy5jcmVhdGVNb3ZlVG9GYWlsZWRDaGFpbigpO1xuICAgIGNvbnN0IG1vdmVUb1Byb2Nlc3NlZCA9IHRoaXMuY3JlYXRlTW92ZVRvUHJvY2Vzc2VkQ2hhaW4oKTtcblxuICAgIGNvbnN0IHByb2Nlc3NpbmdDaGFpbiA9IHByb2Nlc3NpbmdTdGVwXG4gICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ1Byb2Nlc3NpbmdGYWlsRERCVXBkYXRlJywge1xuICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAga2V5OiB7XG4gICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cycsXG4gICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ3Byb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdQcm9jZXNzaW5nU3VjY2Vzc1VwZGF0ZScsIHtcbiAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzLCBQcm9jZXNzaW5nUmVzdWx0ID0gOnByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygncHJvY2Vzc2luZy1jb21wbGV0ZScpLFxuICAgICAgICAgICAgJzpwcm9jZXNzaW5nUmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQucHJvY2Vzc2luZ1Jlc3VsdCcpKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAvLyBCdWlsZCB0aGUgY29tcGxldGUgY2hhaW4gaW5jbHVkaW5nIG9wdGlvbmFsIHN0ZXBzXG4gICAgaWYgKGVucmljaG1lbnRTdGVwKSB7XG4gICAgICBjb25zdCBlbnJpY2htZW50Q2hhaW4gPSBlbnJpY2htZW50U3RlcFxuICAgICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ0VucmljaG1lbnRGYWlsRERCVXBkYXRlJywge1xuICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnZW5yaWNobWVudC1mYWlsdXJlJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KS5uZXh0KG1vdmVUb0ZhaWxlZCksIHtcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KVxuICAgICAgICAubmV4dChcbiAgICAgICAgICBuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnRW5yaWNobWVudFN1Y2Nlc3NVcGRhdGUnLCB7XG4gICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMsIEVucmljaG1lbnRSZXN1bHQgPSA6ZW5yaWNobWVudFJlc3VsdCcsXG4gICAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAgICc6bmV3U3RhdHVzJzogcG9zdFByb2Nlc3NpbmdTdGVwID8gRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnZW5yaWNobWVudC1jb21wbGV0ZScpIDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnY29tcGxldGUnKSxcbiAgICAgICAgICAgICAgJzplbnJpY2htZW50UmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQuZW5yaWNoZWRSZXN1bHQnKSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgIHByb2Nlc3NpbmdDaGFpbi5uZXh0KGVucmljaG1lbnRDaGFpbik7XG5cbiAgICAgIGlmIChwb3N0UHJvY2Vzc2luZ1N0ZXApIHtcbiAgICAgICAgY29uc3QgcG9zdFByb2Nlc3NpbmdDaGFpbiA9IHBvc3RQcm9jZXNzaW5nU3RlcFxuICAgICAgICAgIC5hZGRDYXRjaChuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnUG9zdFByb2Nlc3NpbmdGYWlsRERCVXBkYXRlJywge1xuICAgICAgICAgICAgdGFibGU6IHRoaXMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUsXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdwb3N0LXByb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5leHQoXG4gICAgICAgICAgICBuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnUG9zdFByb2Nlc3NpbmdTdWNjZXNzVXBkYXRlJywge1xuICAgICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cywgUG9zdFByb2Nlc3NpbmdSZXN1bHQgPSA6cG9zdFByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdjb21wbGV0ZScpLFxuICAgICAgICAgICAgICAgICc6cG9zdFByb2Nlc3NpbmdSZXN1bHQnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLmpzb25Ub1N0cmluZyhKc29uUGF0aC5vYmplY3RBdCgnJC5wb3N0UHJvY2Vzc2VkUmVzdWx0JykpKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICAgICApO1xuICAgICAgICBlbnJpY2htZW50Q2hhaW4ubmV4dChwb3N0UHJvY2Vzc2luZ0NoYWluKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVucmljaG1lbnRDaGFpbi5uZXh0KG1vdmVUb1Byb2Nlc3NlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3N0UHJvY2Vzc2luZ1N0ZXApIHtcbiAgICAgIGNvbnN0IHBvc3RQcm9jZXNzaW5nQ2hhaW4gPSBwb3N0UHJvY2Vzc2luZ1N0ZXBcbiAgICAgICAgLmFkZENhdGNoKG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdQb3N0UHJvY2Vzc2luZ0ZhaWxEREJVcGRhdGUnLCB7XG4gICAgICAgICAgdGFibGU6IHRoaXMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUsXG4gICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cycsXG4gICAgICAgICAgZXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdwb3N0LXByb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSlcbiAgICAgICAgLm5leHQoXG4gICAgICAgICAgbmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ1Bvc3RQcm9jZXNzaW5nU3VjY2Vzc1VwZGF0ZScsIHtcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cywgUG9zdFByb2Nlc3NpbmdSZXN1bHQgPSA6cG9zdFByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgICAgZXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ2NvbXBsZXRlJyksXG4gICAgICAgICAgICAgICc6cG9zdFByb2Nlc3NpbmdSZXN1bHQnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLmpzb25Ub1N0cmluZyhKc29uUGF0aC5vYmplY3RBdCgnJC5wb3N0UHJvY2Vzc2VkUmVzdWx0JykpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICAgKTtcbiAgICAgIHByb2Nlc3NpbmdDaGFpbi5uZXh0KHBvc3RQcm9jZXNzaW5nQ2hhaW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBvcHRpb25hbCBzdGVwcyAtIG1hcmsgYXMgY29tcGxldGUgYWZ0ZXIgZXh0cmFjdGlvblxuICAgICAgcHJvY2Vzc2luZ0NoYWluLm5leHQoXG4gICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdXb3JrZmxvd0NvbXBsZXRlVXBkYXRlJywge1xuICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnY29tcGxldGUnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2Zsb3dEZWZpbml0aW9uID0gaW5pdE1ldGFkYXRhRW50cnkubmV4dChcbiAgICAgIGNsYXNzaWZpY2F0aW9uU3RlcFxuICAgICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ0NsYXNzaWZpY2F0aW9uRmFpbEREQlVwZGF0ZScsIHtcbiAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzJyxcbiAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ2NsYXNzaWZpY2F0aW9uLWZhaWx1cmUnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLm5leHQobW92ZVRvRmFpbGVkKSwge1xuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pXG4gICAgICAgIC5uZXh0KFxuICAgICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdDbGFzc2lmaWNhdGlvblN1Y2Nlc3NVcGRhdGUnLCB7XG4gICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMsIENsYXNzaWZpY2F0aW9uUmVzdWx0ID0gOmNsYXNzaWZpY2F0aW9uUmVzdWx0JyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdjbGFzc2lmaWNhdGlvbi1jb21wbGV0ZScpLFxuICAgICAgICAgICAgICAnOmNsYXNzaWZpY2F0aW9uUmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQuY2xhc3NpZmljYXRpb25SZXN1bHQnKSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKS5uZXh0KHByb2Nlc3NpbmdDaGFpbik7XG5cbiAgICBjb25zdCByb2xlID0gdGhpcy5jcmVhdGVTdGF0ZU1hY2hpbmVSb2xlKCk7XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQocm9sZSk7XG4gICAgaWYgKHRoaXMuYnVja2V0RW5jcnlwdGlvbktleSkge1xuICAgICAgdGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQocm9sZSk7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUodGhpcywgc3RhdGVNYWNoaW5lSWQsIHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBEZWZpbml0aW9uQm9keS5mcm9tQ2hhaW5hYmxlKHdvcmtmbG93RGVmaW5pdGlvbiksXG4gICAgICB0aW1lb3V0OiB0aGlzLnByb3BzLndvcmtmbG93VGltZW91dCB8fCBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHJvbGUsXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogbmV3IEN1c3RvbWVyTWFuYWdlZEVuY3J5cHRpb25Db25maWd1cmF0aW9uKHRoaXMuZW5jcnlwdGlvbktleSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmhhbmRsZVdvcmtmbG93VHJpZ2dlcihzdGF0ZU1hY2hpbmUpO1xuXG4gICAgcmV0dXJuIHN0YXRlTWFjaGluZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVXb3JrZmxvd1RyaWdnZXIoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpIHtcbiAgICB0aGlzLmJ1Y2tldC5hZGRFdmVudE5vdGlmaWNhdGlvbihFdmVudFR5cGUuT0JKRUNUX0NSRUFURUQsIG5ldyBTcXNEZXN0aW5hdGlvbih0aGlzLnF1ZXVlKSwge1xuICAgICAgcHJlZml4OiBEb2N1bWVudFByb2Nlc3NpbmdQcmVmaXguUkFXLFxuICAgIH0pO1xuICAgIHRoaXMuY3JlYXRlU1FTQ29uc3VtZXJMYW1iZGEoc3RhdGVNYWNoaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU1FTQ29uc3VtZXJMYW1iZGEoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiBGdW5jdGlvbiB7XG4gICAgY29uc3QgeyByZWdpb24sIGFjY291bnQgfSA9IExhbWJkYUlhbVV0aWxzLmdldFN0YWNrSW5mbyh0aGlzKTtcbiAgICAvLyBDcmVhdGUgbG9ncyBwZXJtaXNzaW9ucyBhbmQgZ2V0IHVuaXF1ZSBmdW5jdGlvbiBuYW1lXG4gICAgY29uc3QgbG9nc1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnU1FTQ29uc3VtZXInLFxuICAgICAgcmVnaW9uLFxuICAgICAgYWNjb3VudCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBwb2xpY3kgc3RhdGVtZW50cyBmb3IgU1FTIGNvbnN1bWVyIExhbWJkYVxuICAgIGNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSBbXG4gICAgICAuLi5sb2dzUGVybWlzc2lvbnMucG9saWN5U3RhdGVtZW50cyxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzdGF0ZXM6U3RhcnRFeGVjdXRpb24nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybl0sXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubmV0d29yaykge1xuICAgICAgcG9saWN5U3RhdGVtZW50cy5wdXNoKExhbWJkYUlhbVV0aWxzLmdlbmVyYXRlTGFtYmRhVlBDUGVybWlzc2lvbnMoKSk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIElBTSByb2xlIGZvciBTUVMgY29uc3VtZXIgTGFtYmRhXG4gICAgY29uc3Qgc3FzQ29uc3VtZXJSb2xlID0gbmV3IFJvbGUodGhpcywgJ1NRU0NvbnN1bWVyUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBTUVNDb25zdW1lckV4ZWN1dGlvblBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBwb2xpY3lTdGF0ZW1lbnRzLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChzcXNDb25zdW1lclJvbGUpO1xuXG4gICAgLy8gQ3JlYXRlIFNRUyBjb25zdW1lciBMYW1iZGEgZnVuY3Rpb25cbiAgICBjb25zdCBzcXNDb25zdW1lckxhbWJkYSA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnU1FTQ29uc3VtZXInLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGxvZ3NQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgcm9sZTogc3FzQ29uc3VtZXJSb2xlLFxuICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICcvcmVzb3VyY2VzL2RlZmF1bHQtc3FzLWNvbnN1bWVyJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTVEFURV9NQUNISU5FX0FSTjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgLi4uUG93ZXJ0b29sc0NvbmZpZy5nZW5lcmF0ZURlZmF1bHRMYW1iZGFDb25maWcodGhpcy5wcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LCB0aGlzLm1ldHJpY05hbWVzcGFjZSwgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSksXG4gICAgICB9LFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29uc3VtZXMgU1FTIG1lc3NhZ2VzIGFuZCB0cmlnZ2VycyBTdGVwIEZ1bmN0aW9ucyBleGVjdXRpb25zIGZvciBkb2N1bWVudCBwcm9jZXNzaW5nJyxcbiAgICAgIGVudmlyb25tZW50RW5jcnlwdGlvbjogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgdnBjOiB0aGlzLnByb3BzLm5ldHdvcmsgPyB0aGlzLnByb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5wcm9wcy5uZXR3b3JrID8gdGhpcy5wcm9wcy5uZXR3b3JrLmFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCkgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgU1FTIGV2ZW50IHNvdXJjZSB0byBMYW1iZGFcbiAgICBzcXNDb25zdW1lckxhbWJkYS5hZGRFdmVudFNvdXJjZShcbiAgICAgIG5ldyBTcXNFdmVudFNvdXJjZSh0aGlzLnF1ZXVlLCB7XG4gICAgICAgIGJhdGNoU2l6ZTogMTAsXG4gICAgICAgIG1heEJhdGNoaW5nV2luZG93OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICByZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4gc3FzQ29uc3VtZXJMYW1iZGE7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0YXRlTWFjaGluZVJvbGUoKTogUm9sZSB7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsICdTdGF0ZU1hY2hpbmVSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnc3RhdGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFN0YXRlTWFjaGluZUV4ZWN1dGlvblBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0JywgJ3MzOkNvcHlPYmplY3QnLCAnczM6RGVsZXRlT2JqZWN0JywgJ3MzOlB1dE9iamVjdCddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2R5bmFtb2RiOlB1dEl0ZW0nLCAnZHluYW1vZGI6VXBkYXRlSXRlbSddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLnRhYmxlQXJuXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTW92ZVRvRmFpbGVkQ2hhaW4oKSB7XG4gICAgY29uc3QgZmFpbGVkQ2hhaW4gPSBuZXcgQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0NvcHlUb0ZhaWxlZCcsIHtcbiAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICBhY3Rpb246ICdjb3B5T2JqZWN0JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgQ29weVNvdXJjZTogSnNvblBhdGguZm9ybWF0KCd7fS97fScsIEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSksXG4gICAgICAgIEtleTogSnNvblBhdGguZm9ybWF0KCdmYWlsZWQve30nLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpKSxcbiAgICAgIH0sXG4gICAgICBpYW1SZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgfSkubmV4dChcbiAgICAgIG5ldyBDYWxsQXdzU2VydmljZSh0aGlzLCAnRGVsZXRlRnJvbVJhdycsIHtcbiAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgYWN0aW9uOiAnZGVsZXRlT2JqZWN0JyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEJ1Y2tldDogSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JyksXG4gICAgICAgICAgS2V5OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSxcbiAgICAgICAgfSxcbiAgICAgICAgaWFtUmVzb3VyY2VzOiBbYCR7dGhpcy5idWNrZXQuYnVja2V0QXJufS8qYF0sXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuZXZlbnRicmlkZ2VCcm9rZXIpIHtcbiAgICAgIGZhaWxlZENoYWluLm5leHQoXG4gICAgICAgIHRoaXMucHJvcHMuZXZlbnRicmlkZ2VCcm9rZXIuc2VuZFZpYVNmbkNoYWluKFxuICAgICAgICAgICdkb2N1bWVudC1wcm9jZXNzaW5nLWZhaWxlZCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZG9jdW1lbnRJZDogSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpLFxuICAgICAgICAgICAgYnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgICAgIGZpbGVuYW1lOiBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWlsZWRDaGFpbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTW92ZVRvUHJvY2Vzc2VkQ2hhaW4oKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkQ2hhaW4gPSBuZXcgQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0NvcHlUb1Byb2Nlc3NlZCcsIHtcbiAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICBhY3Rpb246ICdjb3B5T2JqZWN0JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgQ29weVNvdXJjZTogSnNvblBhdGguZm9ybWF0KCd7fS97fScsIEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSksXG4gICAgICAgIEtleTogSnNvblBhdGguZm9ybWF0KCdwcm9jZXNzZWQve30nLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpKSxcbiAgICAgIH0sXG4gICAgICBpYW1SZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgfSkubmV4dChcbiAgICAgIG5ldyBDYWxsQXdzU2VydmljZSh0aGlzLCAnRGVsZXRlRnJvbVJhd1N1Y2Nlc3MnLCB7XG4gICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgIGFjdGlvbjogJ2RlbGV0ZU9iamVjdCcsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBCdWNrZXQ6IEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLFxuICAgICAgICAgIEtleTogSnNvblBhdGguc3RyaW5nQXQoJyQua2V5JyksXG4gICAgICAgIH0sXG4gICAgICAgIGlhbVJlc291cmNlczogW2Ake3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmV2ZW50YnJpZGdlQnJva2VyKSB7XG4gICAgICBwcm9jZXNzZWRDaGFpbi5uZXh0KFxuICAgICAgICB0aGlzLnByb3BzLmV2ZW50YnJpZGdlQnJva2VyLnNlbmRWaWFTZm5DaGFpbihcbiAgICAgICAgICAnZG9jdW1lbnQtcHJvY2Vzc2VkLXN1Y2Nlc3NmdWwnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSxcbiAgICAgICAgICAgIGJ1Y2tldDogSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JyksXG4gICAgICAgICAgICBmaWxlbmFtZTogSnNvblBhdGguc3RyaW5nQXQoJyQuZmlsZW5hbWUnKSxcbiAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9uOiBKc29uUGF0aC5zdHJpbmdBdCgnJC5jbGFzc2lmaWNhdGlvblJlc3VsdC5kb2N1bWVudENsYXNzaWZpY2F0aW9uJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NlZENoYWluO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY3MoKTogSU1ldHJpY1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24gc3RlcCBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqICoqQ1JJVElDQUwqKjogTXVzdCBzZXQgYG91dHB1dFBhdGhgIHRvIHByZXNlcnZlIHdvcmtmbG93IHN0YXRlIGZvciBzdWJzZXF1ZW50IHN0ZXBzLlxuICAgKiBUaGUgY2xhc3NpZmljYXRpb24gcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQuY2xhc3NpZmljYXRpb25SZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBjbGFzc2lmaWNhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNsYXNzaWZpY2F0aW9uU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBzdGVwIG9mIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogKipDUklUSUNBTCoqOiBNdXN0IHNldCBgb3V0cHV0UGF0aGAgdG8gcHJlc2VydmUgd29ya2Zsb3cgc3RhdGUgZm9yIHN1YnNlcXVlbnQgc3RlcHMuXG4gICAqIFRoZSBleHRyYWN0aW9uIHJlc3VsdCBzaG91bGQgYmUgYXZhaWxhYmxlIGF0IGAkLnByb2Nlc3NpbmdSZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBleHRyYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG9wdGlvbmFsIGRvY3VtZW50IGVucmljaG1lbnQgc3RlcCBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqICoqQ1JJVElDQUwqKjogSWYgaW1wbGVtZW50ZWQsIG11c3Qgc2V0IGBvdXRwdXRQYXRoYCB0byBwcmVzZXJ2ZSB3b3JrZmxvdyBzdGF0ZS5cbiAgICogVGhlIGVucmljaG1lbnQgcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQuZW5yaWNoZWRSZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBlbnJpY2htZW50LCBvciB1bmRlZmluZWQgdG8gc2tpcCB0aGlzIHN0ZXBcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBlbnJpY2htZW50U3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgb3B0aW9uYWwgcG9zdC1wcm9jZXNzaW5nIHN0ZXAgb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiAqKkNSSVRJQ0FMKio6IElmIGltcGxlbWVudGVkLCBtdXN0IHNldCBgb3V0cHV0UGF0aGAgdG8gcHJlc2VydmUgd29ya2Zsb3cgc3RhdGUuXG4gICAqIFRoZSBwb3N0LXByb2Nlc3NpbmcgcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQucG9zdFByb2Nlc3NlZFJlc3VsdGAgZm9yIER5bmFtb0RCIHN0b3JhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIFN0ZXAgRnVuY3Rpb25zIHRhc2sgZm9yIHBvc3QtcHJvY2Vzc2luZywgb3IgdW5kZWZpbmVkIHRvIHNraXAgdGhpcyBzdGVwXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9zdFByb2Nlc3NpbmdTdGVwKCk6IERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIHwgdW5kZWZpbmVkO1xufVxuIl19
509
+ BaseDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BaseDocumentProcessing", version: "1.0.1" };
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYmFzZS1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0QyxrQ0FBa0M7QUFDbEMsOEVBQWtFO0FBQ2xFLDZDQUFnRjtBQUVoRiwyREFBOEY7QUFDOUYsaURBQXFFO0FBQ3JFLGlEQUFzRztBQUN0RyxpREFBZ0Q7QUFFaEQsbUZBQXNFO0FBQ3RFLCtDQUF5RTtBQUN6RSwyRUFBa0U7QUFDbEUsaURBQTZEO0FBQzdELHFFQUErSDtBQUMvSCxpRkFBMkw7QUFDM0wsMkNBQXVDO0FBQ3ZDLDRDQUF3RDtBQUV4RCw0Q0FBMkU7QUFDM0UsOEhBQXdIO0FBRXhILG9GQUFnRjtBQUNoRiw0SUFBcUk7QUFpRXJJOzs7Ozs7O0dBT0c7QUFDSCxJQUFZLHdCQU9YO0FBUEQsV0FBWSx3QkFBd0I7SUFDbEMsOERBQThEO0lBQzlELHdDQUFZLENBQUE7SUFDWixrREFBa0Q7SUFDbEQsOENBQWtCLENBQUE7SUFDbEIsa0RBQWtEO0lBQ2xELG9EQUF3QixDQUFBO0FBQzFCLENBQUMsRUFQVyx3QkFBd0Isd0NBQXhCLHdCQUF3QixRQU9uQztBQVFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFzQixzQkFBdUIsU0FBUSxzQkFBUztJQXNCNUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUMxRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLHdDQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BGLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLHdDQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLHdDQUE4QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9GLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLHdDQUE4QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNGLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLHdDQUE4QixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNqRyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSx3Q0FBOEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzVHLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksYUFBRyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUM1RSxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztTQUM1RCxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyw0QkFBNEIsbUJBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDNUUsU0FBUyxFQUFFLEVBQUUsR0FBRywyQkFBMkIsQ0FBQyxNQUFNO1NBQ25ELENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixVQUFVLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksMEJBQWdCLENBQUMsa0JBQWtCLEVBQUU7WUFDOUUsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRTtvQkFDVCxrQ0FBa0MsRUFBRSxTQUFTO2lCQUM5QzthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3pFLFVBQVU7WUFDVixpQkFBaUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ2hJLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxVQUFVLEVBQUUseUJBQWdCLENBQUMsR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUVyRCxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSTtZQUNqRSxxQkFBcUIsRUFBRSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzVELGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTzthQUM1RCxDQUFDO1NBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxzQkFBc0IsR0FBRztnQkFDNUIseUJBQXlCLEVBQUUsMEJBQTBCLENBQUMseUJBQXlCO2dCQUMvRSxxQkFBcUIsRUFBRSxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7b0JBQzVELGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztpQkFDNUQsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxzQkFBc0IsR0FBRywwQkFBMEIsQ0FBQztRQUMzRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDOUQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN4RSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87WUFDM0QsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLHlCQUFlLENBQUMsR0FBRztZQUMvQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN0RCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUksc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3hFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixlQUFlLEVBQUU7Z0JBQ2YsZUFBZSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDNUI7WUFDRCxVQUFVLEVBQUUseUJBQWUsQ0FBQyxHQUFHO1lBQy9CLG1CQUFtQixFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksSUFBSSxvQkFBSyxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUN6RyxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxXQUFXLEVBQUUsMEJBQVcsQ0FBQyxlQUFlO1lBQ3hDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxnQ0FBZ0MsRUFBRTtnQkFDaEMsMEJBQTBCLEVBQUUsSUFBSTthQUNqQztZQUNELFVBQVUsRUFBRSw4QkFBZSxDQUFDLGdCQUFnQjtZQUM1QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5QiwrQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUM1QixJQUFJLHlGQUF5QyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxRSxJQUFJLDRFQUFtQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxnQkFBZ0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLHFCQUFxQixDQUFDO0lBQzVFLENBQUM7SUFHUywwQkFBMEIsQ0FBQyxjQUFzQjtRQUN6RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVyRCxNQUFNLGlCQUFpQixHQUFHLElBQUksdUNBQWEsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7WUFDckUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7WUFDbkMsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzlFLE1BQU0sRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RFLEdBQUcsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLGNBQWMsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUMxRCxrQkFBa0IsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUMxRjtZQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ3BELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRTFELE1BQU0sZUFBZSxHQUFHLGNBQWM7YUFDbkMsUUFBUSxDQUFDLElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO1lBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQy9FO1lBQ0QsZ0JBQWdCLEVBQUUsaUNBQWlDO1lBQ25ELHlCQUF5QixFQUFFO2dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDO2FBQ3BFO1lBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQzthQUNELElBQUksQ0FDSCxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtZQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMvRTtZQUNELGdCQUFnQixFQUFFLHVFQUF1RTtZQUN6Rix5QkFBeUIsRUFBRTtnQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDcEUsbUJBQW1CLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsWUFBWSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQzthQUNySDtZQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87U0FDN0IsQ0FBQyxDQUNILENBQUM7UUFFSixvREFBb0Q7UUFDcEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixNQUFNLGVBQWUsR0FBRyxjQUFjO2lCQUNuQyxRQUFRLENBQUMsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUU7Z0JBQzlELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNuQyxHQUFHLEVBQUU7b0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0U7Z0JBQ0QsZ0JBQWdCLEVBQUUsaUNBQWlDO2dCQUNuRCx5QkFBeUIsRUFBRTtvQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDcEU7Z0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTzthQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNyQixVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2FBQzdCLENBQUM7aUJBQ0QsSUFBSSxDQUNILElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtnQkFDbkMsR0FBRyxFQUFFO29CQUNILFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQy9FO2dCQUNELGdCQUFnQixFQUFFLHVFQUF1RTtnQkFDekYseUJBQXlCLEVBQUU7b0JBQ3pCLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsOENBQW9CLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3ZJLG1CQUFtQixFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7aUJBQ25IO2dCQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQyxDQUNILENBQUM7WUFFSixlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXRDLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0I7cUJBQzNDLFFBQVEsQ0FBQyxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtvQkFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7b0JBQ25DLEdBQUcsRUFBRTt3QkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUMvRTtvQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7b0JBQ25ELHlCQUF5QixFQUFFO3dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO3FCQUN6RTtvQkFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2lCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNyQixVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2lCQUM3QixDQUFDO3FCQUNELElBQUksQ0FDSCxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtvQkFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7b0JBQ25DLEdBQUcsRUFBRTt3QkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO3FCQUMvRTtvQkFDRCxnQkFBZ0IsRUFBRSwrRUFBK0U7b0JBQ2pHLHlCQUF5QixFQUFFO3dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzt3QkFDekQsdUJBQXVCLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsWUFBWSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztxQkFDNUg7b0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztpQkFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDekIsQ0FBQztnQkFDSixlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDNUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDOUIsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0I7aUJBQzNDLFFBQVEsQ0FBQyxJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtnQkFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUMvRTtnQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7Z0JBQ25ELHlCQUF5QixFQUFFO29CQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO2lCQUN6RTtnQkFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO2FBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3JCLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQztpQkFDRCxJQUFJLENBQ0gsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7Z0JBQ3hELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNuQyxHQUFHLEVBQUU7b0JBQ0gsVUFBVSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDL0U7Z0JBQ0QsZ0JBQWdCLEVBQUUsK0VBQStFO2dCQUNqRyx5QkFBeUIsRUFBRTtvQkFDekIsWUFBWSxFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3pELHVCQUF1QixFQUFFLDhDQUFvQixDQUFDLFVBQVUsQ0FBQyw0QkFBUSxDQUFDLFlBQVksQ0FBQyw0QkFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7aUJBQzVIO2dCQUNELFVBQVUsRUFBRSw0QkFBUSxDQUFDLE9BQU87YUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDekIsQ0FBQztZQUNKLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHdEQUF3RDtZQUN4RCxlQUFlLENBQUMsSUFBSSxDQUNsQixJQUFJLDBDQUFnQixDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtnQkFDbkQsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUMvRTtnQkFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7Z0JBQ25ELHlCQUF5QixFQUFFO29CQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztpQkFDMUQ7Z0JBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTzthQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUMvQyxrQkFBa0I7YUFDZixRQUFRLENBQUMsSUFBSSwwQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsNkJBQTZCLEVBQUU7WUFDbEUsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUI7WUFDbkMsR0FBRyxFQUFFO2dCQUNILFVBQVUsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDL0U7WUFDRCxnQkFBZ0IsRUFBRSxpQ0FBaUM7WUFDbkQseUJBQXlCLEVBQUU7Z0JBQ3pCLFlBQVksRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUM7YUFDeEU7WUFDRCxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckIsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDO2FBQ0QsSUFBSSxDQUNILElBQUksMENBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUE2QixFQUFFO1lBQ3hELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ25DLEdBQUcsRUFBRTtnQkFDSCxVQUFVLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLDRCQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQy9FO1lBQ0QsZ0JBQWdCLEVBQUUsK0VBQStFO1lBQ2pHLHlCQUF5QixFQUFFO2dCQUN6QixZQUFZLEVBQUUsOENBQW9CLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RSx1QkFBdUIsRUFBRSw4Q0FBb0IsQ0FBQyxVQUFVLENBQUMsNEJBQVEsQ0FBQyxZQUFZLENBQUMsNEJBQVEsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO2FBQzdIO1lBQ0QsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQ0gsQ0FDSixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLGdDQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUMxRCxjQUFjLEVBQUUsa0NBQWMsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDaEUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJO1lBQ0osdUJBQXVCLEVBQUUsSUFBSSwwREFBc0MsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3hGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRVMscUJBQXFCLENBQUMsWUFBMEI7UUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBUyxDQUFDLGNBQWMsRUFBRSxJQUFJLHFDQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pGLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxHQUFHO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsWUFBMEI7UUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRywwQkFBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCx1REFBdUQ7UUFDdkQsTUFBTSxlQUFlLEdBQUcsMEJBQWMsQ0FBQyxxQkFBcUIsQ0FBQztZQUMzRCxLQUFLLEVBQUUsSUFBSTtZQUNYLFlBQVksRUFBRSxhQUFhO1lBQzNCLE1BQU07WUFDTixPQUFPO1lBQ1AsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUI7U0FDcEQsQ0FBQyxDQUFDO1FBRUgsbURBQW1EO1FBQ25ELE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxlQUFlLENBQUMsZ0JBQWdCO1lBQ25DLElBQUkseUJBQWUsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7YUFDMUMsQ0FBQztTQUNILENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDBCQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELGNBQWMsRUFBRTtnQkFDZCwwQkFBMEIsRUFBRSxJQUFJLHdCQUFjLENBQUM7b0JBQzdDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEQsc0NBQXNDO1FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDaEUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxrQkFBa0I7WUFDaEQsT0FBTyxFQUFFLDJCQUFlLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUNBQWlDLENBQUM7WUFDOUQsV0FBVyxFQUFFO2dCQUNYLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxlQUFlO2dCQUMvQyxHQUFHLG9DQUFnQixDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDOUg7WUFDRCxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxzRkFBc0Y7WUFDbkcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDekMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDNUQsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdGLENBQUMsQ0FBQztRQUVILGlDQUFpQztRQUNqQyxpQkFBaUIsQ0FBQyxjQUFjLENBQzlCLElBQUkseUNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzdCLFNBQVMsRUFBRSxFQUFFO1lBQ2IsaUJBQWlCLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLHVCQUF1QixFQUFFLElBQUk7U0FDOUIsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDeEMsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsY0FBYyxFQUFFO2dCQUNkLDJCQUEyQixFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDOUMsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSzs0QkFDcEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLENBQUM7NEJBQzdFLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQzt5QkFDMUMsQ0FBQzt3QkFDRixJQUFJLHlCQUFlLENBQUM7NEJBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7NEJBQ3BCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDOzRCQUNwRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDO3lCQUNuRCxDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDM0QsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsWUFBWTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsVUFBVSxFQUFFLDRCQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0YsR0FBRyxFQUFFLDRCQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNuRTtZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQyxJQUFJLENBQ0wsSUFBSSx3Q0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEMsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsY0FBYztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsR0FBRyxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUNoQztZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsV0FBVyxDQUFDLElBQUksQ0FDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FDMUMsNEJBQTRCLEVBQzVCO2dCQUNFLFVBQVUsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLE1BQU0sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7YUFDMUMsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLHdDQUFjLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ2pFLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLFlBQVk7WUFDcEIsVUFBVSxFQUFFO2dCQUNWLE1BQU0sRUFBRSw0QkFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JDLFVBQVUsRUFBRSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9GLEdBQUcsRUFBRSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEU7WUFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDNUMsVUFBVSxFQUFFLDRCQUFRLENBQUMsT0FBTztTQUM3QixDQUFDLENBQUMsSUFBSSxDQUNMLElBQUksd0NBQWMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDL0MsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsY0FBYztZQUN0QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTSxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsR0FBRyxFQUFFLDRCQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUNoQztZQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM1QyxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDakMsY0FBYyxDQUFDLElBQUksQ0FDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQzFDLCtCQUErQixFQUMvQjtnQkFDRSxVQUFVLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxNQUFNLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxRQUFRLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUN6QyxjQUFjLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsK0NBQStDLENBQUM7YUFDbkYsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O0FBcGhCSCx3REE2akJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBQeXRob25GdW5jdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBOYW1lcywgUHJvcGVydHlJbmplY3RvcnMsIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJTWV0cmljIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQXR0cmlidXRlVHlwZSwgQmlsbGluZ01vZGUsIFRhYmxlLCBUYWJsZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0IHsgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUsIFNlcnZpY2VQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElLZXksIEtleSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJ1Y2tldCwgQnVja2V0RW5jcnlwdGlvbiwgRXZlbnRUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFNxc0Rlc3RpbmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24sIERlZmluaXRpb25Cb2R5LCBKc29uUGF0aCwgU3RhdGVNYWNoaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0IHsgQmVkcm9ja0ludm9rZU1vZGVsLCBEeW5hbW9BdHRyaWJ1dGVWYWx1ZSwgRHluYW1vUHV0SXRlbSwgRHluYW1vVXBkYXRlSXRlbSwgTGFtYmRhSW52b2tlLCBDYWxsQXdzU2VydmljZSwgU3RlcEZ1bmN0aW9uc1N0YXJ0RXhlY3V0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEZWZhdWx0UnVudGltZXMsIE5ldHdvcmsgfSBmcm9tICcuLi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgRXZlbnRicmlkZ2VCcm9rZXIgfSBmcm9tICcuLi9mcmFtZXdvcmsvZm91bmRhdGlvbi9ldmVudGJyaWRnZS1icm9rZXInO1xuaW1wb3J0IHsgTGFtYmRhSWFtVXRpbHMsIExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcyB9IGZyb20gJy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L2xhbWJkYS1vYnNlcnZhYmlsaXR5LXByb3BlcnR5LWluamVjdG9yJztcbmltcG9ydCB7IElPYnNlcnZhYmxlLCBPYnNlcnZhYmxlUHJvcHMgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9vYnNlcnZhYmxlJztcbmltcG9ydCB7IFBvd2VydG9vbHNDb25maWcgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9wb3dlcnRvb2xzLWNvbmZpZyc7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmVPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3RvciB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L3N0YXRlLW1hY2hpbmUtb2JzZXJ2YWJpbGl0eS1wcm9wZXJ0eS1pbmplY3Rvcic7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMgZXh0ZW5kcyBPYnNlcnZhYmxlUHJvcHMge1xuICAvKipcbiAgICogUzMgYnVja2V0IGZvciBkb2N1bWVudCBzdG9yYWdlIHdpdGggb3JnYW5pemVkIHByZWZpeGVzIChyYXcvLCBwcm9jZXNzZWQvLCBmYWlsZWQvKS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5ldyBidWNrZXQgd2lsbCBiZSBjcmVhdGVkIHdpdGggYXV0by1kZWxldGUgZW5hYmxlZCBiYXNlZCBvbiByZW1vdmFsUG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0PzogQnVja2V0O1xuICAvKipcbiAgICogRHluYW1vREIgdGFibGUgZm9yIHN0b3JpbmcgZG9jdW1lbnQgcHJvY2Vzc2luZyBtZXRhZGF0YSBhbmQgd29ya2Zsb3cgc3RhdGUuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYSBuZXcgdGFibGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggRG9jdW1lbnRJZCBhcyBwYXJ0aXRpb24ga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRQcm9jZXNzaW5nVGFibGU/OiBUYWJsZTtcbiAgLyoqXG4gICAqIFNRUyBxdWV1ZSB2aXNpYmlsaXR5IHRpbWVvdXQgZm9yIHByb2Nlc3NpbmcgbWVzc2FnZXMuXG4gICAqIFNob3VsZCBiZSBsb25nZXIgdGhhbiBleHBlY3RlZCBwcm9jZXNzaW5nIHRpbWUgdG8gcHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZy5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygzMDApXG4gICAqL1xuICByZWFkb25seSBxdWV1ZVZpc2liaWxpdHlUaW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgYSBtZXNzYWdlIGNhbiBiZSB1bnN1Y2Nlc3NmdWxseSBkZXF1ZXVlZCBiZWZvcmUgYmVpbmcgbW92ZWQgdG8gdGhlIGRlYWQtbGV0dGVyIHF1ZXVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1XG4gICAqL1xuICByZWFkb25seSBkbHFNYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gZXhlY3V0aW9uIHRpbWUgZm9yIHRoZSBTdGVwIEZ1bmN0aW9ucyB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgRHVyYXRpb24ubWludXRlcygzMClcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VGltZW91dD86IER1cmF0aW9uO1xuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIGNyZWF0ZWQgcmVzb3VyY2VzIChidWNrZXQsIHRhYmxlLCBxdWV1ZSkuXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBFdmVudEJyaWRnZSBicm9rZXIgZm9yIHB1Ymxpc2hpbmcgY3VzdG9tIGV2ZW50cyBkdXJpbmcgcHJvY2Vzc2luZy5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBubyBjdXN0b20gZXZlbnRzIHdpbGwgYmUgc2VudCBvdXQuXG4gICAqL1xuICByZWFkb25seSBldmVudGJyaWRnZUJyb2tlcj86IEV2ZW50YnJpZGdlQnJva2VyO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgbG9nZ2luZyBhbmQgdHJhY2luZyBmb3IgYWxsIHN1cHBvcnRpbmcgcmVzb3VyY2VcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU9ic2VydmFiaWxpdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZXMgdGhhdCBjYW4gcnVuIGluc2lkZSBhIFZQQyB3aWxsIGZvbGxvdyB0aGUgcHJvdmlkZWQgbmV0d29yayBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IHJlc291cmNlcyB3aWxsIHJ1biBvdXRzaWRlIG9mIGEgVlBDXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrPzogTmV0d29yaztcblxuICAvKipcbiAgICogS01TIGtleSB0byBiZSB1c2VkLlxuICAgKiBAZGVmYXVsdCBBIG5ldyBrZXkgd291bGQgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IEtleTtcbn1cblxuLyoqXG4gKiBTMyBwcmVmaXggY29uc3RhbnRzIGZvciBvcmdhbml6aW5nIGRvY3VtZW50cyB0aHJvdWdob3V0IHRoZSBwcm9jZXNzaW5nIGxpZmVjeWNsZS5cbiAqXG4gKiBEb2N1bWVudHMgZmxvdyB0aHJvdWdoIHRoZXNlIHByZWZpeGVzIGJhc2VkIG9uIHByb2Nlc3Npbmcgb3V0Y29tZXM6XG4gKiAtIFVwbG9hZCDihpIgcmF3LyAodHJpZ2dlcnMgcHJvY2Vzc2luZylcbiAqIC0gU3VjY2VzcyDihpIgcHJvY2Vzc2VkLyAod29ya2Zsb3cgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSlcbiAqIC0gRmFpbHVyZSDihpIgZmFpbGVkLyAod29ya2Zsb3cgZW5jb3VudGVyZWQgZXJyb3JzKVxuICovXG5leHBvcnQgZW51bSBEb2N1bWVudFByb2Nlc3NpbmdQcmVmaXgge1xuICAvKiogUHJlZml4IGZvciBuZXdseSB1cGxvYWRlZCBkb2N1bWVudHMgYXdhaXRpbmcgcHJvY2Vzc2luZyAqL1xuICBSQVcgPSAncmF3LycsXG4gIC8qKiBQcmVmaXggZm9yIGRvY3VtZW50cyB0aGF0IGZhaWxlZCBwcm9jZXNzaW5nICovXG4gIEZBSUxFRCA9ICdmYWlsZWQvJyxcbiAgLyoqIFByZWZpeCBmb3Igc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBkb2N1bWVudHMgKi9cbiAgUFJPQ0VTU0VEID0gJ3Byb2Nlc3NlZC8nLFxufVxuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIFN0ZXAgRnVuY3Rpb25zIHRhc2tzIHRoYXQgY2FuIGJlIHVzZWQgaW4gZG9jdW1lbnQgcHJvY2Vzc2luZyB3b3JrZmxvd3MuXG4gKiBTdXBwb3J0cyBCZWRyb2NrIG1vZGVsIGludm9jYXRpb24sIExhbWJkYSBmdW5jdGlvbiBpbnZvY2F0aW9uLCBhbmQgbmVzdGVkIFN0ZXAgRnVuY3Rpb25zIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgPSBCZWRyb2NrSW52b2tlTW9kZWwgfCBMYW1iZGFJbnZva2UgfCBTdGVwRnVuY3Rpb25zU3RhcnRFeGVjdXRpb247XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3Igc2VydmVybGVzcyBkb2N1bWVudCBwcm9jZXNzaW5nIHdvcmtmbG93cy5cbiAqXG4gKiBQcm92aWRlcyBhIGNvbXBsZXRlIGRvY3VtZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgd2l0aDpcbiAqIC0gKipTMyBTdG9yYWdlKio6IE9yZ2FuaXplZCB3aXRoIHByZWZpeGVzIChyYXcvLCBwcm9jZXNzZWQvLCBmYWlsZWQvKSBmb3IgZG9jdW1lbnQgbGlmZWN5Y2xlIG1hbmFnZW1lbnRcbiAqIC0gKipTUVMgUXVldWUqKjogUmVsaWFibGUgbWVzc2FnZSBwcm9jZXNzaW5nIHdpdGggY29uZmlndXJhYmxlIHZpc2liaWxpdHkgdGltZW91dCBhbmQgZGVhZCBsZXR0ZXIgcXVldWVcbiAqIC0gKipEeW5hbW9EQiBUYWJsZSoqOiBXb3JrZmxvdyBtZXRhZGF0YSB0cmFja2luZyB3aXRoIERvY3VtZW50SWQgYXMgcGFydGl0aW9uIGtleVxuICogLSAqKlN0ZXAgRnVuY3Rpb25zKio6IE9yY2hlc3RyYXRlZCB3b3JrZmxvdyB3aXRoIGF1dG9tYXRpYyBmaWxlIG1vdmVtZW50IGJhc2VkIG9uIHByb2Nlc3Npbmcgb3V0Y29tZVxuICogLSAqKkF1dG8tdHJpZ2dlcmluZyoqOiBTMyBldmVudCBub3RpZmljYXRpb25zIGF1dG9tYXRpY2FsbHkgc3RhcnQgcHJvY2Vzc2luZyB3aGVuIGZpbGVzIGFyZSB1cGxvYWRlZCB0byByYXcvIHByZWZpeFxuICogLSAqKkVycm9yIEhhbmRsaW5nKio6IEZhaWxlZCBkb2N1bWVudHMgYXJlIG1vdmVkIHRvIGZhaWxlZC8gcHJlZml4IHdpdGggZXJyb3IgZGV0YWlscyBzdG9yZWQgaW4gRHluYW1vREJcbiAqIC0gKipFdmVudEJyaWRnZSBJbnRlZ3JhdGlvbioqOiBPcHRpb25hbCBjdXN0b20gZXZlbnQgcHVibGlzaGluZyBmb3Igd29ya2Zsb3cgc3RhdGUgY2hhbmdlc1xuICpcbiAqICMjIEFyY2hpdGVjdHVyZSBGbG93XG4gKiBTMyBVcGxvYWQgKHJhdy8pIOKGkiBTUVMg4oaSIExhbWJkYSBDb25zdW1lciDihpIgU3RlcCBGdW5jdGlvbnMg4oaSIFByb2Nlc3NpbmcgU3RlcHMg4oaSIFMzIChwcm9jZXNzZWQvZmFpbGVkLylcbiAqXG4gKiAjIyBJbXBsZW1lbnRhdGlvbiBSZXF1aXJlbWVudHNcbiAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgZm91ciBhYnN0cmFjdCBtZXRob2RzIHRvIGRlZmluZSB0aGUgcHJvY2Vzc2luZyB3b3JrZmxvdzpcbiAqIC0gYGNsYXNzaWZpY2F0aW9uU3RlcCgpYDogRG9jdW1lbnQgdHlwZSBjbGFzc2lmaWNhdGlvblxuICogLSBgZXh0cmFjdGlvblN0ZXAoKWA6IERhdGEgZXh0cmFjdGlvbiBmcm9tIGRvY3VtZW50c1xuICogLSBgZW5yaWNobWVudFN0ZXAoKWA6IE9wdGlvbmFsIGRhdGEgZW5yaWNobWVudCAocmV0dXJuIHVuZGVmaW5lZCB0byBza2lwKVxuICogLSBgcG9zdFByb2Nlc3NpbmdTdGVwKClgOiBPcHRpb25hbCBwb3N0LXByb2Nlc3NpbmcgKHJldHVybiB1bmRlZmluZWQgdG8gc2tpcClcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VEb2N1bWVudFByb2Nlc3NpbmcgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJT2JzZXJ2YWJsZSB7XG4gIC8qKiBCdXNpbmVzcyBtZXRyaWMgc2VydmljZSBuYW1lLiBUaGlzIGlzIHBhcnQgb2YgdGhlIGluaXRpYWwgc2VydmljZSBkaW1lbnNpb24gKi9cbiAgcmVhZG9ubHkgbWV0cmljU2VydmljZU5hbWU6IHN0cmluZztcbiAgLyoqIEJ1c2luZXNzIG1ldHJpYyBuYW1lc3BhY2UuICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZTogc3RyaW5nO1xuICAvKiogbG9nIGdyb3VwIGRhdGEgcHJvdGVjdGlvbiBjb25maWd1cmF0aW9uICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwRGF0YVByb3RlY3Rpb246IExvZ0dyb3VwRGF0YVByb3RlY3Rpb25Qcm9wcztcbiAgLyoqIFMzIGJ1Y2tldCBmb3IgZG9jdW1lbnQgc3RvcmFnZSB3aXRoIG9yZ2FuaXplZCBwcmVmaXhlcyAocmF3LywgcHJvY2Vzc2VkLywgZmFpbGVkLykgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQ7XG4gIC8qKiBTUVMgcXVldWUgZm9yIHJlbGlhYmxlIG1lc3NhZ2UgcHJvY2Vzc2luZyB3aXRoIGRlYWQgbGV0dGVyIHF1ZXVlIHN1cHBvcnQgKi9cbiAgcmVhZG9ubHkgcXVldWU6IFF1ZXVlO1xuICAvKiogRHluYW1vREIgdGFibGUgZm9yIHN0b3JpbmcgZG9jdW1lbnQgcHJvY2Vzc2luZyBtZXRhZGF0YSBhbmQgd29ya2Zsb3cgc3RhdGUgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRQcm9jZXNzaW5nVGFibGU6IFRhYmxlO1xuICAvKiogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHM7XG4gIC8qKiBEZWFkIGxldHRlciBxdWV1ZSAgKi9cbiAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlOiBRdWV1ZTtcbiAgLyoqIEtNUyBrZXkgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleTogS2V5O1xuICAvKiogRW5jcnlwdGlvbiBrZXkgdXNlZCBieSB0aGUgRG9jdW1lbnRQcm9jZXNzaW5nQnVja2V0ICovXG4gIHJlYWRvbmx5IGJ1Y2tldEVuY3J5cHRpb25LZXk/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJhc2VEb2N1bWVudFByb2Nlc3NpbmcgY29uc3RydWN0LlxuICAgKlxuICAgKiBJbml0aWFsaXplcyB0aGUgY29tcGxldGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBpbmZyYXN0cnVjdHVyZSBpbmNsdWRpbmcgUzMgYnVja2V0LFxuICAgKiBTUVMgcXVldWUsIER5bmFtb0RCIHRhYmxlLCBhbmQgc2V0cyB1cCBTMyBldmVudCBub3RpZmljYXRpb25zIHRvIHRyaWdnZXIgcHJvY2Vzc2luZy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS5cbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VEb2N1bWVudFByb2Nlc3NpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIGlmIChwcm9wcy5uZXR3b3JrKSB7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1zcXMnLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuU1FTKTtcbiAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLXMzJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzKTtcbiAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLXNmbicsIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5TVEVQX0ZVTkNUSU9OUyk7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1lYicsIEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZS5FVkVOVEJSSURHRSk7XG4gICAgICBpZiAocHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSkge1xuICAgICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1sb2dzJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkNMT1VEV0FUQ0hfTE9HUyk7XG4gICAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLW1ldHJpY3MnLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQ0xPVURXQVRDSF9NT05JVE9SSU5HKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5IHx8IG5ldyBLZXkodGhpcywgJ0lEUEVuY3J5cHRpb25LZXknLCB7XG4gICAgICBlbmFibGVLZXlSb3RhdGlvbjogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIH0pO1xuXG4gICAgY29uc3QgYnVja2V0TmFtZSA9IGBkb2N1bWVudHByb2Nlc3NpbmdidWNrZXQtJHtOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgbWF4TGVuZ3RoOiA2MCAtICdkb2N1bWVudHByb2Nlc3NpbmdidWNrZXQtJy5sZW5ndGgsXG4gICAgfSl9YC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgY29uc3QgYnVja2V0QXJuID0gYGFybjphd3M6czM6Ojoke2J1Y2tldE5hbWV9YDtcblxuICAgIHRoaXMuZW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdzMy5hbWF6b25hd3MuY29tJywge1xuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBBcm5FcXVhbHM6IHtcbiAgICAgICAgICAna21zOkVuY3J5cHRpb25Db250ZXh0OmF3czpzMzphcm4nOiBidWNrZXRBcm4sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHRoaXMuYnVja2V0ID0gcHJvcHMuYnVja2V0IHx8IG5ldyBCdWNrZXQodGhpcywgJ0RvY3VtZW50UHJvY2Vzc2luZ0J1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogKHByb3BzLnJlbW92YWxQb2xpY3kgJiYgcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZKSB8fCAhcHJvcHMucmVtb3ZhbFBvbGljeSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgYnVja2V0S2V5RW5hYmxlZDogdHJ1ZSxcbiAgICB9KTtcblxuXG4gICAgdGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5ID0gdGhpcy5idWNrZXQuZW5jcnlwdGlvbktleTtcblxuICAgIGNvbnN0IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uID0gcHJvcHMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiB8fCB7XG4gICAgICBsb2dHcm91cEVuY3J5cHRpb25LZXk6IG5ldyBLZXkodGhpcywgJ0xvZ0dyb3VwRW5jcnlwdGlvbktleScsIHtcbiAgICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGlmICghdGVtcExvZ0dyb3VwRGF0YVByb3RlY3Rpb24ubG9nR3JvdXBFbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvZ0dyb3VwRGF0YVByb3RlY3Rpb24gPSB7XG4gICAgICAgIGRhdGFQcm90ZWN0aW9uSWRlbnRpZmllcnM6IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uLmRhdGFQcm90ZWN0aW9uSWRlbnRpZmllcnMsXG4gICAgICAgIGxvZ0dyb3VwRW5jcnlwdGlvbktleTogbmV3IEtleSh0aGlzLCAnTG9nR3JvdXBFbmNyeXB0aW9uS2V5Jywge1xuICAgICAgICAgIGVuYWJsZUtleVJvdGF0aW9uOiB0cnVlLFxuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiA9IHRlbXBMb2dHcm91cERhdGFQcm90ZWN0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsICdEb2N1bWVudFByb2Nlc3NpbmdETFEnLCB7XG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMucXVldWVWaXNpYmlsaXR5VGltZW91dCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TLFxuICAgICAgZW5jcnlwdGlvbk1hc3RlcktleTogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBRdWV1ZSh0aGlzLCAnRG9jdW1lbnRQcm9jZXNzaW5nUXVldWUnLCB7XG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMucXVldWVWaXNpYmlsaXR5VGltZW91dCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBkZWFkTGV0dGVyUXVldWU6IHtcbiAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiBwcm9wcy5kbHFNYXhSZWNlaXZlQ291bnQgfHwgNSxcbiAgICAgICAgcXVldWU6IHRoaXMuZGVhZExldHRlclF1ZXVlLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uTWFzdGVyS2V5OiB0aGlzLmVuY3J5cHRpb25LZXksXG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlID0gcHJvcHMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUgfHwgbmV3IFRhYmxlKHRoaXMsICdEb2N1bWVudFByb2Nlc3NpbmdUYWJsZScsIHtcbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiAnRG9jdW1lbnRJZCcsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIGJpbGxpbmdNb2RlOiBCaWxsaW5nTW9kZS5QQVlfUEVSX1JFUVVFU1QsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgIHBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGVuY3J5cHRpb246IFRhYmxlRW5jcnlwdGlvbi5DVVNUT01FUl9NQU5BR0VELFxuICAgICAgZW5jcnlwdGlvbktleTogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZU9ic2VydmFiaWxpdHkpIHtcbiAgICAgIFByb3BlcnR5SW5qZWN0b3JzLm9mKHRoaXMpLmFkZChcbiAgICAgICAgbmV3IFN0YXRlTWFjaGluZU9ic2VydmFiaWxpdHlQcm9wZXJ0eUluamVjdG9yKHRoaXMubG9nR3JvdXBEYXRhUHJvdGVjdGlvbiksXG4gICAgICAgIG5ldyBMYW1iZGFPYnNlcnZhYmlsaXR5UHJvcGVydHlJbmplY3Rvcih0aGlzLmxvZ0dyb3VwRGF0YVByb3RlY3Rpb24pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm1ldHJpY05hbWVzcGFjZSA9IHByb3BzLm1ldHJpY05hbWVzcGFjZSB8fCAnYXBwbW9kLWNhdGFsb2cnO1xuICAgIHRoaXMubWV0cmljU2VydmljZU5hbWUgPSBwcm9wcy5tZXRyaWNTZXJ2aWNlTmFtZSB8fCAnZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBoYW5kbGVTdGF0ZU1hY2hpbmVDcmVhdGlvbihzdGF0ZU1hY2hpbmVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xhc3NpZmljYXRpb25TdGVwID0gdGhpcy5jbGFzc2lmaWNhdGlvblN0ZXAoKTtcbiAgICBjb25zdCBwcm9jZXNzaW5nU3RlcCA9IHRoaXMucHJvY2Vzc2luZ1N0ZXAoKTtcbiAgICBjb25zdCBlbnJpY2htZW50U3RlcCA9IHRoaXMuZW5yaWNobWVudFN0ZXAoKTtcbiAgICBjb25zdCBwb3N0UHJvY2Vzc2luZ1N0ZXAgPSB0aGlzLnBvc3RQcm9jZXNzaW5nU3RlcCgpO1xuXG4gICAgY29uc3QgaW5pdE1ldGFkYXRhRW50cnkgPSBuZXcgRHluYW1vUHV0SXRlbSh0aGlzLCAnSW5pdE1ldGFkYXRhRW50cnknLCB7XG4gICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgIGl0ZW06IHtcbiAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICBCdWNrZXQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JykpLFxuICAgICAgICBLZXk6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQua2V5JykpLFxuICAgICAgICBXb3JrZmxvd1N0YXR1czogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygncGVuZGluZycpLFxuICAgICAgICBTdGF0ZU1hY2hpbmVFeGVjSWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQkLkV4ZWN1dGlvbi5JZCcpKSxcbiAgICAgIH0sXG4gICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgIH0pO1xuXG4gICAgLy8gRmlsZSBtb3ZlbWVudCBvcGVyYXRpb25zXG4gICAgY29uc3QgbW92ZVRvRmFpbGVkID0gdGhpcy5jcmVhdGVNb3ZlVG9GYWlsZWRDaGFpbigpO1xuICAgIGNvbnN0IG1vdmVUb1Byb2Nlc3NlZCA9IHRoaXMuY3JlYXRlTW92ZVRvUHJvY2Vzc2VkQ2hhaW4oKTtcblxuICAgIGNvbnN0IHByb2Nlc3NpbmdDaGFpbiA9IHByb2Nlc3NpbmdTdGVwXG4gICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ1Byb2Nlc3NpbmdGYWlsRERCVXBkYXRlJywge1xuICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAga2V5OiB7XG4gICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cycsXG4gICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ3Byb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9KVxuICAgICAgLm5leHQoXG4gICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdQcm9jZXNzaW5nU3VjY2Vzc1VwZGF0ZScsIHtcbiAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzLCBQcm9jZXNzaW5nUmVzdWx0ID0gOnByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygncHJvY2Vzc2luZy1jb21wbGV0ZScpLFxuICAgICAgICAgICAgJzpwcm9jZXNzaW5nUmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQucHJvY2Vzc2luZ1Jlc3VsdCcpKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAvLyBCdWlsZCB0aGUgY29tcGxldGUgY2hhaW4gaW5jbHVkaW5nIG9wdGlvbmFsIHN0ZXBzXG4gICAgaWYgKGVucmljaG1lbnRTdGVwKSB7XG4gICAgICBjb25zdCBlbnJpY2htZW50Q2hhaW4gPSBlbnJpY2htZW50U3RlcFxuICAgICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ0VucmljaG1lbnRGYWlsRERCVXBkYXRlJywge1xuICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnZW5yaWNobWVudC1mYWlsdXJlJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KS5uZXh0KG1vdmVUb0ZhaWxlZCksIHtcbiAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICB9KVxuICAgICAgICAubmV4dChcbiAgICAgICAgICBuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnRW5yaWNobWVudFN1Y2Nlc3NVcGRhdGUnLCB7XG4gICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMsIEVucmljaG1lbnRSZXN1bHQgPSA6ZW5yaWNobWVudFJlc3VsdCcsXG4gICAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAgICc6bmV3U3RhdHVzJzogcG9zdFByb2Nlc3NpbmdTdGVwID8gRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnZW5yaWNobWVudC1jb21wbGV0ZScpIDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnY29tcGxldGUnKSxcbiAgICAgICAgICAgICAgJzplbnJpY2htZW50UmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQuZW5yaWNoZWRSZXN1bHQnKSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgIHByb2Nlc3NpbmdDaGFpbi5uZXh0KGVucmljaG1lbnRDaGFpbik7XG5cbiAgICAgIGlmIChwb3N0UHJvY2Vzc2luZ1N0ZXApIHtcbiAgICAgICAgY29uc3QgcG9zdFByb2Nlc3NpbmdDaGFpbiA9IHBvc3RQcm9jZXNzaW5nU3RlcFxuICAgICAgICAgIC5hZGRDYXRjaChuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnUG9zdFByb2Nlc3NpbmdGYWlsRERCVXBkYXRlJywge1xuICAgICAgICAgICAgdGFibGU6IHRoaXMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUsXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzJyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdwb3N0LXByb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm5leHQoXG4gICAgICAgICAgICBuZXcgRHluYW1vVXBkYXRlSXRlbSh0aGlzLCAnUG9zdFByb2Nlc3NpbmdTdWNjZXNzVXBkYXRlJywge1xuICAgICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cywgUG9zdFByb2Nlc3NpbmdSZXN1bHQgPSA6cG9zdFByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdjb21wbGV0ZScpLFxuICAgICAgICAgICAgICAgICc6cG9zdFByb2Nlc3NpbmdSZXN1bHQnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLmpzb25Ub1N0cmluZyhKc29uUGF0aC5vYmplY3RBdCgnJC5wb3N0UHJvY2Vzc2VkUmVzdWx0JykpKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICAgICApO1xuICAgICAgICBlbnJpY2htZW50Q2hhaW4ubmV4dChwb3N0UHJvY2Vzc2luZ0NoYWluKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVucmljaG1lbnRDaGFpbi5uZXh0KG1vdmVUb1Byb2Nlc3NlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3N0UHJvY2Vzc2luZ1N0ZXApIHtcbiAgICAgIGNvbnN0IHBvc3RQcm9jZXNzaW5nQ2hhaW4gPSBwb3N0UHJvY2Vzc2luZ1N0ZXBcbiAgICAgICAgLmFkZENhdGNoKG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdQb3N0UHJvY2Vzc2luZ0ZhaWxEREJVcGRhdGUnLCB7XG4gICAgICAgICAgdGFibGU6IHRoaXMuZG9jdW1lbnRQcm9jZXNzaW5nVGFibGUsXG4gICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cycsXG4gICAgICAgICAgZXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdwb3N0LXByb2Nlc3NpbmctZmFpbHVyZScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSkubmV4dChtb3ZlVG9GYWlsZWQpLCB7XG4gICAgICAgICAgcmVzdWx0UGF0aDogSnNvblBhdGguRElTQ0FSRCxcbiAgICAgICAgfSlcbiAgICAgICAgLm5leHQoXG4gICAgICAgICAgbmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ1Bvc3RQcm9jZXNzaW5nU3VjY2Vzc1VwZGF0ZScsIHtcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgICAga2V5OiB7XG4gICAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVFeHByZXNzaW9uOiAnU0VUIFdvcmtmbG93U3RhdHVzID0gOm5ld1N0YXR1cywgUG9zdFByb2Nlc3NpbmdSZXN1bHQgPSA6cG9zdFByb2Nlc3NpbmdSZXN1bHQnLFxuICAgICAgICAgICAgZXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczoge1xuICAgICAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ2NvbXBsZXRlJyksXG4gICAgICAgICAgICAgICc6cG9zdFByb2Nlc3NpbmdSZXN1bHQnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLmpzb25Ub1N0cmluZyhKc29uUGF0aC5vYmplY3RBdCgnJC5wb3N0UHJvY2Vzc2VkUmVzdWx0JykpKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICAgKTtcbiAgICAgIHByb2Nlc3NpbmdDaGFpbi5uZXh0KHBvc3RQcm9jZXNzaW5nQ2hhaW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBvcHRpb25hbCBzdGVwcyAtIG1hcmsgYXMgY29tcGxldGUgYWZ0ZXIgZXh0cmFjdGlvblxuICAgICAgcHJvY2Vzc2luZ0NoYWluLm5leHQoXG4gICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdXb3JrZmxvd0NvbXBsZXRlVXBkYXRlJywge1xuICAgICAgICAgIHRhYmxlOiB0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLFxuICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgRG9jdW1lbnRJZDogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5zdHJpbmdBdCgnJC5kb2N1bWVudElkJykpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMnLFxuICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICc6bmV3U3RhdHVzJzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZygnY29tcGxldGUnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLm5leHQobW92ZVRvUHJvY2Vzc2VkKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2Zsb3dEZWZpbml0aW9uID0gaW5pdE1ldGFkYXRhRW50cnkubmV4dChcbiAgICAgIGNsYXNzaWZpY2F0aW9uU3RlcFxuICAgICAgICAuYWRkQ2F0Y2gobmV3IER5bmFtb1VwZGF0ZUl0ZW0odGhpcywgJ0NsYXNzaWZpY2F0aW9uRmFpbEREQlVwZGF0ZScsIHtcbiAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgIERvY3VtZW50SWQ6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVwZGF0ZUV4cHJlc3Npb246ICdTRVQgV29ya2Zsb3dTdGF0dXMgPSA6bmV3U3RhdHVzJyxcbiAgICAgICAgICBleHByZXNzaW9uQXR0cmlidXRlVmFsdWVzOiB7XG4gICAgICAgICAgICAnOm5ld1N0YXR1cyc6IER5bmFtb0F0dHJpYnV0ZVZhbHVlLmZyb21TdHJpbmcoJ2NsYXNzaWZpY2F0aW9uLWZhaWx1cmUnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pLm5leHQobW92ZVRvRmFpbGVkKSwge1xuICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgIH0pXG4gICAgICAgIC5uZXh0KFxuICAgICAgICAgIG5ldyBEeW5hbW9VcGRhdGVJdGVtKHRoaXMsICdDbGFzc2lmaWNhdGlvblN1Y2Nlc3NVcGRhdGUnLCB7XG4gICAgICAgICAgICB0YWJsZTogdGhpcy5kb2N1bWVudFByb2Nlc3NpbmdUYWJsZSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICBEb2N1bWVudElkOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBkYXRlRXhwcmVzc2lvbjogJ1NFVCBXb3JrZmxvd1N0YXR1cyA9IDpuZXdTdGF0dXMsIENsYXNzaWZpY2F0aW9uUmVzdWx0ID0gOmNsYXNzaWZpY2F0aW9uUmVzdWx0JyxcbiAgICAgICAgICAgIGV4cHJlc3Npb25BdHRyaWJ1dGVWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgJzpuZXdTdGF0dXMnOiBEeW5hbW9BdHRyaWJ1dGVWYWx1ZS5mcm9tU3RyaW5nKCdjbGFzc2lmaWNhdGlvbi1jb21wbGV0ZScpLFxuICAgICAgICAgICAgICAnOmNsYXNzaWZpY2F0aW9uUmVzdWx0JzogRHluYW1vQXR0cmlidXRlVmFsdWUuZnJvbVN0cmluZyhKc29uUGF0aC5qc29uVG9TdHJpbmcoSnNvblBhdGgub2JqZWN0QXQoJyQuY2xhc3NpZmljYXRpb25SZXN1bHQnKSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKS5uZXh0KHByb2Nlc3NpbmdDaGFpbik7XG5cbiAgICBjb25zdCByb2xlID0gdGhpcy5jcmVhdGVTdGF0ZU1hY2hpbmVSb2xlKCk7XG4gICAgdGhpcy5lbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQocm9sZSk7XG4gICAgaWYgKHRoaXMuYnVja2V0RW5jcnlwdGlvbktleSkge1xuICAgICAgdGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5LmdyYW50RW5jcnlwdERlY3J5cHQocm9sZSk7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUodGhpcywgc3RhdGVNYWNoaW5lSWQsIHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBEZWZpbml0aW9uQm9keS5mcm9tQ2hhaW5hYmxlKHdvcmtmbG93RGVmaW5pdGlvbiksXG4gICAgICB0aW1lb3V0OiB0aGlzLnByb3BzLndvcmtmbG93VGltZW91dCB8fCBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHJvbGUsXG4gICAgICBlbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogbmV3IEN1c3RvbWVyTWFuYWdlZEVuY3J5cHRpb25Db25maWd1cmF0aW9uKHRoaXMuZW5jcnlwdGlvbktleSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmhhbmRsZVdvcmtmbG93VHJpZ2dlcihzdGF0ZU1hY2hpbmUpO1xuXG4gICAgcmV0dXJuIHN0YXRlTWFjaGluZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVXb3JrZmxvd1RyaWdnZXIoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpIHtcbiAgICB0aGlzLmJ1Y2tldC5hZGRFdmVudE5vdGlmaWNhdGlvbihFdmVudFR5cGUuT0JKRUNUX0NSRUFURUQsIG5ldyBTcXNEZXN0aW5hdGlvbih0aGlzLnF1ZXVlKSwge1xuICAgICAgcHJlZml4OiBEb2N1bWVudFByb2Nlc3NpbmdQcmVmaXguUkFXLFxuICAgIH0pO1xuICAgIHRoaXMuY3JlYXRlU1FTQ29uc3VtZXJMYW1iZGEoc3RhdGVNYWNoaW5lKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU1FTQ29uc3VtZXJMYW1iZGEoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiBGdW5jdGlvbiB7XG4gICAgY29uc3QgeyByZWdpb24sIGFjY291bnQgfSA9IExhbWJkYUlhbVV0aWxzLmdldFN0YWNrSW5mbyh0aGlzKTtcbiAgICAvLyBDcmVhdGUgbG9ncyBwZXJtaXNzaW9ucyBhbmQgZ2V0IHVuaXF1ZSBmdW5jdGlvbiBuYW1lXG4gICAgY29uc3QgbG9nc1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnU1FTQ29uc3VtZXInLFxuICAgICAgcmVnaW9uLFxuICAgICAgYWNjb3VudCxcbiAgICAgIGVuYWJsZU9ic2VydmFiaWxpdHk6IHRoaXMucHJvcHMuZW5hYmxlT2JzZXJ2YWJpbGl0eSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBwb2xpY3kgc3RhdGVtZW50cyBmb3IgU1FTIGNvbnN1bWVyIExhbWJkYVxuICAgIGNvbnN0IHBvbGljeVN0YXRlbWVudHMgPSBbXG4gICAgICAuLi5sb2dzUGVybWlzc2lvbnMucG9saWN5U3RhdGVtZW50cyxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogWydzdGF0ZXM6U3RhcnRFeGVjdXRpb24nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybl0sXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubmV0d29yaykge1xuICAgICAgcG9saWN5U3RhdGVtZW50cy5wdXNoKExhbWJkYUlhbVV0aWxzLmdlbmVyYXRlTGFtYmRhVlBDUGVybWlzc2lvbnMoKSk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIElBTSByb2xlIGZvciBTUVMgY29uc3VtZXIgTGFtYmRhXG4gICAgY29uc3Qgc3FzQ29uc3VtZXJSb2xlID0gbmV3IFJvbGUodGhpcywgJ1NRU0NvbnN1bWVyUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBTUVNDb25zdW1lckV4ZWN1dGlvblBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBwb2xpY3lTdGF0ZW1lbnRzLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChzcXNDb25zdW1lclJvbGUpO1xuXG4gICAgLy8gQ3JlYXRlIFNRUyBjb25zdW1lciBMYW1iZGEgZnVuY3Rpb25cbiAgICBjb25zdCBzcXNDb25zdW1lckxhbWJkYSA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnU1FTQ29uc3VtZXInLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGxvZ3NQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgcm9sZTogc3FzQ29uc3VtZXJSb2xlLFxuICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICcvcmVzb3VyY2VzL2RlZmF1bHQtc3FzLWNvbnN1bWVyJyksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTVEFURV9NQUNISU5FX0FSTjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICAgICAgLi4uUG93ZXJ0b29sc0NvbmZpZy5nZW5lcmF0ZURlZmF1bHRMYW1iZGFDb25maWcodGhpcy5wcm9wcy5lbmFibGVPYnNlcnZhYmlsaXR5LCB0aGlzLm1ldHJpY05hbWVzcGFjZSwgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSksXG4gICAgICB9LFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29uc3VtZXMgU1FTIG1lc3NhZ2VzIGFuZCB0cmlnZ2VycyBTdGVwIEZ1bmN0aW9ucyBleGVjdXRpb25zIGZvciBkb2N1bWVudCBwcm9jZXNzaW5nJyxcbiAgICAgIGVudmlyb25tZW50RW5jcnlwdGlvbjogdGhpcy5lbmNyeXB0aW9uS2V5LFxuICAgICAgdnBjOiB0aGlzLnByb3BzLm5ldHdvcmsgPyB0aGlzLnByb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5wcm9wcy5uZXR3b3JrID8gdGhpcy5wcm9wcy5uZXR3b3JrLmFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCkgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgU1FTIGV2ZW50IHNvdXJjZSB0byBMYW1iZGFcbiAgICBzcXNDb25zdW1lckxhbWJkYS5hZGRFdmVudFNvdXJjZShcbiAgICAgIG5ldyBTcXNFdmVudFNvdXJjZSh0aGlzLnF1ZXVlLCB7XG4gICAgICAgIGJhdGNoU2l6ZTogMTAsXG4gICAgICAgIG1heEJhdGNoaW5nV2luZG93OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICByZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4gc3FzQ29uc3VtZXJMYW1iZGE7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0YXRlTWFjaGluZVJvbGUoKTogUm9sZSB7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsICdTdGF0ZU1hY2hpbmVSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnc3RhdGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFN0YXRlTWFjaGluZUV4ZWN1dGlvblBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0JywgJ3MzOkNvcHlPYmplY3QnLCAnczM6RGVsZXRlT2JqZWN0JywgJ3MzOlB1dE9iamVjdCddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2R5bmFtb2RiOlB1dEl0ZW0nLCAnZHluYW1vZGI6VXBkYXRlSXRlbSddLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmRvY3VtZW50UHJvY2Vzc2luZ1RhYmxlLnRhYmxlQXJuXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTW92ZVRvRmFpbGVkQ2hhaW4oKSB7XG4gICAgY29uc3QgZmFpbGVkQ2hhaW4gPSBuZXcgQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0NvcHlUb0ZhaWxlZCcsIHtcbiAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICBhY3Rpb246ICdjb3B5T2JqZWN0JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgQ29weVNvdXJjZTogSnNvblBhdGguZm9ybWF0KCd7fS97fScsIEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSksXG4gICAgICAgIEtleTogSnNvblBhdGguZm9ybWF0KCdmYWlsZWQve30nLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpKSxcbiAgICAgIH0sXG4gICAgICBpYW1SZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgfSkubmV4dChcbiAgICAgIG5ldyBDYWxsQXdzU2VydmljZSh0aGlzLCAnRGVsZXRlRnJvbVJhdycsIHtcbiAgICAgICAgc2VydmljZTogJ3MzJyxcbiAgICAgICAgYWN0aW9uOiAnZGVsZXRlT2JqZWN0JyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEJ1Y2tldDogSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JyksXG4gICAgICAgICAgS2V5OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSxcbiAgICAgICAgfSxcbiAgICAgICAgaWFtUmVzb3VyY2VzOiBbYCR7dGhpcy5idWNrZXQuYnVja2V0QXJufS8qYF0sXG4gICAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuZXZlbnRicmlkZ2VCcm9rZXIpIHtcbiAgICAgIGZhaWxlZENoYWluLm5leHQoXG4gICAgICAgIHRoaXMucHJvcHMuZXZlbnRicmlkZ2VCcm9rZXIuc2VuZFZpYVNmbkNoYWluKFxuICAgICAgICAgICdkb2N1bWVudC1wcm9jZXNzaW5nLWZhaWxlZCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZG9jdW1lbnRJZDogSnNvblBhdGguc3RyaW5nQXQoJyQuZG9jdW1lbnRJZCcpLFxuICAgICAgICAgICAgYnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgICAgIGZpbGVuYW1lOiBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWlsZWRDaGFpbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTW92ZVRvUHJvY2Vzc2VkQ2hhaW4oKSB7XG4gICAgY29uc3QgcHJvY2Vzc2VkQ2hhaW4gPSBuZXcgQ2FsbEF3c1NlcnZpY2UodGhpcywgJ0NvcHlUb1Byb2Nlc3NlZCcsIHtcbiAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICBhY3Rpb246ICdjb3B5T2JqZWN0JyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgQnVja2V0OiBKc29uUGF0aC5zdHJpbmdBdCgnJC5idWNrZXQnKSxcbiAgICAgICAgQ29weVNvdXJjZTogSnNvblBhdGguZm9ybWF0KCd7fS97fScsIEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5rZXknKSksXG4gICAgICAgIEtleTogSnNvblBhdGguZm9ybWF0KCdwcm9jZXNzZWQve30nLCBKc29uUGF0aC5zdHJpbmdBdCgnJC5maWxlbmFtZScpKSxcbiAgICAgIH0sXG4gICAgICBpYW1SZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIHJlc3VsdFBhdGg6IEpzb25QYXRoLkRJU0NBUkQsXG4gICAgfSkubmV4dChcbiAgICAgIG5ldyBDYWxsQXdzU2VydmljZSh0aGlzLCAnRGVsZXRlRnJvbVJhd1N1Y2Nlc3MnLCB7XG4gICAgICAgIHNlcnZpY2U6ICdzMycsXG4gICAgICAgIGFjdGlvbjogJ2RlbGV0ZU9iamVjdCcsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBCdWNrZXQ6IEpzb25QYXRoLnN0cmluZ0F0KCckLmJ1Y2tldCcpLFxuICAgICAgICAgIEtleTogSnNvblBhdGguc3RyaW5nQXQoJyQua2V5JyksXG4gICAgICAgIH0sXG4gICAgICAgIGlhbVJlc291cmNlczogW2Ake3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICByZXN1bHRQYXRoOiBKc29uUGF0aC5ESVNDQVJELFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmV2ZW50YnJpZGdlQnJva2VyKSB7XG4gICAgICBwcm9jZXNzZWRDaGFpbi5uZXh0KFxuICAgICAgICB0aGlzLnByb3BzLmV2ZW50YnJpZGdlQnJva2VyLnNlbmRWaWFTZm5DaGFpbihcbiAgICAgICAgICAnZG9jdW1lbnQtcHJvY2Vzc2VkLXN1Y2Nlc3NmdWwnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY3VtZW50SWQ6IEpzb25QYXRoLnN0cmluZ0F0KCckLmRvY3VtZW50SWQnKSxcbiAgICAgICAgICAgIGJ1Y2tldDogSnNvblBhdGguc3RyaW5nQXQoJyQuYnVja2V0JyksXG4gICAgICAgICAgICBmaWxlbmFtZTogSnNvblBhdGguc3RyaW5nQXQoJyQuZmlsZW5hbWUnKSxcbiAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9uOiBKc29uUGF0aC5zdHJpbmdBdCgnJC5jbGFzc2lmaWNhdGlvblJlc3VsdC5kb2N1bWVudENsYXNzaWZpY2F0aW9uJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NlZENoYWluO1xuICB9XG5cbiAgcHVibGljIG1ldHJpY3MoKTogSU1ldHJpY1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24gc3RlcCBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqICoqQ1JJVElDQUwqKjogTXVzdCBzZXQgYG91dHB1dFBhdGhgIHRvIHByZXNlcnZlIHdvcmtmbG93IHN0YXRlIGZvciBzdWJzZXF1ZW50IHN0ZXBzLlxuICAgKiBUaGUgY2xhc3NpZmljYXRpb24gcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQuY2xhc3NpZmljYXRpb25SZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBjbGFzc2lmaWNhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNsYXNzaWZpY2F0aW9uU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZTtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZG9jdW1lbnQgcHJvY2Vzc2luZyBzdGVwIG9mIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogKipDUklUSUNBTCoqOiBNdXN0IHNldCBgb3V0cHV0UGF0aGAgdG8gcHJlc2VydmUgd29ya2Zsb3cgc3RhdGUgZm9yIHN1YnNlcXVlbnQgc3RlcHMuXG4gICAqIFRoZSBleHRyYWN0aW9uIHJlc3VsdCBzaG91bGQgYmUgYXZhaWxhYmxlIGF0IGAkLnByb2Nlc3NpbmdSZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBleHRyYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGU7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG9wdGlvbmFsIGRvY3VtZW50IGVucmljaG1lbnQgc3RlcCBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqICoqQ1JJVElDQUwqKjogSWYgaW1wbGVtZW50ZWQsIG11c3Qgc2V0IGBvdXRwdXRQYXRoYCB0byBwcmVzZXJ2ZSB3b3JrZmxvdyBzdGF0ZS5cbiAgICogVGhlIGVucmljaG1lbnQgcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQuZW5yaWNoZWRSZXN1bHRgIGZvciBEeW5hbW9EQiBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBTdGVwIEZ1bmN0aW9ucyB0YXNrIGZvciBkb2N1bWVudCBlbnJpY2htZW50LCBvciB1bmRlZmluZWQgdG8gc2tpcCB0aGlzIHN0ZXBcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBlbnJpY2htZW50U3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgb3B0aW9uYWwgcG9zdC1wcm9jZXNzaW5nIHN0ZXAgb2YgdGhlIHdvcmtmbG93LlxuICAgKlxuICAgKiAqKkNSSVRJQ0FMKio6IElmIGltcGxlbWVudGVkLCBtdXN0IHNldCBgb3V0cHV0UGF0aGAgdG8gcHJlc2VydmUgd29ya2Zsb3cgc3RhdGUuXG4gICAqIFRoZSBwb3N0LXByb2Nlc3NpbmcgcmVzdWx0IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYCQucG9zdFByb2Nlc3NlZFJlc3VsdGAgZm9yIER5bmFtb0RCIHN0b3JhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIFN0ZXAgRnVuY3Rpb25zIHRhc2sgZm9yIHBvc3QtcHJvY2Vzc2luZywgb3IgdW5kZWZpbmVkIHRvIHNraXAgdGhpcyBzdGVwXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcG9zdFByb2Nlc3NpbmdTdGVwKCk6IERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIHwgdW5kZWZpbmVkO1xufVxuIl19
@@ -100,6 +100,7 @@ class BedrockDocumentProcessing extends base_document_processing_1.BaseDocumentP
100
100
  functionName: 'bedrock-idp-classification',
101
101
  region,
102
102
  scope: this,
103
+ enableObservability: this.bedrockDocumentProcessingProps.enableObservability,
103
104
  });
104
105
  this.encryptionKey.grantEncryptDecrypt(role);
105
106
  if (this.bucketEncryptionKey) {
@@ -262,7 +263,7 @@ class BedrockDocumentProcessing extends base_document_processing_1.BaseDocumentP
262
263
  }
263
264
  exports.BedrockDocumentProcessing = BedrockDocumentProcessing;
264
265
  _a = JSII_RTTI_SYMBOL_1;
265
- BedrockDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BedrockDocumentProcessing", version: "1.0.0" };
266
+ BedrockDocumentProcessing[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.BedrockDocumentProcessing", version: "1.0.1" };
266
267
  BedrockDocumentProcessing.DEFAULT_CLASSIFICATION_MODEL_ID = aws_bedrock_1.FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0;
267
268
  BedrockDocumentProcessing.DEFAULT_PROCESSING_MODEL_ID = aws_bedrock_1.FoundationModelIdentifier.ANTHROPIC_CLAUDE_3_7_SONNET_20250219_V1_0;
268
269
  BedrockDocumentProcessing.DEFAULT_CLASSIFICATION_PROMPT = `
@@ -294,4 +295,4 @@ BedrockDocumentProcessing.DEFAULT_PROCESSING_PROMPT = `
294
295
  Attached document is as follows:
295
296
 
296
297
  `;
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5Qyx5REFBb0U7QUFDcEUsaURBQXFFO0FBQ3JFLGlEQUFzRztBQUN0Ryx1REFBZ0U7QUFFaEUsaUZBQW1FO0FBRW5FLHlFQUE2SDtBQUM3SCw0Q0FBK0M7QUFDL0MsNENBQThDO0FBQzlDLG9GQUFnRjtBQTBEaEY7OztHQUdHO0FBQ0gsSUFBWSxpQ0FLWDtBQUxELFdBQVksaUNBQWlDO0lBQzNDLDhDQUE4QztJQUM5Qyw4Q0FBUyxDQUFBO0lBQ1QsOENBQThDO0lBQzlDLDhDQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsaUNBQWlDLGlEQUFqQyxpQ0FBaUMsUUFLNUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLHlCQUEwQixTQUFRLGlEQUFzQjtJQTRDbkU7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsd0NBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRSx3Q0FBOEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RyxDQUFDO1FBRUQsSUFBSSxDQUFDLDhC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QUE3UUgsOERBOFFDOzs7QUE1UTJCLHlEQUErQixHQUNyRCx1Q0FBeUIsQ0FBQyx5Q0FBeUMsQ0FBQztBQUM5QyxxREFBMkIsR0FDakQsdUNBQXlCLENBQUMseUNBQXlDLENBQUM7QUFDOUMsdURBQTZCLEdBQUc7Ozs7Ozs7OztHQVN6RCxDQUFDO0FBRXdCLG1EQUF5QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQnJELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBQeXRob25GdW5jdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9jayc7XG5pbXBvcnQgeyBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IFJvbGUsIFNlcnZpY2VQcmluY2lwYWwsIFBvbGljeVN0YXRlbWVudCwgUG9saWN5RG9jdW1lbnQsIEVmZmVjdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgRnVuY3Rpb24sIEFyY2hpdGVjdHVyZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgU3RhdGVNYWNoaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0IHsgTGFtYmRhSW52b2tlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nLCBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMsIERvY3VtZW50UHJvY2Vzc2luZ1N0ZXBUeXBlIH0gZnJvbSAnLi9iYXNlLWRvY3VtZW50LXByb2Nlc3NpbmcnO1xuaW1wb3J0IHsgRGVmYXVsdFJ1bnRpbWVzIH0gZnJvbSAnLi4vZnJhbWV3b3JrJztcbmltcG9ydCB7IExhbWJkYUlhbVV0aWxzIH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IFBvd2VydG9vbHNDb25maWcgfSBmcm9tICcuLi91dGlsaXRpZXMvb2JzZXJ2YWJpbGl0eS9wb3dlcnRvb2xzLWNvbmZpZyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nIGNvbnN0cnVjdC5cbiAqIEV4dGVuZHMgQmFzZURvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIHdpdGggQmVkcm9jay1zcGVjaWZpYyBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyBleHRlbmRzIEJhc2VEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyB7XG4gIC8qKlxuICAgKiBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWwgZm9yIGRvY3VtZW50IGNsYXNzaWZpY2F0aW9uIHN0ZXAuXG4gICAqIEBkZWZhdWx0IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIuQU5USFJPUElDX0NMQVVERV8zXzdfU09OTkVUXzIwMjUwMjE5X1YxXzBcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uTW9kZWxJZD86IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXI7XG4gIC8qKlxuICAgKiBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWwgZm9yIGRvY3VtZW50IGV4dHJhY3Rpb24gc3RlcC5cbiAgICogQGRlZmF1bHQgRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllci5BTlRIUk9QSUNfQ0xBVURFXzNfN19TT05ORVRfMjAyNTAyMTlfVjFfMFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvY2Vzc2luZ01vZGVsSWQ/OiBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyO1xuICAvKipcbiAgICogQ3VzdG9tIHByb21wdCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24uXG4gICAqIE11c3QgaW5jbHVkZSBwbGFjZWhvbGRlciBmb3IgZG9jdW1lbnQgY29udGVudC5cbiAgICogQGRlZmF1bHQgREVGQVVMVF9DTEFTU0lGSUNBVElPTl9QUk9NUFRcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uUHJvbXB0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHByb21wdCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnQgZXh0cmFjdGlvbi5cbiAgICogTXVzdCBpbmNsdWRlIHBsYWNlaG9sZGVyIGZvciBkb2N1bWVudCBjb250ZW50IGFuZCBjbGFzc2lmaWNhdGlvbiByZXN1bHQuXG4gICAqIEBkZWZhdWx0IERFRkFVTFRfRVhUUkFDVElPTl9QUk9NUFRcbiAgICovXG4gIHJlYWRvbmx5IHByb2Nlc3NpbmdQcm9tcHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIGRvY3VtZW50IGVucmljaG1lbnQgc3RlcC5cbiAgICogSWYgcHJvdmlkZWQsIHdpbGwgYmUgaW52b2tlZCBhZnRlciBleHRyYWN0aW9uIHdpdGggd29ya2Zsb3cgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBlbnJpY2htZW50TGFtYmRhRnVuY3Rpb24/OiBGdW5jdGlvbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgcG9zdC1wcm9jZXNzaW5nIHN0ZXAuXG4gICAqIElmIHByb3ZpZGVkLCB3aWxsIGJlIGludm9rZWQgYWZ0ZXIgZW5yaWNobWVudCB3aXRoIHdvcmtmbG93IHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFByb2Nlc3NpbmdMYW1iZGFGdW5jdGlvbj86IEZ1bmN0aW9uO1xuICAvKipcbiAgICogVGltZW91dCBmb3IgaW5kaXZpZHVhbCBTdGVwIEZ1bmN0aW9ucyB0YXNrcyAoY2xhc3NpZmljYXRpb24sIGV4dHJhY3Rpb24sIGV0Yy4pLlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSBzdGVwVGltZW91dHM/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBjcm9zcy1yZWdpb24gaW5mZXJlbmNlIGZvciBCZWRyb2NrIG1vZGVscyB0byBpbXByb3ZlIGF2YWlsYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UuXG4gICAqIFdoZW4gZW5hYmxlZCwgdXNlcyBpbmZlcmVuY2UgcHJvZmlsZXMgaW5zdGVhZCBvZiBkaXJlY3QgbW9kZWwgaW52b2NhdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVzZUNyb3NzUmVnaW9uSW5mZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByZWZpeCBmb3IgY3Jvc3MtcmVnaW9uIGluZmVyZW5jZSBjb25maWd1cmF0aW9uLlxuICAgKiBPbmx5IHVzZWQgd2hlbiB1c2VDcm9zc1JlZ2lvbkluZmVyZW5jZSBpcyB0cnVlLlxuICAgKiBAZGVmYXVsdCBCZWRyb2NrQ3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXguVVNcbiAgICovXG4gIHJlYWRvbmx5IGNyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4PzogQmVkcm9ja0Nyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4O1xufVxuXG4vKipcbiAqIENyb3NzLXJlZ2lvbiBpbmZlcmVuY2UgcHJlZml4IG9wdGlvbnMgZm9yIEJlZHJvY2sgbW9kZWxzLlxuICogVXNlZCB0byBjb25maWd1cmUgaW5mZXJlbmNlIHByb2ZpbGVzIGZvciBpbXByb3ZlZCBhdmFpbGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlLlxuICovXG5leHBvcnQgZW51bSBCZWRyb2NrQ3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXgge1xuICAvKiogVVMtYmFzZWQgY3Jvc3MtcmVnaW9uIGluZmVyZW5jZSBwcm9maWxlICovXG4gIFVTID0gJ3VzJyxcbiAgLyoqIEVVLWJhc2VkIGNyb3NzLXJlZ2lvbiBpbmZlcmVuY2UgcHJvZmlsZSAqL1xuICBFVSA9ICdldScsXG59XG5cbi8qKlxuICogRG9jdW1lbnQgcHJvY2Vzc2luZyB3b3JrZmxvdyBwb3dlcmVkIGJ5IEFtYXpvbiBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWxzLlxuICpcbiAqIEV4dGVuZHMgQmFzZURvY3VtZW50UHJvY2Vzc2luZyB0byBwcm92aWRlIEFJLXBvd2VyZWQgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24gYW5kIGV4dHJhY3Rpb25cbiAqIHVzaW5nIEFtYXpvbiBCZWRyb2NrIGZvdW5kYXRpb24gbW9kZWxzLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mZmVyczpcbiAqXG4gKiAjIyBLZXkgRmVhdHVyZXNcbiAqIC0gKipBSS1Qb3dlcmVkIENsYXNzaWZpY2F0aW9uKio6IFVzZXMgQ2xhdWRlIDMuNyBTb25uZXQgKGNvbmZpZ3VyYWJsZSkgdG8gY2xhc3NpZnkgZG9jdW1lbnQgdHlwZXNcbiAqIC0gKipJbnRlbGxpZ2VudCBFeHRyYWN0aW9uKio6IEV4dHJhY3RzIHN0cnVjdHVyZWQgZGF0YSBmcm9tIGRvY3VtZW50cyB1c2luZyBmb3VuZGF0aW9uIG1vZGVsc1xuICogLSAqKkNyb3NzLVJlZ2lvbiBJbmZlcmVuY2UqKjogT3B0aW9uYWwgc3VwcG9ydCBmb3IgaW1wcm92ZWQgYXZhaWxhYmlsaXR5IHZpYSBpbmZlcmVuY2UgcHJvZmlsZXNcbiAqIC0gKipGbGV4aWJsZSBQcm9jZXNzaW5nKio6IE9wdGlvbmFsIGVucmljaG1lbnQgYW5kIHBvc3QtcHJvY2Vzc2luZyBMYW1iZGEgZnVuY3Rpb25zXG4gKiAtICoqQ29zdCBPcHRpbWl6ZWQqKjogQ29uZmlndXJhYmxlIHRpbWVvdXRzIGFuZCBtb2RlbCBzZWxlY3Rpb24gZm9yIGNvc3QgY29udHJvbFxuICpcbiAqICMjIFByb2Nlc3NpbmcgV29ya2Zsb3dcbiAqIFMzIFVwbG9hZCDihpIgQ2xhc3NpZmljYXRpb24gKEJlZHJvY2spIOKGkiBFeHRyYWN0aW9uIChCZWRyb2NrKSDihpIgW0VucmljaG1lbnRdIOKGkiBbUG9zdC1Qcm9jZXNzaW5nXSDihpIgUmVzdWx0c1xuICpcbiAqICMjIERlZmF1bHQgTW9kZWxzXG4gKiAtIENsYXNzaWZpY2F0aW9uOiBDbGF1ZGUgMy43IFNvbm5ldCAoYW50aHJvcGljLmNsYXVkZS0zLTctc29ubmV0LTIwMjUwMjE5LXYxOjApXG4gKiAtIEV4dHJhY3Rpb246IENsYXVkZSAzLjcgU29ubmV0IChhbnRocm9waWMuY2xhdWRlLTMtNy1zb25uZXQtMjAyNTAyMTktdjE6MClcbiAqXG4gKiAjIyBQcm9tcHQgVGVtcGxhdGVzXG4gKiBUaGUgY29uc3RydWN0IHVzZXMgZGVmYXVsdCBwcm9tcHRzIHRoYXQgY2FuIGJlIGN1c3RvbWl6ZWQ6XG4gKiAtICoqQ2xhc3NpZmljYXRpb24qKjogQW5hbHl6ZXMgZG9jdW1lbnQgYW5kIHJldHVybnMgSlNPTiB3aXRoIGRvY3VtZW50Q2xhc3NpZmljYXRpb24gZmllbGRcbiAqIC0gKipFeHRyYWN0aW9uKio6IFVzZXMgY2xhc3NpZmljYXRpb24gcmVzdWx0IHRvIGV4dHJhY3QgZW50aXRpZXMgaW4gc3RydWN0dXJlZCBKU09OIGZvcm1hdFxuICpcbiAqICMjIENyb3NzLVJlZ2lvbiBJbmZlcmVuY2VcbiAqIFdoZW4gZW5hYmxlZCwgdXNlcyBCZWRyb2NrIGluZmVyZW5jZSBwcm9maWxlcyBmb3IgaW1wcm92ZWQgYXZhaWxhYmlsaXR5OlxuICogLSBVUyBwcmVmaXg6IFJvdXRlcyB0byBVUy1iYXNlZCByZWdpb25zIGZvciBsb3dlciBsYXRlbmN5XG4gKiAtIEVVIHByZWZpeDogUm91dGVzIHRvIEVVLWJhc2VkIHJlZ2lvbnMgZm9yIGRhdGEgcmVzaWRlbmN5IGNvbXBsaWFuY2VcbiAqL1xuZXhwb3J0IGNsYXNzIEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgZXh0ZW5kcyBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nIHtcblxuICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0xBU1NJRklDQVRJT05fTU9ERUxfSUQ6IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXJcbiAgICA9IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIuQU5USFJPUElDX0NMQVVERV8zXzdfU09OTkVUXzIwMjUwMjE5X1YxXzA7XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUk9DRVNTSU5HX01PREVMX0lEOiBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyXG4gICAgPSBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyLkFOVEhST1BJQ19DTEFVREVfM183X1NPTk5FVF8yMDI1MDIxOV9WMV8wO1xuICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0xBU1NJRklDQVRJT05fUFJPTVBUID0gYFxuICBBbmFseXplIHRoZSBkb2N1bWVudCBiZWxvdywgYW5kIGNsYXNzaWZ5IHRoZSB0eXBlIG9mIGRvY3VtZW50IGl0IGlzIChlZy4gSU5WT0lDRSwgSURFTlRJVFlfRE9DVU1FTlQsIFJFQ0VJUFQsIGV0YykuIFRoZSByZXN1bHQgc2hvdWxkIGJlIGluIEpTT04gYW5kIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgKG9ubHkgcmVzcG9uZCBpbiBKU09OIHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgYW5kIGRvIG5vdCB1c2UgbWFya2Rvd24gdG8gaW5kaWNhdGUgdGhlIGpzb24sIGp1c3Qgb3V0cHV0IHBsYWluIG9sZCBqc29uIHdpdGggbm90aGluZyBlbHNlKTpcblxuICB7XG4gICAgICBkb2N1bWVudENsYXNzaWZpY2F0aW9uOiA8Q0xBU1NJRklDQVRJT04+XG4gIH1cblxuICBBdHRhY2hlZCBkb2N1bWVudCBpcyBhcyBmb2xsb3dzOlxuXG4gIGA7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BST0NFU1NJTkdfUFJPTVBUID0gYFxuICBUaGUgZG9jdW1lbnQgYmVsb3cgaGFzIGJlZW4gY2xhc3NpZmllZCBhcyBbQUNUVUFMX0NMQVNTSUZJQ0FUSU9OXS4gRXh0cmFjdCBpbXBvcnRhbnQgZW50aXRpZXMgZnJvbSB0aGUgZG9jdW1lbnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIEpTT04gZm9sbG93aW5nIHRoZSBzdHJ1Y3R1cmUgYmVsb3cgKG9ubHkgcmVzcG9uZCBpbiBKU09OIHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgYW5kIGRvIG5vdCB1c2UgbWFya2Rvd24gdG8gaW5kaWNhdGUgdGhlIGpzb24sIGp1c3Qgb3V0cHV0IHBsYWluIG9sZCBqc29uIHdpdGggbm90aGluZyBlbHNlKTpcblxuICB7XG4gICAgICBkb2N1bWVudENsYXNzaWZpY2F0aW9uOiA8Q0xBU1NJRklDQVRJT04+LFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIGVudGl0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogPFRZUEUgT0YgRU5USVRZPlxuICAgICAgICAgICAgICAgIHZhbHVlOiA8VkFMVUUgT0YgRU5USVRZPlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLlxuICAgICAgICBdXG4gICAgICB9XG4gIH1cblxuICBBdHRhY2hlZCBkb2N1bWVudCBpcyBhcyBmb2xsb3dzOlxuXG4gIGA7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBzcGVjaWZpYyB0byBCZWRyb2NrIGRvY3VtZW50IHByb2Nlc3NpbmcgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wczogQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzO1xuICAvKiogQ3Jvc3MtcmVnaW9uIGluZmVyZW5jZSBwcmVmaXggZm9yIEJlZHJvY2sgbW9kZWwgcm91dGluZyAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXg6IEJlZHJvY2tDcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeDtcbiAgLyoqIFRoZSBTdGVwIEZ1bmN0aW9ucyBzdGF0ZSBtYWNoaW5lIHRoYXQgb3JjaGVzdHJhdGVzIHRoZSBkb2N1bWVudCBwcm9jZXNzaW5nIHdvcmtmbG93ICovXG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgY29uc3RydWN0LlxuICAgKlxuICAgKiBJbml0aWFsaXplcyB0aGUgQmVkcm9jay1wb3dlcmVkIGRvY3VtZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgd2l0aCBBSSBjbGFzc2lmaWNhdGlvblxuICAgKiBhbmQgZXh0cmFjdGlvbiBjYXBhYmlsaXRpZXMuIENyZWF0ZXMgTGFtYmRhIGZ1bmN0aW9ucyB3aXRoIGFwcHJvcHJpYXRlIElBTSByb2xlc1xuICAgKiBmb3IgQmVkcm9jayBtb2RlbCBpbnZvY2F0aW9uIGFuZCBTMyBhY2Nlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIEJlZHJvY2sgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGlmIChwcm9wcy5uZXR3b3JrKSB7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1iZWRyb2NrJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkJFRFJPQ0spO1xuICAgICAgcHJvcHMubmV0d29yay5jcmVhdGVTZXJ2aWNlRW5kcG9pbnQoJ3ZwY2UtYmVkcm9jay1ydW50aW1lJywgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLkJFRFJPQ0tfUlVOVElNRSk7XG4gICAgfVxuXG4gICAgdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmNyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4ID0gcHJvcHMuY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXggfHwgQmVkcm9ja0Nyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4LlVTO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gdGhpcy5oYW5kbGVTdGF0ZU1hY2hpbmVDcmVhdGlvbignYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLXdvcmtmbG93Jyk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGUgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24gc3RlcCB1c2luZyBBbWF6b24gQmVkcm9jay5cbiAgICpcbiAgICogQ3JlYXRlcyBhIExhbWJkYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIGNvbmZpZ3VyZWQgQmVkcm9jayBtb2RlbCB0byBjbGFzc2lmeVxuICAgKiB0aGUgZG9jdW1lbnQgdHlwZS4gVGhlIGZ1bmN0aW9uIHJlYWRzIHRoZSBkb2N1bWVudCBmcm9tIFMzIGFuZCBzZW5kcyBpdCB0b1xuICAgKiBCZWRyb2NrIHdpdGggdGhlIGNsYXNzaWZpY2F0aW9uIHByb21wdC5cbiAgICpcbiAgICogQHJldHVybnMgTGFtYmRhSW52b2tlIHRhc2sgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2xhc3NpZmljYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBjbGFzc2lmaWNhdGlvblN0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIGNvbnN0IHByb21wdCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmNsYXNzaWZpY2F0aW9uUHJvbXB0IHx8IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcuREVGQVVMVF9DTEFTU0lGSUNBVElPTl9QUk9NUFQ7XG4gICAgY29uc3QgZm1Nb2RlbCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmNsYXNzaWZpY2F0aW9uTW9kZWxJZCB8fCBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nLkRFRkFVTFRfQ0xBU1NJRklDQVRJT05fTU9ERUxfSUQ7XG4gICAgY29uc3QgYWRqdXN0ZWRNb2RlbElkID0gdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMudXNlQ3Jvc3NSZWdpb25JbmZlcmVuY2UgPyBgJHt0aGlzLmNyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4fS4ke2ZtTW9kZWwubW9kZWxJZH1gIDogZm1Nb2RlbC5tb2RlbElkO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLmdlbmVyYXRlTGFtYmRhUm9sZUZvckJlZHJvY2soZm1Nb2RlbCwgJ0NsYXNzaWZpY2F0aW9uTGFtYmRhUm9sZScpO1xuICAgIGNvbnN0IHsgcmVnaW9uLCBhY2NvdW50IH0gPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucyA9IExhbWJkYUlhbVV0aWxzLmNyZWF0ZUxvZ3NQZXJtaXNzaW9ucyh7XG4gICAgICBhY2NvdW50LFxuICAgICAgZnVuY3Rpb25OYW1lOiAnYmVkcm9jay1pZHAtY2xhc3NpZmljYXRpb24nLFxuICAgICAgcmVnaW9uLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcblxuICAgIGlmICh0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMuYnVja2V0RW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KHJvbGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGJlZHJvY2tGdW5jdGlvbiA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnQmVkcm9ja0NsYXNzaWZpY2F0aW9uRnVuY3Rpb24nLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnVuaXF1ZUZ1bmN0aW9uTmFtZSxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgIHJ1bnRpbWU6IERlZmF1bHRSdW50aW1lcy5QWVRIT04sXG4gICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9kZWZhdWx0LWJlZHJvY2staW52b2tlJyksXG4gICAgICByb2xlLFxuICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgdGltZW91dDogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuc3RlcFRpbWVvdXRzIHx8IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBNT0RFTF9JRDogYWRqdXN0ZWRNb2RlbElkLFxuICAgICAgICBQUk9NUFQ6IHByb21wdCxcbiAgICAgICAgSU5WT0tFX1RZUEU6ICdjbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICAgIHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgICAgICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGJlZHJvY2tGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBiZWRyb2NrRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnQ2xhc3NpZmljYXRpb25TdGVwJywge1xuICAgICAgbGFtYmRhRnVuY3Rpb246IGJlZHJvY2tGdW5jdGlvbixcbiAgICAgIHJlc3VsdFBhdGg6ICckLmNsYXNzaWZpY2F0aW9uUmVzdWx0JyxcbiAgICAgIHJlc3VsdFNlbGVjdG9yOiB7XG4gICAgICAgICdkb2N1bWVudENsYXNzaWZpY2F0aW9uLiQnOiAnJC5QYXlsb2FkLmRvY3VtZW50Q2xhc3NpZmljYXRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBkb2N1bWVudCBleHRyYWN0aW9uIHN0ZXAgdXNpbmcgQW1hem9uIEJlZHJvY2suXG4gICAqXG4gICAqIENyZWF0ZXMgYSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBjb25maWd1cmVkIEJlZHJvY2sgbW9kZWwgdG8gZXh0cmFjdFxuICAgKiBzdHJ1Y3R1cmVkIGRhdGEgZnJvbSB0aGUgZG9jdW1lbnQuIFVzZXMgdGhlIGNsYXNzaWZpY2F0aW9uIHJlc3VsdCBmcm9tIHRoZVxuICAgKiBwcmV2aW91cyBzdGVwIHRvIHByb3ZpZGUgY29udGV4dCBmb3IgbW9yZSBhY2N1cmF0ZSBleHRyYWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBMYW1iZGFJbnZva2UgdGFzayBjb25maWd1cmVkIGZvciBkb2N1bWVudCBleHRyYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIGNvbnN0IHByb21wdCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnByb2Nlc3NpbmdQcm9tcHQgfHwgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZy5ERUZBVUxUX1BST0NFU1NJTkdfUFJPTVBUO1xuICAgIGNvbnN0IGZtTW9kZWwgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5wcm9jZXNzaW5nTW9kZWxJZCB8fCBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nLkRFRkFVTFRfUFJPQ0VTU0lOR19NT0RFTF9JRDtcbiAgICBjb25zdCBhZGp1c3RlZE1vZGVsSWQgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy51c2VDcm9zc1JlZ2lvbkluZmVyZW5jZSA/IGAke3RoaXMuY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXh9LiR7Zm1Nb2RlbC5tb2RlbElkfWAgOiBmbU1vZGVsLm1vZGVsSWQ7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuZ2VuZXJhdGVMYW1iZGFSb2xlRm9yQmVkcm9jayhmbU1vZGVsLCAnUHJvY2Vzc2luZ0xhbWJkYVJvbGUnKTtcbiAgICBjb25zdCB7IHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucyA9IExhbWJkYUlhbVV0aWxzLmNyZWF0ZUxvZ3NQZXJtaXNzaW9ucyh7XG4gICAgICBhY2NvdW50LFxuICAgICAgZnVuY3Rpb25OYW1lOiAnYmVkcm9jay1pZHAtcHJvY2Vzc2luZycsXG4gICAgICByZWdpb24sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICBpZiAodGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICB9XG4gICAgY29uc3QgYmVkcm9ja0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCZWRyb2NrRXh0cmFjdGlvbkZ1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdyZXNvdXJjZXMvZGVmYXVsdC1iZWRyb2NrLWludm9rZScpLFxuICAgICAgcm9sZSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnN0ZXBUaW1lb3V0cyB8fCBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTU9ERUxfSUQ6IGFkanVzdGVkTW9kZWxJZCxcbiAgICAgICAgUFJPTVBUOiBwcm9tcHQsXG4gICAgICAgIElOVk9LRV9UWVBFOiAncHJvY2Vzc2luZycsXG4gICAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICAgIHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgICAgICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGJlZHJvY2tGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBiZWRyb2NrRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnUHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogYmVkcm9ja0Z1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQucHJvY2Vzc2luZ1Jlc3VsdCcsXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAnZG9jdW1lbnRDbGFzc2lmaWNhdGlvbi4kJzogJyQuUGF5bG9hZC5kb2N1bWVudENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgJ3Jlc3VsdC4kJzogJyQuUGF5bG9hZC5yZXN1bHQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZW5lcmF0ZUxhbWJkYVJvbGVGb3JCZWRyb2NrKGZtTW9kZWw6IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIsIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsIGlkLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgQmVkcm9ja0ludm9rZVBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Ake3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnYmVkcm9jazpJbnZva2VNb2RlbCcsXG4gICAgICAgICAgICAgICAgJ2JlZHJvY2s6SW52b2tlTW9kZWxXaXRoUmVzcG9uc2VTdHJlYW0nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpiZWRyb2NrOio6OmZvdW5kYXRpb24tbW9kZWwvJHtmbU1vZGVsLm1vZGVsSWR9YCxcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpiZWRyb2NrOiR7cmVnaW9ufToke2FjY291bnR9OmluZmVyZW5jZS1wcm9maWxlLyR7dGhpcy5jcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeH0uJHtmbU1vZGVsLm1vZGVsSWR9YCxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBvcHRpb25hbCBkb2N1bWVudCBlbnJpY2htZW50IHN0ZXAuXG4gICAqXG4gICAqIElmIGFuIGVucmljaG1lbnQgTGFtYmRhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGluIHRoZSBwcm9wcywgY3JlYXRlcyBhIExhbWJkYUludm9rZVxuICAgKiB0YXNrIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBwcm9jZXNzaW5nIG9uIHRoZSBleHRyYWN0ZWQgZGF0YS4gVGhpcyBzdGVwIGlzIHVzZWZ1bFxuICAgKiBmb3IgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgb3IgaW50ZWdyYXRpb24gd2l0aCBleHRlcm5hbCBzeXN0ZW1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBMYW1iZGFJbnZva2UgdGFzayBmb3IgZW5yaWNobWVudCwgb3IgdW5kZWZpbmVkIHRvIHNraXAgdGhpcyBzdGVwXG4gICAqL1xuICBwcm90ZWN0ZWQgZW5yaWNobWVudFN0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuZW5yaWNobWVudExhbWJkYUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdFbnJpY2htZW50U3RlcCcsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5lbnJpY2htZW50TGFtYmRhRnVuY3Rpb24sXG4gICAgICByZXN1bHRQYXRoOiAnJC5lbnJpY2hlZFJlc3VsdCcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGUgb3B0aW9uYWwgcG9zdC1wcm9jZXNzaW5nIHN0ZXAuXG4gICAqXG4gICAqIElmIGEgcG9zdC1wcm9jZXNzaW5nIExhbWJkYSBmdW5jdGlvbiBpcyBwcm92aWRlZCBpbiB0aGUgcHJvcHMsIGNyZWF0ZXMgYSBMYW1iZGFJbnZva2VcbiAgICogdGFzayB0byBwZXJmb3JtIGZpbmFsIHByb2Nlc3Npbmcgb24gdGhlIHdvcmtmbG93IHJlc3VsdHMuIFRoaXMgc3RlcCBpcyB1c2VmdWwgZm9yXG4gICAqIGRhdGEgZm9ybWF0dGluZywgbm90aWZpY2F0aW9ucywgb3IgaW50ZWdyYXRpb24gd2l0aCBkb3duc3RyZWFtIHN5c3RlbXMuXG4gICAqXG4gICAqIEByZXR1cm5zIExhbWJkYUludm9rZSB0YXNrIGZvciBwb3N0LXByb2Nlc3NpbmcsIG9yIHVuZGVmaW5lZCB0byBza2lwIHRoaXMgc3RlcFxuICAgKi9cbiAgcHJvdGVjdGVkIHBvc3RQcm9jZXNzaW5nU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5wb3N0UHJvY2Vzc2luZ0xhbWJkYUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdQb3N0UHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMucG9zdFByb2Nlc3NpbmdMYW1iZGFGdW5jdGlvbixcbiAgICAgIHJlc3VsdFBhdGg6ICckLnBvc3RQcm9jZXNzZWRSZXN1bHQnLFxuICAgIH0pO1xuICB9XG59Il19
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvYmVkcm9jay1kb2N1bWVudC1wcm9jZXNzaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qyw2QkFBNkI7QUFDN0IsOEVBQWtFO0FBQ2xFLDZDQUE4QztBQUM5Qyx5REFBb0U7QUFDcEUsaURBQXFFO0FBQ3JFLGlEQUFzRztBQUN0Ryx1REFBZ0U7QUFFaEUsaUZBQW1FO0FBRW5FLHlFQUE2SDtBQUM3SCw0Q0FBK0M7QUFDL0MsNENBQThDO0FBQzlDLG9GQUFnRjtBQTBEaEY7OztHQUdHO0FBQ0gsSUFBWSxpQ0FLWDtBQUxELFdBQVksaUNBQWlDO0lBQzNDLDhDQUE4QztJQUM5Qyw4Q0FBUyxDQUFBO0lBQ1QsOENBQThDO0lBQzlDLDhDQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsaUNBQWlDLGlEQUFqQyxpQ0FBaUMsUUFLNUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFhLHlCQUEwQixTQUFRLGlEQUFzQjtJQTRDbkU7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsd0NBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRSx3Q0FBOEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RyxDQUFDO1FBRUQsSUFBSSxDQUFDLDhC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aEYsVUFBVSxFQUFFLHVCQUF1QjtTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTlRSCw4REErUUM7OztBQTdRMkIseURBQStCLEdBQ3JELHVDQUF5QixDQUFDLHlDQUF5QyxDQUFDO0FBQzlDLHFEQUEyQixHQUNqRCx1Q0FBeUIsQ0FBQyx5Q0FBeUMsQ0FBQztBQUM5Qyx1REFBNkIsR0FBRzs7Ozs7Ozs7O0dBU3pELENBQUM7QUFFd0IsbURBQXlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFB5dGhvbkZ1bmN0aW9uIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYS1weXRob24tYWxwaGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrJztcbmltcG9ydCB7IEludGVyZmFjZVZwY0VuZHBvaW50QXdzU2VydmljZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgUm9sZSwgU2VydmljZVByaW5jaXBhbCwgUG9saWN5U3RhdGVtZW50LCBQb2xpY3lEb2N1bWVudCwgRWZmZWN0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBGdW5jdGlvbiwgQXJjaGl0ZWN0dXJlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucyc7XG5pbXBvcnQgeyBMYW1iZGFJbnZva2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy10YXNrcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VEb2N1bWVudFByb2Nlc3NpbmcsIEJhc2VEb2N1bWVudFByb2Nlc3NpbmdQcm9wcywgRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfSBmcm9tICcuL2Jhc2UtZG9jdW1lbnQtcHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBEZWZhdWx0UnVudGltZXMgfSBmcm9tICcuLi9mcmFtZXdvcmsnO1xuaW1wb3J0IHsgTGFtYmRhSWFtVXRpbHMgfSBmcm9tICcuLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgUG93ZXJ0b29sc0NvbmZpZyB9IGZyb20gJy4uL3V0aWxpdGllcy9vYnNlcnZhYmlsaXR5L3Bvd2VydG9vbHMtY29uZmlnJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcgY29uc3RydWN0LlxuICogRXh0ZW5kcyBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMgd2l0aCBCZWRyb2NrLXNwZWNpZmljIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIGV4dGVuZHMgQmFzZURvY3VtZW50UHJvY2Vzc2luZ1Byb3BzIHtcbiAgLyoqXG4gICAqIEJlZHJvY2sgZm91bmRhdGlvbiBtb2RlbCBmb3IgZG9jdW1lbnQgY2xhc3NpZmljYXRpb24gc3RlcC5cbiAgICogQGRlZmF1bHQgRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllci5BTlRIUk9QSUNfQ0xBVURFXzNfN19TT05ORVRfMjAyNTAyMTlfVjFfMFxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NpZmljYXRpb25Nb2RlbElkPzogRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllcjtcbiAgLyoqXG4gICAqIEJlZHJvY2sgZm91bmRhdGlvbiBtb2RlbCBmb3IgZG9jdW1lbnQgZXh0cmFjdGlvbiBzdGVwLlxuICAgKiBAZGVmYXVsdCBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyLkFOVEhST1BJQ19DTEFVREVfM183X1NPTk5FVF8yMDI1MDIxOV9WMV8wXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzaW5nTW9kZWxJZD86IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXI7XG4gIC8qKlxuICAgKiBDdXN0b20gcHJvbXB0IHRlbXBsYXRlIGZvciBkb2N1bWVudCBjbGFzc2lmaWNhdGlvbi5cbiAgICogTXVzdCBpbmNsdWRlIHBsYWNlaG9sZGVyIGZvciBkb2N1bWVudCBjb250ZW50LlxuICAgKiBAZGVmYXVsdCBERUZBVUxUX0NMQVNTSUZJQ0FUSU9OX1BST01QVFxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NpZmljYXRpb25Qcm9tcHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gcHJvbXB0IHRlbXBsYXRlIGZvciBkb2N1bWVudCBleHRyYWN0aW9uLlxuICAgKiBNdXN0IGluY2x1ZGUgcGxhY2Vob2xkZXIgZm9yIGRvY3VtZW50IGNvbnRlbnQgYW5kIGNsYXNzaWZpY2F0aW9uIHJlc3VsdC5cbiAgICogQGRlZmF1bHQgREVGQVVMVF9FWFRSQUNUSU9OX1BST01QVFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvY2Vzc2luZ1Byb21wdD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgZG9jdW1lbnQgZW5yaWNobWVudCBzdGVwLlxuICAgKiBJZiBwcm92aWRlZCwgd2lsbCBiZSBpbnZva2VkIGFmdGVyIGV4dHJhY3Rpb24gd2l0aCB3b3JrZmxvdyBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGVucmljaG1lbnRMYW1iZGFGdW5jdGlvbj86IEZ1bmN0aW9uO1xuICAvKipcbiAgICogT3B0aW9uYWwgTGFtYmRhIGZ1bmN0aW9uIGZvciBwb3N0LXByb2Nlc3Npbmcgc3RlcC5cbiAgICogSWYgcHJvdmlkZWQsIHdpbGwgYmUgaW52b2tlZCBhZnRlciBlbnJpY2htZW50IHdpdGggd29ya2Zsb3cgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBwb3N0UHJvY2Vzc2luZ0xhbWJkYUZ1bmN0aW9uPzogRnVuY3Rpb247XG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciBpbmRpdmlkdWFsIFN0ZXAgRnVuY3Rpb25zIHRhc2tzIChjbGFzc2lmaWNhdGlvbiwgZXh0cmFjdGlvbiwgZXRjLikuXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBUaW1lb3V0cz86IER1cmF0aW9uO1xuICAvKipcbiAgICogRW5hYmxlIGNyb3NzLXJlZ2lvbiBpbmZlcmVuY2UgZm9yIEJlZHJvY2sgbW9kZWxzIHRvIGltcHJvdmUgYXZhaWxhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZS5cbiAgICogV2hlbiBlbmFibGVkLCB1c2VzIGluZmVyZW5jZSBwcm9maWxlcyBpbnN0ZWFkIG9mIGRpcmVjdCBtb2RlbCBpbnZvY2F0aW9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQ3Jvc3NSZWdpb25JbmZlcmVuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJlZml4IGZvciBjcm9zcy1yZWdpb24gaW5mZXJlbmNlIGNvbmZpZ3VyYXRpb24uXG4gICAqIE9ubHkgdXNlZCB3aGVuIHVzZUNyb3NzUmVnaW9uSW5mZXJlbmNlIGlzIHRydWUuXG4gICAqIEBkZWZhdWx0IEJlZHJvY2tDcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeC5VU1xuICAgKi9cbiAgcmVhZG9ubHkgY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXg/OiBCZWRyb2NrQ3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXg7XG59XG5cbi8qKlxuICogQ3Jvc3MtcmVnaW9uIGluZmVyZW5jZSBwcmVmaXggb3B0aW9ucyBmb3IgQmVkcm9jayBtb2RlbHMuXG4gKiBVc2VkIHRvIGNvbmZpZ3VyZSBpbmZlcmVuY2UgcHJvZmlsZXMgZm9yIGltcHJvdmVkIGF2YWlsYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UuXG4gKi9cbmV4cG9ydCBlbnVtIEJlZHJvY2tDcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeCB7XG4gIC8qKiBVUy1iYXNlZCBjcm9zcy1yZWdpb24gaW5mZXJlbmNlIHByb2ZpbGUgKi9cbiAgVVMgPSAndXMnLFxuICAvKiogRVUtYmFzZWQgY3Jvc3MtcmVnaW9uIGluZmVyZW5jZSBwcm9maWxlICovXG4gIEVVID0gJ2V1Jyxcbn1cblxuLyoqXG4gKiBEb2N1bWVudCBwcm9jZXNzaW5nIHdvcmtmbG93IHBvd2VyZWQgYnkgQW1hem9uIEJlZHJvY2sgZm91bmRhdGlvbiBtb2RlbHMuXG4gKlxuICogRXh0ZW5kcyBCYXNlRG9jdW1lbnRQcm9jZXNzaW5nIHRvIHByb3ZpZGUgQUktcG93ZXJlZCBkb2N1bWVudCBjbGFzc2lmaWNhdGlvbiBhbmQgZXh0cmFjdGlvblxuICogdXNpbmcgQW1hem9uIEJlZHJvY2sgZm91bmRhdGlvbiBtb2RlbHMuIFRoaXMgaW1wbGVtZW50YXRpb24gb2ZmZXJzOlxuICpcbiAqICMjIEtleSBGZWF0dXJlc1xuICogLSAqKkFJLVBvd2VyZWQgQ2xhc3NpZmljYXRpb24qKjogVXNlcyBDbGF1ZGUgMy43IFNvbm5ldCAoY29uZmlndXJhYmxlKSB0byBjbGFzc2lmeSBkb2N1bWVudCB0eXBlc1xuICogLSAqKkludGVsbGlnZW50IEV4dHJhY3Rpb24qKjogRXh0cmFjdHMgc3RydWN0dXJlZCBkYXRhIGZyb20gZG9jdW1lbnRzIHVzaW5nIGZvdW5kYXRpb24gbW9kZWxzXG4gKiAtICoqQ3Jvc3MtUmVnaW9uIEluZmVyZW5jZSoqOiBPcHRpb25hbCBzdXBwb3J0IGZvciBpbXByb3ZlZCBhdmFpbGFiaWxpdHkgdmlhIGluZmVyZW5jZSBwcm9maWxlc1xuICogLSAqKkZsZXhpYmxlIFByb2Nlc3NpbmcqKjogT3B0aW9uYWwgZW5yaWNobWVudCBhbmQgcG9zdC1wcm9jZXNzaW5nIExhbWJkYSBmdW5jdGlvbnNcbiAqIC0gKipDb3N0IE9wdGltaXplZCoqOiBDb25maWd1cmFibGUgdGltZW91dHMgYW5kIG1vZGVsIHNlbGVjdGlvbiBmb3IgY29zdCBjb250cm9sXG4gKlxuICogIyMgUHJvY2Vzc2luZyBXb3JrZmxvd1xuICogUzMgVXBsb2FkIOKGkiBDbGFzc2lmaWNhdGlvbiAoQmVkcm9jaykg4oaSIEV4dHJhY3Rpb24gKEJlZHJvY2spIOKGkiBbRW5yaWNobWVudF0g4oaSIFtQb3N0LVByb2Nlc3NpbmddIOKGkiBSZXN1bHRzXG4gKlxuICogIyMgRGVmYXVsdCBNb2RlbHNcbiAqIC0gQ2xhc3NpZmljYXRpb246IENsYXVkZSAzLjcgU29ubmV0IChhbnRocm9waWMuY2xhdWRlLTMtNy1zb25uZXQtMjAyNTAyMTktdjE6MClcbiAqIC0gRXh0cmFjdGlvbjogQ2xhdWRlIDMuNyBTb25uZXQgKGFudGhyb3BpYy5jbGF1ZGUtMy03LXNvbm5ldC0yMDI1MDIxOS12MTowKVxuICpcbiAqICMjIFByb21wdCBUZW1wbGF0ZXNcbiAqIFRoZSBjb25zdHJ1Y3QgdXNlcyBkZWZhdWx0IHByb21wdHMgdGhhdCBjYW4gYmUgY3VzdG9taXplZDpcbiAqIC0gKipDbGFzc2lmaWNhdGlvbioqOiBBbmFseXplcyBkb2N1bWVudCBhbmQgcmV0dXJucyBKU09OIHdpdGggZG9jdW1lbnRDbGFzc2lmaWNhdGlvbiBmaWVsZFxuICogLSAqKkV4dHJhY3Rpb24qKjogVXNlcyBjbGFzc2lmaWNhdGlvbiByZXN1bHQgdG8gZXh0cmFjdCBlbnRpdGllcyBpbiBzdHJ1Y3R1cmVkIEpTT04gZm9ybWF0XG4gKlxuICogIyMgQ3Jvc3MtUmVnaW9uIEluZmVyZW5jZVxuICogV2hlbiBlbmFibGVkLCB1c2VzIEJlZHJvY2sgaW5mZXJlbmNlIHByb2ZpbGVzIGZvciBpbXByb3ZlZCBhdmFpbGFiaWxpdHk6XG4gKiAtIFVTIHByZWZpeDogUm91dGVzIHRvIFVTLWJhc2VkIHJlZ2lvbnMgZm9yIGxvd2VyIGxhdGVuY3lcbiAqIC0gRVUgcHJlZml4OiBSb3V0ZXMgdG8gRVUtYmFzZWQgcmVnaW9ucyBmb3IgZGF0YSByZXNpZGVuY3kgY29tcGxpYW5jZVxuICovXG5leHBvcnQgY2xhc3MgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyBleHRlbmRzIEJhc2VEb2N1bWVudFByb2Nlc3Npbmcge1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9DTEFTU0lGSUNBVElPTl9NT0RFTF9JRDogRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllclxuICAgID0gRm91bmRhdGlvbk1vZGVsSWRlbnRpZmllci5BTlRIUk9QSUNfQ0xBVURFXzNfN19TT05ORVRfMjAyNTAyMTlfVjFfMDtcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BST0NFU1NJTkdfTU9ERUxfSUQ6IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXJcbiAgICA9IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIuQU5USFJPUElDX0NMQVVERV8zXzdfU09OTkVUXzIwMjUwMjE5X1YxXzA7XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9DTEFTU0lGSUNBVElPTl9QUk9NUFQgPSBgXG4gIEFuYWx5emUgdGhlIGRvY3VtZW50IGJlbG93LCBhbmQgY2xhc3NpZnkgdGhlIHR5cGUgb2YgZG9jdW1lbnQgaXQgaXMgKGVnLiBJTlZPSUNFLCBJREVOVElUWV9ET0NVTUVOVCwgUkVDRUlQVCwgZXRjKS4gVGhlIHJlc3VsdCBzaG91bGQgYmUgaW4gSlNPTiBhbmQgc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSAob25seSByZXNwb25kIGluIEpTT04gd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBhbmQgZG8gbm90IHVzZSBtYXJrZG93biB0byBpbmRpY2F0ZSB0aGUganNvbiwganVzdCBvdXRwdXQgcGxhaW4gb2xkIGpzb24gd2l0aCBub3RoaW5nIGVsc2UpOlxuXG4gIHtcbiAgICAgIGRvY3VtZW50Q2xhc3NpZmljYXRpb246IDxDTEFTU0lGSUNBVElPTj5cbiAgfVxuXG4gIEF0dGFjaGVkIGRvY3VtZW50IGlzIGFzIGZvbGxvd3M6XG5cbiAgYDtcblxuICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUFJPQ0VTU0lOR19QUk9NUFQgPSBgXG4gIFRoZSBkb2N1bWVudCBiZWxvdyBoYXMgYmVlbiBjbGFzc2lmaWVkIGFzIFtBQ1RVQUxfQ0xBU1NJRklDQVRJT05dLiBFeHRyYWN0IGltcG9ydGFudCBlbnRpdGllcyBmcm9tIHRoZSBkb2N1bWVudCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgSlNPTiBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBiZWxvdyAob25seSByZXNwb25kIGluIEpTT04gd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBhbmQgZG8gbm90IHVzZSBtYXJrZG93biB0byBpbmRpY2F0ZSB0aGUganNvbiwganVzdCBvdXRwdXQgcGxhaW4gb2xkIGpzb24gd2l0aCBub3RoaW5nIGVsc2UpOlxuXG4gIHtcbiAgICAgIGRvY3VtZW50Q2xhc3NpZmljYXRpb246IDxDTEFTU0lGSUNBVElPTj4sXG4gICAgICByZXN1bHQ6IHtcbiAgICAgICAgZW50aXRpZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiA8VFlQRSBPRiBFTlRJVFk+XG4gICAgICAgICAgICAgICAgdmFsdWU6IDxWQUxVRSBPRiBFTlRJVFk+XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uXG4gICAgICAgIF1cbiAgICAgIH1cbiAgfVxuXG4gIEF0dGFjaGVkIGRvY3VtZW50IGlzIGFzIGZvbGxvd3M6XG5cbiAgYDtcblxuICAvKiogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIEJlZHJvY2sgZG9jdW1lbnQgcHJvY2Vzc2luZyAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzOiBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHM7XG4gIC8qKiBDcm9zcy1yZWdpb24gaW5mZXJlbmNlIHByZWZpeCBmb3IgQmVkcm9jayBtb2RlbCByb3V0aW5nICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeDogQmVkcm9ja0Nyb3NzUmVnaW9uSW5mZXJlbmNlUHJlZml4O1xuICAvKiogVGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmUgdGhhdCBvcmNoZXN0cmF0ZXMgdGhlIGRvY3VtZW50IHByb2Nlc3Npbmcgd29ya2Zsb3cgKi9cbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmU7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZyBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIEluaXRpYWxpemVzIHRoZSBCZWRyb2NrLXBvd2VyZWQgZG9jdW1lbnQgcHJvY2Vzc2luZyBwaXBlbGluZSB3aXRoIEFJIGNsYXNzaWZpY2F0aW9uXG4gICAqIGFuZCBleHRyYWN0aW9uIGNhcGFiaWxpdGllcy4gQ3JlYXRlcyBMYW1iZGEgZnVuY3Rpb25zIHdpdGggYXBwcm9wcmlhdGUgSUFNIHJvbGVzXG4gICAqIGZvciBCZWRyb2NrIG1vZGVsIGludm9jYXRpb24gYW5kIFMzIGFjY2Vzcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS5cbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgQmVkcm9jayBkb2N1bWVudCBwcm9jZXNzaW5nIHBpcGVsaW5lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgaWYgKHByb3BzLm5ldHdvcmspIHtcbiAgICAgIHByb3BzLm5ldHdvcmsuY3JlYXRlU2VydmljZUVuZHBvaW50KCd2cGNlLWJlZHJvY2snLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DSyk7XG4gICAgICBwcm9wcy5uZXR3b3JrLmNyZWF0ZVNlcnZpY2VFbmRwb2ludCgndnBjZS1iZWRyb2NrLXJ1bnRpbWUnLCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuQkVEUk9DS19SVU5USU1FKTtcbiAgICB9XG5cbiAgICB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXggPSBwcm9wcy5jcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeCB8fCBCZWRyb2NrQ3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXguVVM7XG4gICAgdGhpcy5zdGF0ZU1hY2hpbmUgPSB0aGlzLmhhbmRsZVN0YXRlTWFjaGluZUNyZWF0aW9uKCdiZWRyb2NrLWRvY3VtZW50LXByb2Nlc3Npbmctd29ya2Zsb3cnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBkb2N1bWVudCBjbGFzc2lmaWNhdGlvbiBzdGVwIHVzaW5nIEFtYXpvbiBCZWRyb2NrLlxuICAgKlxuICAgKiBDcmVhdGVzIGEgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgY29uZmlndXJlZCBCZWRyb2NrIG1vZGVsIHRvIGNsYXNzaWZ5XG4gICAqIHRoZSBkb2N1bWVudCB0eXBlLiBUaGUgZnVuY3Rpb24gcmVhZHMgdGhlIGRvY3VtZW50IGZyb20gUzMgYW5kIHNlbmRzIGl0IHRvXG4gICAqIEJlZHJvY2sgd2l0aCB0aGUgY2xhc3NpZmljYXRpb24gcHJvbXB0LlxuICAgKlxuICAgKiBAcmV0dXJucyBMYW1iZGFJbnZva2UgdGFzayBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjbGFzc2lmaWNhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGNsYXNzaWZpY2F0aW9uU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB7XG4gICAgY29uc3QgcHJvbXB0ID0gdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuY2xhc3NpZmljYXRpb25Qcm9tcHQgfHwgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZy5ERUZBVUxUX0NMQVNTSUZJQ0FUSU9OX1BST01QVDtcbiAgICBjb25zdCBmbU1vZGVsID0gdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuY2xhc3NpZmljYXRpb25Nb2RlbElkIHx8IEJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmcuREVGQVVMVF9DTEFTU0lGSUNBVElPTl9NT0RFTF9JRDtcbiAgICBjb25zdCBhZGp1c3RlZE1vZGVsSWQgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy51c2VDcm9zc1JlZ2lvbkluZmVyZW5jZSA/IGAke3RoaXMuY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXh9LiR7Zm1Nb2RlbC5tb2RlbElkfWAgOiBmbU1vZGVsLm1vZGVsSWQ7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuZ2VuZXJhdGVMYW1iZGFSb2xlRm9yQmVkcm9jayhmbU1vZGVsLCAnQ2xhc3NpZmljYXRpb25MYW1iZGFSb2xlJyk7XG4gICAgY29uc3QgeyByZWdpb24sIGFjY291bnQgfSA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zID0gTGFtYmRhSWFtVXRpbHMuY3JlYXRlTG9nc1Blcm1pc3Npb25zKHtcbiAgICAgIGFjY291bnQsXG4gICAgICBmdW5jdGlvbk5hbWU6ICdiZWRyb2NrLWlkcC1jbGFzc2lmaWNhdGlvbicsXG4gICAgICByZWdpb24sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICAgIGVuYWJsZU9ic2VydmFiaWxpdHk6IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgfSk7XG5cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcblxuICAgIGlmICh0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMuYnVja2V0RW5jcnlwdGlvbktleS5ncmFudEVuY3J5cHREZWNyeXB0KHJvbGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGJlZHJvY2tGdW5jdGlvbiA9IG5ldyBQeXRob25GdW5jdGlvbih0aGlzLCAnQmVkcm9ja0NsYXNzaWZpY2F0aW9uRnVuY3Rpb24nLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnVuaXF1ZUZ1bmN0aW9uTmFtZSxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgIHJ1bnRpbWU6IERlZmF1bHRSdW50aW1lcy5QWVRIT04sXG4gICAgICBlbnRyeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3Jlc291cmNlcy9kZWZhdWx0LWJlZHJvY2staW52b2tlJyksXG4gICAgICByb2xlLFxuICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgdGltZW91dDogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuc3RlcFRpbWVvdXRzIHx8IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBNT0RFTF9JRDogYWRqdXN0ZWRNb2RlbElkLFxuICAgICAgICBQUk9NUFQ6IHByb21wdCxcbiAgICAgICAgSU5WT0tFX1RZUEU6ICdjbGFzc2lmaWNhdGlvbicsXG4gICAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICAgIHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgICAgICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGJlZHJvY2tGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBiZWRyb2NrRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnQ2xhc3NpZmljYXRpb25TdGVwJywge1xuICAgICAgbGFtYmRhRnVuY3Rpb246IGJlZHJvY2tGdW5jdGlvbixcbiAgICAgIHJlc3VsdFBhdGg6ICckLmNsYXNzaWZpY2F0aW9uUmVzdWx0JyxcbiAgICAgIHJlc3VsdFNlbGVjdG9yOiB7XG4gICAgICAgICdkb2N1bWVudENsYXNzaWZpY2F0aW9uLiQnOiAnJC5QYXlsb2FkLmRvY3VtZW50Q2xhc3NpZmljYXRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBkb2N1bWVudCBleHRyYWN0aW9uIHN0ZXAgdXNpbmcgQW1hem9uIEJlZHJvY2suXG4gICAqXG4gICAqIENyZWF0ZXMgYSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBjb25maWd1cmVkIEJlZHJvY2sgbW9kZWwgdG8gZXh0cmFjdFxuICAgKiBzdHJ1Y3R1cmVkIGRhdGEgZnJvbSB0aGUgZG9jdW1lbnQuIFVzZXMgdGhlIGNsYXNzaWZpY2F0aW9uIHJlc3VsdCBmcm9tIHRoZVxuICAgKiBwcmV2aW91cyBzdGVwIHRvIHByb3ZpZGUgY29udGV4dCBmb3IgbW9yZSBhY2N1cmF0ZSBleHRyYWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBMYW1iZGFJbnZva2UgdGFzayBjb25maWd1cmVkIGZvciBkb2N1bWVudCBleHRyYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJvY2Vzc2luZ1N0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUge1xuICAgIGNvbnN0IHByb21wdCA9IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnByb2Nlc3NpbmdQcm9tcHQgfHwgQmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZy5ERUZBVUxUX1BST0NFU1NJTkdfUFJPTVBUO1xuICAgIGNvbnN0IGZtTW9kZWwgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5wcm9jZXNzaW5nTW9kZWxJZCB8fCBCZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nLkRFRkFVTFRfUFJPQ0VTU0lOR19NT0RFTF9JRDtcbiAgICBjb25zdCBhZGp1c3RlZE1vZGVsSWQgPSB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy51c2VDcm9zc1JlZ2lvbkluZmVyZW5jZSA/IGAke3RoaXMuY3Jvc3NSZWdpb25JbmZlcmVuY2VQcmVmaXh9LiR7Zm1Nb2RlbC5tb2RlbElkfWAgOiBmbU1vZGVsLm1vZGVsSWQ7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuZ2VuZXJhdGVMYW1iZGFSb2xlRm9yQmVkcm9jayhmbU1vZGVsLCAnUHJvY2Vzc2luZ0xhbWJkYVJvbGUnKTtcbiAgICBjb25zdCB7IHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucyA9IExhbWJkYUlhbVV0aWxzLmNyZWF0ZUxvZ3NQZXJtaXNzaW9ucyh7XG4gICAgICBhY2NvdW50LFxuICAgICAgZnVuY3Rpb25OYW1lOiAnYmVkcm9jay1pZHAtcHJvY2Vzc2luZycsXG4gICAgICByZWdpb24sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgICB0aGlzLmVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICBpZiAodGhpcy5idWNrZXRFbmNyeXB0aW9uS2V5KSB7XG4gICAgICB0aGlzLmJ1Y2tldEVuY3J5cHRpb25LZXkuZ3JhbnRFbmNyeXB0RGVjcnlwdChyb2xlKTtcbiAgICB9XG4gICAgY29uc3QgYmVkcm9ja0Z1bmN0aW9uID0gbmV3IFB5dGhvbkZ1bmN0aW9uKHRoaXMsICdCZWRyb2NrRXh0cmFjdGlvbkZ1bmN0aW9uJywge1xuICAgICAgZnVuY3Rpb25OYW1lOiBnZW5lcmF0ZWRMb2dQZXJtaXNzaW9ucy51bmlxdWVGdW5jdGlvbk5hbWUsXG4gICAgICBydW50aW1lOiBEZWZhdWx0UnVudGltZXMuUFlUSE9OLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgZW50cnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdyZXNvdXJjZXMvZGVmYXVsdC1iZWRyb2NrLWludm9rZScpLFxuICAgICAgcm9sZSxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHRpbWVvdXQ6IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLnN0ZXBUaW1lb3V0cyB8fCBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgTU9ERUxfSUQ6IGFkanVzdGVkTW9kZWxJZCxcbiAgICAgICAgUFJPTVBUOiBwcm9tcHQsXG4gICAgICAgIElOVk9LRV9UWVBFOiAncHJvY2Vzc2luZycsXG4gICAgICAgIC4uLlBvd2VydG9vbHNDb25maWcuZ2VuZXJhdGVEZWZhdWx0TGFtYmRhQ29uZmlnKFxuICAgICAgICAgIHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLmVuYWJsZU9ic2VydmFiaWxpdHksXG4gICAgICAgICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgdGhpcy5tZXRyaWNTZXJ2aWNlTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudEVuY3J5cHRpb246IHRoaXMuZW5jcnlwdGlvbktleSxcbiAgICAgIHZwYzogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsudnBjIDogdW5kZWZpbmVkLFxuICAgICAgdnBjU3VibmV0czogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMubmV0d29yayA/IHRoaXMuYmVkcm9ja0RvY3VtZW50UHJvY2Vzc2luZ1Byb3BzLm5ldHdvcmsuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIGdlbmVyYXRlZExvZ1Blcm1pc3Npb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICAgIGJlZHJvY2tGdW5jdGlvbi5yb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5uZXR3b3JrKSB7XG4gICAgICBiZWRyb2NrRnVuY3Rpb24ucm9sZT8uYWRkVG9QcmluY2lwYWxQb2xpY3koTGFtYmRhSWFtVXRpbHMuZ2VuZXJhdGVMYW1iZGFWUENQZXJtaXNzaW9ucygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IExhbWJkYUludm9rZSh0aGlzLCAnUHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogYmVkcm9ja0Z1bmN0aW9uLFxuICAgICAgcmVzdWx0UGF0aDogJyQucHJvY2Vzc2luZ1Jlc3VsdCcsXG4gICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAnZG9jdW1lbnRDbGFzc2lmaWNhdGlvbi4kJzogJyQuUGF5bG9hZC5kb2N1bWVudENsYXNzaWZpY2F0aW9uJyxcbiAgICAgICAgJ3Jlc3VsdC4kJzogJyQuUGF5bG9hZC5yZXN1bHQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZW5lcmF0ZUxhbWJkYVJvbGVGb3JCZWRyb2NrKGZtTW9kZWw6IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIsIGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHJlZ2lvbiwgYWNjb3VudCB9ID0gU3RhY2sub2YodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBSb2xlKHRoaXMsIGlkLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgQmVkcm9ja0ludm9rZVBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0J10sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Ake3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vKmBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAnYmVkcm9jazpJbnZva2VNb2RlbCcsXG4gICAgICAgICAgICAgICAgJ2JlZHJvY2s6SW52b2tlTW9kZWxXaXRoUmVzcG9uc2VTdHJlYW0nLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpiZWRyb2NrOio6OmZvdW5kYXRpb24tbW9kZWwvJHtmbU1vZGVsLm1vZGVsSWR9YCxcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpiZWRyb2NrOiR7cmVnaW9ufToke2FjY291bnR9OmluZmVyZW5jZS1wcm9maWxlLyR7dGhpcy5jcm9zc1JlZ2lvbkluZmVyZW5jZVByZWZpeH0uJHtmbU1vZGVsLm1vZGVsSWR9YCxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBvcHRpb25hbCBkb2N1bWVudCBlbnJpY2htZW50IHN0ZXAuXG4gICAqXG4gICAqIElmIGFuIGVucmljaG1lbnQgTGFtYmRhIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGluIHRoZSBwcm9wcywgY3JlYXRlcyBhIExhbWJkYUludm9rZVxuICAgKiB0YXNrIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBwcm9jZXNzaW5nIG9uIHRoZSBleHRyYWN0ZWQgZGF0YS4gVGhpcyBzdGVwIGlzIHVzZWZ1bFxuICAgKiBmb3IgZGF0YSB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgb3IgaW50ZWdyYXRpb24gd2l0aCBleHRlcm5hbCBzeXN0ZW1zLlxuICAgKlxuICAgKiBAcmV0dXJucyBMYW1iZGFJbnZva2UgdGFzayBmb3IgZW5yaWNobWVudCwgb3IgdW5kZWZpbmVkIHRvIHNraXAgdGhpcyBzdGVwXG4gICAqL1xuICBwcm90ZWN0ZWQgZW5yaWNobWVudFN0ZXAoKTogRG9jdW1lbnRQcm9jZXNzaW5nU3RlcFR5cGUgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMuZW5yaWNobWVudExhbWJkYUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdFbnJpY2htZW50U3RlcCcsIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5lbnJpY2htZW50TGFtYmRhRnVuY3Rpb24sXG4gICAgICByZXN1bHRQYXRoOiAnJC5lbnJpY2hlZFJlc3VsdCcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGUgb3B0aW9uYWwgcG9zdC1wcm9jZXNzaW5nIHN0ZXAuXG4gICAqXG4gICAqIElmIGEgcG9zdC1wcm9jZXNzaW5nIExhbWJkYSBmdW5jdGlvbiBpcyBwcm92aWRlZCBpbiB0aGUgcHJvcHMsIGNyZWF0ZXMgYSBMYW1iZGFJbnZva2VcbiAgICogdGFzayB0byBwZXJmb3JtIGZpbmFsIHByb2Nlc3Npbmcgb24gdGhlIHdvcmtmbG93IHJlc3VsdHMuIFRoaXMgc3RlcCBpcyB1c2VmdWwgZm9yXG4gICAqIGRhdGEgZm9ybWF0dGluZywgbm90aWZpY2F0aW9ucywgb3IgaW50ZWdyYXRpb24gd2l0aCBkb3duc3RyZWFtIHN5c3RlbXMuXG4gICAqXG4gICAqIEByZXR1cm5zIExhbWJkYUludm9rZSB0YXNrIGZvciBwb3N0LXByb2Nlc3NpbmcsIG9yIHVuZGVmaW5lZCB0byBza2lwIHRoaXMgc3RlcFxuICAgKi9cbiAgcHJvdGVjdGVkIHBvc3RQcm9jZXNzaW5nU3RlcCgpOiBEb2N1bWVudFByb2Nlc3NpbmdTdGVwVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLmJlZHJvY2tEb2N1bWVudFByb2Nlc3NpbmdQcm9wcy5wb3N0UHJvY2Vzc2luZ0xhbWJkYUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdQb3N0UHJvY2Vzc2luZ1N0ZXAnLCB7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5iZWRyb2NrRG9jdW1lbnRQcm9jZXNzaW5nUHJvcHMucG9zdFByb2Nlc3NpbmdMYW1iZGFGdW5jdGlvbixcbiAgICAgIHJlc3VsdFBhdGg6ICckLnBvc3RQcm9jZXNzZWRSZXN1bHQnLFxuICAgIH0pO1xuICB9XG59Il19
@@ -18,4 +18,5 @@ export declare class DefaultRuntimes {
18
18
  * Default bundling arguments for Python function
19
19
  */
20
20
  static readonly PYTHON_FUNCTION_BUNDLING: BundlingOptions;
21
+ static readonly PYTHON_BUNDLING_IMAGE = "python:3.13.7-bookworm";
21
22
  }
@@ -13,7 +13,7 @@ class DefaultRuntimes {
13
13
  }
14
14
  exports.DefaultRuntimes = DefaultRuntimes;
15
15
  _a = DefaultRuntimes, _b = JSII_RTTI_SYMBOL_1;
16
- DefaultRuntimes[_b] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultRuntimes", version: "1.0.0" };
16
+ DefaultRuntimes[_b] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultRuntimes", version: "1.0.1" };
17
17
  /**
18
18
  * Default runtime for all Lambda functions in the use cases.
19
19
  */
@@ -31,4 +31,5 @@ DefaultRuntimes.PYTHON_FUNCTION_BUNDLING = {
31
31
  },
32
32
  image: _a.PYTHON.bundlingImage,
33
33
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1ydW50aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvY3VzdG9tLXJlc291cmNlL2RlZmF1bHQtcnVudGltZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSx1REFBaUQ7QUFFakQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZTs7QUFBNUIsMENBcUJDOzs7QUFuQkM7O0tBRUs7QUFDa0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isd0NBQXdCLEdBQW9CO0lBQ2pFLFNBQVMsRUFBRTtRQUNULFlBQVksRUFBRSxhQUFhO0tBQzVCO0lBQ0QsS0FBSyxFQUFFLEVBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtDQUNqQyxBQUw4QyxDQUs3QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEJ1bmRsaW5nT3B0aW9ucyB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtcHl0aG9uLWFscGhhJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcblxuLyoqXG4gKiBDb250YWlucyBkZWZhdWx0IHJ1bnRpbWVzIHRoYXQgd291bGQgYmUgcmVmZXJlbmNlZFxuICogYnkgTGFtYmRhIGZ1bmN0aW9ucyBpbiB0aGUgdmFyaW91cyB1c2UgY2FzZXMuIFVwZGF0aW5nIG9mXG4gKiBSdW50aW1lIHZlcnNpb25zIHNob3VsZCBiZSBkb25lIGhlcmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWZhdWx0UnVudGltZXMge1xuXG4gIC8qKlxuICAgICAqIERlZmF1bHQgcnVudGltZSBmb3IgYWxsIExhbWJkYSBmdW5jdGlvbnMgaW4gdGhlIHVzZSBjYXNlcy5cbiAgICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlMgPSBSdW50aW1lLk5PREVKU18yMl9YO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHJ1bnRpbWUgZm9yIFB5dGhvbiBiYXNlZCBMYW1iZGEgZnVuY3Rpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT04gPSBSdW50aW1lLlBZVEhPTl8zXzEzO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGJ1bmRsaW5nIGFyZ3VtZW50cyBmb3IgUHl0aG9uIGZ1bmN0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBZVEhPTl9GVU5DVElPTl9CVU5ETElORzogQnVuZGxpbmdPcHRpb25zID0ge1xuICAgIGJ1aWxkQXJnczoge1xuICAgICAgJy0tcGxhdGZvcm0nOiAnbGludXgvYW1kNjQnLFxuICAgIH0sXG4gICAgaW1hZ2U6IHRoaXMuUFlUSE9OLmJ1bmRsaW5nSW1hZ2UsXG4gIH07XG59Il19
34
+ DefaultRuntimes.PYTHON_BUNDLING_IMAGE = 'python:3.13.7-bookworm';
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1ydW50aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvY3VzdG9tLXJlc291cmNlL2RlZmF1bHQtcnVudGltZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSx1REFBaUQ7QUFFakQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZTs7QUFBNUIsMENBdUJDOzs7QUFyQkM7O0tBRUs7QUFDa0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isc0JBQU0sR0FBRyxvQkFBTyxDQUFDLFdBQVcsQUFBdEIsQ0FBdUI7QUFFcEQ7O0dBRUc7QUFDb0Isd0NBQXdCLEdBQW9CO0lBQ2pFLFNBQVMsRUFBRTtRQUNULFlBQVksRUFBRSxhQUFhO0tBQzVCO0lBQ0QsS0FBSyxFQUFFLEVBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtDQUNqQyxBQUw4QyxDQUs3QztBQUVxQixxQ0FBcUIsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBCdW5kbGluZ09wdGlvbnMgfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhLXB5dGhvbi1hbHBoYSc7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5cbi8qKlxuICogQ29udGFpbnMgZGVmYXVsdCBydW50aW1lcyB0aGF0IHdvdWxkIGJlIHJlZmVyZW5jZWRcbiAqIGJ5IExhbWJkYSBmdW5jdGlvbnMgaW4gdGhlIHZhcmlvdXMgdXNlIGNhc2VzLiBVcGRhdGluZyBvZlxuICogUnVudGltZSB2ZXJzaW9ucyBzaG91bGQgYmUgZG9uZSBoZXJlLlxuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFJ1bnRpbWVzIHtcblxuICAvKipcbiAgICAgKiBEZWZhdWx0IHJ1bnRpbWUgZm9yIGFsbCBMYW1iZGEgZnVuY3Rpb25zIGluIHRoZSB1c2UgY2FzZXMuXG4gICAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTID0gUnVudGltZS5OT0RFSlNfMjJfWDtcblxuICAvKipcbiAgICogRGVmYXVsdCBydW50aW1lIGZvciBQeXRob24gYmFzZWQgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OID0gUnVudGltZS5QWVRIT05fM18xMztcblxuICAvKipcbiAgICogRGVmYXVsdCBidW5kbGluZyBhcmd1bWVudHMgZm9yIFB5dGhvbiBmdW5jdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQWVRIT05fRlVOQ1RJT05fQlVORExJTkc6IEJ1bmRsaW5nT3B0aW9ucyA9IHtcbiAgICBidWlsZEFyZ3M6IHtcbiAgICAgICctLXBsYXRmb3JtJzogJ2xpbnV4L2FtZDY0JyxcbiAgICB9LFxuICAgIGltYWdlOiB0aGlzLlBZVEhPTi5idW5kbGluZ0ltYWdlLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OX0JVTkRMSU5HX0lNQUdFID0gJ3B5dGhvbjozLjEzLjctYm9va3dvcm0nO1xufSJdfQ==
@@ -117,5 +117,5 @@ class AccessLog extends constructs_1.Construct {
117
117
  }
118
118
  exports.AccessLog = AccessLog;
119
119
  _a = JSII_RTTI_SYMBOL_1;
120
- AccessLog[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.AccessLog", version: "1.0.0" };
120
+ AccessLog[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.AccessLog", version: "1.0.1" };
121
121
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvZm91bmRhdGlvbi9hY2Nlc3MtbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QyxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLHlDQUF5QztBQUN6QywyQ0FBdUM7QUErQnZDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWdCdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF3QixFQUFFO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUM7UUFFeEQseUVBQXlFO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUM7UUFDbkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLFFBQVEsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7UUFFdkQsMEJBQTBCO1FBQzFCLE1BQU0scUJBQXFCLEdBQXVCO1lBQ2hEO2dCQUNFLEVBQUUsRUFBRSxvQkFBb0I7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFdBQVcsRUFBRTtvQkFDWDt3QkFDRSxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7d0JBQy9DLGVBQWUsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElB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O0lBQzlELENBQUM7O0FBcEhILDhCQXFIQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQWNjZXNzTG9nIGNvbnN0cnVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0xvZ1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTMyBidWNrZXQgZm9yIGFjY2VzcyBsb2dzXG4gICAqIEBkZWZhdWx0ICdhY2Nlc3MtbG9ncydcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZSBydWxlcyBmb3IgdGhlIGFjY2VzcyBsb2dzXG4gICAqIEBkZWZhdWx0IFRyYW5zaXRpb24gdG8gSUEgYWZ0ZXIgMzAgZGF5cywgZGVsZXRlIGFmdGVyIDkwIGRheXNcbiAgICovXG4gIHJlYWRvbmx5IGxpZmVjeWNsZVJ1bGVzPzogczMuTGlmZWN5Y2xlUnVsZVtdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB2ZXJzaW9uaW5nIG9uIHRoZSBhY2Nlc3MgbG9ncyBidWNrZXRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25lZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBidWNrZXQgcHJlZml4IGZvciBvcmdhbml6aW5nIGFjY2VzcyBsb2dzXG4gICAqIEBkZWZhdWx0ICdhY2Nlc3MtbG9ncydcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldFByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Nlc3NMb2cgY29uc3RydWN0IHRoYXQgcHJvdmlkZXMgYSBjZW50cmFsaXplZCBTMyBidWNrZXQgZm9yIHN0b3JpbmcgYWNjZXNzIGxvZ3MuXG4gKiBUaGlzIGNvbnN0cnVjdCBjcmVhdGVzIGEgc2VjdXJlIFMzIGJ1Y2tldCB3aXRoIGFwcHJvcHJpYXRlIHBvbGljaWVzIGZvciBBV1Mgc2VydmljZXNcbiAqIHRvIGRlbGl2ZXIgYWNjZXNzIGxvZ3MuXG4gKlxuICogVXNhZ2U6XG4gKlxuICogY29uc3QgYWNjZXNzTG9nID0gbmV3IEFjY2Vzc0xvZyh0aGlzLCAnQWNjZXNzTG9nJyk7XG4gKiBjb25zdCBidWNrZXQgPSBhY2Nlc3NMb2cuYnVja2V0O1xuICogY29uc3QgYnVja2V0TmFtZSA9IGFjY2Vzc0xvZy5idWNrZXROYW1lO1xuICovXG5leHBvcnQgY2xhc3MgQWNjZXNzTG9nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgZm9yIHN0b3JpbmcgYWNjZXNzIGxvZ3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBidWNrZXQ6IHMzLkJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIFMzIGJ1Y2tldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1Y2tldCBwcmVmaXggdXNlZCBmb3Igb3JnYW5pemluZyBhY2Nlc3MgbG9nc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1Y2tldFByZWZpeDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBY2Nlc3NMb2dQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFN0b3JlIHRoZSBidWNrZXQgcHJlZml4XG4gICAgdGhpcy5idWNrZXRQcmVmaXggPSBwcm9wcy5idWNrZXRQcmVmaXggfHwgJ2FjY2Vzcy1sb2dzJztcblxuICAgIC8vIEdlbmVyYXRlIHVuaXF1ZSBidWNrZXQgbmFtZSB3aXRoIGFjY291bnQgYW5kIHJlZ2lvbiB0byBhdm9pZCBjb25mbGljdHNcbiAgICBjb25zdCBhY2NvdW50SWQgPSBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudDtcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIGNvbnN0IGJhc2VOYW1lID0gcHJvcHMuYnVja2V0TmFtZSB8fCAnYWNjZXNzLWxvZ3MnO1xuICAgIHRoaXMuYnVja2V0TmFtZSA9IGAke2Jhc2VOYW1lfS0ke2FjY291bnRJZH0tJHtyZWdpb259YDtcblxuICAgIC8vIERlZmF1bHQgbGlmZWN5Y2xlIHJ1bGVzXG4gICAgY29uc3QgZGVmYXVsdExpZmVjeWNsZVJ1bGVzOiBzMy5MaWZlY3ljbGVSdWxlW10gPSBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnQWNjZXNzTG9nTGlmZWN5Y2xlJyxcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgdHJhbnNpdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdG9yYWdlQ2xhc3M6IHMzLlN0b3JhZ2VDbGFzcy5JTkZSRVFVRU5UX0FDQ0VTUyxcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoMzApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RvcmFnZUNsYXNzOiBzMy5TdG9yYWdlQ2xhc3MuR0xBQ0lFUixcbiAgICAgICAgICAgIHRyYW5zaXRpb25BZnRlcjogY2RrLkR1cmF0aW9uLmRheXMoOTApLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGV4cGlyYXRpb246IGNkay5EdXJhdGlvbi5kYXlzKDM2NSksIC8vIERlbGV0ZSBhZnRlciAxIHllYXJcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIC8vIENyZWF0ZSB0aGUgUzMgYnVja2V0IGZvciBhY2Nlc3MgbG9nc1xuICAgIHRoaXMuYnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQWNjZXNzTG9nQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogdGhpcy5idWNrZXROYW1lLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgdmVyc2lvbmVkOiBwcm9wcy52ZXJzaW9uZWQgfHwgZmFsc2UsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IHByb3BzLmxpZmVjeWNsZVJ1bGVzIHx8IGRlZmF1bHRMaWZlY3ljbGVSdWxlcyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5LlJFVEFJTiwgLy8gUmV0YWluIGxvZ3MgZm9yIGNvbXBsaWFuY2VcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsIC8vIEVuZm9yY2UgU1NMIGZvciBhbGwgcmVxdWVzdHNcbiAgICAgIGV2ZW50QnJpZGdlRW5hYmxlZDogZmFsc2UsIC8vIERpc2FibGUgRXZlbnRCcmlkZ2UgZm9yIGNvc3Qgb3B0aW1pemF0aW9uXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYnVja2V0IHBvbGljeSB0byBhbGxvdyBhY2Nlc3MgbG9nIGRlbGl2ZXJ5IGZyb20gQVdTIHNlcnZpY2VzXG4gICAgdGhpcy5idWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdBbGxvd0FjY2Vzc0xvZ0RlbGl2ZXJ5JyxcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIHByaW5jaXBhbHM6IFtcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsb2dnaW5nLnMzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdkZWxpdmVyeS5sb2dzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdzMzpQdXRPYmplY3QnLFxuICAgICAgICAnczM6R2V0QnVja2V0QWNsJyxcbiAgICAgICAgJ3MzOkxpc3RCdWNrZXQnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICB0aGlzLmJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgIGAke3RoaXMuYnVja2V0LmJ1Y2tldEFybn0vKmAsXG4gICAgICBdLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAnczM6eC1hbXotYWNsJzogJ2J1Y2tldC1vd25lci1mdWxsLWNvbnRyb2wnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICAvLyBBbGxvdyBFTEIgc2VydmljZSB0byB3cml0ZSBhY2Nlc3MgbG9nc1xuICAgIHRoaXMuYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgc2lkOiAnQWxsb3dFTEJBY2Nlc3NMb2dEZWxpdmVyeScsXG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBwcmluY2lwYWxzOiBbXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWxhc3RpY2xvYWRiYWxhbmNpbmcuYW1hem9uYXdzLmNvbScpLFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICByZXNvdXJjZXM6IFtgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTMyBidWNrZXQgcGF0aCBmb3IgYSBzcGVjaWZpYyBzZXJ2aWNlJ3MgYWNjZXNzIGxvZ3NcbiAgICpcbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIChlLmcuLCAnYWxiJywgJ2Nsb3VkZnJvbnQnLCAnczMnKVxuICAgKiBAcGFyYW0gcmVzb3VyY2VOYW1lIE9wdGlvbmFsIHJlc291cmNlIG5hbWUgZm9yIGZ1cnRoZXIgb3JnYW5pemF0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBTMyBwYXRoIGZvciB0aGUgc2VydmljZSdzIGFjY2VzcyBsb2dzXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9nUGF0aChzZXJ2aWNlTmFtZTogc3RyaW5nLCByZXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VQYXRoID0gYCR7dGhpcy5idWNrZXROYW1lfS8ke3RoaXMuYnVja2V0UHJlZml4fS8ke3NlcnZpY2VOYW1lfWA7XG4gICAgcmV0dXJuIHJlc291cmNlTmFtZSA/IGAke2Jhc2VQYXRofS8ke3Jlc291cmNlTmFtZX1gIDogYmFzZVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTMyBVUkkgZm9yIGEgc3BlY2lmaWMgc2VydmljZSdzIGFjY2VzcyBsb2dzXG4gICAqXG4gICAqIEBwYXJhbSBzZXJ2aWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZSAoZS5nLiwgJ2FsYicsICdjbG91ZGZyb250JywgJ3MzJylcbiAgICogQHBhcmFtIHJlc291cmNlTmFtZSBPcHRpb25hbCByZXNvdXJjZSBuYW1lIGZvciBmdXJ0aGVyIG9yZ2FuaXphdGlvblxuICAgKiBAcmV0dXJucyBUaGUgUzMgVVJJIGZvciB0aGUgc2VydmljZSdzIGFjY2VzcyBsb2dzXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9nVXJpKHNlcnZpY2VOYW1lOiBzdHJpbmcsIHJlc291cmNlTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBzMzovLyR7dGhpcy5nZXRMb2dQYXRoKHNlcnZpY2VOYW1lLCByZXNvdXJjZU5hbWUpfWA7XG4gIH1cbn1cbiJdfQ==