eoapi-cdk 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -3932,7 +3932,7 @@
3932
3932
  "kind": "interface",
3933
3933
  "locationInModule": {
3934
3934
  "filename": "lib/database/index.ts",
3935
- "line": 274
3935
+ "line": 280
3936
3936
  },
3937
3937
  "name": "DatabaseParameters",
3938
3938
  "properties": [
@@ -3945,7 +3945,7 @@
3945
3945
  "immutable": true,
3946
3946
  "locationInModule": {
3947
3947
  "filename": "lib/database/index.ts",
3948
- "line": 290
3948
+ "line": 296
3949
3949
  },
3950
3950
  "name": "effectiveCacheSize",
3951
3951
  "type": {
@@ -3961,7 +3961,7 @@
3961
3961
  "immutable": true,
3962
3962
  "locationInModule": {
3963
3963
  "filename": "lib/database/index.ts",
3964
- "line": 300
3964
+ "line": 306
3965
3965
  },
3966
3966
  "name": "maintenanceWorkMem",
3967
3967
  "type": {
@@ -3977,7 +3977,7 @@
3977
3977
  "immutable": true,
3978
3978
  "locationInModule": {
3979
3979
  "filename": "lib/database/index.ts",
3980
- "line": 278
3980
+ "line": 284
3981
3981
  },
3982
3982
  "name": "maxConnections",
3983
3983
  "type": {
@@ -3993,7 +3993,7 @@
3993
3993
  "immutable": true,
3994
3994
  "locationInModule": {
3995
3995
  "filename": "lib/database/index.ts",
3996
- "line": 305
3996
+ "line": 311
3997
3997
  },
3998
3998
  "name": "maxLocksPerTransaction",
3999
3999
  "type": {
@@ -4009,7 +4009,7 @@
4009
4009
  "immutable": true,
4010
4010
  "locationInModule": {
4011
4011
  "filename": "lib/database/index.ts",
4012
- "line": 320
4012
+ "line": 326
4013
4013
  },
4014
4014
  "name": "randomPageCost",
4015
4015
  "type": {
@@ -4025,7 +4025,7 @@
4025
4025
  "immutable": true,
4026
4026
  "locationInModule": {
4027
4027
  "filename": "lib/database/index.ts",
4028
- "line": 315
4028
+ "line": 321
4029
4029
  },
4030
4030
  "name": "seqPageCost",
4031
4031
  "type": {
@@ -4042,7 +4042,7 @@
4042
4042
  "immutable": true,
4043
4043
  "locationInModule": {
4044
4044
  "filename": "lib/database/index.ts",
4045
- "line": 285
4045
+ "line": 291
4046
4046
  },
4047
4047
  "name": "sharedBuffers",
4048
4048
  "type": {
@@ -4058,7 +4058,7 @@
4058
4058
  "immutable": true,
4059
4059
  "locationInModule": {
4060
4060
  "filename": "lib/database/index.ts",
4061
- "line": 310
4061
+ "line": 316
4062
4062
  },
4063
4063
  "name": "tempBuffers",
4064
4064
  "type": {
@@ -4074,7 +4074,7 @@
4074
4074
  "immutable": true,
4075
4075
  "locationInModule": {
4076
4076
  "filename": "lib/database/index.ts",
4077
- "line": 295
4077
+ "line": 301
4078
4078
  },
4079
4079
  "name": "workMem",
4080
4080
  "type": {
@@ -4321,7 +4321,7 @@
4321
4321
  },
4322
4322
  "locationInModule": {
4323
4323
  "filename": "lib/database/index.ts",
4324
- "line": 43
4324
+ "line": 44
4325
4325
  },
4326
4326
  "parameters": [
4327
4327
  {
@@ -4356,7 +4356,7 @@
4356
4356
  },
4357
4357
  "locationInModule": {
4358
4358
  "filename": "lib/database/index.ts",
4359
- "line": 180
4359
+ "line": 186
4360
4360
  },
4361
4361
  "name": "getParameters",
4362
4362
  "parameters": [
@@ -4411,6 +4411,21 @@
4411
4411
  }
4412
4412
  }
4413
4413
  },
4414
+ {
4415
+ "docs": {
4416
+ "stability": "experimental"
4417
+ },
4418
+ "immutable": true,
4419
+ "locationInModule": {
4420
+ "filename": "lib/database/index.ts",
4421
+ "line": 42
4422
+ },
4423
+ "name": "secretBootstrapper",
4424
+ "optional": true,
4425
+ "type": {
4426
+ "fqn": "aws-cdk-lib.CustomResource"
4427
+ }
4428
+ },
4414
4429
  {
4415
4430
  "docs": {
4416
4431
  "stability": "experimental"
@@ -4468,7 +4483,7 @@
4468
4483
  "kind": "interface",
4469
4484
  "locationInModule": {
4470
4485
  "filename": "lib/database/index.ts",
4471
- "line": 220
4486
+ "line": 226
4472
4487
  },
4473
4488
  "name": "PgStacDatabaseProps",
4474
4489
  "properties": [
@@ -4482,7 +4497,7 @@
4482
4497
  "immutable": true,
4483
4498
  "locationInModule": {
4484
4499
  "filename": "lib/database/index.ts",
4485
- "line": 254
4500
+ "line": 260
4486
4501
  },
4487
4502
  "name": "addPgbouncer",
4488
4503
  "optional": true,
@@ -4500,7 +4515,7 @@
4500
4515
  "immutable": true,
4501
4516
  "locationInModule": {
4502
4517
  "filename": "lib/database/index.ts",
4503
- "line": 271
4518
+ "line": 277
4504
4519
  },
4505
4520
  "name": "bootstrapperLambdaFunctionOptions",
4506
4521
  "optional": true,
@@ -4518,7 +4533,7 @@
4518
4533
  "immutable": true,
4519
4534
  "locationInModule": {
4520
4535
  "filename": "lib/database/index.ts",
4521
- "line": 262
4536
+ "line": 268
4522
4537
  },
4523
4538
  "name": "customResourceProperties",
4524
4539
  "optional": true,
@@ -4541,7 +4556,7 @@
4541
4556
  "immutable": true,
4542
4557
  "locationInModule": {
4543
4558
  "filename": "lib/database/index.ts",
4544
- "line": 226
4559
+ "line": 232
4545
4560
  },
4546
4561
  "name": "pgstacDbName",
4547
4562
  "optional": true,
@@ -4559,7 +4574,7 @@
4559
4574
  "immutable": true,
4560
4575
  "locationInModule": {
4561
4576
  "filename": "lib/database/index.ts",
4562
- "line": 247
4577
+ "line": 253
4563
4578
  },
4564
4579
  "name": "pgstacUsername",
4565
4580
  "optional": true,
@@ -4577,7 +4592,7 @@
4577
4592
  "immutable": true,
4578
4593
  "locationInModule": {
4579
4594
  "filename": "lib/database/index.ts",
4580
- "line": 233
4595
+ "line": 239
4581
4596
  },
4582
4597
  "name": "pgstacVersion",
4583
4598
  "optional": true,
@@ -4595,7 +4610,7 @@
4595
4610
  "immutable": true,
4596
4611
  "locationInModule": {
4597
4612
  "filename": "lib/database/index.ts",
4598
- "line": 240
4613
+ "line": 246
4599
4614
  },
4600
4615
  "name": "secretsPrefix",
4601
4616
  "optional": true,
@@ -5603,6 +5618,6 @@
5603
5618
  "symbolId": "lib/titiler-pgstac-api/index:TitilerPgstacApiLambda"
5604
5619
  }
5605
5620
  },
5606
- "version": "7.5.0",
5607
- "fingerprint": "T40DSELPsAP955iV1u6Zc7g/8YGO+46Aw8q71FvTqgQ="
5621
+ "version": "7.6.0",
5622
+ "fingerprint": "pfxqE9/oHZrE80dhg8NjA4NvrK/PhGVVSqhymjz84/8="
5608
5623
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [7.6.0](https://github.com/developmentseed/eoapi-cdk/compare/v7.5.1...v7.6.0) (2025-02-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * update ingestor-api runtime dependencies ([#125](https://github.com/developmentseed/eoapi-cdk/issues/125)) ([562955d](https://github.com/developmentseed/eoapi-cdk/commit/562955d02f925e3ce8101cc2f64dfab6553c28b8))
7
+
8
+ ## [7.5.1](https://github.com/developmentseed/eoapi-cdk/compare/v7.5.0...v7.5.1) (2025-02-06)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * ensure db bootstrapper runs on each deploy ([#124](https://github.com/developmentseed/eoapi-cdk/issues/124)) ([bb4bff8](https://github.com/developmentseed/eoapi-cdk/commit/bb4bff8fd4a93fea6cce4bd7fcb8de60807ee37a))
14
+
1
15
  # [7.5.0](https://github.com/developmentseed/eoapi-cdk/compare/v7.4.2...v7.5.0) (2025-02-04)
2
16
 
3
17
 
@@ -81,18 +81,16 @@ class pgStacInfraStack(Stack):
81
81
  instance_type=aws_ec2.InstanceType(app_config.db_instance_type),
82
82
  add_pgbouncer=True,
83
83
  removal_policy=RemovalPolicy.DESTROY,
84
+ pgstac_version="0.9.2",
84
85
  )
85
86
 
86
87
  assert pgstac_db.security_group
87
88
 
88
- # make sure we can get the secret value!
89
- assert pgstac_db.pgstac_secret.secret_value_from_json("host").to_string()
90
-
91
89
  pgstac_db.security_group.add_ingress_rule(
92
90
  aws_ec2.Peer.any_ipv4(), aws_ec2.Port.tcp(5432)
93
91
  )
94
92
 
95
- PgStacApiLambda(
93
+ stac_api = PgStacApiLambda(
96
94
  self,
97
95
  "pgstac-api",
98
96
  db=pgstac_db.connection_target,
@@ -100,9 +98,16 @@ class pgStacInfraStack(Stack):
100
98
  api_env={
101
99
  "NAME": app_config.build_service_name("STAC API"),
102
100
  "description": f"{app_config.stage} STAC API",
101
+ # test that we can use the pgbouncer secret in downstream resources
102
+ "POSTGRES_HOST": pgstac_db.pgstac_secret.secret_value_from_json(
103
+ "host"
104
+ ).to_string(),
103
105
  },
104
106
  )
105
107
 
108
+ # make sure stac_api does not try to build before the secret has been boostrapped
109
+ stac_api.node.add_dependency(pgstac_db.secret_bootstrapper)
110
+
106
111
  TitilerPgstacApiLambda(
107
112
  self,
108
113
  "titiler-pgstac-api",
@@ -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: "7.5.0" };
161
+ BastionHost[_a] = { fqn: "eoapi-cdk.BastionHost", version: "7.6.0" };
162
162
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQU1xQjtBQUNyQiwyQ0FBdUM7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpR0c7QUFDSCxNQUFhLFdBQVksU0FBUSxzQkFBUztJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUscUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2pELFlBQVksRUFBRSxHQUFHLFNBQVMsZUFBZTtZQUN6QyxZQUFZLEVBQUUscUJBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixxQkFBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFDckMscUJBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QjtZQUNELFlBQVksRUFBRSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLHFCQUFHLENBQUMscUJBQXFCLENBQUMsY0FBYztnQkFDcEQsT0FBTyxFQUFFLHFCQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTTthQUN2QyxDQUFDO1lBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLHFCQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7Z0JBQ3BDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDMUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQy9CLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDdEMscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNsQixvQ0FBb0MsQ0FDckMsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ2pDLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDbkIscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQ2pDLFlBQVksQ0FDYixDQUFDO1FBQ0osQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZiwrQkFBK0I7Z0JBQy9CLGVBQWU7YUFDaEI7WUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDakIsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7WUFDL0IsVUFBVSxFQUFFLEdBQUcsU0FBUyxjQUFjO1NBQ3ZDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUU7WUFDL0MsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1lBQ3JDLFVBQVUsRUFBRSxHQUFHLFNBQVMscUJBQXFCO1NBQzlDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUU7WUFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCO1lBQzFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsa0JBQWtCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekVILGtDQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19yZHMgYXMgcmRzLFxuICBDZm5PdXRwdXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9jYXRlZCBpbiBhbiBpc29sYXRlZCBzdWJuZXQsIG1lYW5pbmcgdGhhdCBpdCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBwdWJsaWMgaW50ZXJuZXQuIEFzIHN1Y2gsIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGRpcmVjdGx5LCBhIHVzZXIgbXVzdCB0dW5uZWwgdGhyb3VnaCBhIGJhc3Rpb24gaG9zdC5cbiAqXG4gKiAjIyMgQ29uZmlndXJpbmdcbiAqXG4gKiBUaGlzIGNvZGViYXNlIGNvbnRyb2xzIF93aG9fIGlzIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgYmFzdGlvbiBob3N0LiBUaGlzIHJlcXVpcmVzIHR3byBzdGVwczpcbiAqXG4gKiAxLiBBZGRpbmcgdGhlIElQIGFkZHJlc3MgZnJvbSB3aGljaCB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gdGhlIGBpcHY0QWxsb3dsaXN0YCBhcnJheVxuICogMS4gQ3JlYXRpbmcgYSBiYXN0aW9uIGhvc3Qgc3lzdGVtIHVzZXIgYnkgYWRkaW5nIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBpbmZvcm0gdG8gYHVzZXJkYXRhLnlhbWxgXG4gKlxuICogIyMjIyBBZGRpbmcgYW4gSVAgYWRkcmVzcyB0byB0aGUgYGlwdjRBbGxvd2xpc3RgIGFycmF5XG4gKlxuICogVGhlIGBCYXN0aW9uSG9zdGAgY29uc3RydWN0IHRha2VzIGluIGFuIGBpcHY0QWxsb3dsaXN0YCBhcnJheSBhcyBhbiBhcmd1bWVudC4gRmluZCB5b3VyIElQIGFkZHJlc3MgKGVnIGBjdXJsIGFwaS5pcGlmeS5vcmdgKSBhbmQgYWRkIHRoYXQgdG8gdGhlIGFycmF5IGFsb25nIHdpdGggdGhlIHRyYWlsaW5nIENJRFIgYmxvY2sgKGxpa2VseSBgLzMyYCB0byBpbmRpY2F0ZSB0aGF0IHlvdSBhcmUgYWRkaW5nIGEgc2luZ2xlIElQIGFkZHJlc3MpLlxuICpcbiAqICMjIyMgQ3JlYXRpbmcgYSB1c2VyIHZpYSBgdXNlcmRhdGEueWFtbGBcbiAqXG4gKiBBZGQgYW4gZW50cnkgdG8gdGhlIGB1c2Vyc2AgYXJyYXkgd2l0aCBhIHVzZXJuYW1lIChsaWtlbHkgbWF0Y2hpbmcgeW91ciBsb2NhbCBzeXN0ZW1zIHVzZXJuYW1lLCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIHRoZSBgd2hvYW1pYCBjb21tYW5kIGluIHlvdXIgdGVybWluYWwpIGFuZCBhIHB1YmxpYyBrZXkgKGxpa2VseSB5b3VyIGRlZmF1bHQgcHVibGljIGtleSwgd2hpY2ggeW91IGNhbiBnZXQgYnkgcnVubmluZyBgY2F0IH4vLnNzaC9pZF8qLnB1YmAgaW4geW91ciB0ZXJtaW5hbCkuXG4gKlxuICogIyMjIyBUaXBzICYgVHJpY2tzIHdoZW4gdXNpbmcgdGhlIEJhc3Rpb24gSG9zdFxuICpcbiAqICoqQ29ubmVjdGluZyB0byBSRFMgSW5zdGFuY2UgdmlhIFNTTSoqXG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgXFxcbiAqIC0tZG9jdW1lbnQtbmFtZSBBV1MtU3RhcnRQb3J0Rm9yd2FyZGluZ1Nlc3Npb25Ub1JlbW90ZUhvc3QgXFxcbiAqIC0tcGFyYW1ldGVycyAne1xuICogXCJob3N0XCI6IFtcbiAqIFwiZXhhbXBsZS1kYi5jNWFiY2RlZmdoaWoudXMtd2VzdC0yLnJkcy5hbWF6b25hd3MuY29tXCJcbiAqIF0sXG4gKiBcInBvcnROdW1iZXJcIjogW1xuICogXCI1NDMyXCJcbiAqIF0sXG4gKiBcImxvY2FsUG9ydE51bWJlclwiOiBbXG4gKiBcIjk5OTlcIlxuICogXVxuICogfScgXFxcbiAqIC0tcHJvZmlsZSAkQVdTX1BST0ZJTEVcbiAqIGBgYFxuICpcbiAqIGBgYHNoXG4gKiBwc3FsIC1oIGxvY2FsaG9zdCAtcCA5OTk5ICMgY29udGludWUgYWRkaW5nIHVzZXJuYW1lICgtVSkgYW5kIGRiICgtZCkgaGVyZS4uLlxuICogYGBgXG4gKlxuICogQ29ubmVjdCBkaXJlY3RseSB0byBCYXN0aW9uIEhvc3Q6XG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgLS1wcm9maWxlICRBV1NfUFJPRklMRVxuICogYGBgXG4gKlxuICogKipTZXR0aW5nIHVwIGFuIFNTSCB0dW5uZWwqKlxuICpcbiAqIEluIHlvdXIgYH4vLnNzaC9jb25maWdgIGZpbGUsIGFkZCBhbiBlbnRyeSBsaWtlOlxuICpcbiAqIGBgYFxuICogSG9zdCBkYi10dW5uZWxcbiAqIEhvc3RuYW1lIHt0aGUtYmFzdGlvbi1ob3N0LWFkZHJlc3N9XG4gKiBMb2NhbEZvcndhcmQgOTk5OSB7dGhlLWRiLWhvc3RuYW1lfTo1NDMyXG4gKiBgYGBcbiAqXG4gKiBUaGVuIGEgdHVubmVsIGNhbiBiZSBvcGVuZWQgdmlhOlxuICpcbiAqIGBgYFxuICogc3NoIC1OIGRiLXR1bm5lbFxuICogYGBgXG4gKlxuICogQW5kIGEgY29ubmVjdGlvbiB0byB0aGUgREIgY2FuIGJlIG1hZGUgdmlhOlxuICpcbiAqIGBgYFxuICogcHNxbCAtaCAxMjcuMC4wLjEgLXAgOTk5OSAtVSB7dXNlcm5hbWV9IC1kIHtkYXRhYmFzZX1cbiAqIGBgYFxuICpcbiAqICoqSGFuZGxpbmcgYFJFTU9URSBIT1NUIElERU5USUZJQ0FUSU9OIEhBUyBDSEFOR0VEIWAgZXJyb3IqKlxuICpcbiAqIElmIHlvdSd2ZSByZWRlcGxveWVkIGEgYmFzdGlvbiBob3N0IHRoYXQgeW91J3ZlIHByZXZpb3VzbHkgY29ubmVjdGVkIHRvLCB5b3UgbWF5IHNlZSBhbiBlcnJvciBsaWtlOlxuICpcbiAqIGBgYFxuICogQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBcbiAqIEAgICAgV0FSTklORzogUkVNT1RFIEhPU1QgSURFTlRJRklDQVRJT04gSEFTIENIQU5HRUQhICAgICBAXG4gKiBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFxuICogSVQgSVMgUE9TU0lCTEUgVEhBVCBTT01FT05FIElTIERPSU5HIFNPTUVUSElORyBOQVNUWSFcbiAqIFNvbWVvbmUgY291bGQgYmUgZWF2ZXNkcm9wcGluZyBvbiB5b3UgcmlnaHQgbm93IChtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2spIVxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0IGEgaG9zdCBrZXkgaGFzIGp1c3QgYmVlbiBjaGFuZ2VkLlxuICogVGhlIGZpbmdlcnByaW50IGZvciB0aGUgRUNEU0Ega2V5IHNlbnQgYnkgdGhlIHJlbW90ZSBob3N0IGlzXG4gKiBTSEEyNTY6bVBueEFPWFRwYjA2UEZnSTFRYzhUTVEyZTliN2dvVTh5Mk5kUzVoeklyOC5cbiAqIFBsZWFzZSBjb250YWN0IHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IuXG4gKiBBZGQgY29ycmVjdCBob3N0IGtleSBpbiAvVXNlcnMvdXNlcm5hbWUvLnNzaC9rbm93bl9ob3N0cyB0byBnZXQgcmlkIG9mIHRoaXMgbWVzc2FnZS5cbiAqIE9mZmVuZGluZyBFQ0RTQSBrZXkgaW4gL1VzZXJzL3VzZXJuYW1lLy5zc2gva25vd25faG9zdHM6MjhcbiAqIEVDRFNBIGhvc3Qga2V5IGZvciBlYzItMTItMzQtNTYtNzg5LnVzLXdlc3QtMi5jb21wdXRlLmFtYXpvbmF3cy5jb20gaGFzIGNoYW5nZWQgYW5kIHlvdSBoYXZlIHJlcXVlc3RlZCBzdHJpY3QgY2hlY2tpbmcuXG4gKiBIb3N0IGtleSB2ZXJpZmljYXRpb24gZmFpbGVkLlxuICogYGBgXG4gKlxuICogVGhpcyBpcyBkdWUgdG8gdGhlIHNlcnZlcidzIGZpbmdlcnByaW50IGNoYW5naW5nLiBXZSBjYW4gc2NydWIgdGhlIGZpbmdlcnByaW50IGZyb20gb3VyIHN5c3RlbSB3aXRoIGEgY29tbWFuZCBsaWtlOlxuICpcbiAqIGBgYFxuICogc3NoLWtleWdlbiAtUiAxMi4zNC41Ni43ODlcbiAqIGBgYFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc3Rpb25Ib3N0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgaW5zdGFuY2U6IGVjMi5JbnN0YW5jZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFzdGlvbkhvc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IHN0YWNrTmFtZSB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICAvLyBCdWlsZCBlYzIgaW5zdGFuY2VcbiAgICB0aGlzLmluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcImJhc3Rpb24taG9zdFwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgICBpbnN0YW5jZU5hbWU6IGAke3N0YWNrTmFtZX0gYmFzdGlvbiBob3N0YCxcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5OQU5PXG4gICAgICApLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4KHtcbiAgICAgICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgICB9KSxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YSxcbiAgICAgIHVzZXJEYXRhQ2F1c2VzUmVwbGFjZW1lbnQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBc3NpZ24gZWxhc3RpYyBJUFxuICAgIGlmIChwcm9wcy5jcmVhdGVFbGFzdGljSXAgPz8gdHJ1ZSkge1xuICAgICAgbmV3IGVjMi5DZm5FSVAodGhpcywgXCJJUFwiLCB7XG4gICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgdGFnczogW3sga2V5OiBcIk5hbWVcIiwgdmFsdWU6IHN0YWNrTmFtZSB9XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFsbG93IGJhc3Rpb24gaG9zdCB0byBjb25uZWN0IHRvIGRiXG4gICAgdGhpcy5pbnN0YW5jZS5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgcHJvcHMuZGIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICBlYzIuUG9ydC50Y3AoNTQzMiksXG4gICAgICBcIkFsbG93IGNvbm5lY3Rpb24gZnJvbSBiYXN0aW9uIGhvc3RcIlxuICAgICk7XG5cbiAgICAvLyBBbGxvdyBJUCBhY2Nlc3MgdG8gYmFzdGlvbiBob3N0XG4gICAgZm9yIChjb25zdCBpcHY0IG9mIHByb3BzLmlwdjRBbGxvd2xpc3QpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgICBlYzIuUGVlci5pcHY0KGlwdjQpLFxuICAgICAgICBlYzIuUG9ydC50Y3AocHJvcHMuc3NoUG9ydCB8fCAyMiksXG4gICAgICAgIFwiU1NIIEFjY2Vzc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEludGVncmF0ZSB3aXRoIFNTTVxuICAgIHRoaXMuaW5zdGFuY2UuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJzc21tZXNzYWdlczoqXCIsXG4gICAgICAgICAgXCJzc206VXBkYXRlSW5zdGFuY2VJbmZvcm1hdGlvblwiLFxuICAgICAgICAgIFwiZWMybWVzc2FnZXM6KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtaWQtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtzdGFja05hbWV9LWluc3RhbmNlLWlkYCxcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtcHVibGljLWlwLW91dHB1dFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0lwLFxuICAgICAgZXhwb3J0TmFtZTogYCR7c3RhY2tOYW1lfS1pbnN0YW5jZS1wdWJsaWMtaXBgLFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJpbnN0YW5jZS1wdWJsaWMtZG5zLW5hbWUtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3N0YWNrTmFtZX0tcHVibGljLWRucy1uYW1lYCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc3Rpb25Ib3N0UHJvcHMge1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBkYjogcmRzLklEYXRhYmFzZUluc3RhbmNlO1xuICByZWFkb25seSB1c2VyRGF0YTogZWMyLlVzZXJEYXRhO1xuICByZWFkb25seSBpcHY0QWxsb3dsaXN0OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgc3NoUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gZWxhc3RpYyBJUCBzaG91bGQgYmUgY3JlYXRlZCBmb3IgdGhlIGJhc3Rpb24gaG9zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUVsYXN0aWNJcD86IGJvb2xlYW47XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { aws_rds as rds, aws_ec2 as ec2, aws_secretsmanager as secretsmanager } from "aws-cdk-lib";
1
+ import { aws_rds as rds, aws_ec2 as ec2, aws_secretsmanager as secretsmanager, CustomResource } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
3
  import { CustomLambdaFunctionProps } from "../utils";
4
4
  /**
@@ -12,6 +12,7 @@ export declare class PgStacDatabase extends Construct {
12
12
  private _pgBouncerServer?;
13
13
  readonly connectionTarget: rds.IDatabaseInstance | ec2.Instance;
14
14
  readonly securityGroup?: ec2.SecurityGroup;
15
+ readonly secretBootstrapper?: CustomResource;
15
16
  constructor(scope: Construct, id: string, props: PgStacDatabaseProps);
16
17
  getParameters(instanceType: string, parameters: PgStacDatabaseProps["parameters"]): DatabaseParameters;
17
18
  }
@@ -23,10 +24,10 @@ export interface PgStacDatabaseProps extends rds.DatabaseInstanceProps {
23
24
  */
24
25
  readonly pgstacDbName?: string;
25
26
  /**
26
- * Version of pgstac to install on the database
27
- *
28
- * @default 0.8.5
29
- */
27
+ * Version of pgstac to install on the database
28
+ *
29
+ * @default 0.8.5
30
+ */
30
31
  readonly pgstacVersion?: string;
31
32
  /**
32
33
  * Prefix to assign to the generated `secrets_manager.Secret`
@@ -54,7 +54,7 @@ class PgStacDatabase extends constructs_1.Construct {
54
54
  code: aws_cdk_lib_1.aws_lambda.Code.fromDockerBuild(__dirname, {
55
55
  file: "bootstrapper_runtime/Dockerfile",
56
56
  buildArgs: {
57
- PYTHON_VERSION: "3.11"
57
+ PYTHON_VERSION: "3.11",
58
58
  },
59
59
  }),
60
60
  vpc: hasVpc(this.db) ? this.db.vpc : props.vpc,
@@ -97,15 +97,17 @@ class PgStacDatabase extends constructs_1.Construct {
97
97
  this.pgstacSecret.secretArn;
98
98
  // if props.lambdaFunctionOptions doesn't have 'code' defined, update pgstac_version (needed for default runtime)
99
99
  if (!props.bootstrapperLambdaFunctionOptions?.code) {
100
- customResourceProperties["pgstac_version"] = props.pgstacVersion || DEFAULT_PGSTAC_VERSION;
100
+ customResourceProperties["pgstac_version"] =
101
+ props.pgstacVersion || DEFAULT_PGSTAC_VERSION;
101
102
  }
102
- // this.connections = props.database.connections;
103
+ // add timestamp to properties to ensure the Lambda gets re-executed on each deploy
104
+ customResourceProperties["timestamp"] = new Date().toISOString();
103
105
  const bootstrapper = new aws_cdk_lib_1.CustomResource(this, "bootstrapper", {
104
106
  serviceToken: handler.functionArn,
105
107
  properties: customResourceProperties,
106
108
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN, // This retains the custom resource (which doesn't really exist), not the database
107
109
  });
108
- // PgBouncer: connection pooler
110
+ // PgBouncer: connection poolercustomresource trigger on redeploy
109
111
  const addPgbouncer = props.addPgbouncer ?? true;
110
112
  if (addPgbouncer) {
111
113
  this._pgBouncerServer = new PgBouncer_1.PgBouncer(this, "pgbouncer", {
@@ -132,6 +134,7 @@ class PgStacDatabase extends constructs_1.Construct {
132
134
  this.pgstacSecret = this._pgBouncerServer.pgbouncerSecret;
133
135
  this.connectionTarget = this._pgBouncerServer.instance;
134
136
  this.securityGroup = this._pgBouncerServer.securityGroup;
137
+ this.secretBootstrapper = this._pgBouncerServer.secretUpdateComplete;
135
138
  }
136
139
  else {
137
140
  this.connectionTarget = this.db;
@@ -171,5 +174,5 @@ class PgStacDatabase extends constructs_1.Construct {
171
174
  }
172
175
  exports.PgStacDatabase = PgStacDatabase;
173
176
  _a = JSII_RTTI_SYMBOL_1;
174
- PgStacDatabase[_a] = { fqn: "eoapi-cdk.PgStacDatabase", version: "7.5.0" };
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFFdkMsMkNBQXdDO0FBRXhDLE1BQU0sYUFBYSxHQUEyQixPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNoRixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUV2QyxJQUFJLDBCQUEwQixHQUEyQjtJQUN2RCxPQUFPLEVBQUUsT0FBTztJQUNoQixZQUFZLEVBQUUsTUFBTTtDQUNyQixDQUFDO0FBRUYsU0FBUyxNQUFNLENBQ2IsUUFBc0Q7SUFFdEQsT0FBUSxRQUFpQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQVEzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMxQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGNBQWM7Z0JBQ2pELGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUMvQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7Z0JBQzFELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO2dCQUNuQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7Z0JBQzFELHlCQUF5QixFQUFFLGlCQUFpQixDQUFDLHNCQUFzQjtnQkFDbkUsWUFBWSxFQUFFLGlCQUFpQixDQUFDLFdBQVc7Z0JBQzNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxXQUFXO2dCQUM1QyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxjQUFjO2dCQUNsRCxHQUFHLEtBQUssQ0FBQyxVQUFVO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtZQUM3QyxrQkFBa0IsRUFBRSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTO1lBQzVDLGNBQWM7WUFDZCxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLE9BQU8sR0FBRyxJQUFJLHdCQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDdEQsV0FBVztZQUNYLE9BQU8sRUFBRSx3QkFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsVUFBVSxFQUFFLEdBQUc7WUFDZixZQUFZLEVBQUUsc0JBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM3QyxPQUFPLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksRUFBRSx3QkFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO2dCQUMvQyxJQUFJLEVBQUUsaUNBQWlDO2dCQUN2QyxTQUFTLEVBQUU7b0JBQ1QsY0FBYyxFQUFFLE1BQU07aUJBQ3ZCO2FBQ0YsQ0FBQztZQUNGLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDOUMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixrRUFBa0U7WUFDbEUsR0FBRyxLQUFLLENBQUMsaUNBQWlDO1NBQzNDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDeEUsVUFBVSxFQUFFO2dCQUNWLEtBQUssQ0FBQyxhQUFhLElBQUksUUFBUTtnQkFDL0IsRUFBRTtnQkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ1gsb0JBQW9CLEVBQUU7Z0JBQ3BCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ25DLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLFFBQVE7b0JBQ3RDLE1BQU0sRUFBRSxVQUFVO29CQUNsQixJQUFJLEVBQUUsSUFBSTtvQkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO29CQUN2QyxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxhQUFhO2lCQUNoRCxDQUFDO2dCQUNGLGlCQUFpQixFQUFFLFVBQVU7Z0JBQzdCLGtCQUFrQixFQUFFLElBQUk7YUFDekI7WUFDRCxXQUFXLEVBQUUsbUNBQ1gsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FDakIsRUFBRTtTQUNILENBQUMsQ0FBQztRQUVILHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxxQkFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLHdCQUF3QixHQUMxQixLQUFLLENBQUMsd0JBQXdCO1lBQzVCLENBQUMsQ0FBQyxFQUFFLEdBQUcsMEJBQTBCLEVBQUUsR0FBRyxLQUFLLENBQUMsd0JBQXdCLEVBQUU7WUFDdEUsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1FBRWpDLG9CQUFvQjtRQUNwQix3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTyxDQUFDLFNBQVMsQ0FBQztRQUN4RSx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQztZQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUU5QixpSEFBaUg7UUFDakgsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNuRCx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksc0JBQXNCLENBQUM7UUFDN0YsQ0FBQztRQUNELGlEQUFpRDtRQUNqRCxNQUFNLFlBQVksR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM1RCxZQUFZLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDakMsVUFBVSxFQUFFLHdCQUF3QjtZQUNwQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNLEVBQUUsa0ZBQWtGO1NBQ3hILENBQUMsQ0FBQztRQUVILCtCQUErQjtRQUMvQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztRQUNoRCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHFCQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDdkQsWUFBWSxFQUFFLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZO2dCQUNyRCxZQUFZLEVBQUUscUJBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixxQkFBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQ3BCLHFCQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FDdkI7Z0JBQ0QsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFFBQVEsRUFBRTtvQkFDUixXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXO29CQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQzFCO2dCQUNELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzVELGVBQWUsRUFDYixDQUFDLEtBQUssQ0FBQyxVQUFVO29CQUNqQixLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxxQkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2dCQUN2RCxlQUFlLEVBQUU7b0JBQ2YsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLGFBQWEsRUFBRSxJQUFJO29CQUNuQixlQUFlLEVBQUUsRUFBRTtvQkFDbkIsV0FBVyxFQUFFLEVBQUU7b0JBQ2YsZUFBZSxFQUFFLENBQUM7b0JBQ2xCLGtCQUFrQixFQUFFLENBQUM7aUJBQ3RCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUNsQixZQUFvQixFQUNwQixVQUE2QztRQUU3QyxvRUFBb0U7UUFDcEUsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUV4RCxrRkFBa0Y7UUFDbEYsa0ZBQWtGO1FBQ2xGLCtDQUErQztRQUMvQyxNQUFNLGNBQWMsR0FBRyxVQUFVLEVBQUUsY0FBYztZQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxvR0FBb0c7Z0JBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxNQUFNLGFBQWEsR0FBRyxVQUFVLEVBQUUsWUFBWTtZQUM1QyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQztRQUVwQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUM7UUFFNUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztRQUMvQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdEIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO1FBRTNCLE9BQU87WUFDTCxjQUFjLEVBQUUsR0FBRyxjQUFjLEVBQUU7WUFDbkMsYUFBYSxFQUFFLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtZQUNuRSxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtZQUM3RSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUU7WUFDckIsa0JBQWtCLEVBQUUsR0FBRyxrQkFBa0IsRUFBRTtZQUMzQyxzQkFBc0IsRUFBRSxNQUFNO1lBQzlCLFdBQVcsRUFBRSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSw0QkFBNEI7WUFDL0QsV0FBVyxFQUFFLEdBQUcsV0FBVyxFQUFFO1lBQzdCLGNBQWMsRUFBRSxHQUFHLGNBQWMsRUFBRTtTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7QUF0TEgsd0NBdUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19yZHMgYXMgcmRzLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxuICBhd3NfbGFtYmRhLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgRHVyYXRpb24sXG4gIGF3c19sb2dzLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBQZ0JvdW5jZXIgfSBmcm9tIFwiLi9QZ0JvdW5jZXJcIjtcblxuY29uc3QgaW5zdGFuY2VTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHJlcXVpcmUoXCIuL2luc3RhbmNlLW1lbW9yeS5qc29uXCIpO1xuY29uc3QgREVGQVVMVF9QR1NUQUNfVkVSU0lPTiA9IFwiMC44LjVcIjtcblxubGV0IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICBjb250ZXh0OiBcIkZBTFNFXCIsXG4gIG1vc2FpY19pbmRleDogXCJUUlVFXCIsXG59O1xuXG5mdW5jdGlvbiBoYXNWcGMoXG4gIGluc3RhbmNlOiByZHMuRGF0YWJhc2VJbnN0YW5jZSB8IHJkcy5JRGF0YWJhc2VJbnN0YW5jZVxuKTogaW5zdGFuY2UgaXMgcmRzLkRhdGFiYXNlSW5zdGFuY2Uge1xuICByZXR1cm4gKGluc3RhbmNlIGFzIHJkcy5EYXRhYmFzZUluc3RhbmNlKS52cGMgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBSRFMgaW5zdGFuY2Ugd2l0aCBwZ1NUQUMgaW5zdGFsbGVkLiBUaGlzIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlXG4gKiBgcmRzLkRhdGFiYXNlSW5zdGFuY2VgIGhpZ2hlci1sZXZlbCBjb25zdHJ1Y3QgbWFraW5nIHVzZVxuICogb2YgdGhlIEJvb3RzdHJhcFBnU3RhYyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQZ1N0YWNEYXRhYmFzZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGRiOiByZHMuRGF0YWJhc2VJbnN0YW5jZTtcbiAgcGdzdGFjU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICBwcml2YXRlIF9wZ0JvdW5jZXJTZXJ2ZXI/OiBQZ0JvdW5jZXI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25UYXJnZXQ6IHJkcy5JRGF0YWJhc2VJbnN0YW5jZSB8IGVjMi5JbnN0YW5jZTtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGdTdGFjRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGFyYW1ldGVycyA9IHRoaXMuZ2V0UGFyYW1ldGVycyhcbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZT8udG9TdHJpbmcoKSB8fCBcIm01LmxhcmdlXCIsXG4gICAgICBwcm9wcy5wYXJhbWV0ZXJzXG4gICAgKTtcbiAgICBjb25zdCBwYXJhbWV0ZXJHcm91cCA9IG5ldyByZHMuUGFyYW1ldGVyR3JvdXAodGhpcywgXCJwYXJhbWV0ZXJHcm91cFwiLCB7XG4gICAgICBlbmdpbmU6IHByb3BzLmVuZ2luZSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgbWF4X2Nvbm5lY3Rpb25zOiBkZWZhdWx0UGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucyxcbiAgICAgICAgc2hhcmVkX2J1ZmZlcnM6IGRlZmF1bHRQYXJhbWV0ZXJzLnNoYXJlZEJ1ZmZlcnMsXG4gICAgICAgIGVmZmVjdGl2ZV9jYWNoZV9zaXplOiBkZWZhdWx0UGFyYW1ldGVycy5lZmZlY3RpdmVDYWNoZVNpemUsXG4gICAgICAgIHdvcmtfbWVtOiBkZWZhdWx0UGFyYW1ldGVycy53b3JrTWVtLFxuICAgICAgICBtYWludGVuYW5jZV93b3JrX21lbTogZGVmYXVsdFBhcmFtZXRlcnMubWFpbnRlbmFuY2VXb3JrTWVtLFxuICAgICAgICBtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uOiBkZWZhdWx0UGFyYW1ldGVycy5tYXhMb2Nrc1BlclRyYW5zYWN0aW9uLFxuICAgICAgICB0ZW1wX2J1ZmZlcnM6IGRlZmF1bHRQYXJhbWV0ZXJzLnRlbXBCdWZmZXJzLFxuICAgICAgICBzZXFfcGFnZV9jb3N0OiBkZWZhdWx0UGFyYW1ldGVycy5zZXFQYWdlQ29zdCxcbiAgICAgICAgcmFuZG9tX3BhZ2VfY29zdDogZGVmYXVsdFBhcmFtZXRlcnMucmFuZG9tUGFnZUNvc3QsXG4gICAgICAgIC4uLnByb3BzLnBhcmFtZXRlcnMsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kYiA9IG5ldyByZHMuRGF0YWJhc2VJbnN0YW5jZSh0aGlzLCBcImRiXCIsIHtcbiAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogU3RhY2sub2YodGhpcykuc3RhY2tOYW1lLFxuICAgICAgcGFyYW1ldGVyR3JvdXAsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCBcImxhbWJkYVwiLCB7XG4gICAgICAvLyBkZWZhdWx0c1xuICAgICAgcnVudGltZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogXCJoYW5kbGVyLmhhbmRsZXJcIixcbiAgICAgIG1lbW9yeVNpemU6IDEyOCxcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMiksXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbURvY2tlckJ1aWxkKF9fZGlybmFtZSwge1xuICAgICAgICBmaWxlOiBcImJvb3RzdHJhcHBlcl9ydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgICAgUFlUSE9OX1ZFUlNJT046IFwiMy4xMVwiXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHZwYzogaGFzVnBjKHRoaXMuZGIpID8gdGhpcy5kYi52cGMgOiBwcm9wcy52cGMsXG4gICAgICBhbGxvd1B1YmxpY1N1Ym5ldDogdHJ1ZSxcbiAgICAgIC8vIG92ZXJ3cml0ZXMgZGVmYXVsdHMgd2l0aCB1c2VyLXByb3ZpZGVkIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcHMuYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsIFwiYm9vdHN0cmFwcGVyc2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldE5hbWU6IFtcbiAgICAgICAgcHJvcHMuc2VjcmV0c1ByZWZpeCB8fCBcInBnc3RhY1wiLFxuICAgICAgICBpZCxcbiAgICAgICAgdGhpcy5ub2RlLmFkZHIuc2xpY2UoLTgpLFxuICAgICAgXS5qb2luKFwiL1wiKSxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGJuYW1lOiBwcm9wcy5wZ3N0YWNEYk5hbWUgfHwgXCJwZ3N0YWNcIixcbiAgICAgICAgICBlbmdpbmU6IFwicG9zdGdyZXNcIixcbiAgICAgICAgICBwb3J0OiA1NDMyLFxuICAgICAgICAgIGhvc3Q6IHRoaXMuZGIuaW5zdGFuY2VFbmRwb2ludC5ob3N0bmFtZSxcbiAgICAgICAgICB1c2VybmFtZTogcHJvcHMucGdzdGFjVXNlcm5hbWUgfHwgXCJwZ3N0YWNfdXNlclwiLFxuICAgICAgICB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIixcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGdTVEFDIGRhdGFiYXNlIGJvb3RzdHJhcHBlZCBieSAke1xuICAgICAgICBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcbiAgICAgIH1gLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgbGFtYmRhIHRvLi4uXG4gICAgLy8gcmVhZCBuZXcgdXNlciBzZWNyZXRcbiAgICB0aGlzLnBnc3RhY1NlY3JldC5ncmFudFJlYWQoaGFuZGxlcik7XG4gICAgLy8gcmVhZCBkYXRhYmFzZSBzZWNyZXRcbiAgICB0aGlzLmRiLnNlY3JldCEuZ3JhbnRSZWFkKGhhbmRsZXIpO1xuICAgIC8vIGNvbm5lY3QgdG8gZGF0YWJhc2VcbiAgICB0aGlzLmRiLmNvbm5lY3Rpb25zLmFsbG93RnJvbShoYW5kbGVyLCBlYzIuUG9ydC50Y3AoNTQzMikpO1xuXG4gICAgbGV0IGN1c3RvbVJlc291cmNlUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9XG4gICAgICBwcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXNcbiAgICAgICAgPyB7IC4uLmRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zLCAuLi5wcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgfVxuICAgICAgICA6IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zO1xuXG4gICAgLy8gdXBkYXRlIHByb3BlcnRpZXNcbiAgICBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJjb25uX3NlY3JldF9hcm5cIl0gPSB0aGlzLmRiLnNlY3JldCEuc2VjcmV0QXJuO1xuICAgIGN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcIm5ld191c2VyX3NlY3JldF9hcm5cIl0gPVxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgLy8gaWYgcHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zIGRvZXNuJ3QgaGF2ZSAnY29kZScgZGVmaW5lZCwgdXBkYXRlIHBnc3RhY192ZXJzaW9uIChuZWVkZWQgZm9yIGRlZmF1bHQgcnVudGltZSlcbiAgICBpZiAoIXByb3BzLmJvb3RzdHJhcHBlckxhbWJkYUZ1bmN0aW9uT3B0aW9ucz8uY29kZSkge1xuICAgICAgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzW1wicGdzdGFjX3ZlcnNpb25cIl0gPSBwcm9wcy5wZ3N0YWNWZXJzaW9uIHx8IERFRkFVTFRfUEdTVEFDX1ZFUlNJT047XG4gICAgfVxuICAgIC8vIHRoaXMuY29ubmVjdGlvbnMgPSBwcm9wcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgICBjb25zdCBib290c3RyYXBwZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJib290c3RyYXBwZXJcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczogY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sIC8vIFRoaXMgcmV0YWlucyB0aGUgY3VzdG9tIHJlc291cmNlICh3aGljaCBkb2Vzbid0IHJlYWxseSBleGlzdCksIG5vdCB0aGUgZGF0YWJhc2VcbiAgICB9KTtcblxuICAgIC8vIFBnQm91bmNlcjogY29ubmVjdGlvbiBwb29sZXJcbiAgICBjb25zdCBhZGRQZ2JvdW5jZXIgPSBwcm9wcy5hZGRQZ2JvdW5jZXIgPz8gdHJ1ZTtcbiAgICBpZiAoYWRkUGdib3VuY2VyKSB7XG4gICAgICB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIgPSBuZXcgUGdCb3VuY2VyKHRoaXMsIFwicGdib3VuY2VyXCIsIHtcbiAgICAgICAgaW5zdGFuY2VOYW1lOiBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LXBnYm91bmNlcmAsXG4gICAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UMyxcbiAgICAgICAgICBlYzIuSW5zdGFuY2VTaXplLk1JQ1JPXG4gICAgICAgICksXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZToge1xuICAgICAgICAgIGNvbm5lY3Rpb25zOiB0aGlzLmRiLmNvbm5lY3Rpb25zLFxuICAgICAgICAgIHNlY3JldDogdGhpcy5wZ3N0YWNTZWNyZXQsXG4gICAgICAgIH0sXG4gICAgICAgIGRiTWF4Q29ubmVjdGlvbnM6IHBhcnNlSW50KGRlZmF1bHRQYXJhbWV0ZXJzLm1heENvbm5lY3Rpb25zKSxcbiAgICAgICAgdXNlUHVibGljU3VibmV0OlxuICAgICAgICAgICFwcm9wcy52cGNTdWJuZXRzIHx8XG4gICAgICAgICAgcHJvcHMudnBjU3VibmV0cy5zdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgIHBnQm91bmNlckNvbmZpZzoge1xuICAgICAgICAgIHBvb2xNb2RlOiBcInRyYW5zYWN0aW9uXCIsXG4gICAgICAgICAgbWF4Q2xpZW50Q29ubjogMTAwMCxcbiAgICAgICAgICBkZWZhdWx0UG9vbFNpemU6IDIwLFxuICAgICAgICAgIG1pblBvb2xTaXplOiAxMCxcbiAgICAgICAgICByZXNlcnZlUG9vbFNpemU6IDUsXG4gICAgICAgICAgcmVzZXJ2ZVBvb2xUaW1lb3V0OiA1LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3BnQm91bmNlclNlcnZlci5ub2RlLmFkZERlcGVuZGVuY3koYm9vdHN0cmFwcGVyKTtcblxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIucGdib3VuY2VyU2VjcmV0O1xuICAgICAgdGhpcy5jb25uZWN0aW9uVGFyZ2V0ID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLmluc3RhbmNlO1xuICAgICAgdGhpcy5zZWN1cml0eUdyb3VwID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLnNlY3VyaXR5R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblRhcmdldCA9IHRoaXMuZGI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnMoXG4gICAgaW5zdGFuY2VUeXBlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVyczogUGdTdGFjRGF0YWJhc2VQcm9wc1tcInBhcmFtZXRlcnNcIl1cbiAgKTogRGF0YWJhc2VQYXJhbWV0ZXJzIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jbGkvaXNzdWVzLzEyNzkjaXNzdWVjb21tZW50LTkwOTMxODIzNlxuICAgIGNvbnN0IG1lbW9yeV9pbl9rYiA9IGluc3RhbmNlU2l6ZXNbaW5zdGFuY2VUeXBlXSAqIDEwMjQ7XG5cbiAgICAvLyBJdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyIHBhc3NlZCBpbiBwYXJhbWV0ZXJzIGZvciBhbnkgdmFsdWUgdGhhdCB1c2VkIHRvXG4gICAgLy8gZGVyaXZlIHN1YnNlcXVlbnQgdmFsdWVzLiBWYWx1ZXMgdGhhdCBkb24ndCBoYXZlIGRlcGVuZGVuY2llcyB3aWxsIGJlIG92ZXJyaWRlblxuICAgIC8vIHdoZW4gd2UgdW5wYWNrIHRoZSBwYXNzZWQtaW4gdXNlciBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbWF4Q29ubmVjdGlvbnMgPSBwYXJhbWV0ZXJzPy5tYXhDb25uZWN0aW9uc1xuICAgICAgPyBOdW1iZXIucGFyc2VJbnQocGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucylcbiAgICAgIDogLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5NYXhDb25uZWN0aW9uc1xuICAgICAgICBNYXRoLm1pbihNYXRoLnJvdW5kKChtZW1vcnlfaW5fa2IgKiAxMDI0KSAvIDk1MzEzOTIpLCA1MDAwKTtcbiAgICBjb25zdCBzaGFyZWRCdWZmZXJzID0gcGFyYW1ldGVycz8uc2hhcmVkQnVmZXJzXG4gICAgICA/IE51bWJlci5wYXJzZUludChwYXJhbWV0ZXJzLnNoYXJlZEJ1ZmVycylcbiAgICAgIDogTWF0aC5yb3VuZCgwLjI1ICogbWVtb3J5X2luX2tiKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZUNhY2hlU2l6ZSA9IE1hdGgucm91bmQoMC43NSAqIG1lbW9yeV9pbl9rYik7XG4gICAgY29uc3Qgd29ya01lbSA9IE1hdGguZmxvb3Ioc2hhcmVkQnVmZmVycyAvIG1heENvbm5lY3Rpb25zKTtcbiAgICBjb25zdCBtYWludGVuYW5jZVdvcmtNZW0gPSBNYXRoLnJvdW5kKDAuMjUgKiBzaGFyZWRCdWZmZXJzKTtcblxuICAgIGNvbnN0IHRlbXBCdWZmZXJzID0gMTI4ICogMTAyNDtcbiAgICBjb25zdCBzZXFQYWdlQ29zdCA9IDE7XG4gICAgY29uc3QgcmFuZG9tUGFnZUNvc3QgPSAxLjE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWF4Q29ubmVjdGlvbnM6IGAke21heENvbm5lY3Rpb25zfWAsXG4gICAgICBzaGFyZWRCdWZmZXJzOiBgJHtzaGFyZWRCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBlZmZlY3RpdmVDYWNoZVNpemU6IGAke2VmZmVjdGl2ZUNhY2hlU2l6ZSAvIDh9YCwgLy8gUmVwcmVzZW50ZWQgaW4gOGtiIGJsb2Nrc1xuICAgICAgd29ya01lbTogYCR7d29ya01lbX1gLFxuICAgICAgbWFpbnRlbmFuY2VXb3JrTWVtOiBgJHttYWludGVuYW5jZVdvcmtNZW19YCxcbiAgICAgIG1heExvY2tzUGVyVHJhbnNhY3Rpb246IFwiMTAyNFwiLFxuICAgICAgdGVtcEJ1ZmZlcnM6IGAke3RlbXBCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBzZXFQYWdlQ29zdDogYCR7c2VxUGFnZUNvc3R9YCxcbiAgICAgIHJhbmRvbVBhZ2VDb3N0OiBgJHtyYW5kb21QYWdlQ29zdH1gLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ1N0YWNEYXRhYmFzZVByb3BzIGV4dGVuZHMgcmRzLkRhdGFiYXNlSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRoYXQgaXMgdG8gYmUgY3JlYXRlZCBhbmQgb250byB3aGljaCBwZ1NUQUMgd2lsbCBiZSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY1xuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjRGJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAgKiBWZXJzaW9uIG9mIHBnc3RhYyB0byBpbnN0YWxsIG9uIHRoZSBkYXRhYmFzZVxuICAgICAgKlxuICAgICAgKiBAZGVmYXVsdCAwLjguNVxuICAgICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IHRvIGFzc2lnbiB0byB0aGUgZ2VuZXJhdGVkIGBzZWNyZXRzX21hbmFnZXIuU2VjcmV0YFxuICAgKlxuICAgKiBAZGVmYXVsdCBwZ3N0YWNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdXNlciB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBjb25uZWN0aW5nIHRvIHRoZSBwZ1NUQUMgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY191c2VyXG4gICAqL1xuICByZWFkb25seSBwZ3N0YWNVc2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIHBnYm91bmNlciBpbnN0YW5jZSBmb3IgbWFuYWdpbmcgdHJhZmZpYyB0byB0aGUgcGdTVEFDIGRhdGFiYXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFBnYm91bmNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiBDdXN0b20gUmVzb3VyY2UgcHJvcGVydGllcy4gQSBjdXN0b20gcmVzb3VyY2UgcHJvcGVydHkgaXMgZ29pbmcgdG8gYmUgY3JlYXRlZFxuICAgKiB0byB0cmlnZ2VyIHRoZSBib29zdHJhcHBpbmcgbGFtYmRhIGZ1bmN0aW9uLiBUaGlzIHBhcmFtZXRlciBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICogb24gdG9wIG9mIHRoZSBkZWZhdWx0cyBvbmVzLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGFtYmRhIGZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lZCBpbiB0aGUgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVBhcmFtZXRlcnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgLSBMRUFTVCh7REJJbnN0YW5jZUNsYXNzTWVtb3J5Lzk1MzEzOTJ9LCA1MDAwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IHN0cmluZztcblxuICAvKipcbiAgICogTm90ZTogVGhpcyB2YWx1ZSBpcyBtZWFzdXJlZCBpbiA4S0IgYmxvY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAne0RCSW5zdGFuY2VDbGFzc01lbW9yeS8zMjc2OH0nIDI1JSBvZiBpbnN0YW5jZSBtZW1vcnksIGllIGB7KERCSW5zdGFuY2VDbGFzc01lbW9yeS8oMTAyNCo4KSkgKiAwLjI1fWBcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSA3NSUgb2YgaW5zdGFuY2UgbWVtb3J5XG4gICAqL1xuICByZWFkb25seSBlZmZlY3RpdmVDYWNoZVNpemU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSBzaGFyZWQgYnVmZmVycyBkaXZpZGVkIGJ5IG1heCBjb25uZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya01lbTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIDI1JSBvZiBzaGFyZWQgYnVmZmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFpbnRlbmFuY2VXb3JrTWVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1heExvY2tzUGVyVHJhbnNhY3Rpb246IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMTMxMTcyICgxMjggKiAxMDI0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc2VxUGFnZUNvc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMS4xXG4gICAqL1xuICByZWFkb25seSByYW5kb21QYWdlQ29zdDogc3RyaW5nO1xufVxuIl19
177
+ PgStacDatabase[_a] = { fqn: "eoapi-cdk.PgStacDatabase", version: "7.6.0" };
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFFdkMsMkNBQXdDO0FBRXhDLE1BQU0sYUFBYSxHQUEyQixPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNoRixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUV2QyxJQUFJLDBCQUEwQixHQUEyQjtJQUN2RCxPQUFPLEVBQUUsT0FBTztJQUNoQixZQUFZLEVBQUUsTUFBTTtDQUNyQixDQUFDO0FBRUYsU0FBUyxNQUFNLENBQ2IsUUFBc0Q7SUFFdEQsT0FBUSxRQUFpQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQVMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMxQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGNBQWM7Z0JBQ2pELGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUMvQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7Z0JBQzFELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO2dCQUNuQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7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O1FBRTNCLE9BQU87WUFDTCxjQUFjLEVBQUUsR0FBRyxjQUFjLEVBQUU7WUFDbkMsYUFBYSxFQUFFLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtZQUNuRSxrQkFBa0IsRUFBRSxHQUFHLGtCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtZQUM3RSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUU7WUFDckIsa0JBQWtCLEVBQUUsR0FBRyxrQkFBa0IsRUFBRTtZQUMzQyxzQkFBc0IsRUFBRSxNQUFNO1lBQzlCLFdBQVcsRUFBRSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSw0QkFBNEI7WUFDL0QsV0FBVyxFQUFFLEdBQUcsV0FBVyxFQUFFO1lBQzdCLGNBQWMsRUFBRSxHQUFHLGNBQWMsRUFBRTtTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7QUE1TEgsd0NBNkxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19yZHMgYXMgcmRzLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxuICBhd3NfbGFtYmRhLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgRHVyYXRpb24sXG4gIGF3c19sb2dzLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBQZ0JvdW5jZXIgfSBmcm9tIFwiLi9QZ0JvdW5jZXJcIjtcblxuY29uc3QgaW5zdGFuY2VTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHJlcXVpcmUoXCIuL2luc3RhbmNlLW1lbW9yeS5qc29uXCIpO1xuY29uc3QgREVGQVVMVF9QR1NUQUNfVkVSU0lPTiA9IFwiMC44LjVcIjtcblxubGV0IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICBjb250ZXh0OiBcIkZBTFNFXCIsXG4gIG1vc2FpY19pbmRleDogXCJUUlVFXCIsXG59O1xuXG5mdW5jdGlvbiBoYXNWcGMoXG4gIGluc3RhbmNlOiByZHMuRGF0YWJhc2VJbnN0YW5jZSB8IHJkcy5JRGF0YWJhc2VJbnN0YW5jZVxuKTogaW5zdGFuY2UgaXMgcmRzLkRhdGFiYXNlSW5zdGFuY2Uge1xuICByZXR1cm4gKGluc3RhbmNlIGFzIHJkcy5EYXRhYmFzZUluc3RhbmNlKS52cGMgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBSRFMgaW5zdGFuY2Ugd2l0aCBwZ1NUQUMgaW5zdGFsbGVkLiBUaGlzIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlXG4gKiBgcmRzLkRhdGFiYXNlSW5zdGFuY2VgIGhpZ2hlci1sZXZlbCBjb25zdHJ1Y3QgbWFraW5nIHVzZVxuICogb2YgdGhlIEJvb3RzdHJhcFBnU3RhYyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQZ1N0YWNEYXRhYmFzZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGRiOiByZHMuRGF0YWJhc2VJbnN0YW5jZTtcbiAgcGdzdGFjU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICBwcml2YXRlIF9wZ0JvdW5jZXJTZXJ2ZXI/OiBQZ0JvdW5jZXI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25UYXJnZXQ6IHJkcy5JRGF0YWJhc2VJbnN0YW5jZSB8IGVjMi5JbnN0YW5jZTtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldEJvb3RzdHJhcHBlcj86IEN1c3RvbVJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQZ1N0YWNEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXJhbWV0ZXJzID0gdGhpcy5nZXRQYXJhbWV0ZXJzKFxuICAgICAgcHJvcHMuaW5zdGFuY2VUeXBlPy50b1N0cmluZygpIHx8IFwibTUubGFyZ2VcIixcbiAgICAgIHByb3BzLnBhcmFtZXRlcnNcbiAgICApO1xuICAgIGNvbnN0IHBhcmFtZXRlckdyb3VwID0gbmV3IHJkcy5QYXJhbWV0ZXJHcm91cCh0aGlzLCBcInBhcmFtZXRlckdyb3VwXCIsIHtcbiAgICAgIGVuZ2luZTogcHJvcHMuZW5naW5lLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBtYXhfY29ubmVjdGlvbnM6IGRlZmF1bHRQYXJhbWV0ZXJzLm1heENvbm5lY3Rpb25zLFxuICAgICAgICBzaGFyZWRfYnVmZmVyczogZGVmYXVsdFBhcmFtZXRlcnMuc2hhcmVkQnVmZmVycyxcbiAgICAgICAgZWZmZWN0aXZlX2NhY2hlX3NpemU6IGRlZmF1bHRQYXJhbWV0ZXJzLmVmZmVjdGl2ZUNhY2hlU2l6ZSxcbiAgICAgICAgd29ya19tZW06IGRlZmF1bHRQYXJhbWV0ZXJzLndvcmtNZW0sXG4gICAgICAgIG1haW50ZW5hbmNlX3dvcmtfbWVtOiBkZWZhdWx0UGFyYW1ldGVycy5tYWludGVuYW5jZVdvcmtNZW0sXG4gICAgICAgIG1heF9sb2Nrc19wZXJfdHJhbnNhY3Rpb246IGRlZmF1bHRQYXJhbWV0ZXJzLm1heExvY2tzUGVyVHJhbnNhY3Rpb24sXG4gICAgICAgIHRlbXBfYnVmZmVyczogZGVmYXVsdFBhcmFtZXRlcnMudGVtcEJ1ZmZlcnMsXG4gICAgICAgIHNlcV9wYWdlX2Nvc3Q6IGRlZmF1bHRQYXJhbWV0ZXJzLnNlcVBhZ2VDb3N0LFxuICAgICAgICByYW5kb21fcGFnZV9jb3N0OiBkZWZhdWx0UGFyYW1ldGVycy5yYW5kb21QYWdlQ29zdCxcbiAgICAgICAgLi4ucHJvcHMucGFyYW1ldGVycyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRiID0gbmV3IHJkcy5EYXRhYmFzZUluc3RhbmNlKHRoaXMsIFwiZGJcIiwge1xuICAgICAgaW5zdGFuY2VJZGVudGlmaWVyOiBTdGFjay5vZih0aGlzKS5zdGFja05hbWUsXG4gICAgICBwYXJhbWV0ZXJHcm91cCxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlciA9IG5ldyBhd3NfbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwibGFtYmRhXCIsIHtcbiAgICAgIC8vIGRlZmF1bHRzXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfMTEsXG4gICAgICBoYW5kbGVyOiBcImhhbmRsZXIuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgbG9nUmV0ZW50aW9uOiBhd3NfbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tRG9ja2VyQnVpbGQoX19kaXJuYW1lLCB7XG4gICAgICAgIGZpbGU6IFwiYm9vdHN0cmFwcGVyX3J1bnRpbWUvRG9ja2VyZmlsZVwiLFxuICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICBQWVRIT05fVkVSU0lPTjogXCIzLjExXCIsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHZwYzogaGFzVnBjKHRoaXMuZGIpID8gdGhpcy5kYi52cGMgOiBwcm9wcy52cGMsXG4gICAgICBhbGxvd1B1YmxpY1N1Ym5ldDogdHJ1ZSxcbiAgICAgIC8vIG92ZXJ3cml0ZXMgZGVmYXVsdHMgd2l0aCB1c2VyLXByb3ZpZGVkIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcHMuYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsIFwiYm9vdHN0cmFwcGVyc2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldE5hbWU6IFtcbiAgICAgICAgcHJvcHMuc2VjcmV0c1ByZWZpeCB8fCBcInBnc3RhY1wiLFxuICAgICAgICBpZCxcbiAgICAgICAgdGhpcy5ub2RlLmFkZHIuc2xpY2UoLTgpLFxuICAgICAgXS5qb2luKFwiL1wiKSxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGJuYW1lOiBwcm9wcy5wZ3N0YWNEYk5hbWUgfHwgXCJwZ3N0YWNcIixcbiAgICAgICAgICBlbmdpbmU6IFwicG9zdGdyZXNcIixcbiAgICAgICAgICBwb3J0OiA1NDMyLFxuICAgICAgICAgIGhvc3Q6IHRoaXMuZGIuaW5zdGFuY2VFbmRwb2ludC5ob3N0bmFtZSxcbiAgICAgICAgICB1c2VybmFtZTogcHJvcHMucGdzdGFjVXNlcm5hbWUgfHwgXCJwZ3N0YWNfdXNlclwiLFxuICAgICAgICB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIixcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGdTVEFDIGRhdGFiYXNlIGJvb3RzdHJhcHBlZCBieSAke1xuICAgICAgICBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcbiAgICAgIH1gLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgbGFtYmRhIHRvLi4uXG4gICAgLy8gcmVhZCBuZXcgdXNlciBzZWNyZXRcbiAgICB0aGlzLnBnc3RhY1NlY3JldC5ncmFudFJlYWQoaGFuZGxlcik7XG4gICAgLy8gcmVhZCBkYXRhYmFzZSBzZWNyZXRcbiAgICB0aGlzLmRiLnNlY3JldCEuZ3JhbnRSZWFkKGhhbmRsZXIpO1xuICAgIC8vIGNvbm5lY3QgdG8gZGF0YWJhc2VcbiAgICB0aGlzLmRiLmNvbm5lY3Rpb25zLmFsbG93RnJvbShoYW5kbGVyLCBlYzIuUG9ydC50Y3AoNTQzMikpO1xuXG4gICAgbGV0IGN1c3RvbVJlc291cmNlUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9XG4gICAgICBwcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXNcbiAgICAgICAgPyB7IC4uLmRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zLCAuLi5wcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgfVxuICAgICAgICA6IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zO1xuXG4gICAgLy8gdXBkYXRlIHByb3BlcnRpZXNcbiAgICBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJjb25uX3NlY3JldF9hcm5cIl0gPSB0aGlzLmRiLnNlY3JldCEuc2VjcmV0QXJuO1xuICAgIGN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcIm5ld191c2VyX3NlY3JldF9hcm5cIl0gPVxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgLy8gaWYgcHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zIGRvZXNuJ3QgaGF2ZSAnY29kZScgZGVmaW5lZCwgdXBkYXRlIHBnc3RhY192ZXJzaW9uIChuZWVkZWQgZm9yIGRlZmF1bHQgcnVudGltZSlcbiAgICBpZiAoIXByb3BzLmJvb3RzdHJhcHBlckxhbWJkYUZ1bmN0aW9uT3B0aW9ucz8uY29kZSkge1xuICAgICAgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzW1wicGdzdGFjX3ZlcnNpb25cIl0gPVxuICAgICAgICBwcm9wcy5wZ3N0YWNWZXJzaW9uIHx8IERFRkFVTFRfUEdTVEFDX1ZFUlNJT047XG4gICAgfVxuXG4gICAgLy8gYWRkIHRpbWVzdGFtcCB0byBwcm9wZXJ0aWVzIHRvIGVuc3VyZSB0aGUgTGFtYmRhIGdldHMgcmUtZXhlY3V0ZWQgb24gZWFjaCBkZXBsb3lcbiAgICBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJ0aW1lc3RhbXBcIl0gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICBjb25zdCBib290c3RyYXBwZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJib290c3RyYXBwZXJcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczogY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sIC8vIFRoaXMgcmV0YWlucyB0aGUgY3VzdG9tIHJlc291cmNlICh3aGljaCBkb2Vzbid0IHJlYWxseSBleGlzdCksIG5vdCB0aGUgZGF0YWJhc2VcbiAgICB9KTtcblxuICAgIC8vIFBnQm91bmNlcjogY29ubmVjdGlvbiBwb29sZXJjdXN0b21yZXNvdXJjZSB0cmlnZ2VyIG9uIHJlZGVwbG95XG4gICAgY29uc3QgYWRkUGdib3VuY2VyID0gcHJvcHMuYWRkUGdib3VuY2VyID8/IHRydWU7XG4gICAgaWYgKGFkZFBnYm91bmNlcikge1xuICAgICAgdGhpcy5fcGdCb3VuY2VyU2VydmVyID0gbmV3IFBnQm91bmNlcih0aGlzLCBcInBnYm91bmNlclwiLCB7XG4gICAgICAgIGluc3RhbmNlTmFtZTogYCR7U3RhY2sub2YodGhpcykuc3RhY2tOYW1lfS1wZ2JvdW5jZXJgLFxuICAgICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuVDMsXG4gICAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5NSUNST1xuICAgICAgICApLFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgZGF0YWJhc2U6IHtcbiAgICAgICAgICBjb25uZWN0aW9uczogdGhpcy5kYi5jb25uZWN0aW9ucyxcbiAgICAgICAgICBzZWNyZXQ6IHRoaXMucGdzdGFjU2VjcmV0LFxuICAgICAgICB9LFxuICAgICAgICBkYk1heENvbm5lY3Rpb25zOiBwYXJzZUludChkZWZhdWx0UGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucyksXG4gICAgICAgIHVzZVB1YmxpY1N1Ym5ldDpcbiAgICAgICAgICAhcHJvcHMudnBjU3VibmV0cyB8fFxuICAgICAgICAgIHByb3BzLnZwY1N1Ym5ldHMuc3VibmV0VHlwZSA9PT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICBwZ0JvdW5jZXJDb25maWc6IHtcbiAgICAgICAgICBwb29sTW9kZTogXCJ0cmFuc2FjdGlvblwiLFxuICAgICAgICAgIG1heENsaWVudENvbm46IDEwMDAsXG4gICAgICAgICAgZGVmYXVsdFBvb2xTaXplOiAyMCxcbiAgICAgICAgICBtaW5Qb29sU2l6ZTogMTAsXG4gICAgICAgICAgcmVzZXJ2ZVBvb2xTaXplOiA1LFxuICAgICAgICAgIHJlc2VydmVQb29sVGltZW91dDogNSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIubm9kZS5hZGREZXBlbmRlbmN5KGJvb3RzdHJhcHBlcik7XG5cbiAgICAgIHRoaXMucGdzdGFjU2VjcmV0ID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLnBnYm91bmNlclNlY3JldDtcbiAgICAgIHRoaXMuY29ubmVjdGlvblRhcmdldCA9IHRoaXMuX3BnQm91bmNlclNlcnZlci5pbnN0YW5jZTtcbiAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHRoaXMuX3BnQm91bmNlclNlcnZlci5zZWN1cml0eUdyb3VwO1xuICAgICAgdGhpcy5zZWNyZXRCb290c3RyYXBwZXIgPSB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIuc2VjcmV0VXBkYXRlQ29tcGxldGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblRhcmdldCA9IHRoaXMuZGI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnMoXG4gICAgaW5zdGFuY2VUeXBlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVyczogUGdTdGFjRGF0YWJhc2VQcm9wc1tcInBhcmFtZXRlcnNcIl1cbiAgKTogRGF0YWJhc2VQYXJhbWV0ZXJzIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jbGkvaXNzdWVzLzEyNzkjaXNzdWVjb21tZW50LTkwOTMxODIzNlxuICAgIGNvbnN0IG1lbW9yeV9pbl9rYiA9IGluc3RhbmNlU2l6ZXNbaW5zdGFuY2VUeXBlXSAqIDEwMjQ7XG5cbiAgICAvLyBJdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyIHBhc3NlZCBpbiBwYXJhbWV0ZXJzIGZvciBhbnkgdmFsdWUgdGhhdCB1c2VkIHRvXG4gICAgLy8gZGVyaXZlIHN1YnNlcXVlbnQgdmFsdWVzLiBWYWx1ZXMgdGhhdCBkb24ndCBoYXZlIGRlcGVuZGVuY2llcyB3aWxsIGJlIG92ZXJyaWRlblxuICAgIC8vIHdoZW4gd2UgdW5wYWNrIHRoZSBwYXNzZWQtaW4gdXNlciBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbWF4Q29ubmVjdGlvbnMgPSBwYXJhbWV0ZXJzPy5tYXhDb25uZWN0aW9uc1xuICAgICAgPyBOdW1iZXIucGFyc2VJbnQocGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucylcbiAgICAgIDogLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5NYXhDb25uZWN0aW9uc1xuICAgICAgICBNYXRoLm1pbihNYXRoLnJvdW5kKChtZW1vcnlfaW5fa2IgKiAxMDI0KSAvIDk1MzEzOTIpLCA1MDAwKTtcbiAgICBjb25zdCBzaGFyZWRCdWZmZXJzID0gcGFyYW1ldGVycz8uc2hhcmVkQnVmZXJzXG4gICAgICA/IE51bWJlci5wYXJzZUludChwYXJhbWV0ZXJzLnNoYXJlZEJ1ZmVycylcbiAgICAgIDogTWF0aC5yb3VuZCgwLjI1ICogbWVtb3J5X2luX2tiKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZUNhY2hlU2l6ZSA9IE1hdGgucm91bmQoMC43NSAqIG1lbW9yeV9pbl9rYik7XG4gICAgY29uc3Qgd29ya01lbSA9IE1hdGguZmxvb3Ioc2hhcmVkQnVmZmVycyAvIG1heENvbm5lY3Rpb25zKTtcbiAgICBjb25zdCBtYWludGVuYW5jZVdvcmtNZW0gPSBNYXRoLnJvdW5kKDAuMjUgKiBzaGFyZWRCdWZmZXJzKTtcblxuICAgIGNvbnN0IHRlbXBCdWZmZXJzID0gMTI4ICogMTAyNDtcbiAgICBjb25zdCBzZXFQYWdlQ29zdCA9IDE7XG4gICAgY29uc3QgcmFuZG9tUGFnZUNvc3QgPSAxLjE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWF4Q29ubmVjdGlvbnM6IGAke21heENvbm5lY3Rpb25zfWAsXG4gICAgICBzaGFyZWRCdWZmZXJzOiBgJHtzaGFyZWRCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBlZmZlY3RpdmVDYWNoZVNpemU6IGAke2VmZmVjdGl2ZUNhY2hlU2l6ZSAvIDh9YCwgLy8gUmVwcmVzZW50ZWQgaW4gOGtiIGJsb2Nrc1xuICAgICAgd29ya01lbTogYCR7d29ya01lbX1gLFxuICAgICAgbWFpbnRlbmFuY2VXb3JrTWVtOiBgJHttYWludGVuYW5jZVdvcmtNZW19YCxcbiAgICAgIG1heExvY2tzUGVyVHJhbnNhY3Rpb246IFwiMTAyNFwiLFxuICAgICAgdGVtcEJ1ZmZlcnM6IGAke3RlbXBCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBzZXFQYWdlQ29zdDogYCR7c2VxUGFnZUNvc3R9YCxcbiAgICAgIHJhbmRvbVBhZ2VDb3N0OiBgJHtyYW5kb21QYWdlQ29zdH1gLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ1N0YWNEYXRhYmFzZVByb3BzIGV4dGVuZHMgcmRzLkRhdGFiYXNlSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRoYXQgaXMgdG8gYmUgY3JlYXRlZCBhbmQgb250byB3aGljaCBwZ1NUQUMgd2lsbCBiZSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY1xuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjRGJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHBnc3RhYyB0byBpbnN0YWxsIG9uIHRoZSBkYXRhYmFzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAwLjguNVxuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IHRvIGFzc2lnbiB0byB0aGUgZ2VuZXJhdGVkIGBzZWNyZXRzX21hbmFnZXIuU2VjcmV0YFxuICAgKlxuICAgKiBAZGVmYXVsdCBwZ3N0YWNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdXNlciB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBjb25uZWN0aW5nIHRvIHRoZSBwZ1NUQUMgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY191c2VyXG4gICAqL1xuICByZWFkb25seSBwZ3N0YWNVc2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIHBnYm91bmNlciBpbnN0YW5jZSBmb3IgbWFuYWdpbmcgdHJhZmZpYyB0byB0aGUgcGdTVEFDIGRhdGFiYXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFBnYm91bmNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiBDdXN0b20gUmVzb3VyY2UgcHJvcGVydGllcy4gQSBjdXN0b20gcmVzb3VyY2UgcHJvcGVydHkgaXMgZ29pbmcgdG8gYmUgY3JlYXRlZFxuICAgKiB0byB0cmlnZ2VyIHRoZSBib29zdHJhcHBpbmcgbGFtYmRhIGZ1bmN0aW9uLiBUaGlzIHBhcmFtZXRlciBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICogb24gdG9wIG9mIHRoZSBkZWZhdWx0cyBvbmVzLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGFtYmRhIGZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lZCBpbiB0aGUgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVBhcmFtZXRlcnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgLSBMRUFTVCh7REJJbnN0YW5jZUNsYXNzTWVtb3J5Lzk1MzEzOTJ9LCA1MDAwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IHN0cmluZztcblxuICAvKipcbiAgICogTm90ZTogVGhpcyB2YWx1ZSBpcyBtZWFzdXJlZCBpbiA4S0IgYmxvY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAne0RCSW5zdGFuY2VDbGFzc01lbW9yeS8zMjc2OH0nIDI1JSBvZiBpbnN0YW5jZSBtZW1vcnksIGllIGB7KERCSW5zdGFuY2VDbGFzc01lbW9yeS8oMTAyNCo4KSkgKiAwLjI1fWBcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSA3NSUgb2YgaW5zdGFuY2UgbWVtb3J5XG4gICAqL1xuICByZWFkb25seSBlZmZlY3RpdmVDYWNoZVNpemU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSBzaGFyZWQgYnVmZmVycyBkaXZpZGVkIGJ5IG1heCBjb25uZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya01lbTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIDI1JSBvZiBzaGFyZWQgYnVmZmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFpbnRlbmFuY2VXb3JrTWVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1heExvY2tzUGVyVHJhbnNhY3Rpb246IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMTMxMTcyICgxMjggKiAxMDI0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc2VxUGFnZUNvc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMS4xXG4gICAqL1xuICByZWFkb25seSByYW5kb21QYWdlQ29zdDogc3RyaW5nO1xufVxuIl19
@@ -168,5 +168,5 @@ class StacIngestor extends constructs_1.Construct {
168
168
  }
169
169
  exports.StacIngestor = StacIngestor;
170
170
  _a = JSII_RTTI_SYMBOL_1;
171
- StacIngestor[_a] = { fqn: "eoapi-cdk.StacIngestor", version: "7.5.0" };
171
+ StacIngestor[_a] = { fqn: "eoapi-cdk.StacIngestor", version: "7.6.0" };
172
172
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQWFxQjtBQUNyQiwyQ0FBdUM7QUFHdkMsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFJekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLE1BQU0sR0FBRyxHQUEyQjtZQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQ3BDLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDNUIsd0JBQXdCLEVBQUUsR0FBRztZQUM3QixRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPO1lBQzlDLEdBQUcsS0FBSyxDQUFDLE1BQU07U0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxxQkFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDdEQsV0FBVyxFQUNULG1JQUFtSTtZQUNySSxTQUFTLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELGVBQWUsRUFBRTtnQkFDZixxQkFBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMsMENBQTBDLENBQzNDO2dCQUNELHFCQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUN4Qyw4Q0FBOEMsQ0FDL0M7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEdBQUc7WUFDSCxj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LENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQzNDO1lBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLGFBQWEsRUFBRSxJQUFJLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDckQsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ3pCLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBcFBILG9DQXFQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19hcGlnYXRld2F5IGFzIGFwaWdhdGV3YXksXG4gIGF3c19keW5hbW9kYiBhcyBkeW5hbW9kYixcbiAgYXdzX2VjMiBhcyBlYzIsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX2xvZ3MsXG4gIGF3c19sYW1iZGFfZXZlbnRfc291cmNlcyBhcyBldmVudHMsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgYXdzX3NzbSBhcyBzc20sXG4gIER1cmF0aW9uLFxuICBSZW1vdmFsUG9saWN5LFxuICBTdGFjayxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5leHBvcnQgY2xhc3MgU3RhY0luZ2VzdG9yIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgdGFibGU6IGR5bmFtb2RiLlRhYmxlO1xuICBwdWJsaWMgaGFuZGxlclJvbGU6IGlhbS5Sb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFjSW5nZXN0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnRhYmxlID0gdGhpcy5idWlsZFRhYmxlKCk7XG5cbiAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBEWU5BTU9EQl9UQUJMRTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICBST09UX1BBVEg6IGAvJHtwcm9wcy5zdGFnZX1gLFxuICAgICAgTk9fUFlEQU5USUNfU1NNX1NFVFRJTkdTOiBcIjFcIixcbiAgICAgIFNUQUNfVVJMOiBwcm9wcy5zdGFjVXJsLFxuICAgICAgREFUQV9BQ0NFU1NfUk9MRTogcHJvcHMuZGF0YUFjY2Vzc1JvbGUucm9sZUFybixcbiAgICAgIC4uLnByb3BzLmFwaUVudixcbiAgICB9O1xuXG4gICAgdGhpcy5oYW5kbGVyUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcImV4ZWN1dGlvbi1yb2xlXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJvbGUgdXNlZCBieSBTVEFDIEluZ2VzdG9yLiBNYW51YWxseSBkZWZpbmVkIHNvIHRoYXQgd2UgY2FuIGNob29zZSBhIG5hbWUgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRhdGEgYWNjZXNzIHJvbGVzIHRydXN0IHBvbGljeVwiLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlXCIsXG4gICAgICAgICksXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcInNlcnZpY2Utcm9sZS9BV1NMYW1iZGFWUENBY2Nlc3NFeGVjdXRpb25Sb2xlXCIsXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuYnVpbGRBcGlMYW1iZGEoe1xuICAgICAgdGFibGU6IHRoaXMudGFibGUsXG4gICAgICBlbnYsXG4gICAgICBkYXRhQWNjZXNzUm9sZTogcHJvcHMuZGF0YUFjY2Vzc1JvbGUsXG4gICAgICBzdGFnZTogcHJvcHMuc3RhZ2UsXG4gICAgICBkYlNlY3JldDogcHJvcHMuc3RhY0RiU2VjcmV0LFxuICAgICAgZGJWcGM6IHByb3BzLnZwYyxcbiAgICAgIGRiU2VjdXJpdHlHcm91cDogcHJvcHMuc3RhY0RiU2VjdXJpdHlHcm91cCxcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgbGFtYmRhRnVuY3Rpb25PcHRpb25zOiBwcm9wcy5hcGlMYW1iZGFGdW5jdGlvbk9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkQXBpRW5kcG9pbnQoe1xuICAgICAgaGFuZGxlcixcbiAgICAgIHN0YWdlOiBwcm9wcy5zdGFnZSxcbiAgICAgIGVuZHBvaW50Q29uZmlndXJhdGlvbjogcHJvcHMuYXBpRW5kcG9pbnRDb25maWd1cmF0aW9uLFxuICAgICAgcG9saWN5OiBwcm9wcy5hcGlQb2xpY3ksXG4gICAgICBpbmdlc3RvckRvbWFpbk5hbWVPcHRpb25zOiBwcm9wcy5pbmdlc3RvckRvbWFpbk5hbWVPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idWlsZEluZ2VzdG9yKHtcbiAgICAgIHRhYmxlOiB0aGlzLnRhYmxlLFxuICAgICAgZW52OiBlbnYsXG4gICAgICBkYlNlY3JldDogcHJvcHMuc3RhY0RiU2VjcmV0LFxuICAgICAgZGJWcGM6IHByb3BzLnZwYyxcbiAgICAgIGRiU2VjdXJpdHlHcm91cDogcHJvcHMuc3RhY0RiU2VjdXJpdHlHcm91cCxcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgbGFtYmRhRnVuY3Rpb25PcHRpb25zOiBwcm9wcy5pbmdlc3RvckxhbWJkYUZ1bmN0aW9uT3B0aW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlclNzbVBhcmFtZXRlcih7XG4gICAgICBuYW1lOiBcImR5bmFtb2RiX3RhYmxlXCIsXG4gICAgICB2YWx1ZTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogXCJOYW1lIG9mIHRhYmxlIHVzZWQgdG8gc3RvcmUgaW5nZXN0aW9uc1wiLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRhYmxlKCk6IGR5bmFtb2RiLlRhYmxlIHtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZSh0aGlzLCBcImluZ2VzdGlvbnMtdGFibGVcIiwge1xuICAgICAgcGFydGl0aW9uS2V5OiB7IG5hbWU6IFwiY3JlYXRlZF9ieVwiLCB0eXBlOiBkeW5hbW9kYi5BdHRyaWJ1dGVUeXBlLlNUUklORyB9LFxuICAgICAgc29ydEtleTogeyBuYW1lOiBcImlkXCIsIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HIH0sXG4gICAgICBiaWxsaW5nTW9kZTogZHluYW1vZGIuQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgc3RyZWFtOiBkeW5hbW9kYi5TdHJlYW1WaWV3VHlwZS5ORVdfSU1BR0UsXG4gICAgfSk7XG5cbiAgICB0YWJsZS5hZGRHbG9iYWxTZWNvbmRhcnlJbmRleCh7XG4gICAgICBpbmRleE5hbWU6IFwic3RhdHVzXCIsXG4gICAgICBwYXJ0aXRpb25LZXk6IHsgbmFtZTogXCJzdGF0dXNcIiwgdHlwZTogZHluYW1vZGIuQXR0cmlidXRlVHlwZS5TVFJJTkcgfSxcbiAgICAgIHNvcnRLZXk6IHsgbmFtZTogXCJjcmVhdGVkX2F0XCIsIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFibGU7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQXBpTGFtYmRhKHByb3BzOiB7XG4gICAgdGFibGU6IGR5bmFtb2RiLklUYWJsZTtcbiAgICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgZGF0YUFjY2Vzc1JvbGU6IGlhbS5JUm9sZTtcbiAgICBzdGFnZTogc3RyaW5nO1xuICAgIGRiU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICAgIGRiVnBjOiB1bmRlZmluZWQgfCBlYzIuSVZwYztcbiAgICBkYlNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcbiAgICBzdWJuZXRTZWxlY3Rpb246IHVuZGVmaW5lZCB8IGVjMi5TdWJuZXRTZWxlY3Rpb25cbiAgICBsYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xuICB9KTogbGFtYmRhLkZ1bmN0aW9uIHtcblxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiYXBpLWhhbmRsZXJcIiwge1xuICAgICAgLy8gZGVmYXVsdHNcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogXCJzcmMuaGFuZGxlci5oYW5kbGVyXCIsXG4gICAgICBtZW1vcnlTaXplOiAyMDQ4LFxuICAgICAgbG9nUmV0ZW50aW9uOiBhd3NfbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBjb2RlOmxhbWJkYS5Db2RlLmZyb21Eb2NrZXJCdWlsZChfX2Rpcm5hbWUsIHtcbiAgICAgICAgZmlsZTogXCJydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7IFBZVEhPTl9WRVJTSU9OOiAnMy4xMScgfSxcbiAgICAgIH0pLFxuICAgICAgYWxsb3dQdWJsaWNTdWJuZXQ6IHRydWUsXG4gICAgICB2cGM6IHByb3BzLmRiVnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHsgREJfU0VDUkVUX0FSTjogcHJvcHMuZGJTZWNyZXQuc2VjcmV0QXJuLCAuLi5wcm9wcy5lbnYgfSxcbiAgICAgIHJvbGU6IHRoaXMuaGFuZGxlclJvbGUsXG4gICAgICAvLyBvdmVyd3JpdGVzIGRlZmF1bHRzIHdpdGggdXNlci1wcm92aWRlZCBjb25maWd1cmFibGUgcHJvcGVydGllc1xuICAgICAgLi4ucHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgaGFuZGxlciB0byByZWFkIERCIHNlY3JldFxuICAgIHByb3BzLmRiU2VjcmV0LmdyYW50UmVhZChoYW5kbGVyKTtcblxuICAgIC8vIEFsbG93IGhhbmRsZXIgdG8gY29ubmVjdCB0byBEQlxuXG4gICAgaWYgKHByb3BzLmRiVnBjKXtcbiAgICAgIHByb3BzLmRiU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgICAgaGFuZGxlci5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwc1swXSxcbiAgICAgICAgZWMyLlBvcnQudGNwKDU0MzIpLFxuICAgICAgICBcIkFsbG93IGNvbm5lY3Rpb25zIGZyb20gU1RBQyBJbmdlc3RvclwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHByb3BzLnRhYmxlLmdyYW50UmVhZFdyaXRlRGF0YShoYW5kbGVyKTtcblxuICAgIHJldHVybiBoYW5kbGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEluZ2VzdG9yKHByb3BzOiB7XG4gICAgdGFibGU6IGR5bmFtb2RiLklUYWJsZTtcbiAgICBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgZGJTZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG4gICAgZGJWcGM6IHVuZGVmaW5lZCB8IGVjMi5JVnBjO1xuICAgIGRiU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICAgIHN1Ym5ldFNlbGVjdGlvbjogdW5kZWZpbmVkIHwgZWMyLlN1Ym5ldFNlbGVjdGlvbjtcbiAgICBsYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xuICB9KTogbGFtYmRhLkZ1bmN0aW9uIHtcblxuXG4gICAgY29uc3QgaGFuZGxlciA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJzdGFjLWluZ2VzdG9yXCIse1xuICAgICAgLy8gZGVmYXVsdHNcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogXCJzcmMuaW5nZXN0b3IuaGFuZGxlclwiLFxuICAgICAgbWVtb3J5U2l6ZTogMjA0OCxcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTgwKSxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Eb2NrZXJCdWlsZChfX2Rpcm5hbWUsIHtcbiAgICAgICAgZmlsZTogXCJydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7IFBZVEhPTl9WRVJTSU9OOiAnMy4xMScgfSxcbiAgICAgIH0pLFxuICAgICAgdnBjOiBwcm9wcy5kYlZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiB0cnVlLFxuICAgICAgZW52aXJvbm1lbnQ6IHsgREJfU0VDUkVUX0FSTjogcHJvcHMuZGJTZWNyZXQuc2VjcmV0QXJuLCAuLi5wcm9wcy5lbnYgfSxcbiAgICAgIHJvbGU6IHRoaXMuaGFuZGxlclJvbGUsXG4gICAgICAvLyBvdmVyd3JpdGVzIGRlZmF1bHRzIHdpdGggdXNlci1wcm92aWRlZCBjb25maWd1cmFibGUgcHJvcGVydGllc1xuICAgICAgLi4ucHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgaGFuZGxlciB0byByZWFkIERCIHNlY3JldFxuICAgIHByb3BzLmRiU2VjcmV0LmdyYW50UmVhZChoYW5kbGVyKTtcblxuICAgIC8vIEFsbG93IGhhbmRsZXIgdG8gY29ubmVjdCB0byBEQlxuICAgIGlmIChwcm9wcy5kYlZwYyl7XG4gICAgICBwcm9wcy5kYlNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICAgIGhhbmRsZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICAgIGVjMi5Qb3J0LnRjcCg1NDMyKSxcbiAgICAgICAgXCJBbGxvdyBjb25uZWN0aW9ucyBmcm9tIFNUQUMgSW5nZXN0b3JcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBoYW5kbGVyIHRvIHdyaXRlIHJlc3VsdHMgYmFjayB0byBEQsaSXG4gICAgcHJvcHMudGFibGUuZ3JhbnRXcml0ZURhdGEoaGFuZGxlcik7XG5cbiAgICAvLyBUcmlnZ2VyIGhhbmRsZXIgZnJvbSB3cml0ZXMgdG8gRHluYW1vREIgdGFibGVcbiAgICBoYW5kbGVyLmFkZEV2ZW50U291cmNlKFxuICAgICAgbmV3IGV2ZW50cy5EeW5hbW9FdmVudFNvdXJjZShwcm9wcy50YWJsZSwge1xuICAgICAgICAvLyBSZWFkIHdoZW4gYmF0Y2hlcyByZWFjaCBzaXplLi4uXG4gICAgICAgIGJhdGNoU2l6ZTogMTAwMCxcbiAgICAgICAgLy8gLi4uIG9yIHdoZW4gd2luZG93IGlzIHJlYWNoZWQuXG4gICAgICAgIG1heEJhdGNoaW5nV2luZG93OiBEdXJhdGlvbi5zZWNvbmRzKDEwKSxcbiAgICAgICAgLy8gUmVhZCBvbGRlc3QgZGF0YSBmaXJzdC5cbiAgICAgICAgc3RhcnRpbmdQb3NpdGlvbjogbGFtYmRhLlN0YXJ0aW5nUG9zaXRpb24uVFJJTV9IT1JJWk9OLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiAxLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIGhhbmRsZXI7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQXBpRW5kcG9pbnQocHJvcHM6IHtcbiAgICBoYW5kbGVyOiBsYW1iZGEuSUZ1bmN0aW9uO1xuICAgIHN0YWdlOiBzdHJpbmc7XG4gICAgcG9saWN5PzogaWFtLlBvbGljeURvY3VtZW50O1xuICAgIGVuZHBvaW50Q29uZmlndXJhdGlvbj86IGFwaWdhdGV3YXkuRW5kcG9pbnRDb25maWd1cmF0aW9uO1xuICAgIGluZ2VzdG9yRG9tYWluTmFtZU9wdGlvbnM/OiBhcGlnYXRld2F5LkRvbWFpbk5hbWVPcHRpb25zO1xuICB9KTogYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpIHtcblxuICAgIHJldHVybiBuZXcgYXBpZ2F0ZXdheS5MYW1iZGFSZXN0QXBpKFxuICAgICAgdGhpcyxcbiAgICAgIGAke1N0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0taW5nZXN0b3ItYXBpYCxcbiAgICAgIHtcbiAgICAgICAgaGFuZGxlcjogcHJvcHMuaGFuZGxlcixcbiAgICAgICAgcHJveHk6IHRydWUsXG5cbiAgICAgICAgY2xvdWRXYXRjaFJvbGU6IHRydWUsXG4gICAgICAgIGRlcGxveU9wdGlvbnM6IHsgc3RhZ2VOYW1lOiBwcm9wcy5zdGFnZSB9LFxuICAgICAgICBlbmRwb2ludEV4cG9ydE5hbWU6IGAke1N0YWNrLm9mKHRoaXMpfS1pbmdlc3Rvci1hcGlgLFxuXG4gICAgICAgIGVuZHBvaW50Q29uZmlndXJhdGlvbjogcHJvcHMuZW5kcG9pbnRDb25maWd1cmF0aW9uLFxuICAgICAgICBwb2xpY3k6IHByb3BzLnBvbGljeSxcblxuICAgICAgICBkb21haW5OYW1lOiAgcHJvcHMuaW5nZXN0b3JEb21haW5OYW1lT3B0aW9ucyA/IHtcbiAgICAgICAgICBkb21haW5OYW1lOiBwcm9wcy5pbmdlc3RvckRvbWFpbk5hbWVPcHRpb25zLmRvbWFpbk5hbWUsXG4gICAgICAgICAgY2VydGlmaWNhdGU6IHByb3BzLmluZ2VzdG9yRG9tYWluTmFtZU9wdGlvbnMuY2VydGlmaWNhdGUsXG4gICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTc21QYXJhbWV0ZXIocHJvcHM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB9KTogc3NtLklTdHJpbmdQYXJhbWV0ZXIge1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWVzcGFjZSA9IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcbiAgICByZXR1cm4gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMubmFtZS5yZXBsYWNlKFwiX1wiLCBcIi1cIil9LXBhcmFtZXRlcmAsXG4gICAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogYC8ke3BhcmFtZXRlck5hbWVzcGFjZX0vJHtwcm9wcy5uYW1lfWAsXG4gICAgICAgIHN0cmluZ1ZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY0luZ2VzdG9yUHJvcHMge1xuICAvKipcbiAgICogQVJOIG9mIEFXUyBSb2xlIHVzZWQgdG8gdmFsaWRhdGUgYWNjZXNzIHRvIFMzIGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NSb2xlOiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFVSTCBvZiBTVEFDIEFQSVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY1VybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFnZSBvZiBkZXBsb3ltZW50IChlLmcuIGBkZXZgLCBgcHJvZGApXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWNyZXQgY29udGFpbmluZyBwZ1NUQUMgREIgY29ubmVjdGlvbiBpbmZvcm1hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY0RiU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBWUEMgcnVubmluZyBwZ1NUQUMgREJcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBHcm91cCB1c2VkIGJ5IHBnU1RBQyBEQlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY0RiU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuXG4gIC8qKlxuICAgKiBTdWJuZXQgaW50byB3aGljaCB0aGUgbGFtYmRhIHNob3VsZCBiZSBkZXBsb3llZCBpZiB1c2luZyBhIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGJlIHNlbnQgdG8gTGFtYmRhLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQVBJIEVuZHBvaW50IENvbmZpZ3VyYXRpb24sIHVzZWZ1bCBmb3IgY3JlYXRpbmcgcHJpdmF0ZSBBUElzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpRW5kcG9pbnRDb25maWd1cmF0aW9uPzogYXBpZ2F0ZXdheS5FbmRwb2ludENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEFQSSBQb2xpY3kgRG9jdW1lbnQsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgcHJpdmF0ZSBBUElzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpUG9saWN5PzogaWFtLlBvbGljeURvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBDdXN0b20gRG9tYWluIE5hbWUgT3B0aW9ucyBmb3IgSW5nZXN0b3IgQVBJXG4gICAqL1xuICAgcmVhZG9ubHkgaW5nZXN0b3JEb21haW5OYW1lT3B0aW9ucz86IGFwaWdhdGV3YXkuRG9tYWluTmFtZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAgICogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGFtYmRhIGZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdC5cbiAgICAgKi9cbiAgcmVhZG9ubHkgYXBpTGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcblxuICAvKipcbiAgICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBzZXR0aW5ncyBhcmUgZGVmaW5lZCBpbiB0aGUgY29uc3RydWN0LlxuICAgICAqL1xucmVhZG9ubHkgaW5nZXN0b3JMYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xuXG59XG4iXX0=
@@ -3,9 +3,8 @@ cachetools==5.3.0
3
3
  fastapi>=0.75.1
4
4
  orjson>=3.6.8
5
5
  psycopg[binary,pool]>=3.0.15
6
- pydantic_ssm_settings>=0.2.0
6
+ pydantic_ssm_settings>=1.0,<2.0
7
7
  pydantic>=1.9.0
8
8
  pypgstac==0.8.5
9
9
  requests>=2.27.1
10
- # Waiting for https://github.com/stac-utils/stac-pydantic/pull/116
11
- stac-pydantic @ git+https://github.com/alukach/stac-pydantic.git@patch-1
10
+ stac-pydantic>=3.0,<4.0
@@ -2,10 +2,11 @@ import os
2
2
  from getpass import getuser
3
3
  from typing import Optional
4
4
 
5
- from pydantic import AnyHttpUrl, BaseSettings, Field, constr
6
- from pydantic_ssm_settings import AwsSsmSourceConfig
5
+ from pydantic import AnyHttpUrl, Field, constr
6
+ from pydantic_settings import BaseSettings
7
+ from pydantic_ssm_settings.settings import SsmBaseSettings
7
8
 
8
- AwsArn = constr(regex=r"^arn:aws:iam::\d{12}:role/.+")
9
+ AwsArn = constr(pattern=r"^arn:aws:iam::\d{12}:role/.+")
9
10
 
10
11
 
11
12
  class Settings(BaseSettings):
@@ -27,8 +28,8 @@ class Settings(BaseSettings):
27
28
  description="Path from where to serve this URL.", default=False
28
29
  )
29
30
 
30
- class Config(AwsSsmSourceConfig):
31
- env_file = ".env"
31
+ class Config(SsmBaseSettings):
32
+ env_file: str = ".env"
32
33
 
33
34
  @classmethod
34
35
  def from_ssm(cls, stack: str):
@@ -14,7 +14,7 @@ from pydantic import (
14
14
  PositiveInt,
15
15
  dataclasses,
16
16
  error_wrappers,
17
- validator,
17
+ field_validator,
18
18
  )
19
19
  from stac_pydantic import Collection, Item, shared
20
20
 
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
25
25
 
26
26
 
27
27
  class AccessibleAsset(shared.Asset):
28
- @validator("href")
28
+ @field_validator("href")
29
29
  def is_accessible(cls, href):
30
30
  url = urlparse(href)
31
31
 
@@ -44,7 +44,7 @@ class AccessibleAsset(shared.Asset):
44
44
  class AccessibleItem(Item):
45
45
  assets: Dict[str, AccessibleAsset]
46
46
 
47
- @validator("collection")
47
+ @field_validator("collection")
48
48
  def exists(cls, collection):
49
49
  validators.collection_exists(collection_id=collection)
50
50
  return collection
@@ -66,15 +66,14 @@ class Status(str, enum.Enum):
66
66
  class Ingestion(BaseModel):
67
67
  id: str
68
68
  status: Status
69
- message: Optional[str]
69
+ message: Optional[str] = None
70
70
  created_by: str
71
- created_at: datetime = None
72
- updated_at: datetime = None
71
+ created_at: datetime = datetime.now()
72
+ updated_at: datetime = datetime.now()
73
73
 
74
74
  item: Union[Item, Json[Item]]
75
75
 
76
- @validator("created_at", pre=True, always=True, allow_reuse=True)
77
- @validator("updated_at", pre=True, always=True, allow_reuse=True)
76
+ @field_validator("created_at", "updated_at", mode="before")
78
77
  def set_ts_now(cls, v):
79
78
  return v or datetime.now()
80
79
 
@@ -94,10 +93,10 @@ class Ingestion(BaseModel):
94
93
  def dynamodb_dict(self):
95
94
  """DynamoDB-friendly serialization"""
96
95
  # convert to dictionary
97
- output = self.dict(exclude={"item"})
96
+ output = self.model_dump(exclude={"item"})
98
97
 
99
98
  # add STAC item as string
100
- output["item"] = self.item.json()
99
+ output["item"] = self.item.model_dump_json()
101
100
 
102
101
  # make JSON-friendly (will be able to do with Pydantic V2, https://github.com/pydantic/pydantic/issues/1409#issuecomment-1423995424)
103
102
  return jsonable_encoder(output)
@@ -106,7 +105,7 @@ class Ingestion(BaseModel):
106
105
  @dataclasses.dataclass
107
106
  class ListIngestionRequest:
108
107
  status: Status = Status.queued
109
- limit: PositiveInt = None
108
+ limit: Optional[PositiveInt] = None
110
109
  next: Optional[str] = None
111
110
 
112
111
  def __post_init_post_parse__(self) -> None:
@@ -133,7 +132,7 @@ class ListIngestionResponse(BaseModel):
133
132
  items: List[Ingestion]
134
133
  next: Optional[str]
135
134
 
136
- @validator("next", pre=True)
135
+ @field_validator("next", mode="before")
137
136
  def b64_encode_next(cls, next):
138
137
  """
139
138
  Base64 encode next parameter for easier transportability
@@ -144,5 +143,5 @@ class ListIngestionResponse(BaseModel):
144
143
 
145
144
 
146
145
  class UpdateIngestionRequest(BaseModel):
147
- status: Status = None
148
- message: str = None
146
+ status: Optional[Status] = None
147
+ message: Optional[str] = None