eoapi-cdk 7.4.1 → 7.5.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.
@@ -18,9 +18,9 @@ jobs:
18
18
  name: Build and package
19
19
  runs-on: ubuntu-latest
20
20
  steps:
21
- - uses: actions/checkout@v3
21
+ - uses: actions/checkout@v4
22
22
 
23
- - uses: actions/setup-node@v3
23
+ - uses: actions/setup-node@v4
24
24
  with:
25
25
  node-version: 18
26
26
  cache: "npm"
@@ -37,22 +37,22 @@ jobs:
37
37
  - name: Generate documentation
38
38
  run: npm run docgen
39
39
 
40
- - uses: actions/upload-artifact@v3
40
+ - uses: actions/upload-artifact@v4
41
41
  with:
42
42
  name: docs
43
43
  path: docs
44
44
 
45
- - uses: actions/upload-artifact@v3
45
+ - uses: actions/upload-artifact@v4
46
46
  with:
47
47
  name: python
48
48
  path: dist/python/*
49
49
 
50
- - uses: actions/upload-artifact@v3
50
+ - uses: actions/upload-artifact@v4
51
51
  with:
52
52
  name: js
53
53
  path: dist/js/*
54
54
 
55
- - uses: actions/upload-artifact@v3
55
+ - uses: actions/upload-artifact@v4
56
56
  with:
57
57
  name: jsii
58
58
  path: .jsii
@@ -12,7 +12,7 @@ jobs:
12
12
  lint-pr:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v4
16
16
 
17
17
  - name: Get Release Bot Token
18
18
  id: get-token
@@ -14,9 +14,9 @@ jobs:
14
14
  AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEPLOY }}
15
15
  AWS_DEFAULT_ACCOUNT: ${{ secrets.AWS_ACCOUNT_ID }}
16
16
  steps:
17
- - uses: actions/checkout@v3
17
+ - uses: actions/checkout@v4
18
18
 
19
- - uses: actions/setup-node@v3
19
+ - uses: actions/setup-node@v4
20
20
  with:
21
21
  node-version: 18
22
22
  cache: "npm"
@@ -14,7 +14,7 @@ jobs:
14
14
  needs: package
15
15
  steps:
16
16
 
17
- - uses: actions/download-artifact@v3
17
+ - uses: actions/download-artifact@v4
18
18
  with:
19
19
  name: python
20
20
  path: dist
@@ -31,7 +31,7 @@ jobs:
31
31
  runs-on: ubuntu-latest
32
32
  needs: package
33
33
  steps:
34
- - uses: actions/download-artifact@v3
34
+ - uses: actions/download-artifact@v4
35
35
  with:
36
36
  name: js
37
37
  path: dist
@@ -13,9 +13,9 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  needs: package
15
15
  steps:
16
- - uses: actions/checkout@v3
16
+ - uses: actions/checkout@v4
17
17
 
18
- - uses: actions/download-artifact@v3
18
+ - uses: actions/download-artifact@v4
19
19
  with:
20
20
  name: docs
21
21
  path: docs
package/.jsii CHANGED
@@ -3932,7 +3932,7 @@
3932
3932
  "kind": "interface",
3933
3933
  "locationInModule": {
3934
3934
  "filename": "lib/database/index.ts",
3935
- "line": 268
3935
+ "line": 274
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": 284
3948
+ "line": 290
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": 294
3964
+ "line": 300
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": 272
3980
+ "line": 278
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": 299
3996
+ "line": 305
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": 314
4012
+ "line": 320
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": 309
4028
+ "line": 315
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": 279
4045
+ "line": 285
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": 304
4061
+ "line": 310
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": 289
4077
+ "line": 295
4078
4078
  },
4079
4079
  "name": "workMem",
4080
4080
  "type": {
@@ -4356,7 +4356,7 @@
4356
4356
  },
4357
4357
  "locationInModule": {
4358
4358
  "filename": "lib/database/index.ts",
4359
- "line": 181
4359
+ "line": 180
4360
4360
  },
4361
4361
  "name": "getParameters",
4362
4362
  "parameters": [
@@ -4468,7 +4468,7 @@
4468
4468
  "kind": "interface",
4469
4469
  "locationInModule": {
4470
4470
  "filename": "lib/database/index.ts",
4471
- "line": 221
4471
+ "line": 220
4472
4472
  },
4473
4473
  "name": "PgStacDatabaseProps",
4474
4474
  "properties": [
@@ -4482,7 +4482,7 @@
4482
4482
  "immutable": true,
4483
4483
  "locationInModule": {
4484
4484
  "filename": "lib/database/index.ts",
4485
- "line": 248
4485
+ "line": 254
4486
4486
  },
4487
4487
  "name": "addPgbouncer",
4488
4488
  "optional": true,
@@ -4500,7 +4500,7 @@
4500
4500
  "immutable": true,
4501
4501
  "locationInModule": {
4502
4502
  "filename": "lib/database/index.ts",
4503
- "line": 265
4503
+ "line": 271
4504
4504
  },
4505
4505
  "name": "bootstrapperLambdaFunctionOptions",
4506
4506
  "optional": true,
@@ -4518,7 +4518,7 @@
4518
4518
  "immutable": true,
4519
4519
  "locationInModule": {
4520
4520
  "filename": "lib/database/index.ts",
4521
- "line": 256
4521
+ "line": 262
4522
4522
  },
4523
4523
  "name": "customResourceProperties",
4524
4524
  "optional": true,
@@ -4541,7 +4541,7 @@
4541
4541
  "immutable": true,
4542
4542
  "locationInModule": {
4543
4543
  "filename": "lib/database/index.ts",
4544
- "line": 227
4544
+ "line": 226
4545
4545
  },
4546
4546
  "name": "pgstacDbName",
4547
4547
  "optional": true,
@@ -4559,7 +4559,7 @@
4559
4559
  "immutable": true,
4560
4560
  "locationInModule": {
4561
4561
  "filename": "lib/database/index.ts",
4562
- "line": 241
4562
+ "line": 247
4563
4563
  },
4564
4564
  "name": "pgstacUsername",
4565
4565
  "optional": true,
@@ -4567,6 +4567,24 @@
4567
4567
  "primitive": "string"
4568
4568
  }
4569
4569
  },
4570
+ {
4571
+ "abstract": true,
4572
+ "docs": {
4573
+ "default": "0.8.5",
4574
+ "stability": "experimental",
4575
+ "summary": "Version of pgstac to install on the database."
4576
+ },
4577
+ "immutable": true,
4578
+ "locationInModule": {
4579
+ "filename": "lib/database/index.ts",
4580
+ "line": 233
4581
+ },
4582
+ "name": "pgstacVersion",
4583
+ "optional": true,
4584
+ "type": {
4585
+ "primitive": "string"
4586
+ }
4587
+ },
4570
4588
  {
4571
4589
  "abstract": true,
4572
4590
  "docs": {
@@ -4577,7 +4595,7 @@
4577
4595
  "immutable": true,
4578
4596
  "locationInModule": {
4579
4597
  "filename": "lib/database/index.ts",
4580
- "line": 234
4598
+ "line": 240
4581
4599
  },
4582
4600
  "name": "secretsPrefix",
4583
4601
  "optional": true,
@@ -5585,6 +5603,6 @@
5585
5603
  "symbolId": "lib/titiler-pgstac-api/index:TitilerPgstacApiLambda"
5586
5604
  }
5587
5605
  },
5588
- "version": "7.4.1",
5589
- "fingerprint": "8/emx1MDq2uExJfVDNETAiijW9lSltdZRelx4l+2UDM="
5606
+ "version": "7.5.0",
5607
+ "fingerprint": "T40DSELPsAP955iV1u6Zc7g/8YGO+46Aw8q71FvTqgQ="
5590
5608
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # [7.5.0](https://github.com/developmentseed/eoapi-cdk/compare/v7.4.2...v7.5.0) (2025-02-04)
2
+
3
+
4
+ ### Features
5
+
6
+ * configure pgstac version in custom properties ([#123](https://github.com/developmentseed/eoapi-cdk/issues/123)) ([a29ea21](https://github.com/developmentseed/eoapi-cdk/commit/a29ea216dbb4631081f052c312ee9c7957276dae))
7
+
8
+ ## [7.4.2](https://github.com/developmentseed/eoapi-cdk/compare/v7.4.1...v7.4.2) (2025-02-03)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * ensure dependency secret update function completes ([#120](https://github.com/developmentseed/eoapi-cdk/issues/120)) ([90cdc89](https://github.com/developmentseed/eoapi-cdk/commit/90cdc89381f36528172e0035d50a174f7f1ee330))
14
+ * upgrade workflow versions ([#121](https://github.com/developmentseed/eoapi-cdk/issues/121)) ([45e72dd](https://github.com/developmentseed/eoapi-cdk/commit/45e72dd7cf20ae32e1b643ffcafd54bcac2cfd1e))
15
+
16
+ ## [7.4.2](https://github.com/developmentseed/eoapi-cdk/compare/v7.4.1...v7.4.2) (2025-02-03)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * ensure dependency secret update function completes ([#120](https://github.com/developmentseed/eoapi-cdk/issues/120)) ([90cdc89](https://github.com/developmentseed/eoapi-cdk/commit/90cdc89381f36528172e0035d50a174f7f1ee330))
22
+
1
23
  ## [7.4.1](https://github.com/developmentseed/eoapi-cdk/compare/v7.4.0...v7.4.1) (2025-01-24)
2
24
 
3
25
 
@@ -85,6 +85,9 @@ class pgStacInfraStack(Stack):
85
85
 
86
86
  assert pgstac_db.security_group
87
87
 
88
+ # make sure we can get the secret value!
89
+ assert pgstac_db.pgstac_secret.secret_value_from_json("host").to_string()
90
+
88
91
  pgstac_db.security_group.add_ingress_rule(
89
92
  aws_ec2.Peer.any_ipv4(), aws_ec2.Port.tcp(5432)
90
93
  )
@@ -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.4.1" };
161
+ BastionHost[_a] = { fqn: "eoapi-cdk.BastionHost", version: "7.5.0" };
162
162
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQU1xQjtBQUNyQiwyQ0FBdUM7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpR0c7QUFDSCxNQUFhLFdBQVksU0FBUSxzQkFBUztJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUscUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2pELFlBQVksRUFBRSxHQUFHLFNBQVMsZUFBZTtZQUN6QyxZQUFZLEVBQUUscUJBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixxQkFBRyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFDckMscUJBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QjtZQUNELFlBQVksRUFBRSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLHFCQUFHLENBQUMscUJBQXFCLENBQUMsY0FBYztnQkFDcEQsT0FBTyxFQUFFLHFCQUFHLENBQUMsa0JBQWtCLENBQUMsTUFBTTthQUN2QyxDQUFDO1lBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQyxDQUFDO1FBRUgsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLHFCQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7Z0JBQ3BDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDMUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQy9CLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDdEMscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUNsQixvQ0FBb0MsQ0FDckMsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ2pDLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDbkIscUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQ2pDLFlBQVksQ0FDYixDQUFDO1FBQ0osQ0FBQztRQUVELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDM0IsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZTtnQkFDZiwrQkFBK0I7Z0JBQy9CLGVBQWU7YUFDaEI7WUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDakIsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVU7WUFDL0IsVUFBVSxFQUFFLEdBQUcsU0FBUyxjQUFjO1NBQ3ZDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsMkJBQTJCLEVBQUU7WUFDL0MsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO1lBQ3JDLFVBQVUsRUFBRSxHQUFHLFNBQVMscUJBQXFCO1NBQzlDLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUNBQWlDLEVBQUU7WUFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCO1lBQzFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsa0JBQWtCO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekVILGtDQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19yZHMgYXMgcmRzLFxuICBDZm5PdXRwdXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9jYXRlZCBpbiBhbiBpc29sYXRlZCBzdWJuZXQsIG1lYW5pbmcgdGhhdCBpdCBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIHRoZSBwdWJsaWMgaW50ZXJuZXQuIEFzIHN1Y2gsIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGRpcmVjdGx5LCBhIHVzZXIgbXVzdCB0dW5uZWwgdGhyb3VnaCBhIGJhc3Rpb24gaG9zdC5cbiAqXG4gKiAjIyMgQ29uZmlndXJpbmdcbiAqXG4gKiBUaGlzIGNvZGViYXNlIGNvbnRyb2xzIF93aG9fIGlzIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgYmFzdGlvbiBob3N0LiBUaGlzIHJlcXVpcmVzIHR3byBzdGVwczpcbiAqXG4gKiAxLiBBZGRpbmcgdGhlIElQIGFkZHJlc3MgZnJvbSB3aGljaCB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gdGhlIGBpcHY0QWxsb3dsaXN0YCBhcnJheVxuICogMS4gQ3JlYXRpbmcgYSBiYXN0aW9uIGhvc3Qgc3lzdGVtIHVzZXIgYnkgYWRkaW5nIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBpbmZvcm0gdG8gYHVzZXJkYXRhLnlhbWxgXG4gKlxuICogIyMjIyBBZGRpbmcgYW4gSVAgYWRkcmVzcyB0byB0aGUgYGlwdjRBbGxvd2xpc3RgIGFycmF5XG4gKlxuICogVGhlIGBCYXN0aW9uSG9zdGAgY29uc3RydWN0IHRha2VzIGluIGFuIGBpcHY0QWxsb3dsaXN0YCBhcnJheSBhcyBhbiBhcmd1bWVudC4gRmluZCB5b3VyIElQIGFkZHJlc3MgKGVnIGBjdXJsIGFwaS5pcGlmeS5vcmdgKSBhbmQgYWRkIHRoYXQgdG8gdGhlIGFycmF5IGFsb25nIHdpdGggdGhlIHRyYWlsaW5nIENJRFIgYmxvY2sgKGxpa2VseSBgLzMyYCB0byBpbmRpY2F0ZSB0aGF0IHlvdSBhcmUgYWRkaW5nIGEgc2luZ2xlIElQIGFkZHJlc3MpLlxuICpcbiAqICMjIyMgQ3JlYXRpbmcgYSB1c2VyIHZpYSBgdXNlcmRhdGEueWFtbGBcbiAqXG4gKiBBZGQgYW4gZW50cnkgdG8gdGhlIGB1c2Vyc2AgYXJyYXkgd2l0aCBhIHVzZXJuYW1lIChsaWtlbHkgbWF0Y2hpbmcgeW91ciBsb2NhbCBzeXN0ZW1zIHVzZXJuYW1lLCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIHRoZSBgd2hvYW1pYCBjb21tYW5kIGluIHlvdXIgdGVybWluYWwpIGFuZCBhIHB1YmxpYyBrZXkgKGxpa2VseSB5b3VyIGRlZmF1bHQgcHVibGljIGtleSwgd2hpY2ggeW91IGNhbiBnZXQgYnkgcnVubmluZyBgY2F0IH4vLnNzaC9pZF8qLnB1YmAgaW4geW91ciB0ZXJtaW5hbCkuXG4gKlxuICogIyMjIyBUaXBzICYgVHJpY2tzIHdoZW4gdXNpbmcgdGhlIEJhc3Rpb24gSG9zdFxuICpcbiAqICoqQ29ubmVjdGluZyB0byBSRFMgSW5zdGFuY2UgdmlhIFNTTSoqXG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgXFxcbiAqIC0tZG9jdW1lbnQtbmFtZSBBV1MtU3RhcnRQb3J0Rm9yd2FyZGluZ1Nlc3Npb25Ub1JlbW90ZUhvc3QgXFxcbiAqIC0tcGFyYW1ldGVycyAne1xuICogXCJob3N0XCI6IFtcbiAqIFwiZXhhbXBsZS1kYi5jNWFiY2RlZmdoaWoudXMtd2VzdC0yLnJkcy5hbWF6b25hd3MuY29tXCJcbiAqIF0sXG4gKiBcInBvcnROdW1iZXJcIjogW1xuICogXCI1NDMyXCJcbiAqIF0sXG4gKiBcImxvY2FsUG9ydE51bWJlclwiOiBbXG4gKiBcIjk5OTlcIlxuICogXVxuICogfScgXFxcbiAqIC0tcHJvZmlsZSAkQVdTX1BST0ZJTEVcbiAqIGBgYFxuICpcbiAqIGBgYHNoXG4gKiBwc3FsIC1oIGxvY2FsaG9zdCAtcCA5OTk5ICMgY29udGludWUgYWRkaW5nIHVzZXJuYW1lICgtVSkgYW5kIGRiICgtZCkgaGVyZS4uLlxuICogYGBgXG4gKlxuICogQ29ubmVjdCBkaXJlY3RseSB0byBCYXN0aW9uIEhvc3Q6XG4gKlxuICogYGBgc2hcbiAqIGF3cyBzc20gc3RhcnQtc2Vzc2lvbiAtLXRhcmdldCAkSU5TVEFOQ0VfSUQgLS1wcm9maWxlICRBV1NfUFJPRklMRVxuICogYGBgXG4gKlxuICogKipTZXR0aW5nIHVwIGFuIFNTSCB0dW5uZWwqKlxuICpcbiAqIEluIHlvdXIgYH4vLnNzaC9jb25maWdgIGZpbGUsIGFkZCBhbiBlbnRyeSBsaWtlOlxuICpcbiAqIGBgYFxuICogSG9zdCBkYi10dW5uZWxcbiAqIEhvc3RuYW1lIHt0aGUtYmFzdGlvbi1ob3N0LWFkZHJlc3N9XG4gKiBMb2NhbEZvcndhcmQgOTk5OSB7dGhlLWRiLWhvc3RuYW1lfTo1NDMyXG4gKiBgYGBcbiAqXG4gKiBUaGVuIGEgdHVubmVsIGNhbiBiZSBvcGVuZWQgdmlhOlxuICpcbiAqIGBgYFxuICogc3NoIC1OIGRiLXR1bm5lbFxuICogYGBgXG4gKlxuICogQW5kIGEgY29ubmVjdGlvbiB0byB0aGUgREIgY2FuIGJlIG1hZGUgdmlhOlxuICpcbiAqIGBgYFxuICogcHNxbCAtaCAxMjcuMC4wLjEgLXAgOTk5OSAtVSB7dXNlcm5hbWV9IC1kIHtkYXRhYmFzZX1cbiAqIGBgYFxuICpcbiAqICoqSGFuZGxpbmcgYFJFTU9URSBIT1NUIElERU5USUZJQ0FUSU9OIEhBUyBDSEFOR0VEIWAgZXJyb3IqKlxuICpcbiAqIElmIHlvdSd2ZSByZWRlcGxveWVkIGEgYmFzdGlvbiBob3N0IHRoYXQgeW91J3ZlIHByZXZpb3VzbHkgY29ubmVjdGVkIHRvLCB5b3UgbWF5IHNlZSBhbiBlcnJvciBsaWtlOlxuICpcbiAqIGBgYFxuICogQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBcbiAqIEAgICAgV0FSTklORzogUkVNT1RFIEhPU1QgSURFTlRJRklDQVRJT04gSEFTIENIQU5HRUQhICAgICBAXG4gKiBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFxuICogSVQgSVMgUE9TU0lCTEUgVEhBVCBTT01FT05FIElTIERPSU5HIFNPTUVUSElORyBOQVNUWSFcbiAqIFNvbWVvbmUgY291bGQgYmUgZWF2ZXNkcm9wcGluZyBvbiB5b3UgcmlnaHQgbm93IChtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2spIVxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0IGEgaG9zdCBrZXkgaGFzIGp1c3QgYmVlbiBjaGFuZ2VkLlxuICogVGhlIGZpbmdlcnByaW50IGZvciB0aGUgRUNEU0Ega2V5IHNlbnQgYnkgdGhlIHJlbW90ZSBob3N0IGlzXG4gKiBTSEEyNTY6bVBueEFPWFRwYjA2UEZnSTFRYzhUTVEyZTliN2dvVTh5Mk5kUzVoeklyOC5cbiAqIFBsZWFzZSBjb250YWN0IHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IuXG4gKiBBZGQgY29ycmVjdCBob3N0IGtleSBpbiAvVXNlcnMvdXNlcm5hbWUvLnNzaC9rbm93bl9ob3N0cyB0byBnZXQgcmlkIG9mIHRoaXMgbWVzc2FnZS5cbiAqIE9mZmVuZGluZyBFQ0RTQSBrZXkgaW4gL1VzZXJzL3VzZXJuYW1lLy5zc2gva25vd25faG9zdHM6MjhcbiAqIEVDRFNBIGhvc3Qga2V5IGZvciBlYzItMTItMzQtNTYtNzg5LnVzLXdlc3QtMi5jb21wdXRlLmFtYXpvbmF3cy5jb20gaGFzIGNoYW5nZWQgYW5kIHlvdSBoYXZlIHJlcXVlc3RlZCBzdHJpY3QgY2hlY2tpbmcuXG4gKiBIb3N0IGtleSB2ZXJpZmljYXRpb24gZmFpbGVkLlxuICogYGBgXG4gKlxuICogVGhpcyBpcyBkdWUgdG8gdGhlIHNlcnZlcidzIGZpbmdlcnByaW50IGNoYW5naW5nLiBXZSBjYW4gc2NydWIgdGhlIGZpbmdlcnByaW50IGZyb20gb3VyIHN5c3RlbSB3aXRoIGEgY29tbWFuZCBsaWtlOlxuICpcbiAqIGBgYFxuICogc3NoLWtleWdlbiAtUiAxMi4zNC41Ni43ODlcbiAqIGBgYFxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc3Rpb25Ib3N0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgaW5zdGFuY2U6IGVjMi5JbnN0YW5jZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFzdGlvbkhvc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7IHN0YWNrTmFtZSB9ID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICAvLyBCdWlsZCBlYzIgaW5zdGFuY2VcbiAgICB0aGlzLmluc3RhbmNlID0gbmV3IGVjMi5JbnN0YW5jZSh0aGlzLCBcImJhc3Rpb24taG9zdFwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgICBpbnN0YW5jZU5hbWU6IGAke3N0YWNrTmFtZX0gYmFzdGlvbiBob3N0YCxcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuQlVSU1RBQkxFNF9HUkFWSVRPTixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5OQU5PXG4gICAgICApLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmxhdGVzdEFtYXpvbkxpbnV4KHtcbiAgICAgICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICAgICAgY3B1VHlwZTogZWMyLkFtYXpvbkxpbnV4Q3B1VHlwZS5BUk1fNjQsXG4gICAgICB9KSxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YSxcbiAgICAgIHVzZXJEYXRhQ2F1c2VzUmVwbGFjZW1lbnQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBc3NpZ24gZWxhc3RpYyBJUFxuICAgIGlmIChwcm9wcy5jcmVhdGVFbGFzdGljSXAgPz8gdHJ1ZSkge1xuICAgICAgbmV3IGVjMi5DZm5FSVAodGhpcywgXCJJUFwiLCB7XG4gICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCxcbiAgICAgICAgdGFnczogW3sga2V5OiBcIk5hbWVcIiwgdmFsdWU6IHN0YWNrTmFtZSB9XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFsbG93IGJhc3Rpb24gaG9zdCB0byBjb25uZWN0IHRvIGRiXG4gICAgdGhpcy5pbnN0YW5jZS5jb25uZWN0aW9ucy5hbGxvd1RvKFxuICAgICAgcHJvcHMuZGIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0sXG4gICAgICBlYzIuUG9ydC50Y3AoNTQzMiksXG4gICAgICBcIkFsbG93IGNvbm5lY3Rpb24gZnJvbSBiYXN0aW9uIGhvc3RcIlxuICAgICk7XG5cbiAgICAvLyBBbGxvdyBJUCBhY2Nlc3MgdG8gYmFzdGlvbiBob3N0XG4gICAgZm9yIChjb25zdCBpcHY0IG9mIHByb3BzLmlwdjRBbGxvd2xpc3QpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgICBlYzIuUGVlci5pcHY0KGlwdjQpLFxuICAgICAgICBlYzIuUG9ydC50Y3AocHJvcHMuc3NoUG9ydCB8fCAyMiksXG4gICAgICAgIFwiU1NIIEFjY2Vzc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEludGVncmF0ZSB3aXRoIFNTTVxuICAgIHRoaXMuaW5zdGFuY2UuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJzc21tZXNzYWdlczoqXCIsXG4gICAgICAgICAgXCJzc206VXBkYXRlSW5zdGFuY2VJbmZvcm1hdGlvblwiLFxuICAgICAgICAgIFwiZWMybWVzc2FnZXM6KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtaWQtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlSWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtzdGFja05hbWV9LWluc3RhbmNlLWlkYCxcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiaW5zdGFuY2UtcHVibGljLWlwLW91dHB1dFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0lwLFxuICAgICAgZXhwb3J0TmFtZTogYCR7c3RhY2tOYW1lfS1pbnN0YW5jZS1wdWJsaWMtaXBgLFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJpbnN0YW5jZS1wdWJsaWMtZG5zLW5hbWUtb3V0cHV0XCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlUHVibGljRG5zTmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3N0YWNrTmFtZX0tcHVibGljLWRucy1uYW1lYCxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc3Rpb25Ib3N0UHJvcHMge1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBkYjogcmRzLklEYXRhYmFzZUluc3RhbmNlO1xuICByZWFkb25seSB1c2VyRGF0YTogZWMyLlVzZXJEYXRhO1xuICByZWFkb25seSBpcHY0QWxsb3dsaXN0OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgc3NoUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gZWxhc3RpYyBJUCBzaG91bGQgYmUgY3JlYXRlZCBmb3IgdGhlIGJhc3Rpb24gaG9zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZUVsYXN0aWNJcD86IGJvb2xlYW47XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { aws_ec2 as ec2, aws_secretsmanager as secretsmanager } from "aws-cdk-lib";
1
+ import { aws_ec2 as ec2, aws_secretsmanager as secretsmanager, CustomResource } from "aws-cdk-lib";
2
2
  import { Construct } from "constructs";
3
3
  export interface PgBouncerConfigProps {
4
4
  poolMode?: "transaction" | "session" | "statement";
@@ -50,6 +50,7 @@ export declare class PgBouncer extends Construct {
50
50
  readonly instance: ec2.Instance;
51
51
  readonly pgbouncerSecret: secretsmanager.Secret;
52
52
  readonly securityGroup: ec2.SecurityGroup;
53
+ readonly secretUpdateComplete: CustomResource;
53
54
  private getDefaultConfig;
54
55
  constructor(scope: Construct, id: string, props: PgBouncerProps);
55
56
  private loadUserDataScript;
@@ -106,7 +106,7 @@ class PgBouncer extends constructs_1.Construct {
106
106
  });
107
107
  props.database.secret.grantRead(secretUpdaterFn);
108
108
  this.pgbouncerSecret.grantWrite(secretUpdaterFn);
109
- new aws_cdk_lib_1.CustomResource(this, "pgbouncerSecretBootstrapper", {
109
+ this.secretUpdateComplete = new aws_cdk_lib_1.CustomResource(this, "pgbouncerSecretBootstrapper", {
110
110
  serviceToken: secretUpdaterFn.functionArn,
111
111
  properties: {
112
112
  instanceIp: props.usePublicSubnet
@@ -129,4 +129,4 @@ class PgBouncer extends constructs_1.Construct {
129
129
  }
130
130
  }
131
131
  exports.PgBouncer = PgBouncer;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGdCb3VuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGdCb3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQU9xQjtBQUNyQiwyQ0FBdUM7QUFFdkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQTBEN0IsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFLdEMsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDaEYsa0NBQWtDO0lBRTFCLGdCQUFnQixDQUN0QixnQkFBd0I7UUFFeEIsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUM7WUFDZCxlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7WUFDdkMsa0JBQWtCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRTtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixrQ0FBa0M7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQzdDLHFCQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFDcEIscUJBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QixDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxtQkFBbUIsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEUsc0NBQXNDO1FBQ3RDLE1BQU0sZUFBZSxHQUFtQztZQUN0RCxHQUFHLGFB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Y0FBYyxHQUFHLHFCQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRS9DLDBEQUEwRDtRQUMxRCxjQUFjLENBQUMsV0FBVyxDQUN4QixxQkFBcUIsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQ3ZELGlCQUFpQixHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQy9DLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUNyRCwwQkFBMEIsR0FBRyxlQUFlLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFDaEUsNEJBQTRCLEdBQUcsZUFBZSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQ3BFLHdCQUF3QixHQUFHLGVBQWUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUM1RCw0QkFBNEIsR0FBRyxlQUFlLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFDcEUsK0JBQStCO1lBQzdCLGVBQWUsQ0FBQyxrQkFBa0I7WUFDbEMsR0FBRyxFQUNMLDZCQUE2QixHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQ3RFLCtCQUErQixHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQzNFLENBQUM7UUFFRiwwQkFBMEI7UUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztRQUNoRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRCxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQXJMRCw4QkFxTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0c21hbmFnZXIsXG4gIEN1c3RvbVJlc291cmNlLFxuICBTdGFjayxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuLy8gdXNlZCB0byBwb3B1bGF0ZSBwZ2JvdW5jZXIgY29uZmlnOlxuLy8gc2VlIGh0dHBzOi8vd3d3LnBnYm91bmNlci5vcmcvY29uZmlnLmh0bWwgZm9yIGRldGFpbHNcbmV4cG9ydCBpbnRlcmZhY2UgUGdCb3VuY2VyQ29uZmlnUHJvcHMge1xuICBwb29sTW9kZT86IFwidHJhbnNhY3Rpb25cIiB8IFwic2Vzc2lvblwiIHwgXCJzdGF0ZW1lbnRcIjtcbiAgbWF4Q2xpZW50Q29ubj86IG51bWJlcjtcbiAgZGVmYXVsdFBvb2xTaXplPzogbnVtYmVyO1xuICBtaW5Qb29sU2l6ZT86IG51bWJlcjtcbiAgcmVzZXJ2ZVBvb2xTaXplPzogbnVtYmVyO1xuICByZXNlcnZlUG9vbFRpbWVvdXQ/OiBudW1iZXI7XG4gIG1heERiQ29ubmVjdGlvbnM/OiBudW1iZXI7XG4gIG1heFVzZXJDb25uZWN0aW9ucz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ0JvdW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIGZvciB0aGUgcGdib3VuY2VyIGluc3RhbmNlXG4gICAqL1xuICBpbnN0YW5jZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVlBDIHRvIGRlcGxveSBQZ0JvdW5jZXIgaW50b1xuICAgKi9cbiAgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIFJEUyBpbnN0YW5jZSB0byBjb25uZWN0IHRvXG4gICAqL1xuICBkYXRhYmFzZToge1xuICAgIGNvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnM7XG4gICAgc2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbm5lY3Rpb25zIHNldHRpbmcgZm9yIHRoZSBkYXRhYmFzZS5cbiAgICogUGdCb3VuY2VyIHdpbGwgdXNlIDEwIGZld2VyIHRoYW4gdGhpcyB2YWx1ZS5cbiAgICovXG4gIGRiTWF4Q29ubmVjdGlvbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkZXBsb3kgaW4gcHVibGljIHN1Ym5ldFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdXNlUHVibGljU3VibmV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5zdGFuY2UgdHlwZSBmb3IgUGdCb3VuY2VyXG4gICAqIEBkZWZhdWx0IHQzLm1pY3JvXG4gICAqL1xuICBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBQZ0JvdW5jZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwZ0JvdW5jZXJDb25maWc/OiBQZ0JvdW5jZXJDb25maWdQcm9wcztcbn1cblxuZXhwb3J0IGNsYXNzIFBnQm91bmNlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZTogZWMyLkluc3RhbmNlO1xuICBwdWJsaWMgcmVhZG9ubHkgcGdib3VuY2VyU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5TZWNyZXQ7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcblxuICAvLyBUaGUgbWF4X2Nvbm5lY3Rpb25zIHBhcmFtZXRlciBpbiBQZ0JvdW5jZXIgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgLy8gY29ubmVjdGlvbnMgdG8gb3BlbiBvbiB0aGUgYWN0dWFsIGRhdGFiYXNlIGluc3RhbmNlLiBXZSB3YW50IHRoYXQgbnVtYmVyIHRvXG4gIC8vIGJlIHNsaWdodGx5IHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIG1heF9jb25uZWN0aW9ucyB2YWx1ZSBvbiB0aGUgUkRTIGluc3RhbmNlXG4gIC8vIHNvIHdlIHBlcmZvcm0gdGhpcyBjYWxjdWxhdGlvbi5cblxuICBwcml2YXRlIGdldERlZmF1bHRDb25maWcoXG4gICAgZGJNYXhDb25uZWN0aW9uczogbnVtYmVyXG4gICk6IFJlcXVpcmVkPFBnQm91bmNlckNvbmZpZ1Byb3BzPiB7XG4gICAgLy8gbWF4RGJDb25uZWN0aW9ucyAoYW5kIG1heFVzZXJDb25uZWN0aW9ucykgYXJlIHRoZSBvbmx5IHNldHRpbmdzIHRoYXQgbmVlZFxuICAgIC8vIHRvIGJlIHJlc3BvbnNpdmUgdG8gdGhlIGRhdGFiYXNlIHNpemUvbWF4X2Nvbm5lY3Rpb25zIHNldHRpbmdcbiAgICByZXR1cm4ge1xuICAgICAgcG9vbE1vZGU6IFwidHJhbnNhY3Rpb25cIixcbiAgICAgIG1heENsaWVudENvbm46IDEwMDAsXG4gICAgICBkZWZhdWx0UG9vbFNpemU6IDUsXG4gICAgICBtaW5Qb29sU2l6ZTogMCxcbiAgICAgIHJlc2VydmVQb29sU2l6ZTogNSxcbiAgICAgIHJlc2VydmVQb29sVGltZW91dDogNSxcbiAgICAgIG1heERiQ29ubmVjdGlvbnM6IGRiTWF4Q29ubmVjdGlvbnMgLSAxMCxcbiAgICAgIG1heFVzZXJDb25uZWN0aW9uczogZGJNYXhDb25uZWN0aW9ucyAtIDEwLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGdCb3VuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gU2V0IGRlZmF1bHRzIGZvciBvcHRpb25hbCBwcm9wc1xuICAgIGNvbnN0IGRlZmF1bHRJbnN0YW5jZVR5cGUgPSBlYzIuSW5zdGFuY2VUeXBlLm9mKFxuICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuVDMsXG4gICAgICBlYzIuSW5zdGFuY2VTaXplLk1JQ1JPXG4gICAgKTtcblxuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9IHByb3BzLmluc3RhbmNlVHlwZSA/PyBkZWZhdWx0SW5zdGFuY2VUeXBlO1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSB0aGlzLmdldERlZmF1bHRDb25maWcocHJvcHMuZGJNYXhDb25uZWN0aW9ucyk7XG5cbiAgICAvLyBNZXJnZSBwcm92aWRlZCBjb25maWcgd2l0aCBkZWZhdWx0c1xuICAgIGNvbnN0IHBnQm91bmNlckNvbmZpZzogUmVxdWlyZWQ8UGdCb3VuY2VyQ29uZmlnUHJvcHM+ID0ge1xuICAgICAgLi4uZGVmYXVsdENvbmZpZyxcbiAgICAgIC4uLnByb3BzLnBnQm91bmNlckNvbmZpZyxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIHJvbGUgZm9yIFBnQm91bmNlciBpbnN0YW5jZSB0byBlbmFibGUgd3JpdGluZyB0byBDbG91ZFdhdGNoXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIkluc3RhbmNlUm9sZVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwZ2JvdW5jZXIgaW5zdGFuY2Ugcm9sZSB3aXRoIFN5c3RlbXMgTWFuYWdlciArIENsb3VkV2F0Y2ggcGVybWlzc2lvbnNcIixcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgIFwiQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZVwiXG4gICAgICAgICksXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcIkNsb3VkV2F0Y2hBZ2VudFNlcnZlclBvbGljeVwiXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHBvbGljeSB0byBhbGxvdyByZWFkaW5nIFJEUyBjcmVkZW50aWFscyBmcm9tIFNlY3JldHMgTWFuYWdlclxuICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcInNlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5kYXRhYmFzZS5zZWNyZXQuc2VjcmV0QXJuXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhIHNlY3VyaXR5IGdyb3VwIGFuZCBhbGxvdyBjb25uZWN0aW9ucyBmcm9tIHRoZSBMYW1iZGEgSVAgcmFuZ2VzIGZvciB0aGlzIHJlZ2lvblxuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlBnQm91bmNlclNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJTZWN1cml0eSBncm91cCBmb3IgUGdCb3VuY2VyIGluc3RhbmNlXCIsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFBnQm91bmNlciBpbnN0YW5jZVxuICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSW5zdGFuY2VcIiwge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiB7XG4gICAgICAgIHN1Ym5ldFR5cGU6IHByb3BzLnVzZVB1YmxpY1N1Ym5ldFxuICAgICAgICAgID8gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgICAgOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXA6IHRoaXMuc2VjdXJpdHlHcm91cCxcbiAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgIGluc3RhbmNlTmFtZTogcHJvcHMuaW5zdGFuY2VOYW1lLFxuICAgICAgbWFjaGluZUltYWdlOiBlYzIuTWFjaGluZUltYWdlLmZyb21Tc21QYXJhbWV0ZXIoXG4gICAgICAgIFwiL2F3cy9zZXJ2aWNlL2Nhbm9uaWNhbC91YnVudHUvc2VydmVyL2phbW15L3N0YWJsZS9jdXJyZW50L2FtZDY0L2h2bS9lYnMtZ3AyL2FtaS1pZFwiLFxuICAgICAgICB7IG9zOiBlYzIuT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWCB9XG4gICAgICApLFxuICAgICAgcm9sZSxcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICB2b2x1bWU6IGVjMi5CbG9ja0RldmljZVZvbHVtZS5lYnMoMjAsIHtcbiAgICAgICAgICAgIHZvbHVtZVR5cGU6IGVjMi5FYnNEZXZpY2VWb2x1bWVUeXBlLkdQMyxcbiAgICAgICAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlbGV0ZU9uVGVybWluYXRpb246IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckRhdGE6IHRoaXMubG9hZFVzZXJEYXRhU2NyaXB0KHBnQm91bmNlckNvbmZpZywgcHJvcHMuZGF0YWJhc2UpLFxuICAgICAgdXNlckRhdGFDYXVzZXNSZXBsYWNlbWVudDogdHJ1ZSxcbiAgICAgIGFzc29jaWF0ZVB1YmxpY0lwQWRkcmVzczogcHJvcHMudXNlUHVibGljU3VibmV0LFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgUGdCb3VuY2VyIHRvIGNvbm5lY3QgdG8gUkRTXG4gICAgcHJvcHMuZGF0YWJhc2UuY29ubmVjdGlvbnMuYWxsb3dGcm9tKFxuICAgICAgdGhpcy5pbnN0YW5jZSxcbiAgICAgIGVjMi5Qb3J0LnRjcCg1NDMyKSxcbiAgICAgIFwiQWxsb3cgUGdCb3VuY2VyIHRvIGNvbm5lY3QgdG8gUkRTXCJcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHNlY3JldCBmb3IgcGdib3VuY2VyIGNvbm5lY3Rpb24gY3JlZGVudGlhbHNcbiAgICB0aGlzLnBnYm91bmNlclNlY3JldCA9IG5ldyBzZWNyZXRzbWFuYWdlci5TZWNyZXQodGhpcywgXCJQZ0JvdW5jZXJTZWNyZXRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBDb25uZWN0aW9uIGluZm9ybWF0aW9uIGZvciBQZ0JvdW5jZXIgaW5zdGFuY2UgJHtwcm9wcy5pbnN0YW5jZU5hbWV9YCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiBcImR1bW15XCIsXG4gICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBcInt9XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gR3JhbnQgdGhlIHJvbGUgcGVybWlzc2lvbiB0byByZWFkIHRoZSBuZXcgc2VjcmV0XG4gICAgdGhpcy5wZ2JvdW5jZXJTZWNyZXQuZ3JhbnRSZWFkKHJvbGUpO1xuXG4gICAgLy8gVXBkYXRlIHBnYm91bmNlclNlY3JldCB0byBjb250YWluIHBnc3RhY1NlY3JldCB2YWx1ZXMgYnV0IHdpdGggbmV3IHZhbHVlIGZvciBob3N0XG4gICAgY29uc3Qgc2VjcmV0VXBkYXRlckZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBcIlNlY3JldFVwZGF0ZXJGdW5jdGlvblwiLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCBcImxhbWJkYS9wZ2JvdW5jZXItc2VjcmV0LXVwZGF0ZXJcIilcbiAgICAgICksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBTT1VSQ0VfU0VDUkVUX0FSTjogcHJvcHMuZGF0YWJhc2Uuc2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgVEFSR0VUX1NFQ1JFVF9BUk46IHRoaXMucGdib3VuY2VyU2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBwcm9wcy5kYXRhYmFzZS5zZWNyZXQuZ3JhbnRSZWFkKHNlY3JldFVwZGF0ZXJGbik7XG4gICAgdGhpcy5wZ2JvdW5jZXJTZWNyZXQuZ3JhbnRXcml0ZShzZWNyZXRVcGRhdGVyRm4pO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwicGdib3VuY2VyU2VjcmV0Qm9vdHN0cmFwcGVyXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogc2VjcmV0VXBkYXRlckZuLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpbnN0YW5jZUlwOiBwcm9wcy51c2VQdWJsaWNTdWJuZXRcbiAgICAgICAgICA/IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VQdWJsaWNJcFxuICAgICAgICAgIDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZVByaXZhdGVJcCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRVc2VyRGF0YVNjcmlwdChcbiAgICBwZ0JvdW5jZXJDb25maWc6IFJlcXVpcmVkPE5vbk51bGxhYmxlPFBnQm91bmNlclByb3BzW1wicGdCb3VuY2VyQ29uZmlnXCJdPj4sXG4gICAgZGF0YWJhc2U6IHsgc2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0IH1cbiAgKTogZWMyLlVzZXJEYXRhIHtcbiAgICBjb25zdCB1c2VyRGF0YVNjcmlwdCA9IGVjMi5Vc2VyRGF0YS5mb3JMaW51eCgpO1xuXG4gICAgLy8gU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgJ2V4cG9ydCBTRUNSRVRfQVJOPVwiJyArIGRhdGFiYXNlLnNlY3JldC5zZWNyZXRBcm4gKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRUdJT049XCInICsgU3RhY2sub2YodGhpcykucmVnaW9uICsgJ1wiJyxcbiAgICAgICdleHBvcnQgUE9PTF9NT0RFPVwiJyArIHBnQm91bmNlckNvbmZpZy5wb29sTW9kZSArICdcIicsXG4gICAgICAnZXhwb3J0IE1BWF9DTElFTlRfQ09OTj1cIicgKyBwZ0JvdW5jZXJDb25maWcubWF4Q2xpZW50Q29ubiArICdcIicsXG4gICAgICAnZXhwb3J0IERFRkFVTFRfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5kZWZhdWx0UG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBNSU5fUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5taW5Qb29sU2l6ZSArICdcIicsXG4gICAgICAnZXhwb3J0IFJFU0VSVkVfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5yZXNlcnZlUG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRVNFUlZFX1BPT0xfVElNRU9VVD1cIicgK1xuICAgICAgICBwZ0JvdW5jZXJDb25maWcucmVzZXJ2ZVBvb2xUaW1lb3V0ICtcbiAgICAgICAgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX0RCX0NPTk5FQ1RJT05TPVwiJyArIHBnQm91bmNlckNvbmZpZy5tYXhEYkNvbm5lY3Rpb25zICsgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX1VTRVJfQ09OTkVDVElPTlM9XCInICsgcGdCb3VuY2VyQ29uZmlnLm1heFVzZXJDb25uZWN0aW9ucyArICdcIidcbiAgICApO1xuXG4gICAgLy8gTG9hZCB0aGUgc3RhcnR1cCBzY3JpcHRcbiAgICBjb25zdCBzY3JpcHRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL3BnYm91bmNlci1zZXR1cC5zaFwiKTtcbiAgICBsZXQgc2NyaXB0ID0gZnMucmVhZEZpbGVTeW5jKHNjcmlwdFBhdGgsIFwidXRmOFwiKTtcblxuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKHNjcmlwdCk7XG5cbiAgICByZXR1cm4gdXNlckRhdGFTY3JpcHQ7XG4gIH1cbn1cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGdCb3VuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUGdCb3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQU9xQjtBQUNyQiwyQ0FBdUM7QUFFdkMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQTBEN0IsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFNdEMsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDaEYsa0NBQWtDO0lBRTFCLGdCQUFnQixDQUN0QixnQkFBd0I7UUFFeEIsNEVBQTRFO1FBQzVFLGdFQUFnRTtRQUNoRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLGFBQWE7WUFDdkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUM7WUFDZCxlQUFlLEVBQUUsQ0FBQztZQUNsQixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7WUFDdkMsa0JBQWtCLEVBQUUsZ0JBQWdCLEdBQUcsRUFBRTtTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixrQ0FBa0M7UUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQzdDLHFCQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFDcEIscUJBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QixDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxtQkFBbUIsQ0FBQztRQUMvRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEUsc0NBQXNDO1FBQ3RDLE1BQU0sZUFBZSxHQUFtQztZQUN0RCxHQUFHLGFB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RUFDekUsUUFBNEM7UUFFNUMsTUFBTSxjQUFjLEdBQUcscUJBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0MsMERBQTBEO1FBQzFELGNBQWMsQ0FBQyxXQUFXLENBQ3hCLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFDdkQsaUJBQWlCLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFDL0Msb0JBQW9CLEdBQUcsZUFBZSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQ3JELDBCQUEwQixHQUFHLGVBQWUsQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUNoRSw0QkFBNEIsR0FBRyxlQUFlLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFDcEUsd0JBQXdCLEdBQUcsZUFBZSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQzVELDRCQUE0QixHQUFHLGVBQWUsQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUNwRSwrQkFBK0I7WUFDN0IsZUFBZSxDQUFDLGtCQUFrQjtZQUNsQyxHQUFHLEVBQ0wsNkJBQTZCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFDdEUsK0JBQStCLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FDM0UsQ0FBQztRQUVGLDBCQUEwQjtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWpELGNBQWMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBMUxELDhCQTBMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIFN0YWNrLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG4vLyB1c2VkIHRvIHBvcHVsYXRlIHBnYm91bmNlciBjb25maWc6XG4vLyBzZWUgaHR0cHM6Ly93d3cucGdib3VuY2VyLm9yZy9jb25maWcuaHRtbCBmb3IgZGV0YWlsc1xuZXhwb3J0IGludGVyZmFjZSBQZ0JvdW5jZXJDb25maWdQcm9wcyB7XG4gIHBvb2xNb2RlPzogXCJ0cmFuc2FjdGlvblwiIHwgXCJzZXNzaW9uXCIgfCBcInN0YXRlbWVudFwiO1xuICBtYXhDbGllbnRDb25uPzogbnVtYmVyO1xuICBkZWZhdWx0UG9vbFNpemU/OiBudW1iZXI7XG4gIG1pblBvb2xTaXplPzogbnVtYmVyO1xuICByZXNlcnZlUG9vbFNpemU/OiBudW1iZXI7XG4gIHJlc2VydmVQb29sVGltZW91dD86IG51bWJlcjtcbiAgbWF4RGJDb25uZWN0aW9ucz86IG51bWJlcjtcbiAgbWF4VXNlckNvbm5lY3Rpb25zPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBnQm91bmNlclByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgZm9yIHRoZSBwZ2JvdW5jZXIgaW5zdGFuY2VcbiAgICovXG4gIGluc3RhbmNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWUEMgdG8gZGVwbG95IFBnQm91bmNlciBpbnRvXG4gICAqL1xuICB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgUkRTIGluc3RhbmNlIHRvIGNvbm5lY3QgdG9cbiAgICovXG4gIGRhdGFiYXNlOiB7XG4gICAgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgICBzZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLklTZWNyZXQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1heGltdW0gY29ubmVjdGlvbnMgc2V0dGluZyBmb3IgdGhlIGRhdGFiYXNlLlxuICAgKiBQZ0JvdW5jZXIgd2lsbCB1c2UgMTAgZmV3ZXIgdGhhbiB0aGlzIHZhbHVlLlxuICAgKi9cbiAgZGJNYXhDb25uZWN0aW9uczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBpbiBwdWJsaWMgc3VibmV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VQdWJsaWNTdWJuZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSB0eXBlIGZvciBQZ0JvdW5jZXJcbiAgICogQGRlZmF1bHQgdDMubWljcm9cbiAgICovXG4gIGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFBnQm91bmNlciBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHBnQm91bmNlckNvbmZpZz86IFBnQm91bmNlckNvbmZpZ1Byb3BzO1xufVxuXG5leHBvcnQgY2xhc3MgUGdCb3VuY2VyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHB1YmxpYyByZWFkb25seSBwZ2JvdW5jZXJTZWNyZXQ6IHNlY3JldHNtYW5hZ2VyLlNlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IGVjMi5TZWN1cml0eUdyb3VwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0VXBkYXRlQ29tcGxldGU6IEN1c3RvbVJlc291cmNlO1xuXG4gIC8vIFRoZSBtYXhfY29ubmVjdGlvbnMgcGFyYW1ldGVyIGluIFBnQm91bmNlciBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAvLyBjb25uZWN0aW9ucyB0byBvcGVuIG9uIHRoZSBhY3R1YWwgZGF0YWJhc2UgaW5zdGFuY2UuIFdlIHdhbnQgdGhhdCBudW1iZXIgdG9cbiAgLy8gYmUgc2xpZ2h0bHkgc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgbWF4X2Nvbm5lY3Rpb25zIHZhbHVlIG9uIHRoZSBSRFMgaW5zdGFuY2VcbiAgLy8gc28gd2UgcGVyZm9ybSB0aGlzIGNhbGN1bGF0aW9uLlxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbmZpZyhcbiAgICBkYk1heENvbm5lY3Rpb25zOiBudW1iZXJcbiAgKTogUmVxdWlyZWQ8UGdCb3VuY2VyQ29uZmlnUHJvcHM+IHtcbiAgICAvLyBtYXhEYkNvbm5lY3Rpb25zIChhbmQgbWF4VXNlckNvbm5lY3Rpb25zKSBhcmUgdGhlIG9ubHkgc2V0dGluZ3MgdGhhdCBuZWVkXG4gICAgLy8gdG8gYmUgcmVzcG9uc2l2ZSB0byB0aGUgZGF0YWJhc2Ugc2l6ZS9tYXhfY29ubmVjdGlvbnMgc2V0dGluZ1xuICAgIHJldHVybiB7XG4gICAgICBwb29sTW9kZTogXCJ0cmFuc2FjdGlvblwiLFxuICAgICAgbWF4Q2xpZW50Q29ubjogMTAwMCxcbiAgICAgIGRlZmF1bHRQb29sU2l6ZTogNSxcbiAgICAgIG1pblBvb2xTaXplOiAwLFxuICAgICAgcmVzZXJ2ZVBvb2xTaXplOiA1LFxuICAgICAgcmVzZXJ2ZVBvb2xUaW1lb3V0OiA1LFxuICAgICAgbWF4RGJDb25uZWN0aW9uczogZGJNYXhDb25uZWN0aW9ucyAtIDEwLFxuICAgICAgbWF4VXNlckNvbm5lY3Rpb25zOiBkYk1heENvbm5lY3Rpb25zIC0gMTAsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQZ0JvdW5jZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBTZXQgZGVmYXVsdHMgZm9yIG9wdGlvbmFsIHByb3BzXG4gICAgY29uc3QgZGVmYXVsdEluc3RhbmNlVHlwZSA9IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UMyxcbiAgICAgIGVjMi5JbnN0YW5jZVNpemUuTUlDUk9cbiAgICApO1xuXG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID0gcHJvcHMuaW5zdGFuY2VUeXBlID8/IGRlZmF1bHRJbnN0YW5jZVR5cGU7XG4gICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdENvbmZpZyhwcm9wcy5kYk1heENvbm5lY3Rpb25zKTtcblxuICAgIC8vIE1lcmdlIHByb3ZpZGVkIGNvbmZpZyB3aXRoIGRlZmF1bHRzXG4gICAgY29uc3QgcGdCb3VuY2VyQ29uZmlnOiBSZXF1aXJlZDxQZ0JvdW5jZXJDb25maWdQcm9wcz4gPSB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnLFxuICAgICAgLi4ucHJvcHMucGdCb3VuY2VyQ29uZmlnLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgcm9sZSBmb3IgUGdCb3VuY2VyIGluc3RhbmNlIHRvIGVuYWJsZSB3cml0aW5nIHRvIENsb3VkV2F0Y2hcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcInBnYm91bmNlciBpbnN0YW5jZSByb2xlIHdpdGggU3lzdGVtcyBNYW5hZ2VyICsgQ2xvdWRXYXRjaCBwZXJtaXNzaW9uc1wiLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlYzIuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCJcbiAgICAgICAgKSxcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgIFwiQ2xvdWRXYXRjaEFnZW50U2VydmVyUG9saWN5XCJcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgcG9saWN5IHRvIGFsbG93IHJlYWRpbmcgUkRTIGNyZWRlbnRpYWxzIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wic2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWVcIl0sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLmRhdGFiYXNlLnNlY3JldC5zZWNyZXRBcm5dLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIGEgc2VjdXJpdHkgZ3JvdXAgYW5kIGFsbG93IGNvbm5lY3Rpb25zIGZyb20gdGhlIExhbWJkYSBJUCByYW5nZXMgZm9yIHRoaXMgcmVnaW9uXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiUGdCb3VuY2VyU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNlY3VyaXR5IGdyb3VwIGZvciBQZ0JvdW5jZXIgaW5zdGFuY2VcIixcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgUGdCb3VuY2VyIGluc3RhbmNlXG4gICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgXCJJbnN0YW5jZVwiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgc3VibmV0VHlwZTogcHJvcHMudXNlUHVibGljU3VibmV0XG4gICAgICAgICAgPyBlYzIuU3VibmV0VHlwZS5QVUJMSUNcbiAgICAgICAgICA6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9LFxuICAgICAgc2VjdXJpdHlHcm91cDogdGhpcy5zZWN1cml0eUdyb3VwLFxuICAgICAgaW5zdGFuY2VUeXBlLFxuICAgICAgaW5zdGFuY2VOYW1lOiBwcm9wcy5pbnN0YW5jZU5hbWUsXG4gICAgICBtYWNoaW5lSW1hZ2U6IGVjMi5NYWNoaW5lSW1hZ2UuZnJvbVNzbVBhcmFtZXRlcihcbiAgICAgICAgXCIvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvamFtbXkvc3RhYmxlL2N1cnJlbnQvYW1kNjQvaHZtL2Vicy1ncDIvYW1pLWlkXCIsXG4gICAgICAgIHsgb3M6IGVjMi5PcGVyYXRpbmdTeXN0ZW1UeXBlLkxJTlVYIH1cbiAgICAgICksXG4gICAgICByb2xlLFxuICAgICAgYmxvY2tEZXZpY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBcIi9kZXYveHZkYVwiLFxuICAgICAgICAgIHZvbHVtZTogZWMyLkJsb2NrRGV2aWNlVm9sdW1lLmVicygyMCwge1xuICAgICAgICAgICAgdm9sdW1lVHlwZTogZWMyLkVic0RldmljZVZvbHVtZVR5cGUuR1AzLFxuICAgICAgICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlT25UZXJtaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyRGF0YTogdGhpcy5sb2FkVXNlckRhdGFTY3JpcHQocGdCb3VuY2VyQ29uZmlnLCBwcm9wcy5kYXRhYmFzZSksXG4gICAgICB1c2VyRGF0YUNhdXNlc1JlcGxhY2VtZW50OiB0cnVlLFxuICAgICAgYXNzb2NpYXRlUHVibGljSXBBZGRyZXNzOiBwcm9wcy51c2VQdWJsaWNTdWJuZXQsXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBQZ0JvdW5jZXIgdG8gY29ubmVjdCB0byBSRFNcbiAgICBwcm9wcy5kYXRhYmFzZS5jb25uZWN0aW9ucy5hbGxvd0Zyb20oXG4gICAgICB0aGlzLmluc3RhbmNlLFxuICAgICAgZWMyLlBvcnQudGNwKDU0MzIpLFxuICAgICAgXCJBbGxvdyBQZ0JvdW5jZXIgdG8gY29ubmVjdCB0byBSRFNcIlxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgc2VjcmV0IGZvciBwZ2JvdW5jZXIgY29ubmVjdGlvbiBjcmVkZW50aWFsc1xuICAgIHRoaXMucGdib3VuY2VyU2VjcmV0ID0gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCBcIlBnQm91bmNlclNlY3JldFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENvbm5lY3Rpb24gaW5mb3JtYXRpb24gZm9yIFBnQm91bmNlciBpbnN0YW5jZSAke3Byb3BzLmluc3RhbmNlTmFtZX1gLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwiZHVtbXlcIixcbiAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IFwie31cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCB0aGUgcm9sZSBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIG5ldyBzZWNyZXRcbiAgICB0aGlzLnBnYm91bmNlclNlY3JldC5ncmFudFJlYWQocm9sZSk7XG5cbiAgICAvLyBVcGRhdGUgcGdib3VuY2VyU2VjcmV0IHRvIGNvbnRhaW4gcGdzdGFjU2VjcmV0IHZhbHVlcyBidXQgd2l0aCBuZXcgdmFsdWUgZm9yIGhvc3RcbiAgICBjb25zdCBzZWNyZXRVcGRhdGVyRm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiU2VjcmV0VXBkYXRlckZ1bmN0aW9uXCIsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwibGFtYmRhL3BnYm91bmNlci1zZWNyZXQtdXBkYXRlclwiKVxuICAgICAgKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNPVVJDRV9TRUNSRVRfQVJOOiBwcm9wcy5kYXRhYmFzZS5zZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBUQVJHRVRfU0VDUkVUX0FSTjogdGhpcy5wZ2JvdW5jZXJTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHByb3BzLmRhdGFiYXNlLnNlY3JldC5ncmFudFJlYWQoc2VjcmV0VXBkYXRlckZuKTtcbiAgICB0aGlzLnBnYm91bmNlclNlY3JldC5ncmFudFdyaXRlKHNlY3JldFVwZGF0ZXJGbik7XG5cbiAgICB0aGlzLnNlY3JldFVwZGF0ZUNvbXBsZXRlID0gbmV3IEN1c3RvbVJlc291cmNlKFxuICAgICAgdGhpcyxcbiAgICAgIFwicGdib3VuY2VyU2VjcmV0Qm9vdHN0cmFwcGVyXCIsXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2VUb2tlbjogc2VjcmV0VXBkYXRlckZuLmZ1bmN0aW9uQXJuLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaW5zdGFuY2VJcDogcHJvcHMudXNlUHVibGljU3VibmV0XG4gICAgICAgICAgICA/IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VQdWJsaWNJcFxuICAgICAgICAgICAgOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZUlwLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRVc2VyRGF0YVNjcmlwdChcbiAgICBwZ0JvdW5jZXJDb25maWc6IFJlcXVpcmVkPE5vbk51bGxhYmxlPFBnQm91bmNlclByb3BzW1wicGdCb3VuY2VyQ29uZmlnXCJdPj4sXG4gICAgZGF0YWJhc2U6IHsgc2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0IH1cbiAgKTogZWMyLlVzZXJEYXRhIHtcbiAgICBjb25zdCB1c2VyRGF0YVNjcmlwdCA9IGVjMi5Vc2VyRGF0YS5mb3JMaW51eCgpO1xuXG4gICAgLy8gU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyc1xuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgJ2V4cG9ydCBTRUNSRVRfQVJOPVwiJyArIGRhdGFiYXNlLnNlY3JldC5zZWNyZXRBcm4gKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRUdJT049XCInICsgU3RhY2sub2YodGhpcykucmVnaW9uICsgJ1wiJyxcbiAgICAgICdleHBvcnQgUE9PTF9NT0RFPVwiJyArIHBnQm91bmNlckNvbmZpZy5wb29sTW9kZSArICdcIicsXG4gICAgICAnZXhwb3J0IE1BWF9DTElFTlRfQ09OTj1cIicgKyBwZ0JvdW5jZXJDb25maWcubWF4Q2xpZW50Q29ubiArICdcIicsXG4gICAgICAnZXhwb3J0IERFRkFVTFRfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5kZWZhdWx0UG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBNSU5fUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5taW5Qb29sU2l6ZSArICdcIicsXG4gICAgICAnZXhwb3J0IFJFU0VSVkVfUE9PTF9TSVpFPVwiJyArIHBnQm91bmNlckNvbmZpZy5yZXNlcnZlUG9vbFNpemUgKyAnXCInLFxuICAgICAgJ2V4cG9ydCBSRVNFUlZFX1BPT0xfVElNRU9VVD1cIicgK1xuICAgICAgICBwZ0JvdW5jZXJDb25maWcucmVzZXJ2ZVBvb2xUaW1lb3V0ICtcbiAgICAgICAgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX0RCX0NPTk5FQ1RJT05TPVwiJyArIHBnQm91bmNlckNvbmZpZy5tYXhEYkNvbm5lY3Rpb25zICsgJ1wiJyxcbiAgICAgICdleHBvcnQgTUFYX1VTRVJfQ09OTkVDVElPTlM9XCInICsgcGdCb3VuY2VyQ29uZmlnLm1heFVzZXJDb25uZWN0aW9ucyArICdcIidcbiAgICApO1xuXG4gICAgLy8gTG9hZCB0aGUgc3RhcnR1cCBzY3JpcHRcbiAgICBjb25zdCBzY3JpcHRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuL3BnYm91bmNlci1zZXR1cC5zaFwiKTtcbiAgICBsZXQgc2NyaXB0ID0gZnMucmVhZEZpbGVTeW5jKHNjcmlwdFBhdGgsIFwidXRmOFwiKTtcblxuICAgIHVzZXJEYXRhU2NyaXB0LmFkZENvbW1hbmRzKHNjcmlwdCk7XG5cbiAgICByZXR1cm4gdXNlckRhdGFTY3JpcHQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,13 +1,11 @@
1
1
  ARG PYTHON_VERSION
2
2
  FROM --platform=linux/amd64 public.ecr.aws/lambda/python:${PYTHON_VERSION}
3
3
 
4
- ARG PGSTAC_VERSION
5
- RUN echo "PGSTAC_VERSION: ${PGSTAC_VERSION}"
6
4
  RUN echo "PYTHON_VERSION: ${PYTHON_VERSION}"
7
5
 
8
6
  WORKDIR /tmp
9
7
 
10
- RUN pip install httpx psycopg[binary,pool] pypgstac==${PGSTAC_VERSION} -t /asset
8
+ RUN pip install httpx psycopg[binary,pool] pypgstac -t /asset
11
9
 
12
10
  COPY bootstrapper_runtime/handler.py /asset/handler.py
13
11
 
@@ -22,6 +22,12 @@ export interface PgStacDatabaseProps extends rds.DatabaseInstanceProps {
22
22
  * @default pgstac
23
23
  */
24
24
  readonly pgstacDbName?: string;
25
+ /**
26
+ * Version of pgstac to install on the database
27
+ *
28
+ * @default 0.8.5
29
+ */
30
+ readonly pgstacVersion?: string;
25
31
  /**
26
32
  * Prefix to assign to the generated `secrets_manager.Secret`
27
33
  *
@@ -54,8 +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
- PGSTAC_VERSION: DEFAULT_PGSTAC_VERSION,
58
- PYTHON_VERSION: "3.11",
57
+ PYTHON_VERSION: "3.11"
59
58
  },
60
59
  }),
61
60
  vpc: hasVpc(this.db) ? this.db.vpc : props.vpc,
@@ -98,7 +97,7 @@ class PgStacDatabase extends constructs_1.Construct {
98
97
  this.pgstacSecret.secretArn;
99
98
  // if props.lambdaFunctionOptions doesn't have 'code' defined, update pgstac_version (needed for default runtime)
100
99
  if (!props.bootstrapperLambdaFunctionOptions?.code) {
101
- customResourceProperties["pgstac_version"] = DEFAULT_PGSTAC_VERSION;
100
+ customResourceProperties["pgstac_version"] = props.pgstacVersion || DEFAULT_PGSTAC_VERSION;
102
101
  }
103
102
  // this.connections = props.database.connections;
104
103
  const bootstrapper = new aws_cdk_lib_1.CustomResource(this, "bootstrapper", {
@@ -172,5 +171,5 @@ class PgStacDatabase extends constructs_1.Construct {
172
171
  }
173
172
  exports.PgStacDatabase = PgStacDatabase;
174
173
  _a = JSII_RTTI_SYMBOL_1;
175
- PgStacDatabase[_a] = { fqn: "eoapi-cdk.PgStacDatabase", version: "7.4.1" };
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFFdkMsMkNBQXdDO0FBRXhDLE1BQU0sYUFBYSxHQUEyQixPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNoRixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUV2QyxJQUFJLDBCQUEwQixHQUEyQjtJQUN2RCxPQUFPLEVBQUUsT0FBTztJQUNoQixZQUFZLEVBQUUsTUFBTTtDQUNyQixDQUFDO0FBRUYsU0FBUyxNQUFNLENBQ2IsUUFBc0Q7SUFFdEQsT0FBUSxRQUFpQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQVEzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMxQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGNBQWM7Z0JBQ2pELGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUMvQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7Z0JBQzFELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO2dCQUNuQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7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RyxDQUFDLEVBQUUsRUFBRSw0QkFBNEI7WUFDN0UsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFO1lBQ3JCLGtCQUFrQixFQUFFLEdBQUcsa0JBQWtCLEVBQUU7WUFDM0Msc0JBQXNCLEVBQUUsTUFBTTtZQUM5QixXQUFXLEVBQUUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsNEJBQTRCO1lBQy9ELFdBQVcsRUFBRSxHQUFHLFdBQVcsRUFBRTtZQUM3QixjQUFjLEVBQUUsR0FBRyxjQUFjLEVBQUU7U0FDcEMsQ0FBQztJQUNKLENBQUM7O0FBdkxILHdDQXdMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfcmRzIGFzIHJkcyxcbiAgYXdzX2VjMiBhcyBlYzIsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzbWFuYWdlcixcbiAgYXdzX2xhbWJkYSxcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIFJlbW92YWxQb2xpY3ksXG4gIER1cmF0aW9uLFxuICBhd3NfbG9ncyxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcyB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgUGdCb3VuY2VyIH0gZnJvbSBcIi4vUGdCb3VuY2VyXCI7XG5cbmNvbnN0IGluc3RhbmNlU2l6ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSByZXF1aXJlKFwiLi9pbnN0YW5jZS1tZW1vcnkuanNvblwiKTtcbmNvbnN0IERFRkFVTFRfUEdTVEFDX1ZFUlNJT04gPSBcIjAuOC41XCI7XG5cbmxldCBkZWZhdWx0UGdTVEFDQ3VzdG9tT3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgY29udGV4dDogXCJGQUxTRVwiLFxuICBtb3NhaWNfaW5kZXg6IFwiVFJVRVwiLFxufTtcblxuZnVuY3Rpb24gaGFzVnBjKFxuICBpbnN0YW5jZTogcmRzLkRhdGFiYXNlSW5zdGFuY2UgfCByZHMuSURhdGFiYXNlSW5zdGFuY2Vcbik6IGluc3RhbmNlIGlzIHJkcy5EYXRhYmFzZUluc3RhbmNlIHtcbiAgcmV0dXJuIChpbnN0YW5jZSBhcyByZHMuRGF0YWJhc2VJbnN0YW5jZSkudnBjICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQW4gUkRTIGluc3RhbmNlIHdpdGggcGdTVEFDIGluc3RhbGxlZC4gVGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZVxuICogYHJkcy5EYXRhYmFzZUluc3RhbmNlYCBoaWdoZXItbGV2ZWwgY29uc3RydWN0IG1ha2luZyB1c2VcbiAqIG9mIHRoZSBCb290c3RyYXBQZ1N0YWMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgUGdTdGFjRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBkYjogcmRzLkRhdGFiYXNlSW5zdGFuY2U7XG4gIHBnc3RhY1NlY3JldDogc2VjcmV0c21hbmFnZXIuSVNlY3JldDtcbiAgcHJpdmF0ZSBfcGdCb3VuY2VyU2VydmVyPzogUGdCb3VuY2VyO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uVGFyZ2V0OiByZHMuSURhdGFiYXNlSW5zdGFuY2UgfCBlYzIuSW5zdGFuY2U7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLlNlY3VyaXR5R3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBnU3RhY0RhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhcmFtZXRlcnMgPSB0aGlzLmdldFBhcmFtZXRlcnMoXG4gICAgICBwcm9wcy5pbnN0YW5jZVR5cGU/LnRvU3RyaW5nKCkgfHwgXCJtNS5sYXJnZVwiLFxuICAgICAgcHJvcHMucGFyYW1ldGVyc1xuICAgICk7XG4gICAgY29uc3QgcGFyYW1ldGVyR3JvdXAgPSBuZXcgcmRzLlBhcmFtZXRlckdyb3VwKHRoaXMsIFwicGFyYW1ldGVyR3JvdXBcIiwge1xuICAgICAgZW5naW5lOiBwcm9wcy5lbmdpbmUsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIG1heF9jb25uZWN0aW9uczogZGVmYXVsdFBhcmFtZXRlcnMubWF4Q29ubmVjdGlvbnMsXG4gICAgICAgIHNoYXJlZF9idWZmZXJzOiBkZWZhdWx0UGFyYW1ldGVycy5zaGFyZWRCdWZmZXJzLFxuICAgICAgICBlZmZlY3RpdmVfY2FjaGVfc2l6ZTogZGVmYXVsdFBhcmFtZXRlcnMuZWZmZWN0aXZlQ2FjaGVTaXplLFxuICAgICAgICB3b3JrX21lbTogZGVmYXVsdFBhcmFtZXRlcnMud29ya01lbSxcbiAgICAgICAgbWFpbnRlbmFuY2Vfd29ya19tZW06IGRlZmF1bHRQYXJhbWV0ZXJzLm1haW50ZW5hbmNlV29ya01lbSxcbiAgICAgICAgbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbjogZGVmYXVsdFBhcmFtZXRlcnMubWF4TG9ja3NQZXJUcmFuc2FjdGlvbixcbiAgICAgICAgdGVtcF9idWZmZXJzOiBkZWZhdWx0UGFyYW1ldGVycy50ZW1wQnVmZmVycyxcbiAgICAgICAgc2VxX3BhZ2VfY29zdDogZGVmYXVsdFBhcmFtZXRlcnMuc2VxUGFnZUNvc3QsXG4gICAgICAgIHJhbmRvbV9wYWdlX2Nvc3Q6IGRlZmF1bHRQYXJhbWV0ZXJzLnJhbmRvbVBhZ2VDb3N0LFxuICAgICAgICAuLi5wcm9wcy5wYXJhbWV0ZXJzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuZGIgPSBuZXcgcmRzLkRhdGFiYXNlSW5zdGFuY2UodGhpcywgXCJkYlwiLCB7XG4gICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZSxcbiAgICAgIHBhcmFtZXRlckdyb3VwLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYW5kbGVyID0gbmV3IGF3c19sYW1iZGEuRnVuY3Rpb24odGhpcywgXCJsYW1iZGFcIiwge1xuICAgICAgLy8gZGVmYXVsdHNcbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM18xMSxcbiAgICAgIGhhbmRsZXI6IFwiaGFuZGxlci5oYW5kbGVyXCIsXG4gICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICBsb2dSZXRlbnRpb246IGF3c19sb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgY29kZTogYXdzX2xhbWJkYS5Db2RlLmZyb21Eb2NrZXJCdWlsZChfX2Rpcm5hbWUsIHtcbiAgICAgICAgZmlsZTogXCJib290c3RyYXBwZXJfcnVudGltZS9Eb2NrZXJmaWxlXCIsXG4gICAgICAgIGJ1aWxkQXJnczoge1xuICAgICAgICAgIFBHU1RBQ19WRVJTSU9OOiBERUZBVUxUX1BHU1RBQ19WRVJTSU9OLFxuICAgICAgICAgIFBZVEhPTl9WRVJTSU9OOiBcIjMuMTFcIixcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgdnBjOiBoYXNWcGModGhpcy5kYikgPyB0aGlzLmRiLnZwYyA6IHByb3BzLnZwYyxcbiAgICAgIGFsbG93UHVibGljU3VibmV0OiB0cnVlLFxuICAgICAgLy8gb3ZlcndyaXRlcyBkZWZhdWx0cyB3aXRoIHVzZXItcHJvdmlkZWQgY29uZmlndXJhYmxlIHByb3BlcnRpZXMsXG4gICAgICAuLi5wcm9wcy5ib290c3RyYXBwZXJMYW1iZGFGdW5jdGlvbk9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBnc3RhY1NlY3JldCA9IG5ldyBzZWNyZXRzbWFuYWdlci5TZWNyZXQodGhpcywgXCJib290c3RyYXBwZXJzZWNyZXRcIiwge1xuICAgICAgc2VjcmV0TmFtZTogW1xuICAgICAgICBwcm9wcy5zZWNyZXRzUHJlZml4IHx8IFwicGdzdGFjXCIsXG4gICAgICAgIGlkLFxuICAgICAgICB0aGlzLm5vZGUuYWRkci5zbGljZSgtOCksXG4gICAgICBdLmpvaW4oXCIvXCIpLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBkYm5hbWU6IHByb3BzLnBnc3RhY0RiTmFtZSB8fCBcInBnc3RhY1wiLFxuICAgICAgICAgIGVuZ2luZTogXCJwb3N0Z3Jlc1wiLFxuICAgICAgICAgIHBvcnQ6IDU0MzIsXG4gICAgICAgICAgaG9zdDogdGhpcy5kYi5pbnN0YW5jZUVuZHBvaW50Lmhvc3RuYW1lLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9wcy5wZ3N0YWNVc2VybmFtZSB8fCBcInBnc3RhY191c2VyXCIsXG4gICAgICAgIH0pLFxuICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogXCJwYXNzd29yZFwiLFxuICAgICAgICBleGNsdWRlUHVuY3R1YXRpb246IHRydWUsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IGBQZ1NUQUMgZGF0YWJhc2UgYm9vdHN0cmFwcGVkIGJ5ICR7XG4gICAgICAgIFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuICAgICAgfWAsXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBsYW1iZGEgdG8uLi5cbiAgICAvLyByZWFkIG5ldyB1c2VyIHNlY3JldFxuICAgIHRoaXMucGdzdGFjU2VjcmV0LmdyYW50UmVhZChoYW5kbGVyKTtcbiAgICAvLyByZWFkIGRhdGFiYXNlIHNlY3JldFxuICAgIHRoaXMuZGIuc2VjcmV0IS5ncmFudFJlYWQoaGFuZGxlcik7XG4gICAgLy8gY29ubmVjdCB0byBkYXRhYmFzZVxuICAgIHRoaXMuZGIuY29ubmVjdGlvbnMuYWxsb3dGcm9tKGhhbmRsZXIsIGVjMi5Qb3J0LnRjcCg1NDMyKSk7XG5cbiAgICBsZXQgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID1cbiAgICAgIHByb3BzLmN1c3RvbVJlc291cmNlUHJvcGVydGllc1xuICAgICAgICA/IHsgLi4uZGVmYXVsdFBnU1RBQ0N1c3RvbU9wdGlvbnMsIC4uLnByb3BzLmN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9XG4gICAgICAgIDogZGVmYXVsdFBnU1RBQ0N1c3RvbU9wdGlvbnM7XG5cbiAgICAvLyB1cGRhdGUgcHJvcGVydGllc1xuICAgIGN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcImNvbm5fc2VjcmV0X2FyblwiXSA9IHRoaXMuZGIuc2VjcmV0IS5zZWNyZXRBcm47XG4gICAgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzW1wibmV3X3VzZXJfc2VjcmV0X2FyblwiXSA9XG4gICAgICB0aGlzLnBnc3RhY1NlY3JldC5zZWNyZXRBcm47XG5cbiAgICAvLyBpZiBwcm9wcy5sYW1iZGFGdW5jdGlvbk9wdGlvbnMgZG9lc24ndCBoYXZlICdjb2RlJyBkZWZpbmVkLCB1cGRhdGUgcGdzdGFjX3ZlcnNpb24gKG5lZWRlZCBmb3IgZGVmYXVsdCBydW50aW1lKVxuICAgIGlmICghcHJvcHMuYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zPy5jb2RlKSB7XG4gICAgICBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJwZ3N0YWNfdmVyc2lvblwiXSA9IERFRkFVTFRfUEdTVEFDX1ZFUlNJT047XG4gICAgfVxuICAgIC8vIHRoaXMuY29ubmVjdGlvbnMgPSBwcm9wcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgICBjb25zdCBib290c3RyYXBwZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJib290c3RyYXBwZXJcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczogY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sIC8vIFRoaXMgcmV0YWlucyB0aGUgY3VzdG9tIHJlc291cmNlICh3aGljaCBkb2Vzbid0IHJlYWxseSBleGlzdCksIG5vdCB0aGUgZGF0YWJhc2VcbiAgICB9KTtcblxuICAgIC8vIFBnQm91bmNlcjogY29ubmVjdGlvbiBwb29sZXJcbiAgICBjb25zdCBhZGRQZ2JvdW5jZXIgPSBwcm9wcy5hZGRQZ2JvdW5jZXIgPz8gdHJ1ZTtcbiAgICBpZiAoYWRkUGdib3VuY2VyKSB7XG4gICAgICB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIgPSBuZXcgUGdCb3VuY2VyKHRoaXMsIFwicGdib3VuY2VyXCIsIHtcbiAgICAgICAgaW5zdGFuY2VOYW1lOiBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LXBnYm91bmNlcmAsXG4gICAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UMyxcbiAgICAgICAgICBlYzIuSW5zdGFuY2VTaXplLk1JQ1JPXG4gICAgICAgICksXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZToge1xuICAgICAgICAgIGNvbm5lY3Rpb25zOiB0aGlzLmRiLmNvbm5lY3Rpb25zLFxuICAgICAgICAgIHNlY3JldDogdGhpcy5wZ3N0YWNTZWNyZXQsXG4gICAgICAgIH0sXG4gICAgICAgIGRiTWF4Q29ubmVjdGlvbnM6IHBhcnNlSW50KGRlZmF1bHRQYXJhbWV0ZXJzLm1heENvbm5lY3Rpb25zKSxcbiAgICAgICAgdXNlUHVibGljU3VibmV0OlxuICAgICAgICAgICFwcm9wcy52cGNTdWJuZXRzIHx8XG4gICAgICAgICAgcHJvcHMudnBjU3VibmV0cy5zdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgIHBnQm91bmNlckNvbmZpZzoge1xuICAgICAgICAgIHBvb2xNb2RlOiBcInRyYW5zYWN0aW9uXCIsXG4gICAgICAgICAgbWF4Q2xpZW50Q29ubjogMTAwMCxcbiAgICAgICAgICBkZWZhdWx0UG9vbFNpemU6IDIwLFxuICAgICAgICAgIG1pblBvb2xTaXplOiAxMCxcbiAgICAgICAgICByZXNlcnZlUG9vbFNpemU6IDUsXG4gICAgICAgICAgcmVzZXJ2ZVBvb2xUaW1lb3V0OiA1LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3BnQm91bmNlclNlcnZlci5ub2RlLmFkZERlcGVuZGVuY3koYm9vdHN0cmFwcGVyKTtcblxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIucGdib3VuY2VyU2VjcmV0O1xuICAgICAgdGhpcy5jb25uZWN0aW9uVGFyZ2V0ID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLmluc3RhbmNlO1xuICAgICAgdGhpcy5zZWN1cml0eUdyb3VwID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLnNlY3VyaXR5R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblRhcmdldCA9IHRoaXMuZGI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnMoXG4gICAgaW5zdGFuY2VUeXBlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVyczogUGdTdGFjRGF0YWJhc2VQcm9wc1tcInBhcmFtZXRlcnNcIl1cbiAgKTogRGF0YWJhc2VQYXJhbWV0ZXJzIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jbGkvaXNzdWVzLzEyNzkjaXNzdWVjb21tZW50LTkwOTMxODIzNlxuICAgIGNvbnN0IG1lbW9yeV9pbl9rYiA9IGluc3RhbmNlU2l6ZXNbaW5zdGFuY2VUeXBlXSAqIDEwMjQ7XG5cbiAgICAvLyBJdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyIHBhc3NlZCBpbiBwYXJhbWV0ZXJzIGZvciBhbnkgdmFsdWUgdGhhdCB1c2VkIHRvXG4gICAgLy8gZGVyaXZlIHN1YnNlcXVlbnQgdmFsdWVzLiBWYWx1ZXMgdGhhdCBkb24ndCBoYXZlIGRlcGVuZGVuY2llcyB3aWxsIGJlIG92ZXJyaWRlblxuICAgIC8vIHdoZW4gd2UgdW5wYWNrIHRoZSBwYXNzZWQtaW4gdXNlciBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbWF4Q29ubmVjdGlvbnMgPSBwYXJhbWV0ZXJzPy5tYXhDb25uZWN0aW9uc1xuICAgICAgPyBOdW1iZXIucGFyc2VJbnQocGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucylcbiAgICAgIDogLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5NYXhDb25uZWN0aW9uc1xuICAgICAgICBNYXRoLm1pbihNYXRoLnJvdW5kKChtZW1vcnlfaW5fa2IgKiAxMDI0KSAvIDk1MzEzOTIpLCA1MDAwKTtcbiAgICBjb25zdCBzaGFyZWRCdWZmZXJzID0gcGFyYW1ldGVycz8uc2hhcmVkQnVmZXJzXG4gICAgICA/IE51bWJlci5wYXJzZUludChwYXJhbWV0ZXJzLnNoYXJlZEJ1ZmVycylcbiAgICAgIDogTWF0aC5yb3VuZCgwLjI1ICogbWVtb3J5X2luX2tiKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZUNhY2hlU2l6ZSA9IE1hdGgucm91bmQoMC43NSAqIG1lbW9yeV9pbl9rYik7XG4gICAgY29uc3Qgd29ya01lbSA9IE1hdGguZmxvb3Ioc2hhcmVkQnVmZmVycyAvIG1heENvbm5lY3Rpb25zKTtcbiAgICBjb25zdCBtYWludGVuYW5jZVdvcmtNZW0gPSBNYXRoLnJvdW5kKDAuMjUgKiBzaGFyZWRCdWZmZXJzKTtcblxuICAgIGNvbnN0IHRlbXBCdWZmZXJzID0gMTI4ICogMTAyNDtcbiAgICBjb25zdCBzZXFQYWdlQ29zdCA9IDE7XG4gICAgY29uc3QgcmFuZG9tUGFnZUNvc3QgPSAxLjE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWF4Q29ubmVjdGlvbnM6IGAke21heENvbm5lY3Rpb25zfWAsXG4gICAgICBzaGFyZWRCdWZmZXJzOiBgJHtzaGFyZWRCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBlZmZlY3RpdmVDYWNoZVNpemU6IGAke2VmZmVjdGl2ZUNhY2hlU2l6ZSAvIDh9YCwgLy8gUmVwcmVzZW50ZWQgaW4gOGtiIGJsb2Nrc1xuICAgICAgd29ya01lbTogYCR7d29ya01lbX1gLFxuICAgICAgbWFpbnRlbmFuY2VXb3JrTWVtOiBgJHttYWludGVuYW5jZVdvcmtNZW19YCxcbiAgICAgIG1heExvY2tzUGVyVHJhbnNhY3Rpb246IFwiMTAyNFwiLFxuICAgICAgdGVtcEJ1ZmZlcnM6IGAke3RlbXBCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBzZXFQYWdlQ29zdDogYCR7c2VxUGFnZUNvc3R9YCxcbiAgICAgIHJhbmRvbVBhZ2VDb3N0OiBgJHtyYW5kb21QYWdlQ29zdH1gLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ1N0YWNEYXRhYmFzZVByb3BzIGV4dGVuZHMgcmRzLkRhdGFiYXNlSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRoYXQgaXMgdG8gYmUgY3JlYXRlZCBhbmQgb250byB3aGljaCBwZ1NUQUMgd2lsbCBiZSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY1xuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjRGJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcmVmaXggdG8gYXNzaWduIHRvIHRoZSBnZW5lcmF0ZWQgYHNlY3JldHNfbWFuYWdlci5TZWNyZXRgXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY1xuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB1c2VyIHRoYXQgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIHBnU1RBQyBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgcGdzdGFjX3VzZXJcbiAgICovXG4gIHJlYWRvbmx5IHBnc3RhY1VzZXJuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgcGdib3VuY2VyIGluc3RhbmNlIGZvciBtYW5hZ2luZyB0cmFmZmljIHRvIHRoZSBwZ1NUQUMgZGF0YWJhc2VcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkUGdib3VuY2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGFtYmRhIGZ1bmN0aW9uIEN1c3RvbSBSZXNvdXJjZSBwcm9wZXJ0aWVzLiBBIGN1c3RvbSByZXNvdXJjZSBwcm9wZXJ0eSBpcyBnb2luZyB0byBiZSBjcmVhdGVkXG4gICAqIHRvIHRyaWdnZXIgdGhlIGJvb3N0cmFwcGluZyBsYW1iZGEgZnVuY3Rpb24uIFRoaXMgcGFyYW1ldGVyIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgKiBvbiB0b3Agb2YgdGhlIGRlZmF1bHRzIG9uZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVkIGluIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBwZXJMYW1iZGFGdW5jdGlvbk9wdGlvbnM/OiBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIExFQVNUKHtEQkluc3RhbmNlQ2xhc3NNZW1vcnkvOTUzMTM5Mn0sIDUwMDApXG4gICAqL1xuICByZWFkb25seSBtYXhDb25uZWN0aW9uczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb3RlOiBUaGlzIHZhbHVlIGlzIG1lYXN1cmVkIGluIDhLQiBibG9ja3MuXG4gICAqXG4gICAqIEBkZWZhdWx0ICd7REJJbnN0YW5jZUNsYXNzTWVtb3J5LzMyNzY4fScgMjUlIG9mIGluc3RhbmNlIG1lbW9yeSwgaWUgYHsoREJJbnN0YW5jZUNsYXNzTWVtb3J5LygxMDI0KjgpKSAqIDAuMjV9YFxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkQnVmZmVyczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIDc1JSBvZiBpbnN0YW5jZSBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IGVmZmVjdGl2ZUNhY2hlU2l6ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIHNoYXJlZCBidWZmZXJzIGRpdmlkZWQgYnkgbWF4IGNvbm5lY3Rpb25zXG4gICAqL1xuICByZWFkb25seSB3b3JrTWVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gMjUlIG9mIHNoYXJlZCBidWZmZXJzXG4gICAqL1xuICByZWFkb25seSBtYWludGVuYW5jZVdvcmtNZW06IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMTAyNFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TG9ja3NQZXJUcmFuc2FjdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAxMzExNzIgKDEyOCAqIDEwMjQpXG4gICAqL1xuICByZWFkb25seSB0ZW1wQnVmZmVyczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBzZXFQYWdlQ29zdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAxLjFcbiAgICovXG4gIHJlYWRvbmx5IHJhbmRvbVBhZ2VDb3N0OiBzdHJpbmc7XG59XG4iXX0=
174
+ PgStacDatabase[_a] = { fqn: "eoapi-cdk.PgStacDatabase", version: "7.5.0" };
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQVVxQjtBQUNyQiwyQ0FBdUM7QUFFdkMsMkNBQXdDO0FBRXhDLE1BQU0sYUFBYSxHQUEyQixPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNoRixNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUV2QyxJQUFJLDBCQUEwQixHQUEyQjtJQUN2RCxPQUFPLEVBQUUsT0FBTztJQUNoQixZQUFZLEVBQUUsTUFBTTtDQUNyQixDQUFDO0FBRUYsU0FBUyxNQUFNLENBQ2IsUUFBc0Q7SUFFdEQsT0FBUSxRQUFpQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQVEzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUMxQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFDNUMsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNGLE1BQU0sY0FBYyxHQUFHLElBQUkscUJBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLGlCQUFpQixDQUFDLGNBQWM7Z0JBQ2pELGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUMvQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7Z0JBQzFELFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO2dCQUNuQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxrQkFBa0I7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QUMsRUFBRSxFQUFFLDRCQUE0QjtZQUM3RSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUU7WUFDckIsa0JBQWtCLEVBQUUsR0FBRyxrQkFBa0IsRUFBRTtZQUMzQyxzQkFBc0IsRUFBRSxNQUFNO1lBQzlCLFdBQVcsRUFBRSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSw0QkFBNEI7WUFDL0QsV0FBVyxFQUFFLEdBQUcsV0FBVyxFQUFFO1lBQzdCLGNBQWMsRUFBRSxHQUFHLGNBQWMsRUFBRTtTQUNwQyxDQUFDO0lBQ0osQ0FBQzs7QUF0TEgsd0NBdUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19yZHMgYXMgcmRzLFxuICBhd3NfZWMyIGFzIGVjMixcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNtYW5hZ2VyLFxuICBhd3NfbGFtYmRhLFxuICBDdXN0b21SZXNvdXJjZSxcbiAgUmVtb3ZhbFBvbGljeSxcbiAgRHVyYXRpb24sXG4gIGF3c19sb2dzLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDdXN0b21MYW1iZGFGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBQZ0JvdW5jZXIgfSBmcm9tIFwiLi9QZ0JvdW5jZXJcIjtcblxuY29uc3QgaW5zdGFuY2VTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHJlcXVpcmUoXCIuL2luc3RhbmNlLW1lbW9yeS5qc29uXCIpO1xuY29uc3QgREVGQVVMVF9QR1NUQUNfVkVSU0lPTiA9IFwiMC44LjVcIjtcblxubGV0IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICBjb250ZXh0OiBcIkZBTFNFXCIsXG4gIG1vc2FpY19pbmRleDogXCJUUlVFXCIsXG59O1xuXG5mdW5jdGlvbiBoYXNWcGMoXG4gIGluc3RhbmNlOiByZHMuRGF0YWJhc2VJbnN0YW5jZSB8IHJkcy5JRGF0YWJhc2VJbnN0YW5jZVxuKTogaW5zdGFuY2UgaXMgcmRzLkRhdGFiYXNlSW5zdGFuY2Uge1xuICByZXR1cm4gKGluc3RhbmNlIGFzIHJkcy5EYXRhYmFzZUluc3RhbmNlKS52cGMgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBSRFMgaW5zdGFuY2Ugd2l0aCBwZ1NUQUMgaW5zdGFsbGVkLiBUaGlzIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlXG4gKiBgcmRzLkRhdGFiYXNlSW5zdGFuY2VgIGhpZ2hlci1sZXZlbCBjb25zdHJ1Y3QgbWFraW5nIHVzZVxuICogb2YgdGhlIEJvb3RzdHJhcFBnU3RhYyBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQZ1N0YWNEYXRhYmFzZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGRiOiByZHMuRGF0YWJhc2VJbnN0YW5jZTtcbiAgcGdzdGFjU2VjcmV0OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0O1xuICBwcml2YXRlIF9wZ0JvdW5jZXJTZXJ2ZXI/OiBQZ0JvdW5jZXI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25UYXJnZXQ6IHJkcy5JRGF0YWJhc2VJbnN0YW5jZSB8IGVjMi5JbnN0YW5jZTtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUGdTdGFjRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGFyYW1ldGVycyA9IHRoaXMuZ2V0UGFyYW1ldGVycyhcbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZT8udG9TdHJpbmcoKSB8fCBcIm01LmxhcmdlXCIsXG4gICAgICBwcm9wcy5wYXJhbWV0ZXJzXG4gICAgKTtcbiAgICBjb25zdCBwYXJhbWV0ZXJHcm91cCA9IG5ldyByZHMuUGFyYW1ldGVyR3JvdXAodGhpcywgXCJwYXJhbWV0ZXJHcm91cFwiLCB7XG4gICAgICBlbmdpbmU6IHByb3BzLmVuZ2luZSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgbWF4X2Nvbm5lY3Rpb25zOiBkZWZhdWx0UGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucyxcbiAgICAgICAgc2hhcmVkX2J1ZmZlcnM6IGRlZmF1bHRQYXJhbWV0ZXJzLnNoYXJlZEJ1ZmZlcnMsXG4gICAgICAgIGVmZmVjdGl2ZV9jYWNoZV9zaXplOiBkZWZhdWx0UGFyYW1ldGVycy5lZmZlY3RpdmVDYWNoZVNpemUsXG4gICAgICAgIHdvcmtfbWVtOiBkZWZhdWx0UGFyYW1ldGVycy53b3JrTWVtLFxuICAgICAgICBtYWludGVuYW5jZV93b3JrX21lbTogZGVmYXVsdFBhcmFtZXRlcnMubWFpbnRlbmFuY2VXb3JrTWVtLFxuICAgICAgICBtYXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uOiBkZWZhdWx0UGFyYW1ldGVycy5tYXhMb2Nrc1BlclRyYW5zYWN0aW9uLFxuICAgICAgICB0ZW1wX2J1ZmZlcnM6IGRlZmF1bHRQYXJhbWV0ZXJzLnRlbXBCdWZmZXJzLFxuICAgICAgICBzZXFfcGFnZV9jb3N0OiBkZWZhdWx0UGFyYW1ldGVycy5zZXFQYWdlQ29zdCxcbiAgICAgICAgcmFuZG9tX3BhZ2VfY29zdDogZGVmYXVsdFBhcmFtZXRlcnMucmFuZG9tUGFnZUNvc3QsXG4gICAgICAgIC4uLnByb3BzLnBhcmFtZXRlcnMsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kYiA9IG5ldyByZHMuRGF0YWJhc2VJbnN0YW5jZSh0aGlzLCBcImRiXCIsIHtcbiAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogU3RhY2sub2YodGhpcykuc3RhY2tOYW1lLFxuICAgICAgcGFyYW1ldGVyR3JvdXAsXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCBcImxhbWJkYVwiLCB7XG4gICAgICAvLyBkZWZhdWx0c1xuICAgICAgcnVudGltZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzExLFxuICAgICAgaGFuZGxlcjogXCJoYW5kbGVyLmhhbmRsZXJcIixcbiAgICAgIG1lbW9yeVNpemU6IDEyOCxcbiAgICAgIGxvZ1JldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMiksXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbURvY2tlckJ1aWxkKF9fZGlybmFtZSwge1xuICAgICAgICBmaWxlOiBcImJvb3RzdHJhcHBlcl9ydW50aW1lL0RvY2tlcmZpbGVcIixcbiAgICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgICAgUFlUSE9OX1ZFUlNJT046IFwiMy4xMVwiXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHZwYzogaGFzVnBjKHRoaXMuZGIpID8gdGhpcy5kYi52cGMgOiBwcm9wcy52cGMsXG4gICAgICBhbGxvd1B1YmxpY1N1Ym5ldDogdHJ1ZSxcbiAgICAgIC8vIG92ZXJ3cml0ZXMgZGVmYXVsdHMgd2l0aCB1c2VyLXByb3ZpZGVkIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcHMuYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsIFwiYm9vdHN0cmFwcGVyc2VjcmV0XCIsIHtcbiAgICAgIHNlY3JldE5hbWU6IFtcbiAgICAgICAgcHJvcHMuc2VjcmV0c1ByZWZpeCB8fCBcInBnc3RhY1wiLFxuICAgICAgICBpZCxcbiAgICAgICAgdGhpcy5ub2RlLmFkZHIuc2xpY2UoLTgpLFxuICAgICAgXS5qb2luKFwiL1wiKSxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGJuYW1lOiBwcm9wcy5wZ3N0YWNEYk5hbWUgfHwgXCJwZ3N0YWNcIixcbiAgICAgICAgICBlbmdpbmU6IFwicG9zdGdyZXNcIixcbiAgICAgICAgICBwb3J0OiA1NDMyLFxuICAgICAgICAgIGhvc3Q6IHRoaXMuZGIuaW5zdGFuY2VFbmRwb2ludC5ob3N0bmFtZSxcbiAgICAgICAgICB1c2VybmFtZTogcHJvcHMucGdzdGFjVXNlcm5hbWUgfHwgXCJwZ3N0YWNfdXNlclwiLFxuICAgICAgICB9KSxcbiAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIixcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGdTVEFDIGRhdGFiYXNlIGJvb3RzdHJhcHBlZCBieSAke1xuICAgICAgICBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcbiAgICAgIH1gLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgbGFtYmRhIHRvLi4uXG4gICAgLy8gcmVhZCBuZXcgdXNlciBzZWNyZXRcbiAgICB0aGlzLnBnc3RhY1NlY3JldC5ncmFudFJlYWQoaGFuZGxlcik7XG4gICAgLy8gcmVhZCBkYXRhYmFzZSBzZWNyZXRcbiAgICB0aGlzLmRiLnNlY3JldCEuZ3JhbnRSZWFkKGhhbmRsZXIpO1xuICAgIC8vIGNvbm5lY3QgdG8gZGF0YWJhc2VcbiAgICB0aGlzLmRiLmNvbm5lY3Rpb25zLmFsbG93RnJvbShoYW5kbGVyLCBlYzIuUG9ydC50Y3AoNTQzMikpO1xuXG4gICAgbGV0IGN1c3RvbVJlc291cmNlUHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9XG4gICAgICBwcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXNcbiAgICAgICAgPyB7IC4uLmRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zLCAuLi5wcm9wcy5jdXN0b21SZXNvdXJjZVByb3BlcnRpZXMgfVxuICAgICAgICA6IGRlZmF1bHRQZ1NUQUNDdXN0b21PcHRpb25zO1xuXG4gICAgLy8gdXBkYXRlIHByb3BlcnRpZXNcbiAgICBjdXN0b21SZXNvdXJjZVByb3BlcnRpZXNbXCJjb25uX3NlY3JldF9hcm5cIl0gPSB0aGlzLmRiLnNlY3JldCEuc2VjcmV0QXJuO1xuICAgIGN1c3RvbVJlc291cmNlUHJvcGVydGllc1tcIm5ld191c2VyX3NlY3JldF9hcm5cIl0gPVxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgLy8gaWYgcHJvcHMubGFtYmRhRnVuY3Rpb25PcHRpb25zIGRvZXNuJ3QgaGF2ZSAnY29kZScgZGVmaW5lZCwgdXBkYXRlIHBnc3RhY192ZXJzaW9uIChuZWVkZWQgZm9yIGRlZmF1bHQgcnVudGltZSlcbiAgICBpZiAoIXByb3BzLmJvb3RzdHJhcHBlckxhbWJkYUZ1bmN0aW9uT3B0aW9ucz8uY29kZSkge1xuICAgICAgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzW1wicGdzdGFjX3ZlcnNpb25cIl0gPSBwcm9wcy5wZ3N0YWNWZXJzaW9uIHx8IERFRkFVTFRfUEdTVEFDX1ZFUlNJT047XG4gICAgfVxuICAgIC8vIHRoaXMuY29ubmVjdGlvbnMgPSBwcm9wcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgICBjb25zdCBib290c3RyYXBwZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJib290c3RyYXBwZXJcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBoYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgcHJvcGVydGllczogY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sIC8vIFRoaXMgcmV0YWlucyB0aGUgY3VzdG9tIHJlc291cmNlICh3aGljaCBkb2Vzbid0IHJlYWxseSBleGlzdCksIG5vdCB0aGUgZGF0YWJhc2VcbiAgICB9KTtcblxuICAgIC8vIFBnQm91bmNlcjogY29ubmVjdGlvbiBwb29sZXJcbiAgICBjb25zdCBhZGRQZ2JvdW5jZXIgPSBwcm9wcy5hZGRQZ2JvdW5jZXIgPz8gdHJ1ZTtcbiAgICBpZiAoYWRkUGdib3VuY2VyKSB7XG4gICAgICB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIgPSBuZXcgUGdCb3VuY2VyKHRoaXMsIFwicGdib3VuY2VyXCIsIHtcbiAgICAgICAgaW5zdGFuY2VOYW1lOiBgJHtTdGFjay5vZih0aGlzKS5zdGFja05hbWV9LXBnYm91bmNlcmAsXG4gICAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UMyxcbiAgICAgICAgICBlYzIuSW5zdGFuY2VTaXplLk1JQ1JPXG4gICAgICAgICksXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZToge1xuICAgICAgICAgIGNvbm5lY3Rpb25zOiB0aGlzLmRiLmNvbm5lY3Rpb25zLFxuICAgICAgICAgIHNlY3JldDogdGhpcy5wZ3N0YWNTZWNyZXQsXG4gICAgICAgIH0sXG4gICAgICAgIGRiTWF4Q29ubmVjdGlvbnM6IHBhcnNlSW50KGRlZmF1bHRQYXJhbWV0ZXJzLm1heENvbm5lY3Rpb25zKSxcbiAgICAgICAgdXNlUHVibGljU3VibmV0OlxuICAgICAgICAgICFwcm9wcy52cGNTdWJuZXRzIHx8XG4gICAgICAgICAgcHJvcHMudnBjU3VibmV0cy5zdWJuZXRUeXBlID09PSBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgIHBnQm91bmNlckNvbmZpZzoge1xuICAgICAgICAgIHBvb2xNb2RlOiBcInRyYW5zYWN0aW9uXCIsXG4gICAgICAgICAgbWF4Q2xpZW50Q29ubjogMTAwMCxcbiAgICAgICAgICBkZWZhdWx0UG9vbFNpemU6IDIwLFxuICAgICAgICAgIG1pblBvb2xTaXplOiAxMCxcbiAgICAgICAgICByZXNlcnZlUG9vbFNpemU6IDUsXG4gICAgICAgICAgcmVzZXJ2ZVBvb2xUaW1lb3V0OiA1LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3BnQm91bmNlclNlcnZlci5ub2RlLmFkZERlcGVuZGVuY3koYm9vdHN0cmFwcGVyKTtcblxuICAgICAgdGhpcy5wZ3N0YWNTZWNyZXQgPSB0aGlzLl9wZ0JvdW5jZXJTZXJ2ZXIucGdib3VuY2VyU2VjcmV0O1xuICAgICAgdGhpcy5jb25uZWN0aW9uVGFyZ2V0ID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLmluc3RhbmNlO1xuICAgICAgdGhpcy5zZWN1cml0eUdyb3VwID0gdGhpcy5fcGdCb3VuY2VyU2VydmVyLnNlY3VyaXR5R3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblRhcmdldCA9IHRoaXMuZGI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmFtZXRlcnMoXG4gICAgaW5zdGFuY2VUeXBlOiBzdHJpbmcsXG4gICAgcGFyYW1ldGVyczogUGdTdGFjRGF0YWJhc2VQcm9wc1tcInBhcmFtZXRlcnNcIl1cbiAgKTogRGF0YWJhc2VQYXJhbWV0ZXJzIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jbGkvaXNzdWVzLzEyNzkjaXNzdWVjb21tZW50LTkwOTMxODIzNlxuICAgIGNvbnN0IG1lbW9yeV9pbl9rYiA9IGluc3RhbmNlU2l6ZXNbaW5zdGFuY2VUeXBlXSAqIDEwMjQ7XG5cbiAgICAvLyBJdCdzIG9ubHkgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyIHBhc3NlZCBpbiBwYXJhbWV0ZXJzIGZvciBhbnkgdmFsdWUgdGhhdCB1c2VkIHRvXG4gICAgLy8gZGVyaXZlIHN1YnNlcXVlbnQgdmFsdWVzLiBWYWx1ZXMgdGhhdCBkb24ndCBoYXZlIGRlcGVuZGVuY2llcyB3aWxsIGJlIG92ZXJyaWRlblxuICAgIC8vIHdoZW4gd2UgdW5wYWNrIHRoZSBwYXNzZWQtaW4gdXNlciBwYXJhbWV0ZXJzXG4gICAgY29uc3QgbWF4Q29ubmVjdGlvbnMgPSBwYXJhbWV0ZXJzPy5tYXhDb25uZWN0aW9uc1xuICAgICAgPyBOdW1iZXIucGFyc2VJbnQocGFyYW1ldGVycy5tYXhDb25uZWN0aW9ucylcbiAgICAgIDogLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvVXNlckd1aWRlL0NIQVBfTGltaXRzLmh0bWwjUkRTX0xpbWl0cy5NYXhDb25uZWN0aW9uc1xuICAgICAgICBNYXRoLm1pbihNYXRoLnJvdW5kKChtZW1vcnlfaW5fa2IgKiAxMDI0KSAvIDk1MzEzOTIpLCA1MDAwKTtcbiAgICBjb25zdCBzaGFyZWRCdWZmZXJzID0gcGFyYW1ldGVycz8uc2hhcmVkQnVmZXJzXG4gICAgICA/IE51bWJlci5wYXJzZUludChwYXJhbWV0ZXJzLnNoYXJlZEJ1ZmVycylcbiAgICAgIDogTWF0aC5yb3VuZCgwLjI1ICogbWVtb3J5X2luX2tiKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZUNhY2hlU2l6ZSA9IE1hdGgucm91bmQoMC43NSAqIG1lbW9yeV9pbl9rYik7XG4gICAgY29uc3Qgd29ya01lbSA9IE1hdGguZmxvb3Ioc2hhcmVkQnVmZmVycyAvIG1heENvbm5lY3Rpb25zKTtcbiAgICBjb25zdCBtYWludGVuYW5jZVdvcmtNZW0gPSBNYXRoLnJvdW5kKDAuMjUgKiBzaGFyZWRCdWZmZXJzKTtcblxuICAgIGNvbnN0IHRlbXBCdWZmZXJzID0gMTI4ICogMTAyNDtcbiAgICBjb25zdCBzZXFQYWdlQ29zdCA9IDE7XG4gICAgY29uc3QgcmFuZG9tUGFnZUNvc3QgPSAxLjE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWF4Q29ubmVjdGlvbnM6IGAke21heENvbm5lY3Rpb25zfWAsXG4gICAgICBzaGFyZWRCdWZmZXJzOiBgJHtzaGFyZWRCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBlZmZlY3RpdmVDYWNoZVNpemU6IGAke2VmZmVjdGl2ZUNhY2hlU2l6ZSAvIDh9YCwgLy8gUmVwcmVzZW50ZWQgaW4gOGtiIGJsb2Nrc1xuICAgICAgd29ya01lbTogYCR7d29ya01lbX1gLFxuICAgICAgbWFpbnRlbmFuY2VXb3JrTWVtOiBgJHttYWludGVuYW5jZVdvcmtNZW19YCxcbiAgICAgIG1heExvY2tzUGVyVHJhbnNhY3Rpb246IFwiMTAyNFwiLFxuICAgICAgdGVtcEJ1ZmZlcnM6IGAke3RlbXBCdWZmZXJzIC8gOH1gLCAvLyBSZXByZXNlbnRlZCBpbiA4a2IgYmxvY2tzXG4gICAgICBzZXFQYWdlQ29zdDogYCR7c2VxUGFnZUNvc3R9YCxcbiAgICAgIHJhbmRvbVBhZ2VDb3N0OiBgJHtyYW5kb21QYWdlQ29zdH1gLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZ1N0YWNEYXRhYmFzZVByb3BzIGV4dGVuZHMgcmRzLkRhdGFiYXNlSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRoYXQgaXMgdG8gYmUgY3JlYXRlZCBhbmQgb250byB3aGljaCBwZ1NUQUMgd2lsbCBiZSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY1xuICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjRGJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAgKiBWZXJzaW9uIG9mIHBnc3RhYyB0byBpbnN0YWxsIG9uIHRoZSBkYXRhYmFzZVxuICAgICAgKlxuICAgICAgKiBAZGVmYXVsdCAwLjguNVxuICAgICAgKi9cbiAgcmVhZG9ubHkgcGdzdGFjVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUHJlZml4IHRvIGFzc2lnbiB0byB0aGUgZ2VuZXJhdGVkIGBzZWNyZXRzX21hbmFnZXIuU2VjcmV0YFxuICAgKlxuICAgKiBAZGVmYXVsdCBwZ3N0YWNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdXNlciB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciBjb25uZWN0aW5nIHRvIHRoZSBwZ1NUQUMgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHBnc3RhY191c2VyXG4gICAqL1xuICByZWFkb25seSBwZ3N0YWNVc2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIHBnYm91bmNlciBpbnN0YW5jZSBmb3IgbWFuYWdpbmcgdHJhZmZpYyB0byB0aGUgcGdTVEFDIGRhdGFiYXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFkZFBnYm91bmNlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExhbWJkYSBmdW5jdGlvbiBDdXN0b20gUmVzb3VyY2UgcHJvcGVydGllcy4gQSBjdXN0b20gcmVzb3VyY2UgcHJvcGVydHkgaXMgZ29pbmcgdG8gYmUgY3JlYXRlZFxuICAgKiB0byB0cmlnZ2VyIHRoZSBib29zdHJhcHBpbmcgbGFtYmRhIGZ1bmN0aW9uLiBUaGlzIHBhcmFtZXRlciBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHByb3BlcnRpZXNcbiAgICogb24gdG9wIG9mIHRoZSBkZWZhdWx0cyBvbmVzLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGFtYmRhIGZ1bmN0aW9uIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmaW5lZCBpbiB0aGUgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdHN0cmFwcGVyTGFtYmRhRnVuY3Rpb25PcHRpb25zPzogQ3VzdG9tTGFtYmRhRnVuY3Rpb25Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVBhcmFtZXRlcnMge1xuICAvKipcbiAgICogQGRlZmF1bHQgLSBMRUFTVCh7REJJbnN0YW5jZUNsYXNzTWVtb3J5Lzk1MzEzOTJ9LCA1MDAwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29ubmVjdGlvbnM6IHN0cmluZztcblxuICAvKipcbiAgICogTm90ZTogVGhpcyB2YWx1ZSBpcyBtZWFzdXJlZCBpbiA4S0IgYmxvY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAne0RCSW5zdGFuY2VDbGFzc01lbW9yeS8zMjc2OH0nIDI1JSBvZiBpbnN0YW5jZSBtZW1vcnksIGllIGB7KERCSW5zdGFuY2VDbGFzc01lbW9yeS8oMTAyNCo4KSkgKiAwLjI1fWBcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSA3NSUgb2YgaW5zdGFuY2UgbWVtb3J5XG4gICAqL1xuICByZWFkb25seSBlZmZlY3RpdmVDYWNoZVNpemU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgLSBzaGFyZWQgYnVmZmVycyBkaXZpZGVkIGJ5IG1heCBjb25uZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya01lbTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIDI1JSBvZiBzaGFyZWQgYnVmZmVyc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFpbnRlbmFuY2VXb3JrTWVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1heExvY2tzUGVyVHJhbnNhY3Rpb246IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMTMxMTcyICgxMjggKiAxMDI0KVxuICAgKi9cbiAgcmVhZG9ubHkgdGVtcEJ1ZmZlcnM6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgc2VxUGFnZUNvc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlZmF1bHQgMS4xXG4gICAqL1xuICByZWFkb25seSByYW5kb21QYWdlQ29zdDogc3RyaW5nO1xufVxuIl19