eoapi-cdk 11.1.1 → 11.2.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 +83 -32
- package/lib/bastion-host/index.js +1 -1
- package/lib/database/PatchManager.d.ts +18 -0
- package/lib/database/PatchManager.js +71 -0
- package/lib/database/PgBouncer.d.ts +5 -0
- package/lib/database/PgBouncer.js +5 -3
- package/lib/database/index.d.ts +15 -1
- package/lib/database/index.js +13 -2
- package/lib/ingestor-api/index.js +1 -1
- package/lib/lambda-api-gateway/index.js +1 -1
- package/lib/lambda-api-gateway-private/index.js +1 -1
- package/lib/stac-api/index.js +2 -2
- package/lib/stac-auth-proxy/index.js +2 -2
- package/lib/stac-browser/index.js +1 -1
- package/lib/stac-loader/index.js +2 -2
- package/lib/stactools-item-generator/index.js +1 -1
- package/lib/tipg-api/index.js +2 -2
- package/lib/titiler-pgstac-api/index.js +2 -2
- package/package.json +2 -2
package/.jsii
CHANGED
|
@@ -4300,7 +4300,7 @@
|
|
|
4300
4300
|
"kind": "interface",
|
|
4301
4301
|
"locationInModule": {
|
|
4302
4302
|
"filename": "lib/database/index.ts",
|
|
4303
|
-
"line":
|
|
4303
|
+
"line": 442
|
|
4304
4304
|
},
|
|
4305
4305
|
"name": "DatabaseParameters",
|
|
4306
4306
|
"properties": [
|
|
@@ -4313,7 +4313,7 @@
|
|
|
4313
4313
|
"immutable": true,
|
|
4314
4314
|
"locationInModule": {
|
|
4315
4315
|
"filename": "lib/database/index.ts",
|
|
4316
|
-
"line":
|
|
4316
|
+
"line": 458
|
|
4317
4317
|
},
|
|
4318
4318
|
"name": "effectiveCacheSize",
|
|
4319
4319
|
"type": {
|
|
@@ -4329,7 +4329,7 @@
|
|
|
4329
4329
|
"immutable": true,
|
|
4330
4330
|
"locationInModule": {
|
|
4331
4331
|
"filename": "lib/database/index.ts",
|
|
4332
|
-
"line":
|
|
4332
|
+
"line": 468
|
|
4333
4333
|
},
|
|
4334
4334
|
"name": "maintenanceWorkMem",
|
|
4335
4335
|
"type": {
|
|
@@ -4345,7 +4345,7 @@
|
|
|
4345
4345
|
"immutable": true,
|
|
4346
4346
|
"locationInModule": {
|
|
4347
4347
|
"filename": "lib/database/index.ts",
|
|
4348
|
-
"line":
|
|
4348
|
+
"line": 446
|
|
4349
4349
|
},
|
|
4350
4350
|
"name": "maxConnections",
|
|
4351
4351
|
"type": {
|
|
@@ -4361,7 +4361,7 @@
|
|
|
4361
4361
|
"immutable": true,
|
|
4362
4362
|
"locationInModule": {
|
|
4363
4363
|
"filename": "lib/database/index.ts",
|
|
4364
|
-
"line":
|
|
4364
|
+
"line": 473
|
|
4365
4365
|
},
|
|
4366
4366
|
"name": "maxLocksPerTransaction",
|
|
4367
4367
|
"type": {
|
|
@@ -4377,7 +4377,7 @@
|
|
|
4377
4377
|
"immutable": true,
|
|
4378
4378
|
"locationInModule": {
|
|
4379
4379
|
"filename": "lib/database/index.ts",
|
|
4380
|
-
"line":
|
|
4380
|
+
"line": 488
|
|
4381
4381
|
},
|
|
4382
4382
|
"name": "randomPageCost",
|
|
4383
4383
|
"type": {
|
|
@@ -4393,7 +4393,7 @@
|
|
|
4393
4393
|
"immutable": true,
|
|
4394
4394
|
"locationInModule": {
|
|
4395
4395
|
"filename": "lib/database/index.ts",
|
|
4396
|
-
"line":
|
|
4396
|
+
"line": 483
|
|
4397
4397
|
},
|
|
4398
4398
|
"name": "seqPageCost",
|
|
4399
4399
|
"type": {
|
|
@@ -4410,7 +4410,7 @@
|
|
|
4410
4410
|
"immutable": true,
|
|
4411
4411
|
"locationInModule": {
|
|
4412
4412
|
"filename": "lib/database/index.ts",
|
|
4413
|
-
"line":
|
|
4413
|
+
"line": 453
|
|
4414
4414
|
},
|
|
4415
4415
|
"name": "sharedBuffers",
|
|
4416
4416
|
"type": {
|
|
@@ -4426,7 +4426,7 @@
|
|
|
4426
4426
|
"immutable": true,
|
|
4427
4427
|
"locationInModule": {
|
|
4428
4428
|
"filename": "lib/database/index.ts",
|
|
4429
|
-
"line":
|
|
4429
|
+
"line": 478
|
|
4430
4430
|
},
|
|
4431
4431
|
"name": "tempBuffers",
|
|
4432
4432
|
"type": {
|
|
@@ -4442,7 +4442,7 @@
|
|
|
4442
4442
|
"immutable": true,
|
|
4443
4443
|
"locationInModule": {
|
|
4444
4444
|
"filename": "lib/database/index.ts",
|
|
4445
|
-
"line":
|
|
4445
|
+
"line": 463
|
|
4446
4446
|
},
|
|
4447
4447
|
"name": "workMem",
|
|
4448
4448
|
"type": {
|
|
@@ -4988,7 +4988,7 @@
|
|
|
4988
4988
|
},
|
|
4989
4989
|
"locationInModule": {
|
|
4990
4990
|
"filename": "lib/database/index.ts",
|
|
4991
|
-
"line":
|
|
4991
|
+
"line": 131
|
|
4992
4992
|
},
|
|
4993
4993
|
"parameters": [
|
|
4994
4994
|
{
|
|
@@ -5014,7 +5014,7 @@
|
|
|
5014
5014
|
"kind": "class",
|
|
5015
5015
|
"locationInModule": {
|
|
5016
5016
|
"filename": "lib/database/index.ts",
|
|
5017
|
-
"line":
|
|
5017
|
+
"line": 119
|
|
5018
5018
|
},
|
|
5019
5019
|
"methods": [
|
|
5020
5020
|
{
|
|
@@ -5023,7 +5023,7 @@
|
|
|
5023
5023
|
},
|
|
5024
5024
|
"locationInModule": {
|
|
5025
5025
|
"filename": "lib/database/index.ts",
|
|
5026
|
-
"line":
|
|
5026
|
+
"line": 307
|
|
5027
5027
|
},
|
|
5028
5028
|
"name": "getParameters",
|
|
5029
5029
|
"parameters": [
|
|
@@ -5062,7 +5062,7 @@
|
|
|
5062
5062
|
"immutable": true,
|
|
5063
5063
|
"locationInModule": {
|
|
5064
5064
|
"filename": "lib/database/index.ts",
|
|
5065
|
-
"line":
|
|
5065
|
+
"line": 125
|
|
5066
5066
|
},
|
|
5067
5067
|
"name": "connectionTarget",
|
|
5068
5068
|
"type": {
|
|
@@ -5085,7 +5085,7 @@
|
|
|
5085
5085
|
"immutable": true,
|
|
5086
5086
|
"locationInModule": {
|
|
5087
5087
|
"filename": "lib/database/index.ts",
|
|
5088
|
-
"line":
|
|
5088
|
+
"line": 124
|
|
5089
5089
|
},
|
|
5090
5090
|
"name": "pgstacVersion",
|
|
5091
5091
|
"type": {
|
|
@@ -5099,7 +5099,7 @@
|
|
|
5099
5099
|
"immutable": true,
|
|
5100
5100
|
"locationInModule": {
|
|
5101
5101
|
"filename": "lib/database/index.ts",
|
|
5102
|
-
"line":
|
|
5102
|
+
"line": 128
|
|
5103
5103
|
},
|
|
5104
5104
|
"name": "pgbouncerHealthCheck",
|
|
5105
5105
|
"optional": true,
|
|
@@ -5114,7 +5114,22 @@
|
|
|
5114
5114
|
"immutable": true,
|
|
5115
5115
|
"locationInModule": {
|
|
5116
5116
|
"filename": "lib/database/index.ts",
|
|
5117
|
-
"line":
|
|
5117
|
+
"line": 129
|
|
5118
|
+
},
|
|
5119
|
+
"name": "pgbouncerInstanceId",
|
|
5120
|
+
"optional": true,
|
|
5121
|
+
"type": {
|
|
5122
|
+
"primitive": "string"
|
|
5123
|
+
}
|
|
5124
|
+
},
|
|
5125
|
+
{
|
|
5126
|
+
"docs": {
|
|
5127
|
+
"stability": "experimental"
|
|
5128
|
+
},
|
|
5129
|
+
"immutable": true,
|
|
5130
|
+
"locationInModule": {
|
|
5131
|
+
"filename": "lib/database/index.ts",
|
|
5132
|
+
"line": 127
|
|
5118
5133
|
},
|
|
5119
5134
|
"name": "secretBootstrapper",
|
|
5120
5135
|
"optional": true,
|
|
@@ -5129,7 +5144,7 @@
|
|
|
5129
5144
|
"immutable": true,
|
|
5130
5145
|
"locationInModule": {
|
|
5131
5146
|
"filename": "lib/database/index.ts",
|
|
5132
|
-
"line":
|
|
5147
|
+
"line": 126
|
|
5133
5148
|
},
|
|
5134
5149
|
"name": "securityGroup",
|
|
5135
5150
|
"optional": true,
|
|
@@ -5143,7 +5158,7 @@
|
|
|
5143
5158
|
},
|
|
5144
5159
|
"locationInModule": {
|
|
5145
5160
|
"filename": "lib/database/index.ts",
|
|
5146
|
-
"line":
|
|
5161
|
+
"line": 120
|
|
5147
5162
|
},
|
|
5148
5163
|
"name": "db",
|
|
5149
5164
|
"type": {
|
|
@@ -5156,7 +5171,7 @@
|
|
|
5156
5171
|
},
|
|
5157
5172
|
"locationInModule": {
|
|
5158
5173
|
"filename": "lib/database/index.ts",
|
|
5159
|
-
"line":
|
|
5174
|
+
"line": 121
|
|
5160
5175
|
},
|
|
5161
5176
|
"name": "pgstacSecret",
|
|
5162
5177
|
"type": {
|
|
@@ -5179,10 +5194,28 @@
|
|
|
5179
5194
|
"kind": "interface",
|
|
5180
5195
|
"locationInModule": {
|
|
5181
5196
|
"filename": "lib/database/index.ts",
|
|
5182
|
-
"line":
|
|
5197
|
+
"line": 347
|
|
5183
5198
|
},
|
|
5184
5199
|
"name": "PgStacDatabaseProps",
|
|
5185
5200
|
"properties": [
|
|
5201
|
+
{
|
|
5202
|
+
"abstract": true,
|
|
5203
|
+
"docs": {
|
|
5204
|
+
"default": "true",
|
|
5205
|
+
"stability": "experimental",
|
|
5206
|
+
"summary": "Add patching system using AWS SSM for pgbouncer instance maintenance `addPgbouncer` must be true for this to have an effect."
|
|
5207
|
+
},
|
|
5208
|
+
"immutable": true,
|
|
5209
|
+
"locationInModule": {
|
|
5210
|
+
"filename": "lib/database/index.ts",
|
|
5211
|
+
"line": 396
|
|
5212
|
+
},
|
|
5213
|
+
"name": "addPatchManager",
|
|
5214
|
+
"optional": true,
|
|
5215
|
+
"type": {
|
|
5216
|
+
"primitive": "boolean"
|
|
5217
|
+
}
|
|
5218
|
+
},
|
|
5186
5219
|
{
|
|
5187
5220
|
"abstract": true,
|
|
5188
5221
|
"docs": {
|
|
@@ -5193,7 +5226,7 @@
|
|
|
5193
5226
|
"immutable": true,
|
|
5194
5227
|
"locationInModule": {
|
|
5195
5228
|
"filename": "lib/database/index.ts",
|
|
5196
|
-
"line":
|
|
5229
|
+
"line": 381
|
|
5197
5230
|
},
|
|
5198
5231
|
"name": "addPgbouncer",
|
|
5199
5232
|
"optional": true,
|
|
@@ -5211,7 +5244,7 @@
|
|
|
5211
5244
|
"immutable": true,
|
|
5212
5245
|
"locationInModule": {
|
|
5213
5246
|
"filename": "lib/database/index.ts",
|
|
5214
|
-
"line":
|
|
5247
|
+
"line": 420
|
|
5215
5248
|
},
|
|
5216
5249
|
"name": "bootstrapperLambdaFunctionOptions",
|
|
5217
5250
|
"optional": true,
|
|
@@ -5229,7 +5262,7 @@
|
|
|
5229
5262
|
"immutable": true,
|
|
5230
5263
|
"locationInModule": {
|
|
5231
5264
|
"filename": "lib/database/index.ts",
|
|
5232
|
-
"line":
|
|
5265
|
+
"line": 411
|
|
5233
5266
|
},
|
|
5234
5267
|
"name": "customResourceProperties",
|
|
5235
5268
|
"optional": true,
|
|
@@ -5253,7 +5286,7 @@
|
|
|
5253
5286
|
"immutable": true,
|
|
5254
5287
|
"locationInModule": {
|
|
5255
5288
|
"filename": "lib/database/index.ts",
|
|
5256
|
-
"line":
|
|
5289
|
+
"line": 439
|
|
5257
5290
|
},
|
|
5258
5291
|
"name": "forceBootstrap",
|
|
5259
5292
|
"optional": true,
|
|
@@ -5261,6 +5294,24 @@
|
|
|
5261
5294
|
"primitive": "boolean"
|
|
5262
5295
|
}
|
|
5263
5296
|
},
|
|
5297
|
+
{
|
|
5298
|
+
"abstract": true,
|
|
5299
|
+
"docs": {
|
|
5300
|
+
"default": "- A new maintenance window will be created, defined in construct",
|
|
5301
|
+
"stability": "experimental",
|
|
5302
|
+
"summary": "Custom maintenance window for patching."
|
|
5303
|
+
},
|
|
5304
|
+
"immutable": true,
|
|
5305
|
+
"locationInModule": {
|
|
5306
|
+
"filename": "lib/database/index.ts",
|
|
5307
|
+
"line": 403
|
|
5308
|
+
},
|
|
5309
|
+
"name": "maintenanceWindow",
|
|
5310
|
+
"optional": true,
|
|
5311
|
+
"type": {
|
|
5312
|
+
"fqn": "aws-cdk-lib.aws_ssm.CfnMaintenanceWindow"
|
|
5313
|
+
}
|
|
5314
|
+
},
|
|
5264
5315
|
{
|
|
5265
5316
|
"abstract": true,
|
|
5266
5317
|
"docs": {
|
|
@@ -5271,7 +5322,7 @@
|
|
|
5271
5322
|
"immutable": true,
|
|
5272
5323
|
"locationInModule": {
|
|
5273
5324
|
"filename": "lib/database/index.ts",
|
|
5274
|
-
"line":
|
|
5325
|
+
"line": 388
|
|
5275
5326
|
},
|
|
5276
5327
|
"name": "pgbouncerInstanceProps",
|
|
5277
5328
|
"optional": true,
|
|
@@ -5289,7 +5340,7 @@
|
|
|
5289
5340
|
"immutable": true,
|
|
5290
5341
|
"locationInModule": {
|
|
5291
5342
|
"filename": "lib/database/index.ts",
|
|
5292
|
-
"line":
|
|
5343
|
+
"line": 353
|
|
5293
5344
|
},
|
|
5294
5345
|
"name": "pgstacDbName",
|
|
5295
5346
|
"optional": true,
|
|
@@ -5307,7 +5358,7 @@
|
|
|
5307
5358
|
"immutable": true,
|
|
5308
5359
|
"locationInModule": {
|
|
5309
5360
|
"filename": "lib/database/index.ts",
|
|
5310
|
-
"line":
|
|
5361
|
+
"line": 374
|
|
5311
5362
|
},
|
|
5312
5363
|
"name": "pgstacUsername",
|
|
5313
5364
|
"optional": true,
|
|
@@ -5325,7 +5376,7 @@
|
|
|
5325
5376
|
"immutable": true,
|
|
5326
5377
|
"locationInModule": {
|
|
5327
5378
|
"filename": "lib/database/index.ts",
|
|
5328
|
-
"line":
|
|
5379
|
+
"line": 360
|
|
5329
5380
|
},
|
|
5330
5381
|
"name": "pgstacVersion",
|
|
5331
5382
|
"optional": true,
|
|
@@ -5343,7 +5394,7 @@
|
|
|
5343
5394
|
"immutable": true,
|
|
5344
5395
|
"locationInModule": {
|
|
5345
5396
|
"filename": "lib/database/index.ts",
|
|
5346
|
-
"line":
|
|
5397
|
+
"line": 367
|
|
5347
5398
|
},
|
|
5348
5399
|
"name": "secretsPrefix",
|
|
5349
5400
|
"optional": true,
|
|
@@ -7929,6 +7980,6 @@
|
|
|
7929
7980
|
"symbolId": "lib/titiler-pgstac-api/index:TitilerPgstacApiLambdaRuntimeProps"
|
|
7930
7981
|
}
|
|
7931
7982
|
},
|
|
7932
|
-
"version": "11.
|
|
7933
|
-
"fingerprint": "
|
|
7983
|
+
"version": "11.2.0",
|
|
7984
|
+
"fingerprint": "JuwPzjBJm9a2qm2mtbn1VcIh2bNOUOkdLb5kF9v932s="
|
|
7934
7985
|
}
|
|
@@ -158,5 +158,5 @@ class BastionHost extends constructs_1.Construct {
|
|
|
158
158
|
}
|
|
159
159
|
exports.BastionHost = BastionHost;
|
|
160
160
|
_a = JSII_RTTI_SYMBOL_1;
|
|
161
|
-
BastionHost[_a] = { fqn: "eoapi-cdk.BastionHost", version: "11.
|
|
161
|
+
BastionHost[_a] = { fqn: "eoapi-cdk.BastionHost", version: "11.2.0" };
|
|
162
162
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQU1xQjtBQUNyQiwyQ0FBdUM7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpR0c7QUFDSCxNQUFhLFdBQVksU0FBUSxzQkFBUztJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUscUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2pELFlBQVksRUFBRSxHQUFHLFNBQVMsZUFBZTtZQUN6QyxZQUFZLEVBQUUscUJBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixxQkFBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFDckMscUJBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QjtZQUNELFlBQVksRUFBRSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLHFCQUFHLENBQUMscUJBQXFCLENBQUMsY0FBYztnQkFDcEQsT0FBTyxFQUFFLHFCQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTTthQUN2QyxDQUFDO1lBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLHFCQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7Z0JBQ3BDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDMUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQy9CLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDdEMscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNsQixvQ0FBb0MsQ0FDckMsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ2pDLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDbkIscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQ2pDLFlBQVksQ0FDYixDQUFDO1FBQ0osQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZiwrQkFBK0I7Z0JBQy9CLGVBQWU7YUFDaEI7WUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDakIsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7WUFDL0IsVUFBVSxFQUFFLEdBQUcsU0FBUyxjQUFjO1NBQ3ZDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUU7WUFDL0MsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1lBQ3JDLFVBQVUsRUFBRSxHQUFHLFNBQVMscUJBQXFCO1NBQzlDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUU7WUFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCO1lBQzFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsa0JBQWtCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekVILGtDQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19yZHMgYXMgcmRzLFxuICBDZm5PdXRwdXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9jYXRlZCBpbiBhbiBpc29sYXRlZCBzdWJuZXQsIG1lYW5pbmcgdGhhdCBpdCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBwdWJsaWMgaW50ZXJuZXQuIEFzIHN1Y2gsIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGRpcmVjdGx5LCBhIHVzZXIgbXVzdCB0dW5uZWwgdGhyb3VnaCBhIGJhc3Rpb24gaG9zdC5cbiAqXG4gKiAjIyMgQ29uZmlndXJpbmdcbiAqXG4gKiBUaGlzIGNvZGViYXNlIGNvbnRyb2xzIF93aG9fIGlzIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgYmFzdGlvbiBob3N0LiBUaGlzIHJlcXVpcmVzIHR3byBzdGVwczpcbiAqXG4gKiAxLiBBZGRpbmcgdGhlIElQIGFkZHJlc3MgZnJvbSB3aGljaCB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gdGhlIGBpcHY0QWxsb3dsaXN0YCBhcnJheVxuICogMS4gQ3JlYXRpbmcgYSBiYXN0aW9uIGhvc3Qgc3lzdGVtIHVzZXIgYnkgYWRkaW5nIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBpbmZvcm0gdG8gYHVzZXJkYXRhLnlhbWxgXG4gKlxuICogIyMjIyBBZGRpbmcgYW4gSVAgYWRkcmVzcyB0byB0aGUgYGlwdjRBbGxvd2xpc3RgIGFycmF5XG4gKlxuICogVGhlIGBCYXN0aW9uSG9zdGAgY29uc3RydWN0IHRha2VzIGluIGFuIGBpcHY0QWxsb3dsaXN0YCBhcnJheSBhcyBhbiBhcmd1bWVudC4gRmluZCB5b3VyIElQIGFkZHJlc3MgKGVnIGBjdXJsIGFwaS5pcGlmeS5vcmdgKSBhbmQgYWRkIHRoYXQgdG8gdGhlIGFycmF5IGFsb25nIHdpdGggdGhlIHRyYWlsaW5nIENJRFIgYmxvY2sgKGxpa2VseSBgLzMyYCB0byBpbmRpY2F0ZSB0aGF0IHlvdSBhcmUgYWRkaW5nIGEgc2luZ2xlIElQIGFkZHJlc3MpLlxuICpcbiAqICMjIyMgQ3JlYXRpbmcgYSB1c2VyIHZpYSBgdXNlcmRhdGEueWFtbGBcbiAqXG4gKiBBZGQgYW4gZW50cnkgdG8gdGhlIGB1c2Vyc2AgYXJyYXkgd2l0aCBhIHVzZXJuYW1lIChsaWtlbHkgbWF0Y2hpbmcgeW91ciBsb2NhbCBzeXN0ZW1zIHVzZXJuYW1lLCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIHRoZSBgd2hvYW1pYCBjb21tYW5kIGluIHlvdXIgdGVybWluYWwpIGFuZCBhIHB1YmxpYyBrZXkgKGxpa2VseSB5b3VyIGRlZmF1bHQgcHVibGljIGtleSwgd2hpY2ggeW91IGNhbiBnZXQgYnkgcnVubmluZyBgY2F0IH4vLnNzaC9pZF8qLnB1YmAgaW4geW91ciB0ZXJtaW5hbCkuXG4gKlxuICogIyMjIyBUaXBzICYgVHJpY2tzIHdoZW4gdXNpbmcgdGhlIEJhc3Rpb24gSG9zdFxuICpcbiAqICoqQ29ubmVjdGluZyB0byBSRFMgSW5zdGFuY2UgdmlhIFNTTSoqXG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgXFxcbiAqIC0tZG9jdW1lbnQtbmFtZSBBV1MtU3RhcnRQb3J0Rm9yd2FyZGluZ1Nlc3Npb25Ub1JlbW90ZUhvc3QgXFxcbiAqIC0tcGFyYW1ldGVycyAne1xuICogXCJob3N0XCI6IFtcbiAqIFwiZXhhbXBsZS1kYi5jNWFiY2RlZmdoaWoudXMtd2VzdC0yLnJkcy5hbWF6b25hd3MuY29tXCJcbiAqIF0sXG4gKiBcInBvcnROdW1iZXJcIjogW1xuICogXCI1NDMyXCJcbiAqIF0sXG4gKiBcImxvY2FsUG9ydE51bWJlclwiOiBbXG4gKiBcIjk5OTlcIlxuICogXVxuICogfScgXFxcbiAqIC0tcHJvZmlsZSAkQVdTX1BST0ZJTEVcbiAqIGBgYFxuICpcbiAqIGBgYHNoXG4gKiBwc3FsIC1oIGxvY2FsaG9zdCAtcCA5OTk5ICMgY29udGludWUgYWRkaW5nIHVzZXJuYW1lICgtVSkgYW5kIGRiICgtZCkgaGVyZS4uLlxuICogYGBgXG4gKlxuICogQ29ubmVjdCBkaXJlY3RseSB0byBCYXN0aW9uIEhvc3Q6XG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgLS1wcm9maWxlICRBV1NfUFJPRklMRVxuICogYGBgXG4gKlxuICogKipTZXR0aW5nIHVwIGFuIFNTSCB0dW5uZWwqKlxuICpcbiAqIEluIHlvdXIgYH4vLnNzaC9jb25maWdgIGZpbGUsIGFkZCBhbiBlbnRyeSBsaWtlOlxuICpcbiAqIGBgYFxuICogSG9zdCBkYi10dW5uZWxcbiAqIEhvc3RuYW1lIHt0aGUtYmFzdGlvbi1ob3N0LWFkZHJlc3N9XG4gKiBMb2NhbEZvcndhcmQgOTk5OSB7dGhlLWRiLWhvc3RuYW1lfTo1NDMyXG4gKiBgYGBcbiAqXG4gKiBUaGVuIGEgdHVubmVsIGNhbiBiZSBvcGVuZWQgdmlhOlxuICpcbiAqIGBgYFxuICogc3NoIC1OIGRiLXR1bm5lbFxuICogYGBgXG4gKlxuICogQW5kIGEgY29ubmVjdGlvbiB0byB0aGUgREIgY2FuIGJlIG1hZGUgdmlhOlxuICpcbiAqIGBgYFxuICogcHNxbCAtaCAxMjcuMC4wLjEgLXAgOTk5OSAtVSB7dXNlcm5hbWV9IC1kIHtkYXRhYmFzZX1cbiAqIGBgYFxuICpcbiAqICoqSGFuZGxpbmcgYFJFTU9URSBIT1NUIElERU5USUZJQ0FUSU9OIEhBUyBDSEFOR0VEIWAgZXJyb3IqKlxuICpcbiAqIElmIHlvdSd2ZSByZWRlcGxveWVkIGEgYmFzdGlvbiBob3N0IHRoYXQgeW91J3ZlIHByZXZpb3VzbHkgY29ubmVjdGVkIHRvLCB5b3UgbWF5IHNlZSBhbiBlcnJvciBsaWtlOlxuICpcbiAqIGBgYFxuICogQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBcbiAqIEAgICAgV0FSTklORzogUkVNT1RFIEhPU1QgSURFTlRJRklDQVRJT04gSEFTIENIQU5HRUQhICAgICBAXG4gKiBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFxuICogSVQgSVMgUE9TU0lCTEUgVEhBVCBTT01FT05FIElTIERPSU5HIFNPTUVUSElORyBOQVNUWSFcbiAqIFNvbWVvbmUgY291bGQgYmUgZWF2ZXNkcm9wcGluZyBvbiB5b3UgcmlnaHQgbm93IChtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2spIVxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0IGEgaG9zdCBrZXkgaGFzIGp1c3QgYmVlbiBjaGFuZ2VkLlxuICogVGhlIGZpbmdlcnByaW50IGZvciB0aGUgRUNEU0Ega2V5IHNlbnQgYnkgdGhlIHJlbW90ZSBob3N0IGlzXG4gKiBTSEEyNTY6bVBueEFPWFRwYjA2UEZnSTFRYzhUTVEyZTliN2dvVTh5Mk5kUzVoeklyOC5cbiAqIFBsZWFzZSBjb250YWN0IHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IuXG4gKiBBZGQgY29ycmVjdCBob3N0IGtleSBpbiAvVXNlcnMvdXNlcm5hbWUvLnNzaC9rbm93bl9ob3N0cyB0byBnZXQgcmlkIG9mIHRoaXMgbWVzc2FnZS5cbiAqIE9mZmVuZGluZyBFQ0RTQSBrZXkgaW4gL1VzZXJzL3VzZXJuYW1lLy5zc2gva25vd25faG9zdHM6MjhcbiAqIEVDRFNBIGhvc3Qga2V5IGZvciBlYzItMTItMzQtNTYtNzg5LnVzLXdlc3QtMi5jb21wdXRlLmFtYXpvbmF3cy5jb20gaGFzIGNoYW5nZWQgYW5kIHlvdSBoYXZlIHJlcXVlc3RlZCBzdHJpY3QgY2hlY2tpbmcuXG4gKiBIb3N0IGtleSB2ZXJpZmljYXRpb24gZmFpbGVkLlxuICogYGBgXG4gKlxuICogVGhpcyBpcyBkdWUgdG8gdGhlIHNlcnZlcidzIGZpbmdlcnByaW50IGNoYW5naW5nLiBXZSBjYW4gc2NydWIgdGhlIGZpbmdlcnByaW50IGZyb20gb3VyIHN5c3RlbSB3aXRoIGEgY29tbWFuZCBsaWtlOlxuICpcbiAqIGBgYFxuICogc3NoLWtleWdlbiAtUiAxMi4zNC41Ni43ODlcbiAqIGBgYFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc3Rpb25Ib3N0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgaW5zdGFuY2U6IGVjMi5JbnN0YW5jZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFzdGlvbkhvc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IHN0YWNrTmFtZSB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICAvLyBCdWlsZCBlYzIgaW5zdGFuY2VcbiAgICB0aGlzLmluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcImJhc3Rpb24taG9zdFwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgICBpbnN0YW5jZU5hbWU6IGAke3N0YWNrTmFtZX0gYmFzdGlvbiBob3N0YCxcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5OQU5PXG4gICAgICApLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4KHtcbiAgICAgICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgICB9KSxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YSxcbiAgICAgIHVzZXJEYXRhQ2F1c2VzUmVwbGFjZW1lbnQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBc3NpZ24gZWxhc3RpYyBJUFxuICAgIGlmIChwcm9wcy5jcmVhdGVFbGFzdGljSXAgPz8gdHJ1ZSkge1xuICAgICAgbmV3IGVjMi5DZm5FSVAodGhpcywgXCJJUFwiLCB7XG4gICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgdGFnczogW3sga2V5OiBcIk5hbWVcIiwgdmFsdWU6IHN0YWNrTmFtZSB9XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFsbG93IGJhc3Rpb24gaG9zdCB0byBjb25uZWN0IHRvIGRiXG4gICAgdGhpcy5pbnN0YW5jZS5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgcHJvcHMuZGIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICBlYzIuUG9ydC50Y3AoNTQzMiksXG4gICAgICBcIkFsbG93IGNvbm5lY3Rpb24gZnJvbSBiYXN0aW9uIGhvc3RcIlxuICAgICk7XG5cbiAgICAvLyBBbGxvdyBJUCBhY2Nlc3MgdG8gYmFzdGlvbiBob3N0XG4gICAgZm9yIChjb25zdCBpcHY0IG9mIHByb3BzLmlwdjRBbGxvd2xpc3QpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgICBlYzIuUGVlci5pcHY0KGlwdjQpLFxuICAgICAgICBlYzIuUG9ydC50Y3AocHJvcHMuc3NoUG9ydCB8fCAyMiksXG4gICAgICAgIFwiU1NIIEFjY2Vzc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEludGVncmF0ZSB3aXRoIFNTTVxuICAgIHRoaXMuaW5zdGFuY2UuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJzc21tZXNzYWdlczoqXCIsXG4gICAgICAgICAgXCJzc206VXBkYXRlSW5zdGFuY2VJbmZvcm1hdGlvblwiLFxuICAgICAgICAgIFwiZWMybWVzc2FnZXM6KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtaWQtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtzdGFja05hbWV9LWluc3RhbmNlLWlkYCxcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtcHVibGljLWlwLW91dHB1dFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0lwLFxuICAgICAgZXhwb3J0TmFtZTogYCR7c3RhY2tOYW1lfS1pbnN0YW5jZS1wdWJsaWMtaXBgLFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJpbnN0YW5jZS1wdWJsaWMtZG5zLW5hbWUtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3N0YWNrTmFtZX0tcHVibGljLWRucy1uYW1lYCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc3Rpb25Ib3N0UHJvcHMge1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBkYjogcmRzLklEYXRhYmFzZUluc3RhbmNlO1xuICByZWFkb25seSB1c2VyRGF0YTogZWMyLlVzZXJEYXRhO1xuICByZWFkb25seSBpcHY0QWxsb3dsaXN0OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgc3NoUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gZWxhc3RpYyBJUCBzaG91bGQgYmUgY3JlYXRlZCBmb3IgdGhlIGJhc3Rpb24gaG9zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUVsYXN0aWNJcD86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as ssm from 'aws-cdk-lib/aws-ssm';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
export interface PatchManagerProps {
|
|
4
|
+
/**
|
|
5
|
+
* The EC2 instance ID to apply patches
|
|
6
|
+
*/
|
|
7
|
+
instanceId: string;
|
|
8
|
+
/**
|
|
9
|
+
* Custom maintenance window
|
|
10
|
+
*
|
|
11
|
+
* @default - New maintenance window
|
|
12
|
+
* schedule: Sundays at 07:00 UTC, duration: 3 hours, cutoff: 1 hour
|
|
13
|
+
*/
|
|
14
|
+
maintenanceWindow?: ssm.CfnMaintenanceWindow;
|
|
15
|
+
}
|
|
16
|
+
export declare class PatchManager extends Construct {
|
|
17
|
+
constructor(scope: Construct, id: string, props?: PatchManagerProps);
|
|
18
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PatchManager = void 0;
|
|
4
|
+
const ssm = require("aws-cdk-lib/aws-ssm");
|
|
5
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
class PatchManager extends constructs_1.Construct {
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
// IAM role used by the maintenance window
|
|
11
|
+
const maintenanceRole = new iam.Role(this, 'MaintenanceWindowRole', {
|
|
12
|
+
assumedBy: new iam.ServicePrincipal('ssm.amazonaws.com'),
|
|
13
|
+
});
|
|
14
|
+
maintenanceRole.addToPolicy(new iam.PolicyStatement({
|
|
15
|
+
actions: [
|
|
16
|
+
'ssm:SendCommand',
|
|
17
|
+
'ssm:ListCommands',
|
|
18
|
+
'ssm:ListCommandInvocations',
|
|
19
|
+
],
|
|
20
|
+
resources: ['*'],
|
|
21
|
+
}));
|
|
22
|
+
// Maintenance Window
|
|
23
|
+
const maintenanceWindow = props?.maintenanceWindow ?? new ssm.CfnMaintenanceWindow(this, 'PatchMaintenanceWindow', {
|
|
24
|
+
name: 'patch-maintenance-window',
|
|
25
|
+
description: 'Weekly patching using AWS default patch baseline',
|
|
26
|
+
schedule: 'cron(0 7 ? * SUN *)', // Sundays 07:00 UTC
|
|
27
|
+
duration: 3,
|
|
28
|
+
cutoff: 1,
|
|
29
|
+
allowUnassociatedTargets: false,
|
|
30
|
+
});
|
|
31
|
+
// Target EC2 instance by Instance ID
|
|
32
|
+
if (!props?.instanceId) {
|
|
33
|
+
throw new Error('instanceId is required to create PatchManagerStack');
|
|
34
|
+
}
|
|
35
|
+
const target = new ssm.CfnMaintenanceWindowTarget(this, 'PatchTarget', {
|
|
36
|
+
windowId: maintenanceWindow.ref,
|
|
37
|
+
resourceType: 'INSTANCE',
|
|
38
|
+
targets: [
|
|
39
|
+
{
|
|
40
|
+
key: 'InstanceIds',
|
|
41
|
+
values: [props.instanceId],
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
// Patch task (Install)
|
|
46
|
+
new ssm.CfnMaintenanceWindowTask(this, 'PatchInstallTask', {
|
|
47
|
+
windowId: maintenanceWindow.ref,
|
|
48
|
+
taskArn: 'AWS-RunPatchBaseline',
|
|
49
|
+
taskType: 'RUN_COMMAND',
|
|
50
|
+
priority: 1,
|
|
51
|
+
maxConcurrency: '1',
|
|
52
|
+
maxErrors: '1',
|
|
53
|
+
serviceRoleArn: maintenanceRole.roleArn,
|
|
54
|
+
targets: [
|
|
55
|
+
{
|
|
56
|
+
key: 'WindowTargetIds',
|
|
57
|
+
values: [target.ref],
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
taskInvocationParameters: {
|
|
61
|
+
maintenanceWindowRunCommandParameters: {
|
|
62
|
+
parameters: {
|
|
63
|
+
Operation: ['Install'],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.PatchManager = PatchManager;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0Y2hNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGF0Y2hNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBaUJ2QyxNQUFhLFlBQWEsU0FBUSxzQkFBUztJQUN6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMENBQTBDO1FBQzFDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDbEUsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDO1NBQ3pELENBQUMsQ0FBQztRQUVILGVBQWUsQ0FBQyxXQUFXLENBQ3pCLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsaUJBQWlCO2dCQUNqQixrQkFBa0I7Z0JBQ2xCLDRCQUE0QjthQUM3QjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLHFCQUFxQjtRQUNyQixNQUFNLGlCQUFpQixHQUFHLEtBQUssRUFBRSxpQkFBaUIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FDaEYsSUFBSSxFQUNKLHdCQUF3QixFQUN4QjtZQUNFLElBQUksRUFBRSwwQkFBMEI7WUFDaEMsV0FBVyxFQUFFLGtEQUFrRDtZQUMvRCxRQUFRLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CO1lBQ3JELFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUM7WUFDVCx3QkFBd0IsRUFBRSxLQUFLO1NBQ2hDLENBQ0YsQ0FBQztRQUVGLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsMEJBQTBCLENBQy9DLElBQUksRUFDSixhQUFhLEVBQ2I7WUFDRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsR0FBRztZQUMvQixZQUFZLEVBQUUsVUFBVTtZQUN4QixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsR0FBRyxFQUFFLGFBQWE7b0JBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7aUJBQzNCO2FBQ0Y7U0FDRixDQUNGLENBQUM7UUFFRix1QkFBdUI7UUFDdkIsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ3pELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHO1lBQy9CLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsUUFBUSxFQUFFLGFBQWE7WUFDdkIsUUFBUSxFQUFFLENBQUM7WUFDWCxjQUFjLEVBQUUsR0FBRztZQUNuQixTQUFTLEVBQUUsR0FBRztZQUNkLGNBQWMsRUFBRSxlQUFlLENBQUMsT0FBTztZQUN2QyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsR0FBRyxFQUFFLGlCQUFpQjtvQkFDdEIsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDckI7YUFDRjtZQUNELHdCQUF3QixFQUFFO2dCQUN4QixxQ0FBcUMsRUFBRTtvQkFDckMsVUFBVSxFQUFFO3dCQUNWLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztxQkFDdkI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdFRCxvQ0E2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXRjaE1hbmFnZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgRUMyIGluc3RhbmNlIElEIHRvIGFwcGx5IHBhdGNoZXNcbiAgICovXG4gIGluc3RhbmNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIG1haW50ZW5hbmNlIHdpbmRvd1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5ldyBtYWludGVuYW5jZSB3aW5kb3dcbiAgICogc2NoZWR1bGU6IFN1bmRheXMgYXQgMDc6MDAgVVRDLCBkdXJhdGlvbjogMyBob3VycywgY3V0b2ZmOiAxIGhvdXJcbiAgICovXG4gIG1haW50ZW5hbmNlV2luZG93Pzogc3NtLkNmbk1haW50ZW5hbmNlV2luZG93O1xufVxuXG5leHBvcnQgY2xhc3MgUGF0Y2hNYW5hZ2VyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBQYXRjaE1hbmFnZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBJQU0gcm9sZSB1c2VkIGJ5IHRoZSBtYWludGVuYW5jZSB3aW5kb3dcbiAgICBjb25zdCBtYWludGVuYW5jZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ01haW50ZW5hbmNlV2luZG93Um9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzc20uYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuXG4gICAgbWFpbnRlbmFuY2VSb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ3NzbTpTZW5kQ29tbWFuZCcsXG4gICAgICAgICAgJ3NzbTpMaXN0Q29tbWFuZHMnLFxuICAgICAgICAgICdzc206TGlzdENvbW1hbmRJbnZvY2F0aW9ucycsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgLy8gTWFpbnRlbmFuY2UgV2luZG93XG4gICAgY29uc3QgbWFpbnRlbmFuY2VXaW5kb3cgPSBwcm9wcz8ubWFpbnRlbmFuY2VXaW5kb3cgPz8gbmV3IHNzbS5DZm5NYWludGVuYW5jZVdpbmRvdyhcbiAgICAgIHRoaXMsXG4gICAgICAnUGF0Y2hNYWludGVuYW5jZVdpbmRvdycsXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwYXRjaC1tYWludGVuYW5jZS13aW5kb3cnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1dlZWtseSBwYXRjaGluZyB1c2luZyBBV1MgZGVmYXVsdCBwYXRjaCBiYXNlbGluZScsXG4gICAgICAgIHNjaGVkdWxlOiAnY3JvbigwIDcgPyAqIFNVTiAqKScsIC8vIFN1bmRheXMgMDc6MDAgVVRDXG4gICAgICAgIGR1cmF0aW9uOiAzLFxuICAgICAgICBjdXRvZmY6IDEsXG4gICAgICAgIGFsbG93VW5hc3NvY2lhdGVkVGFyZ2V0czogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBUYXJnZXQgRUMyIGluc3RhbmNlIGJ5IEluc3RhbmNlIElEXG4gICAgaWYgKCFwcm9wcz8uaW5zdGFuY2VJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnN0YW5jZUlkIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBQYXRjaE1hbmFnZXJTdGFjaycpO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXQgPSBuZXcgc3NtLkNmbk1haW50ZW5hbmNlV2luZG93VGFyZ2V0KFxuICAgICAgdGhpcyxcbiAgICAgICdQYXRjaFRhcmdldCcsXG4gICAgICB7XG4gICAgICAgIHdpbmRvd0lkOiBtYWludGVuYW5jZVdpbmRvdy5yZWYsXG4gICAgICAgIHJlc291cmNlVHlwZTogJ0lOU1RBTkNFJyxcbiAgICAgICAgdGFyZ2V0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ0luc3RhbmNlSWRzJyxcbiAgICAgICAgICAgIHZhbHVlczogW3Byb3BzLmluc3RhbmNlSWRdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBQYXRjaCB0YXNrIChJbnN0YWxsKVxuICAgIG5ldyBzc20uQ2ZuTWFpbnRlbmFuY2VXaW5kb3dUYXNrKHRoaXMsICdQYXRjaEluc3RhbGxUYXNrJywge1xuICAgICAgd2luZG93SWQ6IG1haW50ZW5hbmNlV2luZG93LnJlZixcbiAgICAgIHRhc2tBcm46ICdBV1MtUnVuUGF0Y2hCYXNlbGluZScsXG4gICAgICB0YXNrVHlwZTogJ1JVTl9DT01NQU5EJyxcbiAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgbWF4Q29uY3VycmVuY3k6ICcxJyxcbiAgICAgIG1heEVycm9yczogJzEnLFxuICAgICAgc2VydmljZVJvbGVBcm46IG1haW50ZW5hbmNlUm9sZS5yb2xlQXJuLFxuICAgICAgdGFyZ2V0czogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnV2luZG93VGFyZ2V0SWRzJyxcbiAgICAgICAgICB2YWx1ZXM6IFt0YXJnZXQucmVmXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0YXNrSW52b2NhdGlvblBhcmFtZXRlcnM6IHtcbiAgICAgICAgbWFpbnRlbmFuY2VXaW5kb3dSdW5Db21tYW5kUGFyYW1ldGVyczoge1xuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIE9wZXJhdGlvbjogWydJbnN0YWxsJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -40,6 +40,11 @@ export interface PgBouncerProps {
|
|
|
40
40
|
* EC2 instance options
|
|
41
41
|
*/
|
|
42
42
|
instanceProps?: Partial<ec2.InstanceProps>;
|
|
43
|
+
/**
|
|
44
|
+
* Optional reference to the database bootstrapper CustomResource.
|
|
45
|
+
* When provided, the health check will re-trigger if the database setup changes.
|
|
46
|
+
*/
|
|
47
|
+
databaseBootstrapper?: CustomResource;
|
|
43
48
|
}
|
|
44
49
|
export declare class PgBouncer extends Construct {
|
|
45
50
|
readonly instance: ec2.Instance;
|
|
@@ -138,8 +138,10 @@ class PgBouncer extends constructs_1.Construct {
|
|
|
138
138
|
serviceToken: healthCheckFunction.functionArn,
|
|
139
139
|
properties: {
|
|
140
140
|
InstanceId: this.instance.instanceId,
|
|
141
|
-
//
|
|
142
|
-
|
|
141
|
+
// Reference the database bootstrapper to re-trigger on database changes
|
|
142
|
+
...(props.databaseBootstrapper && {
|
|
143
|
+
DatabaseBootstrapperRef: props.databaseBootstrapper.ref,
|
|
144
|
+
}),
|
|
143
145
|
},
|
|
144
146
|
});
|
|
145
147
|
// Ensure health check runs after instance is created but before secret update
|
|
@@ -160,4 +162,4 @@ class PgBouncer extends constructs_1.Construct {
|
|
|
160
162
|
}
|
|
161
163
|
}
|
|
162
164
|
exports.PgBouncer = PgBouncer;
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGdCb3VuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGdCb3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQVFxQjtBQUNyQiwyQ0FBdUM7QUFFdkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQW9EN0IsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFPdEMsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDaEYsa0NBQWtDO0lBRTFCLHlCQUF5QixDQUMvQixnQkFBd0I7UUFFeEIsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUM7WUFDZCxlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7WUFDdkMsa0JBQWtCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRTtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixrQ0FBa0M7UUFFbEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FDdkIsQ0FBQztRQUVGLHNDQUFzQztRQUN0QyxNQUFNLGVBQWUsR0FBbUM7WUFDdEQsR0FBRyxzQkFBc0I7WUFDekIsR0FBRyxLQUFLLENBQUMsZUFBZTtTQUN6QixDQUFDO1FBRUYscUVBQXFFO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLElBQUkscUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM5QyxXQUFXLEVBQ1QsdUVBQXVFO1lBQ3pFLFNBQVMsRUFBRSxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7WUFDeEQsZUFBZSxFQUFFO2dCQUNmLHFCQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUN4Qyw4QkFBOEIsQ0FDL0I7Z0JBQ0QscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQ3hDLDZCQUE2QixDQUM5QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztZQUMxQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0MsQ0FBQyxDQUNILENBQUM7UUFFRiwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHFCQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUN6RSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE1BQU0scUJBQXFCLEdBQW1DO1lBQzVELFlBQVksRUFBRSxXQUFXO1lBQ3pCLFlBQVksRUFBRSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQy9CLHFCQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFDcEIscUJBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QjtZQUNELFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQy9CLENBQUMsQ0FBQyxxQkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO29CQUN2QixDQUFDLENBQUMscUJBQUcsQ0FBQyxVQUFVLENBQUMsbUJBQW1CO2FBQ3ZDO1lBQ0QsWUFBWSxFQUFFLHFCQUFHLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUM3QyxvRkFBb0YsRUFDcEYsRUFBRSxFQUFFLEVBQUUscUJBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1o7b0JBQ0UsVUFBVSxFQUFFLFdBQVc7b0JBQ3ZCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7d0JBQ3BDLFVBQVUsRUFBRSxxQkFBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUc7d0JBQ3ZDLFNBQVMsRUFBRSxJQUFJO3dCQUNmLG1CQUFtQixFQUFFLElBQUk7cUJBQzFCLENBQUM7aUJBQ0g7YUFDRjtZQUNELElBQUk7WUFDSixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNsRSx5QkFBeUIsRUFBRSxJQUFJO1lBQy9CLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxlQUFlO1NBQ2hELENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxHQUFHLHFCQUFxQjtZQUN4QixHQUFHLEtBQUssQ0FBQyxhQUFhO1lBQ3RCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQ2IscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNsQixtQ0FBbUMsQ0FDcEMsQ0FBQztRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hFLFdBQVcsRUFBRSwrQ0FBK0M7WUFDNUQsb0JBQW9CLEVBQUU7Z0JBQ3BCLGlCQUFpQixFQUFFLE9BQU87Z0JBQzFCLG9CQUFvQixFQUFFLElBQUk7YUFDM0I7U0FDRixDQUFDLENBQUM7UUFFSCxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsb0ZBQW9GO1FBQ3BGLE1BQU0sZUFBZSxHQUFHLElBQUksd0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ3pFLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3JDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSx3QkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLENBQ3hEO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQ2xELGlCQUFpQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUzthQUNsRDtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSw0QkFBYyxDQUM1QyxJQUFJLEVBQ0osNkJBQTZCLEVBQzdCO1lBQ0UsWUFBWSxFQUFFLGVBQWUsQ0FBQyxXQUFXO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtvQkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCO2FBQ3BDO1NBQ0YsQ0FDRixDQUFDO1FBRUYsbUNBQW1DO1FBQ25DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSx3QkFBTSxDQUFDLFFBQVEsQ0FDN0MsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtZQUNFLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3JDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsK0JBQStCLENBQUMsQ0FDdEQ7WUFDRCxXQUFXLEVBQUUsaUNBQWlDO1NBQy9DLENBQ0YsQ0FBQztRQUVGLHlDQUF5QztRQUN6QyxtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLGlCQUFpQjtnQkFDakIsMEJBQTBCO2dCQUMxQixpQ0FBaUM7Z0JBQ2pDLDRCQUE0QjthQUM3QjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUNsRSxZQUFZLEVBQUUsbUJBQW1CLENBQUMsV0FBVztZQUM3QyxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFDcEMsdURBQXVEO2dCQUN2RCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDcEM7U0FDRixDQUFDLENBQUM7UUFFSCw4RUFBOEU7UUFDOUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLGtCQUFrQixDQUN4QixlQUF5RSxFQUN6RSxRQUE0QztRQUU1QyxNQUFNLGNBQWMsR0FBRyxxQkFBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUvQywwREFBMEQ7UUFDMUQsY0FBYyxDQUFDLFdBQVcsQ0FDeEIscUJBQXFCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUN2RCxpQkFBaUIsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUMvQyxvQkFBb0IsR0FBRyxlQUFlLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFDckQsMEJBQTBCLEdBQUcsZUFBZSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQ2hFLDRCQUE0QixHQUFHLGVBQWUsQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUNwRSx3QkFBd0IsR0FBRyxlQUFlLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFDNUQsNEJBQTRCLEdBQUcsZUFBZSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQ3BFLCtCQUErQjtZQUM3QixlQUFlLENBQUMsa0JBQWtCO1lBQ2xDLEdBQUcsRUFDTCw2QkFBNkIsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUN0RSwrQkFBK0IsR0FBRyxlQUFlLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUMzRSxDQUFDO1FBRUYsMEJBQTBCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDaEUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFakQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUF6T0QsOEJBeU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2VjMiBhcyBlYzIsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIFN0YWNrLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG4vLyB1c2VkIHRvIHBvcHVsYXRlIHBnYm91bmNlciBjb25maWc6XG4vLyBzZWUgaHR0cHM6Ly93d3cucGdib3VuY2VyLm9yZy9jb25maWcuaHRtbCBmb3IgZGV0YWlsc1xuZXhwb3J0IGludGVyZmFjZSBQZ0JvdW5jZXJDb25maWdQcm9wcyB7XG4gIHBvb2xNb2RlPzogXCJ0cmFuc2FjdGlvblwiIHwgXCJzZXNzaW9uXCIgfCBcInN0YXRlbWVudFwiO1xuICBtYXhDbGllbnRDb25uPzogbnVtYmVyO1xuICBkZWZhdWx0UG9vbFNpemU/OiBudW1iZXI7XG4gIG1pblBvb2xTaXplPzogbnVtYmVyO1xuICByZXNlcnZlUG9vbFNpemU/OiBudW1iZXI7XG4gIHJlc2VydmVQb29sVGltZW91dD86IG51bWJlcjtcbiAgbWF4RGJDb25uZWN0aW9ucz86IG51bWJlcjtcbiAgbWF4VXNlckNvbm5lY3Rpb25zPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBnQm91bmNlclByb3BzIHtcbiAgLyoqXG4gICAqIFZQQyB0byBkZXBsb3kgUGdCb3VuY2VyIGludG9cbiAgICovXG4gIHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBSRFMgaW5zdGFuY2UgdG8gY29ubmVjdCB0b1xuICAgKi9cbiAgZGF0YWJhc2U6IHtcbiAgICBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zO1xuICAgIHNlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcbiAgfTtcblxuICAvKipcbiAgICogTWF4aW11bSBjb25uZWN0aW9ucyBzZXR0aW5nIGZvciB0aGUgZGF0YWJhc2UuXG4gICAqIFBnQm91bmNlciB3aWxsIHVzZSAxMCBmZXdlciB0aGFuIHRoaXMgdmFsdWUuXG4gICAqL1xuICBkYk1heENvbm5lY3Rpb25zOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVwbG95IGluIHB1YmxpYyBzdWJuZXRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVB1YmxpY1N1Ym5ldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBnQm91bmNlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHBnQm91bmNlckNvbmZpZz86IFBnQm91bmNlckNvbmZpZ1Byb3BzO1xuXG4gIC8qKlxuICAgKiBFQzIgaW5zdGFuY2Ugb3B0aW9uc1xuICAgKi9cbiAgaW5zdGFuY2VQcm9wcz86IFBhcnRpYWw8ZWMyLkluc3RhbmNlUHJvcHM+O1xufVxuXG5leHBvcnQgY2xhc3MgUGdCb3VuY2VyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHB1YmxpYyByZWFkb25seSBwZ2JvdW5jZXJTZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLlNlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IGVjMi5TZWN1cml0eUdyb3VwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0VXBkYXRlQ29tcGxldGU6IEN1c3RvbVJlc291cmNlO1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhbHRoQ2hlY2s6IEN1c3RvbVJlc291cmNlO1xuXG4gIC8vIFRoZSBtYXhfY29ubmVjdGlvbnMgcGFyYW1ldGVyIGluIFBnQm91bmNlciBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAvLyBjb25uZWN0aW9ucyB0byBvcGVuIG9uIHRoZSBhY3R1YWwgZGF0YWJhc2UgaW5zdGFuY2UuIFdlIHdhbnQgdGhhdCBudW1iZXIgdG9cbiAgLy8gYmUgc2xpZ2h0bHkgc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgbWF4X2Nvbm5lY3Rpb25zIHZhbHVlIG9uIHRoZSBSRFMgaW5zdGFuY2VcbiAgLy8gc28gd2UgcGVyZm9ybSB0aGlzIGNhbGN1bGF0aW9uLlxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdFBnYm91bmNlckNvbmZpZyhcbiAgICBkYk1heENvbm5lY3Rpb25zOiBudW1iZXJcbiAgKTogUmVxdWlyZWQ8UGdCb3VuY2VyQ29uZmlnUHJvcHM+IHtcbiAgICAvLyBtYXhEYkNvbm5lY3Rpb25zIChhbmQgbWF4VXNlckNvbm5lY3Rpb25zKSBhcmUgdGhlIG9ubHkgc2V0dGluZ3MgdGhhdCBuZWVkXG4gICAgLy8gdG8gYmUgcmVzcG9uc2l2ZSB0byB0aGUgZGF0YWJhc2Ugc2l6ZS9tYXhfY29ubmVjdGlvbnMgc2V0dGluZ1xuICAgIHJldHVybiB7XG4gICAgICBwb29sTW9kZTogXCJ0cmFuc2FjdGlvblwiLFxuICAgICAgbWF4Q2xpZW50Q29ubjogMTAwMCxcbiAgICAgIGRlZmF1bHRQb29sU2l6ZTogNSxcbiAgICAgIG1pblBvb2xTaXplOiAwLFxuICAgICAgcmVzZXJ2ZVBvb2xTaXplOiA1LFxuICAgICAgcmVzZXJ2ZVBvb2xUaW1lb3V0OiA1LFxuICAgICAgbWF4RGJDb25uZWN0aW9uczogZGJNYXhDb25uZWN0aW9ucyAtIDEwLFxuICAgICAgbWF4VXNlckNvbm5lY3Rpb25zOiBkYk1heENvbm5lY3Rpb25zIC0gMTAsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQZ0JvdW5jZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBTZXQgZGVmYXVsdHMgZm9yIG9wdGlvbmFsIHByb3BzXG5cbiAgICBjb25zdCBkZWZhdWx0UGdib3VuY2VyQ29uZmlnID0gdGhpcy5nZXREZWZhdWx0UGdib3VuY2VyQ29uZmlnKFxuICAgICAgcHJvcHMuZGJNYXhDb25uZWN0aW9uc1xuICAgICk7XG5cbiAgICAvLyBNZXJnZSBwcm92aWRlZCBjb25maWcgd2l0aCBkZWZhdWx0c1xuICAgIGNvbnN0IHBnQm91bmNlckNvbmZpZzogUmVxdWlyZWQ8UGdCb3VuY2VyQ29uZmlnUHJvcHM+ID0ge1xuICAgICAgLi4uZGVmYXVsdFBnYm91bmNlckNvbmZpZyxcbiAgICAgIC4uLnByb3BzLnBnQm91bmNlckNvbmZpZyxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIHJvbGUgZm9yIFBnQm91bmNlciBpbnN0YW5jZSB0byBlbmFibGUgd3JpdGluZyB0byBDbG91ZFdhdGNoXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwZ2JvdW5jZXIgaW5zdGFuY2Ugcm9sZSB3aXRoIFN5c3RlbXMgTWFuYWdlciArIENsb3VkV2F0Y2ggcGVybWlzc2lvbnNcIixcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgIFwiQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZVwiXG4gICAgICAgICksXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcIkNsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeVwiXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHBvbGljeSB0byBhbGxvdyByZWFkaW5nIFJEUyBjcmVkZW50aWFscyBmcm9tIFNlY3JldHMgTWFuYWdlclxuICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcInNlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5kYXRhYmFzZS5zZWNyZXQuc2VjcmV0QXJuXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhIHNlY3VyaXR5IGdyb3VwIGFuZCBhbGxvdyBjb25uZWN0aW9ucyBmcm9tIHRoZSBMYW1iZGEgSVAgcmFuZ2VzIGZvciB0aGlzIHJlZ2lvblxuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlBnQm91bmNlclNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZWN1cml0eSBncm91cCBmb3IgUGdCb3VuY2VyIGluc3RhbmNlXCIsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFBnQm91bmNlciBpbnN0YW5jZVxuICAgIGNvbnN0IGRlZmF1bHRJbnN0YW5jZUNvbmZpZzogT21pdDxlYzIuSW5zdGFuY2VQcm9wcywgXCJ2cGNcIj4gPSB7XG4gICAgICBpbnN0YW5jZU5hbWU6IFwicGdib3VuY2VyXCIsXG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLlQzLFxuICAgICAgICBlYzIuSW5zdGFuY2VTaXplLk1JQ1JPXG4gICAgICApLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlOiBwcm9wcy51c2VQdWJsaWNTdWJuZXRcbiAgICAgICAgICA/IGVjMi5TdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgICAgIDogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgIH0sXG4gICAgICBtYWNoaW5lSW1hZ2U6IGVjMi5NYWNoaW5lSW1hZ2UuZnJvbVNzbVBhcmFtZXRlcihcbiAgICAgICAgXCIvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvbm9ibGUvc3RhYmxlL2N1cnJlbnQvYW1kNjQvaHZtL2Vicy1ncDMvYW1pLWlkXCIsXG4gICAgICAgIHsgb3M6IGVjMi5PcGVyYXRpbmdTeXN0ZW1UeXBlLkxJTlVYIH1cbiAgICAgICksXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6IFwiL2Rldi94dmRhXCIsXG4gICAgICAgICAgdm9sdW1lOiBlYzIuQmxvY2tEZXZpY2VWb2x1bWUuZWJzKDIwLCB7XG4gICAgICAgICAgICB2b2x1bWVUeXBlOiBlYzIuRWJzRGV2aWNlVm9sdW1lVHlwZS5HUDMsXG4gICAgICAgICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uOiB0cnVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJvbGUsXG4gICAgICBzZWN1cml0eUdyb3VwOiB0aGlzLnNlY3VyaXR5R3JvdXAsXG4gICAgICB1c2VyRGF0YTogdGhpcy5sb2FkVXNlckRhdGFTY3JpcHQocGdCb3VuY2VyQ29uZmlnLCBwcm9wcy5kYXRhYmFzZSksXG4gICAgICB1c2VyRGF0YUNhdXNlc1JlcGxhY2VtZW50OiB0cnVlLFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiBwcm9wcy51c2VQdWJsaWNTdWJuZXQsXG4gICAgfTtcblxuICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSW5zdGFuY2VcIiwge1xuICAgICAgLi4uZGVmYXVsdEluc3RhbmNlQ29uZmlnLFxuICAgICAgLi4ucHJvcHMuaW5zdGFuY2VQcm9wcyxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgUGdCb3VuY2VyIHRvIGNvbm5lY3QgdG8gUkRTXG4gICAgcHJvcHMuZGF0YWJhc2UuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgdGhpcy5pbnN0YW5jZSxcbiAgICAgIGVjMi5Qb3J0LnRjcCg1NDMyKSxcbiAgICAgIFwiQWxsb3cgUGdCb3VuY2VyIHRvIGNvbm5lY3QgdG8gUkRTXCJcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNlY3JldCBmb3IgcGdib3VuY2VyIGNvbm5lY3Rpb24gY3JlZGVudGlhbHNcbiAgICB0aGlzLnBnYm91bmNlclNlY3JldCA9IG5ldyBzZWNyZXRzbWFuYWdlci5TZWNyZXQodGhpcywgXCJQZ0JvdW5jZXJTZWNyZXRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiQ29ubmVjdGlvbiBpbmZvcm1hdGlvbiBmb3IgUGdCb3VuY2VyIGluc3RhbmNlXCIsXG4gICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogXCJkdW1teVwiLFxuICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogXCJ7fVwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEdyYW50IHRoZSByb2xlIHBlcm1pc3Npb24gdG8gcmVhZCB0aGUgbmV3IHNlY3JldFxuICAgIHRoaXMucGdib3VuY2VyU2VjcmV0LmdyYW50UmVhZChyb2xlKTtcblxuICAgIC8vIFVwZGF0ZSBwZ2JvdW5jZXJTZWNyZXQgdG8gY29udGFpbiBwZ3N0YWNTZWNyZXQgdmFsdWVzIGJ1dCB3aXRoIG5ldyB2YWx1ZSBmb3IgaG9zdFxuICAgIGNvbnN0IHNlY3JldFVwZGF0ZXJGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTZWNyZXRVcGRhdGVyRnVuY3Rpb25cIiwge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTX0xBVEVTVCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcImxhbWJkYS9wZ2JvdW5jZXItc2VjcmV0LXVwZGF0ZXJcIilcbiAgICAgICksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTT1VSQ0VfU0VDUkVUX0FSTjogcHJvcHMuZGF0YWJhc2Uuc2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgVEFSR0VUX1NFQ1JFVF9BUk46IHRoaXMucGdib3VuY2VyU2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwcm9wcy5kYXRhYmFzZS5zZWNyZXQuZ3JhbnRSZWFkKHNlY3JldFVwZGF0ZXJGbik7XG4gICAgdGhpcy5wZ2JvdW5jZXJTZWNyZXQuZ3JhbnRXcml0ZShzZWNyZXRVcGRhdGVyRm4pO1xuXG4gICAgdGhpcy5zZWNyZXRVcGRhdGVDb21wbGV0ZSA9IG5ldyBDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcInBnYm91bmNlclNlY3JldEJvb3RzdHJhcHBlclwiLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHNlY3JldFVwZGF0ZXJGbi5mdW5jdGlvbkFybixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGluc3RhbmNlSXA6IHByb3BzLnVzZVB1YmxpY1N1Ym5ldFxuICAgICAgICAgICAgPyB0aGlzLmluc3RhbmNlLmluc3RhbmNlUHVibGljSXBcbiAgICAgICAgICAgIDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVByaXZhdGVJcCxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQWRkIGhlYWx0aCBjaGVjayBjdXN0b20gcmVzb3VyY2VcbiAgICBjb25zdCBoZWFsdGhDaGVja0Z1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIkhlYWx0aENoZWNrRnVuY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTX0xBVEVTVCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCJsYW1iZGEvcGdib3VuY2VyLWhlYWx0aC1jaGVja1wiKVxuICAgICAgICApLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJQZ0JvdW5jZXIgaGVhbHRoIGNoZWNrIGZ1bmN0aW9uXCIsXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEdyYW50IFNTTSBwZXJtaXNzaW9ucyBmb3IgaGVhbHRoIGNoZWNrXG4gICAgaGVhbHRoQ2hlY2tGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcInNzbTpTZW5kQ29tbWFuZFwiLFxuICAgICAgICAgIFwic3NtOkdldENvbW1hbmRJbnZvY2F0aW9uXCIsXG4gICAgICAgICAgXCJzc206RGVzY3JpYmVJbnN0YW5jZUluZm9ybWF0aW9uXCIsXG4gICAgICAgICAgXCJzc206TGlzdENvbW1hbmRJbnZvY2F0aW9uc1wiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmhlYWx0aENoZWNrID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwiUGdCb3VuY2VySGVhbHRoQ2hlY2tcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBoZWFsdGhDaGVja0Z1bmN0aW9uLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBJbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICAgIC8vIEFkZCB0aW1lc3RhbXAgdG8gZm9yY2UgcmUtZXhlY3V0aW9uIG9uIHN0YWNrIHVwZGF0ZXNcbiAgICAgICAgVGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gRW5zdXJlIGhlYWx0aCBjaGVjayBydW5zIGFmdGVyIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnV0IGJlZm9yZSBzZWNyZXQgdXBkYXRlXG4gICAgdGhpcy5oZWFsdGhDaGVjay5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5pbnN0YW5jZSk7XG4gICAgdGhpcy5zZWNyZXRVcGRhdGVDb21wbGV0ZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5oZWFsdGhDaGVjayk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRVc2VyRGF0YVNjcmlwdChcbiAgICBwZ0JvdW5jZXJDb25maWc6IFJlcXVpcmVkPE5vbk51bGxhYmxlPFBnQm91bmNlclByb3BzW1wicGdCb3VuY2VyQ29uZmlnXCJdPj4sXG4gICAgZGF0YWJhc2U6IHsgc2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0IH1cbiAgKTogZWMyLlVzZXJEYXRhIHtcbiAgICBjb25zdCB1c2VyRGF0YVNjcmlwdCA9IGVjMi5Vc2VyRGF0YS5mb3JMaW51eCgpO1xuXG4gICAgLy8gU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgJ2V4cG9ydCBTRUNSRVRfQVJOPVwiJyArIGRhdGFiYXNlLnNlY3JldC5zZWNyZXRBcm4gKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRUdJT049XCInICsgU3RhY2sub2YodGhpcykucmVnaW9uICsgJ1wiJyxcbiAgICAgICdleHBvcnQgUE9PTF9NT0RFPVwiJyArIHBnQm91bmNlckNvbmZpZy5wb29sTW9kZSArICdcIicsXG4gICAgICAnZXhwb3J0IE1BWF9DTElFTlRfQ09OTj1cIicgKyBwZ0JvdW5jZXJDb25maWcubWF4Q2xpZW50Q29ubiArICdcIicsXG4gICAgICAnZXhwb3J0IERFRkFVTFRfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5kZWZhdWx0UG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBNSU5fUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5taW5Qb29sU2l6ZSArICdcIicsXG4gICAgICAnZXhwb3J0IFJFU0VSVkVfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5yZXNlcnZlUG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRVNFUlZFX1BPT0xfVElNRU9VVD1cIicgK1xuICAgICAgICBwZ0JvdW5jZXJDb25maWcucmVzZXJ2ZVBvb2xUaW1lb3V0ICtcbiAgICAgICAgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX0RCX0NPTk5FQ1RJT05TPVwiJyArIHBnQm91bmNlckNvbmZpZy5tYXhEYkNvbm5lY3Rpb25zICsgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX1VTRVJfQ09OTkVDVElPTlM9XCInICsgcGdCb3VuY2VyQ29uZmlnLm1heFVzZXJDb25uZWN0aW9ucyArICdcIidcbiAgICApO1xuXG4gICAgLy8gTG9hZCB0aGUgc3RhcnR1cCBzY3JpcHRcbiAgICBjb25zdCBzY3JpcHRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL3BnYm91bmNlci1zZXR1cC5zaFwiKTtcbiAgICBsZXQgc2NyaXB0ID0gZnMucmVhZEZpbGVTeW5jKHNjcmlwdFBhdGgsIFwidXRmOFwiKTtcblxuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKHNjcmlwdCk7XG5cbiAgICByZXR1cm4gdXNlckRhdGFTY3JpcHQ7XG4gIH1cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGdCb3VuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGdCb3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQVFxQjtBQUNyQiwyQ0FBdUM7QUFFdkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQTBEN0IsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFPdEMsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDaEYsa0NBQWtDO0lBRTFCLHlCQUF5QixDQUMvQixnQkFBd0I7UUFFeEIsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUM7WUFDZCxlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7WUFDdkMsa0JBQWtCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRTtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixrQ0FBa0M7UUFFbEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQzNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FDdkIsQ0FBQztRQUVGLHNDQUFzQztRQUN0QyxNQUFNLGVBQWUsR0FBbUM7WUFDdEQsR0FBRyxzQkFBc0I7WUFDekIsR0FBRyxLQUFLLENBQUMsZUFBZTtTQUN6QixDQUFDO1FBRUYscUVBQXFFO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLElBQUkscUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM5QyxXQUFXLEVBQ1QsdUVBQXVFO1lBQ3pFLFNBQVMsRUFBRSxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7WUFDeEQsZUFBZSxFQUFFO2dCQUNmLHFCQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUN4Qyw4QkFBOEIsQ0FDL0I7Z0JBQ0QscUJBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQ3hDLDZCQUE2QixDQUM5QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztZQUMxQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0MsQ0FBQyxDQUNILENBQUM7UUFFRiwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHFCQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRTtZQUN6RSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLE1BQU0scUJBQXFCLEdBQW1DO1lBQzVELFlBQVksRUFBRSxXQUFXO1lBQ3pCLFlBQVksRUFBRSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQy9CLHFCQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFDcEIscUJBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QjtZQUNELFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQy9CLENBQUMsQ0FBQyxxQkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO29CQUN2QixDQUFDLENBQUMscUJBQUcsQ0FBQyxVQUFVLENBQUMsbUJBQW1CO2FBQ3ZDO1lBQ0QsWUFBWSxFQUFFLHFCQUFHLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUM3QyxvRkFBb0YsRUFDcEYsRUFBRSxFQUFFLEVBQUUscUJBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FDdEM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1o7b0JBQ0UsVUFBVSxFQUFFLFdBQVc7b0JBQ3ZCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7d0JBQ3BDLFVBQVUsRUFBRSxxQkFBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUc7d0JBQ3ZDLFNBQVMsRUFBRSxJQUFJO3dCQUNmLG1CQUFtQixFQUFFLElBQUk7cUJBQzFCLENBQUM7aUJBQ0g7YUFDRjtZQUNELElBQUk7WUFDSixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNsRSx5QkFBeUIsRUFBRSxJQUFJO1lBQy9CLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxlQUFlO1NBQ2hELENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxHQUFHLHFCQUFxQjtZQUN4QixHQUFHLEtBQUssQ0FBQyxhQUFhO1lBQ3RCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQ2IscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNsQixtQ0FBbUMsQ0FDcEMsQ0FBQztRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hFLFdBQVcsRUFBRSwrQ0FBK0M7WUFDNUQsb0JBQW9CLEVBQUU7Z0JBQ3BCLGlCQUFpQixFQUFFLE9BQU87Z0JBQzFCLG9CQUFvQixFQUFFLElBQUk7YUFDM0I7U0FDRixDQUFDLENBQUM7UUFFSCxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsb0ZBQW9GO1FBQ3BGLE1BQU0sZUFBZSxHQUFHLElBQUksd0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ3pFLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3JDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSx3QkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGlDQUFpQyxDQUFDLENBQ3hEO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQ2xELGlCQUFpQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUzthQUNsRDtTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSw0QkFBYyxDQUM1QyxJQUFJLEVBQ0osNkJBQTZCLEVBQzdCO1lBQ0UsWUFBWSxFQUFFLGVBQWUsQ0FBQyxXQUFXO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWU7b0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtvQkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCO2FBQ3BDO1NBQ0YsQ0FDRixDQUFDO1FBRUYsbUNBQW1DO1FBQ25DLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSx3QkFBTSxDQUFDLFFBQVEsQ0FDN0MsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtZQUNFLE9BQU8sRUFBRSx3QkFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3JDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsK0JBQStCLENBQUMsQ0FDdEQ7WUFDRCxXQUFXLEVBQUUsaUNBQWlDO1NBQy9DLENBQ0YsQ0FBQztRQUVGLHlDQUF5QztRQUN6QyxtQkFBbUIsQ0FBQyxlQUFlLENBQ2pDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLGlCQUFpQjtnQkFDakIsMEJBQTBCO2dCQUMxQixpQ0FBaUM7Z0JBQ2pDLDRCQUE0QjthQUM3QjtZQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw0QkFBYyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUNsRSxZQUFZLEVBQUUsbUJBQW1CLENBQUMsV0FBVztZQUM3QyxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFDcEMsd0VBQXdFO2dCQUN4RSxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixJQUFJO29CQUNoQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBRztpQkFDeEQsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsZUFBeUUsRUFDekUsUUFBNEM7UUFFNUMsTUFBTSxjQUFjLEdBQUcscUJBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0MsMERBQTBEO1FBQzFELGNBQWMsQ0FBQyxXQUFXLENBQ3hCLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFDdkQsaUJBQWlCLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFDL0Msb0JBQW9CLEdBQUcsZUFBZSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQ3JELDBCQUEwQixHQUFHLGVBQWUsQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUNoRSw0QkFBNEIsR0FBRyxlQUFlLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFDcEUsd0JBQXdCLEdBQUcsZUFBZSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQzVELDRCQUE0QixHQUFHLGVBQWUsQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUNwRSwrQkFBK0I7WUFDN0IsZUFBZSxDQUFDLGtCQUFrQjtZQUNsQyxHQUFHLEVBQ0wsNkJBQTZCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFDdEUsK0JBQStCLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FDM0UsQ0FBQztRQUVGLDBCQUEwQjtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWpELGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBM09ELDhCQTJPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIER1cmF0aW9uLFxuICBTdGFjayxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuLy8gdXNlZCB0byBwb3B1bGF0ZSBwZ2JvdW5jZXIgY29uZmlnOlxuLy8gc2VlIGh0dHBzOi8vd3d3LnBnYm91bmNlci5vcmcvY29uZmlnLmh0bWwgZm9yIGRldGFpbHNcbmV4cG9ydCBpbnRlcmZhY2UgUGdCb3VuY2VyQ29uZmlnUHJvcHMge1xuICBwb29sTW9kZT86IFwidHJhbnNhY3Rpb25cIiB8IFwic2Vzc2lvblwiIHwgXCJzdGF0ZW1lbnRcIjtcbiAgbWF4Q2xpZW50Q29ubj86IG51bWJlcjtcbiAgZGVmYXVsdFBvb2xTaXplPzogbnVtYmVyO1xuICBtaW5Qb29sU2l6ZT86IG51bWJlcjtcbiAgcmVzZXJ2ZVBvb2xTaXplPzogbnVtYmVyO1xuICByZXNlcnZlUG9vbFRpbWVvdXQ/OiBudW1iZXI7XG4gIG1heERiQ29ubmVjdGlvbnM/OiBudW1iZXI7XG4gIG1heFVzZXJDb25uZWN0aW9ucz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ0JvdW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgdG8gZGVwbG95IFBnQm91bmNlciBpbnRvXG4gICAqL1xuICB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgUkRTIGluc3RhbmNlIHRvIGNvbm5lY3QgdG9cbiAgICovXG4gIGRhdGFiYXNlOiB7XG4gICAgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgICBzZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1heGltdW0gY29ubmVjdGlvbnMgc2V0dGluZyBmb3IgdGhlIGRhdGFiYXNlLlxuICAgKiBQZ0JvdW5jZXIgd2lsbCB1c2UgMTAgZmV3ZXIgdGhhbiB0aGlzIHZhbHVlLlxuICAgKi9cbiAgZGJNYXhDb25uZWN0aW9uczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBpbiBwdWJsaWMgc3VibmV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VQdWJsaWNTdWJuZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQZ0JvdW5jZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwZ0JvdW5jZXJDb25maWc/OiBQZ0JvdW5jZXJDb25maWdQcm9wcztcblxuICAvKipcbiAgICogRUMyIGluc3RhbmNlIG9wdGlvbnNcbiAgICovXG4gIGluc3RhbmNlUHJvcHM/OiBQYXJ0aWFsPGVjMi5JbnN0YW5jZVByb3BzPjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgcmVmZXJlbmNlIHRvIHRoZSBkYXRhYmFzZSBib290c3RyYXBwZXIgQ3VzdG9tUmVzb3VyY2UuXG4gICAqIFdoZW4gcHJvdmlkZWQsIHRoZSBoZWFsdGggY2hlY2sgd2lsbCByZS10cmlnZ2VyIGlmIHRoZSBkYXRhYmFzZSBzZXR1cCBjaGFuZ2VzLlxuICAgKi9cbiAgZGF0YWJhc2VCb290c3RyYXBwZXI/OiBDdXN0b21SZXNvdXJjZTtcbn1cblxuZXhwb3J0IGNsYXNzIFBnQm91bmNlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogZWMyLkluc3RhbmNlO1xuICBwdWJsaWMgcmVhZG9ubHkgcGdib3VuY2VyU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5TZWNyZXQ7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldFVwZGF0ZUNvbXBsZXRlOiBDdXN0b21SZXNvdXJjZTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWx0aENoZWNrOiBDdXN0b21SZXNvdXJjZTtcblxuICAvLyBUaGUgbWF4X2Nvbm5lY3Rpb25zIHBhcmFtZXRlciBpbiBQZ0JvdW5jZXIgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgLy8gY29ubmVjdGlvbnMgdG8gb3BlbiBvbiB0aGUgYWN0dWFsIGRhdGFiYXNlIGluc3RhbmNlLiBXZSB3YW50IHRoYXQgbnVtYmVyIHRvXG4gIC8vIGJlIHNsaWdodGx5IHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIG1heF9jb25uZWN0aW9ucyB2YWx1ZSBvbiB0aGUgUkRTIGluc3RhbmNlXG4gIC8vIHNvIHdlIHBlcmZvcm0gdGhpcyBjYWxjdWxhdGlvbi5cblxuICBwcml2YXRlIGdldERlZmF1bHRQZ2JvdW5jZXJDb25maWcoXG4gICAgZGJNYXhDb25uZWN0aW9uczogbnVtYmVyXG4gICk6IFJlcXVpcmVkPFBnQm91bmNlckNvbmZpZ1Byb3BzPiB7XG4gICAgLy8gbWF4RGJDb25uZWN0aW9ucyAoYW5kIG1heFVzZXJDb25uZWN0aW9ucykgYXJlIHRoZSBvbmx5IHNldHRpbmdzIHRoYXQgbmVlZFxuICAgIC8vIHRvIGJlIHJlc3BvbnNpdmUgdG8gdGhlIGRhdGFiYXNlIHNpemUvbWF4X2Nvbm5lY3Rpb25zIHNldHRpbmdcbiAgICByZXR1cm4ge1xuICAgICAgcG9vbE1vZGU6IFwidHJhbnNhY3Rpb25cIixcbiAgICAgIG1heENsaWVudENvbm46IDEwMDAsXG4gICAgICBkZWZhdWx0UG9vbFNpemU6IDUsXG4gICAgICBtaW5Qb29sU2l6ZTogMCxcbiAgICAgIHJlc2VydmVQb29sU2l6ZTogNSxcbiAgICAgIHJlc2VydmVQb29sVGltZW91dDogNSxcbiAgICAgIG1heERiQ29ubmVjdGlvbnM6IGRiTWF4Q29ubmVjdGlvbnMgLSAxMCxcbiAgICAgIG1heFVzZXJDb25uZWN0aW9uczogZGJNYXhDb25uZWN0aW9ucyAtIDEwLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGdCb3VuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gU2V0IGRlZmF1bHRzIGZvciBvcHRpb25hbCBwcm9wc1xuXG4gICAgY29uc3QgZGVmYXVsdFBnYm91bmNlckNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdFBnYm91bmNlckNvbmZpZyhcbiAgICAgIHByb3BzLmRiTWF4Q29ubmVjdGlvbnNcbiAgICApO1xuXG4gICAgLy8gTWVyZ2UgcHJvdmlkZWQgY29uZmlnIHdpdGggZGVmYXVsdHNcbiAgICBjb25zdCBwZ0JvdW5jZXJDb25maWc6IFJlcXVpcmVkPFBnQm91bmNlckNvbmZpZ1Byb3BzPiA9IHtcbiAgICAgIC4uLmRlZmF1bHRQZ2JvdW5jZXJDb25maWcsXG4gICAgICAuLi5wcm9wcy5wZ0JvdW5jZXJDb25maWcsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSByb2xlIGZvciBQZ0JvdW5jZXIgaW5zdGFuY2UgdG8gZW5hYmxlIHdyaXRpbmcgdG8gQ2xvdWRXYXRjaFxuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnN0YW5jZVJvbGVcIiwge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwicGdib3VuY2VyIGluc3RhbmNlIHJvbGUgd2l0aCBTeXN0ZW1zIE1hbmFnZXIgKyBDbG91ZFdhdGNoIHBlcm1pc3Npb25zXCIsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImVjMi5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcIkFtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmVcIlxuICAgICAgICApLFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJDbG91ZFdhdGNoQWdlbnRTZXJ2ZXJQb2xpY3lcIlxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBwb2xpY3kgdG8gYWxsb3cgcmVhZGluZyBSRFMgY3JlZGVudGlhbHMgZnJvbSBTZWNyZXRzIE1hbmFnZXJcbiAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXCJzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZVwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuZGF0YWJhc2Uuc2VjcmV0LnNlY3JldEFybl0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYSBzZWN1cml0eSBncm91cCBhbmQgYWxsb3cgY29ubmVjdGlvbnMgZnJvbSB0aGUgTGFtYmRhIElQIHJhbmdlcyBmb3IgdGhpcyByZWdpb25cbiAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJQZ0JvdW5jZXJTZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiU2VjdXJpdHkgZ3JvdXAgZm9yIFBnQm91bmNlciBpbnN0YW5jZVwiLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBQZ0JvdW5jZXIgaW5zdGFuY2VcbiAgICBjb25zdCBkZWZhdWx0SW5zdGFuY2VDb25maWc6IE9taXQ8ZWMyLkluc3RhbmNlUHJvcHMsIFwidnBjXCI+ID0ge1xuICAgICAgaW5zdGFuY2VOYW1lOiBcInBnYm91bmNlclwiLFxuICAgICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlLm9mKFxuICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UMyxcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5NSUNST1xuICAgICAgKSxcbiAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgc3VibmV0VHlwZTogcHJvcHMudXNlUHVibGljU3VibmV0XG4gICAgICAgICAgPyBlYzIuU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9LFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmZyb21Tc21QYXJhbWV0ZXIoXG4gICAgICAgIFwiL2F3cy9zZXJ2aWNlL2Nhbm9uaWNhbC91YnVudHUvc2VydmVyL25vYmxlL3N0YWJsZS9jdXJyZW50L2FtZDY0L2h2bS9lYnMtZ3AzL2FtaS1pZFwiLFxuICAgICAgICB7IG9zOiBlYzIuT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWCB9XG4gICAgICApLFxuICAgICAgYmxvY2tEZXZpY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBcIi9kZXYveHZkYVwiLFxuICAgICAgICAgIHZvbHVtZTogZWMyLkJsb2NrRGV2aWNlVm9sdW1lLmVicygyMCwge1xuICAgICAgICAgICAgdm9sdW1lVHlwZTogZWMyLkVic0RldmljZVZvbHVtZVR5cGUuR1AzLFxuICAgICAgICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByb2xlLFxuICAgICAgc2VjdXJpdHlHcm91cDogdGhpcy5zZWN1cml0eUdyb3VwLFxuICAgICAgdXNlckRhdGE6IHRoaXMubG9hZFVzZXJEYXRhU2NyaXB0KHBnQm91bmNlckNvbmZpZywgcHJvcHMuZGF0YWJhc2UpLFxuICAgICAgdXNlckRhdGFDYXVzZXNSZXBsYWNlbWVudDogdHJ1ZSxcbiAgICAgIGFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogcHJvcHMudXNlUHVibGljU3VibmV0LFxuICAgIH07XG5cbiAgICB0aGlzLmluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcIkluc3RhbmNlXCIsIHtcbiAgICAgIC4uLmRlZmF1bHRJbnN0YW5jZUNvbmZpZyxcbiAgICAgIC4uLnByb3BzLmluc3RhbmNlUHJvcHMsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IFBnQm91bmNlciB0byBjb25uZWN0IHRvIFJEU1xuICAgIHByb3BzLmRhdGFiYXNlLmNvbm5lY3Rpb25zLmFsbG93RnJvbShcbiAgICAgIHRoaXMuaW5zdGFuY2UsXG4gICAgICBlYzIuUG9ydC50Y3AoNTQzMiksXG4gICAgICBcIkFsbG93IFBnQm91bmNlciB0byBjb25uZWN0IHRvIFJEU1wiXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhIG5ldyBzZWNyZXQgZm9yIHBnYm91bmNlciBjb25uZWN0aW9uIGNyZWRlbnRpYWxzXG4gICAgdGhpcy5wZ2JvdW5jZXJTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsIFwiUGdCb3VuY2VyU2VjcmV0XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbm5lY3Rpb24gaW5mb3JtYXRpb24gZm9yIFBnQm91bmNlciBpbnN0YW5jZVwiLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwiZHVtbXlcIixcbiAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IFwie31cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCB0aGUgcm9sZSBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIG5ldyBzZWNyZXRcbiAgICB0aGlzLnBnYm91bmNlclNlY3JldC5ncmFudFJlYWQocm9sZSk7XG5cbiAgICAvLyBVcGRhdGUgcGdib3VuY2VyU2VjcmV0IHRvIGNvbnRhaW4gcGdzdGFjU2VjcmV0IHZhbHVlcyBidXQgd2l0aCBuZXcgdmFsdWUgZm9yIGhvc3RcbiAgICBjb25zdCBzZWNyZXRVcGRhdGVyRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiU2VjcmV0VXBkYXRlckZ1bmN0aW9uXCIsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU19MQVRFU1QsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCJsYW1iZGEvcGdib3VuY2VyLXNlY3JldC11cGRhdGVyXCIpXG4gICAgICApLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU09VUkNFX1NFQ1JFVF9BUk46IHByb3BzLmRhdGFiYXNlLnNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFRBUkdFVF9TRUNSRVRfQVJOOiB0aGlzLnBnYm91bmNlclNlY3JldC5zZWNyZXRBcm4sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcHJvcHMuZGF0YWJhc2Uuc2VjcmV0LmdyYW50UmVhZChzZWNyZXRVcGRhdGVyRm4pO1xuICAgIHRoaXMucGdib3VuY2VyU2VjcmV0LmdyYW50V3JpdGUoc2VjcmV0VXBkYXRlckZuKTtcblxuICAgIHRoaXMuc2VjcmV0VXBkYXRlQ29tcGxldGUgPSBuZXcgQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJwZ2JvdW5jZXJTZWNyZXRCb290c3RyYXBwZXJcIixcbiAgICAgIHtcbiAgICAgICAgc2VydmljZVRva2VuOiBzZWNyZXRVcGRhdGVyRm4uZnVuY3Rpb25Bcm4sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBpbnN0YW5jZUlwOiBwcm9wcy51c2VQdWJsaWNTdWJuZXRcbiAgICAgICAgICAgID8gdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0lwXG4gICAgICAgICAgICA6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VQcml2YXRlSXAsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEFkZCBoZWFsdGggY2hlY2sgY3VzdG9tIHJlc291cmNlXG4gICAgY29uc3QgaGVhbHRoQ2hlY2tGdW5jdGlvbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJIZWFsdGhDaGVja0Z1bmN0aW9uXCIsXG4gICAgICB7XG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU19MQVRFU1QsXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEwKSxcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwibGFtYmRhL3BnYm91bmNlci1oZWFsdGgtY2hlY2tcIilcbiAgICAgICAgKSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUGdCb3VuY2VyIGhlYWx0aCBjaGVjayBmdW5jdGlvblwiLFxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBHcmFudCBTU00gcGVybWlzc2lvbnMgZm9yIGhlYWx0aCBjaGVja1xuICAgIGhlYWx0aENoZWNrRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJzc206U2VuZENvbW1hbmRcIixcbiAgICAgICAgICBcInNzbTpHZXRDb21tYW5kSW52b2NhdGlvblwiLFxuICAgICAgICAgIFwic3NtOkRlc2NyaWJlSW5zdGFuY2VJbmZvcm1hdGlvblwiLFxuICAgICAgICAgIFwic3NtOkxpc3RDb21tYW5kSW52b2NhdGlvbnNcIixcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5oZWFsdGhDaGVjayA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCBcIlBnQm91bmNlckhlYWx0aENoZWNrXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogaGVhbHRoQ2hlY2tGdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgSW5zdGFuY2VJZDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZUlkLFxuICAgICAgICAvLyBSZWZlcmVuY2UgdGhlIGRhdGFiYXNlIGJvb3RzdHJhcHBlciB0byByZS10cmlnZ2VyIG9uIGRhdGFiYXNlIGNoYW5nZXNcbiAgICAgICAgLi4uKHByb3BzLmRhdGFiYXNlQm9vdHN0cmFwcGVyICYmIHtcbiAgICAgICAgICBEYXRhYmFzZUJvb3RzdHJhcHBlclJlZjogcHJvcHMuZGF0YWJhc2VCb290c3RyYXBwZXIucmVmLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFbnN1cmUgaGVhbHRoIGNoZWNrIHJ1bnMgYWZ0ZXIgaW5zdGFuY2UgaXMgY3JlYXRlZCBidXQgYmVmb3JlIHNlY3JldCB1cGRhdGVcbiAgICB0aGlzLmhlYWx0aENoZWNrLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmluc3RhbmNlKTtcbiAgICB0aGlzLnNlY3JldFVwZGF0ZUNvbXBsZXRlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmhlYWx0aENoZWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFVzZXJEYXRhU2NyaXB0KFxuICAgIHBnQm91bmNlckNvbmZpZzogUmVxdWlyZWQ8Tm9uTnVsbGFibGU8UGdCb3VuY2VyUHJvcHNbXCJwZ0JvdW5jZXJDb25maWdcIl0+PixcbiAgICBkYXRhYmFzZTogeyBzZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQgfVxuICApOiBlYzIuVXNlckRhdGEge1xuICAgIGNvbnN0IHVzZXJEYXRhU2NyaXB0ID0gZWMyLlVzZXJEYXRhLmZvckxpbnV4KCk7XG5cbiAgICAvLyBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzXG4gICAgdXNlckRhdGFTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICAnZXhwb3J0IFNFQ1JFVF9BUk49XCInICsgZGF0YWJhc2Uuc2VjcmV0LnNlY3JldEFybiArICdcIicsXG4gICAgICAnZXhwb3J0IFJFR0lPTj1cIicgKyBTdGFjay5vZih0aGlzKS5yZWdpb24gKyAnXCInLFxuICAgICAgJ2V4cG9ydCBQT09MX01PREU9XCInICsgcGdCb3VuY2VyQ29uZmlnLnBvb2xNb2RlICsgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX0NMSUVOVF9DT05OPVwiJyArIHBnQm91bmNlckNvbmZpZy5tYXhDbGllbnRDb25uICsgJ1wiJyxcbiAgICAgICdleHBvcnQgREVGQVVMVF9QT09MX1NJWkU9XCInICsgcGdCb3VuY2VyQ29uZmlnLmRlZmF1bHRQb29sU2l6ZSArICdcIicsXG4gICAgICAnZXhwb3J0IE1JTl9QT09MX1NJWkU9XCInICsgcGdCb3VuY2VyQ29uZmlnLm1pblBvb2xTaXplICsgJ1wiJyxcbiAgICAgICdleHBvcnQgUkVTRVJWRV9QT09MX1NJWkU9XCInICsgcGdCb3VuY2VyQ29uZmlnLnJlc2VydmVQb29sU2l6ZSArICdcIicsXG4gICAgICAnZXhwb3J0IFJFU0VSVkVfUE9PTF9USU1FT1VUPVwiJyArXG4gICAgICAgIHBnQm91bmNlckNvbmZpZy5yZXNlcnZlUG9vbFRpbWVvdXQgK1xuICAgICAgICAnXCInLFxuICAgICAgJ2V4cG9ydCBNQVhfREJfQ09OTkVDVElPTlM9XCInICsgcGdCb3VuY2VyQ29uZmlnLm1heERiQ29ubmVjdGlvbnMgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBNQVhfVVNFUl9DT05ORUNUSU9OUz1cIicgKyBwZ0JvdW5jZXJDb25maWcubWF4VXNlckNvbm5lY3Rpb25zICsgJ1wiJ1xuICAgICk7XG5cbiAgICAvLyBMb2FkIHRoZSBzdGFydHVwIHNjcmlwdFxuICAgIGNvbnN0IHNjcmlwdFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4vcGdib3VuY2VyLXNldHVwLnNoXCIpO1xuICAgIGxldCBzY3JpcHQgPSBmcy5yZWFkRmlsZVN5bmMoc2NyaXB0UGF0aCwgXCJ1dGY4XCIpO1xuXG4gICAgdXNlckRhdGFTY3JpcHQuYWRkQ29tbWFuZHMoc2NyaXB0KTtcblxuICAgIHJldHVybiB1c2VyRGF0YVNjcmlwdDtcbiAgfVxufVxuIl19
|
package/lib/database/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CustomResource, aws_ec2 as ec2, aws_rds as rds, aws_secretsmanager as secretsmanager } from "aws-cdk-lib";
|
|
1
|
+
import { CustomResource, aws_ec2 as ec2, aws_rds as rds, aws_secretsmanager as secretsmanager, aws_ssm as ssm } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { CustomLambdaFunctionProps } from "../utils";
|
|
4
4
|
/**
|
|
@@ -53,6 +53,7 @@ export declare class PgStacDatabase extends Construct {
|
|
|
53
53
|
readonly securityGroup?: ec2.SecurityGroup;
|
|
54
54
|
readonly secretBootstrapper?: CustomResource;
|
|
55
55
|
readonly pgbouncerHealthCheck?: CustomResource;
|
|
56
|
+
readonly pgbouncerInstanceId?: string;
|
|
56
57
|
constructor(scope: Construct, id: string, props: PgStacDatabaseProps);
|
|
57
58
|
getParameters(instanceType: string, parameters: PgStacDatabaseProps["parameters"]): DatabaseParameters;
|
|
58
59
|
}
|
|
@@ -93,6 +94,19 @@ export interface PgStacDatabaseProps extends rds.DatabaseInstanceProps {
|
|
|
93
94
|
* @default - defined in the construct
|
|
94
95
|
*/
|
|
95
96
|
readonly pgbouncerInstanceProps?: ec2.InstanceProps | any;
|
|
97
|
+
/**
|
|
98
|
+
* Add patching system using AWS SSM for pgbouncer instance maintenance
|
|
99
|
+
* `addPgbouncer` must be true for this to have an effect
|
|
100
|
+
*
|
|
101
|
+
* @default true
|
|
102
|
+
*/
|
|
103
|
+
readonly addPatchManager?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Custom maintenance window for patching
|
|
106
|
+
*
|
|
107
|
+
* @default - A new maintenance window will be created, defined in construct
|
|
108
|
+
*/
|
|
109
|
+
readonly maintenanceWindow?: ssm.CfnMaintenanceWindow;
|
|
96
110
|
/**
|
|
97
111
|
* Lambda function Custom Resource properties. A custom resource property is going to be created
|
|
98
112
|
* to trigger the boostrapping lambda function. This parameter allows the user to specify additional properties
|