@gammarers/aws-codepipeline-execution-state-change-notification-stack 2.3.31 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ [user]
2
+ name = yicr
3
+ email = yicr@users.noreply.github.com
4
+
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "dev-aws-codepipeline-execution-state-change-notification-stack",
3
+ "image": "mcr.microsoft.com/devcontainers/base:bookworm",
4
+ "features": {
5
+ "ghcr.io/devcontainers/features/common-utils:2": {
6
+ "username": "developer",
7
+ "upgradePackages": true
8
+ },
9
+ "ghcr.io/devcontainers/features/git:1": {},
10
+ "ghcr.io/devcontainers/features/node:1": {
11
+ "version": "24"
12
+ },
13
+ "ghcr.io/devcontainers/features/dotnet:1": {},
14
+ "ghcr.io/devcontainers/features/python:1": {},
15
+ "ghcr.io/devcontainers/features/java:1": {}
16
+ },
17
+ "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
18
+ "workspaceFolder": "/workspace",
19
+ // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
20
+ "mounts": [
21
+ "target=/workspace/node_modules"
22
+ ],
23
+ "remoteUser": "developer",
24
+ "remoteEnv": {
25
+ "npm_config_loglevel": "error"
26
+ },
27
+ "postCreateCommand": {
28
+ "fixVolumePerms": "sudo chown -R $(whoami): /workspace"
29
+ }
30
+ // "build": {
31
+ // "dockerfile": "Dockerfile"
32
+ // },
33
+ // "remoteUser": "node",
34
+ // "workspaceFolder": "/workspace",
35
+ // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
36
+ // "mounts": [
37
+ // "target=/workspace/node_modules"
38
+ // ],
39
+ // "features": {
40
+ // "ghcr.io/devcontainers/features/git:1": {}
41
+ // },
42
+ // "customizations": {
43
+ // "vscode": {
44
+ // "extensions": [
45
+ // "amazonwebservices.aws-toolkit-vscode",
46
+ // "ms-vscode.vscode-typescript-next"
47
+ // ]
48
+ // }
49
+ // },
50
+ // "postCreateCommand": {
51
+ // "fixVolumePerms": "sudo chown -R $(whoami): /workspace/node_modules"
52
+ // }
53
+
54
+ }
package/.jsii CHANGED
@@ -8,8 +8,9 @@
8
8
  ]
9
9
  },
10
10
  "dependencies": {
11
- "@gammarers/aws-codesuite-state-change-detection-event-rules": "^2.2.5",
12
- "@gammarers/aws-resource-naming": "^0.10.2",
11
+ "@gammarers/aws-codesuite-state-change-detection-event-rules": "^2.3.6",
12
+ "@gammarers/aws-resource-naming": "^0.10.1",
13
+ "@gammarers/aws-sns-slack-message-lambda-subscription": "^0.2.4",
13
14
  "aws-cdk-lib": "^2.189.1",
14
15
  "constructs": "^10.0.5"
15
16
  },
@@ -128,6 +129,21 @@
128
129
  }
129
130
  }
130
131
  },
132
+ "@gammarers/aws-sns-slack-message-lambda-subscription": {
133
+ "targets": {
134
+ "dotnet": {
135
+ "namespace": "Gammarers.CDK.AWS",
136
+ "packageId": "Gammarers.CDK.AWS.SNSSlackMessageLambdaSubscription"
137
+ },
138
+ "js": {
139
+ "npm": "@gammarers/aws-sns-slack-message-lambda-subscription"
140
+ },
141
+ "python": {
142
+ "distName": "gammarers.aws-sns-slack-message-lambda-subscription",
143
+ "module": "gammarers.aws_sns_slack_message_lambda_subscription"
144
+ }
145
+ }
146
+ },
131
147
  "aws-cdk-lib": {
132
148
  "submodules": {
133
149
  "aws-cdk-lib.alexa_ask": {
@@ -3986,7 +4002,7 @@
3986
4002
  "stability": "stable"
3987
4003
  },
3988
4004
  "homepage": "https://github.com/gammarers/aws-codepipeline-execution-state-change-notification-stack.git",
3989
- "jsiiVersion": "5.8.25 (build 948fef6)",
4005
+ "jsiiVersion": "5.9.21 (build f1fe2ef)",
3990
4006
  "keywords": [
3991
4007
  "aws",
3992
4008
  "cdk",
@@ -4031,7 +4047,7 @@
4031
4047
  },
4032
4048
  "locationInModule": {
4033
4049
  "filename": "src/index.ts",
4034
- "line": 39
4050
+ "line": 46
4035
4051
  },
4036
4052
  "parameters": [
4037
4053
  {
@@ -4057,7 +4073,7 @@
4057
4073
  "kind": "class",
4058
4074
  "locationInModule": {
4059
4075
  "filename": "src/index.ts",
4060
- "line": 38
4076
+ "line": 45
4061
4077
  },
4062
4078
  "name": "CodePipelineExecutionStateChangeNotificationStack",
4063
4079
  "symbolId": "src/index:CodePipelineExecutionStateChangeNotificationStack"
@@ -4075,7 +4091,7 @@
4075
4091
  "kind": "interface",
4076
4092
  "locationInModule": {
4077
4093
  "filename": "src/index.ts",
4078
- "line": 21
4094
+ "line": 28
4079
4095
  },
4080
4096
  "name": "CodePipelineExecutionStateChangeNotificationStackProps",
4081
4097
  "properties": [
@@ -4087,7 +4103,7 @@
4087
4103
  "immutable": true,
4088
4104
  "locationInModule": {
4089
4105
  "filename": "src/index.ts",
4090
- "line": 24
4106
+ "line": 31
4091
4107
  },
4092
4108
  "name": "notifications",
4093
4109
  "type": {
@@ -4102,7 +4118,7 @@
4102
4118
  "immutable": true,
4103
4119
  "locationInModule": {
4104
4120
  "filename": "src/index.ts",
4105
- "line": 22
4121
+ "line": 29
4106
4122
  },
4107
4123
  "name": "targetResource",
4108
4124
  "type": {
@@ -4117,7 +4133,7 @@
4117
4133
  "immutable": true,
4118
4134
  "locationInModule": {
4119
4135
  "filename": "src/index.ts",
4120
- "line": 23
4136
+ "line": 30
4121
4137
  },
4122
4138
  "name": "enabled",
4123
4139
  "optional": true,
@@ -4133,7 +4149,7 @@
4133
4149
  "immutable": true,
4134
4150
  "locationInModule": {
4135
4151
  "filename": "src/index.ts",
4136
- "line": 25
4152
+ "line": 32
4137
4153
  },
4138
4154
  "name": "resourceNamingOption",
4139
4155
  "optional": true,
@@ -4166,7 +4182,7 @@
4166
4182
  "kind": "interface",
4167
4183
  "locationInModule": {
4168
4184
  "filename": "src/index.ts",
4169
- "line": 28
4185
+ "line": 35
4170
4186
  },
4171
4187
  "name": "CustomNaming",
4172
4188
  "properties": [
@@ -4178,7 +4194,7 @@
4178
4194
  "immutable": true,
4179
4195
  "locationInModule": {
4180
4196
  "filename": "src/index.ts",
4181
- "line": 32
4197
+ "line": 39
4182
4198
  },
4183
4199
  "name": "notificationTopicDisplayName",
4184
4200
  "type": {
@@ -4193,7 +4209,7 @@
4193
4209
  "immutable": true,
4194
4210
  "locationInModule": {
4195
4211
  "filename": "src/index.ts",
4196
- "line": 31
4212
+ "line": 38
4197
4213
  },
4198
4214
  "name": "notificationTopicName",
4199
4215
  "type": {
@@ -4208,7 +4224,7 @@
4208
4224
  "immutable": true,
4209
4225
  "locationInModule": {
4210
4226
  "filename": "src/index.ts",
4211
- "line": 33
4227
+ "line": 40
4212
4228
  },
4213
4229
  "name": "pipelineEventDetectionRuleName",
4214
4230
  "type": {
@@ -4223,7 +4239,7 @@
4223
4239
  "immutable": true,
4224
4240
  "locationInModule": {
4225
4241
  "filename": "src/index.ts",
4226
- "line": 30
4242
+ "line": 37
4227
4243
  },
4228
4244
  "name": "stateMachineName",
4229
4245
  "type": {
@@ -4238,7 +4254,7 @@
4238
4254
  "immutable": true,
4239
4255
  "locationInModule": {
4240
4256
  "filename": "src/index.ts",
4241
- "line": 29
4257
+ "line": 36
4242
4258
  },
4243
4259
  "name": "type",
4244
4260
  "type": {
@@ -4258,7 +4274,7 @@
4258
4274
  "kind": "interface",
4259
4275
  "locationInModule": {
4260
4276
  "filename": "src/index.ts",
4261
- "line": 18
4277
+ "line": 23
4262
4278
  },
4263
4279
  "name": "NotificationsProperty",
4264
4280
  "properties": [
@@ -4270,7 +4286,7 @@
4270
4286
  "immutable": true,
4271
4287
  "locationInModule": {
4272
4288
  "filename": "src/index.ts",
4273
- "line": 19
4289
+ "line": 24
4274
4290
  },
4275
4291
  "name": "emails",
4276
4292
  "optional": true,
@@ -4282,10 +4298,58 @@
4282
4298
  "kind": "array"
4283
4299
  }
4284
4300
  }
4301
+ },
4302
+ {
4303
+ "abstract": true,
4304
+ "docs": {
4305
+ "stability": "stable"
4306
+ },
4307
+ "immutable": true,
4308
+ "locationInModule": {
4309
+ "filename": "src/index.ts",
4310
+ "line": 25
4311
+ },
4312
+ "name": "slack",
4313
+ "optional": true,
4314
+ "type": {
4315
+ "fqn": "@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack"
4316
+ }
4285
4317
  }
4286
4318
  ],
4287
4319
  "symbolId": "src/index:NotificationsProperty"
4288
4320
  },
4321
+ "@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack": {
4322
+ "assembly": "@gammarers/aws-codepipeline-execution-state-change-notification-stack",
4323
+ "datatype": true,
4324
+ "docs": {
4325
+ "stability": "stable"
4326
+ },
4327
+ "fqn": "@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack",
4328
+ "kind": "interface",
4329
+ "locationInModule": {
4330
+ "filename": "src/index.ts",
4331
+ "line": 19
4332
+ },
4333
+ "name": "Slack",
4334
+ "properties": [
4335
+ {
4336
+ "abstract": true,
4337
+ "docs": {
4338
+ "stability": "stable"
4339
+ },
4340
+ "immutable": true,
4341
+ "locationInModule": {
4342
+ "filename": "src/index.ts",
4343
+ "line": 20
4344
+ },
4345
+ "name": "webhookSecretName",
4346
+ "type": {
4347
+ "primitive": "string"
4348
+ }
4349
+ }
4350
+ ],
4351
+ "symbolId": "src/index:Slack"
4352
+ },
4289
4353
  "@gammarers/aws-codepipeline-execution-state-change-notification-stack.TargetResourceProperty": {
4290
4354
  "assembly": "@gammarers/aws-codepipeline-execution-state-change-notification-stack",
4291
4355
  "datatype": true,
@@ -4296,7 +4360,7 @@
4296
4360
  "kind": "interface",
4297
4361
  "locationInModule": {
4298
4362
  "filename": "src/index.ts",
4299
- "line": 13
4363
+ "line": 14
4300
4364
  },
4301
4365
  "name": "TargetResourceProperty",
4302
4366
  "properties": [
@@ -4308,7 +4372,7 @@
4308
4372
  "immutable": true,
4309
4373
  "locationInModule": {
4310
4374
  "filename": "src/index.ts",
4311
- "line": 14
4375
+ "line": 15
4312
4376
  },
4313
4377
  "name": "tagKey",
4314
4378
  "type": {
@@ -4323,7 +4387,7 @@
4323
4387
  "immutable": true,
4324
4388
  "locationInModule": {
4325
4389
  "filename": "src/index.ts",
4326
- "line": 15
4390
+ "line": 16
4327
4391
  },
4328
4392
  "name": "tagValues",
4329
4393
  "type": {
@@ -4339,6 +4403,6 @@
4339
4403
  "symbolId": "src/index:TargetResourceProperty"
4340
4404
  }
4341
4405
  },
4342
- "version": "2.3.31",
4343
- "fingerprint": "Rvl2DUMPLt0/YT9LcjPoa3O9Sud7CatSzdhak/QxmW0="
4406
+ "version": "2.4.1",
4407
+ "fingerprint": "AjGyx/LIKtCsL8XAJttsPY1ActDt+elwPKDJtkigu00="
4344
4408
  }
package/API.md CHANGED
@@ -1273,6 +1273,7 @@ const notificationsProperty: NotificationsProperty = { ... }
1273
1273
  | **Name** | **Type** | **Description** |
1274
1274
  | --- | --- | --- |
1275
1275
  | <code><a href="#@gammarers/aws-codepipeline-execution-state-change-notification-stack.NotificationsProperty.property.emails">emails</a></code> | <code>string[]</code> | *No description.* |
1276
+ | <code><a href="#@gammarers/aws-codepipeline-execution-state-change-notification-stack.NotificationsProperty.property.slack">slack</a></code> | <code><a href="#@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack">Slack</a></code> | *No description.* |
1276
1277
 
1277
1278
  ---
1278
1279
 
@@ -1286,6 +1287,44 @@ public readonly emails: string[];
1286
1287
 
1287
1288
  ---
1288
1289
 
1290
+ ##### `slack`<sup>Optional</sup> <a name="slack" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.NotificationsProperty.property.slack"></a>
1291
+
1292
+ ```typescript
1293
+ public readonly slack: Slack;
1294
+ ```
1295
+
1296
+ - *Type:* <a href="#@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack">Slack</a>
1297
+
1298
+ ---
1299
+
1300
+ ### Slack <a name="Slack" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack"></a>
1301
+
1302
+ #### Initializer <a name="Initializer" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack.Initializer"></a>
1303
+
1304
+ ```typescript
1305
+ import { Slack } from '@gammarers/aws-codepipeline-execution-state-change-notification-stack'
1306
+
1307
+ const slack: Slack = { ... }
1308
+ ```
1309
+
1310
+ #### Properties <a name="Properties" id="Properties"></a>
1311
+
1312
+ | **Name** | **Type** | **Description** |
1313
+ | --- | --- | --- |
1314
+ | <code><a href="#@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack.property.webhookSecretName">webhookSecretName</a></code> | <code>string</code> | *No description.* |
1315
+
1316
+ ---
1317
+
1318
+ ##### `webhookSecretName`<sup>Required</sup> <a name="webhookSecretName" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.Slack.property.webhookSecretName"></a>
1319
+
1320
+ ```typescript
1321
+ public readonly webhookSecretName: string;
1322
+ ```
1323
+
1324
+ - *Type:* string
1325
+
1326
+ ---
1327
+
1289
1328
  ### TargetResourceProperty <a name="TargetResourceProperty" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.TargetResourceProperty"></a>
1290
1329
 
1291
1330
  #### Initializer <a name="Initializer" id="@gammarers/aws-codepipeline-execution-state-change-notification-stack.TargetResourceProperty.Initializer"></a>
package/lib/index.d.ts CHANGED
@@ -1,13 +1,17 @@
1
- import { ResourceAutoNaming, ResourceDefaultNaming, ResourceNamingType } from '@gammarers/aws-resource-naming';
1
+ import { ResourceAutoNaming, ResourceDefaultNaming, ResourceNamingType as CodePipelineExecutionStateChangeNotificationStackResourceNamingType } from '@gammarers/aws-resource-naming';
2
2
  import { Stack, StackProps } from 'aws-cdk-lib';
3
3
  import { Construct } from 'constructs';
4
- export { ResourceAutoNaming, ResourceDefaultNaming, ResourceNamingType as CodePipelineExecutionStateChangeNotificationStackResourceNamingType };
4
+ export { CodePipelineExecutionStateChangeNotificationStackResourceNamingType };
5
5
  export interface TargetResourceProperty {
6
6
  readonly tagKey: string;
7
7
  readonly tagValues: string[];
8
8
  }
9
+ export interface Slack {
10
+ readonly webhookSecretName: string;
11
+ }
9
12
  export interface NotificationsProperty {
10
13
  readonly emails?: string[];
14
+ readonly slack?: Slack;
11
15
  }
12
16
  export interface CodePipelineExecutionStateChangeNotificationStackProps extends StackProps {
13
17
  readonly targetResource: TargetResourceProperty;
@@ -16,7 +20,7 @@ export interface CodePipelineExecutionStateChangeNotificationStackProps extends
16
20
  readonly resourceNamingOption?: ResourceNamingOption;
17
21
  }
18
22
  export interface CustomNaming {
19
- readonly type: ResourceNamingType.CUSTOM;
23
+ readonly type: CodePipelineExecutionStateChangeNotificationStackResourceNamingType.CUSTOM;
20
24
  readonly stateMachineName: string;
21
25
  readonly notificationTopicName: string;
22
26
  readonly notificationTopicDisplayName: string;
package/lib/index.js CHANGED
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const aws_codesuite_state_change_detection_event_rules_1 = require("@gammarers/aws-codesuite-state-change-detection-event-rules");
7
7
  const aws_resource_naming_1 = require("@gammarers/aws-resource-naming");
8
8
  Object.defineProperty(exports, "CodePipelineExecutionStateChangeNotificationStackResourceNamingType", { enumerable: true, get: function () { return aws_resource_naming_1.ResourceNamingType; } });
9
+ const aws_sns_slack_message_lambda_subscription_1 = require("@gammarers/aws-sns-slack-message-lambda-subscription");
9
10
  const aws_cdk_lib_1 = require("aws-cdk-lib");
10
11
  const events = require("aws-cdk-lib/aws-events");
11
12
  const targets = require("aws-cdk-lib/aws-events-targets");
@@ -38,6 +39,13 @@ class CodePipelineExecutionStateChangeNotificationStack extends aws_cdk_lib_1.St
38
39
  for (const email of emails) {
39
40
  topic.addSubscription(new subscriptions.EmailSubscription(email));
40
41
  }
42
+ // 👇 Subscription slack webhook
43
+ if (props.notifications?.slack) {
44
+ new aws_sns_slack_message_lambda_subscription_1.SNSSlackMessageLambdaSubscription(this, 'SNSSlackMessageLambdaSubscription', {
45
+ topic,
46
+ slackWebhookSecretName: props.notifications.slack.webhookSecretName,
47
+ });
48
+ }
41
49
  // Subscribe a HTTP endpoint (Slack Webhook) to the topic
42
50
  // topic.addSubscription(new subs.UrlSubscription('https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'));
43
51
  // 👇 Create State Machine
@@ -52,7 +60,7 @@ class CodePipelineExecutionStateChangeNotificationStack extends aws_cdk_lib_1.St
52
60
  return props?.enabled === undefined || props.enabled;
53
61
  })();
54
62
  // 👇 Create EventBridge Rule
55
- new aws_codesuite_state_change_detection_event_rules_1.CodePipelineExecutionStateChangeDetectionEventRule(this, 'EventRule', {
63
+ new aws_codesuite_state_change_detection_event_rules_1.CodePipelinePipelineExecutionStateChangeDetectionEventRule(this, 'EventRule', {
56
64
  ruleName: names.pipelineEventDetectionRuleName,
57
65
  enabled: enableRule,
58
66
  targets: [
@@ -71,5 +79,5 @@ class CodePipelineExecutionStateChangeNotificationStack extends aws_cdk_lib_1.St
71
79
  }
72
80
  exports.CodePipelineExecutionStateChangeNotificationStack = CodePipelineExecutionStateChangeNotificationStack;
73
81
  _a = JSII_RTTI_SYMBOL_1;
74
- CodePipelineExecutionStateChangeNotificationStack[_a] = { fqn: "@gammarers/aws-codepipeline-execution-state-change-notification-stack.CodePipelineExecutionStateChangeNotificationStack", version: "2.3.31" };
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrSUFBaUk7QUFDakksd0VBQStIO0FBU3JELG9KQVROLHdDQUFrQixPQVN1RDtBQVI3SSw2Q0FBaUU7QUFDakUsaURBQWlEO0FBQ2pELDBEQUEwRDtBQUMxRCwyQ0FBMkM7QUFDM0MsbUVBQW1FO0FBRW5FLHVGQUFrRjtBQTZCbEYsTUFBYSxpREFBa0QsU0FBUSxtQkFBSztJQUMxRSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZEO1FBQ3JHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sR0FBRyxvQ0FBYyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsbUJBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksbUJBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLGtCQUFrQjtRQUNsQixNQUFNLFVBQVUsR0FBRztZQUNqQixnQkFBZ0IsRUFBRSwrQ0FBK0MsTUFBTSxVQUFVO1lBQ2pGLHFCQUFxQixFQUFFLG9EQUFvRCxNQUFNLFFBQVE7WUFDekYsNEJBQTRCLEVBQUUsd0RBQXdEO1lBQ3RGLDhCQUE4QixFQUFFLGlDQUFpQyxNQUFNLHVCQUF1QjtTQUMvRixDQUFDO1FBQ0Ysb0JBQW9CO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLG9DQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsb0JBQTJELENBQUMsQ0FBQztRQUVuSCxpQ0FBaUM7UUFDakMsTUFBTSxLQUFLLEdBQWMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNoRSxTQUFTLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtZQUN0QyxXQUFXLEVBQUUsS0FBSyxDQUFDLDRCQUE0QjtTQUNoRCxDQUFDLENBQUM7UUFFSCw2RUFBNkU7UUFDN0UsbUVBQW1FO1FBRW5FLDJDQUEyQztRQUMzQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDaEQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCwwR0FBMEc7UUFFMUcsMEJBQTBCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUkscURBQXdCLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN0RSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUFDLENBQUM7UUFFSCxnQkFBZ0I7UUFDaEIsU0FBUztRQUNULE1BQU0sVUFBVSxHQUFZLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxFQUFFLE9BQU8sS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsNkJBQTZCO1FBQzdCLElBQUkscUdBQWtELENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUN4RSxRQUFRLEVBQUUsS0FBSyxDQUFDLDhCQUE4QjtZQUM5QyxPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtvQkFDeEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO3dCQUN0QyxNQUFNLEVBQUU7NEJBQ04sTUFBTSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTTs0QkFDbkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUzt5QkFDMUM7cUJBQ0YsQ0FBQztpQkFDSCxDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQS9ESCw4R0FnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlUGlwZWxpbmVFeGVjdXRpb25TdGF0ZUNoYW5nZURldGVjdGlvbkV2ZW50UnVsZSB9IGZyb20gJ0BnYW1tYXJlcnMvYXdzLWNvZGVzdWl0ZS1zdGF0ZS1jaGFuZ2UtZGV0ZWN0aW9uLWV2ZW50LXJ1bGVzJztcbmltcG9ydCB7IFJlc291cmNlQXV0b05hbWluZywgUmVzb3VyY2VEZWZhdWx0TmFtaW5nLCBSZXNvdXJjZU5hbWluZywgUmVzb3VyY2VOYW1pbmdUeXBlIH0gZnJvbSAnQGdhbW1hcmVycy9hd3MtcmVzb3VyY2UtbmFtaW5nJztcbmltcG9ydCB7IER1cmF0aW9uLCBOYW1lcywgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzdWJzY3JpcHRpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVzb3VyY2VzL25vdGlmaWNhdGlvbi1zdGF0ZS1tYWNoaW5lJztcblxuZXhwb3J0IHsgUmVzb3VyY2VBdXRvTmFtaW5nLCBSZXNvdXJjZURlZmF1bHROYW1pbmcsIFJlc291cmNlTmFtaW5nVHlwZSBhcyBDb2RlUGlwZWxpbmVFeGVjdXRpb25TdGF0ZUNoYW5nZU5vdGlmaWNhdGlvblN0YWNrUmVzb3VyY2VOYW1pbmdUeXBlIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0UmVzb3VyY2VQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IHRhZ0tleTogc3RyaW5nO1xuICByZWFkb25seSB0YWdWYWx1ZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbnNQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IGVtYWlscz86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlUGlwZWxpbmVFeGVjdXRpb25TdGF0ZUNoYW5nZU5vdGlmaWNhdGlvblN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgcmVhZG9ubHkgdGFyZ2V0UmVzb3VyY2U6IFRhcmdldFJlc291cmNlUHJvcGVydHk7XG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zUHJvcGVydHk7XG4gIHJlYWRvbmx5IHJlc291cmNlTmFtaW5nT3B0aW9uPzogUmVzb3VyY2VOYW1pbmdPcHRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTmFtaW5nIHtcbiAgcmVhZG9ubHkgdHlwZTogUmVzb3VyY2VOYW1pbmdUeXBlLkNVU1RPTTtcbiAgcmVhZG9ubHkgc3RhdGVNYWNoaW5lTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwaXBlbGluZUV2ZW50RGV0ZWN0aW9uUnVsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VOYW1pbmdPcHRpb24gPSBSZXNvdXJjZURlZmF1bHROYW1pbmcgfCBSZXNvdXJjZUF1dG9OYW1pbmcgfCBDdXN0b21OYW1pbmc7XG5cbmV4cG9ydCBjbGFzcyBDb2RlUGlwZWxpbmVFeGVjdXRpb25TdGF0ZUNoYW5nZU5vdGlmaWNhdGlvblN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29kZVBpcGVsaW5lRXhlY3V0aW9uU3RhdGVDaGFuZ2VOb3RpZmljYXRpb25TdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyDwn5GHIENyZWF0ZSByYW5kb20gOCBsZW5ndGggc3RyaW5nXG4gICAgY29uc3QgcmFuZG9tID0gUmVzb3VyY2VOYW1pbmcuY3JlYXRlUmFuZG9tU3RyaW5nKGAke05hbWVzLnVuaXF1ZUlkKHNjb3BlKX0uJHtOYW1lcy51bmlxdWVJZCh0aGlzKX1gKTtcbiAgICAvLyDwn5GHIEF1dG8gbmFlbWluZ1xuICAgIGNvbnN0IGF1dG9OYW1pbmcgPSB7XG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lOiBgY29kZXBpcGVsaW5lLWV4ZWMtc3RhdGUtY2hhbmdlLW5vdGlmaWNhdGlvbi0ke3JhbmRvbX0tbWFjaGluZWAsXG4gICAgICBub3RpZmljYXRpb25Ub3BpY05hbWU6IGBjb2RlcGlwZWxpbmUtZXhlY3V0aW9uLXN0YXRlLWNoYW5nZS1ub3RpZmljYXRpb24tJHtyYW5kb219LXRvcGljYCxcbiAgICAgIG5vdGlmaWNhdGlvblRvcGljRGlzcGxheU5hbWU6ICdDb2RlUGlwZWxpbmUgRXhlY3V0aW9uIHN0YXRlIGNoYW5nZSBOb3RpZmljYXRpb24gVG9waWMnLFxuICAgICAgcGlwZWxpbmVFdmVudERldGVjdGlvblJ1bGVOYW1lOiBgY29kZXBpcGVsaW5lLWV4ZS1zdGF0ZS1jaGFuZ2UtJHtyYW5kb219LWRldGVjdGlvbi1ldmVudC1ydWxlYCxcbiAgICB9O1xuICAgIC8vIPCfkYcgUmVzb3VyY2UgTmFtZXNcbiAgICBjb25zdCBuYW1lcyA9IFJlc291cmNlTmFtaW5nLm5hbWluZyhhdXRvTmFtaW5nLCBwcm9wcy5yZXNvdXJjZU5hbWluZ09wdGlvbiBhcyBSZXNvdXJjZU5hbWluZy5SZXNvdXJjZU5hbWluZ09wdGlvbik7XG5cbiAgICAvLyDwn5GHIFNOUyBUb3BpYyBmb3Igbm90aWZpY2F0aW9uc1xuICAgIGNvbnN0IHRvcGljOiBzbnMuVG9waWMgPSBuZXcgc25zLlRvcGljKHRoaXMsICdOb3RpZmljYXRpb25Ub3BpYycsIHtcbiAgICAgIHRvcGljTmFtZTogbmFtZXMubm90aWZpY2F0aW9uVG9waWNOYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IG5hbWVzLm5vdGlmaWNhdGlvblRvcGljRGlzcGxheU5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyAgICBjb25zdCBzZWNyZXQgPSBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoJ215LWVtYWlsLWFycmF5LXNlY3JldCcpO1xuICAgIC8vICAgIGNvbnN0IGVtYWlscyA9IEpTT04ucGFyc2Uoc2VjcmV0LnVuc2FmZVVud3JhcCgpKSBhcyBzdHJpbmdbXTtcblxuICAgIC8vIFN1YnNjcmliZSBhbiBlbWFpbCBlbmRwb2ludCB0byB0aGUgdG9waWNcbiAgICBjb25zdCBlbWFpbHMgPSBwcm9wcy5ub3RpZmljYXRpb25zLmVtYWlscyA/PyBbXTtcbiAgICBmb3IgKGNvbnN0IGVtYWlsIG9mIGVtYWlscykge1xuICAgICAgdG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBzdWJzY3JpcHRpb25zLkVtYWlsU3Vic2NyaXB0aW9uKGVtYWlsKSk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIGEgSFRUUCBlbmRwb2ludCAoU2xhY2sgV2ViaG9vaykgdG8gdGhlIHRvcGljXG4gICAgLy8gdG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBzdWJzLlVybFN1YnNjcmlwdGlvbignaHR0cHM6Ly9ob29rcy5zbGFjay5jb20vc2VydmljZXMvWU9VUi9TTEFDSy9XRUJIT09LJykpO1xuXG4gICAgLy8g8J+RhyBDcmVhdGUgU3RhdGUgTWFjaGluZVxuICAgIGNvbnN0IHN0YXRlTWFjaGluZSA9IG5ldyBOb3RpZmljYXRpb25TdGF0ZU1hY2hpbmUodGhpcywgJ1N0YXRlTWFjaGluZScsIHtcbiAgICAgIHN0YXRlTWFjaGluZU5hbWU6IG5hbWVzLnN0YXRlTWFjaGluZU5hbWUsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWM6IHRvcGljLFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBSdWxlIHN0YXRlXG4gICAgLy9lbmFibGVkXG4gICAgY29uc3QgZW5hYmxlUnVsZTogYm9vbGVhbiA9ICgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHM/LmVuYWJsZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5lbmFibGVkO1xuICAgIH0pKCk7XG5cbiAgICAvLyDwn5GHIENyZWF0ZSBFdmVudEJyaWRnZSBSdWxlXG4gICAgbmV3IENvZGVQaXBlbGluZUV4ZWN1dGlvblN0YXRlQ2hhbmdlRGV0ZWN0aW9uRXZlbnRSdWxlKHRoaXMsICdFdmVudFJ1bGUnLCB7XG4gICAgICBydWxlTmFtZTogbmFtZXMucGlwZWxpbmVFdmVudERldGVjdGlvblJ1bGVOYW1lLFxuICAgICAgZW5hYmxlZDogZW5hYmxlUnVsZSxcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgbmV3IHRhcmdldHMuU2ZuU3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZSwge1xuICAgICAgICAgIGlucHV0OiBldmVudHMuUnVsZVRhcmdldElucHV0LmZyb21PYmplY3Qoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckJyksXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgdGFnS2V5OiBwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdLZXksXG4gICAgICAgICAgICAgIHRhZ1ZhbHVlczogcHJvcHMudGFyZ2V0UmVzb3VyY2UudGFnVmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
82
+ CodePipelineExecutionStateChangeNotificationStack[_a] = { fqn: "@gammarers/aws-codepipeline-execution-state-change-notification-stack.CodePipelineExecutionStateChangeNotificationStack", version: "2.4.1" };
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrSUFBeUk7QUFDekksd0VBQXNNO0FBVTdMLG9KQVZpRix3Q0FBbUUsT0FVakY7QUFUNUUsb0hBQXlHO0FBQ3pHLDZDQUFpRTtBQUNqRSxpREFBaUQ7QUFDakQsMERBQTBEO0FBQzFELDJDQUEyQztBQUMzQyxtRUFBbUU7QUFFbkUsdUZBQWtGO0FBbUNsRixNQUFhLGlEQUFrRCxTQUFRLG1CQUFLO0lBQzFFLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkQ7UUFDckcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsbUNBQW1DO1FBQ25DLE1BQU0sTUFBTSxHQUFHLG9DQUFjLENBQUMsa0JBQWtCLENBQUMsR0FBRyxtQkFBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxtQkFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckcsa0JBQWtCO1FBQ2xCLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLGdCQUFnQixFQUFFLCtDQUErQyxNQUFNLFVBQVU7WUFDakYscUJBQXFCLEVBQUUsb0RBQW9ELE1BQU0sUUFBUTtZQUN6Riw0QkFBNEIsRUFBRSx3REFBd0Q7WUFDdEYsOEJBQThCLEVBQUUsaUNBQWlDLE1BQU0sdUJBQXVCO1NBQy9GLENBQUM7UUFDRixvQkFBb0I7UUFDcEIsTUFBTSxLQUFLLEdBQUcsb0NBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxvQkFBMkQsQ0FBQyxDQUFDO1FBRW5ILGlDQUFpQztRQUNqQyxNQUFNLEtBQUssR0FBYyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ2hFLFNBQVMsRUFBRSxLQUFLLENBQUMscUJBQXFCO1lBQ3RDLFdBQVcsRUFBRSxLQUFLLENBQUMsNEJBQTRCO1NBQ2hELENBQUMsQ0FBQztRQUVILDZFQUE2RTtRQUM3RSxtRUFBbUU7UUFFbkUsMkNBQTJDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNoRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUMvQixJQUFJLDZFQUFpQyxDQUFDLElBQUksRUFBRSxtQ0FBbUMsRUFBRTtnQkFDL0UsS0FBSztnQkFDTCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7YUFDcEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHlEQUF5RDtRQUN6RCwwR0FBMEc7UUFFMUcsMEJBQTBCO1FBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUkscURBQXdCLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUN0RSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUFDLENBQUM7UUFFSCxnQkFBZ0I7UUFDaEIsU0FBUztRQUNULE1BQU0sVUFBVSxHQUFZLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxFQUFFLE9BQU8sS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsNkJBQTZCO1FBQzdCLElBQUksNkdBQTBELENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUNoRixRQUFRLEVBQUUsS0FBSyxDQUFDLDhCQUE4QjtZQUM5QyxPQUFPLEVBQUUsVUFBVTtZQUNuQixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtvQkFDeEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO3dCQUN0QyxNQUFNLEVBQUU7NEJBQ04sTUFBTSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTTs0QkFDbkMsU0FBUyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUzt5QkFDMUM7cUJBQ0YsQ0FBQztpQkFDSCxDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXZFSCw4R0F3RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlUGlwZWxpbmVQaXBlbGluZUV4ZWN1dGlvblN0YXRlQ2hhbmdlRGV0ZWN0aW9uRXZlbnRSdWxlIH0gZnJvbSAnQGdhbW1hcmVycy9hd3MtY29kZXN1aXRlLXN0YXRlLWNoYW5nZS1kZXRlY3Rpb24tZXZlbnQtcnVsZXMnO1xuaW1wb3J0IHsgUmVzb3VyY2VBdXRvTmFtaW5nLCBSZXNvdXJjZURlZmF1bHROYW1pbmcsIFJlc291cmNlTmFtaW5nLCBSZXNvdXJjZU5hbWluZ1R5cGUgYXMgQ29kZVBpcGVsaW5lRXhlY3V0aW9uU3RhdGVDaGFuZ2VOb3RpZmljYXRpb25TdGFja1Jlc291cmNlTmFtaW5nVHlwZSB9IGZyb20gJ0BnYW1tYXJlcnMvYXdzLXJlc291cmNlLW5hbWluZyc7XG5pbXBvcnQgeyBTTlNTbGFja01lc3NhZ2VMYW1iZGFTdWJzY3JpcHRpb24gfSBmcm9tICdAZ2FtbWFyZXJzL2F3cy1zbnMtc2xhY2stbWVzc2FnZS1sYW1iZGEtc3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IER1cmF0aW9uLCBOYW1lcywgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzdWJzY3JpcHRpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMtc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblN0YXRlTWFjaGluZSB9IGZyb20gJy4vcmVzb3VyY2VzL25vdGlmaWNhdGlvbi1zdGF0ZS1tYWNoaW5lJztcblxuZXhwb3J0IHsgQ29kZVBpcGVsaW5lRXhlY3V0aW9uU3RhdGVDaGFuZ2VOb3RpZmljYXRpb25TdGFja1Jlc291cmNlTmFtaW5nVHlwZSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldFJlc291cmNlUHJvcGVydHkge1xuICByZWFkb25seSB0YWdLZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgdGFnVmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbGFjayB7XG4gIHJlYWRvbmx5IHdlYmhvb2tTZWNyZXROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uc1Byb3BlcnR5IHtcbiAgcmVhZG9ubHkgZW1haWxzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHNsYWNrPzogU2xhY2s7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZVBpcGVsaW5lRXhlY3V0aW9uU3RhdGVDaGFuZ2VOb3RpZmljYXRpb25TdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IHRhcmdldFJlc291cmNlOiBUYXJnZXRSZXNvdXJjZVByb3BlcnR5O1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1Byb3BlcnR5O1xuICByZWFkb25seSByZXNvdXJjZU5hbWluZ09wdGlvbj86IFJlc291cmNlTmFtaW5nT3B0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbU5hbWluZyB7XG4gIHJlYWRvbmx5IHR5cGU6IENvZGVQaXBlbGluZUV4ZWN1dGlvblN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uU3RhY2tSZXNvdXJjZU5hbWluZ1R5cGUuQ1VTVE9NO1xuICByZWFkb25seSBzdGF0ZU1hY2hpbmVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpY0Rpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lRXZlbnREZXRlY3Rpb25SdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZU5hbWluZ09wdGlvbiA9IFJlc291cmNlRGVmYXVsdE5hbWluZyB8IFJlc291cmNlQXV0b05hbWluZyB8IEN1c3RvbU5hbWluZztcblxuZXhwb3J0IGNsYXNzIENvZGVQaXBlbGluZUV4ZWN1dGlvblN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2RlUGlwZWxpbmVFeGVjdXRpb25TdGF0ZUNoYW5nZU5vdGlmaWNhdGlvblN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIPCfkYcgQ3JlYXRlIHJhbmRvbSA4IGxlbmd0aCBzdHJpbmdcbiAgICBjb25zdCByYW5kb20gPSBSZXNvdXJjZU5hbWluZy5jcmVhdGVSYW5kb21TdHJpbmcoYCR7TmFtZXMudW5pcXVlSWQoc2NvcGUpfS4ke05hbWVzLnVuaXF1ZUlkKHRoaXMpfWApO1xuICAgIC8vIPCfkYcgQXV0byBuYWVtaW5nXG4gICAgY29uc3QgYXV0b05hbWluZyA9IHtcbiAgICAgIHN0YXRlTWFjaGluZU5hbWU6IGBjb2RlcGlwZWxpbmUtZXhlYy1zdGF0ZS1jaGFuZ2Utbm90aWZpY2F0aW9uLSR7cmFuZG9tfS1tYWNoaW5lYCxcbiAgICAgIG5vdGlmaWNhdGlvblRvcGljTmFtZTogYGNvZGVwaXBlbGluZS1leGVjdXRpb24tc3RhdGUtY2hhbmdlLW5vdGlmaWNhdGlvbi0ke3JhbmRvbX0tdG9waWNgLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZTogJ0NvZGVQaXBlbGluZSBFeGVjdXRpb24gc3RhdGUgY2hhbmdlIE5vdGlmaWNhdGlvbiBUb3BpYycsXG4gICAgICBwaXBlbGluZUV2ZW50RGV0ZWN0aW9uUnVsZU5hbWU6IGBjb2RlcGlwZWxpbmUtZXhlLXN0YXRlLWNoYW5nZS0ke3JhbmRvbX0tZGV0ZWN0aW9uLWV2ZW50LXJ1bGVgLFxuICAgIH07XG4gICAgLy8g8J+RhyBSZXNvdXJjZSBOYW1lc1xuICAgIGNvbnN0IG5hbWVzID0gUmVzb3VyY2VOYW1pbmcubmFtaW5nKGF1dG9OYW1pbmcsIHByb3BzLnJlc291cmNlTmFtaW5nT3B0aW9uIGFzIFJlc291cmNlTmFtaW5nLlJlc291cmNlTmFtaW5nT3B0aW9uKTtcblxuICAgIC8vIPCfkYcgU05TIFRvcGljIGZvciBub3RpZmljYXRpb25zXG4gICAgY29uc3QgdG9waWM6IHNucy5Ub3BpYyA9IG5ldyBzbnMuVG9waWModGhpcywgJ05vdGlmaWNhdGlvblRvcGljJywge1xuICAgICAgdG9waWNOYW1lOiBuYW1lcy5ub3RpZmljYXRpb25Ub3BpY05hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogbmFtZXMubm90aWZpY2F0aW9uVG9waWNEaXNwbGF5TmFtZSxcbiAgICB9KTtcblxuICAgIC8vICAgIGNvbnN0IHNlY3JldCA9IGNkay5TZWNyZXRWYWx1ZS5zZWNyZXRzTWFuYWdlcignbXktZW1haWwtYXJyYXktc2VjcmV0Jyk7XG4gICAgLy8gICAgY29uc3QgZW1haWxzID0gSlNPTi5wYXJzZShzZWNyZXQudW5zYWZlVW53cmFwKCkpIGFzIHN0cmluZ1tdO1xuXG4gICAgLy8gU3Vic2NyaWJlIGFuIGVtYWlsIGVuZHBvaW50IHRvIHRoZSB0b3BpY1xuICAgIGNvbnN0IGVtYWlscyA9IHByb3BzLm5vdGlmaWNhdGlvbnMuZW1haWxzID8/IFtdO1xuICAgIGZvciAoY29uc3QgZW1haWwgb2YgZW1haWxzKSB7XG4gICAgICB0b3BpYy5hZGRTdWJzY3JpcHRpb24obmV3IHN1YnNjcmlwdGlvbnMuRW1haWxTdWJzY3JpcHRpb24oZW1haWwpKTtcbiAgICB9XG5cbiAgICAvLyDwn5GHIFN1YnNjcmlwdGlvbiBzbGFjayB3ZWJob29rXG4gICAgaWYgKHByb3BzLm5vdGlmaWNhdGlvbnM/LnNsYWNrKSB7XG4gICAgICBuZXcgU05TU2xhY2tNZXNzYWdlTGFtYmRhU3Vic2NyaXB0aW9uKHRoaXMsICdTTlNTbGFja01lc3NhZ2VMYW1iZGFTdWJzY3JpcHRpb24nLCB7XG4gICAgICAgIHRvcGljLFxuICAgICAgICBzbGFja1dlYmhvb2tTZWNyZXROYW1lOiBwcm9wcy5ub3RpZmljYXRpb25zLnNsYWNrLndlYmhvb2tTZWNyZXROYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIGEgSFRUUCBlbmRwb2ludCAoU2xhY2sgV2ViaG9vaykgdG8gdGhlIHRvcGljXG4gICAgLy8gdG9waWMuYWRkU3Vic2NyaXB0aW9uKG5ldyBzdWJzLlVybFN1YnNjcmlwdGlvbignaHR0cHM6Ly9ob29rcy5zbGFjay5jb20vc2VydmljZXMvWU9VUi9TTEFDSy9XRUJIT09LJykpO1xuXG4gICAgLy8g8J+RhyBDcmVhdGUgU3RhdGUgTWFjaGluZVxuICAgIGNvbnN0IHN0YXRlTWFjaGluZSA9IG5ldyBOb3RpZmljYXRpb25TdGF0ZU1hY2hpbmUodGhpcywgJ1N0YXRlTWFjaGluZScsIHtcbiAgICAgIHN0YXRlTWFjaGluZU5hbWU6IG5hbWVzLnN0YXRlTWFjaGluZU5hbWUsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgbm90aWZpY2F0aW9uVG9waWM6IHRvcGljLFxuICAgIH0pO1xuXG4gICAgLy8g8J+RhyBSdWxlIHN0YXRlXG4gICAgLy9lbmFibGVkXG4gICAgY29uc3QgZW5hYmxlUnVsZTogYm9vbGVhbiA9ICgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHM/LmVuYWJsZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5lbmFibGVkO1xuICAgIH0pKCk7XG5cbiAgICAvLyDwn5GHIENyZWF0ZSBFdmVudEJyaWRnZSBSdWxlXG4gICAgbmV3IENvZGVQaXBlbGluZVBpcGVsaW5lRXhlY3V0aW9uU3RhdGVDaGFuZ2VEZXRlY3Rpb25FdmVudFJ1bGUodGhpcywgJ0V2ZW50UnVsZScsIHtcbiAgICAgIHJ1bGVOYW1lOiBuYW1lcy5waXBlbGluZUV2ZW50RGV0ZWN0aW9uUnVsZU5hbWUsXG4gICAgICBlbmFibGVkOiBlbmFibGVSdWxlLFxuICAgICAgdGFyZ2V0czogW1xuICAgICAgICBuZXcgdGFyZ2V0cy5TZm5TdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lLCB7XG4gICAgICAgICAgaW5wdXQ6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgICBldmVudDogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQnKSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICB0YWdLZXk6IHByb3BzLnRhcmdldFJlc291cmNlLnRhZ0tleSxcbiAgICAgICAgICAgICAgdGFnVmFsdWVzOiBwcm9wcy50YXJnZXRSZXNvdXJjZS50YWdWYWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -11,17 +11,28 @@ class NotificationStateMachine extends sfn.StateMachine {
11
11
  definitionBody: (() => {
12
12
  // 👇 Get Account
13
13
  const account = aws_cdk_lib_1.Stack.of(scope).account;
14
- const initPipelineStateEmojisDefinition = new sfn.Pass(scope, 'InitPipelineStateEmojiDefinition', {
15
- result: sfn.Result.fromObject([
16
- { name: 'STARTED', emoji: '🥳' },
17
- { name: 'SUCCEEDED', emoji: '🤩' },
18
- { name: 'RESUMED', emoji: '🤔' },
19
- { name: 'FAILED', emoji: '😫' },
20
- { name: 'STOPPING', emoji: '😮' },
21
- { name: 'STOPPED', emoji: '😌' },
22
- { name: 'SUPERSEDED', emoji: '🧐' },
23
- ]),
24
- resultPath: '$.Definition.StateEmojis',
14
+ const initDefinition = new sfn.Pass(scope, 'InitDefinition', {
15
+ resultPath: '$.Definition',
16
+ parameters: {
17
+ StateEmojis: [
18
+ { name: 'STARTED', emoji: '🥳' },
19
+ { name: 'SUCCEEDED', emoji: '🤩' },
20
+ { name: 'RESUMED', emoji: '🤔' },
21
+ { name: 'FAILED', emoji: '😫' },
22
+ { name: 'STOPPING', emoji: '😮' },
23
+ { name: 'STOPPED', emoji: '😌' },
24
+ { name: 'SUPERSEDED', emoji: '🧐' },
25
+ ],
26
+ StateColors: [
27
+ { name: 'STARTED', color: '#00bfff' },
28
+ { name: 'SUCCEEDED', color: '#36a64f' },
29
+ { name: 'RESUMED', color: '#87cefa' },
30
+ { name: 'FAILED', color: '#ff0000' },
31
+ { name: 'STOPPING', color: '#ffff00' },
32
+ { name: 'STOPPED', color: '#ffd700' },
33
+ { name: 'SUPERSEDED', color: '#ffa500' },
34
+ ],
35
+ },
25
36
  });
26
37
  const succeed = new sfn.Succeed(scope, 'Succeed');
27
38
  // describe pipeline
@@ -37,7 +48,7 @@ class NotificationStateMachine extends sfn.StateMachine {
37
48
  Arn: sfn.JsonPath.stringAt('$.Metadata.PipelineArn'),
38
49
  },
39
50
  });
40
- initPipelineStateEmojisDefinition.next(getPipeline);
51
+ initDefinition.next(getPipeline);
41
52
  // 👇 Get Resources from resource arn list
42
53
  const getResourceTagMappingList = new tasks.CallAwsService(scope, 'GetResourceTagMappingList', {
43
54
  service: 'resourcegroupstaggingapi',
@@ -76,21 +87,50 @@ class NotificationStateMachine extends sfn.StateMachine {
76
87
  Value: sfn.JsonPath.format('https://{}.console.aws.amazon.com/codesuite/codepipeline/pipelines/{}/view?region={}', sfn.JsonPath.stringAt('$.event.region'), sfn.JsonPath.stringAt('$.event.detail.pipeline'), sfn.JsonPath.stringAt('$.event.region')),
77
88
  },
78
89
  });
79
- const generateTopicSubject = new sfn.Pass(scope, 'GenerateTopicSubject', {
80
- resultPath: '$.Generate.Topic.Subject',
81
- parameters: {
82
- Value: sfn.JsonPath.format('{} [{}] AWS CodePipeline Pipeline Execution State Notification [{}][{}]', sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.Definition.StateEmojis[?(@.name == $.event.detail.state)].emoji'), 0), sfn.JsonPath.stringAt('$.event.detail.state'), sfn.JsonPath.stringAt('$.event.account'), sfn.JsonPath.stringAt('$.event.region')),
83
- },
84
- });
85
- generatePipelineUrl.next(generateTopicSubject);
86
- // 👇 Make send default & email message
87
- const generateTopicTextMessage = new sfn.Pass(scope, 'GeneratedPipelineMessage', {
88
- resultPath: '$.Generate.Topic.Message',
90
+ const generateMessage = new sfn.Pass(scope, 'GenerateMessage', {
91
+ resultPath: '$.Generate.Message',
89
92
  parameters: {
90
- Value: sfn.JsonPath.format('Account : {}\nRegion : {}\nPipeline : {}\nState : {}\nTime : {}\nURL : {}\n', sfn.JsonPath.stringAt('$.event.account'), sfn.JsonPath.stringAt('$.event.region'), sfn.JsonPath.stringAt('$.event.detail.pipeline'), sfn.JsonPath.stringAt('$.event.detail.state'), sfn.JsonPath.stringAt('$.event.time'), sfn.JsonPath.stringAt('$.Generate.PipelineUrl.Value')),
93
+ Subject: sfn.JsonPath.format('{} [{}] AWS CodePipeline Pipeline Execution State Notification [{}][{}]', sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.Definition.StateEmojis[?(@.name == $.event.detail.state)].emoji'), 0), sfn.JsonPath.stringAt('$.event.detail.state'), sfn.JsonPath.stringAt('$.event.account'), sfn.JsonPath.stringAt('$.event.region')),
94
+ TextBody: sfn.JsonPath.format('Account : {}\nRegion : {}\nPipeline : {}\nState : {}\nTime : {}\nURL : {}\n', sfn.JsonPath.stringAt('$.event.account'), sfn.JsonPath.stringAt('$.event.region'), sfn.JsonPath.stringAt('$.event.detail.pipeline'), sfn.JsonPath.stringAt('$.event.detail.state'), sfn.JsonPath.stringAt('$.event.time'), sfn.JsonPath.stringAt('$.Generate.PipelineUrl.Value')),
95
+ SlackJsonBody: {
96
+ attachments: [
97
+ {
98
+ color: sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.Definition.StateColors[?(@.name == $.event.detail.state)].color'), 0),
99
+ // pretext: sfn.JsonPath.format('😴 Successfully stopped the automatically running RDS {} {}.',
100
+ pretext: sfn.JsonPath.format('{} Pipeline {} state changed to {}', sfn.JsonPath.arrayGetItem(sfn.JsonPath.stringAt('$.Definition.StateEmojis[?(@.name == $.event.detail.state)].emoji'), 0), sfn.JsonPath.stringAt('$.event.detail.pipeline'), sfn.JsonPath.stringAt('$.event.detail.state')),
101
+ fields: [
102
+ {
103
+ title: 'Account',
104
+ value: sfn.JsonPath.stringAt('$.event.account'),
105
+ short: true,
106
+ },
107
+ {
108
+ title: 'Region',
109
+ value: sfn.JsonPath.stringAt('$.event.region'),
110
+ short: true,
111
+ },
112
+ {
113
+ title: 'Pipeline',
114
+ value: sfn.JsonPath.stringAt('$.event.detail.pipeline'),
115
+ short: true,
116
+ },
117
+ {
118
+ title: 'State',
119
+ value: sfn.JsonPath.stringAt('$.event.detail.state'),
120
+ short: true,
121
+ },
122
+ {
123
+ title: 'Time',
124
+ value: sfn.JsonPath.stringAt('$.event.time'),
125
+ short: true,
126
+ },
127
+ ],
128
+ },
129
+ ],
130
+ },
91
131
  },
92
132
  });
93
- generateTopicSubject.next(generateTopicTextMessage);
133
+ generatePipelineUrl.next(generateMessage);
94
134
  // 👇 Choice state for message
95
135
  const checkPipelineStateMatch = new sfn.Choice(scope, 'CheckPipelineStateMatch')
96
136
  .when(sfn.Condition.or(sfn.Condition.stringEquals('$.event.detail.state', 'STARTED'), sfn.Condition.stringEquals('$.event.detail.state', 'SUCCEEDED'), sfn.Condition.stringEquals('$.event.detail.state', 'RESUMED'), sfn.Condition.stringEquals('$.event.detail.state', 'FAILED'), sfn.Condition.stringEquals('$.event.detail.state', 'STOPPING'), sfn.Condition.stringEquals('$.event.detail.state', 'STOPPED'), sfn.Condition.stringEquals('$.event.detail.state', 'SUPERSEDED')), generatePipelineUrl)
@@ -102,16 +142,21 @@ class NotificationStateMachine extends sfn.StateMachine {
102
142
  // 👇 Send notification task
103
143
  const sendNotification = new tasks.SnsPublish(scope, 'SendNotification', {
104
144
  topic: props.notificationTopic,
105
- subject: sfn.JsonPath.stringAt('$.Generate.Topic.Subject.Value'),
106
- message: sfn.TaskInput.fromJsonPathAt('$.Generate.Topic.Message.Value'),
145
+ subject: sfn.JsonPath.stringAt('$.Generate.Message.Subject'),
146
+ message: sfn.TaskInput.fromObject({
147
+ default: sfn.JsonPath.stringAt('$.Generate.Message.TextBody'),
148
+ email: sfn.JsonPath.stringAt('$.Generate.Message.TextBody'),
149
+ lambda: sfn.JsonPath.jsonToString(sfn.JsonPath.objectAt('$.Generate.Message.SlackJsonBody')),
150
+ }),
151
+ messagePerSubscriptionType: true,
107
152
  resultPath: '$.snsResult',
108
153
  });
109
- generateTopicTextMessage.next(sendNotification);
154
+ generateMessage.next(sendNotification);
110
155
  sendNotification.next(succeed);
111
- return sfn.DefinitionBody.fromChainable(initPipelineStateEmojisDefinition);
156
+ return sfn.DefinitionBody.fromChainable(initDefinition);
112
157
  })(),
113
158
  });
114
159
  }
115
160
  }
116
161
  exports.NotificationStateMachine = NotificationStateMachine;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXN0YXRlLW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzb3VyY2VzL25vdGlmaWNhdGlvbi1zdGF0ZS1tYWNoaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQyxxREFBcUQ7QUFDckQsNkRBQTZEO0FBTzdELE1BQWEsd0JBQXlCLFNBQVEsR0FBRyxDQUFDLFlBQVk7SUFDNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQztRQUM1RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLGNBQWMsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFFcEIsaUJBQWlCO2dCQUNqQixNQUFNLE9BQU8sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBRXhDLE1BQU0saUNBQWlDLEdBQWEsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtvQkFDMUcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO3dCQUM1QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDaEMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ2xDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNoQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDL0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ2pDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNoQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FB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LGFBQWEsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsRUFBRSx1QkFBdUIsQ0FBQztxQkFDcEcsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUU5RCx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFFbkQsNEJBQTRCO2dCQUM1QixNQUFNLGdCQUFnQixHQUFxQixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO29CQUN6RixLQUFLLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtvQkFDOUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO29CQUNoRSxPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLENBQUM7b0JBQ3ZFLFVBQVUsRUFBRSxhQUFhO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRWhELGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBRTdFLENBQUMsQ0FBQyxFQUFFO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBMUpELDREQTBKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHRhc2tzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblN0YXRlTWFjaGluZVByb3BzIGV4dGVuZHMgc2ZuLlN0YXRlTWFjaGluZVByb3BzIHtcbiAgbm90aWZpY2F0aW9uVG9waWM6IHNucy5JVG9waWM7XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TdGF0ZU1hY2hpbmUgZXh0ZW5kcyBzZm4uU3RhdGVNYWNoaW5lIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5vdGlmaWNhdGlvblN0YXRlTWFjaGluZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlZmluaXRpb25Cb2R5OiAoKCkgPT4ge1xuXG4gICAgICAgIC8vIPCfkYcgR2V0IEFjY291bnRcbiAgICAgICAgY29uc3QgYWNjb3VudCA9IFN0YWNrLm9mKHNjb3BlKS5hY2NvdW50O1xuXG4gICAgICAgIGNvbnN0IGluaXRQaXBlbGluZVN0YXRlRW1vamlzRGVmaW5pdGlvbjogc2ZuLlBhc3MgPSBuZXcgc2ZuLlBhc3Moc2NvcGUsICdJbml0UGlwZWxpbmVTdGF0ZUVtb2ppRGVmaW5pdGlvbicsIHtcbiAgICAgICAgICByZXN1bHQ6IHNmbi5SZXN1bHQuZnJvbU9iamVjdChbXG4gICAgICAgICAgICB7IG5hbWU6ICdTVEFSVEVEJywgZW1vamk6ICfwn6WzJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnU1VDQ0VFREVEJywgZW1vamk6ICfwn6SpJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnUkVTVU1FRCcsIGVtb2ppOiAn8J+klCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ0ZBSUxFRCcsIGVtb2ppOiAn8J+YqycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ1NUT1BQSU5HJywgZW1vamk6ICfwn5iuJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnU1RPUFBFRCcsIGVtb2ppOiAn8J+YjCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ1NVUEVSU0VERUQnLCBlbW9qaTogJ/Cfp5AnIH0sXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuRGVmaW5pdGlvbi5TdGF0ZUVtb2ppcycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHN1Y2NlZWQ6IHNmbi5TdWNjZWVkID0gbmV3IHNmbi5TdWNjZWVkKHNjb3BlLCAnU3VjY2VlZCcpO1xuXG4gICAgICAgIC8vIGRlc2NyaWJlIHBpcGVsaW5lXG4gICAgICAgIGNvbnN0IGdldFBpcGVsaW5lID0gbmV3IHRhc2tzLkNhbGxBd3NTZXJ2aWNlKHNjb3BlLCAnR2V0UGlwZWxpbmUnLCB7XG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbYGFybjphd3M6Y29kZXBpcGVsaW5lOio6JHthY2NvdW50fToqYF0sXG4gICAgICAgICAgc2VydmljZTogJ2NvZGVwaXBlbGluZScsXG4gICAgICAgICAgYWN0aW9uOiAnZ2V0UGlwZWxpbmUnLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIE5hbWU6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5kZXRhaWwucGlwZWxpbmUnKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLlJlc3VsdC5QaXBlbGluZScsXG4gICAgICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgICAgIEFybjogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLk1ldGFkYXRhLlBpcGVsaW5lQXJuJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGluaXRQaXBlbGluZVN0YXRlRW1vamlzRGVmaW5pdGlvbi5uZXh0KGdldFBpcGVsaW5lKTtcblxuICAgICAgICAvLyDwn5GHIEdldCBSZXNvdXJjZXMgZnJvbSByZXNvdXJjZSBhcm4gbGlzdFxuICAgICAgICBjb25zdCBnZXRSZXNvdXJjZVRhZ01hcHBpbmdMaXN0OiB0YXNrcy5DYWxsQXdzU2VydmljZSA9IG5ldyB0YXNrcy5DYWxsQXdzU2VydmljZShzY29wZSwgJ0dldFJlc291cmNlVGFnTWFwcGluZ0xpc3QnLCB7XG4gICAgICAgICAgc2VydmljZTogJ3Jlc291cmNlZ3JvdXBzdGFnZ2luZ2FwaScsXG4gICAgICAgICAgYWN0aW9uOiAnZ2V0UmVzb3VyY2VzJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAvLyBSZXNvdXJjZUFSTkxpc3Q6IHNmbi5Kc29uUGF0aC5saXN0QXQoJyQucmVzb3VyY2VzJyksXG4gICAgICAgICAgICBSZXNvdXJjZVR5cGVGaWx0ZXJzOiBbJ2NvZGVwaXBlbGluZTpwaXBlbGluZSddLCAvLyBSZXNvdXJjZVR5cGVGaWx0ZXJzIGlzIG5vdCBhbGxvd2VkIHdoZW4gcHJvdmlkaW5nIGEgUmVzb3VyY2VBUk5MaXN0XG4gICAgICAgICAgICBUYWdGaWx0ZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBLZXk6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5wYXJhbXMudGFnS2V5JyksXG4gICAgICAgICAgICAgICAgVmFsdWVzOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQucGFyYW1zLnRhZ1ZhbHVlcycpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSwgLy8gVGFnRmlsdGVycyBpcyBub3QgYWxsb3dlZCB3aGVuIHByb3ZpZGluZyBhIFJlc291cmNlQVJOTGlzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaWFtQWN0aW9uOiAndGFnOkdldFJlc291cmNlcycsXG4gICAgICAgICAgaWFtUmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuR2V0TWF0Y2hUYWdSZXNvdXJjZScsXG4gICAgICAgICAgcmVzdWx0U2VsZWN0b3I6IHtcbiAgICAgICAgICAgIEFybnM6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC4uUmVzb3VyY2VUYWdNYXBwaW5nTGlzdFsqXS5SZXNvdXJjZUFSTicpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBnZXRUYWdzLmFkZENhdGNoKClcbiAgICAgICAgZ2V0UGlwZWxpbmUubmV4dChnZXRSZXNvdXJjZVRhZ01hcHBpbmdMaXN0KTtcblxuICAgICAgICAvLyDwn5GHIElzIGluXG4gICAgICAgIGNvbnN0IGNoZWNrVGFnRmlsdGVyQXJuc0NvbnRhaW46IHNmbi5QYXNzID0gbmV3IHNmbi5QYXNzKHNjb3BlLCAnQ2hlY2tUYWdGaWx0ZXJBcm5zQ29udGFpbicsIHtcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBJczogc2ZuLkpzb25QYXRoLmFycmF5Q29udGFpbnMoc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlJlc3VsdC5HZXRNYXRjaFRhZ1Jlc291cmNlLkFybnMnKSwgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLlJlc3VsdC5QaXBlbGluZS5Bcm4nKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5SZXN1bHQuVGFnRmlsdGVyQXJuc0NvbnRhaW4nLFxuICAgICAgICB9KTtcblxuICAgICAgICBnZXRSZXNvdXJjZVRhZ01hcHBpbmdMaXN0Lm5leHQoY2hlY2tUYWdGaWx0ZXJBcm5zQ29udGFpbik7XG5cbiAgICAgICAgLy8g8J+RhyBDcmVhdGUgcGlwZWxpbmUgVVJMXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlUGlwZWxpbmVVcmwgPSBuZXcgc2ZuLlBhc3Moc2NvcGUsICdHZW5lcmF0ZVBpcGVsaW5lVXJsJywge1xuICAgICAgICAgIHJlc3VsdFBhdGg6ICckLkdlbmVyYXRlLlBpcGVsaW5lVXJsJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBWYWx1ZTogc2ZuLkpzb25QYXRoLmZvcm1hdCgnaHR0cHM6Ly97fS5jb25zb2xlLmF3cy5hbWF6b24uY29tL2NvZGVzdWl0ZS9jb2RlcGlwZWxpbmUvcGlwZWxpbmVzL3t9L3ZpZXc/cmVnaW9uPXt9JyxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LnJlZ2lvbicpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuZGV0YWlsLnBpcGVsaW5lJyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5yZWdpb24nKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZ2VuZXJhdGVUb3BpY1N1YmplY3QgPSBuZXcgc2ZuLlBhc3Moc2NvcGUsICdHZW5lcmF0ZVRvcGljU3ViamVjdCcsIHtcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5HZW5lcmF0ZS5Ub3BpYy5TdWJqZWN0JyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBWYWx1ZTogc2ZuLkpzb25QYXRoLmZvcm1hdCgne30gW3t9XSBBV1MgQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBOb3RpZmljYXRpb24gW3t9XVt7fV0nLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguYXJyYXlHZXRJdGVtKHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5EZWZpbml0aW9uLlN0YXRlRW1vamlzWz8oQC5uYW1lID09ICQuZXZlbnQuZGV0YWlsLnN0YXRlKV0uZW1vamknKSwgMCksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5kZXRhaWwuc3RhdGUnKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmFjY291bnQnKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LnJlZ2lvbicpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBnZW5lcmF0ZVBpcGVsaW5lVXJsLm5leHQoZ2VuZXJhdGVUb3BpY1N1YmplY3QpO1xuXG4gICAgICAgIC8vIPCfkYcgTWFrZSBzZW5kIGRlZmF1bHQgJiBlbWFpbCBtZXNzYWdlXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlVG9waWNUZXh0TWVzc2FnZTogc2ZuLlBhc3MgPSBuZXcgc2ZuLlBhc3Moc2NvcGUsICdHZW5lcmF0ZWRQaXBlbGluZU1lc3NhZ2UnLCB7XG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuR2VuZXJhdGUuVG9waWMuTWVzc2FnZScsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgVmFsdWU6IHNmbi5Kc29uUGF0aC5mb3JtYXQoJ0FjY291bnQgOiB7fVxcblJlZ2lvbiA6IHt9XFxuUGlwZWxpbmUgOiB7fVxcblN0YXRlIDoge31cXG5UaW1lIDoge31cXG5VUkwgOiB7fVxcbicsXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5hY2NvdW50JyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5yZWdpb24nKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC50aW1lJyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5HZW5lcmF0ZS5QaXBlbGluZVVybC5WYWx1ZScpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBnZW5lcmF0ZVRvcGljU3ViamVjdC5uZXh0KGdlbmVyYXRlVG9waWNUZXh0TWVzc2FnZSk7XG5cbiAgICAgICAgLy8g8J+RhyBDaG9pY2Ugc3RhdGUgZm9yIG1lc3NhZ2VcbiAgICAgICAgY29uc3QgY2hlY2tQaXBlbGluZVN0YXRlTWF0Y2g6IHNmbi5DaG9pY2UgPSBuZXcgc2ZuLkNob2ljZShzY29wZSwgJ0NoZWNrUGlwZWxpbmVTdGF0ZU1hdGNoJylcbiAgICAgICAgICAud2hlbihcbiAgICAgICAgICAgIHNmbi5Db25kaXRpb24ub3IoXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLmV2ZW50LmRldGFpbC5zdGF0ZScsICdTVEFSVEVEJyksXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLmV2ZW50LmRldGFpbC5zdGF0ZScsICdTVUNDRUVERUQnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ1JFU1VNRUQnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ0ZBSUxFRCcpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5ldmVudC5kZXRhaWwuc3RhdGUnLCAnU1RPUFBJTkcnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ1NUT1BQRUQnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ1NVUEVSU0VERUQnKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBnZW5lcmF0ZVBpcGVsaW5lVXJsLFxuICAgICAgICAgIClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBzZm4uUGFzcyhzY29wZSwgJ1VuTWF0Y2hTdGF0dXMnKSk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tGb3VuZFRhZ01hdGNoID0gbmV3IHNmbi5DaG9pY2Uoc2NvcGUsICdDaGVja0ZvdW5kVGFnTWF0Y2gnKVxuICAgICAgICAgIC53aGVuKHNmbi5Db25kaXRpb24uYm9vbGVhbkVxdWFscygnJC5SZXN1bHQuVGFnRmlsdGVyQXJuc0NvbnRhaW4uSXMnLCB0cnVlKSwgY2hlY2tQaXBlbGluZVN0YXRlTWF0Y2gpXG4gICAgICAgICAgLm90aGVyd2lzZShuZXcgc2ZuLlBhc3Moc2NvcGUsICdVbk1hdGNoUGlwZWxpbmVUYWdGaWx0ZXInKSk7XG5cbiAgICAgICAgY2hlY2tUYWdGaWx0ZXJBcm5zQ29udGFpbi5uZXh0KGNoZWNrRm91bmRUYWdNYXRjaCk7XG5cbiAgICAgICAgLy8g8J+RhyBTZW5kIG5vdGlmaWNhdGlvbiB0YXNrXG4gICAgICAgIGNvbnN0IHNlbmROb3RpZmljYXRpb246IHRhc2tzLlNuc1B1Ymxpc2ggPSBuZXcgdGFza3MuU25zUHVibGlzaChzY29wZSwgJ1NlbmROb3RpZmljYXRpb24nLCB7XG4gICAgICAgICAgdG9waWM6IHByb3BzLm5vdGlmaWNhdGlvblRvcGljLFxuICAgICAgICAgIHN1YmplY3Q6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5HZW5lcmF0ZS5Ub3BpYy5TdWJqZWN0LlZhbHVlJyksXG4gICAgICAgICAgbWVzc2FnZTogc2ZuLlRhc2tJbnB1dC5mcm9tSnNvblBhdGhBdCgnJC5HZW5lcmF0ZS5Ub3BpYy5NZXNzYWdlLlZhbHVlJyksXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuc25zUmVzdWx0JyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ2VuZXJhdGVUb3BpY1RleHRNZXNzYWdlLm5leHQoc2VuZE5vdGlmaWNhdGlvbik7XG5cbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbi5uZXh0KHN1Y2NlZWQpO1xuICAgICAgICByZXR1cm4gc2ZuLkRlZmluaXRpb25Cb2R5LmZyb21DaGFpbmFibGUoaW5pdFBpcGVsaW5lU3RhdGVFbW9qaXNEZWZpbml0aW9uKTtcblxuICAgICAgfSkoKSxcbiAgICB9KTtcbiAgfVxufSJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXN0YXRlLW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzb3VyY2VzL25vdGlmaWNhdGlvbi1zdGF0ZS1tYWNoaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQyxxREFBcUQ7QUFDckQsNkRBQTZEO0FBTzdELE1BQWEsd0JBQXlCLFNBQVEsR0FBRyxDQUFDLFlBQVk7SUFDNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQztRQUM1RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLGNBQWMsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFFcEIsaUJBQWlCO2dCQUNqQixNQUFNLE9BQU8sR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBRXhDLE1BQU0sY0FBYyxHQUFhLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7b0JBQ3JFLFVBQVUsRUFBRSxjQUFjO29CQUMxQixVQUFVLEVBQUU7d0JBQ1YsV0FBVyxFQUFFOzRCQUNYLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUNoQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDbEMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ2hDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUMvQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTs0QkFDakMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQ2hDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFB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QUNGLDBCQUEwQixFQUFFLElBQUk7b0JBQ2hDLFVBQVUsRUFBRSxhQUFhO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUV2QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFMUQsQ0FBQyxDQUFDLEVBQUU7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF4TUQsNERBd01DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBzZm4gZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMnO1xuaW1wb3J0ICogYXMgdGFza3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uU3RhdGVNYWNoaW5lUHJvcHMgZXh0ZW5kcyBzZm4uU3RhdGVNYWNoaW5lUHJvcHMge1xuICBub3RpZmljYXRpb25Ub3BpYzogc25zLklUb3BpYztcbn1cblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblN0YXRlTWFjaGluZSBleHRlbmRzIHNmbi5TdGF0ZU1hY2hpbmUge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTm90aWZpY2F0aW9uU3RhdGVNYWNoaW5lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGVmaW5pdGlvbkJvZHk6ICgoKSA9PiB7XG5cbiAgICAgICAgLy8g8J+RhyBHZXQgQWNjb3VudFxuICAgICAgICBjb25zdCBhY2NvdW50ID0gU3RhY2sub2Yoc2NvcGUpLmFjY291bnQ7XG5cbiAgICAgICAgY29uc3QgaW5pdERlZmluaXRpb246IHNmbi5QYXNzID0gbmV3IHNmbi5QYXNzKHNjb3BlLCAnSW5pdERlZmluaXRpb24nLCB7XG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuRGVmaW5pdGlvbicsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgU3RhdGVFbW9qaXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAnU1RBUlRFRCcsIGVtb2ppOiAn8J+lsycgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnU1VDQ0VFREVEJywgZW1vamk6ICfwn6SpJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdSRVNVTUVEJywgZW1vamk6ICfwn6SUJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdGQUlMRUQnLCBlbW9qaTogJ/CfmKsnIH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ1NUT1BQSU5HJywgZW1vamk6ICfwn5iuJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdTVE9QUEVEJywgZW1vamk6ICfwn5iMJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdTVVBFUlNFREVEJywgZW1vamk6ICfwn6eQJyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFN0YXRlQ29sb3JzOiBbXG4gICAgICAgICAgICAgIHsgbmFtZTogJ1NUQVJURUQnLCBjb2xvcjogJyMwMGJmZmYnIH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ1NVQ0NFRURFRCcsIGNvbG9yOiAnIzM2YTY0ZicgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnUkVTVU1FRCcsIGNvbG9yOiAnIzg3Y2VmYScgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnRkFJTEVEJywgY29sb3I6ICcjZmYwMDAwJyB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdTVE9QUElORycsIGNvbG9yOiAnI2ZmZmYwMCcgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnU1RPUFBFRCcsIGNvbG9yOiAnI2ZmZDcwMCcgfSxcbiAgICAgICAgICAgICAgeyBuYW1lOiAnU1VQRVJTRURFRCcsIGNvbG9yOiAnI2ZmYTUwMCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3VjY2VlZDogc2ZuLlN1Y2NlZWQgPSBuZXcgc2ZuLlN1Y2NlZWQoc2NvcGUsICdTdWNjZWVkJyk7XG5cbiAgICAgICAgLy8gZGVzY3JpYmUgcGlwZWxpbmVcbiAgICAgICAgY29uc3QgZ2V0UGlwZWxpbmUgPSBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2Uoc2NvcGUsICdHZXRQaXBlbGluZScsIHtcbiAgICAgICAgICBpYW1SZXNvdXJjZXM6IFtgYXJuOmF3czpjb2RlcGlwZWxpbmU6Kjoke2FjY291bnR9OipgXSxcbiAgICAgICAgICBzZXJ2aWNlOiAnY29kZXBpcGVsaW5lJyxcbiAgICAgICAgICBhY3Rpb246ICdnZXRQaXBlbGluZScsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgTmFtZTogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LlBpcGVsaW5lJyxcbiAgICAgICAgICByZXN1bHRTZWxlY3Rvcjoge1xuICAgICAgICAgICAgQXJuOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuTWV0YWRhdGEuUGlwZWxpbmVBcm4nKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaW5pdERlZmluaXRpb24ubmV4dChnZXRQaXBlbGluZSk7XG5cbiAgICAgICAgLy8g8J+RhyBHZXQgUmVzb3VyY2VzIGZyb20gcmVzb3VyY2UgYXJuIGxpc3RcbiAgICAgICAgY29uc3QgZ2V0UmVzb3VyY2VUYWdNYXBwaW5nTGlzdDogdGFza3MuQ2FsbEF3c1NlcnZpY2UgPSBuZXcgdGFza3MuQ2FsbEF3c1NlcnZpY2Uoc2NvcGUsICdHZXRSZXNvdXJjZVRhZ01hcHBpbmdMaXN0Jywge1xuICAgICAgICAgIHNlcnZpY2U6ICdyZXNvdXJjZWdyb3Vwc3RhZ2dpbmdhcGknLFxuICAgICAgICAgIGFjdGlvbjogJ2dldFJlc291cmNlcycsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgLy8gUmVzb3VyY2VBUk5MaXN0OiBzZm4uSnNvblBhdGgubGlzdEF0KCckLnJlc291cmNlcycpLFxuICAgICAgICAgICAgUmVzb3VyY2VUeXBlRmlsdGVyczogWydjb2RlcGlwZWxpbmU6cGlwZWxpbmUnXSwgLy8gUmVzb3VyY2VUeXBlRmlsdGVycyBpcyBub3QgYWxsb3dlZCB3aGVuIHByb3ZpZGluZyBhIFJlc291cmNlQVJOTGlzdFxuICAgICAgICAgICAgVGFnRmlsdGVyczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgS2V5OiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQucGFyYW1zLnRhZ0tleScpLFxuICAgICAgICAgICAgICAgIFZhbHVlczogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnBhcmFtcy50YWdWYWx1ZXMnKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sIC8vIFRhZ0ZpbHRlcnMgaXMgbm90IGFsbG93ZWQgd2hlbiBwcm92aWRpbmcgYSBSZXNvdXJjZUFSTkxpc3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlhbUFjdGlvbjogJ3RhZzpHZXRSZXNvdXJjZXMnLFxuICAgICAgICAgIGlhbVJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LkdldE1hdGNoVGFnUmVzb3VyY2UnLFxuICAgICAgICAgIHJlc3VsdFNlbGVjdG9yOiB7XG4gICAgICAgICAgICBBcm5zOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuLlJlc291cmNlVGFnTWFwcGluZ0xpc3RbKl0uUmVzb3VyY2VBUk4nKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gZ2V0VGFncy5hZGRDYXRjaCgpXG4gICAgICAgIGdldFBpcGVsaW5lLm5leHQoZ2V0UmVzb3VyY2VUYWdNYXBwaW5nTGlzdCk7XG5cbiAgICAgICAgLy8g8J+RhyBJcyBpblxuICAgICAgICBjb25zdCBjaGVja1RhZ0ZpbHRlckFybnNDb250YWluOiBzZm4uUGFzcyA9IG5ldyBzZm4uUGFzcyhzY29wZSwgJ0NoZWNrVGFnRmlsdGVyQXJuc0NvbnRhaW4nLCB7XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgSXM6IHNmbi5Kc29uUGF0aC5hcnJheUNvbnRhaW5zKHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQuR2V0TWF0Y2hUYWdSZXNvdXJjZS5Bcm5zJyksIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5SZXN1bHQuUGlwZWxpbmUuQXJuJykpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzdWx0UGF0aDogJyQuUmVzdWx0LlRhZ0ZpbHRlckFybnNDb250YWluJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ2V0UmVzb3VyY2VUYWdNYXBwaW5nTGlzdC5uZXh0KGNoZWNrVGFnRmlsdGVyQXJuc0NvbnRhaW4pO1xuXG4gICAgICAgIC8vIPCfkYcgQ3JlYXRlIHBpcGVsaW5lIFVSTFxuICAgICAgICBjb25zdCBnZW5lcmF0ZVBpcGVsaW5lVXJsID0gbmV3IHNmbi5QYXNzKHNjb3BlLCAnR2VuZXJhdGVQaXBlbGluZVVybCcsIHtcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5HZW5lcmF0ZS5QaXBlbGluZVVybCcsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgVmFsdWU6IHNmbi5Kc29uUGF0aC5mb3JtYXQoJ2h0dHBzOi8ve30uY29uc29sZS5hd3MuYW1hem9uLmNvbS9jb2Rlc3VpdGUvY29kZXBpcGVsaW5lL3BpcGVsaW5lcy97fS92aWV3P3JlZ2lvbj17fScsXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5yZWdpb24nKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQucmVnaW9uJyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlTWVzc2FnZSA9IG5ldyBzZm4uUGFzcyhzY29wZSwgJ0dlbmVyYXRlTWVzc2FnZScsIHtcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5HZW5lcmF0ZS5NZXNzYWdlJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBTdWJqZWN0OiBzZm4uSnNvblBhdGguZm9ybWF0KCd7fSBbe31dIEFXUyBDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIE5vdGlmaWNhdGlvbiBbe31dW3t9XScsXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5hcnJheUdldEl0ZW0oc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLkRlZmluaXRpb24uU3RhdGVFbW9qaXNbPyhALm5hbWUgPT0gJC5ldmVudC5kZXRhaWwuc3RhdGUpXS5lbW9qaScpLCAwKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5zdGF0ZScpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuYWNjb3VudCcpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQucmVnaW9uJyksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgVGV4dEJvZHk6IHNmbi5Kc29uUGF0aC5mb3JtYXQoJ0FjY291bnQgOiB7fVxcblJlZ2lvbiA6IHt9XFxuUGlwZWxpbmUgOiB7fVxcblN0YXRlIDoge31cXG5UaW1lIDoge31cXG5VUkwgOiB7fVxcbicsXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5hY2NvdW50JyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5yZWdpb24nKSxcbiAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC50aW1lJyksXG4gICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5HZW5lcmF0ZS5QaXBlbGluZVVybC5WYWx1ZScpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFNsYWNrSnNvbkJvZHk6IHtcbiAgICAgICAgICAgICAgYXR0YWNobWVudHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogc2ZuLkpzb25QYXRoLmFycmF5R2V0SXRlbShzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuRGVmaW5pdGlvbi5TdGF0ZUNvbG9yc1s/KEAubmFtZSA9PSAkLmV2ZW50LmRldGFpbC5zdGF0ZSldLmNvbG9yJyksIDApLFxuICAgICAgICAgICAgICAgICAgLy8gcHJldGV4dDogc2ZuLkpzb25QYXRoLmZvcm1hdCgn8J+YtCBTdWNjZXNzZnVsbHkgc3RvcHBlZCB0aGUgYXV0b21hdGljYWxseSBydW5uaW5nIFJEUyB7fSB7fS4nLFxuICAgICAgICAgICAgICAgICAgcHJldGV4dDogc2ZuLkpzb25QYXRoLmZvcm1hdCgne30gUGlwZWxpbmUge30gc3RhdGUgY2hhbmdlZCB0byB7fScsXG4gICAgICAgICAgICAgICAgICAgIHNmbi5Kc29uUGF0aC5hcnJheUdldEl0ZW0oc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLkRlZmluaXRpb24uU3RhdGVFbW9qaXNbPyhALm5hbWUgPT0gJC5ldmVudC5kZXRhaWwuc3RhdGUpXS5lbW9qaScpLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgICAgICAgICAgICBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJyksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FjY291bnQnLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQuYWNjb3VudCcpLFxuICAgICAgICAgICAgICAgICAgICAgIHNob3J0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdSZWdpb24nLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuZXZlbnQucmVnaW9uJyksXG4gICAgICAgICAgICAgICAgICAgICAgc2hvcnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ1BpcGVsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLmV2ZW50LmRldGFpbC5waXBlbGluZScpLFxuICAgICAgICAgICAgICAgICAgICAgIHNob3J0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdTdGF0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC5kZXRhaWwuc3RhdGUnKSxcbiAgICAgICAgICAgICAgICAgICAgICBzaG9ydDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnVGltZScsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5ldmVudC50aW1lJyksXG4gICAgICAgICAgICAgICAgICAgICAgc2hvcnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBnZW5lcmF0ZVBpcGVsaW5lVXJsLm5leHQoZ2VuZXJhdGVNZXNzYWdlKTtcblxuICAgICAgICAvLyDwn5GHIENob2ljZSBzdGF0ZSBmb3IgbWVzc2FnZVxuICAgICAgICBjb25zdCBjaGVja1BpcGVsaW5lU3RhdGVNYXRjaDogc2ZuLkNob2ljZSA9IG5ldyBzZm4uQ2hvaWNlKHNjb3BlLCAnQ2hlY2tQaXBlbGluZVN0YXRlTWF0Y2gnKVxuICAgICAgICAgIC53aGVuKFxuICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5vcihcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ1NUQVJURUQnKSxcbiAgICAgICAgICAgICAgc2ZuLkNvbmRpdGlvbi5zdHJpbmdFcXVhbHMoJyQuZXZlbnQuZGV0YWlsLnN0YXRlJywgJ1NVQ0NFRURFRCcpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5ldmVudC5kZXRhaWwuc3RhdGUnLCAnUkVTVU1FRCcpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5ldmVudC5kZXRhaWwuc3RhdGUnLCAnRkFJTEVEJyksXG4gICAgICAgICAgICAgIHNmbi5Db25kaXRpb24uc3RyaW5nRXF1YWxzKCckLmV2ZW50LmRldGFpbC5zdGF0ZScsICdTVE9QUElORycpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5ldmVudC5kZXRhaWwuc3RhdGUnLCAnU1RPUFBFRCcpLFxuICAgICAgICAgICAgICBzZm4uQ29uZGl0aW9uLnN0cmluZ0VxdWFscygnJC5ldmVudC5kZXRhaWwuc3RhdGUnLCAnU1VQRVJTRURFRCcpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdlbmVyYXRlUGlwZWxpbmVVcmwsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5vdGhlcndpc2UobmV3IHNmbi5QYXNzKHNjb3BlLCAnVW5NYXRjaFN0YXR1cycpKTtcblxuICAgICAgICBjb25zdCBjaGVja0ZvdW5kVGFnTWF0Y2ggPSBuZXcgc2ZuLkNob2ljZShzY29wZSwgJ0NoZWNrRm91bmRUYWdNYXRjaCcpXG4gICAgICAgICAgLndoZW4oc2ZuLkNvbmRpdGlvbi5ib29sZWFuRXF1YWxzKCckLlJlc3VsdC5UYWdGaWx0ZXJBcm5zQ29udGFpbi5JcycsIHRydWUpLCBjaGVja1BpcGVsaW5lU3RhdGVNYXRjaClcbiAgICAgICAgICAub3RoZXJ3aXNlKG5ldyBzZm4uUGFzcyhzY29wZSwgJ1VuTWF0Y2hQaXBlbGluZVRhZ0ZpbHRlcicpKTtcblxuICAgICAgICBjaGVja1RhZ0ZpbHRlckFybnNDb250YWluLm5leHQoY2hlY2tGb3VuZFRhZ01hdGNoKTtcblxuICAgICAgICAvLyDwn5GHIFNlbmQgbm90aWZpY2F0aW9uIHRhc2tcbiAgICAgICAgY29uc3Qgc2VuZE5vdGlmaWNhdGlvbjogdGFza3MuU25zUHVibGlzaCA9IG5ldyB0YXNrcy5TbnNQdWJsaXNoKHNjb3BlLCAnU2VuZE5vdGlmaWNhdGlvbicsIHtcbiAgICAgICAgICB0b3BpYzogcHJvcHMubm90aWZpY2F0aW9uVG9waWMsXG4gICAgICAgICAgc3ViamVjdDogc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLkdlbmVyYXRlLk1lc3NhZ2UuU3ViamVjdCcpLFxuICAgICAgICAgIG1lc3NhZ2U6IHNmbi5UYXNrSW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgICBkZWZhdWx0OiBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQuR2VuZXJhdGUuTWVzc2FnZS5UZXh0Qm9keScpLFxuICAgICAgICAgICAgZW1haWw6IHNmbi5Kc29uUGF0aC5zdHJpbmdBdCgnJC5HZW5lcmF0ZS5NZXNzYWdlLlRleHRCb2R5JyksXG4gICAgICAgICAgICBsYW1iZGE6IHNmbi5Kc29uUGF0aC5qc29uVG9TdHJpbmcoc2ZuLkpzb25QYXRoLm9iamVjdEF0KCckLkdlbmVyYXRlLk1lc3NhZ2UuU2xhY2tKc29uQm9keScpKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtZXNzYWdlUGVyU3Vic2NyaXB0aW9uVHlwZTogdHJ1ZSxcbiAgICAgICAgICByZXN1bHRQYXRoOiAnJC5zbnNSZXN1bHQnLFxuICAgICAgICB9KTtcblxuICAgICAgICBnZW5lcmF0ZU1lc3NhZ2UubmV4dChzZW5kTm90aWZpY2F0aW9uKTtcblxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uLm5leHQoc3VjY2VlZCk7XG4gICAgICAgIHJldHVybiBzZm4uRGVmaW5pdGlvbkJvZHkuZnJvbUNoYWluYWJsZShpbml0RGVmaW5pdGlvbik7XG5cbiAgICAgIH0pKCksXG4gICAgfSk7XG4gIH1cbn0iXX0=
package/package.json CHANGED
@@ -48,24 +48,26 @@
48
48
  "eslint-plugin-import": "^2.32.0",
49
49
  "jest": "^29.7.0",
50
50
  "jest-junit": "^16",
51
- "jsii": "5.8.x",
51
+ "jsii": "5.9.x",
52
52
  "jsii-diff": "^1.122.0",
53
53
  "jsii-docgen": "^10.5.0",
54
54
  "jsii-pacmak": "^1.122.0",
55
- "jsii-rosetta": "5.8.x",
55
+ "jsii-rosetta": "5.9.x",
56
56
  "projen": "^0.98.30",
57
57
  "ts-jest": "^29.4.6",
58
58
  "ts-node": "^10.9.2",
59
- "typescript": "5.8.x"
59
+ "typescript": "5.9.x"
60
60
  },
61
61
  "peerDependencies": {
62
- "@gammarers/aws-resource-naming": "^0.10.2",
62
+ "@gammarers/aws-resource-naming": "^0.10.1",
63
+ "@gammarers/aws-sns-slack-message-lambda-subscription": "^0.2.4",
63
64
  "aws-cdk-lib": "^2.189.1",
64
65
  "constructs": "^10.0.5"
65
66
  },
66
67
  "dependencies": {
67
- "@gammarers/aws-codesuite-state-change-detection-event-rules": "^2.2.5",
68
- "@gammarers/aws-resource-naming": "^0.10.2"
68
+ "@gammarers/aws-codesuite-state-change-detection-event-rules": "^2.3.6",
69
+ "@gammarers/aws-resource-naming": "^0.10.1",
70
+ "@gammarers/aws-sns-slack-message-lambda-subscription": "^0.2.4"
69
71
  },
70
72
  "keywords": [
71
73
  "aws",
@@ -82,7 +84,7 @@
82
84
  "publishConfig": {
83
85
  "access": "public"
84
86
  },
85
- "version": "2.3.31",
87
+ "version": "2.4.1",
86
88
  "jest": {
87
89
  "coverageProvider": "v8",
88
90
  "testMatch": [