@aws-cdk/aws-bedrock-agentcore-alpha 2.227.0-alpha.0 → 2.229.0-alpha.0

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.
Files changed (92) hide show
  1. package/.jsii +1385 -1080
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +15 -1
  4. package/README.md +119 -15
  5. package/lib/gateway/gateway-base.js +171 -0
  6. package/{agentcore → lib}/gateway/gateway.js +4 -4
  7. package/{agentcore → lib}/gateway/inbound-auth/authorizer.js +3 -3
  8. package/lib/gateway/outbound-auth/api-key.js +141 -0
  9. package/{agentcore → lib}/gateway/outbound-auth/credential-provider.js +1 -1
  10. package/lib/gateway/outbound-auth/oauth.js +76 -0
  11. package/lib/gateway/perms.d.ts +73 -0
  12. package/lib/gateway/perms.js +109 -0
  13. package/{agentcore → lib}/gateway/protocol.js +2 -2
  14. package/{agentcore → lib}/gateway/targets/schema/api-schema.js +4 -4
  15. package/{agentcore → lib}/gateway/targets/schema/tool-schema.js +4 -4
  16. package/{agentcore → lib}/gateway/targets/target-base.js +1 -1
  17. package/{agentcore → lib}/gateway/targets/target-configuration.js +5 -5
  18. package/lib/gateway/targets/target.js +444 -0
  19. package/lib/index.d.ts +30 -1
  20. package/lib/index.js +55 -6
  21. package/{agentcore → lib}/memory/memory-strategy.js +1 -1
  22. package/{agentcore → lib}/memory/memory.js +2 -2
  23. package/{agentcore → lib}/memory/strategies/managed-strategy.js +1 -1
  24. package/{agentcore → lib}/memory/strategies/self-managed-strategy.js +1 -1
  25. package/{agentcore → lib}/network/network-configuration.js +4 -4
  26. package/{agentcore → lib}/runtime/runtime-artifact.d.ts +30 -0
  27. package/lib/runtime/runtime-artifact.js +174 -0
  28. package/{agentcore → lib}/runtime/runtime-authorizer-configuration.js +1 -1
  29. package/{agentcore → lib}/runtime/runtime-base.js +1 -1
  30. package/{agentcore → lib}/runtime/runtime-endpoint-base.js +1 -1
  31. package/{agentcore → lib}/runtime/runtime-endpoint.js +1 -1
  32. package/{agentcore → lib}/runtime/runtime.d.ts +32 -1
  33. package/lib/runtime/runtime.js +694 -0
  34. package/lib/runtime/types.d.ts +50 -0
  35. package/lib/runtime/types.js +25 -0
  36. package/{agentcore → lib}/tools/browser.d.ts +37 -0
  37. package/lib/tools/browser.js +680 -0
  38. package/{agentcore → lib}/tools/code-interpreter.js +2 -2
  39. package/package.json +10 -10
  40. package/agentcore/gateway/gateway-base.js +0 -171
  41. package/agentcore/gateway/outbound-auth/api-key.js +0 -141
  42. package/agentcore/gateway/outbound-auth/oauth.js +0 -76
  43. package/agentcore/gateway/perms.d.ts +0 -75
  44. package/agentcore/gateway/perms.js +0 -112
  45. package/agentcore/gateway/targets/target.js +0 -444
  46. package/agentcore/index.d.ts +0 -30
  47. package/agentcore/index.js +0 -71
  48. package/agentcore/runtime/runtime-artifact.js +0 -90
  49. package/agentcore/runtime/runtime.js +0 -589
  50. package/agentcore/runtime/types.d.ts +0 -20
  51. package/agentcore/runtime/types.js +0 -25
  52. package/agentcore/tools/browser.js +0 -641
  53. /package/{agentcore → lib}/gateway/gateway-base.d.ts +0 -0
  54. /package/{agentcore → lib}/gateway/gateway.d.ts +0 -0
  55. /package/{agentcore → lib}/gateway/inbound-auth/authorizer.d.ts +0 -0
  56. /package/{agentcore → lib}/gateway/outbound-auth/api-key.d.ts +0 -0
  57. /package/{agentcore → lib}/gateway/outbound-auth/credential-provider.d.ts +0 -0
  58. /package/{agentcore → lib}/gateway/outbound-auth/iam-role.d.ts +0 -0
  59. /package/{agentcore → lib}/gateway/outbound-auth/iam-role.js +0 -0
  60. /package/{agentcore → lib}/gateway/outbound-auth/oauth.d.ts +0 -0
  61. /package/{agentcore → lib}/gateway/protocol.d.ts +0 -0
  62. /package/{agentcore → lib}/gateway/targets/schema/api-schema.d.ts +0 -0
  63. /package/{agentcore → lib}/gateway/targets/schema/base-schema.d.ts +0 -0
  64. /package/{agentcore → lib}/gateway/targets/schema/base-schema.js +0 -0
  65. /package/{agentcore → lib}/gateway/targets/schema/tool-schema.d.ts +0 -0
  66. /package/{agentcore → lib}/gateway/targets/target-base.d.ts +0 -0
  67. /package/{agentcore → lib}/gateway/targets/target-configuration.d.ts +0 -0
  68. /package/{agentcore → lib}/gateway/targets/target.d.ts +0 -0
  69. /package/{agentcore → lib}/gateway/validation-helpers.d.ts +0 -0
  70. /package/{agentcore → lib}/gateway/validation-helpers.js +0 -0
  71. /package/{agentcore → lib}/memory/memory-strategy.d.ts +0 -0
  72. /package/{agentcore → lib}/memory/memory.d.ts +0 -0
  73. /package/{agentcore → lib}/memory/perms.d.ts +0 -0
  74. /package/{agentcore → lib}/memory/perms.js +0 -0
  75. /package/{agentcore → lib}/memory/strategies/managed-strategy.d.ts +0 -0
  76. /package/{agentcore → lib}/memory/strategies/self-managed-strategy.d.ts +0 -0
  77. /package/{agentcore → lib}/memory/validation-helpers.d.ts +0 -0
  78. /package/{agentcore → lib}/memory/validation-helpers.js +0 -0
  79. /package/{agentcore → lib}/network/network-configuration.d.ts +0 -0
  80. /package/{agentcore → lib}/runtime/perms.d.ts +0 -0
  81. /package/{agentcore → lib}/runtime/perms.js +0 -0
  82. /package/{agentcore → lib}/runtime/runtime-authorizer-configuration.d.ts +0 -0
  83. /package/{agentcore → lib}/runtime/runtime-base.d.ts +0 -0
  84. /package/{agentcore → lib}/runtime/runtime-endpoint-base.d.ts +0 -0
  85. /package/{agentcore → lib}/runtime/runtime-endpoint.d.ts +0 -0
  86. /package/{agentcore → lib}/runtime/validation-helpers.d.ts +0 -0
  87. /package/{agentcore → lib}/runtime/validation-helpers.js +0 -0
  88. /package/{agentcore → lib}/tools/code-interpreter.d.ts +0 -0
  89. /package/{agentcore → lib}/tools/perms.d.ts +0 -0
  90. /package/{agentcore → lib}/tools/perms.js +0 -0
  91. /package/{agentcore → lib}/tools/validation-helpers.d.ts +0 -0
  92. /package/{agentcore → lib}/tools/validation-helpers.js +0 -0
@@ -79,7 +79,7 @@ const CODE_INTERPRETER_TAG_MAX_LENGTH = 256;
79
79
  * Contains methods and attributes valid for Code Interpreters either created with CDK or imported.
80
80
  */
81
81
  class CodeInterpreterCustomBase extends aws_cdk_lib_1.Resource {
82
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterCustomBase", version: "2.227.0-alpha.0" };
82
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterCustomBase", version: "2.229.0-alpha.0" };
83
83
  /**
84
84
  * An accessor for the Connections object that will fail if this Browser does not have a VPC
85
85
  * configured.
@@ -313,7 +313,7 @@ let CodeInterpreterCustom = (() => {
313
313
  CodeInterpreterCustom = _classThis = _classDescriptor.value;
314
314
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
315
315
  }
316
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterCustom", version: "2.227.0-alpha.0" };
316
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterCustom", version: "2.229.0-alpha.0" };
317
317
  /** Uniquely identifies this class. */
318
318
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.CodeInterpreterCustom';
319
319
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-bedrock-agentcore-alpha",
3
- "version": "2.227.0-alpha.0",
3
+ "version": "2.229.0-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for Amazon Bedrock",
6
6
  "main": "lib/index.js",
@@ -78,21 +78,21 @@
78
78
  },
79
79
  "license": "Apache-2.0",
80
80
  "devDependencies": {
81
- "aws-cdk-lib": "2.227.0",
82
- "@aws-cdk/aws-bedrock-alpha": "2.227.0-alpha.0",
83
- "@aws-cdk/cdk-build-tools": "2.227.0-alpha.0",
84
- "@aws-cdk/integ-runner": "^2.190.2",
85
- "@aws-cdk/pkglint": "2.227.0-alpha.0",
86
- "@aws-cdk/integ-tests-alpha": "2.227.0-alpha.0",
81
+ "aws-cdk-lib": "2.229.0",
82
+ "@aws-cdk/aws-bedrock-alpha": "2.229.0-alpha.0",
83
+ "@aws-cdk/cdk-build-tools": "2.229.0-alpha.0",
84
+ "@aws-cdk/integ-runner": "^2.192.2",
85
+ "@aws-cdk/pkglint": "2.229.0-alpha.0",
86
+ "@aws-cdk/integ-tests-alpha": "2.229.0-alpha.0",
87
87
  "@types/jest": "^29.5.14",
88
88
  "constructs": "^10.0.0",
89
89
  "jest": "^29.7.0"
90
90
  },
91
91
  "homepage": "https://github.com/aws/aws-cdk",
92
92
  "peerDependencies": {
93
- "aws-cdk-lib": "^2.227.0",
93
+ "aws-cdk-lib": "^2.229.0",
94
94
  "constructs": "^10.0.0",
95
- "@aws-cdk/aws-bedrock-alpha": "2.227.0-alpha.0"
95
+ "@aws-cdk/aws-bedrock-alpha": "2.229.0-alpha.0"
96
96
  },
97
97
  "engines": {
98
98
  "node": ">= 18.0.0"
@@ -123,7 +123,7 @@
123
123
  },
124
124
  "jsiiRosetta": {
125
125
  "exampleDependencies": {
126
- "@aws-cdk/aws-bedrock-alpha": "^2.227.0-alpha.0"
126
+ "@aws-cdk/aws-bedrock-alpha": "^2.229.0-alpha.0"
127
127
  }
128
128
  }
129
129
  }
@@ -1,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GatewayBase = exports.GatewayExceptionLevel = void 0;
4
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
- const aws_cdk_lib_1 = require("aws-cdk-lib");
6
- const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
7
- const iam = require("aws-cdk-lib/aws-iam");
8
- const perms_1 = require("./perms");
9
- /******************************************************************************
10
- * Enums
11
- *****************************************************************************/
12
- /**
13
- * Exception levels for gateway
14
- */
15
- var GatewayExceptionLevel;
16
- (function (GatewayExceptionLevel) {
17
- /**
18
- * Debug mode for granular exception messages. Allows the return of
19
- * specific error messages related to the gateway target configuration
20
- * to help you with debugging.
21
- */
22
- GatewayExceptionLevel["DEBUG"] = "DEBUG";
23
- })(GatewayExceptionLevel || (exports.GatewayExceptionLevel = GatewayExceptionLevel = {}));
24
- /******************************************************************************
25
- * Base Class
26
- *****************************************************************************/
27
- class GatewayBase extends aws_cdk_lib_1.Resource {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.GatewayBase", version: "2.227.0-alpha.0" };
29
- constructor(scope, id) {
30
- super(scope, id);
31
- }
32
- // ------------------------------------------------------
33
- // Permission Methods
34
- // ------------------------------------------------------
35
- /**
36
- * Grants IAM actions to the IAM Principal
37
- *
38
- * @param grantee The principal to grant permissions to
39
- * @param actions The actions to grant
40
- */
41
- grant(grantee, ...actions) {
42
- return iam.Grant.addToPrincipal({
43
- grantee: grantee,
44
- resourceArns: [this.gatewayArn],
45
- actions: actions,
46
- });
47
- }
48
- /**
49
- * Grants `Get` and `List` actions on the Gateway
50
- *
51
- * @param grantee The principal to grant read permissions to
52
- */
53
- grantRead(grantee) {
54
- const resourceSpecificGrant = this.grant(grantee, ...perms_1.GatewayPerms.GET_PERMS);
55
- const allResourceGrant = iam.Grant.addToPrincipal({
56
- grantee: grantee,
57
- resourceArns: ['*'],
58
- actions: [...perms_1.GatewayPerms.LIST_PERMS],
59
- });
60
- // Return combined grant
61
- return resourceSpecificGrant.combine(allResourceGrant);
62
- }
63
- /**
64
- * Grants `Create`, `Update`, and `Delete` actions on the Gateway
65
- *
66
- * @param grantee The principal to grant manage permissions to
67
- */
68
- grantManage(grantee) {
69
- return this.grant(grantee, ...perms_1.GatewayPerms.MANAGE_PERMS);
70
- }
71
- /**
72
- * Grants permission to invoke this Gateway
73
- *
74
- * @param grantee The principal to grant invoke permissions to
75
- */
76
- grantInvoke(grantee) {
77
- return this.grant(grantee, ...perms_1.GatewayPerms.INVOKE_PERMS);
78
- }
79
- // ------------------------------------------------------
80
- // Metric Methods
81
- // ------------------------------------------------------
82
- /**
83
- * Return the given named metric for this gateway.
84
- *
85
- * By default, the metric will be calculated as a sum over a period of 5 minutes.
86
- * You can customize this by using the `statistic` and `period` properties.
87
- *
88
- * @param metricName The name of the metric
89
- * @param dimensions Additional dimensions for the metric
90
- * @param props Optional metric configuration
91
- */
92
- metric(metricName, dimensions, props) {
93
- const metricProps = {
94
- namespace: 'AWS/Bedrock-AgentCore',
95
- metricName,
96
- dimensionsMap: { ...dimensions, Resource: this.gatewayArn },
97
- ...props,
98
- };
99
- return this.configureMetric(metricProps);
100
- }
101
- /**
102
- * Return a metric containing the total number of invocations for this gateway.
103
- */
104
- metricInvocations(props) {
105
- return this.metric('Invocations', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
106
- }
107
- /**
108
- * Return a metric containing the number of throttled requests (429 status code) for this gateway.
109
- */
110
- metricThrottles(props) {
111
- return this.metric('Throttles', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
112
- }
113
- /**
114
- * Return a metric containing the number of system errors (5xx status code) for this gateway.
115
- */
116
- metricSystemErrors(props) {
117
- return this.metric('SystemErrors', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
118
- }
119
- /**
120
- * Return a metric containing the number of user errors (4xx status code, excluding 429) for this gateway.
121
- */
122
- metricUserErrors(props) {
123
- return this.metric('UserErrors', {}, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
124
- }
125
- /**
126
- * Return a metric measuring the latency of requests for this gateway.
127
- *
128
- * The latency metric represents the time elapsed between when the service receives
129
- * the request and when it begins sending the first response token.
130
- */
131
- metricLatency(props) {
132
- return this.metric('Latency', {}, { statistic: aws_cloudwatch_1.Stats.AVERAGE, ...props });
133
- }
134
- /**
135
- * Return a metric measuring the duration of requests for this gateway.
136
- *
137
- * The duration metric represents the total time elapsed between receiving the request
138
- * and sending the final response token, representing complete end-to-end processing time.
139
- */
140
- metricDuration(props) {
141
- return this.metric('Duration', {}, { statistic: aws_cloudwatch_1.Stats.AVERAGE, ...props });
142
- }
143
- /**
144
- * Return a metric measuring the target execution time for this gateway.
145
- *
146
- * This metric helps determine the contribution of the target (Lambda, OpenAPI, etc.)
147
- * to the total latency.
148
- */
149
- metricTargetExecutionTime(props) {
150
- return this.metric('TargetExecutionTime', {}, { statistic: aws_cloudwatch_1.Stats.AVERAGE, ...props });
151
- }
152
- /**
153
- * Return a metric containing the number of requests served by each target type for this gateway.
154
- */
155
- metricTargetType(targetType, props) {
156
- return this.metric('TargetType', { TargetType: targetType }, { statistic: aws_cloudwatch_1.Stats.SUM, ...props });
157
- }
158
- /**
159
- * Internal method to create a metric.
160
- * @internal
161
- */
162
- configureMetric(props) {
163
- return new aws_cloudwatch_1.Metric({
164
- ...props,
165
- region: props?.region ?? this.stack.region,
166
- account: props?.account ?? this.stack.account,
167
- });
168
- }
169
- }
170
- exports.GatewayBase = GatewayBase;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2F0ZXdheS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2Q0FBa0Q7QUFDbEQsK0RBQXNHO0FBQ3RHLDJDQUEyQztBQUszQyxtQ0FBdUM7QUFHdkM7OytFQUUrRTtBQUMvRTs7R0FFRztBQUNILElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQjs7OztPQUlHO0lBQ0gsd0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFPaEM7QUF5TUQ7OytFQUUrRTtBQUUvRSxNQUFzQixXQUFZLFNBQVEsc0JBQVE7O0lBZ0JoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2xCO0lBRUQseURBQXlEO0lBQ3pELHFCQUFxQjtJQUNyQix5REFBeUQ7SUFDekQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUMvQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7S0FDSjtJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLG9CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0UsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUNoRCxPQUFPLEVBQUUsT0FBTztZQUNoQixZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsR0FBRyxvQkFBWSxDQUFDLFVBQVUsQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFDSCx3QkFBd0I7UUFDeEIsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUN4RDtJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsT0FBdUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLG9CQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDMUQ7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLE9BQXVCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxvQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzFEO0lBRUQseURBQXlEO0lBQ3pELGlCQUFpQjtJQUNqQix5REFBeUQ7SUFDekQ7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLFVBQWtCLEVBQUUsVUFBeUIsRUFBRSxLQUFxQjtRQUNoRixNQUFNLFdBQVcsR0FBZ0I7WUFDL0IsU0FBUyxFQUFFLHVCQUF1QjtZQUNsQyxVQUFVO1lBQ1YsYUFBYSxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0QsR0FBRyxLQUFLO1NBQ1QsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUMxQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCLENBQUMsS0FBcUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0JBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQzNFO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsS0FBcUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0JBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3pFO0lBRUQ7O09BRUc7SUFDSSxrQkFBa0IsQ0FBQyxLQUFxQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDNUU7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLEtBQXFCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMxRTtJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLEtBQXFCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUMzRTtJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLEtBQXFCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNCQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUM1RTtJQUVEOzs7OztPQUtHO0lBQ0kseUJBQXlCLENBQUMsS0FBcUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDdkY7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLFVBQWtCLEVBQUUsS0FBcUI7UUFDL0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxzQkFBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDbEc7SUFFRDs7O09BR0c7SUFDSyxlQUFlLENBQUMsS0FBa0I7UUFDeEMsT0FBTyxJQUFJLHVCQUFNLENBQUM7WUFDaEIsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztTQUM5QyxDQUFDLENBQUM7S0FDSjs7QUExS0gsa0NBMktDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERpbWVuc2lvbnNNYXAsIE1ldHJpYywgTWV0cmljT3B0aW9ucywgTWV0cmljUHJvcHMsIFN0YXRzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4vLyBJbnRlcm5hbCBpbXBvcnRzXG5pbXBvcnQgeyBJR2F0ZXdheUF1dGhvcml6ZXJDb25maWcgfSBmcm9tICcuL2luYm91bmQtYXV0aC9hdXRob3JpemVyJztcbmltcG9ydCB7IEdhdGV3YXlQZXJtcyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHsgSUdhdGV3YXlQcm90b2NvbENvbmZpZyB9IGZyb20gJy4vcHJvdG9jb2wnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1zXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEV4Y2VwdGlvbiBsZXZlbHMgZm9yIGdhdGV3YXlcbiAqL1xuZXhwb3J0IGVudW0gR2F0ZXdheUV4Y2VwdGlvbkxldmVsIHtcbiAgLyoqXG4gICAqIERlYnVnIG1vZGUgZm9yIGdyYW51bGFyIGV4Y2VwdGlvbiBtZXNzYWdlcy4gQWxsb3dzIHRoZSByZXR1cm4gb2ZcbiAgICogc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgcmVsYXRlZCB0byB0aGUgZ2F0ZXdheSB0YXJnZXQgY29uZmlndXJhdGlvblxuICAgKiB0byBoZWxwIHlvdSB3aXRoIGRlYnVnZ2luZy5cbiAgICovXG4gIERFQlVHID0gJ0RFQlVHJyxcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIEdhdGV3YXkgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGV3YXkgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2F0ZXdheSByZXNvdXJjZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBnYXRld2F5IHRvIGFjY2VzcyBBV1Mgc2VydmljZXNcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbENvbmZpZ3VyYXRpb246IElHYXRld2F5UHJvdG9jb2xDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyQ29uZmlndXJhdGlvbjogSUdhdGV3YXlBdXRob3JpemVyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhjZXB0aW9uIGxldmVsIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjZXB0aW9uTGV2ZWw/OiBHYXRld2F5RXhjZXB0aW9uTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgZm9yIGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIGVuZHBvaW50IGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBnYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyByZWFzb25zIGZvciB0aGUgZ2F0ZXdheS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBnYXRld2F5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZXN0YW1wIHdoZW4gdGhlIGdhdGV3YXkgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBJQU0gYWN0aW9ucyB0byB0aGUgSUFNIFByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgYEdldGAgYW5kIGBMaXN0YCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgQ3JlYXRlYCwgYFVwZGF0ZWAsIGFuZCBgRGVsZXRlYCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqL1xuICBncmFudE1hbmFnZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW52b2tlIHRoaXMgR2F0ZXdheVxuICAgKi9cbiAgZ3JhbnRJbnZva2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gbWV0cmljTmFtZSBUaGUgbmFtZSBvZiB0aGUgbWV0cmljXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zIEFkZGl0aW9uYWwgZGltZW5zaW9ucyBmb3IgdGhlIG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIGRpbWVuc2lvbnM6IERpbWVuc2lvbnNNYXAsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBpbnZvY2F0aW9ucyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyB0cmFja3MgYWxsIHN1Y2Nlc3NmdWwgaW52b2NhdGlvbnMgb2YgdGhlIGdhdGV3YXkuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIFN1bSBzdGF0aXN0aWMgb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIG1ldHJpY0ludm9jYXRpb25zKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB0aHJvdHRsZWQgcmVxdWVzdHMgKDQyOSBzdGF0dXMgY29kZSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaGVscHMgaWRlbnRpZnkgd2hlbiB0aGUgZ2F0ZXdheSBpcyByYXRlIGxpbWl0aW5nIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBTdW0gc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNUaHJvdHRsZXMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHN5c3RlbSBlcnJvcnMgKDV4eCBzdGF0dXMgY29kZSkgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgdHJhY2tzIGludGVybmFsIHNlcnZlciBlcnJvcnMgYW5kIHN5c3RlbSBmYWlsdXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyAoNHh4IHN0YXR1cyBjb2RlLCBleGNsdWRpbmcgNDI5KSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyB0cmFja3MgY2xpZW50IGVycm9ycyBsaWtlIGJhZCByZXF1ZXN0cywgdW5hdXRob3JpemVkIGFjY2VzcywgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBTdW0gc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNVc2VyRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdGltZSBlbGFwc2VkIGJldHdlZW4gd2hlbiB0aGUgc2VydmljZSByZWNlaXZlc1xuICAgKiB0aGUgcmVxdWVzdCBhbmQgd2hlbiBpdCBiZWdpbnMgc2VuZGluZyB0aGUgZmlyc3QgcmVzcG9uc2UgdG9rZW4uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIEF2ZXJhZ2Ugc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5KHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgZHVyYXRpb24gb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGR1cmF0aW9uIG1ldHJpYyByZXByZXNlbnRzIHRoZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbiByZWNlaXZpbmcgdGhlIHJlcXVlc3RcbiAgICogYW5kIHNlbmRpbmcgdGhlIGZpbmFsIHJlc3BvbnNlIHRva2VuLCByZXByZXNlbnRpbmcgY29tcGxldGUgZW5kLXRvLWVuZCBwcm9jZXNzaW5nIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKiBAZGVmYXVsdCAtIEF2ZXJhZ2Ugc3RhdGlzdGljIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBtZXRyaWNEdXJhdGlvbihwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBtZWFzdXJpbmcgdGhlIHRhcmdldCBleGVjdXRpb24gdGltZSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBoZWxwcyBkZXRlcm1pbmUgdGhlIGNvbnRyaWJ1dGlvbiBvZiB0aGUgdGFyZ2V0IChMYW1iZGEsIE9wZW5BUEksIGV0Yy4pXG4gICAqIHRvIHRoZSB0b3RhbCBsYXRlbmN5LlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgT3B0aW9uYWwgbWV0cmljIGNvbmZpZ3VyYXRpb25cbiAgICogQGRlZmF1bHQgLSBBdmVyYWdlIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVGFyZ2V0RXhlY3V0aW9uVGltZShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgc2VydmVkIGJ5IGVhY2ggdGFyZ2V0IHR5cGUgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogQHBhcmFtIHRhcmdldFR5cGUgVGhlIHR5cGUgb2YgdGFyZ2V0IChlLmcuLCAnTGFtYmRhJywgJ09wZW5BUEknLCAnU21pdGh5JylcbiAgICogQHBhcmFtIHByb3BzIE9wdGlvbmFsIG1ldHJpYyBjb25maWd1cmF0aW9uXG4gICAqIEBkZWZhdWx0IC0gU3VtIHN0YXRpc3RpYyBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgbWV0cmljVGFyZ2V0VHlwZSh0YXJnZXRUeXBlOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhdGV3YXlCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJR2F0ZXdheSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5SWQ6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJvdG9jb2xDb25maWd1cmF0aW9uOiBJR2F0ZXdheVByb3RvY29sQ29uZmlnO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYXV0aG9yaXplckNvbmZpZ3VyYXRpb246IElHYXRld2F5QXV0aG9yaXplckNvbmZpZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGV4Y2VwdGlvbkxldmVsPzogR2F0ZXdheUV4Y2VwdGlvbkxldmVsO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBnYXRld2F5VXJsPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc3RhdHVzUmVhc29uPzogc3RyaW5nW107XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUGVybWlzc2lvbiBNZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogR3JhbnRzIElBTSBhY3Rpb25zIHRvIHRoZSBJQU0gUHJpbmNpcGFsXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGFjdGlvbnMgdG8gZ3JhbnRcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZ2F0ZXdheUFybl0sXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgR2V0YCBhbmQgYExpc3RgIGFjdGlvbnMgb24gdGhlIEdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCByZWFkIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXNvdXJjZVNwZWNpZmljR3JhbnQgPSB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLkdhdGV3YXlQZXJtcy5HRVRfUEVSTVMpO1xuXG4gICAgY29uc3QgYWxsUmVzb3VyY2VHcmFudCA9IGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbJyonXSxcbiAgICAgIGFjdGlvbnM6IFsuLi5HYXRld2F5UGVybXMuTElTVF9QRVJNU10sXG4gICAgfSk7XG4gICAgLy8gUmV0dXJuIGNvbWJpbmVkIGdyYW50XG4gICAgcmV0dXJuIHJlc291cmNlU3BlY2lmaWNHcmFudC5jb21iaW5lKGFsbFJlc291cmNlR3JhbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBgQ3JlYXRlYCwgYFVwZGF0ZWAsIGFuZCBgRGVsZXRlYCBhY3Rpb25zIG9uIHRoZSBHYXRld2F5XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgbWFuYWdlIHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRNYW5hZ2UoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLkdhdGV3YXlQZXJtcy5NQU5BR0VfUEVSTVMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGludm9rZSB0aGlzIEdhdGV3YXlcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCB0byBncmFudCBpbnZva2UgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIHB1YmxpYyBncmFudEludm9rZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uR2F0ZXdheVBlcm1zLklOVk9LRV9QRVJNUyk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTWV0cmljIE1ldGhvZHNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbWV0cmljIHdpbGwgYmUgY2FsY3VsYXRlZCBhcyBhIHN1bSBvdmVyIGEgcGVyaW9kIG9mIDUgbWludXRlcy5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhpcyBieSB1c2luZyB0aGUgYHN0YXRpc3RpY2AgYW5kIGBwZXJpb2RgIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRyaWNOYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXRyaWNcbiAgICogQHBhcmFtIGRpbWVuc2lvbnMgQWRkaXRpb25hbCBkaW1lbnNpb25zIGZvciB0aGUgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wcyBPcHRpb25hbCBtZXRyaWMgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIGRpbWVuc2lvbnM6IERpbWVuc2lvbnNNYXAsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgY29uc3QgbWV0cmljUHJvcHM6IE1ldHJpY1Byb3BzID0ge1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0JlZHJvY2stQWdlbnRDb3JlJyxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IC4uLmRpbWVuc2lvbnMsIFJlc291cmNlOiB0aGlzLmdhdGV3YXlBcm4gfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJlTWV0cmljKG1ldHJpY1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIGludm9jYXRpb25zIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW52b2NhdGlvbnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0ludm9jYXRpb25zJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgdGhyb3R0bGVkIHJlcXVlc3RzICg0Mjkgc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGhyb3R0bGVzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUaHJvdHRsZXMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBzeXN0ZW0gZXJyb3JzICg1eHggc3RhdHVzIGNvZGUpIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljU3lzdGVtRXJyb3JzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdTeXN0ZW1FcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiB1c2VyIGVycm9ycyAoNHh4IHN0YXR1cyBjb2RlLCBleGNsdWRpbmcgNDI5KSBmb3IgdGhpcyBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VzZXJFcnJvcnMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ1VzZXJFcnJvcnMnLCB7fSwgeyBzdGF0aXN0aWM6IFN0YXRzLlNVTSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBnYXRld2F5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdGltZSBlbGFwc2VkIGJldHdlZW4gd2hlbiB0aGUgc2VydmljZSByZWNlaXZlc1xuICAgKiB0aGUgcmVxdWVzdCBhbmQgd2hlbiBpdCBiZWdpbnMgc2VuZGluZyB0aGUgZmlyc3QgcmVzcG9uc2UgdG9rZW4uXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGF0ZW5jeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYygnTGF0ZW5jeScsIHt9LCB7IHN0YXRpc3RpYzogU3RhdHMuQVZFUkFHRSwgLi4ucHJvcHMgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgZHVyYXRpb24gb2YgcmVxdWVzdHMgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhlIGR1cmF0aW9uIG1ldHJpYyByZXByZXNlbnRzIHRoZSB0b3RhbCB0aW1lIGVsYXBzZWQgYmV0d2VlbiByZWNlaXZpbmcgdGhlIHJlcXVlc3RcbiAgICogYW5kIHNlbmRpbmcgdGhlIGZpbmFsIHJlc3BvbnNlIHRva2VuLCByZXByZXNlbnRpbmcgY29tcGxldGUgZW5kLXRvLWVuZCBwcm9jZXNzaW5nIHRpbWUuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRHVyYXRpb24ocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0R1cmF0aW9uJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgbWVhc3VyaW5nIHRoZSB0YXJnZXQgZXhlY3V0aW9uIHRpbWUgZm9yIHRoaXMgZ2F0ZXdheS5cbiAgICpcbiAgICogVGhpcyBtZXRyaWMgaGVscHMgZGV0ZXJtaW5lIHRoZSBjb250cmlidXRpb24gb2YgdGhlIHRhcmdldCAoTGFtYmRhLCBPcGVuQVBJLCBldGMuKVxuICAgKiB0byB0aGUgdG90YWwgbGF0ZW5jeS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUYXJnZXRFeGVjdXRpb25UaW1lKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUYXJnZXRFeGVjdXRpb25UaW1lJywge30sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHNlcnZlZCBieSBlYWNoIHRhcmdldCB0eXBlIGZvciB0aGlzIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljVGFyZ2V0VHlwZSh0YXJnZXRUeXBlOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKCdUYXJnZXRUeXBlJywgeyBUYXJnZXRUeXBlOiB0YXJnZXRUeXBlIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgYSBtZXRyaWMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBjb25maWd1cmVNZXRyaWMocHJvcHM6IE1ldHJpY1Byb3BzKSB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZWdpb246IHByb3BzPy5yZWdpb24gPz8gdGhpcy5zdGFjay5yZWdpb24sXG4gICAgICBhY2NvdW50OiBwcm9wcz8uYWNjb3VudCA/PyB0aGlzLnN0YWNrLmFjY291bnQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,141 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiKeyCredentialProviderConfiguration = exports.ApiKeyCredentialLocation = exports.ApiKeyCredentialLocationType = void 0;
4
- const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
5
- const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
- const credential_provider_1 = require("./credential-provider");
8
- const perms_1 = require("../perms");
9
- /**
10
- * API Key credential location type
11
- * @internal
12
- */
13
- var ApiKeyCredentialLocationType;
14
- (function (ApiKeyCredentialLocationType) {
15
- ApiKeyCredentialLocationType["HEADER"] = "HEADER";
16
- ApiKeyCredentialLocationType["QUERY_PARAMETER"] = "QUERY_PARAMETER";
17
- })(ApiKeyCredentialLocationType || (exports.ApiKeyCredentialLocationType = ApiKeyCredentialLocationType = {}));
18
- /**
19
- * API Key location within the request
20
- */
21
- class ApiKeyCredentialLocation {
22
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ApiKeyCredentialLocation", version: "2.227.0-alpha.0" };
23
- /**
24
- * Create a header-based API key credential location
25
- * @param config - Optional configuration for the credential location
26
- * @returns ApiKeyCredentialLocation configured for header placement
27
- */
28
- static header(config) {
29
- try {
30
- jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config);
31
- }
32
- catch (error) {
33
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
34
- Error.captureStackTrace(error, this.header);
35
- }
36
- throw error;
37
- }
38
- return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.HEADER, config?.credentialParameterName ?? 'Authorization', config?.credentialPrefix ?? 'Bearer ');
39
- }
40
- /**
41
- * Create a query parameter-based API key credential location
42
- * @param config - Optional configuration for the credential location
43
- * @returns ApiKeyCredentialLocation configured for query parameter placement
44
- */
45
- static queryParameter(config) {
46
- try {
47
- jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_ApiKeyAdditionalConfiguration(config);
48
- }
49
- catch (error) {
50
- if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
51
- Error.captureStackTrace(error, this.queryParameter);
52
- }
53
- throw error;
54
- }
55
- return new ApiKeyCredentialLocation(ApiKeyCredentialLocationType.QUERY_PARAMETER, config?.credentialParameterName ?? 'api_key', config?.credentialPrefix);
56
- }
57
- /**
58
- * The name of the credential parameter
59
- */
60
- credentialParameterName;
61
- /**
62
- * The prefix for the credential value
63
- */
64
- credentialPrefix;
65
- /**
66
- * The type of credential location (HEADER or QUERY_PARAMETER)
67
- */
68
- credentialLocationType;
69
- constructor(credentialLocationType, credentialParameterName, credentialPrefix) {
70
- this.credentialLocationType = credentialLocationType;
71
- this.credentialParameterName = credentialParameterName;
72
- this.credentialPrefix = credentialPrefix;
73
- }
74
- }
75
- exports.ApiKeyCredentialLocation = ApiKeyCredentialLocation;
76
- /**
77
- * API Key credential provider configuration implementation
78
- * Can be used with OpenAPI targets
79
- * @internal
80
- */
81
- class ApiKeyCredentialProviderConfiguration {
82
- credentialProviderType = credential_provider_1.CredentialProviderType.API_KEY;
83
- /**
84
- * The ARN of the API key provider
85
- */
86
- providerArn;
87
- /**
88
- * The ARN of the Secrets Manager secret
89
- */
90
- secretArn;
91
- /**
92
- * The location configuration for the API key credential
93
- */
94
- credentialLocation;
95
- constructor(configuration) {
96
- this.providerArn = configuration.providerArn;
97
- this.secretArn = configuration.secretArn;
98
- this.credentialLocation = configuration.credentialLocation ?? ApiKeyCredentialLocation.header();
99
- }
100
- /**
101
- * Grant the needed permissions to the role for API key authentication
102
- */
103
- grantNeededPermissionsToRole(role) {
104
- const statements = [
105
- new aws_iam_1.PolicyStatement({
106
- actions: [
107
- ...perms_1.GatewayPerms.GATEWAY_API_KEY_PERMS,
108
- ...perms_1.GatewayPerms.GATEWAY_WORKLOAD_IDENTITY_PERMS,
109
- ],
110
- resources: [this.providerArn],
111
- }),
112
- new aws_iam_1.PolicyStatement({
113
- actions: perms_1.GatewayPerms.SECRETS_PERMS,
114
- resources: [this.secretArn],
115
- }),
116
- ];
117
- return aws_iam_1.Grant.addToPrincipal({
118
- grantee: role,
119
- actions: statements.flatMap(s => s.actions),
120
- resourceArns: statements.flatMap(s => s.resources),
121
- });
122
- }
123
- /**
124
- * @internal
125
- */
126
- _render() {
127
- return {
128
- credentialProviderType: this.credentialProviderType,
129
- credentialProvider: {
130
- apiKeyCredentialProvider: {
131
- providerArn: this.providerArn,
132
- credentialLocation: this.credentialLocation.credentialLocationType,
133
- credentialParameterName: this.credentialLocation.credentialParameterName,
134
- credentialPrefix: this.credentialLocation.credentialPrefix,
135
- },
136
- },
137
- };
138
- }
139
- }
140
- exports.ApiKeyCredentialProviderConfiguration = ApiKeyCredentialProviderConfiguration;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpREFBb0U7QUFDcEUsK0RBQTBGO0FBQzFGLG9DQUF3QztBQTZCeEM7OztHQUdHO0FBQ0gsSUFBWSw0QkFHWDtBQUhELFdBQVksNEJBQTRCO0lBQ3RDLGlEQUFpQixDQUFBO0lBQ2pCLG1FQUFtQyxDQUFBO0FBQ3JDLENBQUMsRUFIVyw0QkFBNEIsNENBQTVCLDRCQUE0QixRQUd2QztBQUVEOztHQUVHO0FBQ0gsTUFBYSx3QkFBd0I7O0lBQ25DOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQXNDOzs7Ozs7Ozs7O1FBQ3pELE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsNEJBQTRCLENBQUMsTUFBTSxFQUNuQyxNQUFNLEVBQUUsdUJBQXVCLElBQUksZUFBZSxFQUNsRCxNQUFNLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxDQUN0QyxDQUFDO0tBQ0g7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFzQzs7Ozs7Ozs7OztRQUNqRSxPQUFPLElBQUksd0JBQXdCLENBQ2pDLDRCQUE0QixDQUFDLGVBQWUsRUFDNUMsTUFBTSxFQUFFLHVCQUF1QixJQUFJLFNBQVMsRUFDNUMsTUFBTSxFQUFFLGdCQUFnQixDQUN6QixDQUFDO0tBQ0g7SUFFRDs7T0FFRztJQUNhLHVCQUF1QixDQUFTO0lBQ2hEOztPQUVHO0lBQ2EsZ0JBQWdCLENBQVU7SUFDMUM7O09BRUc7SUFDYSxzQkFBc0IsQ0FBUztJQUUvQyxZQUNFLHNCQUE4QixFQUM5Qix1QkFBK0IsRUFDL0IsZ0JBQXlCO1FBRXpCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztRQUNyRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0tBQzFDOztBQWhESCw0REFpREM7QUE2QkQ7Ozs7R0FJRztBQUNILE1BQWEscUNBQXFDO0lBQ2hDLHNCQUFzQixHQUFHLDRDQUFzQixDQUFDLE9BQU8sQ0FBQztJQUN4RTs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUNwQzs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUNsQzs7T0FFRztJQUNhLGtCQUFrQixDQUEyQjtJQUU3RCxZQUFZLGFBQTRDO1FBQ3RELElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsSUFBSSx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUNqRztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCLENBQUMsSUFBVztRQUN0QyxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRTtvQkFDUCxHQUFHLG9CQUFZLENBQUMscUJBQXFCO29CQUNyQyxHQUFHLG9CQUFZLENBQUMsK0JBQStCO2lCQUNoRDtnQkFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzlCLENBQUM7WUFDRixJQUFJLHlCQUFlLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxvQkFBWSxDQUFDLGFBQWE7Z0JBQ25DLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUM7UUFFRixPQUFPLGVBQUssQ0FBQyxjQUFjLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDM0MsWUFBWSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ25ELENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTztZQUNMLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsa0JBQWtCLEVBQUU7Z0JBQ2xCLHdCQUF3QixFQUFFO29CQUN4QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0I7b0JBQ2xFLHVCQUF1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUI7b0JBQ3hFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0I7aUJBQzNEO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQTlERCxzRkE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFudCwgSVJvbGUsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbFByb3ZpZGVyVHlwZSwgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHYXRld2F5UGVybXMgfSBmcm9tICcuLi9wZXJtcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJIEtFWVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBUEkgS2V5IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaUtleUFkZGl0aW9uYWxDb25maWd1cmF0aW9uIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNyZWRlbnRpYWwgcGFyYW1ldGVyIGZvciB0aGUgQVBJIGtleS5cbiAgICogVGhpcyBwYXJhbWV0ZXIgbmFtZSBpcyB1c2VkIHdoZW4gc2VuZGluZyB0aGUgQVBJIGtleSB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdBdXRob3JpemF0aW9uJyBmb3IgSEVBREVSLCAnYXBpX2tleScgZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggZm9yIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgcHJlZml4IGlzIGFkZGVkIHRvIHRoZSBBUEkga2V5IHdoZW4gc2VuZGluZyBpdCB0byB0aGUgdGFyZ2V0IGVuZHBvaW50LlxuICAgKlxuICAgKiBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDY0LlxuICAgKiBAZGVmYXVsdCAtICdCZWFyZXIgJyBmb3IgSEVBREVSLCBubyBwcmVmaXggZm9yIFFVRVJZX1BBUkFNRVRFUlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbFByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBUEkgS2V5IGNyZWRlbnRpYWwgbG9jYXRpb24gdHlwZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBlbnVtIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUge1xuICBIRUFERVIgPSAnSEVBREVSJyxcbiAgUVVFUllfUEFSQU1FVEVSID0gJ1FVRVJZX1BBUkFNRVRFUicsXG59XG5cbi8qKlxuICogQVBJIEtleSBsb2NhdGlvbiB3aXRoaW4gdGhlIHJlcXVlc3RcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZWFkZXItYmFzZWQgQVBJIGtleSBjcmVkZW50aWFsIGxvY2F0aW9uXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcmV0dXJucyBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb24gY29uZmlndXJlZCBmb3IgaGVhZGVyIHBsYWNlbWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBoZWFkZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuSEVBREVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnQXV0aG9yaXphdGlvbicsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXggPz8gJ0JlYXJlciAnLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcXVlcnkgcGFyYW1ldGVyLWJhc2VkIEFQSSBrZXkgY3JlZGVudGlhbCBsb2NhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNyZWRlbnRpYWwgbG9jYXRpb25cbiAgICogQHJldHVybnMgQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uIGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IHBhcmFtZXRlciBwbGFjZW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcXVlcnlQYXJhbWV0ZXIoY29uZmlnPzogQXBpS2V5QWRkaXRpb25hbENvbmZpZ3VyYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvbihcbiAgICAgIEFwaUtleUNyZWRlbnRpYWxMb2NhdGlvblR5cGUuUVVFUllfUEFSQU1FVEVSLFxuICAgICAgY29uZmlnPy5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSA/PyAnYXBpX2tleScsXG4gICAgICBjb25maWc/LmNyZWRlbnRpYWxQcmVmaXgsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3JlZGVudGlhbCBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHByZWZpeCBmb3IgdGhlIGNyZWRlbnRpYWwgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY3JlZGVudGlhbCBsb2NhdGlvbiAoSEVBREVSIG9yIFFVRVJZX1BBUkFNRVRFUilcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBjcmVkZW50aWFsTG9jYXRpb25UeXBlOiBzdHJpbmcsXG4gICAgY3JlZGVudGlhbFBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBjcmVkZW50aWFsUHJlZml4Pzogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvblR5cGUgPSBjcmVkZW50aWFsTG9jYXRpb25UeXBlO1xuICAgIHRoaXMuY3JlZGVudGlhbFBhcmFtZXRlck5hbWUgPSBjcmVkZW50aWFsUGFyYW1ldGVyTmFtZTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcmVmaXggPSBjcmVkZW50aWFsUHJlZml4O1xuICB9XG59XG5cbi8qKlxuICogQVBJIEtleSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIEFQSSBrZXkgY3JlZGVudGlhbCBwcm92aWRlciBBUk4uXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOmJlZHJvY2stYWdlbnRjb3JlOnJlZ2lvbjphY2NvdW50OnRva2VuLXZhdWx0L2lkL2FwaWtleWNyZWRlbnRpYWxwcm92aWRlci9uYW1lXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgdGhlIEFQSSBrZXkuXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgQVBJIGtleSBjcmVkZW50aWFsIHByb3ZpZGVyIHZpYSBDb25zb2xlIG9yIEFQSS5cbiAgICogRm9ybWF0OiBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnJlZ2lvbjphY2NvdW50OnNlY3JldDpuYW1lXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBBUEkga2V5IGNyZWRlbnRpYWwuXG4gICAqIFRoaXMgZmllbGQgc3BlY2lmaWVzIHdoZXJlIGluIHRoZSByZXF1ZXN0IHRoZSBBUEkga2V5IHNob3VsZCBiZSBwbGFjZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSEVBREVSXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsTG9jYXRpb24/OiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG59XG5cbi8qKlxuICogQVBJIEtleSBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqIENhbiBiZSB1c2VkIHdpdGggT3BlbkFQSSB0YXJnZXRzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZ3VyYXRpb24gaW1wbGVtZW50cyBJQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlclR5cGUgPSBDcmVkZW50aWFsUHJvdmlkZXJUeXBlLkFQSV9LRVk7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBBUEkga2V5IHByb3ZpZGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXJBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgQVBJIGtleSBjcmVkZW50aWFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbExvY2F0aW9uOiBBcGlLZXlDcmVkZW50aWFsTG9jYXRpb247XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogQXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyUHJvcHMpIHtcbiAgICB0aGlzLnByb3ZpZGVyQXJuID0gY29uZmlndXJhdGlvbi5wcm92aWRlckFybjtcbiAgICB0aGlzLnNlY3JldEFybiA9IGNvbmZpZ3VyYXRpb24uc2VjcmV0QXJuO1xuICAgIHRoaXMuY3JlZGVudGlhbExvY2F0aW9uID0gY29uZmlndXJhdGlvbi5jcmVkZW50aWFsTG9jYXRpb24gPz8gQXBpS2V5Q3JlZGVudGlhbExvY2F0aW9uLmhlYWRlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBuZWVkZWQgcGVybWlzc2lvbnMgdG8gdGhlIHJvbGUgZm9yIEFQSSBrZXkgYXV0aGVudGljYXRpb25cbiAgICovXG4gIGdyYW50TmVlZGVkUGVybWlzc2lvbnNUb1JvbGUocm9sZTogSVJvbGUpOiBHcmFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IFtcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLi4uR2F0ZXdheVBlcm1zLkdBVEVXQVlfQVBJX0tFWV9QRVJNUyxcbiAgICAgICAgICAuLi5HYXRld2F5UGVybXMuR0FURVdBWV9XT1JLTE9BRF9JREVOVElUWV9QRVJNUyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm92aWRlckFybl0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBHYXRld2F5UGVybXMuU0VDUkVUU19QRVJNUyxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5zZWNyZXRBcm5dLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIHJldHVybiBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5hY3Rpb25zKSxcbiAgICAgIHJlc291cmNlQXJuczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5yZXNvdXJjZXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJUeXBlOiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclR5cGUsXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXI6IHtcbiAgICAgICAgYXBpS2V5Q3JlZGVudGlhbFByb3ZpZGVyOiB7XG4gICAgICAgICAgcHJvdmlkZXJBcm46IHRoaXMucHJvdmlkZXJBcm4sXG4gICAgICAgICAgY3JlZGVudGlhbExvY2F0aW9uOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsTG9jYXRpb25UeXBlLFxuICAgICAgICAgIGNyZWRlbnRpYWxQYXJhbWV0ZXJOYW1lOiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsUHJlZml4OiB0aGlzLmNyZWRlbnRpYWxMb2NhdGlvbi5jcmVkZW50aWFsUHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OAuthCredentialProviderConfiguration = void 0;
4
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
5
- const credential_provider_1 = require("./credential-provider");
6
- const perms_1 = require("../perms");
7
- /**
8
- * OAuth credential provider configuration implementation
9
- * Can be used with OpenAPI targets
10
- * @internal
11
- */
12
- class OAuthCredentialProviderConfiguration {
13
- credentialProviderType = credential_provider_1.CredentialProviderType.OAUTH;
14
- /**
15
- * The ARN of the OAuth provider
16
- */
17
- providerArn;
18
- /**
19
- * The ARN of the Secrets Manager secret
20
- */
21
- secretArn;
22
- /**
23
- * The OAuth scopes to request
24
- */
25
- scopes;
26
- /**
27
- * Custom parameters for the OAuth flow
28
- */
29
- customParameters;
30
- constructor(configuration) {
31
- this.providerArn = configuration.providerArn;
32
- this.secretArn = configuration.secretArn;
33
- this.scopes = configuration.scopes;
34
- this.customParameters = configuration.customParameters;
35
- }
36
- /**
37
- * Grant the needed permissions to the role for OAuth authentication
38
- */
39
- grantNeededPermissionsToRole(role) {
40
- const statements = [
41
- new aws_iam_1.PolicyStatement({
42
- actions: [
43
- ...perms_1.GatewayPerms.GATEWAY_OAUTH_PERMS,
44
- ...perms_1.GatewayPerms.GATEWAY_WORKLOAD_IDENTITY_PERMS,
45
- ],
46
- resources: [this.providerArn],
47
- }),
48
- new aws_iam_1.PolicyStatement({
49
- actions: perms_1.GatewayPerms.SECRETS_PERMS,
50
- resources: [this.secretArn],
51
- }),
52
- ];
53
- return aws_iam_1.Grant.addToPrincipal({
54
- grantee: role,
55
- actions: statements.flatMap(s => s.actions),
56
- resourceArns: statements.flatMap(s => s.resources),
57
- });
58
- }
59
- /**
60
- * @internal
61
- */
62
- _render() {
63
- return {
64
- credentialProviderType: this.credentialProviderType,
65
- credentialProvider: {
66
- oauthCredentialProvider: {
67
- providerArn: this.providerArn,
68
- scopes: this.scopes,
69
- customParameters: this.customParameters,
70
- },
71
- },
72
- };
73
- }
74
- }
75
- exports.OAuthCredentialProviderConfiguration = OAuthCredentialProviderConfiguration;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBb0U7QUFDcEUsK0RBQTBGO0FBQzFGLG9DQUF3QztBQW9EeEM7Ozs7R0FJRztBQUNILE1BQWEsb0NBQW9DO0lBQy9CLHNCQUFzQixHQUFHLDRDQUFzQixDQUFDLEtBQUssQ0FBQztJQUN0RTs7T0FFRztJQUNhLFdBQVcsQ0FBUztJQUNwQzs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUNsQzs7T0FFRztJQUNhLE1BQU0sQ0FBVztJQUNqQzs7T0FFRztJQUNhLGdCQUFnQixDQUEwQjtJQUUxRCxZQUFZLGFBQWlDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7S0FDeEQ7SUFFRDs7T0FFRztJQUNILDRCQUE0QixDQUFDLElBQVc7UUFDdEMsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSx5QkFBZSxDQUFDO2dCQUNsQixPQUFPLEVBQUU7b0JBQ1AsR0FBRyxvQkFBWSxDQUFDLG1CQUFtQjtvQkFDbkMsR0FBRyxvQkFBWSxDQUFDLCtCQUErQjtpQkFDaEQ7Z0JBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUM5QixDQUFDO1lBQ0YsSUFBSSx5QkFBZSxDQUFDO2dCQUNsQixPQUFPLEVBQUUsb0JBQVksQ0FBQyxhQUFhO2dCQUNuQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQzVCLENBQUM7U0FDSCxDQUFDO1FBRUYsT0FBTyxlQUFLLENBQUMsY0FBYyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzNDLFlBQVksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNuRCxDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU87WUFDTCxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ25ELGtCQUFrQixFQUFFO2dCQUNsQix1QkFBdUIsRUFBRTtvQkFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ3hDO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQWxFRCxvRkFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFudCwgSVJvbGUsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbFByb3ZpZGVyVHlwZSwgSUNyZWRlbnRpYWxQcm92aWRlckNvbmZpZyB9IGZyb20gJy4vY3JlZGVudGlhbC1wcm92aWRlcic7XG5pbXBvcnQgeyBHYXRld2F5UGVybXMgfSBmcm9tICcuLi9wZXJtcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQXV0aFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIE9BdXRoIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIE9BdXRoIGNyZWRlbnRpYWwgcHJvdmlkZXIgQVJOLlxuICAgKiBUaGlzIGlzIHJldHVybmVkIHdoZW4gY3JlYXRpbmcgdGhlIE9BdXRoIGNyZWRlbnRpYWwgcHJvdmlkZXIgdmlhIENvbnNvbGUgb3IgQVBJLlxuICAgKiBGb3JtYXQ6IGFybjphd3M6YmVkcm9jay1hZ2VudGNvcmU6cmVnaW9uOmFjY291bnQ6dG9rZW4tdmF1bHQvaWQvb2F1dGgyY3JlZGVudGlhbHByb3ZpZGVyL25hbWVcbiAgICogUmVxdWlyZWQ6IFllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXJBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIE9BdXRoIGNyZWRlbnRpYWxzIChjbGllbnQgSUQgYW5kIHNlY3JldCkuXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiBjcmVhdGluZyB0aGUgT0F1dGggY3JlZGVudGlhbCBwcm92aWRlciB2aWEgQ29uc29sZSBvciBBUEkuXG4gICAqIEZvcm1hdDogYXJuOmF3czpzZWNyZXRzbWFuYWdlcjpyZWdpb246YWNjb3VudDpzZWNyZXQ6bmFtZVxuICAgKiBSZXF1aXJlZDogWWVzXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9BdXRoIHNjb3BlcyBmb3IgdGhlIGNyZWRlbnRpYWwgcHJvdmlkZXIuXG4gICAqIFRoZXNlIHNjb3BlcyBkZWZpbmUgdGhlIGxldmVsIG9mIGFjY2VzcyByZXF1ZXN0ZWQgZnJvbSB0aGUgT0F1dGggcHJvdmlkZXIuXG4gICAqXG4gICAqIEFycmF5IE1lbWJlcnM6IE1pbmltdW0gbnVtYmVyIG9mIDAgaXRlbXMuIE1heGltdW0gbnVtYmVyIG9mIDEwMCBpdGVtcy5cbiAgICogTGVuZ3RoIENvbnN0cmFpbnRzOiBNaW5pbXVtIGxlbmd0aCBvZiAxLiBNYXhpbXVtIGxlbmd0aCBvZiA2NC5cbiAgICogUmVxdWlyZWQ6IFllc1xuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBwYXJhbWV0ZXJzIGZvciB0aGUgT0F1dGggY3JlZGVudGlhbCBwcm92aWRlci5cbiAgICogVGhlc2UgcGFyYW1ldGVycyBwcm92aWRlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIE9BdXRoIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuXG4gICAqXG4gICAqIE1hcCBFbnRyaWVzOiBNYXhpbXVtIG51bWJlciBvZiAxMCBpdGVtcy5cbiAgICogS2V5IExlbmd0aCBDb25zdHJhaW50czogTWluaW11bSBsZW5ndGggb2YgMS4gTWF4aW11bSBsZW5ndGggb2YgMjU2LlxuICAgKiBWYWx1ZSBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDIwNDguXG4gICAqIFJlcXVpcmVkOiBOb1xuICAgKi9cbiAgLyoqXG4gICAqIEN1c3RvbSBwYXJhbWV0ZXJzIGZvciB0aGUgT0F1dGggZmxvd1xuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBwYXJhbWV0ZXJzXG4gICAqL1xuICByZWFkb25seSBjdXN0b21QYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBPQXV0aCBjcmVkZW50aWFsIHByb3ZpZGVyIGNvbmZpZ3VyYXRpb24gaW1wbGVtZW50YXRpb25cbiAqIENhbiBiZSB1c2VkIHdpdGggT3BlbkFQSSB0YXJnZXRzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIE9BdXRoQ3JlZGVudGlhbFByb3ZpZGVyQ29uZmlndXJhdGlvbiBpbXBsZW1lbnRzIElDcmVkZW50aWFsUHJvdmlkZXJDb25maWcge1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyVHlwZSA9IENyZWRlbnRpYWxQcm92aWRlclR5cGUuT0FVVEg7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBPQXV0aCBwcm92aWRlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgT0F1dGggc2NvcGVzIHRvIHJlcXVlc3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzY29wZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ3VzdG9tIHBhcmFtZXRlcnMgZm9yIHRoZSBPQXV0aCBmbG93XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tUGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogT0F1dGhDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5wcm92aWRlckFybiA9IGNvbmZpZ3VyYXRpb24ucHJvdmlkZXJBcm47XG4gICAgdGhpcy5zZWNyZXRBcm4gPSBjb25maWd1cmF0aW9uLnNlY3JldEFybjtcbiAgICB0aGlzLnNjb3BlcyA9IGNvbmZpZ3VyYXRpb24uc2NvcGVzO1xuICAgIHRoaXMuY3VzdG9tUGFyYW1ldGVycyA9IGNvbmZpZ3VyYXRpb24uY3VzdG9tUGFyYW1ldGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgbmVlZGVkIHBlcm1pc3Npb25zIHRvIHRoZSByb2xlIGZvciBPQXV0aCBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgZ3JhbnROZWVkZWRQZXJtaXNzaW9uc1RvUm9sZShyb2xlOiBJUm9sZSk6IEdyYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gW1xuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAuLi5HYXRld2F5UGVybXMuR0FURVdBWV9PQVVUSF9QRVJNUyxcbiAgICAgICAgICAuLi5HYXRld2F5UGVybXMuR0FURVdBWV9XT1JLTE9BRF9JREVOVElUWV9QRVJNUyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm92aWRlckFybl0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBHYXRld2F5UGVybXMuU0VDUkVUU19QRVJNUyxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5zZWNyZXRBcm5dLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIHJldHVybiBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlOiByb2xlLFxuICAgICAgYWN0aW9uczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5hY3Rpb25zKSxcbiAgICAgIHJlc291cmNlQXJuczogc3RhdGVtZW50cy5mbGF0TWFwKHMgPT4gcy5yZXNvdXJjZXMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3JlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXJUeXBlOiB0aGlzLmNyZWRlbnRpYWxQcm92aWRlclR5cGUsXG4gICAgICBjcmVkZW50aWFsUHJvdmlkZXI6IHtcbiAgICAgICAgb2F1dGhDcmVkZW50aWFsUHJvdmlkZXI6IHtcbiAgICAgICAgICBwcm92aWRlckFybjogdGhpcy5wcm92aWRlckFybixcbiAgICAgICAgICBzY29wZXM6IHRoaXMuc2NvcGVzLFxuICAgICAgICAgIGN1c3RvbVBhcmFtZXRlcnM6IHRoaXMuY3VzdG9tUGFyYW1ldGVycyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,75 +0,0 @@
1
- export declare namespace GatewayPerms {
2
- /******************************************************************************
3
- * Data Plane Permissions
4
- *****************************************************************************/
5
- /**
6
- * Permissions to invoke the gateway
7
- * Used by agents or other services that need to call the gateway
8
- */
9
- const INVOKE_PERMS: string[];
10
- /******************************************************************************
11
- * Execution Role Permissions
12
- *****************************************************************************/
13
- /**
14
- * KMS permissions for encryption
15
- * Required when using KMS keys for encryption
16
- */
17
- const KMS_KEY_PERMS: string[];
18
- /**
19
- * Assume role permission
20
- * Required for the gateway service to assume the execution role
21
- */
22
- const ASSUME_ROLE: string[];
23
- /**
24
- * Outbound auth - Workload identity permissions
25
- * Used to obtain access tokens for workload identity
26
- */
27
- const GATEWAY_WORKLOAD_IDENTITY_PERMS: string[];
28
- /**
29
- * Outbound auth - OAuth permissions
30
- * Used to obtain OAuth tokens for target authentication
31
- */
32
- const GATEWAY_OAUTH_PERMS: string[];
33
- /**
34
- * Outbound auth - API Key permissions
35
- * Used to retrieve API keys for target authentication
36
- */
37
- const GATEWAY_API_KEY_PERMS: string[];
38
- /**
39
- * Secrets Manager permissions
40
- * Required for storing and retrieving API keys and OAuth credentials
41
- */
42
- const SECRETS_PERMS: string[];
43
- /******************************************************************************
44
- * Control Plane Permissions
45
- *****************************************************************************/
46
- /**
47
- * Get permissions for gateway resources
48
- */
49
- const GET_PERMS: string[];
50
- /**
51
- * List permissions for gateway resources
52
- */
53
- const LIST_PERMS: string[];
54
- /**
55
- * Create permissions for gateway resources
56
- */
57
- const CREATE_PERMS: string[];
58
- /**
59
- * Update permissions for gateway resources
60
- */
61
- const UPDATE_PERMS: string[];
62
- /**
63
- * Delete permissions for gateway resources
64
- */
65
- const DELETE_PERMS: string[];
66
- /**
67
- * Combined manage permissions (create, update, delete)
68
- */
69
- const MANAGE_PERMS: string[];
70
- /**
71
- * Synchronization permissions for MCP server targets
72
- * Used to refresh tool catalogs when MCP server tools change
73
- */
74
- const SYNC_PERMS: string[];
75
- }