@wbce/projen-d9 0.1.1 → 0.1.2
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 +26 -13
- package/API.md +24 -0
- package/CHANGELOG.md +6 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +23 -7
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
},
|
|
152
152
|
"locationInModule": {
|
|
153
153
|
"filename": "src/index.ts",
|
|
154
|
-
"line":
|
|
154
|
+
"line": 87
|
|
155
155
|
},
|
|
156
156
|
"parameters": [
|
|
157
157
|
{
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
},
|
|
175
175
|
"locationInModule": {
|
|
176
176
|
"filename": "src/index.ts",
|
|
177
|
-
"line":
|
|
177
|
+
"line": 202
|
|
178
178
|
},
|
|
179
179
|
"name": "addExtension",
|
|
180
180
|
"parameters": [
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
},
|
|
216
216
|
"locationInModule": {
|
|
217
217
|
"filename": "src/index.ts",
|
|
218
|
-
"line":
|
|
218
|
+
"line": 206
|
|
219
219
|
},
|
|
220
220
|
"name": "configurePlumbing",
|
|
221
221
|
"parameters": [
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
},
|
|
265
265
|
"locationInModule": {
|
|
266
266
|
"filename": "src/index.ts",
|
|
267
|
-
"line":
|
|
267
|
+
"line": 84
|
|
268
268
|
},
|
|
269
269
|
"name": "cacheService",
|
|
270
270
|
"type": {
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
},
|
|
278
278
|
"locationInModule": {
|
|
279
279
|
"filename": "src/index.ts",
|
|
280
|
-
"line":
|
|
280
|
+
"line": 82
|
|
281
281
|
},
|
|
282
282
|
"name": "d9Service",
|
|
283
283
|
"type": {
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
},
|
|
291
291
|
"locationInModule": {
|
|
292
292
|
"filename": "src/index.ts",
|
|
293
|
-
"line":
|
|
293
|
+
"line": 83
|
|
294
294
|
},
|
|
295
295
|
"name": "databaseService",
|
|
296
296
|
"type": {
|
|
@@ -303,7 +303,7 @@
|
|
|
303
303
|
},
|
|
304
304
|
"locationInModule": {
|
|
305
305
|
"filename": "src/index.ts",
|
|
306
|
-
"line":
|
|
306
|
+
"line": 81
|
|
307
307
|
},
|
|
308
308
|
"name": "dockerComposeFile",
|
|
309
309
|
"type": {
|
|
@@ -323,6 +323,19 @@
|
|
|
323
323
|
"fqn": "@wbce/projen-shared.Dockerfile"
|
|
324
324
|
}
|
|
325
325
|
},
|
|
326
|
+
{
|
|
327
|
+
"docs": {
|
|
328
|
+
"stability": "stable"
|
|
329
|
+
},
|
|
330
|
+
"locationInModule": {
|
|
331
|
+
"filename": "src/index.ts",
|
|
332
|
+
"line": 80
|
|
333
|
+
},
|
|
334
|
+
"name": "dockerignore",
|
|
335
|
+
"type": {
|
|
336
|
+
"fqn": "projen.IgnoreFile"
|
|
337
|
+
}
|
|
338
|
+
},
|
|
326
339
|
{
|
|
327
340
|
"docs": {
|
|
328
341
|
"stability": "stable"
|
|
@@ -355,7 +368,7 @@
|
|
|
355
368
|
},
|
|
356
369
|
"locationInModule": {
|
|
357
370
|
"filename": "src/index.ts",
|
|
358
|
-
"line":
|
|
371
|
+
"line": 87
|
|
359
372
|
},
|
|
360
373
|
"name": "options",
|
|
361
374
|
"protected": true,
|
|
@@ -462,7 +475,7 @@
|
|
|
462
475
|
},
|
|
463
476
|
"locationInModule": {
|
|
464
477
|
"filename": "src/index.ts",
|
|
465
|
-
"line":
|
|
478
|
+
"line": 87
|
|
466
479
|
},
|
|
467
480
|
"parameters": [
|
|
468
481
|
{
|
|
@@ -476,7 +489,7 @@
|
|
|
476
489
|
"kind": "class",
|
|
477
490
|
"locationInModule": {
|
|
478
491
|
"filename": "src/index.ts",
|
|
479
|
-
"line":
|
|
492
|
+
"line": 455
|
|
480
493
|
},
|
|
481
494
|
"name": "DirectusProject",
|
|
482
495
|
"symbolId": "src/index:DirectusProject"
|
|
@@ -495,7 +508,7 @@
|
|
|
495
508
|
"kind": "interface",
|
|
496
509
|
"locationInModule": {
|
|
497
510
|
"filename": "src/index.ts",
|
|
498
|
-
"line":
|
|
511
|
+
"line": 450
|
|
499
512
|
},
|
|
500
513
|
"name": "DirectusProjectOptions",
|
|
501
514
|
"symbolId": "src/index:DirectusProjectOptions"
|
|
@@ -704,6 +717,6 @@
|
|
|
704
717
|
"symbolId": "src/index:PlumbingOptions"
|
|
705
718
|
}
|
|
706
719
|
},
|
|
707
|
-
"version": "0.1.
|
|
708
|
-
"fingerprint": "
|
|
720
|
+
"version": "0.1.2",
|
|
721
|
+
"fingerprint": "FSBM+slCKoKnL0rktLGMWPDJiNR44qYVLz7LfhrhRQQ="
|
|
709
722
|
}
|
package/API.md
CHANGED
|
@@ -778,6 +778,7 @@ When given a project, this it the project itself.
|
|
|
778
778
|
| <code><a href="#@wbce/projen-d9.D9Project.property.databaseService">databaseService</a></code> | <code>projen.DockerComposeService</code> | *No description.* |
|
|
779
779
|
| <code><a href="#@wbce/projen-d9.D9Project.property.dockerComposeFile">dockerComposeFile</a></code> | <code>projen.DockerCompose</code> | *No description.* |
|
|
780
780
|
| <code><a href="#@wbce/projen-d9.D9Project.property.dockerfile">dockerfile</a></code> | <code>@wbce/projen-shared.Dockerfile</code> | *No description.* |
|
|
781
|
+
| <code><a href="#@wbce/projen-d9.D9Project.property.dockerignore">dockerignore</a></code> | <code>projen.IgnoreFile</code> | *No description.* |
|
|
781
782
|
| <code><a href="#@wbce/projen-d9.D9Project.property.extensionFolder">extensionFolder</a></code> | <code>string</code> | *No description.* |
|
|
782
783
|
| <code><a href="#@wbce/projen-d9.D9Project.property.extensions">extensions</a></code> | <code>@wbce/projen-d9-extension.ExtensionFolder</code> | *No description.* |
|
|
783
784
|
|
|
@@ -1503,6 +1504,16 @@ public readonly dockerfile: Dockerfile;
|
|
|
1503
1504
|
|
|
1504
1505
|
---
|
|
1505
1506
|
|
|
1507
|
+
##### `dockerignore`<sup>Required</sup> <a name="dockerignore" id="@wbce/projen-d9.D9Project.property.dockerignore"></a>
|
|
1508
|
+
|
|
1509
|
+
```typescript
|
|
1510
|
+
public readonly dockerignore: IgnoreFile;
|
|
1511
|
+
```
|
|
1512
|
+
|
|
1513
|
+
- *Type:* projen.IgnoreFile
|
|
1514
|
+
|
|
1515
|
+
---
|
|
1516
|
+
|
|
1506
1517
|
##### `extensionFolder`<sup>Required</sup> <a name="extensionFolder" id="@wbce/projen-d9.D9Project.property.extensionFolder"></a>
|
|
1507
1518
|
|
|
1508
1519
|
```typescript
|
|
@@ -2322,6 +2333,7 @@ When given a project, this it the project itself.
|
|
|
2322
2333
|
| <code><a href="#@wbce/projen-d9.DirectusProject.property.databaseService">databaseService</a></code> | <code>projen.DockerComposeService</code> | *No description.* |
|
|
2323
2334
|
| <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerComposeFile">dockerComposeFile</a></code> | <code>projen.DockerCompose</code> | *No description.* |
|
|
2324
2335
|
| <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerfile">dockerfile</a></code> | <code>@wbce/projen-shared.Dockerfile</code> | *No description.* |
|
|
2336
|
+
| <code><a href="#@wbce/projen-d9.DirectusProject.property.dockerignore">dockerignore</a></code> | <code>projen.IgnoreFile</code> | *No description.* |
|
|
2325
2337
|
| <code><a href="#@wbce/projen-d9.DirectusProject.property.extensionFolder">extensionFolder</a></code> | <code>string</code> | *No description.* |
|
|
2326
2338
|
| <code><a href="#@wbce/projen-d9.DirectusProject.property.extensions">extensions</a></code> | <code>@wbce/projen-d9-extension.ExtensionFolder</code> | *No description.* |
|
|
2327
2339
|
|
|
@@ -3157,6 +3169,18 @@ public readonly dockerfile: Dockerfile;
|
|
|
3157
3169
|
|
|
3158
3170
|
---
|
|
3159
3171
|
|
|
3172
|
+
##### ~~`dockerignore`~~<sup>Required</sup> <a name="dockerignore" id="@wbce/projen-d9.DirectusProject.property.dockerignore"></a>
|
|
3173
|
+
|
|
3174
|
+
- *Deprecated:* Use {@link D9Project } instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
|
|
3175
|
+
|
|
3176
|
+
```typescript
|
|
3177
|
+
public readonly dockerignore: IgnoreFile;
|
|
3178
|
+
```
|
|
3179
|
+
|
|
3180
|
+
- *Type:* projen.IgnoreFile
|
|
3181
|
+
|
|
3182
|
+
---
|
|
3183
|
+
|
|
3160
3184
|
##### ~~`extensionFolder`~~<sup>Required</sup> <a name="extensionFolder" id="@wbce/projen-d9.DirectusProject.property.extensionFolder"></a>
|
|
3161
3185
|
|
|
3162
3186
|
- *Deprecated:* Use {@link D9Project } instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
|
package/CHANGELOG.md
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AddExtensionOptions, D9ExtensionType, ExtensionFolder } from '@wbce/projen-d9-extension';
|
|
2
2
|
import { GitHubConfig, GitHubConfigOptions, Dockerfile } from '@wbce/projen-shared';
|
|
3
|
-
import { DockerCompose, DockerComposeService, javascript, Task, typescript } from 'projen';
|
|
3
|
+
import { DockerCompose, DockerComposeService, IgnoreFile, javascript, Task, typescript } from 'projen';
|
|
4
4
|
export interface PackageVersions {
|
|
5
5
|
readonly d9?: string;
|
|
6
6
|
/**
|
|
@@ -73,6 +73,7 @@ export declare class D9Project extends javascript.NodeProject {
|
|
|
73
73
|
extensionFolder: string;
|
|
74
74
|
buildExtensionTask: Task;
|
|
75
75
|
dockerfile: Dockerfile;
|
|
76
|
+
dockerignore: IgnoreFile;
|
|
76
77
|
dockerComposeFile: DockerCompose;
|
|
77
78
|
d9Service: DockerComposeService;
|
|
78
79
|
databaseService: DockerComposeService;
|
package/lib/index.js
CHANGED
|
@@ -299,11 +299,26 @@ class D9Project extends projen_1.javascript.NodeProject {
|
|
|
299
299
|
}
|
|
300
300
|
addDockerfile() {
|
|
301
301
|
this.dockerfile = new projen_shared_1.Dockerfile(this)
|
|
302
|
+
// builder stage: dev dependencies are installed so `npx projen` runs the version locked in package-lock.json
|
|
303
|
+
.fromAs('node', '22-bookworm-slim', 'builder')
|
|
304
|
+
.step('builder-update-npm', 'Update npm to fix dependencies')
|
|
305
|
+
.run('npm install -g npm@11.8.0')
|
|
306
|
+
.step('builder-install-pnpm', 'install pnpm')
|
|
307
|
+
.run('npm install -g pnpm@10.33.0')
|
|
308
|
+
.step('builder-copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
|
|
309
|
+
.copy('package*.json', '/app/')
|
|
310
|
+
.step('builder-workdir', 'Set working directory')
|
|
311
|
+
.workdir('/app')
|
|
312
|
+
.step('builder-install-deps', 'Install dependencies - with dev dependencies, for projen')
|
|
313
|
+
.run('npm ci')
|
|
314
|
+
.step('builder-copy-source', 'Copy the rest of the application code')
|
|
315
|
+
.copy('.', '.')
|
|
316
|
+
.step('build-extension', 'build extensions')
|
|
317
|
+
.run('npx projen build-extensions')
|
|
318
|
+
// final stage
|
|
302
319
|
.from('node', '22-bookworm-slim')
|
|
303
320
|
.step('update-npm', 'Update npm to fix dependencies')
|
|
304
321
|
.run('npm install -g npm@11.8.0')
|
|
305
|
-
.step('install-pnpm', 'install pnpm')
|
|
306
|
-
.run('npm install -g pnpm@10.33.0')
|
|
307
322
|
.step('copy-package', 'Copy package.json and package-lock.json first to leverage Docker layer caching')
|
|
308
323
|
.copy('package*.json', '/app/')
|
|
309
324
|
.step('workdir', 'Set working directory')
|
|
@@ -314,16 +329,17 @@ class D9Project extends projen_1.javascript.NodeProject {
|
|
|
314
329
|
.run('rm -rf node_modules/tedious/benchmarks')
|
|
315
330
|
.step('copy-source', 'Copy the rest of the application code')
|
|
316
331
|
.copy('.', '.')
|
|
317
|
-
.step('
|
|
318
|
-
.
|
|
332
|
+
.step('copy-extensions', 'Copy the built extensions from the builder stage')
|
|
333
|
+
.copy('/app/extensions', './extensions', { from: 'builder' })
|
|
319
334
|
.step('start', 'Start d9 server')
|
|
320
335
|
.cmdExec(['npx', 'directus', 'start']);
|
|
336
|
+
this.dockerignore = new projen_1.IgnoreFile(this, '.dockerignore', { ignorePatterns: ['**/node_modules', '.git'] });
|
|
321
337
|
return this.dockerfile;
|
|
322
338
|
}
|
|
323
339
|
}
|
|
324
340
|
exports.D9Project = D9Project;
|
|
325
341
|
_a = JSII_RTTI_SYMBOL_1;
|
|
326
|
-
D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.
|
|
342
|
+
D9Project[_a] = { fqn: "@wbce/projen-d9.D9Project", version: "0.1.2" };
|
|
327
343
|
/**
|
|
328
344
|
* @deprecated Use {@link D9Project} instead. The package was renamed to `@wbce/projen-d9` to reflect that it targets the d9 fork, not upstream Directus.
|
|
329
345
|
*/
|
|
@@ -331,5 +347,5 @@ class DirectusProject extends D9Project {
|
|
|
331
347
|
}
|
|
332
348
|
exports.DirectusProject = DirectusProject;
|
|
333
349
|
_b = JSII_RTTI_SYMBOL_1;
|
|
334
|
-
DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.
|
|
335
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUEwSTtBQUMxSSx1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFhbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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QUMsY0FBYyxFQUFFLGdGQUFnRixDQUFDO2FBQ3RHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLENBQUM7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsaURBQWlELENBQUM7YUFDdkUsR0FBRyxDQUFDLGlDQUFpQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsMkRBQTJELENBQUM7YUFDNUUsR0FBRyxDQUFDLHdDQUF3QyxDQUFDO2FBQzdDLElBQUksQ0FBQyxhQUFhLEVBQUUsdUNBQXVDLENBQUM7YUFDNUQsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7YUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUM7YUFDM0MsR0FBRyxDQUFDLDZCQUE2QixDQUFDO2FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDaEMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOztBQWhXSCw4QkFrV0M7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7O0FBQTlDLDBDQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZEV4dGVuc2lvbk9wdGlvbnMsIEQ5RXh0ZW5zaW9uVHlwZSwgRXh0ZW5zaW9uRm9sZGVyIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XG5pbXBvcnQgeyBHaXRIdWJDb25maWcsIEdpdEh1YkNvbmZpZ09wdGlvbnMsIERvY2tlcmZpbGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tc2hhcmVkJztcbmltcG9ydCB7IEFpQWdlbnQsIEFpSW5zdHJ1Y3Rpb25zLCBEb2NrZXJDb21wb3NlLCBEb2NrZXJDb21wb3NlU2VydmljZSwgamF2YXNjcmlwdCwgSnNvbkZpbGUsIFNhbXBsZUZpbGUsIFRhc2ssIHR5cGVzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VWZXJzaW9ucyB7XG4gIHJlYWRvbmx5IGQ5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIEF0bGFzIGJpbmFyeSBkb3dubG9hZGVkIGJ5IGQ5LXBsdW1iaW5nLlxuICAgKiBAZGVmYXVsdCBcIjEuMy4zXCJcbiAgICovXG4gIHJlYWRvbmx5IGF0bGFzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLCB1c2VkIGJ5IGBkOS1wbHVtYmluZyBzYXZlYCBhbmQgYGQ5LXBsdW1iaW5nIGFwcGx5LXNjaGVtYWAgdG8gdHJhbnNmZXIgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgZHJpdmVyOiBzMywgZ2NzLCBhenVyZSwgbG9jYWwgb3IgY2xvdWRpbmFyeS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlcjogc3RyaW5nO1xuICAvKipcbiAgICogTm9uLXNlY3JldCBkcml2ZXIgb3B0aW9ucyAocm9vdCwgYnVja2V0LCByZWdpb24sIGVuZHBvaW50Li4uKS5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogU2VjcmV0IGRyaXZlciBvcHRpb25zLCBtYXBwaW5nIGVhY2ggb3B0aW9uIG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGhvbGRpbmcgaXRzIHZhbHVlLlxuICAgKiBPbmx5IHRoZSB2YXJpYWJsZSBuYW1lIGlzIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLCBuZXZlciB0aGUgdmFsdWU6IGl0IGlzIHJlYWQgZnJvbSB0aGUgZW52aXJvbm1lbnQgKG9yIGAuZW52YCkgYXQgcnVudGltZS5cbiAgICogQGV4YW1wbGUgeyBrZXk6ICdTM19BQ0NFU1NfS0VZX0lEX0VOVl9WQVInLCBzZWNyZXQ6ICdTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSJyB9IC8vIHRoZSBgc2VjcmV0YCBvcHRpb24gaXMgcmVhZCBmcm9tICRTM19TRUNSRVRfQUNDRVNTX0tFWV9FTlZfVkFSXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRFbnY/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdGhlIGQ5LXBsdW1iaW5nIENMSSwgd3JpdHRlbiB0byBgZDktcGx1bWJpbmcuanNvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1bWJpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2Ugc2hhcmVkIGJldHdlZW4gZW52aXJvbm1lbnRzLlxuICAgKiBAZGVmYXVsdCAtIG5vbmUsIHRoZSBpbnRlcm1lZGlhdGUgc3RvcmFnZSBpcyBjb25maWd1cmVkIHdpdGggSU5URVJNRURJQVRFX1NUT1JBR0VfKiB2YXJpYWJsZXMgb3IgZmxhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGludGVybWVkaWF0ZVN0b3JhZ2U/OiBJbnRlcm1lZGlhdGVTdG9yYWdlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmF1bHQgbG9nIGxldmVsIG9mIHRoZSBDTEksIG92ZXJyaWRkZW4gYnkgdGhlIExPR19MRVZFTCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkZWJ1Z1wiXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGQ5IGZvbGRlciBrZXB0IGluIHRoZSBzbmFwc2hvdCwgb3ZlcnJpZGRlbiBieSB0aGUgQ09NTU9OX0ZPTERFUl9OQU1FIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAZGVmYXVsdCBcImQ5LXBsdW1iaW5nLWNvbW1vblwiXG4gICAqL1xuICByZWFkb25seSBjb21tb25Gb2xkZXJOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEQ5UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgR2l0SHViIGNvbmZpZ3VyYXRpb24uXG4gICAqIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIEdpdEh1YiBjb25maWcgZW50aXJlbHkuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWJDb25maWcgd2l0aCBwcm9qZWN0IGRlZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWdPcHRpb25zIHwgZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb25zIGZvbGRlci5cbiAgICogQGRlZmF1bHQgXCJleHRlbnNpb24tcGFja2FnZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uc0ZvbGRlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VWZXJzaW9ucz86IFBhY2thZ2VWZXJzaW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEQ5UHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBnaXRodWJDb25maWc/OiBHaXRIdWJDb25maWc7XG4gIHB1YmxpYyBleHRlbnNpb25zITogRXh0ZW5zaW9uRm9sZGVyO1xuICBwdWJsaWMgZXh0ZW5zaW9uRm9sZGVyITogc3RyaW5nO1xuICBwdWJsaWMgYnVpbGRFeHRlbnNpb25UYXNrITogVGFzaztcbiAgcHVibGljIGRvY2tlcmZpbGUhOiBEb2NrZXJmaWxlO1xuICBwdWJsaWMgZG9ja2VyQ29tcG9zZUZpbGUhOiBEb2NrZXJDb21wb3NlO1xuICBwdWJsaWMgZDlTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHB1YmxpYyBkYXRhYmFzZVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGNhY2hlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwcml2YXRlIHBsdW1iaW5nQ29uZmlnITogSnNvbkZpbGU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEQ5UHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkOVZlcnNpb24gPSBvcHRpb25zLnBhY2thZ2VWZXJzaW9ucz8uZDkgfHwgJzEyLjAuMTUnO1xuICAgIGNvbnN0IGF0bGFzVmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5hdGxhcyB8fCAnMS4zLjMnO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBwYWNrYWdlTWFuYWdlcjogb3B0aW9ucy5wYWNrYWdlTWFuYWdlciA/PyBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICBnaXRodWI6IGZhbHNlLCAvLyBXZSB1c2Ugb3VyIG93biBHaXRIdWJDb25maWcgaW5zdGVhZFxuICAgICAgZGVwc1VwZ3JhZGU6IHRydWUsXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHtcbiAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgc2NoZWR1bGU6IFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5EQUlMWSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICByZWFkbWU6IG9wdGlvbnMucmVhZG1lID8/IHtcbiAgICAgICAgY29udGVudHM6IFtcbiAgICAgICAgICBgIyAke29wdGlvbnMubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdBIFtkOV0oaHR0cHM6Ly9naXRodWIuY29tL0xhV2ViY2Fwc3VsZS9kOSkgKERpcmVjdHVzIDkgZm9yaykgcHJvamVjdCBzY2FmZm9sZGVkIHdpdGggW2BAd2JjZS9wcm9qZW4tZDlgXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ad2JjZS9wcm9qZW4tZDkpLiBEZXZlbG9wIGxvY2FsbHkgYWdhaW5zdCBEb2NrZXIgQ29tcG9zZSwgdGhlbiBidWlsZCBhIERvY2tlciBpbWFnZSB0byBkZXBsb3kgYW55d2hlcmUuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgTG9jYWwgZGV2ZWxvcG1lbnQnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBzaCcsXG4gICAgICAgICAgJ25weCBwcm9qZW4gaW5zdGFsbCAgICAgICMgaW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICAgICducHggcHJvamVuIGZpcnN0LXJ1biAgICAjIGJvb3Qgc3RhY2ssIGNyZWF0ZSBhZG1pbiwgc3RhcnQgZDknLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdPcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6ODA1NSBhbmQgc2lnbiBpbiBhcyBgYWRtaW5AZXhhbXBsZS5jb21gIC8gYHRvdG90b3RvYC4gRXh0ZW5zaW9ucyBhdXRvLXJlbG9hZCAoYEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ9dHJ1ZWApLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIERlcGxveScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgYERvY2tlcmZpbGVgIGlzIGluY2x1ZGVkLiBCdWlsZCBhbmQgcHVzaCB0aGUgaW1hZ2UgZm9yIHlvdXIgdGFyZ2V0IGVudmlyb25tZW50OicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnZG9ja2VyIGJ1aWxkIC10IDxyZWdpc3RyeT4vPGltYWdlPjo8dGFnPiAuJyxcbiAgICAgICAgICAnZG9ja2VyIHB1c2ggPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+JyxcbiAgICAgICAgICAnYGBgJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQ29uZmlndXJlIHRoZSBkZXBsb3llZCBpbnN0YW5jZSB3aXRoIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZGF0YWJhc2UsIGNhY2hlLCBzZWNyZXRzKSDigJQgc2VlIHRoZSBkOSBkb2NzLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIENvbW1vbiB0YXNrcycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ3wgVGFzayB8IERlc2NyaXB0aW9uIHwnLFxuICAgICAgICAgICd8IC0tLSB8IC0tLSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBydW5gIHwgU3RhcnQgZDkgKGBkb2NrZXIgY29tcG9zZSB1cCBkOWApIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMgW25hbWVdYCB8IEluc3RhbGwgYW5kIGJ1aWxkIGFsbCBleHRlbnNpb25zIChvciBvbmx5IGBuYW1lYCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gY3JlYXRlLWFuLWFkbWluYCB8IENyZWF0ZSB0aGUgZGVmYXVsdCBhZG1pbiB1c2VyIHwnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdTZWUgYC5wcm9qZW4vdGFza3MuanNvbmAgZm9yIHRoZSBmdWxsIGxpc3QuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29uZmlndXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0VkaXQgYC5wcm9qZW5yYy5qc2AgYW5kIHJ1biBgbnB4IHByb2plbmAgdG8gcmVnZW5lcmF0ZSBwcm9qZWN0IGZpbGVzLiBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZ28gaW4gYC5lbnYubG9jYWxgLicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJyMjIEV4dGVuc2lvbnMnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdFeHRlbnNpb25zIGxpdmUgdW5kZXIgYC4vcGx1Z2lucy9gLiBBZGQgbmV3IG9uZXMgaW4gYC5wcm9qZW5yYy5qc2A6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBganMnLFxuICAgICAgICAgIFwiaW1wb3J0IHsgRDlFeHRlbnNpb25UeXBlIH0gZnJvbSAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbic7XCIsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgXCJwcm9qZWN0LmFkZEV4dGVuc2lvbignbXktaG9vaycsIFtEOUV4dGVuc2lvblR5cGUuSE9PS10pO1wiLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUaGVuIGBucHggcHJvamVuICYmIG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9uc2AuJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDknLFxuICAgICAgICAnQHdiY2UvcHJvamVuLWQ5LWV4dGVuc2lvbicsXG4gICAgICAgIC4uLihvcHRpb25zLmRldkRlcHMgPz8gW10pLFxuICAgICAgXSxcbiAgICAgIGRlcHM6IFtgQHdiY2UtZDkvZGlyZWN0dXM5QCR7ZDlWZXJzaW9ufWBdLFxuICAgIH0pO1xuXG4gICAgLy8gTm8gdHNjb25maWcgbWVhbnMgbm8gdHNjIC0tYnVpbGQgaW4gY29tcGlsZVxuICAgIHRoaXMuY29tcGlsZVRhc2sucmVzZXQoKTtcblxuICAgIHRoaXMucGx1bWJpbmdDb25maWcgPSBuZXcgSnNvbkZpbGUodGhpcywgJ2Q5LXBsdW1iaW5nLmpzb24nLCB7XG4gICAgICBvYmo6IHsgYXRsYXNWZXJzaW9uIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4dGVuc2lvbkZvbGRlcigpO1xuICAgIHRoaXMuYWRkRG9ja2VyQ29tcG9zZSgpO1xuICAgIHRoaXMuYWRkRmlyc3RSdW5UYXNrKCk7XG4gICAgdGhpcy5hZGRCdWlsZEV4dGVuc2lvblRhc2soKTtcbiAgICB0aGlzLmFkZFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEQ5UGx1bWJpbmdUYXNrKCk7XG4gICAgdGhpcy5hZGREb2NrZXJmaWxlKCk7XG4gICAgdGhpcy5hZGRDcmVhdGVBZG1pblVzZXJUYXNrKCk7XG5cbiAgICBuZXcgQWlJbnN0cnVjdGlvbnModGhpcywge1xuICAgICAgYWdlbnRzOiBbQWlBZ2VudC5DTEFVREVdLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMuZ2l0aHViQ29uZmlnICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5naXRodWJDb25maWcgPSBuZXcgR2l0SHViQ29uZmlnKHRoaXMsIG9wdGlvbnMuZ2l0aHViQ29uZmlnKTtcbiAgICAgIHRoaXMuYWRkU2F2ZUJyYW5jaFdvcmtmbG93KCk7XG4gICAgfVxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCd1cGxvYWRzJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJyoqLy5EU19TdG9yZScpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKCcuZW52LmxvY2FsJyk7XG5cbiAgICAvLyBDcmVhdGUgYW4gZW1wdHkgLmVudi5sb2NhbCBpZiBpdCBkb2Vzbid0IGV4aXN0LCBzbyBEb2NrZXIgZG9lc24ndCBtb3VudCBhIGRpcmVjdG9yeVxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICcuZW52LmxvY2FsJywgeyBjb250ZW50czogJyMgTG9jYWwgZW52aXJvbm1lbnQgb3ZlcnJpZGVzIGZvciBkOScgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dGVuc2lvbkZvbGRlcigpIHtcbiAgICBjb25zdCBmb2xkZXJOYW1lID0gdGhpcy5vcHRpb25zLmV4dGVuc2lvbnNGb2xkZXJOYW1lID8/ICdwbHVnaW5zJztcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBuZXcgRXh0ZW5zaW9uRm9sZGVyKHsgcGFyZW50OiB0aGlzLCBuYW1lOiBmb2xkZXJOYW1lIH0pO1xuICAgIHRoaXMuZXh0ZW5zaW9uRm9sZGVyID0gZm9sZGVyTmFtZTtcbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKCdleHRlbnNpb25zLyonKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKCdleHRlbnNpb25zL3RlbXBsYXRlcy8nKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFeHRlbnNpb24obmFtZTogc3RyaW5nLCBleHRlbnNpb25UeXBlczogRDlFeHRlbnNpb25UeXBlW10sIG9wdGlvbnM/OiBBZGRFeHRlbnNpb25PcHRpb25zICkge1xuICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuYWRkKG5hbWUsIGV4dGVuc2lvblR5cGVzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVQbHVtYmluZyhvcHRpb25zOiBQbHVtYmluZ09wdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgdGhpcy5wbHVtYmluZ0NvbmZpZy5hZGRPdmVycmlkZShrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpcnN0UnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdmaXJzdC1ydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgYW5kIHN0YXJ0IGEgZnJlc2ggZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIGNvbnN0IGFkbWluRW1haWwgPSAnYWRtaW5AZXhhbXBsZS5jb20nO1xuICAgIGNvbnN0IHVzZXJOb3RFeGlzdHNDb25kaXRpb24gPSBgZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgY291bnQoKikgRlJPTSBkaXJlY3R1c191c2VycyBXSEVSRSBlbWFpbCA9ICcke2FkbWluRW1haWx9J1wiIHwgZ3JlcCAtcSAnXjAkJ2A7XG4gICAgY29uc3QgZW1wdHlEYXRhYmFzZUNvbmRpdGlvbiA9ICdkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFIFxcJ2RpcmVjdHVzXyVcXCdcIiB8IGdyZXAgLXEgXFwnXjAkXFwnJztcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIGZpcnN0LWltcG9ydCAtLWhvc3QgbG9jYWxob3N0IC0tdXNlciBkOSAtLXBhc3N3b3JkIGQ5IC0tZGF0YWJhc2UgZDknLCB7XG4gICAgICBjb25kaXRpb246ICd0ZXN0IC1kIC4vc3FsJyxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyBib290c3RyYXAnLCB7XG4gICAgICBjb25kaXRpb246IGB0ZXN0ICEgLWQgLi9zcWwgJiYgJHtlbXB0eURhdGFiYXNlQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIGQ5Jyk7XG4gIH1cblxuICBwcml2YXRlIGFkZENyZWF0ZUFkbWluVXNlclRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnY3JlYXRlLWFuLWFkbWluJywge1xuICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGUgYW4gYWRtaW4gdXNlcicsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICB0YXNrLmV4ZWMoJ2RvY2tlciBjb21wb3NlIHVwIC1kIC0td2FpdCBkYXRhYmFzZSBjYWNoZScpO1xuICAgIHRhc2suZXhlYyhgQURNSU5fUk9MRV9JRD0kKGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGlkIEZST00gZGlyZWN0dXNfcm9sZXMgV0hFUkUgYWRtaW5fYWNjZXNzID0gdHJ1ZSBMSU1JVCAxXCIpICYmIGRvY2tlciBjb21wb3NlIHJ1biAtLXJtIGQ5IG5weCBkaXJlY3R1cyB1c2VycyBjcmVhdGUgLS1lbWFpbCAke2FkbWluRW1haWx9IC0tcGFzc3dvcmQgdG90b3RvdG8gLS1yb2xlIFwiJEFETUlOX1JPTEVfSURcImAsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBwYXNzd29yZCB0b3RvdG90b2AsIHtcbiAgICAgIGNvbmRpdGlvbjogdXNlck5vdEV4aXN0c0NvbmRpdGlvbixcbiAgICB9KTtcbiAgICB0YXNrLnNheShgVXNlciAke2FkbWluRW1haWx9IGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyBjcmVhdGlvbmAsIHtcbiAgICAgIGNvbmRpdGlvbjogYCEgJHt1c2VyTm90RXhpc3RzQ29uZGl0aW9ufWAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJ1blRhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdzdGFydCB0aGUgZDkgaW5zdGFuY2UnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRDlQbHVtYmluZ1Rhc2soKSB7XG4gICAgY29uc3QgdGFzayA9IHRoaXMuYWRkVGFzaygnZDktcGx1bWJpbmcnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZDktcGx1bWJpbmcgQ0xJIChzYXZlLCBhcHBseS1zY2hlbWEsIGZpcnN0LWltcG9ydC4uLikuIFVzZSAtLWhlbHAgdG8gbGlzdCBhbGwgc3ViY29tbWFuZHMuJyxcbiAgICB9KTtcbiAgICB0YXNrLnNheSgnVGlwOiB5b3UgY2FuIGFsc28gY2FsbCBpdCBkaXJlY3RseSB3aXRoIGBucHggZDktcGx1bWJpbmcgPGNvbW1hbmQ+YCcpO1xuICAgIHRhc2suZXhlYygnbnB4IGQ5LXBsdW1iaW5nIFwiJEBcIicsIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpIHtcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzayA9IHRoaXMuYWRkVGFzaygnYnVpbGQtZXh0ZW5zaW9ucycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQnVpbGQgdGhlIGQ5IGV4dGVuc2lvbnMnLFxuICAgIH0pO1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHBucG0gaW5zdGFsbGApO1xuICAgIC8vIHByb2plbiByZXBsYWNlcyBcIiRAXCIgd2l0aCB0aGUgcXVvdGVkIHRhc2sgYXJnczsgYHNldCAtLWAgdHVybnMgdGhlbSBiYWNrIGludG8gJDFcbiAgICB0aGlzLmJ1aWxkRXh0ZW5zaW9uVGFzay5leGVjKFxuICAgICAgYGNkICR7dGhpcy5leHRlbnNpb25Gb2xkZXJ9ICYmIHNldCAtLSBcIiRAXCIgJiYgaWYgWyAtbiBcIiQxXCIgXTsgdGhlbiBwbnBtIC0tcmVjdXJzaXZlIC0tZmlsdGVyIFwiJDEuLi5cIiBydW4gYnVpbGQ7IGVsc2UgcG5wbSBydW4gLS1yZWN1cnNpdmUgYnVpbGQ7IGZpYCxcbiAgICAgIHsgcmVjZWl2ZUFyZ3M6IHRydWUgfSxcbiAgICApO1xuICB9XG5cblxuICBwcml2YXRlIGFkZERvY2tlckNvbXBvc2UoKSB7XG4gICAgY29uc3QgZGMgPSBuZXcgRG9ja2VyQ29tcG9zZSh0aGlzKTtcblxuICAgIHRoaXMuZGF0YWJhc2VTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZGF0YWJhc2UnLCB7XG4gICAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxMy1tYXN0ZXInLFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLm5hbWVkVm9sdW1lKCdwZ2RhdGEnLCAnL3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJyksXG4gICAgICBdLFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg1NDMyLCA1NDMyKSxcbiAgICAgIF0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQT1NUR1JFU19VU0VSOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogJ2Q5JyxcbiAgICAgICAgUE9TVEdSRVNfREI6ICdkOScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdjYWNoZScsIHtcbiAgICAgIGltYWdlOiAncmVkaXM6NicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3JlZGlzX3N0b3JhZ2UnLCAnL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDYzNzksIDYzNzkpLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZDlTZXJ2aWNlID0gZGMuYWRkU2VydmljZSgnZDknLCB7XG4gICAgICBpbWFnZUJ1aWxkOiB7IGNvbnRleHQ6ICcuJyB9LFxuICAgICAgcG9ydHM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5wb3J0TWFwcGluZyg4MDU1LCA4MDU1KSxcbiAgICAgIF0sXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi91cGxvYWRzJywgJy9hcHAvdXBsb2FkcycpLFxuICAgICAgICBEb2NrZXJDb21wb3NlLmJpbmRWb2x1bWUoJy4vZXh0ZW5zaW9ucycsICcvYXBwL2V4dGVuc2lvbnMnKSxcbiAgICAgIF0sXG4gICAgICAvLyBkZXBlbmRzT24gaXMgc2V0IHZpYSBhZGRPdmVycmlkZSBiZWxvdyB3aXRoIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBLRVk6ICdzb21lLXJhbmRvbS1rZXknLFxuICAgICAgICBTRUNSRVQ6ICdhbm90aGVyLXJhbmRvbS1rZXknLFxuICAgICAgICBDT05GSUdfUEFUSDogJy5lbnYubG9jYWwnLFxuICAgICAgICBEQl9DTElFTlQ6ICdwZycsXG4gICAgICAgIERCX0hPU1Q6ICdkYXRhYmFzZScsXG4gICAgICAgIERCX1BPUlQ6ICc1NDMyJyxcbiAgICAgICAgREJfREFUQUJBU0U6ICdkOScsXG4gICAgICAgIERCX1VTRVI6ICdkOScsXG4gICAgICAgIERCX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBDQUNIRV9FTkFCTEVEOiAnZmFsc2UnLFxuICAgICAgICBDQUNIRV9TVE9SRTogJ3JlZGlzJyxcbiAgICAgICAgQ0FDSEVfUkVESVNfSE9TVDogJ2NhY2hlJyxcbiAgICAgICAgTUVTU0VOR0VSX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBNRVNTRU5HRVJfUkVESVM6ICdyZWRpczovL2NhY2hlOjYzNzknLFxuICAgICAgICBDQUNIRV9TVEFUVVNfSEVBREVSOiAnY2FjaGUtaGl0JyxcbiAgICAgICAgQ09SU19FTkFCTEVEOiAndHJ1ZScsXG4gICAgICAgIENPUlNfT1JJR0lOOiAndHJ1ZScsXG4gICAgICAgIExPR19MRVZFTDogJ2luZm8nLFxuICAgICAgICBBRE1JTl9FTUFJTDogJ2FkbWluQGV4YW1wbGUuY29tJyxcbiAgICAgICAgQURNSU5fUEFTU1dPUkQ6ICd0b3RvdG90bycsXG4gICAgICAgIEVYVEVOU0lPTlNfQVVUT19SRUxPQUQ6ICd0cnVlJyxcbiAgICAgICAgVkFMSURBVEVfRU5USVRJRVNfVE9LRU5TX0FQSV9LRVk6ICd0b3RvJyxcbiAgICAgICAgQVdTX0tNU19LRVlfSUQ6ICd0dXR1JyxcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBbJ3NoJywgJy1jJywgJ25weCBkaXJlY3R1cyBzdGFydCddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UuYWRkVm9sdW1lKERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi8uZW52LmxvY2FsJywgJy9hcHAvLmVudi5sb2NhbCcpKTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgZGF0YWJhc2UgKG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgYnkgcHJvamVuIERvY2tlckNvbXBvc2UpXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuZGF0YWJhc2UuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRCcsICdwZ19pc3JlYWR5JywgJy0taG9zdD1sb2NhbGhvc3QnLCAnLS11c2VybmFtZT1kOSddLFxuICAgICAgaW50ZXJ2YWw6ICcxMHMnLFxuICAgICAgdGltZW91dDogJzVzJyxcbiAgICAgIHJldHJpZXM6IDUsXG4gICAgICBzdGFydF9pbnRlcnZhbDogJzVzJyxcbiAgICAgIHN0YXJ0X3BlcmlvZDogJzMwcycsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgaGVhbHRoY2hlY2sgZm9yIGNhY2hlXG4gICAgZGMuZmlsZS5hZGRPdmVycmlkZSgnc2VydmljZXMuY2FjaGUuaGVhbHRoY2hlY2snLCB7XG4gICAgICB0ZXN0OiBbJ0NNRC1TSEVMTCcsICdbICQocmVkaXMtY2xpIHBpbmcpID0gXFwnUE9OR1xcJyBdJ10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIE92ZXJyaWRlIGRlcGVuZHNfb24gdG8gdXNlIGNvbmRpdGlvbiBzeW50YXhcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kOS5kZXBlbmRzX29uJywge1xuICAgICAgY2FjaGU6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgICAgZGF0YWJhc2U6IHsgY29uZGl0aW9uOiAnc2VydmljZV9oZWFsdGh5JyB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5kb2NrZXJDb21wb3NlRmlsZSA9IGRjO1xuXG4gICAgcmV0dXJuIGRjO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYXZlQnJhbmNoV29ya2Zsb3coKSB7XG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLmdpdGh1YkNvbmZpZyEuYWRkV29ya2Zsb3coJ3NhdmUtYnJhbmNoJyk7XG4gICAgd29ya2Zsb3cub24oeyBwdXNoOiB7IGJyYW5jaGVzOiBbJyotc2F2ZSddIH0gfSk7XG4gICAgd29ya2Zsb3cuYWRkSm9iKCdjcmVhdGUtcHInLCB7XG4gICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICBydW5zT246IFsndWJ1bnR1LWxhdGVzdCddLFxuICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgcHVsbFJlcXVlc3RzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgfSxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ3JlYXRlIFB1bGwgUmVxdWVzdCcsXG4gICAgICAgICAgcnVuOiAnZ2ggcHIgY3JlYXRlIC0tdGl0bGUgXCJTYXZlOiAke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiAtLWJvZHkgXCJBdXRvLWdlbmVyYXRlZCBQUiBmcm9tIGJyYW5jaCBcXFxcYCR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVxcXFxgXCIgLS1iYXNlIFwiJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XCIgfHwgZWNobyBcIlBSIGFscmVhZHkgZXhpc3RzXCInLFxuICAgICAgICAgIGVudjogeyBHSF9UT0tFTjogJyR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fScgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZERvY2tlcmZpbGUoKSB7XG4gICAgdGhpcy5kb2NrZXJmaWxlID0gbmV3IERvY2tlcmZpbGUodGhpcylcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2luc3RhbGwtcG5wbScsICdpbnN0YWxsIHBucG0nKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwgLWcgcG5wbUAxMC4zMy4wJylcbiAgICAgIC5zdGVwKCdjb3B5LXBhY2thZ2UnLCAnQ29weSBwYWNrYWdlLmpzb24gYW5kIHBhY2thZ2UtbG9jay5qc29uIGZpcnN0IHRvIGxldmVyYWdlIERvY2tlciBsYXllciBjYWNoaW5nJylcbiAgICAgIC5jb3B5KCdwYWNrYWdlKi5qc29uJywgJy9hcHAvJylcbiAgICAgIC5zdGVwKCd3b3JrZGlyJywgJ1NldCB3b3JraW5nIGRpcmVjdG9yeScpXG4gICAgICAud29ya2RpcignL2FwcCcpXG4gICAgICAuc3RlcCgnaW5zdGFsbC1kZXBzJywgJ0luc3RhbGwgZGVwZW5kZW5jaWVzIC0gd2l0aG91dCBkZXYgZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ05PREVfRU5WPXByb2R1Y3Rpb24gbnBtIGluc3RhbGwnKVxuICAgICAgLnN0ZXAoJ2NsZWFudXAnLCAnQ2xlYW5pbmcgYmVuY2htYXJrcyBmb2xkZXIgaW4gdGVkaW91cyBtb2R1bGUgZm9yIHNlY3VyaXR5JylcbiAgICAgIC5ydW4oJ3JtIC1yZiBub2RlX21vZHVsZXMvdGVkaW91cy9iZW5jaG1hcmtzJylcbiAgICAgIC5zdGVwKCdjb3B5LXNvdXJjZScsICdDb3B5IHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiBjb2RlJylcbiAgICAgIC5jb3B5KCcuJywgJy4nKVxuICAgICAgLnN0ZXAoJ2J1aWxkLWV4dGVuc2lvbicsICdidWlsZCBleHRlbnNpb25zJylcbiAgICAgIC5ydW4oJ25weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9ucycpXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHJldHVybiB0aGlzLmRvY2tlcmZpbGU7XG4gIH1cblxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0T3B0aW9uc30gaW5zdGVhZC4gVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQgdG8gYEB3YmNlL3Byb2plbi1kOWAgdG8gcmVmbGVjdCB0aGF0IGl0IHRhcmdldHMgdGhlIGQ5IGZvcmssIG5vdCB1cHN0cmVhbSBEaXJlY3R1cy5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3R1c1Byb2plY3RPcHRpb25zIGV4dGVuZHMgRDlQcm9qZWN0T3B0aW9ucyB7fVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRDlQcm9qZWN0fSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG5leHBvcnQgY2xhc3MgRGlyZWN0dXNQcm9qZWN0IGV4dGVuZHMgRDlQcm9qZWN0IHt9XG4iXX0=
|
|
350
|
+
DirectusProject[_b] = { fqn: "@wbce/projen-d9.DirectusProject", version: "0.1.2" };
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBa0c7QUFDbEcsdURBQW9GO0FBQ3BGLG1DQUFzSjtBQUN0Six1RUFBa0U7QUFDbEUsc0RBQW9FO0FBb0VwRSxNQUFhLFNBQVUsU0FBUSxtQkFBVSxDQUFDLFdBQVc7SUFjbkQsWUFBc0IsT0FBeUI7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUMvRCxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDM0UsTUFBTSxFQUFFLEtBQUssRUFBRSxzQ0FBc0M7WUFDckQsV0FBVyxFQUFFLElBQUk7WUFDakIsa0JBQWtCLEVBQUU7Z0JBQ2xCLGVBQWUsRUFBRTtvQkFDZixRQUFRLEVBQUUsd0NBQTJCLENBQUMsS0FBSztpQkFDNUM7YUFDRjtZQUNELFFBQVEsRUFBRSxLQUFLO1lBQ2YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ25CLEVBQUU7b0JBQ0YsZ1BBQWdQO29CQUNoUCxFQUFFO29CQUNGLHNCQUFzQjtvQkFDdEIsRUFBRTtvQkFDRixPQUFPO29CQUNQLGdEQUFnRDtvQkFDaEQsOERBQThEO29CQUM5RCxLQUFLO29CQUNMLEVBQUU7b0JBQ0YscUlBQXFJO29CQUNySSxFQUFFO29CQUNGLFdBQVc7b0JBQ1gsRUFBRTtvQkFDRixtRkFBbUY7b0JBQ25GLEVBQUU7b0JBQ0YsT0FBTztvQkFDUCw0Q0FBNEM7b0JB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RSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7YUFDNUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQzthQUNoQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQzs7QUFqWEgsOEJBbVhDOzs7QUFRRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxTQUFTOztBQUE5QywwQ0FBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRFeHRlbnNpb25PcHRpb25zLCBEOUV4dGVuc2lvblR5cGUsIEV4dGVuc2lvbkZvbGRlciB9IGZyb20gJ0B3YmNlL3Byb2plbi1kOS1leHRlbnNpb24nO1xuaW1wb3J0IHsgR2l0SHViQ29uZmlnLCBHaXRIdWJDb25maWdPcHRpb25zLCBEb2NrZXJmaWxlIH0gZnJvbSAnQHdiY2UvcHJvamVuLXNoYXJlZCc7XG5pbXBvcnQgeyBBaUFnZW50LCBBaUluc3RydWN0aW9ucywgRG9ja2VyQ29tcG9zZSwgRG9ja2VyQ29tcG9zZVNlcnZpY2UsIElnbm9yZUZpbGUsIGphdmFzY3JpcHQsIEpzb25GaWxlLCBTYW1wbGVGaWxlLCBUYXNrLCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEpvYlBlcm1pc3Npb24gfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlIH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVmVyc2lvbnMge1xuICByZWFkb25seSBkOT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBBdGxhcyBiaW5hcnkgZG93bmxvYWRlZCBieSBkOS1wbHVtYmluZy5cbiAgICogQGRlZmF1bHQgXCIxLjMuM1wiXG4gICAqL1xuICByZWFkb25seSBhdGxhcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdG9yYWdlIHNoYXJlZCBiZXR3ZWVuIGVudmlyb25tZW50cywgdXNlZCBieSBgZDktcGx1bWJpbmcgc2F2ZWAgYW5kIGBkOS1wbHVtYmluZyBhcHBseS1zY2hlbWFgIHRvIHRyYW5zZmVyIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybWVkaWF0ZVN0b3JhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIGRyaXZlcjogczMsIGdjcywgYXp1cmUsIGxvY2FsIG9yIGNsb3VkaW5hcnkuXG4gICAqL1xuICByZWFkb25seSBkcml2ZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIE5vbi1zZWNyZXQgZHJpdmVyIG9wdGlvbnMgKHJvb3QsIGJ1Y2tldCwgcmVnaW9uLCBlbmRwb2ludC4uLikuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFNlY3JldCBkcml2ZXIgb3B0aW9ucywgbWFwcGluZyBlYWNoIG9wdGlvbiBuYW1lIHRvIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBob2xkaW5nIGl0cyB2YWx1ZS5cbiAgICogT25seSB0aGUgdmFyaWFibGUgbmFtZSBpcyB3cml0dGVuIHRvIGBkOS1wbHVtYmluZy5qc29uYCwgbmV2ZXIgdGhlIHZhbHVlOiBpdCBpcyByZWFkIGZyb20gdGhlIGVudmlyb25tZW50IChvciBgLmVudmApIGF0IHJ1bnRpbWUuXG4gICAqIEBleGFtcGxlIHsga2V5OiAnUzNfQUNDRVNTX0tFWV9JRF9FTlZfVkFSJywgc2VjcmV0OiAnUzNfU0VDUkVUX0FDQ0VTU19LRVlfRU5WX1ZBUicgfSAvLyB0aGUgYHNlY3JldGAgb3B0aW9uIGlzIHJlYWQgZnJvbSAkUzNfU0VDUkVUX0FDQ0VTU19LRVlfRU5WX1ZBUlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0RW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9mIHRoZSBkOS1wbHVtYmluZyBDTEksIHdyaXR0ZW4gdG8gYGQ5LXBsdW1iaW5nLmpzb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdW1iaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdG9yYWdlIHNoYXJlZCBiZXR3ZWVuIGVudmlyb25tZW50cy5cbiAgICogQGRlZmF1bHQgLSBub25lLCB0aGUgaW50ZXJtZWRpYXRlIHN0b3JhZ2UgaXMgY29uZmlndXJlZCB3aXRoIElOVEVSTUVESUFURV9TVE9SQUdFXyogdmFyaWFibGVzIG9yIGZsYWdzXG4gICAqL1xuICByZWFkb25seSBpbnRlcm1lZGlhdGVTdG9yYWdlPzogSW50ZXJtZWRpYXRlU3RvcmFnZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGxvZyBsZXZlbCBvZiB0aGUgQ0xJLCBvdmVycmlkZGVuIGJ5IHRoZSBMT0dfTEVWRUwgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBkZWZhdWx0IFwiZGVidWdcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nTGV2ZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkOSBmb2xkZXIga2VwdCBpbiB0aGUgc25hcHNob3QsIG92ZXJyaWRkZW4gYnkgdGhlIENPTU1PTl9GT0xERVJfTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQGRlZmF1bHQgXCJkOS1wbHVtYmluZy1jb21tb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbW9uRm9sZGVyTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEOVByb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIEdpdEh1YiBjb25maWd1cmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBHaXRIdWIgY29uZmlnIGVudGlyZWx5LlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgR2l0SHViQ29uZmlnIHdpdGggcHJvamVjdCBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnT3B0aW9ucyB8IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9ucyBmb2xkZXIuXG4gICAqIEBkZWZhdWx0IFwiZXh0ZW5zaW9uLXBhY2thZ2VzXCJcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuc2lvbnNGb2xkZXJOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlVmVyc2lvbnM/OiBQYWNrYWdlVmVyc2lvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBEOVByb2plY3QgZXh0ZW5kcyBqYXZhc2NyaXB0Lk5vZGVQcm9qZWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ2l0aHViQ29uZmlnPzogR2l0SHViQ29uZmlnO1xuICBwdWJsaWMgZXh0ZW5zaW9ucyE6IEV4dGVuc2lvbkZvbGRlcjtcbiAgcHVibGljIGV4dGVuc2lvbkZvbGRlciE6IHN0cmluZztcbiAgcHVibGljIGJ1aWxkRXh0ZW5zaW9uVGFzayE6IFRhc2s7XG4gIHB1YmxpYyBkb2NrZXJmaWxlITogRG9ja2VyZmlsZTtcbiAgcHVibGljIGRvY2tlcmlnbm9yZSE6IElnbm9yZUZpbGU7XG4gIHB1YmxpYyBkb2NrZXJDb21wb3NlRmlsZSE6IERvY2tlckNvbXBvc2U7XG4gIHB1YmxpYyBkOVNlcnZpY2UhOiBEb2NrZXJDb21wb3NlU2VydmljZTtcbiAgcHVibGljIGRhdGFiYXNlU2VydmljZSE6IERvY2tlckNvbXBvc2VTZXJ2aWNlO1xuICBwdWJsaWMgY2FjaGVTZXJ2aWNlITogRG9ja2VyQ29tcG9zZVNlcnZpY2U7XG4gIHByaXZhdGUgcGx1bWJpbmdDb25maWchOiBKc29uRmlsZTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogRDlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IGQ5VmVyc2lvbiA9IG9wdGlvbnMucGFja2FnZVZlcnNpb25zPy5kOSB8fCAnMTIuMC4xNSc7XG4gICAgY29uc3QgYXRsYXNWZXJzaW9uID0gb3B0aW9ucy5wYWNrYWdlVmVyc2lvbnM/LmF0bGFzIHx8ICcxLjMuMyc7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnBhY2thZ2VNYW5hZ2VyID8/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLk5QTSxcbiAgICAgIGdpdGh1YjogZmFsc2UsIC8vIFdlIHVzZSBvdXIgb3duIEdpdEh1YkNvbmZpZyBpbnN0ZWFkXG4gICAgICBkZXBzVXBncmFkZTogdHJ1ZSxcbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICBzY2hlZHVsZTogVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLkRBSUxZLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSxcbiAgICAgIHJlYWRtZTogb3B0aW9ucy5yZWFkbWUgPz8ge1xuICAgICAgICBjb250ZW50czogW1xuICAgICAgICAgIGAjICR7b3B0aW9ucy5uYW1lfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0EgW2Q5XShodHRwczovL2dpdGh1Yi5jb20vTGFXZWJjYXBzdWxlL2Q5KSAoRGlyZWN0dXMgOSBmb3JrKSBwcm9qZWN0IHNjYWZmb2xkZWQgd2l0aCBbYEB3YmNlL3Byb2plbi1kOWBdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0B3YmNlL3Byb2plbi1kOSkuIERldmVsb3AgbG9jYWxseSBhZ2FpbnN0IERvY2tlciBDb21wb3NlLCB0aGVuIGJ1aWxkIGEgRG9ja2VyIGltYWdlIHRvIGRlcGxveSBhbnl3aGVyZS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBMb2NhbCBkZXZlbG9wbWVudCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2BgYHNoJyxcbiAgICAgICAgICAnbnB4IHByb2plbiBpbnN0YWxsICAgICAgIyBpbnN0YWxsIGRlcGVuZGVuY2llcycsXG4gICAgICAgICAgJ25weCBwcm9qZW4gZmlyc3QtcnVuICAgICMgYm9vdCBzdGFjaywgY3JlYXRlIGFkbWluLCBzdGFydCBkOScsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ09wZW4gaHR0cDovL2xvY2FsaG9zdDo4MDU1IGFuZCBzaWduIGluIGFzIGBhZG1pbkBleGFtcGxlLmNvbWAgLyBgdG90b3RvdG9gLiBFeHRlbnNpb25zIGF1dG8tcmVsb2FkIChgRVhURU5TSU9OU19BVVRPX1JFTE9BRD10cnVlYCkuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgRGVwbG95JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnQSBgRG9ja2VyZmlsZWAgaXMgaW5jbHVkZWQuIEJ1aWxkIGFuZCBwdXNoIHRoZSBpbWFnZSBmb3IgeW91ciB0YXJnZXQgZW52aXJvbm1lbnQ6JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnYGBgc2gnLFxuICAgICAgICAgICdkb2NrZXIgYnVpbGQgLXQgPHJlZ2lzdHJ5Pi88aW1hZ2U+Ojx0YWc+IC4nLFxuICAgICAgICAgICdkb2NrZXIgcHVzaCA8cmVnaXN0cnk+LzxpbWFnZT46PHRhZz4nLFxuICAgICAgICAgICdgYGAnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdDb25maWd1cmUgdGhlIGRlcGxveWVkIGluc3RhbmNlIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGVzIChkYXRhYmFzZSwgY2FjaGUsIHNlY3JldHMpIOKAlCBzZWUgdGhlIGQ5IGRvY3MuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgQ29tbW9uIHRhc2tzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnfCBUYXNrIHwgRGVzY3JpcHRpb24gfCcsXG4gICAgICAgICAgJ3wgLS0tIHwgLS0tIHwnLFxuICAgICAgICAgICd8IGBucHggcHJvamVuIHJ1bmAgfCBTdGFydCBkOSAoYGRvY2tlciBjb21wb3NlIHVwIGQ5YCkgfCcsXG4gICAgICAgICAgJ3wgYG5weCBwcm9qZW4gYnVpbGQtZXh0ZW5zaW9ucyBbbmFtZV1gIHwgSW5zdGFsbCBhbmQgYnVpbGQgYWxsIGV4dGVuc2lvbnMgKG9yIG9ubHkgYG5hbWVgKSB8JyxcbiAgICAgICAgICAnfCBgbnB4IHByb2plbiBjcmVhdGUtYW4tYWRtaW5gIHwgQ3JlYXRlIHRoZSBkZWZhdWx0IGFkbWluIHVzZXIgfCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1NlZSBgLnByb2plbi90YXNrcy5qc29uYCBmb3IgdGhlIGZ1bGwgbGlzdC4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICcjIyBDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnRWRpdCBgLnByb2plbnJjLmpzYCBhbmQgcnVuIGBucHggcHJvamVuYCB0byByZWdlbmVyYXRlIHByb2plY3QgZmlsZXMuIExvY2FsIGVudmlyb25tZW50IG92ZXJyaWRlcyBnbyBpbiBgLmVudi5sb2NhbGAuJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnIyMgRXh0ZW5zaW9ucycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ0V4dGVuc2lvbnMgbGl2ZSB1bmRlciBgLi9wbHVnaW5zL2AuIEFkZCBuZXcgb25lcyBpbiBgLnByb2plbnJjLmpzYDonLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdgYGBqcycsXG4gICAgICAgICAgXCJpbXBvcnQgeyBEOUV4dGVuc2lvblR5cGUgfSBmcm9tICdAd2JjZS9wcm9qZW4tZDktZXh0ZW5zaW9uJztcIixcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBcInByb2plY3QuYWRkRXh0ZW5zaW9uKCdteS1ob29rJywgW0Q5RXh0ZW5zaW9uVHlwZS5IT09LXSk7XCIsXG4gICAgICAgICAgJ2BgYCcsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RoZW4gYG5weCBwcm9qZW4gJiYgbnB4IHByb2plbiBidWlsZC1leHRlbnNpb25zYC4nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgfSxcbiAgICAgIGRldkRlcHM6IFtcbiAgICAgICAgJ0B3YmNlL3Byb2plbi1kOScsXG4gICAgICAgICdAd2JjZS9wcm9qZW4tZDktZXh0ZW5zaW9uJyxcbiAgICAgICAgLi4uKG9wdGlvbnMuZGV2RGVwcyA/PyBbXSksXG4gICAgICBdLFxuICAgICAgZGVwczogW2BAd2JjZS1kOS9kaXJlY3R1czlAJHtkOVZlcnNpb259YF0sXG4gICAgfSk7XG5cbiAgICAvLyBObyB0c2NvbmZpZyBtZWFucyBubyB0c2MgLS1idWlsZCBpbiBjb21waWxlXG4gICAgdGhpcy5jb21waWxlVGFzay5yZXNldCgpO1xuXG4gICAgdGhpcy5wbHVtYmluZ0NvbmZpZyA9IG5ldyBKc29uRmlsZSh0aGlzLCAnZDktcGx1bWJpbmcuanNvbicsIHtcbiAgICAgIG9iajogeyBhdGxhc1ZlcnNpb24gfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXh0ZW5zaW9uRm9sZGVyKCk7XG4gICAgdGhpcy5hZGREb2NrZXJDb21wb3NlKCk7XG4gICAgdGhpcy5hZGRGaXJzdFJ1blRhc2soKTtcbiAgICB0aGlzLmFkZEJ1aWxkRXh0ZW5zaW9uVGFzaygpO1xuICAgIHRoaXMuYWRkUnVuVGFzaygpO1xuICAgIHRoaXMuYWRkRDlQbHVtYmluZ1Rhc2soKTtcbiAgICB0aGlzLmFkZERvY2tlcmZpbGUoKTtcbiAgICB0aGlzLmFkZENyZWF0ZUFkbWluVXNlclRhc2soKTtcblxuICAgIG5ldyBBaUluc3RydWN0aW9ucyh0aGlzLCB7XG4gICAgICBhZ2VudHM6IFtBaUFnZW50LkNMQVVERV0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5naXRodWJDb25maWcgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmdpdGh1YkNvbmZpZyA9IG5ldyBHaXRIdWJDb25maWcodGhpcywgb3B0aW9ucy5naXRodWJDb25maWcpO1xuICAgICAgdGhpcy5hZGRTYXZlQnJhbmNoV29ya2Zsb3coKTtcbiAgICB9XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJ3VwbG9hZHMnKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucygnKiovLkRTX1N0b3JlJyk7XG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoJy5lbnYubG9jYWwnKTtcblxuICAgIC8vIENyZWF0ZSBhbiBlbXB0eSAuZW52LmxvY2FsIGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHNvIERvY2tlciBkb2Vzbid0IG1vdW50IGEgZGlyZWN0b3J5XG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJy5lbnYubG9jYWwnLCB7IGNvbnRlbnRzOiAnIyBMb2NhbCBlbnZpcm9ubWVudCBvdmVycmlkZXMgZm9yIGQ5JyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXh0ZW5zaW9uRm9sZGVyKCkge1xuICAgIGNvbnN0IGZvbGRlck5hbWUgPSB0aGlzLm9wdGlvbnMuZXh0ZW5zaW9uc0ZvbGRlck5hbWUgPz8gJ3BsdWdpbnMnO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBFeHRlbnNpb25Gb2xkZXIoeyBwYXJlbnQ6IHRoaXMsIG5hbWU6IGZvbGRlck5hbWUgfSk7XG4gICAgdGhpcy5leHRlbnNpb25Gb2xkZXIgPSBmb2xkZXJOYW1lO1xuICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoJ2V4dGVuc2lvbnMvKicpO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoJ2V4dGVuc2lvbnMvdGVtcGxhdGVzLycpO1xuICB9XG5cbiAgcHVibGljIGFkZEV4dGVuc2lvbihuYW1lOiBzdHJpbmcsIGV4dGVuc2lvblR5cGVzOiBEOUV4dGVuc2lvblR5cGVbXSwgb3B0aW9ucz86IEFkZEV4dGVuc2lvbk9wdGlvbnMgKSB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5hZGQobmFtZSwgZXh0ZW5zaW9uVHlwZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZVBsdW1iaW5nKG9wdGlvbnM6IFBsdW1iaW5nT3B0aW9ucykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpKSB7XG4gICAgICB0aGlzLnBsdW1iaW5nQ29uZmlnLmFkZE92ZXJyaWRlKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmlyc3RSdW5UYXNrKCkge1xuICAgIGNvbnN0IHRhc2sgPSB0aGlzLmFkZFRhc2soJ2ZpcnN0LXJ1bicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbGl6ZSBhbmQgc3RhcnQgYSBmcmVzaCBkOSBpbnN0YW5jZScsXG4gICAgfSk7XG4gICAgY29uc3QgYWRtaW5FbWFpbCA9ICdhZG1pbkBleGFtcGxlLmNvbSc7XG4gICAgY29uc3QgdXNlck5vdEV4aXN0c0NvbmRpdGlvbiA9IGBkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBjb3VudCgqKSBGUk9NIGRpcmVjdHVzX3VzZXJzIFdIRVJFIGVtYWlsID0gJyR7YWRtaW5FbWFpbH0nXCIgfCBncmVwIC1xICdeMCQnYDtcbiAgICBjb25zdCBlbXB0eURhdGFiYXNlQ29uZGl0aW9uID0gJ2RvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9uYW1lIExJS0UgXFwnZGlyZWN0dXNfJVxcJ1wiIHwgZ3JlcCAtcSBcXCdeMCRcXCcnO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgLWQgLS13YWl0IGRhdGFiYXNlIGNhY2hlJyk7XG4gICAgdGFzay5leGVjKCducHggZDktcGx1bWJpbmcgZmlyc3QtaW1wb3J0IC0taG9zdCBsb2NhbGhvc3QgLS11c2VyIGQ5IC0tcGFzc3dvcmQgZDkgLS1kYXRhYmFzZSBkOScsIHtcbiAgICAgIGNvbmRpdGlvbjogJ3Rlc3QgLWQgLi9zcWwnLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIGJvb3RzdHJhcCcsIHtcbiAgICAgIGNvbmRpdGlvbjogYHRlc3QgISAtZCAuL3NxbCAmJiAke2VtcHR5RGF0YWJhc2VDb25kaXRpb259YCxcbiAgICB9KTtcbiAgICB0YXNrLmV4ZWMoYEFETUlOX1JPTEVfSUQ9JChkb2NrZXIgY29tcG9zZSBleGVjIGRhdGFiYXNlIHBzcWwgLVUgZDkgLWQgZDkgLXRBYyBcIlNFTEVDVCBpZCBGUk9NIGRpcmVjdHVzX3JvbGVzIFdIRVJFIGFkbWluX2FjY2VzcyA9IHRydWUgTElNSVQgMVwiKSAmJiBkb2NrZXIgY29tcG9zZSBydW4gLS1ybSBkOSBucHggZGlyZWN0dXMgdXNlcnMgY3JlYXRlIC0tZW1haWwgJHthZG1pbkVtYWlsfSAtLXBhc3N3b3JkIHRvdG90b3RvIC0tcm9sZSBcIiRBRE1JTl9ST0xFX0lEXCJgLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBoYXMgYmVlbiBjcmVhdGVkIHdpdGggcGFzc3dvcmQgdG90b3RvdG9gLCB7XG4gICAgICBjb25kaXRpb246IHVzZXJOb3RFeGlzdHNDb25kaXRpb24sXG4gICAgfSk7XG4gICAgdGFzay5zYXkoYFVzZXIgJHthZG1pbkVtYWlsfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgY3JlYXRpb25gLCB7XG4gICAgICBjb25kaXRpb246IGAhICR7dXNlck5vdEV4aXN0c0NvbmRpdGlvbn1gLFxuICAgIH0pO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgZDknKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQ3JlYXRlQWRtaW5Vc2VyVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdjcmVhdGUtYW4tYWRtaW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhbiBhZG1pbiB1c2VyJyxcbiAgICB9KTtcbiAgICBjb25zdCBhZG1pbkVtYWlsID0gJ2FkbWluQGV4YW1wbGUuY29tJztcbiAgICBjb25zdCB1c2VyTm90RXhpc3RzQ29uZGl0aW9uID0gYGRvY2tlciBjb21wb3NlIGV4ZWMgZGF0YWJhc2UgcHNxbCAtVSBkOSAtZCBkOSAtdEFjIFwiU0VMRUNUIGNvdW50KCopIEZST00gZGlyZWN0dXNfdXNlcnMgV0hFUkUgZW1haWwgPSAnJHthZG1pbkVtYWlsfSdcIiB8IGdyZXAgLXEgJ14wJCdgO1xuICAgIHRhc2suZXhlYygnZG9ja2VyIGNvbXBvc2UgdXAgLWQgLS13YWl0IGRhdGFiYXNlIGNhY2hlJyk7XG4gICAgdGFzay5leGVjKGBBRE1JTl9ST0xFX0lEPSQoZG9ja2VyIGNvbXBvc2UgZXhlYyBkYXRhYmFzZSBwc3FsIC1VIGQ5IC1kIGQ5IC10QWMgXCJTRUxFQ1QgaWQgRlJPTSBkaXJlY3R1c19yb2xlcyBXSEVSRSBhZG1pbl9hY2Nlc3MgPSB0cnVlIExJTUlUIDFcIikgJiYgZG9ja2VyIGNvbXBvc2UgcnVuIC0tcm0gZDkgbnB4IGRpcmVjdHVzIHVzZXJzIGNyZWF0ZSAtLWVtYWlsICR7YWRtaW5FbWFpbH0gLS1wYXNzd29yZCB0b3RvdG90byAtLXJvbGUgXCIkQURNSU5fUk9MRV9JRFwiYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHBhc3N3b3JkIHRvdG90b3RvYCwge1xuICAgICAgY29uZGl0aW9uOiB1c2VyTm90RXhpc3RzQ29uZGl0aW9uLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KGBVc2VyICR7YWRtaW5FbWFpbH0gYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uYCwge1xuICAgICAgY29uZGl0aW9uOiBgISAke3VzZXJOb3RFeGlzdHNDb25kaXRpb259YCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUnVuVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdydW4nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3N0YXJ0IHRoZSBkOSBpbnN0YW5jZScsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdkb2NrZXIgY29tcG9zZSB1cCBkOScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREOVBsdW1iaW5nVGFzaygpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy5hZGRUYXNrKCdkOS1wbHVtYmluZycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRoZSBkOS1wbHVtYmluZyBDTEkgKHNhdmUsIGFwcGx5LXNjaGVtYSwgZmlyc3QtaW1wb3J0Li4uKS4gVXNlIC0taGVscCB0byBsaXN0IGFsbCBzdWJjb21tYW5kcy4nLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KCdUaXA6IHlvdSBjYW4gYWxzbyBjYWxsIGl0IGRpcmVjdGx5IHdpdGggYG5weCBkOS1wbHVtYmluZyA8Y29tbWFuZD5gJyk7XG4gICAgdGFzay5leGVjKCducHggZDktcGx1bWJpbmcgXCIkQFwiJywgeyByZWNlaXZlQXJnczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQnVpbGRFeHRlbnNpb25UYXNrKCkge1xuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrID0gdGhpcy5hZGRUYXNrKCdidWlsZC1leHRlbnNpb25zJywge1xuICAgICAgZGVzY3JpcHRpb246ICdCdWlsZCB0aGUgZDkgZXh0ZW5zaW9ucycsXG4gICAgfSk7XG4gICAgdGhpcy5idWlsZEV4dGVuc2lvblRhc2suZXhlYyhgY2QgJHt0aGlzLmV4dGVuc2lvbkZvbGRlcn0gJiYgcG5wbSBpbnN0YWxsYCk7XG4gICAgLy8gcHJvamVuIHJlcGxhY2VzIFwiJEBcIiB3aXRoIHRoZSBxdW90ZWQgdGFzayBhcmdzOyBgc2V0IC0tYCB0dXJucyB0aGVtIGJhY2sgaW50byAkMVxuICAgIHRoaXMuYnVpbGRFeHRlbnNpb25UYXNrLmV4ZWMoXG4gICAgICBgY2QgJHt0aGlzLmV4dGVuc2lvbkZvbGRlcn0gJiYgc2V0IC0tIFwiJEBcIiAmJiBpZiBbIC1uIFwiJDFcIiBdOyB0aGVuIHBucG0gLS1yZWN1cnNpdmUgLS1maWx0ZXIgXCIkMS4uLlwiIHJ1biBidWlsZDsgZWxzZSBwbnBtIHJ1biAtLXJlY3Vyc2l2ZSBidWlsZDsgZmlgLFxuICAgICAgeyByZWNlaXZlQXJnczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuXG4gIHByaXZhdGUgYWRkRG9ja2VyQ29tcG9zZSgpIHtcbiAgICBjb25zdCBkYyA9IG5ldyBEb2NrZXJDb21wb3NlKHRoaXMpO1xuXG4gICAgdGhpcy5kYXRhYmFzZVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdkYXRhYmFzZScsIHtcbiAgICAgIGltYWdlOiAncG9zdGdpcy9wb3N0Z2lzOjEzLW1hc3RlcicsXG4gICAgICB2b2x1bWVzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UubmFtZWRWb2x1bWUoJ3BnZGF0YScsICcvdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnKSxcbiAgICAgIF0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDU0MzIsIDU0MzIpLFxuICAgICAgXSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFBPU1RHUkVTX1VTRVI6ICdkOScsXG4gICAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAnZDknLFxuICAgICAgICBQT1NUR1JFU19EQjogJ2Q5JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNhY2hlU2VydmljZSA9IGRjLmFkZFNlcnZpY2UoJ2NhY2hlJywge1xuICAgICAgaW1hZ2U6ICdyZWRpczo2JyxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5uYW1lZFZvbHVtZSgncmVkaXNfc3RvcmFnZScsICcvZGF0YScpLFxuICAgICAgXSxcbiAgICAgIHBvcnRzOiBbXG4gICAgICAgIERvY2tlckNvbXBvc2UucG9ydE1hcHBpbmcoNjM3OSwgNjM3OSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kOVNlcnZpY2UgPSBkYy5hZGRTZXJ2aWNlKCdkOScsIHtcbiAgICAgIGltYWdlQnVpbGQ6IHsgY29udGV4dDogJy4nIH0sXG4gICAgICBwb3J0czogW1xuICAgICAgICBEb2NrZXJDb21wb3NlLnBvcnRNYXBwaW5nKDgwNTUsIDgwNTUpLFxuICAgICAgXSxcbiAgICAgIHZvbHVtZXM6IFtcbiAgICAgICAgRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuL3VwbG9hZHMnLCAnL2FwcC91cGxvYWRzJyksXG4gICAgICAgIERvY2tlckNvbXBvc2UuYmluZFZvbHVtZSgnLi9leHRlbnNpb25zJywgJy9hcHAvZXh0ZW5zaW9ucycpLFxuICAgICAgXSxcbiAgICAgIC8vIGRlcGVuZHNPbiBpcyBzZXQgdmlhIGFkZE92ZXJyaWRlIGJlbG93IHdpdGggY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEtFWTogJ3NvbWUtcmFuZG9tLWtleScsXG4gICAgICAgIFNFQ1JFVDogJ2Fub3RoZXItcmFuZG9tLWtleScsXG4gICAgICAgIENPTkZJR19QQVRIOiAnLmVudi5sb2NhbCcsXG4gICAgICAgIERCX0NMSUVOVDogJ3BnJyxcbiAgICAgICAgREJfSE9TVDogJ2RhdGFiYXNlJyxcbiAgICAgICAgREJfUE9SVDogJzU0MzInLFxuICAgICAgICBEQl9EQVRBQkFTRTogJ2Q5JyxcbiAgICAgICAgREJfVVNFUjogJ2Q5JyxcbiAgICAgICAgREJfUEFTU1dPUkQ6ICdkOScsXG4gICAgICAgIENBQ0hFX0VOQUJMRUQ6ICdmYWxzZScsXG4gICAgICAgIENBQ0hFX1NUT1JFOiAncmVkaXMnLFxuICAgICAgICBDQUNIRV9SRURJU19IT1NUOiAnY2FjaGUnLFxuICAgICAgICBNRVNTRU5HRVJfU1RPUkU6ICdyZWRpcycsXG4gICAgICAgIE1FU1NFTkdFUl9SRURJUzogJ3JlZGlzOi8vY2FjaGU6NjM3OScsXG4gICAgICAgIENBQ0hFX1NUQVRVU19IRUFERVI6ICdjYWNoZS1oaXQnLFxuICAgICAgICBDT1JTX0VOQUJMRUQ6ICd0cnVlJyxcbiAgICAgICAgQ09SU19PUklHSU46ICd0cnVlJyxcbiAgICAgICAgTE9HX0xFVkVMOiAnaW5mbycsXG4gICAgICAgIEFETUlOX0VNQUlMOiAnYWRtaW5AZXhhbXBsZS5jb20nLFxuICAgICAgICBBRE1JTl9QQVNTV09SRDogJ3RvdG90b3RvJyxcbiAgICAgICAgRVhURU5TSU9OU19BVVRPX1JFTE9BRDogJ3RydWUnLFxuICAgICAgICBWQUxJREFURV9FTlRJVElFU19UT0tFTlNfQVBJX0tFWTogJ3RvdG8nLFxuICAgICAgICBBV1NfS01TX0tFWV9JRDogJ3R1dHUnLFxuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFsnc2gnLCAnLWMnLCAnbnB4IGRpcmVjdHVzIHN0YXJ0J10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmQ5U2VydmljZS5hZGRWb2x1bWUoRG9ja2VyQ29tcG9zZS5iaW5kVm9sdW1lKCcuLy5lbnYubG9jYWwnLCAnL2FwcC8uZW52LmxvY2FsJykpO1xuXG4gICAgLy8gQWRkIGhlYWx0aGNoZWNrIGZvciBkYXRhYmFzZSAobm90IG5hdGl2ZWx5IHN1cHBvcnRlZCBieSBwcm9qZW4gRG9ja2VyQ29tcG9zZSlcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5kYXRhYmFzZS5oZWFsdGhjaGVjaycsIHtcbiAgICAgIHRlc3Q6IFsnQ01EJywgJ3BnX2lzcmVhZHknLCAnLS1ob3N0PWxvY2FsaG9zdCcsICctLXVzZXJuYW1lPWQ5J10sXG4gICAgICBpbnRlcnZhbDogJzEwcycsXG4gICAgICB0aW1lb3V0OiAnNXMnLFxuICAgICAgcmV0cmllczogNSxcbiAgICAgIHN0YXJ0X2ludGVydmFsOiAnNXMnLFxuICAgICAgc3RhcnRfcGVyaW9kOiAnMzBzJyxcbiAgICB9KTtcblxuICAgIC8vIEFkZCBoZWFsdGhjaGVjayBmb3IgY2FjaGVcbiAgICBkYy5maWxlLmFkZE92ZXJyaWRlKCdzZXJ2aWNlcy5jYWNoZS5oZWFsdGhjaGVjaycsIHtcbiAgICAgIHRlc3Q6IFsnQ01ELVNIRUxMJywgJ1sgJChyZWRpcy1jbGkgcGluZykgPSBcXCdQT05HXFwnIF0nXSxcbiAgICAgIGludGVydmFsOiAnMTBzJyxcbiAgICAgIHRpbWVvdXQ6ICc1cycsXG4gICAgICByZXRyaWVzOiA1LFxuICAgICAgc3RhcnRfaW50ZXJ2YWw6ICc1cycsXG4gICAgICBzdGFydF9wZXJpb2Q6ICczMHMnLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgZGVwZW5kc19vbiB0byB1c2UgY29uZGl0aW9uIHN5bnRheFxuICAgIGRjLmZpbGUuYWRkT3ZlcnJpZGUoJ3NlcnZpY2VzLmQ5LmRlcGVuZHNfb24nLCB7XG4gICAgICBjYWNoZTogeyBjb25kaXRpb246ICdzZXJ2aWNlX2hlYWx0aHknIH0sXG4gICAgICBkYXRhYmFzZTogeyBjb25kaXRpb246ICdzZXJ2aWNlX2hlYWx0aHknIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY2tlckNvbXBvc2VGaWxlID0gZGM7XG5cbiAgICByZXR1cm4gZGM7XG4gIH1cblxuICBwcml2YXRlIGFkZFNhdmVCcmFuY2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuZ2l0aHViQ29uZmlnIS5hZGRXb3JrZmxvdygnc2F2ZS1icmFuY2gnKTtcbiAgICB3b3JrZmxvdy5vbih7IHB1c2g6IHsgYnJhbmNoZXM6IFsnKi1zYXZlJ10gfSB9KTtcbiAgICB3b3JrZmxvdy5hZGRKb2IoJ2NyZWF0ZS1wcicsIHtcbiAgICAgIG5hbWU6ICdDcmVhdGUgUHVsbCBSZXF1ZXN0JyxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgeyBuYW1lOiAnQ2hlY2tvdXQnLCB1c2VzOiAnYWN0aW9ucy9jaGVja291dEB2NCcgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDcmVhdGUgUHVsbCBSZXF1ZXN0JyxcbiAgICAgICAgICBydW46ICdnaCBwciBjcmVhdGUgLS10aXRsZSBcIlNhdmU6ICR7R0lUSFVCX1JFRl9OQU1FJS1zYXZlfVwiIC0tYm9keSBcIkF1dG8tZ2VuZXJhdGVkIFBSIGZyb20gYnJhbmNoIFxcXFxgJHtHSVRIVUJfUkVGX05BTUUlLXNhdmV9XFxcXGBcIiAtLWJhc2UgXCIke0dJVEhVQl9SRUZfTkFNRSUtc2F2ZX1cIiB8fCBlY2hvIFwiUFIgYWxyZWFkeSBleGlzdHNcIicsXG4gICAgICAgICAgZW52OiB7IEdIX1RPS0VOOiAnJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19JyB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9ja2VyZmlsZSgpIHtcbiAgICB0aGlzLmRvY2tlcmZpbGUgPSBuZXcgRG9ja2VyZmlsZSh0aGlzKVxuICAgICAgLy8gYnVpbGRlciBzdGFnZTogZGV2IGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkIHNvIGBucHggcHJvamVuYCBydW5zIHRoZSB2ZXJzaW9uIGxvY2tlZCBpbiBwYWNrYWdlLWxvY2suanNvblxuICAgICAgLmZyb21Bcygnbm9kZScsICcyMi1ib29rd29ybS1zbGltJywgJ2J1aWxkZXInKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItdXBkYXRlLW5wbScsICdVcGRhdGUgbnBtIHRvIGZpeCBkZXBlbmRlbmNpZXMnKVxuICAgICAgLnJ1bignbnBtIGluc3RhbGwgLWcgbnBtQDExLjguMCcpXG4gICAgICAuc3RlcCgnYnVpbGRlci1pbnN0YWxsLXBucG0nLCAnaW5zdGFsbCBwbnBtJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIHBucG1AMTAuMzMuMCcpXG4gICAgICAuc3RlcCgnYnVpbGRlci1jb3B5LXBhY2thZ2UnLCAnQ29weSBwYWNrYWdlLmpzb24gYW5kIHBhY2thZ2UtbG9jay5qc29uIGZpcnN0IHRvIGxldmVyYWdlIERvY2tlciBsYXllciBjYWNoaW5nJylcbiAgICAgIC5jb3B5KCdwYWNrYWdlKi5qc29uJywgJy9hcHAvJylcbiAgICAgIC5zdGVwKCdidWlsZGVyLXdvcmtkaXInLCAnU2V0IHdvcmtpbmcgZGlyZWN0b3J5JylcbiAgICAgIC53b3JrZGlyKCcvYXBwJylcbiAgICAgIC5zdGVwKCdidWlsZGVyLWluc3RhbGwtZGVwcycsICdJbnN0YWxsIGRlcGVuZGVuY2llcyAtIHdpdGggZGV2IGRlcGVuZGVuY2llcywgZm9yIHByb2plbicpXG4gICAgICAucnVuKCducG0gY2knKVxuICAgICAgLnN0ZXAoJ2J1aWxkZXItY29weS1zb3VyY2UnLCAnQ29weSB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gY29kZScpXG4gICAgICAuY29weSgnLicsICcuJylcbiAgICAgIC5zdGVwKCdidWlsZC1leHRlbnNpb24nLCAnYnVpbGQgZXh0ZW5zaW9ucycpXG4gICAgICAucnVuKCducHggcHJvamVuIGJ1aWxkLWV4dGVuc2lvbnMnKVxuICAgICAgLy8gZmluYWwgc3RhZ2VcbiAgICAgIC5mcm9tKCdub2RlJywgJzIyLWJvb2t3b3JtLXNsaW0nKVxuICAgICAgLnN0ZXAoJ3VwZGF0ZS1ucG0nLCAnVXBkYXRlIG5wbSB0byBmaXggZGVwZW5kZW5jaWVzJylcbiAgICAgIC5ydW4oJ25wbSBpbnN0YWxsIC1nIG5wbUAxMS44LjAnKVxuICAgICAgLnN0ZXAoJ2NvcHktcGFja2FnZScsICdDb3B5IHBhY2thZ2UuanNvbiBhbmQgcGFja2FnZS1sb2NrLmpzb24gZmlyc3QgdG8gbGV2ZXJhZ2UgRG9ja2VyIGxheWVyIGNhY2hpbmcnKVxuICAgICAgLmNvcHkoJ3BhY2thZ2UqLmpzb24nLCAnL2FwcC8nKVxuICAgICAgLnN0ZXAoJ3dvcmtkaXInLCAnU2V0IHdvcmtpbmcgZGlyZWN0b3J5JylcbiAgICAgIC53b3JrZGlyKCcvYXBwJylcbiAgICAgIC5zdGVwKCdpbnN0YWxsLWRlcHMnLCAnSW5zdGFsbCBkZXBlbmRlbmNpZXMgLSB3aXRob3V0IGRldiBkZXBlbmRlbmNpZXMnKVxuICAgICAgLnJ1bignTk9ERV9FTlY9cHJvZHVjdGlvbiBucG0gaW5zdGFsbCcpXG4gICAgICAuc3RlcCgnY2xlYW51cCcsICdDbGVhbmluZyBiZW5jaG1hcmtzIGZvbGRlciBpbiB0ZWRpb3VzIG1vZHVsZSBmb3Igc2VjdXJpdHknKVxuICAgICAgLnJ1bigncm0gLXJmIG5vZGVfbW9kdWxlcy90ZWRpb3VzL2JlbmNobWFya3MnKVxuICAgICAgLnN0ZXAoJ2NvcHktc291cmNlJywgJ0NvcHkgdGhlIHJlc3Qgb2YgdGhlIGFwcGxpY2F0aW9uIGNvZGUnKVxuICAgICAgLmNvcHkoJy4nLCAnLicpXG4gICAgICAuc3RlcCgnY29weS1leHRlbnNpb25zJywgJ0NvcHkgdGhlIGJ1aWx0IGV4dGVuc2lvbnMgZnJvbSB0aGUgYnVpbGRlciBzdGFnZScpXG4gICAgICAuY29weSgnL2FwcC9leHRlbnNpb25zJywgJy4vZXh0ZW5zaW9ucycsIHsgZnJvbTogJ2J1aWxkZXInIH0pXG4gICAgICAuc3RlcCgnc3RhcnQnLCAnU3RhcnQgZDkgc2VydmVyJylcbiAgICAgIC5jbWRFeGVjKFsnbnB4JywgJ2RpcmVjdHVzJywgJ3N0YXJ0J10pO1xuICAgIHRoaXMuZG9ja2VyaWdub3JlID0gbmV3IElnbm9yZUZpbGUodGhpcywgJy5kb2NrZXJpZ25vcmUnLCB7IGlnbm9yZVBhdHRlcm5zOiBbJyoqL25vZGVfbW9kdWxlcycsICcuZ2l0J10gfSk7XG4gICAgcmV0dXJuIHRoaXMuZG9ja2VyZmlsZTtcbiAgfVxuXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3RPcHRpb25zfSBpbnN0ZWFkLiBUaGUgcGFja2FnZSB3YXMgcmVuYW1lZCB0byBgQHdiY2UvcHJvamVuLWQ5YCB0byByZWZsZWN0IHRoYXQgaXQgdGFyZ2V0cyB0aGUgZDkgZm9yaywgbm90IHVwc3RyZWFtIERpcmVjdHVzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdHVzUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBEOVByb2plY3RPcHRpb25zIHt9XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBEOVByb2plY3R9IGluc3RlYWQuIFRoZSBwYWNrYWdlIHdhcyByZW5hbWVkIHRvIGBAd2JjZS9wcm9qZW4tZDlgIHRvIHJlZmxlY3QgdGhhdCBpdCB0YXJnZXRzIHRoZSBkOSBmb3JrLCBub3QgdXBzdHJlYW0gRGlyZWN0dXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3R1c1Byb2plY3QgZXh0ZW5kcyBEOVByb2plY3Qge31cbiJdfQ==
|