@aws-solutions-constructs/core 2.73.0 → 2.75.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.
package/.jsii CHANGED
@@ -13,8 +13,7 @@
13
13
  "npmlog": "^7.0.0"
14
14
  },
15
15
  "dependencies": {
16
- "@aws-cdk/integ-tests-alpha": "2.161.0-alpha.0",
17
- "aws-cdk-lib": "^2.161.0",
16
+ "aws-cdk-lib": "^2.163.1",
18
17
  "constructs": "^10.0.0"
19
18
  },
20
19
  "dependencyClosure": {
@@ -126,37 +125,6 @@
126
125
  }
127
126
  }
128
127
  },
129
- "@aws-cdk/integ-tests-alpha": {
130
- "targets": {
131
- "dotnet": {
132
- "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png",
133
- "namespace": "Amazon.CDK.IntegTests.Alpha",
134
- "packageId": "Amazon.CDK.IntegTests.Alpha"
135
- },
136
- "go": {
137
- "moduleName": "github.com/aws/aws-cdk-go",
138
- "packageName": "awscdkintegtestsalpha"
139
- },
140
- "java": {
141
- "maven": {
142
- "artifactId": "cdk-integ-tests-alpha",
143
- "groupId": "software.amazon.awscdk"
144
- },
145
- "package": "software.amazon.awscdk.integtests.alpha"
146
- },
147
- "js": {
148
- "npm": "@aws-cdk/integ-tests-alpha"
149
- },
150
- "python": {
151
- "classifiers": [
152
- "Framework :: AWS CDK",
153
- "Framework :: AWS CDK :: 2"
154
- ],
155
- "distName": "aws-cdk.integ-tests-alpha",
156
- "module": "aws_cdk.integ_tests_alpha"
157
- }
158
- }
159
- },
160
128
  "aws-cdk-lib": {
161
129
  "submodules": {
162
130
  "aws-cdk-lib.alexa_ask": {
@@ -3895,7 +3863,7 @@
3895
3863
  },
3896
3864
  "description": "Core CDK Construct for patterns library",
3897
3865
  "homepage": "https://github.com/awslabs/aws-solutions-constructs.git",
3898
- "jsiiVersion": "5.4.36 (build 0893030)",
3866
+ "jsiiVersion": "5.4.46 (build 1a0b9d7)",
3899
3867
  "license": "Apache-2.0",
3900
3868
  "metadata": {
3901
3869
  "jsii": {
@@ -5151,7 +5119,7 @@
5151
5119
  "kind": "interface",
5152
5120
  "locationInModule": {
5153
5121
  "filename": "lib/pipes-helper.ts",
5154
- "line": 37
5122
+ "line": 40
5155
5123
  },
5156
5124
  "name": "BuildPipesProps",
5157
5125
  "properties": [
@@ -5160,7 +5128,7 @@
5160
5128
  "immutable": true,
5161
5129
  "locationInModule": {
5162
5130
  "filename": "lib/pipes-helper.ts",
5163
- "line": 38
5131
+ "line": 41
5164
5132
  },
5165
5133
  "name": "source",
5166
5134
  "type": {
@@ -5172,7 +5140,7 @@
5172
5140
  "immutable": true,
5173
5141
  "locationInModule": {
5174
5142
  "filename": "lib/pipes-helper.ts",
5175
- "line": 39
5143
+ "line": 42
5176
5144
  },
5177
5145
  "name": "target",
5178
5146
  "type": {
@@ -5184,7 +5152,7 @@
5184
5152
  "immutable": true,
5185
5153
  "locationInModule": {
5186
5154
  "filename": "lib/pipes-helper.ts",
5187
- "line": 42
5155
+ "line": 45
5188
5156
  },
5189
5157
  "name": "clientProps",
5190
5158
  "optional": true,
@@ -5197,7 +5165,7 @@
5197
5165
  "immutable": true,
5198
5166
  "locationInModule": {
5199
5167
  "filename": "lib/pipes-helper.ts",
5200
- "line": 40
5168
+ "line": 43
5201
5169
  },
5202
5170
  "name": "enrichmentFunction",
5203
5171
  "optional": true,
@@ -5210,7 +5178,7 @@
5210
5178
  "immutable": true,
5211
5179
  "locationInModule": {
5212
5180
  "filename": "lib/pipes-helper.ts",
5213
- "line": 41
5181
+ "line": 44
5214
5182
  },
5215
5183
  "name": "enrichmentStateMachine",
5216
5184
  "optional": true,
@@ -5223,7 +5191,7 @@
5223
5191
  "immutable": true,
5224
5192
  "locationInModule": {
5225
5193
  "filename": "lib/pipes-helper.ts",
5226
- "line": 43
5194
+ "line": 46
5227
5195
  },
5228
5196
  "name": "logLevel",
5229
5197
  "optional": true,
@@ -5236,7 +5204,7 @@
5236
5204
  "immutable": true,
5237
5205
  "locationInModule": {
5238
5206
  "filename": "lib/pipes-helper.ts",
5239
- "line": 44
5207
+ "line": 47
5240
5208
  },
5241
5209
  "name": "pipeLogProps",
5242
5210
  "optional": true,
@@ -5254,7 +5222,7 @@
5254
5222
  "kind": "interface",
5255
5223
  "locationInModule": {
5256
5224
  "filename": "lib/pipes-helper.ts",
5257
- "line": 47
5225
+ "line": 50
5258
5226
  },
5259
5227
  "name": "BuildPipesResponse",
5260
5228
  "properties": [
@@ -5263,7 +5231,7 @@
5263
5231
  "immutable": true,
5264
5232
  "locationInModule": {
5265
5233
  "filename": "lib/pipes-helper.ts",
5266
- "line": 48
5234
+ "line": 51
5267
5235
  },
5268
5236
  "name": "pipe",
5269
5237
  "type": {
@@ -5275,7 +5243,7 @@
5275
5243
  "immutable": true,
5276
5244
  "locationInModule": {
5277
5245
  "filename": "lib/pipes-helper.ts",
5278
- "line": 49
5246
+ "line": 52
5279
5247
  },
5280
5248
  "name": "pipeRole",
5281
5249
  "type": {
@@ -7215,7 +7183,7 @@
7215
7183
  "kind": "interface",
7216
7184
  "locationInModule": {
7217
7185
  "filename": "lib/pipes-helper.ts",
7218
- "line": 31
7186
+ "line": 32
7219
7187
  },
7220
7188
  "name": "CreateSourceResponse",
7221
7189
  "properties": [
@@ -7224,7 +7192,7 @@
7224
7192
  "immutable": true,
7225
7193
  "locationInModule": {
7226
7194
  "filename": "lib/pipes-helper.ts",
7227
- "line": 33
7195
+ "line": 34
7228
7196
  },
7229
7197
  "name": "sourceArn",
7230
7198
  "type": {
@@ -7236,7 +7204,7 @@
7236
7204
  "immutable": true,
7237
7205
  "locationInModule": {
7238
7206
  "filename": "lib/pipes-helper.ts",
7239
- "line": 32
7207
+ "line": 33
7240
7208
  },
7241
7209
  "name": "sourceParameters",
7242
7210
  "type": {
@@ -7248,12 +7216,25 @@
7248
7216
  "immutable": true,
7249
7217
  "locationInModule": {
7250
7218
  "filename": "lib/pipes-helper.ts",
7251
- "line": 34
7219
+ "line": 35
7252
7220
  },
7253
7221
  "name": "sourcePolicy",
7254
7222
  "type": {
7255
7223
  "fqn": "aws-cdk-lib.aws_iam.PolicyDocument"
7256
7224
  }
7225
+ },
7226
+ {
7227
+ "abstract": true,
7228
+ "immutable": true,
7229
+ "locationInModule": {
7230
+ "filename": "lib/pipes-helper.ts",
7231
+ "line": 37
7232
+ },
7233
+ "name": "dlq",
7234
+ "optional": true,
7235
+ "type": {
7236
+ "fqn": "aws-cdk-lib.aws_sqs.Queue"
7237
+ }
7257
7238
  }
7258
7239
  ],
7259
7240
  "symbolId": "lib/pipes-helper:CreateSourceResponse"
@@ -7316,7 +7297,7 @@
7316
7297
  "kind": "interface",
7317
7298
  "locationInModule": {
7318
7299
  "filename": "lib/pipes-helper.ts",
7319
- "line": 188
7300
+ "line": 259
7320
7301
  },
7321
7302
  "name": "CreateTargetResponse",
7322
7303
  "properties": [
@@ -7325,7 +7306,7 @@
7325
7306
  "immutable": true,
7326
7307
  "locationInModule": {
7327
7308
  "filename": "lib/pipes-helper.ts",
7328
- "line": 190
7309
+ "line": 261
7329
7310
  },
7330
7311
  "name": "targetArn",
7331
7312
  "type": {
@@ -7337,7 +7318,7 @@
7337
7318
  "immutable": true,
7338
7319
  "locationInModule": {
7339
7320
  "filename": "lib/pipes-helper.ts",
7340
- "line": 189
7321
+ "line": 260
7341
7322
  },
7342
7323
  "name": "targetParameters",
7343
7324
  "type": {
@@ -7349,7 +7330,7 @@
7349
7330
  "immutable": true,
7350
7331
  "locationInModule": {
7351
7332
  "filename": "lib/pipes-helper.ts",
7352
- "line": 191
7333
+ "line": 262
7353
7334
  },
7354
7335
  "name": "targetPolicy",
7355
7336
  "type": {
@@ -8139,7 +8120,7 @@
8139
8120
  "kind": "enum",
8140
8121
  "locationInModule": {
8141
8122
  "filename": "lib/pipes-helper.ts",
8142
- "line": 24
8123
+ "line": 25
8143
8124
  },
8144
8125
  "members": [
8145
8126
  {
@@ -8165,7 +8146,7 @@
8165
8146
  "kind": "interface",
8166
8147
  "locationInModule": {
8167
8148
  "filename": "lib/pipes-helper.ts",
8168
- "line": 235
8149
+ "line": 306
8169
8150
  },
8170
8151
  "name": "PipesProps",
8171
8152
  "properties": [
@@ -8174,7 +8155,7 @@
8174
8155
  "immutable": true,
8175
8156
  "locationInModule": {
8176
8157
  "filename": "lib/pipes-helper.ts",
8177
- "line": 236
8158
+ "line": 307
8178
8159
  },
8179
8160
  "name": "pipesProps",
8180
8161
  "optional": true,
@@ -8963,11 +8944,12 @@
8963
8944
  "immutable": true,
8964
8945
  "locationInModule": {
8965
8946
  "filename": "lib/step-function-helper.ts",
8966
- "line": 170
8947
+ "line": 173
8967
8948
  },
8968
- "name": "stateMachineProps",
8949
+ "name": "cloudWatchAlarmsPrefix",
8950
+ "optional": true,
8969
8951
  "type": {
8970
- "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachineProps"
8952
+ "primitive": "string"
8971
8953
  }
8972
8954
  },
8973
8955
  {
@@ -8977,10 +8959,10 @@
8977
8959
  "filename": "lib/step-function-helper.ts",
8978
8960
  "line": 172
8979
8961
  },
8980
- "name": "cloudWatchAlarmsPrefix",
8962
+ "name": "createCloudWatchAlarms",
8981
8963
  "optional": true,
8982
8964
  "type": {
8983
- "primitive": "string"
8965
+ "primitive": "boolean"
8984
8966
  }
8985
8967
  },
8986
8968
  {
@@ -8990,10 +8972,10 @@
8990
8972
  "filename": "lib/step-function-helper.ts",
8991
8973
  "line": 171
8992
8974
  },
8993
- "name": "createCloudWatchAlarms",
8975
+ "name": "existingStateMachineObj",
8994
8976
  "optional": true,
8995
8977
  "type": {
8996
- "primitive": "boolean"
8978
+ "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachine"
8997
8979
  }
8998
8980
  },
8999
8981
  {
@@ -9001,13 +8983,26 @@
9001
8983
  "immutable": true,
9002
8984
  "locationInModule": {
9003
8985
  "filename": "lib/step-function-helper.ts",
9004
- "line": 173
8986
+ "line": 174
9005
8987
  },
9006
8988
  "name": "logGroupProps",
9007
8989
  "optional": true,
9008
8990
  "type": {
9009
8991
  "fqn": "aws-cdk-lib.aws_logs.LogGroupProps"
9010
8992
  }
8993
+ },
8994
+ {
8995
+ "abstract": true,
8996
+ "immutable": true,
8997
+ "locationInModule": {
8998
+ "filename": "lib/step-function-helper.ts",
8999
+ "line": 170
9000
+ },
9001
+ "name": "stateMachineProps",
9002
+ "optional": true,
9003
+ "type": {
9004
+ "fqn": "aws-cdk-lib.aws_stepfunctions.StateMachineProps"
9005
+ }
9011
9006
  }
9012
9007
  ],
9013
9008
  "symbolId": "lib/step-function-helper:StateMachineProps"
@@ -9104,6 +9099,6 @@
9104
9099
  "symbolId": "lib/waf-helper:WafWebAclProps"
9105
9100
  }
9106
9101
  },
9107
- "version": "2.73.0",
9108
- "fingerprint": "UlIDfUfCFIIOSf4VhDqmQSU96+FAbOsiyjpLvUASoZU="
9102
+ "version": "2.75.0",
9103
+ "fingerprint": "fLGB+R+WwgWxCBe8wVcSPQ2L+xhH+kXUbXBdMWGMRso="
9109
9104
  }
@@ -12,4 +12,5 @@
12
12
  */
13
13
  export declare function defaultPipesProps(): any;
14
14
  export declare function defaultSqsSourceProps(): any;
15
+ export declare function defaultDynamoDBStreamsSourceProps(deployDlq: boolean): any;
15
16
  export declare function defaultStateMachineTargetProps(): any;
@@ -12,7 +12,7 @@
12
12
  * and limitations under the License.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.defaultStateMachineTargetProps = exports.defaultSqsSourceProps = exports.defaultPipesProps = void 0;
15
+ exports.defaultStateMachineTargetProps = exports.defaultDynamoDBStreamsSourceProps = exports.defaultSqsSourceProps = exports.defaultPipesProps = void 0;
16
16
  // import * as pipes from 'aws-cdk-lib/aws-pipes';
17
17
  function defaultPipesProps() {
18
18
  return {};
@@ -22,6 +22,15 @@ function defaultSqsSourceProps() {
22
22
  return {};
23
23
  }
24
24
  exports.defaultSqsSourceProps = defaultSqsSourceProps;
25
+ function defaultDynamoDBStreamsSourceProps(deployDlq) {
26
+ return {
27
+ dynamoDbStreamParameters: {
28
+ startingPosition: "LATEST",
29
+ maximumRetryAttempts: deployDlq ? 3 : undefined,
30
+ }
31
+ };
32
+ }
33
+ exports.defaultDynamoDBStreamsSourceProps = defaultDynamoDBStreamsSourceProps;
25
34
  function defaultStateMachineTargetProps() {
26
35
  return {
27
36
  stepFunctionStateMachineParameters: {
@@ -30,4 +39,4 @@ function defaultStateMachineTargetProps() {
30
39
  };
31
40
  }
32
41
  exports.defaultStateMachineTargetProps = defaultStateMachineTargetProps;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILGtEQUFrRDtBQUVsRCxTQUFnQixpQkFBaUI7SUFDL0IsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRkQsOENBRUM7QUFFRCxTQUFnQixxQkFBcUI7SUFDbkMsT0FBTyxFQUNOLENBQUM7QUFDSixDQUFDO0FBSEQsc0RBR0M7QUFFRCxTQUFnQiw4QkFBOEI7SUFDNUMsT0FBTztRQUNMLGtDQUFrQyxFQUFFO1lBQ2xDLGNBQWMsRUFBRSxpQkFBaUI7U0FDbEM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQU5ELHdFQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gaW1wb3J0ICogYXMgcGlwZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXBpcGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQaXBlc1Byb3BzKCk6IGFueSB7XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTcXNTb3VyY2VQcm9wcygpOiBhbnkge1xuICByZXR1cm4ge1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFN0YXRlTWFjaGluZVRhcmdldFByb3BzKCk6IGFueSB7XG4gIHJldHVybiB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdGSVJFX0FORF9GT1JHRVQnXG4gICAgfVxuICB9O1xufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILGtEQUFrRDtBQUVsRCxTQUFnQixpQkFBaUI7SUFDL0IsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRkQsOENBRUM7QUFFRCxTQUFnQixxQkFBcUI7SUFDbkMsT0FBTyxFQUNOLENBQUM7QUFDSixDQUFDO0FBSEQsc0RBR0M7QUFFRCxTQUFnQixpQ0FBaUMsQ0FBQyxTQUFrQjtJQUNsRSxPQUFPO1FBQ0wsd0JBQXdCLEVBQUU7WUFDeEIsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNoRDtLQUNGLENBQUM7QUFDSixDQUFDO0FBUEQsOEVBT0M7QUFFRCxTQUFnQiw4QkFBOEI7SUFDNUMsT0FBTztRQUNMLGtDQUFrQyxFQUFFO1lBQ2xDLGNBQWMsRUFBRSxpQkFBaUI7U0FDbEM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQU5ELHdFQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gaW1wb3J0ICogYXMgcGlwZXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXBpcGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQaXBlc1Byb3BzKCk6IGFueSB7XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRTcXNTb3VyY2VQcm9wcygpOiBhbnkge1xuICByZXR1cm4ge1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdER5bmFtb0RCU3RyZWFtc1NvdXJjZVByb3BzKGRlcGxveURscTogYm9vbGVhbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgZHluYW1vRGJTdHJlYW1QYXJhbWV0ZXJzOiB7XG4gICAgICBzdGFydGluZ1Bvc2l0aW9uOiBcIkxBVEVTVFwiLFxuICAgICAgbWF4aW11bVJldHJ5QXR0ZW1wdHM6IGRlcGxveURscSA/IDMgOiB1bmRlZmluZWQsXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFN0YXRlTWFjaGluZVRhcmdldFByb3BzKCk6IGFueSB7XG4gIHJldHVybiB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdGSVJFX0FORF9GT1JHRVQnXG4gICAgfVxuICB9O1xufVxuIl19
@@ -14,6 +14,7 @@ import * as pipes from 'aws-cdk-lib/aws-pipes';
14
14
  import * as sqs from 'aws-cdk-lib/aws-sqs';
15
15
  import * as iam from 'aws-cdk-lib/aws-iam';
16
16
  import * as logs from 'aws-cdk-lib/aws-logs';
17
+ import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
17
18
  import * as lambda from 'aws-cdk-lib/aws-lambda';
18
19
  import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
19
20
  import * as cdk from 'aws-cdk-lib';
@@ -28,6 +29,7 @@ export interface CreateSourceResponse {
28
29
  readonly sourceParameters: pipes.CfnPipe.PipeSourceParametersProperty;
29
30
  readonly sourceArn: string;
30
31
  readonly sourcePolicy: iam.PolicyDocument;
32
+ readonly dlq?: sqs.Queue;
31
33
  }
32
34
  export interface BuildPipesProps {
33
35
  readonly source: CreateSourceResponse;
@@ -44,6 +46,13 @@ export interface BuildPipesResponse {
44
46
  }
45
47
  export declare function BuildPipe(scope: Construct, id: string, props: BuildPipesProps): BuildPipesResponse;
46
48
  export declare function CreateSqsSource(queue: sqs.IQueue, clientProps?: pipes.CfnPipe.PipeSourceParametersProperty | cdk.IResolvable): CreateSourceResponse;
49
+ interface CreateDynamoDBStreamsSourceProps {
50
+ table: dynamodb.ITable;
51
+ deploySqsDlqQueue?: boolean;
52
+ sqsDlqQueueProps?: sqs.QueueProps;
53
+ clientProps?: pipes.CfnPipe.PipeSourceParametersProperty | cdk.IResolvable;
54
+ }
55
+ export declare function CreateDynamoDBStreamsSource(scope: Construct, props: CreateDynamoDBStreamsSourceProps): CreateSourceResponse;
47
56
  export interface CreateTargetResponse {
48
57
  readonly targetParameters: pipes.CfnPipe.PipeTargetParametersProperty;
49
58
  readonly targetArn: string;
@@ -54,3 +63,4 @@ export interface PipesProps {
54
63
  readonly pipesProps?: pipes.CfnPipeProps;
55
64
  }
56
65
  export declare function CheckPipesProps(propsObject: PipesProps | any): void;
66
+ export {};
@@ -12,7 +12,7 @@
12
12
  * and limitations under the License.
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.CheckPipesProps = exports.CreateStateMachineTarget = exports.CreateSqsSource = exports.BuildPipe = exports.PipesLogLevel = void 0;
15
+ exports.CheckPipesProps = exports.CreateStateMachineTarget = exports.CreateDynamoDBStreamsSource = exports.CreateSqsSource = exports.BuildPipe = exports.PipesLogLevel = void 0;
16
16
  const pipes = require("aws-cdk-lib/aws-pipes");
17
17
  const iam = require("aws-cdk-lib/aws-iam");
18
18
  const defaults = require("..");
@@ -142,6 +142,62 @@ function CreateSqsSource(queue, clientProps) {
142
142
  };
143
143
  }
144
144
  exports.CreateSqsSource = CreateSqsSource;
145
+ function CreateDynamoDBStreamsSource(scope, props) {
146
+ if (!props.table.tableStreamArn) {
147
+ throw new Error("ERROR - DynamoDB Table must have an associated stream");
148
+ }
149
+ const deployDlq = defaults.CheckBooleanWithDefault(props.deploySqsDlqQueue, true);
150
+ let sourceParameters = defaults.consolidateProps(defaults.defaultDynamoDBStreamsSourceProps(deployDlq), props.clientProps);
151
+ const sourcePolicy = new iam.PolicyDocument({
152
+ statements: [
153
+ new iam.PolicyStatement({
154
+ resources: [props.table.tableStreamArn],
155
+ actions: [
156
+ "dynamodb:DescribeStream",
157
+ "dynamodb:GetRecords",
158
+ "dynamodb:GetShardIterator",
159
+ "dynamodb:ListStreams"
160
+ ],
161
+ effect: iam.Effect.ALLOW,
162
+ })
163
+ ]
164
+ });
165
+ let buildQueueResponse;
166
+ // Default to setting up DLQ for failed messages
167
+ if (deployDlq) {
168
+ buildQueueResponse = defaults.buildQueue(scope, 'dlq', {
169
+ deployDeadLetterQueue: false,
170
+ queueProps: props.sqsDlqQueueProps
171
+ });
172
+ sourceParameters = defaults.consolidateProps(sourceParameters, {
173
+ dynamoDbStreamParameters: {
174
+ deadLetterConfig: {
175
+ arn: buildQueueResponse.queue.queueArn
176
+ }
177
+ }
178
+ });
179
+ sourcePolicy.addStatements(new iam.PolicyStatement({
180
+ resources: [buildQueueResponse.queue.queueArn],
181
+ actions: [
182
+ "sqs:SendMessage"
183
+ ],
184
+ effect: iam.Effect.ALLOW,
185
+ }));
186
+ }
187
+ else {
188
+ if ((sourceParameters.dynamoDbStreamParameters?.maximumRecordAgeInSeconds) ||
189
+ (sourceParameters.dynamoDbStreamParameters?.maximumRetryAttempts)) {
190
+ throw new Error('ERROR - retry and record age constraints cannot be specified with no DLQ\n');
191
+ }
192
+ }
193
+ return {
194
+ sourceParameters,
195
+ sourceArn: props.table.tableStreamArn,
196
+ sourcePolicy,
197
+ dlq: buildQueueResponse?.queue ?? undefined
198
+ };
199
+ }
200
+ exports.CreateDynamoDBStreamsSource = CreateDynamoDBStreamsSource;
145
201
  function CreateStateMachineTarget(stateMachine, clientProps) {
146
202
  const targetParameters = defaults.consolidateProps(defaults.defaultStateMachineTargetProps(), clientProps);
147
203
  return {
@@ -194,4 +250,4 @@ function CheckPipesProps(propsObject) {
194
250
  }
195
251
  }
196
252
  exports.CheckPipesProps = CheckPipesProps;
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGlwZXMtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgsK0NBQStDO0FBRS9DLDJDQUEyQztBQUkzQywrQkFBK0I7QUFDL0IsbUNBQW1DO0FBR25DLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qiw0QkFBVyxDQUFBO0lBQ1gsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxhQUFhLDZCQUFiLGFBQWEsUUFLeEI7QUF1QkQsU0FBZ0IsU0FBUyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO0lBQzVFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRTtRQUN0RCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7UUFDMUQsY0FBYyxFQUFFO1lBQ2QsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUN2QyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZO1NBQ3hDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsb0VBQW9FO0lBQ3BFLDZEQUE2RDtJQUM3RCxJQUFJLGNBQWMsR0FBdUI7UUFDdkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFDOUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUztRQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtRQUMvQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtLQUNo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Q25DLGFBQWEsSUFBSSxnRUFBZ0UsQ0FBQztRQUNsRixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0gsQ0FBQztBQWpCRCwwQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBwaXBlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcGlwZXMnO1xuaW1wb3J0ICogYXMgc3FzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zcXMnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzZm4gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSBcIi4uXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBlbnVtIFBpcGVzTG9nTGV2ZWwge1xuICBPRkYgPSBcIk9GRlwiLFxuICBUUkFDRSA9IFwiVFJBQ0VcIixcbiAgSU5GTyA9IFwiSU5GT1wiLFxuICBFUlJPUiA9IFwiRVJST1JcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTb3VyY2VSZXNwb25zZSB7XG4gIHJlYWRvbmx5IHNvdXJjZVBhcmFtZXRlcnM6IHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZVBhcmFtZXRlcnNQcm9wZXJ0eSxcbiAgcmVhZG9ubHkgc291cmNlQXJuOiBzdHJpbmcsXG4gIHJlYWRvbmx5IHNvdXJjZVBvbGljeTogaWFtLlBvbGljeURvY3VtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQaXBlc1Byb3BzIHtcbiAgcmVhZG9ubHkgc291cmNlOiBDcmVhdGVTb3VyY2VSZXNwb25zZSxcbiAgcmVhZG9ubHkgdGFyZ2V0OiBDcmVhdGVUYXJnZXRSZXNwb25zZSxcbiAgcmVhZG9ubHkgZW5yaWNobWVudEZ1bmN0aW9uPzogbGFtYmRhLkZ1bmN0aW9uLFxuICByZWFkb25seSBlbnJpY2htZW50U3RhdGVNYWNoaW5lPzogc2ZuLlN0YXRlTWFjaGluZSxcbiAgcmVhZG9ubHkgY2xpZW50UHJvcHM/OiBhbnkgfCBwaXBlcy5DZm5QaXBlUHJvcHNcbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBQaXBlc0xvZ0xldmVsLFxuICByZWFkb25seSBwaXBlTG9nUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBpcGVzUmVzcG9uc2Uge1xuICByZWFkb25seSBwaXBlOiBwaXBlcy5DZm5QaXBlLFxuICByZWFkb25seSBwaXBlUm9sZTogaWFtLlJvbGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1aWxkUGlwZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRQaXBlc1Byb3BzKTogQnVpbGRQaXBlc1Jlc3BvbnNlIHtcbiAgQ2hlY2tCdWlsZFBpcGVQcm9wcyhwcm9wcyk7XG5cbiAgY29uc3QgcGlwZVJvbGUgPSBuZXcgaWFtLlJvbGUoc2NvcGUsIGBQaXBlUm9sZS0tJHtpZH1gLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3BpcGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgc291cmNlUG9saWN5OiBwcm9wcy5zb3VyY2Uuc291cmNlUG9saWN5LFxuICAgICAgdGFyZ2V0UG9saWN5OiBwcm9wcy50YXJnZXQudGFyZ2V0UG9saWN5LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSB0aGUgbWluaW11bSB2YWx1ZXMgZm9yIENmblBpcGVQcm9wcyAtIGxldCdzXG4gIC8vIGNyZWF0ZSBpdCBhbmQgZm9sZCBpbiBhbnkgYWRkaXRpb25hbCB2YWx1ZXMgYXMgd2UgZ28gYWxvbmdcbiAgbGV0IGNvbnN0cnVjdFByb3BzOiBwaXBlcy5DZm5QaXBlUHJvcHMgPSB7XG4gICAgcm9sZUFybjogcGlwZVJvbGUucm9sZUFybixcbiAgICBzb3VyY2U6IHByb3BzLnNvdXJjZS5zb3VyY2VBcm4sXG4gICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQudGFyZ2V0QXJuLFxuICAgIHNvdXJjZVBhcmFtZXRlcnM6IHByb3BzLnNvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzLFxuICAgIHRhcmdldFBhcmFtZXRlcnM6IHByb3BzLnRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLFxuICB9O1xuXG4gIC8vIERvIHdlIGhhdmUgYW55IGVucmljaG1lbnQgZnVuY3Rpb25hbGl0eT9cbiAgaWYgKHByb3BzLmVucmljaG1lbnRGdW5jdGlvbikge1xuICAgIGNvbnN0IGVucmljaG1lbnRTZXR0aW5ncyA9IGNyZWF0ZUxhbWJkYUVucmljaG1lbnQoc2NvcGUsIGlkLCBwcm9wcy5lbnJpY2htZW50RnVuY3Rpb24pO1xuICAgIHBpcGVSb2xlLmF0dGFjaElubGluZVBvbGljeShlbnJpY2htZW50U2V0dGluZ3MucGlwZVJvbGVQb2xpY3kpO1xuICAgIGNvbnN0cnVjdFByb3BzID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhjb25zdHJ1Y3RQcm9wcywgeyBlbnJpY2htZW50OiBlbnJpY2htZW50U2V0dGluZ3MuZW5yaWNobWVudEFybiB9KTtcbiAgfSBlbHNlIGlmIChwcm9wcy5lbnJpY2htZW50U3RhdGVNYWNoaW5lKSB7XG4gICAgY29uc3QgZW5yaWNobWVudFNldHRpbmdzID0gY3JlYXRlU3RhdGVNYWNoaW5lRW5yaWNobWVudChzY29wZSwgaWQsIHByb3BzLmVucmljaG1lbnRTdGF0ZU1hY2hpbmUpO1xuICAgIHBpcGVSb2xlLmF0dGFjaElubGluZVBvbGljeShlbnJpY2htZW50U2V0dGluZ3MucGlwZVJvbGVQb2xpY3kpO1xuICAgIGNvbnN0cnVjdFByb3BzID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhjb25zdHJ1Y3RQcm9wcywgeyBlbnJpY2htZW50OiBlbnJpY2htZW50U2V0dGluZ3MuZW5yaWNobWVudEFybiB9KTtcbiAgfVxuXG4gIC8vIEFyZSB3ZSByZXNwb25zaWJsZSB0byBjcmVhdGUgdGhlIGxvZ2dpbmcgbWVjaGFuaXNtP1xuICBpZiAoIXByb3BzLmNsaWVudFByb3BzPy5sb2dDb25maWd1cmF0aW9uKSB7XG5cbiAgICBjb25zdCBsb2dMZXZlbCA9IGRlZmF1bHRzLkNoZWNrU3RyaW5nV2l0aERlZmF1bHQocHJvcHMubG9nTGV2ZWwsIFBpcGVzTG9nTGV2ZWwuSU5GTyk7XG4gICAgaWYgKGxvZ0xldmVsICE9PSBQaXBlc0xvZ0xldmVsLk9GRikge1xuXG4gICAgICBjb25zdCBkZWZhdWx0TG9nR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBjcmVhdGVQaXBlc0xvZ0dyb3VwTmFtZShzY29wZSwgaWQpLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRMb2dHcm91cFByb3BzLCBwcm9wcy5waXBlTG9nUHJvcHMpO1xuICAgICAgY29uc3QgbmV3TG9nR3JvdXAgPSBkZWZhdWx0cy5idWlsZExvZ0dyb3VwKHNjb3BlLCBgTG9nR3JvdXAtJHtpZH1gLCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzKTtcbiAgICAgIGNvbnN0IGxvZ0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGNsb3Vkd2F0Y2hMb2dzTG9nRGVzdGluYXRpb246IHtcbiAgICAgICAgICBsb2dHcm91cEFybjogbmV3TG9nR3JvdXAubG9nR3JvdXBBcm5cbiAgICAgICAgfSxcbiAgICAgICAgbGV2ZWw6IGxvZ0xldmVsXG4gICAgICB9O1xuXG4gICAgICBjb25zdHJ1Y3RQcm9wcyA9IGRlZmF1bHRzLmNvbnNvbGlkYXRlUHJvcHMoY29uc3RydWN0UHJvcHMsIHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnNvbGlkYXRlUHJvcHMgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRzLmRlZmF1bHRQaXBlc1Byb3BzKCksIHByb3BzLmNsaWVudFByb3BzLCBjb25zdHJ1Y3RQcm9wcyk7XG5cbiAgY29uc3QgbmV3UGlwZSA9IG5ldyBwaXBlcy5DZm5QaXBlKHNjb3BlLCBgcGlwZS0ke2lkfWAsIGNvbnNvbGlkYXRlUHJvcHMpO1xuXG4gIHJldHVybiB7XG4gICAgcGlwZTogbmV3UGlwZSxcbiAgICBwaXBlUm9sZVxuICB9O1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlRW5yaWNobWVudFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZW5yaWNobWVudEFybjogc3RyaW5nLFxuICByZWFkb25seSBwaXBlUm9sZVBvbGljeTogaWFtLlBvbGljeVxufVxuXG5mdW5jdGlvbiBjcmVhdGVMYW1iZGFFbnJpY2htZW50KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb24pOiBDcmVhdGVFbnJpY2htZW50UmVzcG9uc2Uge1xuICByZXR1cm4ge1xuICAgIGVucmljaG1lbnRBcm46IGxhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgIHBpcGVSb2xlUG9saWN5OiBuZXcgaWFtLlBvbGljeShzY29wZSwgYGVucmljaG1lbnRwb2xpY3kke2lkfWAsIHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW2xhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpJbnZva2VGdW5jdGlvbiddLFxuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICB9KVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdGF0ZU1hY2hpbmVFbnJpY2htZW50KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHN0YXRlTWFjaGluZTogc2ZuLlN0YXRlTWFjaGluZSk6IENyZWF0ZUVucmljaG1lbnRSZXNwb25zZSB7XG4gIHJldHVybiB7XG4gICAgZW5yaWNobWVudEFybjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICBwaXBlUm9sZVBvbGljeTogbmV3IGlhbS5Qb2xpY3koc2NvcGUsIGBlbnJpY2htZW50cG9saWN5JHtpZH1gLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtzdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3N0YXRlczpTdGFydFN5bmNFeGVjdXRpb24nXSxcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGlwZXNMb2dHcm91cE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxvZ0dyb3VwUHJlZml4ID0gJy9hd3MvdmVuZGVkbG9ncy9waXBlcy9jb25zdHJ1Y3RzLyc7XG4gIGNvbnN0IG5hbWVQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5zdGFja05hbWUsXG4gICAgaWQsXG4gICAgJ1BpcGVzTG9nJ1xuICBdO1xuICByZXR1cm4gZGVmYXVsdHMuZ2VuZXJhdGVQaHlzaWNhbExvZ0dyb3VwTmFtZShsb2dHcm91cFByZWZpeCwgbmFtZVBhcnRzKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNvdXJjZSBhbmQgVGFyZ2V0IGNvZGUgLSBhcyBuZXcgc291cmNlcyBhbmQgdGFyZ2V0cyBhcmUgcmVxdWlyZWQsIGltcGxlbWVudCB0aGVtXG4vLyBoZXJlIGFuZCB0ZXN0IHRoZSBuZXcgZnVuY3Rpb25zLlxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlU3FzU291cmNlKHF1ZXVlOiBzcXMuSVF1ZXVlLCBjbGllbnRQcm9wcz86IHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZVBhcmFtZXRlcnNQcm9wZXJ0eSB8IGNkay5JUmVzb2x2YWJsZSk6IENyZWF0ZVNvdXJjZVJlc3BvbnNlIHtcbiAgY29uc3Qgc291cmNlUGFyYW1ldGVyczogcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlUGFyYW1ldGVyc1Byb3BlcnR5ID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cy5kZWZhdWx0U3FzU291cmNlUHJvcHMoKSwgY2xpZW50UHJvcHMpO1xuICByZXR1cm4ge1xuICAgIHNvdXJjZVBhcmFtZXRlcnMsXG4gICAgc291cmNlQXJuOiBxdWV1ZS5xdWV1ZUFybixcbiAgICBzb3VyY2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbcXVldWUucXVldWVBcm4hXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcInNxczpSZWNlaXZlTWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJzcXM6RGVsZXRlTWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSlcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUYXJnZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IHRhcmdldFBhcmFtZXRlcnM6IHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFBhcmFtZXRlcnNQcm9wZXJ0eSxcbiAgcmVhZG9ubHkgdGFyZ2V0QXJuOiBzdHJpbmcsXG4gIHJlYWRvbmx5IHRhcmdldFBvbGljeTogaWFtLlBvbGljeURvY3VtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVTdGF0ZU1hY2hpbmVUYXJnZXQoc3RhdGVNYWNoaW5lOiBzZm4uSVN0YXRlTWFjaGluZSxcbiAgY2xpZW50UHJvcHM/OiBwaXBlcy5DZm5QaXBlLlBpcGVUYXJnZXRQYXJhbWV0ZXJzUHJvcGVydHkgfCBjZGsuSVJlc29sdmFibGUpOiBDcmVhdGVUYXJnZXRSZXNwb25zZSB7XG5cbiAgY29uc3QgdGFyZ2V0UGFyYW1ldGVyczogcGlwZXMuQ2ZuUGlwZS5QaXBlVGFyZ2V0UGFyYW1ldGVyc1Byb3BlcnR5ID1cbiAgICBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRzLmRlZmF1bHRTdGF0ZU1hY2hpbmVUYXJnZXRQcm9wcygpLCBjbGllbnRQcm9wcyk7XG4gIHJldHVybiB7XG4gICAgdGFyZ2V0UGFyYW1ldGVycyxcbiAgICB0YXJnZXRBcm46IHN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgdGFyZ2V0UG9saWN5OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW3N0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm5dLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc3RhdGVzOlN0YXJ0RXhlY3V0aW9uJ10sXG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfTtcbn1cblxuLy8gVGhpcyBpcyBjYWxsZWQgYnkgQnVpbGRQaXBlIHRvIHZhbGlkYXRlIGFyZ3VtZW50cyBzZW50IHRvIEJ1aWxkUGlwZVxuZnVuY3Rpb24gQ2hlY2tCdWlsZFBpcGVQcm9wcyhwcm9wczogQnVpbGRQaXBlc1Byb3BzKSB7XG4gIGlmIChwcm9wcy5lbnJpY2htZW50RnVuY3Rpb24gJiYgcHJvcHMuZW5yaWNobWVudFN0YXRlTWFjaGluZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SIC0gT25seSBvbmUgb2YgZW5yaWNobWVudEZ1bmN0aW9uIG9yIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgY2FuIGJlIHByb3ZpZGVkXCIpO1xuICB9XG5cbiAgaWYgKHByb3BzLmNsaWVudFByb3BzICYmIChwcm9wcy5jbGllbnRQcm9wcy5zb3VyY2UgfHwgcHJvcHMuY2xpZW50UHJvcHMudGFyZ2V0IHx8IHByb3BzLmNsaWVudFByb3BzLnJvbGVBcm4gfHwgcHJvcHMuY2xpZW50UHJvcHMuZW5yaWNobWVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50XCIpO1xuICB9XG5cbiAgaWYgKHByb3BzLmxvZ0xldmVsICYmIHByb3BzLmNsaWVudFByb3BzPy5sb2dDb25maWd1cmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IGxvZ0xldmVsIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG4gIH1cbiAgaWYgKHByb3BzLnBpcGVMb2dQcm9wcyAmJiBwcm9wcy5jbGllbnRQcm9wcz8ubG9nQ29uZmlndXJhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBwaXBlTG9nUHJvcHMgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbiAgfVxuICBpZiAocHJvcHMucGlwZUxvZ1Byb3BzICYmIChwcm9wcy5sb2dMZXZlbCA9PT0gUGlwZXNMb2dMZXZlbC5PRkYpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHBpcGVMb2dQcm9wcyBhbmQgbG9nIGxldmVsIE9GRicpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZXNQcm9wcyB7XG4gIHJlYWRvbmx5IHBpcGVzUHJvcHM/OiBwaXBlcy5DZm5QaXBlUHJvcHNcbn1cblxuLy8gVGhpcyBpcyBjYWxsZWQgYnkgY29uc3RydWN0cyB0byB2YWxpZGF0ZSBpbnB1dHMgdG8gdGhlIGNvbnN0cnVjdFxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrUGlwZXNQcm9wcyhwcm9wc09iamVjdDogUGlwZXNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wc09iamVjdC5waXBlc1Byb3BzPy5zb3VyY2UpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdEbyBub3Qgc2V0IHNvdXJjZSBpbiBwaXBlc1Byb3BzLiBJdCBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LnBpcGVzUHJvcHM/LnRhcmdldCkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0RvIG5vdCBzZXQgdGFyZ2V0IGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0Llxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGlwZXMtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgsK0NBQStDO0FBRS9DLDJDQUEyQztBQUszQywrQkFBK0I7QUFDL0IsbUNBQW1DO0FBR25DLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qiw0QkFBVyxDQUFBO0lBQ1gsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxhQUFhLDZCQUFiLGFBQWEsUUFLeEI7QUF5QkQsU0FBZ0IsU0FBUyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO0lBQzVFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRTtRQUN0RCxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7UUFDMUQsY0FBYyxFQUFFO1lBQ2QsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUN2QyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZO1NBQ3hDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsb0VBQW9FO0lBQ3BFLDZEQUE2RDtJQUM3RCxJQUFJLGNBQWMsR0FBdUI7UUFDdkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVM7UUFDOUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUztRQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtRQUMvQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtLQUNo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QUFLLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztBQUNILENBQUM7QUFNRCxtRUFBbUU7QUFDbkUsU0FBZ0IsZUFBZSxDQUFDLFdBQTZCO0lBQzNELElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFdkIsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25DLGFBQWEsSUFBSSxnRUFBZ0UsQ0FBQztRQUNsRixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbkMsYUFBYSxJQUFJLGdFQUFnRSxDQUFDO1FBQ2xGLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDSCxDQUFDO0FBakJELDBDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIHBpcGVzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1waXBlcyc7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzZm4gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSBcIi4uXCI7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBlbnVtIFBpcGVzTG9nTGV2ZWwge1xuICBPRkYgPSBcIk9GRlwiLFxuICBUUkFDRSA9IFwiVFJBQ0VcIixcbiAgSU5GTyA9IFwiSU5GT1wiLFxuICBFUlJPUiA9IFwiRVJST1JcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTb3VyY2VSZXNwb25zZSB7XG4gIHJlYWRvbmx5IHNvdXJjZVBhcmFtZXRlcnM6IHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZVBhcmFtZXRlcnNQcm9wZXJ0eSxcbiAgcmVhZG9ubHkgc291cmNlQXJuOiBzdHJpbmcsXG4gIHJlYWRvbmx5IHNvdXJjZVBvbGljeTogaWFtLlBvbGljeURvY3VtZW50LFxuICAvLyBOb3QgcG9wdWxhdGVkIGZvciBldmVyeSBzb3VyY2UsIG5vdCBwb3B1bGF0ZWQgaWYgZXhpc3RpbmcgcXVldWUgaXMgcGFzc2VkIGluIHNvbWVkYXlcbiAgcmVhZG9ubHkgZGxxPzogc3FzLlF1ZXVlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQaXBlc1Byb3BzIHtcbiAgcmVhZG9ubHkgc291cmNlOiBDcmVhdGVTb3VyY2VSZXNwb25zZSxcbiAgcmVhZG9ubHkgdGFyZ2V0OiBDcmVhdGVUYXJnZXRSZXNwb25zZSxcbiAgcmVhZG9ubHkgZW5yaWNobWVudEZ1bmN0aW9uPzogbGFtYmRhLkZ1bmN0aW9uLFxuICByZWFkb25seSBlbnJpY2htZW50U3RhdGVNYWNoaW5lPzogc2ZuLlN0YXRlTWFjaGluZSxcbiAgcmVhZG9ubHkgY2xpZW50UHJvcHM/OiBhbnkgfCBwaXBlcy5DZm5QaXBlUHJvcHNcbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBQaXBlc0xvZ0xldmVsLFxuICByZWFkb25seSBwaXBlTG9nUHJvcHM/OiBsb2dzLkxvZ0dyb3VwUHJvcHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBpcGVzUmVzcG9uc2Uge1xuICByZWFkb25seSBwaXBlOiBwaXBlcy5DZm5QaXBlLFxuICByZWFkb25seSBwaXBlUm9sZTogaWFtLlJvbGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1aWxkUGlwZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRQaXBlc1Byb3BzKTogQnVpbGRQaXBlc1Jlc3BvbnNlIHtcbiAgQ2hlY2tCdWlsZFBpcGVQcm9wcyhwcm9wcyk7XG5cbiAgY29uc3QgcGlwZVJvbGUgPSBuZXcgaWFtLlJvbGUoc2NvcGUsIGBQaXBlUm9sZS0tJHtpZH1gLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3BpcGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgc291cmNlUG9saWN5OiBwcm9wcy5zb3VyY2Uuc291cmNlUG9saWN5LFxuICAgICAgdGFyZ2V0UG9saWN5OiBwcm9wcy50YXJnZXQudGFyZ2V0UG9saWN5LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSB0aGUgbWluaW11bSB2YWx1ZXMgZm9yIENmblBpcGVQcm9wcyAtIGxldCdzXG4gIC8vIGNyZWF0ZSBpdCBhbmQgZm9sZCBpbiBhbnkgYWRkaXRpb25hbCB2YWx1ZXMgYXMgd2UgZ28gYWxvbmdcbiAgbGV0IGNvbnN0cnVjdFByb3BzOiBwaXBlcy5DZm5QaXBlUHJvcHMgPSB7XG4gICAgcm9sZUFybjogcGlwZVJvbGUucm9sZUFybixcbiAgICBzb3VyY2U6IHByb3BzLnNvdXJjZS5zb3VyY2VBcm4sXG4gICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQudGFyZ2V0QXJuLFxuICAgIHNvdXJjZVBhcmFtZXRlcnM6IHByb3BzLnNvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzLFxuICAgIHRhcmdldFBhcmFtZXRlcnM6IHByb3BzLnRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLFxuICB9O1xuXG4gIC8vIERvIHdlIGhhdmUgYW55IGVucmljaG1lbnQgZnVuY3Rpb25hbGl0eT9cbiAgaWYgKHByb3BzLmVucmljaG1lbnRGdW5jdGlvbikge1xuICAgIGNvbnN0IGVucmljaG1lbnRTZXR0aW5ncyA9IGNyZWF0ZUxhbWJkYUVucmljaG1lbnQoc2NvcGUsIGlkLCBwcm9wcy5lbnJpY2htZW50RnVuY3Rpb24pO1xuICAgIHBpcGVSb2xlLmF0dGFjaElubGluZVBvbGljeShlbnJpY2htZW50U2V0dGluZ3MucGlwZVJvbGVQb2xpY3kpO1xuICAgIGNvbnN0cnVjdFByb3BzID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhjb25zdHJ1Y3RQcm9wcywgeyBlbnJpY2htZW50OiBlbnJpY2htZW50U2V0dGluZ3MuZW5yaWNobWVudEFybiB9KTtcbiAgfSBlbHNlIGlmIChwcm9wcy5lbnJpY2htZW50U3RhdGVNYWNoaW5lKSB7XG4gICAgY29uc3QgZW5yaWNobWVudFNldHRpbmdzID0gY3JlYXRlU3RhdGVNYWNoaW5lRW5yaWNobWVudChzY29wZSwgaWQsIHByb3BzLmVucmljaG1lbnRTdGF0ZU1hY2hpbmUpO1xuICAgIHBpcGVSb2xlLmF0dGFjaElubGluZVBvbGljeShlbnJpY2htZW50U2V0dGluZ3MucGlwZVJvbGVQb2xpY3kpO1xuICAgIGNvbnN0cnVjdFByb3BzID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhjb25zdHJ1Y3RQcm9wcywgeyBlbnJpY2htZW50OiBlbnJpY2htZW50U2V0dGluZ3MuZW5yaWNobWVudEFybiB9KTtcbiAgfVxuXG4gIC8vIEFyZSB3ZSByZXNwb25zaWJsZSB0byBjcmVhdGUgdGhlIGxvZ2dpbmcgbWVjaGFuaXNtP1xuICBpZiAoIXByb3BzLmNsaWVudFByb3BzPy5sb2dDb25maWd1cmF0aW9uKSB7XG5cbiAgICBjb25zdCBsb2dMZXZlbCA9IGRlZmF1bHRzLkNoZWNrU3RyaW5nV2l0aERlZmF1bHQocHJvcHMubG9nTGV2ZWwsIFBpcGVzTG9nTGV2ZWwuSU5GTyk7XG4gICAgaWYgKGxvZ0xldmVsICE9PSBQaXBlc0xvZ0xldmVsLk9GRikge1xuXG4gICAgICBjb25zdCBkZWZhdWx0TG9nR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBjcmVhdGVQaXBlc0xvZ0dyb3VwTmFtZShzY29wZSwgaWQpLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbnNvbGlkYXRlZExvZ0dyb3VwUHJvcHMgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRMb2dHcm91cFByb3BzLCBwcm9wcy5waXBlTG9nUHJvcHMpO1xuICAgICAgY29uc3QgbmV3TG9nR3JvdXAgPSBkZWZhdWx0cy5idWlsZExvZ0dyb3VwKHNjb3BlLCBgTG9nR3JvdXAtJHtpZH1gLCBjb25zb2xpZGF0ZWRMb2dHcm91cFByb3BzKTtcbiAgICAgIGNvbnN0IGxvZ0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGNsb3Vkd2F0Y2hMb2dzTG9nRGVzdGluYXRpb246IHtcbiAgICAgICAgICBsb2dHcm91cEFybjogbmV3TG9nR3JvdXAubG9nR3JvdXBBcm5cbiAgICAgICAgfSxcbiAgICAgICAgbGV2ZWw6IGxvZ0xldmVsXG4gICAgICB9O1xuXG4gICAgICBjb25zdHJ1Y3RQcm9wcyA9IGRlZmF1bHRzLmNvbnNvbGlkYXRlUHJvcHMoY29uc3RydWN0UHJvcHMsIHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnNvbGlkYXRlUHJvcHMgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRzLmRlZmF1bHRQaXBlc1Byb3BzKCksIHByb3BzLmNsaWVudFByb3BzLCBjb25zdHJ1Y3RQcm9wcyk7XG5cbiAgY29uc3QgbmV3UGlwZSA9IG5ldyBwaXBlcy5DZm5QaXBlKHNjb3BlLCBgcGlwZS0ke2lkfWAsIGNvbnNvbGlkYXRlUHJvcHMpO1xuXG4gIHJldHVybiB7XG4gICAgcGlwZTogbmV3UGlwZSxcbiAgICBwaXBlUm9sZVxuICB9O1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlRW5yaWNobWVudFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZW5yaWNobWVudEFybjogc3RyaW5nLFxuICByZWFkb25seSBwaXBlUm9sZVBvbGljeTogaWFtLlBvbGljeVxufVxuXG5mdW5jdGlvbiBjcmVhdGVMYW1iZGFFbnJpY2htZW50KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb24pOiBDcmVhdGVFbnJpY2htZW50UmVzcG9uc2Uge1xuICByZXR1cm4ge1xuICAgIGVucmljaG1lbnRBcm46IGxhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgIHBpcGVSb2xlUG9saWN5OiBuZXcgaWFtLlBvbGljeShzY29wZSwgYGVucmljaG1lbnRwb2xpY3kke2lkfWAsIHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW2xhbWJkYUZ1bmN0aW9uLmZ1bmN0aW9uQXJuXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpJbnZva2VGdW5jdGlvbiddLFxuICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICB9KVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdGF0ZU1hY2hpbmVFbnJpY2htZW50KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHN0YXRlTWFjaGluZTogc2ZuLlN0YXRlTWFjaGluZSk6IENyZWF0ZUVucmljaG1lbnRSZXNwb25zZSB7XG4gIHJldHVybiB7XG4gICAgZW5yaWNobWVudEFybjogc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybixcbiAgICBwaXBlUm9sZVBvbGljeTogbmV3IGlhbS5Qb2xpY3koc2NvcGUsIGBlbnJpY2htZW50cG9saWN5JHtpZH1gLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtzdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3N0YXRlczpTdGFydFN5bmNFeGVjdXRpb24nXSxcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUGlwZXNMb2dHcm91cE5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxvZ0dyb3VwUHJlZml4ID0gJy9hd3MvdmVuZGVkbG9ncy9waXBlcy9jb25zdHJ1Y3RzLyc7XG4gIGNvbnN0IG5hbWVQYXJ0czogc3RyaW5nW10gPSBbXG4gICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5zdGFja05hbWUsXG4gICAgaWQsXG4gICAgJ1BpcGVzTG9nJ1xuICBdO1xuICByZXR1cm4gZGVmYXVsdHMuZ2VuZXJhdGVQaHlzaWNhbExvZ0dyb3VwTmFtZShsb2dHcm91cFByZWZpeCwgbmFtZVBhcnRzKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNvdXJjZSBhbmQgVGFyZ2V0IGNvZGUgLSBhcyBuZXcgc291cmNlcyBhbmQgdGFyZ2V0cyBhcmUgcmVxdWlyZWQsIGltcGxlbWVudCB0aGVtXG4vLyBoZXJlIGFuZCB0ZXN0IHRoZSBuZXcgZnVuY3Rpb25zLlxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlU3FzU291cmNlKHF1ZXVlOiBzcXMuSVF1ZXVlLCBjbGllbnRQcm9wcz86IHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZVBhcmFtZXRlcnNQcm9wZXJ0eSB8IGNkay5JUmVzb2x2YWJsZSk6IENyZWF0ZVNvdXJjZVJlc3BvbnNlIHtcbiAgY29uc3Qgc291cmNlUGFyYW1ldGVyczogcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlUGFyYW1ldGVyc1Byb3BlcnR5ID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cy5kZWZhdWx0U3FzU291cmNlUHJvcHMoKSwgY2xpZW50UHJvcHMpO1xuICByZXR1cm4ge1xuICAgIHNvdXJjZVBhcmFtZXRlcnMsXG4gICAgc291cmNlQXJuOiBxdWV1ZS5xdWV1ZUFybixcbiAgICBzb3VyY2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbcXVldWUucXVldWVBcm4hXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcInNxczpSZWNlaXZlTWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJzcXM6RGVsZXRlTWVzc2FnZVwiLFxuICAgICAgICAgICAgXCJzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIH0pXG4gICAgICBdXG4gICAgfSlcbiAgfTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUR5bmFtb0RCU3RyZWFtc1NvdXJjZVByb3BzIHtcbiAgdGFibGU6IGR5bmFtb2RiLklUYWJsZSxcbiAgZGVwbG95U3FzRGxxUXVldWU/OiBib29sZWFuLFxuICBzcXNEbHFRdWV1ZVByb3BzPzogc3FzLlF1ZXVlUHJvcHMsXG4gIGNsaWVudFByb3BzPzogcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlUGFyYW1ldGVyc1Byb3BlcnR5IHwgY2RrLklSZXNvbHZhYmxlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2UoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBDcmVhdGVEeW5hbW9EQlN0cmVhbXNTb3VyY2VQcm9wcyk6IENyZWF0ZVNvdXJjZVJlc3BvbnNlIHtcbiAgaWYgKCFwcm9wcy50YWJsZS50YWJsZVN0cmVhbUFybikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SIC0gRHluYW1vREIgVGFibGUgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgc3RyZWFtXCIpO1xuICB9XG4gIGNvbnN0IGRlcGxveURscSA9IGRlZmF1bHRzLkNoZWNrQm9vbGVhbldpdGhEZWZhdWx0KHByb3BzLmRlcGxveVNxc0RscVF1ZXVlLCB0cnVlKTtcbiAgbGV0IHNvdXJjZVBhcmFtZXRlcnM6IHBpcGVzLkNmblBpcGUuUGlwZVNvdXJjZVBhcmFtZXRlcnNQcm9wZXJ0eSA9XG4gICAgZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhkZWZhdWx0cy5kZWZhdWx0RHluYW1vREJTdHJlYW1zU291cmNlUHJvcHMoZGVwbG95RGxxKSwgcHJvcHMuY2xpZW50UHJvcHMpO1xuXG4gIGNvbnN0IHNvdXJjZVBvbGljeTogaWFtLlBvbGljeURvY3VtZW50ID0gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgc3RhdGVtZW50czogW1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy50YWJsZS50YWJsZVN0cmVhbUFybl0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImR5bmFtb2RiOkRlc2NyaWJlU3RyZWFtXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpHZXRSZWNvcmRzXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpHZXRTaGFyZEl0ZXJhdG9yXCIsXG4gICAgICAgICAgXCJkeW5hbW9kYjpMaXN0U3RyZWFtc1wiXG4gICAgICAgIF0sXG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIH0pXG4gICAgXVxuICB9KTtcbiAgbGV0IGJ1aWxkUXVldWVSZXNwb25zZTogZGVmYXVsdHMuQnVpbGRRdWV1ZVJlc3BvbnNlIHwgdW5kZWZpbmVkO1xuICAvLyBEZWZhdWx0IHRvIHNldHRpbmcgdXAgRExRIGZvciBmYWlsZWQgbWVzc2FnZXNcbiAgaWYgKGRlcGxveURscSkge1xuICAgIGJ1aWxkUXVldWVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUXVldWUoc2NvcGUsICdkbHEnLCB7XG4gICAgICBkZXBsb3lEZWFkTGV0dGVyUXVldWU6IGZhbHNlLFxuICAgICAgcXVldWVQcm9wczogcHJvcHMuc3FzRGxxUXVldWVQcm9wc1xuICAgIH0pO1xuICAgIHNvdXJjZVBhcmFtZXRlcnMgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKHNvdXJjZVBhcmFtZXRlcnMsIHtcbiAgICAgIGR5bmFtb0RiU3RyZWFtUGFyYW1ldGVyczoge1xuICAgICAgICBkZWFkTGV0dGVyQ29uZmlnOiB7XG4gICAgICAgICAgYXJuOiBidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHNvdXJjZVBvbGljeS5hZGRTdGF0ZW1lbnRzKFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFtidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm5dLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJzcXM6U2VuZE1lc3NhZ2VcIlxuICAgICAgICBdLFxuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICB9KVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCgoc291cmNlUGFyYW1ldGVycy5keW5hbW9EYlN0cmVhbVBhcmFtZXRlcnMgYXMgcGlwZXMuQ2ZuUGlwZS5QaXBlU291cmNlRHluYW1vREJTdHJlYW1QYXJhbWV0ZXJzUHJvcGVydHkpPy5tYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzKSB8fFxuICAgICAgKChzb3VyY2VQYXJhbWV0ZXJzLmR5bmFtb0RiU3RyZWFtUGFyYW1ldGVycyBhcyBwaXBlcy5DZm5QaXBlLlBpcGVTb3VyY2VEeW5hbW9EQlN0cmVhbVBhcmFtZXRlcnNQcm9wZXJ0eSk/Lm1heGltdW1SZXRyeUF0dGVtcHRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFUlJPUiAtIHJldHJ5IGFuZCByZWNvcmQgYWdlIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBubyBETFFcXG4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNvdXJjZVBhcmFtZXRlcnMsXG4gICAgc291cmNlQXJuOiBwcm9wcy50YWJsZS50YWJsZVN0cmVhbUFybiEsXG4gICAgc291cmNlUG9saWN5LFxuICAgIGRscTogYnVpbGRRdWV1ZVJlc3BvbnNlPy5xdWV1ZSA/PyB1bmRlZmluZWRcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUYXJnZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IHRhcmdldFBhcmFtZXRlcnM6IHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFBhcmFtZXRlcnNQcm9wZXJ0eSxcbiAgcmVhZG9ubHkgdGFyZ2V0QXJuOiBzdHJpbmcsXG4gIHJlYWRvbmx5IHRhcmdldFBvbGljeTogaWFtLlBvbGljeURvY3VtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVTdGF0ZU1hY2hpbmVUYXJnZXQoc3RhdGVNYWNoaW5lOiBzZm4uSVN0YXRlTWFjaGluZSxcbiAgY2xpZW50UHJvcHM/OiBwaXBlcy5DZm5QaXBlLlBpcGVUYXJnZXRQYXJhbWV0ZXJzUHJvcGVydHkgfCBjZGsuSVJlc29sdmFibGUpOiBDcmVhdGVUYXJnZXRSZXNwb25zZSB7XG5cbiAgY29uc3QgdGFyZ2V0UGFyYW1ldGVyczogcGlwZXMuQ2ZuUGlwZS5QaXBlVGFyZ2V0UGFyYW1ldGVyc1Byb3BlcnR5ID1cbiAgICBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGRlZmF1bHRzLmRlZmF1bHRTdGF0ZU1hY2hpbmVUYXJnZXRQcm9wcygpLCBjbGllbnRQcm9wcyk7XG4gIHJldHVybiB7XG4gICAgdGFyZ2V0UGFyYW1ldGVycyxcbiAgICB0YXJnZXRBcm46IHN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICAgdGFyZ2V0UG9saWN5OiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW3N0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm5dLFxuICAgICAgICAgIGFjdGlvbnM6IFsnc3RhdGVzOlN0YXJ0RXhlY3V0aW9uJ10sXG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfTtcbn1cblxuLy8gVGhpcyBpcyBjYWxsZWQgYnkgQnVpbGRQaXBlIHRvIHZhbGlkYXRlIGFyZ3VtZW50cyBzZW50IHRvIEJ1aWxkUGlwZVxuZnVuY3Rpb24gQ2hlY2tCdWlsZFBpcGVQcm9wcyhwcm9wczogQnVpbGRQaXBlc1Byb3BzKSB7XG4gIGlmIChwcm9wcy5lbnJpY2htZW50RnVuY3Rpb24gJiYgcHJvcHMuZW5yaWNobWVudFN0YXRlTWFjaGluZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SIC0gT25seSBvbmUgb2YgZW5yaWNobWVudEZ1bmN0aW9uIG9yIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgY2FuIGJlIHByb3ZpZGVkXCIpO1xuICB9XG5cbiAgaWYgKHByb3BzLmNsaWVudFByb3BzICYmIChwcm9wcy5jbGllbnRQcm9wcy5zb3VyY2UgfHwgcHJvcHMuY2xpZW50UHJvcHMudGFyZ2V0IHx8IHByb3BzLmNsaWVudFByb3BzLnJvbGVBcm4gfHwgcHJvcHMuY2xpZW50UHJvcHMuZW5yaWNobWVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50XCIpO1xuICB9XG5cbiAgaWYgKHByb3BzLmxvZ0xldmVsICYmIHByb3BzLmNsaWVudFByb3BzPy5sb2dDb25maWd1cmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IGxvZ0xldmVsIGFuZCBsb2dDb25maWd1cmF0aW9uJyk7XG4gIH1cbiAgaWYgKHByb3BzLnBpcGVMb2dQcm9wcyAmJiBwcm9wcy5jbGllbnRQcm9wcz8ubG9nQ29uZmlndXJhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBwaXBlTG9nUHJvcHMgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbiAgfVxuICBpZiAocHJvcHMucGlwZUxvZ1Byb3BzICYmIChwcm9wcy5sb2dMZXZlbCA9PT0gUGlwZXNMb2dMZXZlbC5PRkYpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHBpcGVMb2dQcm9wcyBhbmQgbG9nIGxldmVsIE9GRicpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlwZXNQcm9wcyB7XG4gIHJlYWRvbmx5IHBpcGVzUHJvcHM/OiBwaXBlcy5DZm5QaXBlUHJvcHNcbn1cblxuLy8gVGhpcyBpcyBjYWxsZWQgYnkgY29uc3RydWN0cyB0byB2YWxpZGF0ZSBpbnB1dHMgdG8gdGhlIGNvbnN0cnVjdFxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrUGlwZXNQcm9wcyhwcm9wc09iamVjdDogUGlwZXNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wc09iamVjdC5waXBlc1Byb3BzPy5zb3VyY2UpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdEbyBub3Qgc2V0IHNvdXJjZSBpbiBwaXBlc1Byb3BzLiBJdCBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LnBpcGVzUHJvcHM/LnRhcmdldCkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0RvIG5vdCBzZXQgdGFyZ2V0IGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0Llxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
@@ -39,7 +39,8 @@ export declare function buildStateMachine(scope: Construct, id: string | undefin
39
39
  */
40
40
  export declare function buildStepFunctionCWAlarms(scope: Construct, id: string | undefined, sm: sfn.StateMachine): cloudwatch.Alarm[];
41
41
  export interface StateMachineProps {
42
- readonly stateMachineProps: sfn.StateMachineProps;
42
+ readonly stateMachineProps?: sfn.StateMachineProps;
43
+ readonly existingStateMachineObj?: sfn.StateMachine;
43
44
  readonly createCloudWatchAlarms?: boolean;
44
45
  readonly cloudWatchAlarmsPrefix?: string;
45
46
  readonly logGroupProps?: logs.LogGroupProps;