projen-modules 3.2.0 → 3.2.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 +117 -25
- package/API.md +56 -0
- package/README.md +6 -2
- package/lib/components/github/mergify.d.ts +17 -2
- package/lib/components/github/mergify.js +78 -20
- package/lib/components/readme/elements/section.js +1 -1
- package/lib/components/readme/index.js +1 -1
- package/lib/projects/cdk-ts/cdk-typescript-app-options.d.ts +5 -0
- package/lib/projects/cdk-ts/cdk-typescript-app-options.js +1 -1
- package/lib/projects/cdk-ts/index.js +4 -2
- package/lib/projects/jsii/index.js +4 -2
- package/lib/projects/jsii/jsii-project-options.d.ts +5 -0
- package/lib/projects/jsii/jsii-project-options.js +1 -1
- package/lib/projects/npm/index.js +4 -2
- package/lib/projects/npm/npm-package-options.d.ts +5 -0
- package/lib/projects/npm/npm-package-options.js +1 -1
- package/lib/projects/python/index.js +4 -3
- package/lib/projects/python/python-package-options.d.ts +5 -0
- package/lib/projects/python/python-package-options.js +1 -1
- package/package.json +1 -1
|
@@ -1,34 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoMergeOptions = autoMergeOptions;
|
|
3
4
|
exports.configureMergify = configureMergify;
|
|
4
5
|
const codeql_1 = require("./codeql");
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Options for projen's auto merge, which requires its approvals from every
|
|
8
|
+
* author, so with trusted authors `configureMergify` requires them instead
|
|
9
|
+
*/
|
|
10
|
+
function autoMergeOptions(options) {
|
|
11
|
+
if (!options.trustedAuthors?.length) {
|
|
12
|
+
return options.autoMergeOptions;
|
|
13
|
+
}
|
|
14
|
+
return { ...options.autoMergeOptions, approvedReviews: 0 };
|
|
15
|
+
}
|
|
16
|
+
function formatList(values) {
|
|
17
|
+
const quoted = values.map((value) => '`' + value + '`');
|
|
18
|
+
return quoted.length > 1
|
|
19
|
+
? `${quoted.slice(0, -1).join(', ')} or ${quoted[quoted.length - 1]}`
|
|
20
|
+
: quoted.join('');
|
|
21
|
+
}
|
|
22
|
+
function queueDescription(config) {
|
|
23
|
+
if (!config.approvedReviews) {
|
|
24
|
+
return "Once a pull request's checks pass";
|
|
25
|
+
}
|
|
26
|
+
if (config.trustedAuthors.length) {
|
|
27
|
+
return `Once a pull request is approved, or is opened by ${formatList(config.trustedAuthors)}, and its checks pass`;
|
|
28
|
+
}
|
|
29
|
+
return 'Once a pull request is approved and its checks pass';
|
|
30
|
+
}
|
|
31
|
+
function approvalGuidance(config) {
|
|
32
|
+
if (!config.approvedReviews) {
|
|
33
|
+
return `
|
|
34
|
+
|
|
35
|
+
**Warning:** no approvals are required, so the queue merges any pull request whose checks pass, including one from a fork that changes the workflows producing those checks. Set \`autoMergeOptions.approvedReviews\` to at least 1, and use \`trustedAuthors\` for maintainers who cannot approve their own pull requests.`;
|
|
36
|
+
}
|
|
37
|
+
if (!config.trustedAuthors.length) {
|
|
38
|
+
return `
|
|
39
|
+
|
|
40
|
+
A repository with a single maintainer, who cannot approve their own pull requests, should list them in \`trustedAuthors\` in \`.projenrc.ts\`. Their pull requests are then merged without an approval, while everyone else's still need one.`;
|
|
41
|
+
}
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
function githubConfigurationSection(config) {
|
|
45
|
+
const statusChecks = config.requiredChecks.length
|
|
7
46
|
? 'the checks that `.mergify.yml` waits for: `' +
|
|
8
|
-
requiredChecks.join('`, `') +
|
|
47
|
+
config.requiredChecks.join('`, `') +
|
|
9
48
|
'`'
|
|
10
49
|
: 'any CI checks added to the project (none are configured yet), keeping them in sync with `.mergify.yml`';
|
|
11
|
-
const approvals =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
: '';
|
|
20
|
-
const codeScanningSettings = codeScanning
|
|
50
|
+
const approvals = config.trustedAuthors.length
|
|
51
|
+
? '0 required approvals, because Mergify requires approvals itself for authors other than ' +
|
|
52
|
+
formatList(config.trustedAuthors) +
|
|
53
|
+
' and is exempt from this rule'
|
|
54
|
+
: config.approvedReviews === 1
|
|
55
|
+
? '1 required approval'
|
|
56
|
+
: `${config.approvedReviews} required approvals`;
|
|
57
|
+
const codeScanningSettings = config.codeScanning
|
|
21
58
|
? `
|
|
22
59
|
|
|
23
60
|
### Code scanning
|
|
24
61
|
|
|
25
62
|
CodeQL runs from \`.github/workflows/codeql.yml\`, which is managed by projen. In **Settings → Advanced Security**, leave CodeQL **Default setup** off, because it cannot run alongside this workflow. Under **Protection rules**, keep the **Check run failure threshold** at **High or higher** for security alerts and **Errors** for other alerts, as this decides whether the \`${codeql_1.CodeQl.CHECK_NAME}\` check fails. Private repositories also need GitHub Code Security enabled there for code scanning results to be uploaded.`
|
|
26
63
|
: '';
|
|
27
|
-
const codeScanningRule = codeScanning
|
|
64
|
+
const codeScanningRule = config.codeScanning
|
|
28
65
|
? `
|
|
29
66
|
* **Require code scanning results**, with the tool **CodeQL**, security alerts set to **High or higher** and alerts set to **Errors**. Mergify is exempt from this rule, so \`.mergify.yml\` also waits for the \`${codeql_1.CodeQl.CHECK_NAME}\` check instead.`
|
|
30
67
|
: '';
|
|
31
|
-
return `All pull requests are merged by the [Mergify](https://mergify.com) merge queue, configured in \`.mergify.yml\`. ${
|
|
68
|
+
return `All pull requests are merged by the [Mergify](https://mergify.com) merge queue, configured in \`.mergify.yml\`. ${queueDescription(config)}, Mergify queues it, brings it up to date with the default branch, waits for the checks again and squash merges it. Draft pull requests and those labelled \`do-not-merge\` are not merged.
|
|
32
69
|
|
|
33
70
|
The repository must be configured as below so that nothing can be merged without going through the queue.
|
|
34
71
|
|
|
@@ -41,7 +78,11 @@ Install the [Mergify GitHub App](https://github.com/apps/mergify) and give it ac
|
|
|
41
78
|
In **Settings → General → Pull Requests**:
|
|
42
79
|
* Allow squash merging only (untick merge commits and rebase merging), matching the queue's merge method.
|
|
43
80
|
* Untick **Allow auto-merge**, because GitHub's own auto-merge merges outside the queue.
|
|
44
|
-
* Tick **Automatically delete head branches
|
|
81
|
+
* Tick **Automatically delete head branches**.
|
|
82
|
+
|
|
83
|
+
### Actions settings
|
|
84
|
+
|
|
85
|
+
In **Settings → Actions → General**, set **Approval for running fork pull request workflows from contributors** to **Require approval for all external contributors**. A pull request from a fork runs its own copy of the workflows, so it can change how the required checks pass.${codeScanningSettings}
|
|
45
86
|
|
|
46
87
|
### Branch ruleset
|
|
47
88
|
|
|
@@ -49,12 +90,12 @@ In **Settings → Rules → Rulesets**, create a branch ruleset with enforcement
|
|
|
49
90
|
* **Bypass list**: the **Mergify** app only, in **Exempt** mode. Do not add admins or other roles, as anyone on this list can merge without the queue.
|
|
50
91
|
* **Restrict updates**: only bypass actors can update the branch, so pull requests cannot be merged from the GitHub UI or CLI and commits cannot be pushed directly.
|
|
51
92
|
* **Restrict deletions** and **Block force pushes**.
|
|
52
|
-
* **Require a pull request before merging**, with ${approvals}.
|
|
93
|
+
* **Require a pull request before merging**, with ${approvals}. Tick **Dismiss stale pull request approvals when new commits are pushed**, so that commits pushed after an approval need approving again before the queue merges them.
|
|
53
94
|
* **Require status checks to pass**, listing ${statusChecks}. Leave **Require branches to be up to date before merging** unticked, as the queue already updates and retests each pull request.${codeScanningRule}
|
|
54
95
|
|
|
55
96
|
Do not enable GitHub's own **Require merge queue** rule, as it competes with Mergify.
|
|
56
97
|
|
|
57
|
-
If the queue is unavailable and a change has to be merged, add yourself to the bypass list temporarily and remove yourself afterwards.${
|
|
98
|
+
If the queue is unavailable and a change has to be merged, add yourself to the bypass list temporarily and remove yourself afterwards.${approvalGuidance(config)}`;
|
|
58
99
|
}
|
|
59
100
|
function configureMergify(project, options = {}) {
|
|
60
101
|
const mergify = project.github?.mergify;
|
|
@@ -63,6 +104,18 @@ function configureMergify(project, options = {}) {
|
|
|
63
104
|
}
|
|
64
105
|
const buildJobIds = project.buildWorkflow?.buildJobIds ?? [];
|
|
65
106
|
project.autoMerge?.addConditions('-draft');
|
|
107
|
+
const approvedReviews = options.approvedReviews ?? 1;
|
|
108
|
+
const trustedAuthors = options.trustedAuthors ?? [];
|
|
109
|
+
if (trustedAuthors.length && approvedReviews) {
|
|
110
|
+
const approvedOrTrusted = {
|
|
111
|
+
or: [
|
|
112
|
+
`#approved-reviews-by>=${approvedReviews}`,
|
|
113
|
+
...trustedAuthors.map((author) => `author=${author}`),
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
// projen types auto merge conditions as strings, but mergify accepts operators too
|
|
117
|
+
project.autoMerge?.addConditions(approvedOrTrusted);
|
|
118
|
+
}
|
|
66
119
|
// Mergify is exempt from the ruleset's code scanning rule, so the queue enforces it instead
|
|
67
120
|
const codeScanning = project.components.some((c) => c instanceof codeql_1.CodeQl);
|
|
68
121
|
if (codeScanning) {
|
|
@@ -91,6 +144,11 @@ function configureMergify(project, options = {}) {
|
|
|
91
144
|
},
|
|
92
145
|
});
|
|
93
146
|
project.tryFindObjectFile('.mergify.yml')?.addOverride('merge_protections_settings.reporting_method', options.reportingMethod ?? 'deployments');
|
|
94
|
-
project.readme?.addSection('GitHub Configuration', githubConfigurationSection(
|
|
147
|
+
project.readme?.addSection('GitHub Configuration', githubConfigurationSection({
|
|
148
|
+
approvedReviews,
|
|
149
|
+
codeScanning,
|
|
150
|
+
requiredChecks: buildJobIds,
|
|
151
|
+
trustedAuthors,
|
|
152
|
+
}));
|
|
95
153
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2lmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2dpdGh1Yi9tZXJnaWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkZBLDRDQXdEQztBQWxKRCxxQ0FBa0M7QUErQmxDLFNBQVMsMEJBQTBCLENBQ2pDLGNBQTZCLEVBQzdCLGVBQXVCLEVBQ3ZCLFlBQXFCO0lBRXJCLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNO1FBQ3hDLENBQUMsQ0FBQyw2Q0FBNkM7WUFDN0MsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsR0FBRztRQUNMLENBQUMsQ0FBQyx3R0FBd0csQ0FBQztJQUM3RyxNQUFNLFNBQVMsR0FBRyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLHFCQUFxQixDQUFDO0lBQzFHLE1BQU0sTUFBTSxHQUFHLGVBQWU7UUFDNUIsQ0FBQyxDQUFDLHFEQUFxRDtRQUN2RCxDQUFDLENBQUMsb0NBQW9DLENBQUM7SUFDekMsTUFBTSxjQUFjLEdBQUcsZUFBZTtRQUNwQyxDQUFDLENBQUM7OzBRQUVvUTtRQUN0USxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsTUFBTSxvQkFBb0IsR0FBRyxZQUFZO1FBQ3ZDLENBQUMsQ0FBQzs7Ozt1WEFJaVgsZUFBTSxDQUFDLFVBQVUsNkhBQTZIO1FBQ2pnQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZO1FBQ25DLENBQUMsQ0FBQztvTkFDOE0sZUFBTSxDQUFDLFVBQVUsbUJBQW1CO1FBQ3BQLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxPQUFPLG1IQUFtSCxNQUFNOzs7Ozs7Ozs7Ozs7O2dEQWFsRixvQkFBb0I7Ozs7Ozs7O29EQVFoQixTQUFTOytDQUNkLFlBQVkscUlBQXFJLGdCQUFnQjs7Ozt3SUFJeEUsY0FBYyxFQUFFLENBQUM7QUFDekosQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUM5QixPQUF1QixFQUN2QixVQUEwQixFQUFFO0lBRTVCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO0lBRTdELE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTNDLDRGQUE0RjtJQUM1RixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQU0sQ0FBQyxDQUFDO0lBQ3pFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsa0JBQWtCLGVBQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2QsSUFBSSxFQUFFLHFEQUFxRDtRQUMzRCxVQUFVLEVBQUU7WUFDVixVQUFVLE9BQU8sQ0FBQyxhQUFhLElBQUksbUJBQW1CLEVBQUU7WUFDeEQsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7U0FDbkQ7UUFDRCxPQUFPLEVBQUU7WUFDUCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLHdDQUF3QzthQUNsRDtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNkLElBQUksRUFBRSw0QkFBNEI7UUFDbEMsVUFBVSxFQUFFLENBQUMsb0JBQW9CLENBQUM7UUFDbEMsT0FBTyxFQUFFO1lBQ1AsTUFBTSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQ25EO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxDQUNwRCw2Q0FBNkMsRUFDN0MsT0FBTyxDQUFDLGVBQWUsSUFBSSxhQUFhLENBQ3pDLENBQUM7SUFFRixPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FDeEIsc0JBQXNCLEVBQ3RCLDBCQUEwQixDQUN4QixXQUFXLEVBQ1gsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQzVCLFlBQVksQ0FDYixDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0aHViLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENvZGVRbCB9IGZyb20gJy4vY29kZXFsJztcbmltcG9ydCB7IFJlYWRtZSB9IGZyb20gJy4uL3JlYWRtZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2lmeU9wdGlvbnMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGFwcHJvdmluZyByZXZpZXdzIHRoZSBtZXJnZSBxdWV1ZSB3YWl0cyBmb3IsIHdoaWNoIHNob3VsZCBtYXRjaFxuICAgKiBgYXV0b01lcmdlT3B0aW9ucy5hcHByb3ZlZFJldmlld3NgLiBVc2UgMCBmb3IgYSByZXBvc2l0b3J5IHdpdGggYSBzaW5nbGVcbiAgICogbWFpbnRhaW5lciwgd2hvIGNhbm5vdCBhcHByb3ZlIHRoZWlyIG93biBwdWxsIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhcHByb3ZlZFJldmlld3M/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFzc2lnblVzZXJzPzogQXJyYXk8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcmVwb3J0aW5nTWV0aG9kPzogc3RyaW5nO1xuICAvKipcbiAgICogQXV0aG9yIG9mIHRoZSBwcm9qZW4gdXBncmFkZSBwdWxsIHJlcXVlc3RzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgYXBwcm92ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ2VuZG9yLXByb2plbltib3RdJ1xuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUF1dGhvcj86IHN0cmluZztcbn1cblxudHlwZSBNZXJnaWZ5UHJvamVjdCA9IFByb2plY3QgJiB7XG4gIHJlYWRvbmx5IGF1dG9NZXJnZT86IGdpdGh1Yi5BdXRvTWVyZ2U7XG4gIHJlYWRvbmx5IGdpdGh1Yj86IGdpdGh1Yi5HaXRIdWI7XG4gIHJlYWRvbmx5IGJ1aWxkV29ya2Zsb3c/OiB7XG4gICAgcmVhZG9ubHkgYnVpbGRKb2JJZHM/OiBBcnJheTxzdHJpbmc+O1xuICB9O1xuICByZWFkb25seSByZWFkbWU/OiBSZWFkbWU7XG59O1xuXG5mdW5jdGlvbiBnaXRodWJDb25maWd1cmF0aW9uU2VjdGlvbihcbiAgcmVxdWlyZWRDaGVja3M6IEFycmF5PHN0cmluZz4sXG4gIGFwcHJvdmVkUmV2aWV3czogbnVtYmVyLFxuICBjb2RlU2Nhbm5pbmc6IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBzdGF0dXNDaGVja3MgPSByZXF1aXJlZENoZWNrcy5sZW5ndGhcbiAgICA/ICd0aGUgY2hlY2tzIHRoYXQgYC5tZXJnaWZ5LnltbGAgd2FpdHMgZm9yOiBgJyArXG4gICAgICByZXF1aXJlZENoZWNrcy5qb2luKCdgLCBgJykgK1xuICAgICAgJ2AnXG4gICAgOiAnYW55IENJIGNoZWNrcyBhZGRlZCB0byB0aGUgcHJvamVjdCAobm9uZSBhcmUgY29uZmlndXJlZCB5ZXQpLCBrZWVwaW5nIHRoZW0gaW4gc3luYyB3aXRoIGAubWVyZ2lmeS55bWxgJztcbiAgY29uc3QgYXBwcm92YWxzID0gYXBwcm92ZWRSZXZpZXdzID09PSAxID8gJzEgcmVxdWlyZWQgYXBwcm92YWwnIDogYCR7YXBwcm92ZWRSZXZpZXdzfSByZXF1aXJlZCBhcHByb3ZhbHNgO1xuICBjb25zdCBxdWV1ZWQgPSBhcHByb3ZlZFJldmlld3NcbiAgICA/ICdPbmNlIGEgcHVsbCByZXF1ZXN0IGlzIGFwcHJvdmVkIGFuZCBpdHMgY2hlY2tzIHBhc3MnXG4gICAgOiAnT25jZSBhIHB1bGwgcmVxdWVzdFxcJ3MgY2hlY2tzIHBhc3MnO1xuICBjb25zdCBzb2xlTWFpbnRhaW5lciA9IGFwcHJvdmVkUmV2aWV3c1xuICAgID8gYFxuXG5BIHJlcG9zaXRvcnkgd2l0aCBhIHNpbmdsZSBtYWludGFpbmVyLCB3aG8gY2Fubm90IGFwcHJvdmUgdGhlaXIgb3duIHB1bGwgcmVxdWVzdHMsIHNob3VsZCBzZXQgXFxgYXV0b01lcmdlT3B0aW9uczogeyBhcHByb3ZlZFJldmlld3M6IDAgfVxcYCBpbiBcXGAucHJvamVucmMudHNcXGAgYW5kIHNldCB0aGUgcnVsZXNldCdzIHJlcXVpcmVkIGFwcHJvdmFscyB0byAwLiBQdWxsIHJlcXVlc3RzIGFyZSB0aGVuIG1lcmdlZCBhcyBzb29uIGFzIHRoZWlyIGNoZWNrcyBwYXNzLmBcbiAgICA6ICcnO1xuICBjb25zdCBjb2RlU2Nhbm5pbmdTZXR0aW5ncyA9IGNvZGVTY2FubmluZ1xuICAgID8gYFxuXG4jIyMgQ29kZSBzY2FubmluZ1xuXG5Db2RlUUwgcnVucyBmcm9tIFxcYC5naXRodWIvd29ya2Zsb3dzL2NvZGVxbC55bWxcXGAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgcHJvamVuLiBJbiAqKlNldHRpbmdzIOKGkiBBZHZhbmNlZCBTZWN1cml0eSoqLCBsZWF2ZSBDb2RlUUwgKipEZWZhdWx0IHNldHVwKiogb2ZmLCBiZWNhdXNlIGl0IGNhbm5vdCBydW4gYWxvbmdzaWRlIHRoaXMgd29ya2Zsb3cuIFVuZGVyICoqUHJvdGVjdGlvbiBydWxlcyoqLCBrZWVwIHRoZSAqKkNoZWNrIHJ1biBmYWlsdXJlIHRocmVzaG9sZCoqIGF0ICoqSGlnaCBvciBoaWdoZXIqKiBmb3Igc2VjdXJpdHkgYWxlcnRzIGFuZCAqKkVycm9ycyoqIGZvciBvdGhlciBhbGVydHMsIGFzIHRoaXMgZGVjaWRlcyB3aGV0aGVyIHRoZSBcXGAke0NvZGVRbC5DSEVDS19OQU1FfVxcYCBjaGVjayBmYWlscy4gUHJpdmF0ZSByZXBvc2l0b3JpZXMgYWxzbyBuZWVkIEdpdEh1YiBDb2RlIFNlY3VyaXR5IGVuYWJsZWQgdGhlcmUgZm9yIGNvZGUgc2Nhbm5pbmcgcmVzdWx0cyB0byBiZSB1cGxvYWRlZC5gXG4gICAgOiAnJztcbiAgY29uc3QgY29kZVNjYW5uaW5nUnVsZSA9IGNvZGVTY2FubmluZ1xuICAgID8gYFxuKiAqKlJlcXVpcmUgY29kZSBzY2FubmluZyByZXN1bHRzKiosIHdpdGggdGhlIHRvb2wgKipDb2RlUUwqKiwgc2VjdXJpdHkgYWxlcnRzIHNldCB0byAqKkhpZ2ggb3IgaGlnaGVyKiogYW5kIGFsZXJ0cyBzZXQgdG8gKipFcnJvcnMqKi4gTWVyZ2lmeSBpcyBleGVtcHQgZnJvbSB0aGlzIHJ1bGUsIHNvIFxcYC5tZXJnaWZ5LnltbFxcYCBhbHNvIHdhaXRzIGZvciB0aGUgXFxgJHtDb2RlUWwuQ0hFQ0tfTkFNRX1cXGAgY2hlY2sgaW5zdGVhZC5gXG4gICAgOiAnJztcbiAgcmV0dXJuIGBBbGwgcHVsbCByZXF1ZXN0cyBhcmUgbWVyZ2VkIGJ5IHRoZSBbTWVyZ2lmeV0oaHR0cHM6Ly9tZXJnaWZ5LmNvbSkgbWVyZ2UgcXVldWUsIGNvbmZpZ3VyZWQgaW4gXFxgLm1lcmdpZnkueW1sXFxgLiAke3F1ZXVlZH0sIE1lcmdpZnkgcXVldWVzIGl0LCBicmluZ3MgaXQgdXAgdG8gZGF0ZSB3aXRoIHRoZSBkZWZhdWx0IGJyYW5jaCwgd2FpdHMgZm9yIHRoZSBjaGVja3MgYWdhaW4gYW5kIHNxdWFzaCBtZXJnZXMgaXQuIERyYWZ0IHB1bGwgcmVxdWVzdHMgYW5kIHRob3NlIGxhYmVsbGVkIFxcYGRvLW5vdC1tZXJnZVxcYCBhcmUgbm90IG1lcmdlZC5cblxuVGhlIHJlcG9zaXRvcnkgbXVzdCBiZSBjb25maWd1cmVkIGFzIGJlbG93IHNvIHRoYXQgbm90aGluZyBjYW4gYmUgbWVyZ2VkIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgcXVldWUuXG5cbiMjIyBNZXJnaWZ5XG5cbkluc3RhbGwgdGhlIFtNZXJnaWZ5IEdpdEh1YiBBcHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBzL21lcmdpZnkpIGFuZCBnaXZlIGl0IGFjY2VzcyB0byB0aGlzIHJlcG9zaXRvcnkuXG5cbiMjIyBQdWxsIHJlcXVlc3Qgc2V0dGluZ3NcblxuSW4gKipTZXR0aW5ncyDihpIgR2VuZXJhbCDihpIgUHVsbCBSZXF1ZXN0cyoqOlxuKiBBbGxvdyBzcXVhc2ggbWVyZ2luZyBvbmx5ICh1bnRpY2sgbWVyZ2UgY29tbWl0cyBhbmQgcmViYXNlIG1lcmdpbmcpLCBtYXRjaGluZyB0aGUgcXVldWUncyBtZXJnZSBtZXRob2QuXG4qIFVudGljayAqKkFsbG93IGF1dG8tbWVyZ2UqKiwgYmVjYXVzZSBHaXRIdWIncyBvd24gYXV0by1tZXJnZSBtZXJnZXMgb3V0c2lkZSB0aGUgcXVldWUuXG4qIFRpY2sgKipBdXRvbWF0aWNhbGx5IGRlbGV0ZSBoZWFkIGJyYW5jaGVzKiouJHtjb2RlU2Nhbm5pbmdTZXR0aW5nc31cblxuIyMjIEJyYW5jaCBydWxlc2V0XG5cbkluICoqU2V0dGluZ3Mg4oaSIFJ1bGVzIOKGkiBSdWxlc2V0cyoqLCBjcmVhdGUgYSBicmFuY2ggcnVsZXNldCB3aXRoIGVuZm9yY2VtZW50ICoqQWN0aXZlKiogdGhhdCB0YXJnZXRzIHRoZSBkZWZhdWx0IGJyYW5jaCwgYW5kIHNldDpcbiogKipCeXBhc3MgbGlzdCoqOiB0aGUgKipNZXJnaWZ5KiogYXBwIG9ubHksIGluICoqRXhlbXB0KiogbW9kZS4gRG8gbm90IGFkZCBhZG1pbnMgb3Igb3RoZXIgcm9sZXMsIGFzIGFueW9uZSBvbiB0aGlzIGxpc3QgY2FuIG1lcmdlIHdpdGhvdXQgdGhlIHF1ZXVlLlxuKiAqKlJlc3RyaWN0IHVwZGF0ZXMqKjogb25seSBieXBhc3MgYWN0b3JzIGNhbiB1cGRhdGUgdGhlIGJyYW5jaCwgc28gcHVsbCByZXF1ZXN0cyBjYW5ub3QgYmUgbWVyZ2VkIGZyb20gdGhlIEdpdEh1YiBVSSBvciBDTEkgYW5kIGNvbW1pdHMgY2Fubm90IGJlIHB1c2hlZCBkaXJlY3RseS5cbiogKipSZXN0cmljdCBkZWxldGlvbnMqKiBhbmQgKipCbG9jayBmb3JjZSBwdXNoZXMqKi5cbiogKipSZXF1aXJlIGEgcHVsbCByZXF1ZXN0IGJlZm9yZSBtZXJnaW5nKiosIHdpdGggJHthcHByb3ZhbHN9LlxuKiAqKlJlcXVpcmUgc3RhdHVzIGNoZWNrcyB0byBwYXNzKiosIGxpc3RpbmcgJHtzdGF0dXNDaGVja3N9LiBMZWF2ZSAqKlJlcXVpcmUgYnJhbmNoZXMgdG8gYmUgdXAgdG8gZGF0ZSBiZWZvcmUgbWVyZ2luZyoqIHVudGlja2VkLCBhcyB0aGUgcXVldWUgYWxyZWFkeSB1cGRhdGVzIGFuZCByZXRlc3RzIGVhY2ggcHVsbCByZXF1ZXN0LiR7Y29kZVNjYW5uaW5nUnVsZX1cblxuRG8gbm90IGVuYWJsZSBHaXRIdWIncyBvd24gKipSZXF1aXJlIG1lcmdlIHF1ZXVlKiogcnVsZSwgYXMgaXQgY29tcGV0ZXMgd2l0aCBNZXJnaWZ5LlxuXG5JZiB0aGUgcXVldWUgaXMgdW5hdmFpbGFibGUgYW5kIGEgY2hhbmdlIGhhcyB0byBiZSBtZXJnZWQsIGFkZCB5b3Vyc2VsZiB0byB0aGUgYnlwYXNzIGxpc3QgdGVtcG9yYXJpbHkgYW5kIHJlbW92ZSB5b3Vyc2VsZiBhZnRlcndhcmRzLiR7c29sZU1haW50YWluZXJ9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZU1lcmdpZnkoXG4gIHByb2plY3Q6IE1lcmdpZnlQcm9qZWN0LFxuICBvcHRpb25zOiBNZXJnaWZ5T3B0aW9ucyA9IHt9LFxuKSB7XG4gIGNvbnN0IG1lcmdpZnkgPSBwcm9qZWN0LmdpdGh1Yj8ubWVyZ2lmeTtcbiAgaWYgKCFtZXJnaWZ5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVpbGRKb2JJZHMgPSBwcm9qZWN0LmJ1aWxkV29ya2Zsb3c/LmJ1aWxkSm9iSWRzID8/IFtdO1xuXG4gIHByb2plY3QuYXV0b01lcmdlPy5hZGRDb25kaXRpb25zKCctZHJhZnQnKTtcblxuICAvLyBNZXJnaWZ5IGlzIGV4ZW1wdCBmcm9tIHRoZSBydWxlc2V0J3MgY29kZSBzY2FubmluZyBydWxlLCBzbyB0aGUgcXVldWUgZW5mb3JjZXMgaXQgaW5zdGVhZFxuICBjb25zdCBjb2RlU2Nhbm5pbmcgPSBwcm9qZWN0LmNvbXBvbmVudHMuc29tZSgoYykgPT4gYyBpbnN0YW5jZW9mIENvZGVRbCk7XG4gIGlmIChjb2RlU2Nhbm5pbmcpIHtcbiAgICBwcm9qZWN0LmF1dG9NZXJnZT8uYWRkQ29uZGl0aW9ucyhgc3RhdHVzLXN1Y2Nlc3M9JHtDb2RlUWwuQ0hFQ0tfTkFNRX1gKTtcbiAgfVxuXG4gIG1lcmdpZnkuYWRkUnVsZSh7XG4gICAgbmFtZTogJ0F1dG9tYXRpYyBhcHByb3ZhbCBmb3IgcHJvamVuIHVwZ3JhZGUgcHVsbCByZXF1ZXN0cycsXG4gICAgY29uZGl0aW9uczogW1xuICAgICAgYGF1dGhvcj0ke29wdGlvbnMudXBncmFkZUF1dGhvciA/PyAnZW5kb3ItcHJvamVuW2JvdF0nfWAsXG4gICAgICAuLi5idWlsZEpvYklkcy5tYXAoKGlkKSA9PiBgc3RhdHVzLXN1Y2Nlc3M9JHtpZH1gKSxcbiAgICBdLFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHJldmlldzoge1xuICAgICAgICB0eXBlOiAnQVBQUk9WRScsXG4gICAgICAgIG1lc3NhZ2U6ICdBdXRvbWF0aWNhbGx5IGFwcHJvdmluZyBwcm9qZW4gdXBncmFkZScsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIG1lcmdpZnkuYWRkUnVsZSh7XG4gICAgbmFtZTogJ0Fzc2lnbiBQUiB3aGVuIGNoZWNrIGZhaWxzJyxcbiAgICBjb25kaXRpb25zOiBbJyNjaGVjay1mYWlsdXJlID4gMCddLFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIGFzc2lnbjoge1xuICAgICAgICBhZGRfdXNlcnM6IG9wdGlvbnMuYXNzaWduVXNlcnMgPz8gWydkYXZlc2hlcGhlcmQnXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcHJvamVjdC50cnlGaW5kT2JqZWN0RmlsZSgnLm1lcmdpZnkueW1sJyk/LmFkZE92ZXJyaWRlKFxuICAgICdtZXJnZV9wcm90ZWN0aW9uc19zZXR0aW5ncy5yZXBvcnRpbmdfbWV0aG9kJyxcbiAgICBvcHRpb25zLnJlcG9ydGluZ01ldGhvZCA/PyAnZGVwbG95bWVudHMnLFxuICApO1xuXG4gIHByb2plY3QucmVhZG1lPy5hZGRTZWN0aW9uKFxuICAgICdHaXRIdWIgQ29uZmlndXJhdGlvbicsXG4gICAgZ2l0aHViQ29uZmlndXJhdGlvblNlY3Rpb24oXG4gICAgICBidWlsZEpvYklkcyxcbiAgICAgIG9wdGlvbnMuYXBwcm92ZWRSZXZpZXdzID8/IDEsXG4gICAgICBjb2RlU2Nhbm5pbmcsXG4gICAgKSxcbiAgKTtcbn1cbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2lmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2dpdGh1Yi9tZXJnaWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMkNBLDRDQVFDO0FBaUdELDRDQXNFQztBQXpORCxxQ0FBa0M7QUFzQ2xDOzs7R0FHRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BR2hDO0lBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDcEMsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE1BQXFCO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEQsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDckUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQVNELFNBQVMsZ0JBQWdCLENBQUMsTUFBMkI7SUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixPQUFPLG1DQUFtQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsT0FBTyxvREFBb0QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUM7SUFDdEgsQ0FBQztJQUNELE9BQU8scURBQXFELENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsTUFBMkI7SUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixPQUFPOzs0VEFFaVQsQ0FBQztJQUMzVCxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEMsT0FBTzs7OE9BRW1PLENBQUM7SUFDN08sQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsTUFBMkI7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1FBQy9DLENBQUMsQ0FBQyw2Q0FBNkM7WUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2xDLEdBQUc7UUFDTCxDQUFDLENBQUMsd0dBQXdHLENBQUM7SUFDN0csTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNO1FBQzVDLENBQUMsQ0FBQyx5RkFBeUY7WUFDekYsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDakMsK0JBQStCO1FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLHFCQUFxQjtZQUN2QixDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsZUFBZSxxQkFBcUIsQ0FBQztJQUNyRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxZQUFZO1FBQzlDLENBQUMsQ0FBQzs7Ozt1WEFJaVgsZUFBTSxDQUFDLFVBQVUsNkhBQTZIO1FBQ2pnQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsWUFBWTtRQUMxQyxDQUFDLENBQUM7b05BQzhNLGVBQU0sQ0FBQyxVQUFVLG1CQUFtQjtRQUNwUCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsT0FBTyxtSEFBbUgsZ0JBQWdCLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztzUkFpQmtJLG9CQUFvQjs7Ozs7Ozs7b0RBUXRQLFNBQVM7K0NBQ2QsWUFBWSxxSUFBcUksZ0JBQWdCOzs7O3dJQUl4RSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ25LLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsT0FBdUIsRUFDdkIsVUFBMEIsRUFBRTtJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztJQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztJQUU3RCxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztJQUNyRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUNwRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksZUFBZSxFQUFFLENBQUM7UUFDN0MsTUFBTSxpQkFBaUIsR0FBNEI7WUFDakQsRUFBRSxFQUFFO2dCQUNGLHlCQUF5QixlQUFlLEVBQUU7Z0JBQzFDLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxNQUFNLEVBQUUsQ0FBQzthQUN0RDtTQUNGLENBQUM7UUFDRixtRkFBbUY7UUFDbkYsT0FBTyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsaUJBQXNDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsNEZBQTRGO0lBQzVGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksZUFBTSxDQUFDLENBQUM7SUFDekUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxrQkFBa0IsZUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDZCxJQUFJLEVBQUUscURBQXFEO1FBQzNELFVBQVUsRUFBRTtZQUNWLFVBQVUsT0FBTyxDQUFDLGFBQWEsSUFBSSxtQkFBbUIsRUFBRTtZQUN4RCxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztTQUNuRDtRQUNELE9BQU8sRUFBRTtZQUNQLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsd0NBQXdDO2FBQ2xEO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2QsSUFBSSxFQUFFLDRCQUE0QjtRQUNsQyxVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztRQUNsQyxPQUFPLEVBQUU7WUFDUCxNQUFNLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDbkQ7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLENBQ3BELDZDQUE2QyxFQUM3QyxPQUFPLENBQUMsZUFBZSxJQUFJLGFBQWEsQ0FDekMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUN4QixzQkFBc0IsRUFDdEIsMEJBQTBCLENBQUM7UUFDekIsZUFBZTtRQUNmLFlBQVk7UUFDWixjQUFjLEVBQUUsV0FBVztRQUMzQixjQUFjO0tBQ2YsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0aHViLCBQcm9qZWN0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IENvZGVRbCB9IGZyb20gJy4vY29kZXFsJztcbmltcG9ydCB7IFJlYWRtZSB9IGZyb20gJy4uL3JlYWRtZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2lmeU9wdGlvbnMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGFwcHJvdmluZyByZXZpZXdzIHRoZSBtZXJnZSBxdWV1ZSB3YWl0cyBmb3IsIHdoaWNoIHNob3VsZCBtYXRjaFxuICAgKiBgYXV0b01lcmdlT3B0aW9ucy5hcHByb3ZlZFJldmlld3NgXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGFwcHJvdmVkUmV2aWV3cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgYXNzaWduVXNlcnM/OiBBcnJheTxzdHJpbmc+O1xuICByZWFkb25seSByZXBvcnRpbmdNZXRob2Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRob3JzIHdob3NlIHB1bGwgcmVxdWVzdHMgdGhlIG1lcmdlIHF1ZXVlIG1lcmdlcyB3aXRob3V0IGFuIGFwcHJvdmFsLCBzdWNoXG4gICAqIGFzIHRoZSBzaW5nbGUgbWFpbnRhaW5lciBvZiBhIHJlcG9zaXRvcnksIHdobyBjYW5ub3QgYXBwcm92ZSB0aGVpciBvd24gcHVsbFxuICAgKiByZXF1ZXN0cy4gUHVsbCByZXF1ZXN0cyBmcm9tIGFueW9uZSBlbHNlIHN0aWxsIG5lZWQgYGFwcHJvdmVkUmV2aWV3c2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSB0cnVzdGVkQXV0aG9ycz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBBdXRob3Igb2YgdGhlIHByb2plbiB1cGdyYWRlIHB1bGwgcmVxdWVzdHMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBhcHByb3ZlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnZW5kb3ItcHJvamVuW2JvdF0nXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlQXV0aG9yPzogc3RyaW5nO1xufVxuXG50eXBlIE1lcmdpZnlQcm9qZWN0ID0gUHJvamVjdCAmIHtcbiAgcmVhZG9ubHkgYXV0b01lcmdlPzogZ2l0aHViLkF1dG9NZXJnZTtcbiAgcmVhZG9ubHkgZ2l0aHViPzogZ2l0aHViLkdpdEh1YjtcbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvdz86IHtcbiAgICByZWFkb25seSBidWlsZEpvYklkcz86IEFycmF5PHN0cmluZz47XG4gIH07XG4gIHJlYWRvbmx5IHJlYWRtZT86IFJlYWRtZTtcbn07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHJvamVuJ3MgYXV0byBtZXJnZSwgd2hpY2ggcmVxdWlyZXMgaXRzIGFwcHJvdmFscyBmcm9tIGV2ZXJ5XG4gKiBhdXRob3IsIHNvIHdpdGggdHJ1c3RlZCBhdXRob3JzIGBjb25maWd1cmVNZXJnaWZ5YCByZXF1aXJlcyB0aGVtIGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dG9NZXJnZU9wdGlvbnMob3B0aW9uczoge1xuICByZWFkb25seSBhdXRvTWVyZ2VPcHRpb25zPzogZ2l0aHViLkF1dG9NZXJnZU9wdGlvbnM7XG4gIHJlYWRvbmx5IHRydXN0ZWRBdXRob3JzPzogQXJyYXk8c3RyaW5nPjtcbn0pOiBnaXRodWIuQXV0b01lcmdlT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gIGlmICghb3B0aW9ucy50cnVzdGVkQXV0aG9ycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b01lcmdlT3B0aW9ucztcbiAgfVxuICByZXR1cm4geyAuLi5vcHRpb25zLmF1dG9NZXJnZU9wdGlvbnMsIGFwcHJvdmVkUmV2aWV3czogMCB9O1xufVxuXG5mdW5jdGlvbiBmb3JtYXRMaXN0KHZhbHVlczogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB7XG4gIGNvbnN0IHF1b3RlZCA9IHZhbHVlcy5tYXAoKHZhbHVlKSA9PiAnYCcgKyB2YWx1ZSArICdgJyk7XG4gIHJldHVybiBxdW90ZWQubGVuZ3RoID4gMVxuICAgID8gYCR7cXVvdGVkLnNsaWNlKDAsIC0xKS5qb2luKCcsICcpfSBvciAke3F1b3RlZFtxdW90ZWQubGVuZ3RoIC0gMV19YFxuICAgIDogcXVvdGVkLmpvaW4oJycpO1xufVxuXG5pbnRlcmZhY2UgR2l0aHViQ29uZmlndXJhdGlvbiB7XG4gIHJlYWRvbmx5IGFwcHJvdmVkUmV2aWV3czogbnVtYmVyO1xuICByZWFkb25seSBjb2RlU2Nhbm5pbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlcXVpcmVkQ2hlY2tzOiBBcnJheTxzdHJpbmc+O1xuICByZWFkb25seSB0cnVzdGVkQXV0aG9yczogQXJyYXk8c3RyaW5nPjtcbn1cblxuZnVuY3Rpb24gcXVldWVEZXNjcmlwdGlvbihjb25maWc6IEdpdGh1YkNvbmZpZ3VyYXRpb24pOiBzdHJpbmcge1xuICBpZiAoIWNvbmZpZy5hcHByb3ZlZFJldmlld3MpIHtcbiAgICByZXR1cm4gXCJPbmNlIGEgcHVsbCByZXF1ZXN0J3MgY2hlY2tzIHBhc3NcIjtcbiAgfVxuICBpZiAoY29uZmlnLnRydXN0ZWRBdXRob3JzLmxlbmd0aCkge1xuICAgIHJldHVybiBgT25jZSBhIHB1bGwgcmVxdWVzdCBpcyBhcHByb3ZlZCwgb3IgaXMgb3BlbmVkIGJ5ICR7Zm9ybWF0TGlzdChjb25maWcudHJ1c3RlZEF1dGhvcnMpfSwgYW5kIGl0cyBjaGVja3MgcGFzc2A7XG4gIH1cbiAgcmV0dXJuICdPbmNlIGEgcHVsbCByZXF1ZXN0IGlzIGFwcHJvdmVkIGFuZCBpdHMgY2hlY2tzIHBhc3MnO1xufVxuXG5mdW5jdGlvbiBhcHByb3ZhbEd1aWRhbmNlKGNvbmZpZzogR2l0aHViQ29uZmlndXJhdGlvbik6IHN0cmluZyB7XG4gIGlmICghY29uZmlnLmFwcHJvdmVkUmV2aWV3cykge1xuICAgIHJldHVybiBgXG5cbioqV2FybmluZzoqKiBubyBhcHByb3ZhbHMgYXJlIHJlcXVpcmVkLCBzbyB0aGUgcXVldWUgbWVyZ2VzIGFueSBwdWxsIHJlcXVlc3Qgd2hvc2UgY2hlY2tzIHBhc3MsIGluY2x1ZGluZyBvbmUgZnJvbSBhIGZvcmsgdGhhdCBjaGFuZ2VzIHRoZSB3b3JrZmxvd3MgcHJvZHVjaW5nIHRob3NlIGNoZWNrcy4gU2V0IFxcYGF1dG9NZXJnZU9wdGlvbnMuYXBwcm92ZWRSZXZpZXdzXFxgIHRvIGF0IGxlYXN0IDEsIGFuZCB1c2UgXFxgdHJ1c3RlZEF1dGhvcnNcXGAgZm9yIG1haW50YWluZXJzIHdobyBjYW5ub3QgYXBwcm92ZSB0aGVpciBvd24gcHVsbCByZXF1ZXN0cy5gO1xuICB9XG4gIGlmICghY29uZmlnLnRydXN0ZWRBdXRob3JzLmxlbmd0aCkge1xuICAgIHJldHVybiBgXG5cbkEgcmVwb3NpdG9yeSB3aXRoIGEgc2luZ2xlIG1haW50YWluZXIsIHdobyBjYW5ub3QgYXBwcm92ZSB0aGVpciBvd24gcHVsbCByZXF1ZXN0cywgc2hvdWxkIGxpc3QgdGhlbSBpbiBcXGB0cnVzdGVkQXV0aG9yc1xcYCBpbiBcXGAucHJvamVucmMudHNcXGAuIFRoZWlyIHB1bGwgcmVxdWVzdHMgYXJlIHRoZW4gbWVyZ2VkIHdpdGhvdXQgYW4gYXBwcm92YWwsIHdoaWxlIGV2ZXJ5b25lIGVsc2UncyBzdGlsbCBuZWVkIG9uZS5gO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gZ2l0aHViQ29uZmlndXJhdGlvblNlY3Rpb24oY29uZmlnOiBHaXRodWJDb25maWd1cmF0aW9uKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RhdHVzQ2hlY2tzID0gY29uZmlnLnJlcXVpcmVkQ2hlY2tzLmxlbmd0aFxuICAgID8gJ3RoZSBjaGVja3MgdGhhdCBgLm1lcmdpZnkueW1sYCB3YWl0cyBmb3I6IGAnICtcbiAgICAgIGNvbmZpZy5yZXF1aXJlZENoZWNrcy5qb2luKCdgLCBgJykgK1xuICAgICAgJ2AnXG4gICAgOiAnYW55IENJIGNoZWNrcyBhZGRlZCB0byB0aGUgcHJvamVjdCAobm9uZSBhcmUgY29uZmlndXJlZCB5ZXQpLCBrZWVwaW5nIHRoZW0gaW4gc3luYyB3aXRoIGAubWVyZ2lmeS55bWxgJztcbiAgY29uc3QgYXBwcm92YWxzID0gY29uZmlnLnRydXN0ZWRBdXRob3JzLmxlbmd0aFxuICAgID8gJzAgcmVxdWlyZWQgYXBwcm92YWxzLCBiZWNhdXNlIE1lcmdpZnkgcmVxdWlyZXMgYXBwcm92YWxzIGl0c2VsZiBmb3IgYXV0aG9ycyBvdGhlciB0aGFuICcgK1xuICAgICAgZm9ybWF0TGlzdChjb25maWcudHJ1c3RlZEF1dGhvcnMpICtcbiAgICAgICcgYW5kIGlzIGV4ZW1wdCBmcm9tIHRoaXMgcnVsZSdcbiAgICA6IGNvbmZpZy5hcHByb3ZlZFJldmlld3MgPT09IDFcbiAgICAgID8gJzEgcmVxdWlyZWQgYXBwcm92YWwnXG4gICAgICA6IGAke2NvbmZpZy5hcHByb3ZlZFJldmlld3N9IHJlcXVpcmVkIGFwcHJvdmFsc2A7XG4gIGNvbnN0IGNvZGVTY2FubmluZ1NldHRpbmdzID0gY29uZmlnLmNvZGVTY2FubmluZ1xuICAgID8gYFxuXG4jIyMgQ29kZSBzY2FubmluZ1xuXG5Db2RlUUwgcnVucyBmcm9tIFxcYC5naXRodWIvd29ya2Zsb3dzL2NvZGVxbC55bWxcXGAsIHdoaWNoIGlzIG1hbmFnZWQgYnkgcHJvamVuLiBJbiAqKlNldHRpbmdzIOKGkiBBZHZhbmNlZCBTZWN1cml0eSoqLCBsZWF2ZSBDb2RlUUwgKipEZWZhdWx0IHNldHVwKiogb2ZmLCBiZWNhdXNlIGl0IGNhbm5vdCBydW4gYWxvbmdzaWRlIHRoaXMgd29ya2Zsb3cuIFVuZGVyICoqUHJvdGVjdGlvbiBydWxlcyoqLCBrZWVwIHRoZSAqKkNoZWNrIHJ1biBmYWlsdXJlIHRocmVzaG9sZCoqIGF0ICoqSGlnaCBvciBoaWdoZXIqKiBmb3Igc2VjdXJpdHkgYWxlcnRzIGFuZCAqKkVycm9ycyoqIGZvciBvdGhlciBhbGVydHMsIGFzIHRoaXMgZGVjaWRlcyB3aGV0aGVyIHRoZSBcXGAke0NvZGVRbC5DSEVDS19OQU1FfVxcYCBjaGVjayBmYWlscy4gUHJpdmF0ZSByZXBvc2l0b3JpZXMgYWxzbyBuZWVkIEdpdEh1YiBDb2RlIFNlY3VyaXR5IGVuYWJsZWQgdGhlcmUgZm9yIGNvZGUgc2Nhbm5pbmcgcmVzdWx0cyB0byBiZSB1cGxvYWRlZC5gXG4gICAgOiAnJztcbiAgY29uc3QgY29kZVNjYW5uaW5nUnVsZSA9IGNvbmZpZy5jb2RlU2Nhbm5pbmdcbiAgICA/IGBcbiogKipSZXF1aXJlIGNvZGUgc2Nhbm5pbmcgcmVzdWx0cyoqLCB3aXRoIHRoZSB0b29sICoqQ29kZVFMKiosIHNlY3VyaXR5IGFsZXJ0cyBzZXQgdG8gKipIaWdoIG9yIGhpZ2hlcioqIGFuZCBhbGVydHMgc2V0IHRvICoqRXJyb3JzKiouIE1lcmdpZnkgaXMgZXhlbXB0IGZyb20gdGhpcyBydWxlLCBzbyBcXGAubWVyZ2lmeS55bWxcXGAgYWxzbyB3YWl0cyBmb3IgdGhlIFxcYCR7Q29kZVFsLkNIRUNLX05BTUV9XFxgIGNoZWNrIGluc3RlYWQuYFxuICAgIDogJyc7XG4gIHJldHVybiBgQWxsIHB1bGwgcmVxdWVzdHMgYXJlIG1lcmdlZCBieSB0aGUgW01lcmdpZnldKGh0dHBzOi8vbWVyZ2lmeS5jb20pIG1lcmdlIHF1ZXVlLCBjb25maWd1cmVkIGluIFxcYC5tZXJnaWZ5LnltbFxcYC4gJHtxdWV1ZURlc2NyaXB0aW9uKGNvbmZpZyl9LCBNZXJnaWZ5IHF1ZXVlcyBpdCwgYnJpbmdzIGl0IHVwIHRvIGRhdGUgd2l0aCB0aGUgZGVmYXVsdCBicmFuY2gsIHdhaXRzIGZvciB0aGUgY2hlY2tzIGFnYWluIGFuZCBzcXVhc2ggbWVyZ2VzIGl0LiBEcmFmdCBwdWxsIHJlcXVlc3RzIGFuZCB0aG9zZSBsYWJlbGxlZCBcXGBkby1ub3QtbWVyZ2VcXGAgYXJlIG5vdCBtZXJnZWQuXG5cblRoZSByZXBvc2l0b3J5IG11c3QgYmUgY29uZmlndXJlZCBhcyBiZWxvdyBzbyB0aGF0IG5vdGhpbmcgY2FuIGJlIG1lcmdlZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHF1ZXVlLlxuXG4jIyMgTWVyZ2lmeVxuXG5JbnN0YWxsIHRoZSBbTWVyZ2lmeSBHaXRIdWIgQXBwXShodHRwczovL2dpdGh1Yi5jb20vYXBwcy9tZXJnaWZ5KSBhbmQgZ2l2ZSBpdCBhY2Nlc3MgdG8gdGhpcyByZXBvc2l0b3J5LlxuXG4jIyMgUHVsbCByZXF1ZXN0IHNldHRpbmdzXG5cbkluICoqU2V0dGluZ3Mg4oaSIEdlbmVyYWwg4oaSIFB1bGwgUmVxdWVzdHMqKjpcbiogQWxsb3cgc3F1YXNoIG1lcmdpbmcgb25seSAodW50aWNrIG1lcmdlIGNvbW1pdHMgYW5kIHJlYmFzZSBtZXJnaW5nKSwgbWF0Y2hpbmcgdGhlIHF1ZXVlJ3MgbWVyZ2UgbWV0aG9kLlxuKiBVbnRpY2sgKipBbGxvdyBhdXRvLW1lcmdlKiosIGJlY2F1c2UgR2l0SHViJ3Mgb3duIGF1dG8tbWVyZ2UgbWVyZ2VzIG91dHNpZGUgdGhlIHF1ZXVlLlxuKiBUaWNrICoqQXV0b21hdGljYWxseSBkZWxldGUgaGVhZCBicmFuY2hlcyoqLlxuXG4jIyMgQWN0aW9ucyBzZXR0aW5nc1xuXG5JbiAqKlNldHRpbmdzIOKGkiBBY3Rpb25zIOKGkiBHZW5lcmFsKiosIHNldCAqKkFwcHJvdmFsIGZvciBydW5uaW5nIGZvcmsgcHVsbCByZXF1ZXN0IHdvcmtmbG93cyBmcm9tIGNvbnRyaWJ1dG9ycyoqIHRvICoqUmVxdWlyZSBhcHByb3ZhbCBmb3IgYWxsIGV4dGVybmFsIGNvbnRyaWJ1dG9ycyoqLiBBIHB1bGwgcmVxdWVzdCBmcm9tIGEgZm9yayBydW5zIGl0cyBvd24gY29weSBvZiB0aGUgd29ya2Zsb3dzLCBzbyBpdCBjYW4gY2hhbmdlIGhvdyB0aGUgcmVxdWlyZWQgY2hlY2tzIHBhc3MuJHtjb2RlU2Nhbm5pbmdTZXR0aW5nc31cblxuIyMjIEJyYW5jaCBydWxlc2V0XG5cbkluICoqU2V0dGluZ3Mg4oaSIFJ1bGVzIOKGkiBSdWxlc2V0cyoqLCBjcmVhdGUgYSBicmFuY2ggcnVsZXNldCB3aXRoIGVuZm9yY2VtZW50ICoqQWN0aXZlKiogdGhhdCB0YXJnZXRzIHRoZSBkZWZhdWx0IGJyYW5jaCwgYW5kIHNldDpcbiogKipCeXBhc3MgbGlzdCoqOiB0aGUgKipNZXJnaWZ5KiogYXBwIG9ubHksIGluICoqRXhlbXB0KiogbW9kZS4gRG8gbm90IGFkZCBhZG1pbnMgb3Igb3RoZXIgcm9sZXMsIGFzIGFueW9uZSBvbiB0aGlzIGxpc3QgY2FuIG1lcmdlIHdpdGhvdXQgdGhlIHF1ZXVlLlxuKiAqKlJlc3RyaWN0IHVwZGF0ZXMqKjogb25seSBieXBhc3MgYWN0b3JzIGNhbiB1cGRhdGUgdGhlIGJyYW5jaCwgc28gcHVsbCByZXF1ZXN0cyBjYW5ub3QgYmUgbWVyZ2VkIGZyb20gdGhlIEdpdEh1YiBVSSBvciBDTEkgYW5kIGNvbW1pdHMgY2Fubm90IGJlIHB1c2hlZCBkaXJlY3RseS5cbiogKipSZXN0cmljdCBkZWxldGlvbnMqKiBhbmQgKipCbG9jayBmb3JjZSBwdXNoZXMqKi5cbiogKipSZXF1aXJlIGEgcHVsbCByZXF1ZXN0IGJlZm9yZSBtZXJnaW5nKiosIHdpdGggJHthcHByb3ZhbHN9LiBUaWNrICoqRGlzbWlzcyBzdGFsZSBwdWxsIHJlcXVlc3QgYXBwcm92YWxzIHdoZW4gbmV3IGNvbW1pdHMgYXJlIHB1c2hlZCoqLCBzbyB0aGF0IGNvbW1pdHMgcHVzaGVkIGFmdGVyIGFuIGFwcHJvdmFsIG5lZWQgYXBwcm92aW5nIGFnYWluIGJlZm9yZSB0aGUgcXVldWUgbWVyZ2VzIHRoZW0uXG4qICoqUmVxdWlyZSBzdGF0dXMgY2hlY2tzIHRvIHBhc3MqKiwgbGlzdGluZyAke3N0YXR1c0NoZWNrc30uIExlYXZlICoqUmVxdWlyZSBicmFuY2hlcyB0byBiZSB1cCB0byBkYXRlIGJlZm9yZSBtZXJnaW5nKiogdW50aWNrZWQsIGFzIHRoZSBxdWV1ZSBhbHJlYWR5IHVwZGF0ZXMgYW5kIHJldGVzdHMgZWFjaCBwdWxsIHJlcXVlc3QuJHtjb2RlU2Nhbm5pbmdSdWxlfVxuXG5EbyBub3QgZW5hYmxlIEdpdEh1YidzIG93biAqKlJlcXVpcmUgbWVyZ2UgcXVldWUqKiBydWxlLCBhcyBpdCBjb21wZXRlcyB3aXRoIE1lcmdpZnkuXG5cbklmIHRoZSBxdWV1ZSBpcyB1bmF2YWlsYWJsZSBhbmQgYSBjaGFuZ2UgaGFzIHRvIGJlIG1lcmdlZCwgYWRkIHlvdXJzZWxmIHRvIHRoZSBieXBhc3MgbGlzdCB0ZW1wb3JhcmlseSBhbmQgcmVtb3ZlIHlvdXJzZWxmIGFmdGVyd2FyZHMuJHthcHByb3ZhbEd1aWRhbmNlKGNvbmZpZyl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZU1lcmdpZnkoXG4gIHByb2plY3Q6IE1lcmdpZnlQcm9qZWN0LFxuICBvcHRpb25zOiBNZXJnaWZ5T3B0aW9ucyA9IHt9LFxuKSB7XG4gIGNvbnN0IG1lcmdpZnkgPSBwcm9qZWN0LmdpdGh1Yj8ubWVyZ2lmeTtcbiAgaWYgKCFtZXJnaWZ5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYnVpbGRKb2JJZHMgPSBwcm9qZWN0LmJ1aWxkV29ya2Zsb3c/LmJ1aWxkSm9iSWRzID8/IFtdO1xuXG4gIHByb2plY3QuYXV0b01lcmdlPy5hZGRDb25kaXRpb25zKCctZHJhZnQnKTtcblxuICBjb25zdCBhcHByb3ZlZFJldmlld3MgPSBvcHRpb25zLmFwcHJvdmVkUmV2aWV3cyA/PyAxO1xuICBjb25zdCB0cnVzdGVkQXV0aG9ycyA9IG9wdGlvbnMudHJ1c3RlZEF1dGhvcnMgPz8gW107XG4gIGlmICh0cnVzdGVkQXV0aG9ycy5sZW5ndGggJiYgYXBwcm92ZWRSZXZpZXdzKSB7XG4gICAgY29uc3QgYXBwcm92ZWRPclRydXN0ZWQ6IGdpdGh1Yi5NZXJnaWZ5Q29uZGl0aW9uID0ge1xuICAgICAgb3I6IFtcbiAgICAgICAgYCNhcHByb3ZlZC1yZXZpZXdzLWJ5Pj0ke2FwcHJvdmVkUmV2aWV3c31gLFxuICAgICAgICAuLi50cnVzdGVkQXV0aG9ycy5tYXAoKGF1dGhvcikgPT4gYGF1dGhvcj0ke2F1dGhvcn1gKSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICAvLyBwcm9qZW4gdHlwZXMgYXV0byBtZXJnZSBjb25kaXRpb25zIGFzIHN0cmluZ3MsIGJ1dCBtZXJnaWZ5IGFjY2VwdHMgb3BlcmF0b3JzIHRvb1xuICAgIHByb2plY3QuYXV0b01lcmdlPy5hZGRDb25kaXRpb25zKGFwcHJvdmVkT3JUcnVzdGVkIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgfVxuXG4gIC8vIE1lcmdpZnkgaXMgZXhlbXB0IGZyb20gdGhlIHJ1bGVzZXQncyBjb2RlIHNjYW5uaW5nIHJ1bGUsIHNvIHRoZSBxdWV1ZSBlbmZvcmNlcyBpdCBpbnN0ZWFkXG4gIGNvbnN0IGNvZGVTY2FubmluZyA9IHByb2plY3QuY29tcG9uZW50cy5zb21lKChjKSA9PiBjIGluc3RhbmNlb2YgQ29kZVFsKTtcbiAgaWYgKGNvZGVTY2FubmluZykge1xuICAgIHByb2plY3QuYXV0b01lcmdlPy5hZGRDb25kaXRpb25zKGBzdGF0dXMtc3VjY2Vzcz0ke0NvZGVRbC5DSEVDS19OQU1FfWApO1xuICB9XG5cbiAgbWVyZ2lmeS5hZGRSdWxlKHtcbiAgICBuYW1lOiAnQXV0b21hdGljIGFwcHJvdmFsIGZvciBwcm9qZW4gdXBncmFkZSBwdWxsIHJlcXVlc3RzJyxcbiAgICBjb25kaXRpb25zOiBbXG4gICAgICBgYXV0aG9yPSR7b3B0aW9ucy51cGdyYWRlQXV0aG9yID8/ICdlbmRvci1wcm9qZW5bYm90XSd9YCxcbiAgICAgIC4uLmJ1aWxkSm9iSWRzLm1hcCgoaWQpID0+IGBzdGF0dXMtc3VjY2Vzcz0ke2lkfWApLFxuICAgIF0sXG4gICAgYWN0aW9uczoge1xuICAgICAgcmV2aWV3OiB7XG4gICAgICAgIHR5cGU6ICdBUFBST1ZFJyxcbiAgICAgICAgbWVzc2FnZTogJ0F1dG9tYXRpY2FsbHkgYXBwcm92aW5nIHByb2plbiB1cGdyYWRlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgbWVyZ2lmeS5hZGRSdWxlKHtcbiAgICBuYW1lOiAnQXNzaWduIFBSIHdoZW4gY2hlY2sgZmFpbHMnLFxuICAgIGNvbmRpdGlvbnM6IFsnI2NoZWNrLWZhaWx1cmUgPiAwJ10sXG4gICAgYWN0aW9uczoge1xuICAgICAgYXNzaWduOiB7XG4gICAgICAgIGFkZF91c2Vyczogb3B0aW9ucy5hc3NpZ25Vc2VycyA/PyBbJ2RhdmVzaGVwaGVyZCddLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBwcm9qZWN0LnRyeUZpbmRPYmplY3RGaWxlKCcubWVyZ2lmeS55bWwnKT8uYWRkT3ZlcnJpZGUoXG4gICAgJ21lcmdlX3Byb3RlY3Rpb25zX3NldHRpbmdzLnJlcG9ydGluZ19tZXRob2QnLFxuICAgIG9wdGlvbnMucmVwb3J0aW5nTWV0aG9kID8/ICdkZXBsb3ltZW50cycsXG4gICk7XG5cbiAgcHJvamVjdC5yZWFkbWU/LmFkZFNlY3Rpb24oXG4gICAgJ0dpdEh1YiBDb25maWd1cmF0aW9uJyxcbiAgICBnaXRodWJDb25maWd1cmF0aW9uU2VjdGlvbih7XG4gICAgICBhcHByb3ZlZFJldmlld3MsXG4gICAgICBjb2RlU2Nhbm5pbmcsXG4gICAgICByZXF1aXJlZENoZWNrczogYnVpbGRKb2JJZHMsXG4gICAgICB0cnVzdGVkQXV0aG9ycyxcbiAgICB9KSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Section = void 0;
|
|
4
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
5
|
class Section {
|
|
6
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.Section", version: "3.2.
|
|
6
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.Section", version: "3.2.2" };
|
|
7
7
|
options;
|
|
8
8
|
constructor(options) {
|
|
9
9
|
this.options = options;
|
|
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
const section_1 = require("./elements/section");
|
|
7
7
|
class Readme extends projen_1.FileBase {
|
|
8
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.Readme", version: "3.2.
|
|
8
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.Readme", version: "3.2.2" };
|
|
9
9
|
description;
|
|
10
10
|
sections = [];
|
|
11
11
|
constructor(project, options = {}) {
|
|
@@ -1262,6 +1262,11 @@ export interface CdkTypeScriptAppOptions {
|
|
|
1262
1262
|
* @featured true
|
|
1263
1263
|
*/
|
|
1264
1264
|
readonly name: string;
|
|
1265
|
+
/**
|
|
1266
|
+
* Authors whose pull requests the merge queue merges without an approval, such as the single maintainer of a repository, who cannot approve their own pull requests.
|
|
1267
|
+
* @default []
|
|
1268
|
+
*/
|
|
1269
|
+
readonly trustedAuthors?: Array<string>;
|
|
1265
1270
|
/**
|
|
1266
1271
|
* Scan the code with CodeQL on pull requests, pushes to the default branch and weekly.
|
|
1267
1272
|
* @default true
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvamVjdHMvY2RrLXRzL2Nkay10eXBlc2NyaXB0LWFwcC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgdHlwZSB7IGF3c2NkaywgZ2l0aHViLCBHaXRPcHRpb25zLCBHcm91cFJ1bm5lck9wdGlvbnMsIElnbm9yZUZpbGVPcHRpb25zLCBqYXZhc2NyaXB0LCBMb2dnZXJPcHRpb25zLCBQcm9qZWN0LCBQcm9qZW5yY0pzb25PcHRpb25zLCBSZWxlYXNhYmxlQ29tbWl0cywgcmVsZWFzZSwgUmVub3ZhdGVib3RPcHRpb25zLCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgUmVhZG1lT3B0aW9ucyB9IGZyb20gJy4uLy4uLyc7XG5cbi8qKlxuICogQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5TaW5nbGV0b25GdW5jdGlvbmAgZm9yIGVhY2ggYC5zaW5nbGV0b24tbGFtYmRhLnRzYCBoYW5kbGVyIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzaW5nbGV0b25MYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBhd3NjZGsuTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRXh0ZW5zaW9uYCBmb3IgZWFjaCBgLmxhbWJkYS1leHRlbnNpb24udHNgIGVudHJ5cG9pbnQgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5MYW1iZGFGdW5jdGlvbmAgZm9yIGVhY2ggYC5sYW1iZGEudHNgIGhhbmRsZXIgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGRpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgZWFjaCBgLmludGVnLnRzYCBmaWxlIGluIHVuZGVyIHlvdXIgdGVzdCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBBV1MgQ0RLIGludGVnLXJ1bm5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEludGVnUnVubmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgY2xvdWRmcm9udC5leHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uYCBmb3IgZWFjaCBgLmVkZ2UtbGFtYmRhLnRzYCBoYW5kbGVyIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlZGdlTGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwJ3MgZW50cnlwb2ludCAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdoaWNoIGlzIFwic3JjXCIgYnkgZGVmYXVsdCkuXG4gICAqIEBkZWZhdWx0IFwibWFpbi50c1wiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgbGluZSB0byBleGVjdXRlIGluIG9yZGVyIHRvIHN5bnRoZXNpemUgdGhlIENESyBhcHBsaWNhdGlvbiAobGFuZ3VhZ2Ugc3BlY2lmaWMpLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBgY29uc3RydWN0c2AgbGlicmFyeSB0byBkZXBlbmQgb24uXG4gICAqIEBkZWZhdWx0IC0gZm9yIENESyAxLnggdGhlIGRlZmF1bHQgaXMgXCIzLjIuMjdcIiwgZm9yIENESyAyLnggdGhlIGRlZmF1bHQgaXNcblwiMTAuNS4xXCIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RzVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFVzZSBwaW5uZWQgdmVyc2lvbiBpbnN0ZWFkIG9mIGNhcmV0IHZlcnNpb24gZm9yIENESy5cbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBwcmV2ZW50IG1peGVkIHZlcnNpb25zIGZvciB5b3VyIENESyBkZXBlbmRlbmNpZXMgYW5kIHRvIHByZXZlbnQgYXV0by11cGRhdGVzLlxuICAgKiBJZiB5b3UgdXNlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyB0aGlzIHdpbGwgbGV0IHlvdSBkZWZpbmUgdGhlIG1vbWVudCB5b3UgaW5jbHVkZSBicmVha2luZyBjaGFuZ2VzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrVmVyc2lvblBpbm5pbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogVmVyc2lvbiByYW5nZSBvZiB0aGUgQVdTIENESyBDTEkgdG8gZGVwZW5kIG9uLlxuICAgKiBDYW4gYmUgZWl0aGVyIGEgc3BlY2lmaWMgdmVyc2lvbiwgb3IgYW4gTlBNIHZlcnNpb24gcmFuZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBsYXRlc3QgMi54IHZlcnNpb24gd2lsbCBiZSBpbnN0YWxsZWQ7IHlvdSBjYW4gdXNlIHRoaXNcbiAgICogb3B0aW9uIHRvIHJlc3RyaWN0IGl0IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlLlxuICAgKiBAZGVmYXVsdCBcIl4yXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNka0NsaVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIEFXUyBDREsgdG8gZGVwZW5kIG9uLlxuICAgKiBAZGVmYXVsdCBcIjIuMTg5LjFcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogR2xvYiBwYXR0ZXJucyB0byBpbmNsdWRlIGluIGBjZGsgd2F0Y2hgLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hJbmNsdWRlcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBHbG9iIHBhdHRlcm5zIHRvIGV4Y2x1ZGUgZnJvbSBgY2RrIHdhdGNoYC5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoRXhjbHVkZXM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVG8gcHJvdGVjdCB5b3UgYWdhaW5zdCB1bmludGVuZGVkIGNoYW5nZXMgdGhhdCBhZmZlY3QgeW91ciBzZWN1cml0eSBwb3N0dXJlLCB0aGUgQVdTIENESyBUb29sa2l0IHByb21wdHMgeW91IHRvIGFwcHJvdmUgc2VjdXJpdHktcmVsYXRlZCBjaGFuZ2VzIGJlZm9yZSBkZXBsb3lpbmcgdGhlbS5cbiAgICogQGRlZmF1bHQgQXBwcm92YWxMZXZlbC5CUk9BREVOSU5HXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlQXBwcm92YWw/OiBhd3NjZGsuQXBwcm92YWxMZXZlbDtcbiAgLyoqXG4gICAqIEZlYXR1cmUgZmxhZ3MgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBpbiBgY2RrLmpzb25gLlxuICAgKiBNYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrIGFueSBjaGFuZ2VzIHRvIGZlYXR1cmUgZmxhZ3MgaW4gYGNkay5qc29uYCBiZWZvcmUgZGVwbG95aW5nLlxuICAgKiBVbmV4cGVjdGVkIGNoYW5nZXMgbWF5IGNhdXNlIGJyZWFraW5nIGNoYW5nZXMgaW4geW91ciBDREsgYXBwLlxuICAgKiBZb3UgY2FuIG92ZXJ3cml0ZSBhbnkgZmVhdHVyZSBmbGFnIGJ5IHBhc3NpbmcgaXQgaW50byB0aGUgY29udGV4dCBmaWVsZC5cbiAgICogQGRlZmF1bHQgLSBubyBmZWF0dXJlIGZsYWdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IGF3c2Nkay5JQ2RrRmVhdHVyZUZsYWdzO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb250ZXh0IHRvIGluY2x1ZGUgaW4gYGNkay5qc29uYC5cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogY2RrLm91dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiY2RrLm91dFwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjZGtvdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGNvbW1hbmQgdG8gZXhlY3V0ZSBiZWZvcmUgc3ludGhlc2lzLlxuICAgKiBUaGlzIGNvbW1hbmQgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAgKiBydW5uaW5nIGBjZGsgc3ludGhgIG9yIHdoZW4gYGNkayB3YXRjaGAgaWRlbnRpZmllcyBhIGNoYW5nZSBpbiB5b3VyIHNvdXJjZVxuICAgKiBjb2RlIGJlZm9yZSByZWRlcGxveW1lbnQuXG4gICAqXG4gICAqIFRoZSBDREsgQ0xJIHJ1bnMgaXQgdGhyb3VnaCBhIHNoZWxsIG9uIGV2ZXJ5IHN5bnRoZXNpcywgb24gdGhlIG1hY2hpbmUgb2ZcbiAgICogYW55b25lIHdobyBjaGVja3Mgb3V0IHRoZSBwcm9qZWN0LCBzbyBzaGVsbCBzeW50YXggaW4gaXQgaXMgaW50ZXJwcmV0ZWQgYW5kXG4gICAqIHRoZSBjb21tYW5kIHNob3VsZCBiZSBvbmUgeW91IHdvdWxkIHJ1biB5b3Vyc2VsZi5cbiAgICogQGRlZmF1bHQgLSBubyBidWlsZCBjb21tYW5kXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWlsZENvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHZlcnNpb24gdG8gdXNlLlxuICAgKiBOT1RFOiBUeXBlc2NyaXB0IGlzIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZVxuICAgKiBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeSAoZS5nLiBgfjEuMi4zYCkuXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVHlwZS1jaGVjayB0aGUgdGVzdCBzdWl0ZSBhcyBwYXJ0IG9mIHRoZSBgdGVzdGAgdGFzay5cbiAgICogQWRkcyBhIGB0c2MgLS1ub0VtaXRgIHN0ZXAgYWdhaW5zdCB0aGUgZGV2ZWxvcG1lbnQgdHNjb25maWcuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0eXBlY2hlY2tUZXN0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0cy1qZXN0LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdHNKZXN0T3B0aW9ucz86IHR5cGVzY3JpcHQuVHNKZXN0T3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIChhbmQgcGF0aCkgb2YgdGhlIGRldmVsb3BtZW50IHRzY29uZmlnIGZpbGUuXG4gICAqIEJ5IGRlZmF1bHQgdGhpcyBsaXZlcyBpbnNpZGUgdGhlIHRlc3QgZGlyZWN0b3J5IChlLmcuIGB0ZXN0L3RzY29uZmlnLmpzb25gKVxuICAgKiBzbyB0aGF0IHRoZSBUeXBlU2NyaXB0IGxhbmd1YWdlIHNlcnZpY2UgcmVzb2x2ZXMgaXQgYXMgdGhlIG5lYXJlc3QgY29uZmlnXG4gICAqIGZvciB0ZXN0IGZpbGVzLlxuICAgKiBAZGVmYXVsdCAtIFwie3Rlc3RkaXJ9L3RzY29uZmlnLmpzb25cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdEZXZGaWxlPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBDdXN0b20gVFNDb25maWcuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBKZXN0IHRlc3RzIGRpcmVjdG9yeS4gVGVzdHMgZmlsZXMgc2hvdWxkIGJlIG5hbWVkIGB4eHgudGVzdC50c2AuXG4gICAqIElmIHRoaXMgZGlyZWN0b3J5IGlzIHVuZGVyIGBzcmNkaXJgIChlLmcuIGBzcmMvdGVzdGAsIGBzcmMvX190ZXN0c19fYCksXG4gICAqIHRoZW4gdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gYGxpYi9gIGFuZCBleGVjdXRlZCBhcyBqYXZhc2NyaXB0LlxuICAgKiBJZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgb3V0c2lkZSBvZiBgc3JjYCwgdGhlbiB3ZSBjb25maWd1cmUgamVzdCB0b1xuICAgKiBjb21waWxlIHRoZSBjb2RlIGluLW1lbW9yeS5cbiAgICogQGRlZmF1bHQgXCJ0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0IHNvdXJjZXMgZGlyZWN0b3J5LlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmUtdGltZSBzYW1wbGUgaW4gYHNyYy9gIGFuZCBgdGVzdC9gIGlmIHRoZXJlIGFyZSBubyBmaWxlcyB0aGVyZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCBydW5uZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICogVGhpcyBpcyBhIHByb2plY3QtbGV2ZWwgc2V0dGluZyB0aGF0IGNvbXBvbmVudHMgKGUuZy4gcHJvamVucmMpIHdpbGxcbiAgICogdXNlIGFzIHRoZWlyIGRlZmF1bHQgcnVubmVyLlxuICAgKiBAZGVmYXVsdCBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSgpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBydW5uZXI/OiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRSdW5uZXI7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciAucHJvamVucmMudHMuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzT3B0aW9ucz86IHR5cGVzY3JpcHQuUHJvamVucmNPcHRpb25zO1xuICAvKipcbiAgICogVXNlIFR5cGVTY3JpcHQgZm9yIHlvdXIgcHJvamVucmMgZmlsZSAoYC5wcm9qZW5yYy50c2ApLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAcGpuZXcgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNUcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0ICBhcnRpZmFjdHMgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJsaWJcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbGliZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gb3BpbmlvbmF0ZWQgZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlc2xpbnRPcHRpb25zPzogamF2YXNjcmlwdC5Fc2xpbnRPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgZXNsaW50LlxuICAgKiBAZGVmYXVsdCAtIHRydWUsIHVubGVzcyBiaW9tZSBpcyBlbmFibGVkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlc2xpbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIC5kLnRzIGZpbGUgdGhhdCBpbmNsdWRlcyB0aGUgdHlwZSBkZWNsYXJhdGlvbnMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBAZGVmYXVsdCAtIC5kLnRzIGZpbGUgZGVyaXZlZCBmcm9tIHRoZSBwcm9qZWN0J3MgZW50cnlwb2ludCAodXN1YWxseSBsaWIvaW5kZXguZC50cylcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnRUeXBlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY3MgZGlyZWN0b3J5LlxuICAgKiBAZGVmYXVsdCBcImRvY3NcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY2dlbiBieSBUeXBlZG9jLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERvIG5vdCBnZW5lcmF0ZSBhIGRldmVsb3BtZW50IHRzY29uZmlnIGZpbGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWdEZXY/OiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZSB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIE5vZGUuanMgcGFja2FnZSBjYWNoZSBpbiBHaXRIdWIgd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dQYWNrYWdlQ2FjaGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIG5vZGUgdmVyc2lvbiB1c2VkIGluIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cy5cbiAgICogQWx3YXlzIHVzZSB0aGlzIG9wdGlvbiBpZiB5b3VyIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cyByZXF1aXJlIGEgc3BlY2lmaWMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAtIGBtaW5Ob2RlVmVyc2lvbmAgaWYgc2V0LCBvdGhlcndpc2UgYGx0cy8qYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZ2l0IGlkZW50aXR5IHRvIHVzZSBpbiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWIgQWN0aW9ucyB1c2VyXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0dpdElkZW50aXR5PzogZ2l0aHViLkdpdElkZW50aXR5O1xuICAvKipcbiAgICogV29ya2Zsb3cgc3RlcHMgdG8gdXNlIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGlzIHJlcG8uXG4gICAqIEBkZWZhdWx0IFwieWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlICYmIHlhcm4gcHJvamVuXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSByZWxlYXNlIHRvIG5wbSB3aGVuIG5ldyB2ZXJzaW9ucyBhcmUgaW50cm9kdWNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUb05wbT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGQgcmVsZWFzZSBtYW5hZ2VtZW50IHRvIHRoaXMgcHJvamVjdC5cbiAgICogQGRlZmF1bHQgLSB0cnVlIChmYWxzZSBmb3Igc3VicHJvamVjdHMpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiB0aGUgcHVsbCByZXF1ZXN0IHRlbXBsYXRlLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgY29udGVudFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZUNvbnRlbnRzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEluY2x1ZGUgYSBHaXRIdWIgcHVsbCByZXF1ZXN0IHRlbXBsYXRlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdFRlbXBsYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgcHJvamVuIHRvIGluc3RhbGwuXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdHMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qcy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjSnNPcHRpb25zPzogamF2YXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzIChpbiBKYXZhU2NyaXB0KS4gU2V0IHRvIGBmYWxzZWAgaW4gb3JkZXIgdG8gZGlzYWJsZSAucHJvamVucmMuanMgZ2VuZXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHByb2plbnJjSnNvbiBpcyBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgb2YgXCJwcm9qZW5cIiBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIG5vdCBhIHN1YnByb2plY3RcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkRldkRlcGVuZGVuY3k/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByZXR0aWVyT3B0aW9ucz86IGphdmFzY3JpcHQuUHJldHRpZXJPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgcHJldHRpZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcmV0dGllcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgYHBhY2thZ2VgIHRhc2sgdGhhdCB3aWxsIHByb2R1Y2UgYW4gbnBtIHRhcmJhbGwgdW5kZXIgdGhlIGFydGlmYWN0cyBkaXJlY3RvcnkgKGUuZy4gYGRpc3RgKS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIC5ucG1pZ25vcmUgZmlsZS5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbUlnbm9yZU9wdGlvbnM/OiBJZ25vcmVGaWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmluZXMgYW4gLm5wbWlnbm9yZSBmaWxlLiBOb3JtYWxseSB0aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgcGFja2FnZWQgYXMgdGFyYmFsbHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbWlnbm9yZUVuYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSmVzdCBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgamVzdE9wdGlvbnM/OiBqYXZhc2NyaXB0Lkplc3RPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgamVzdCB1bml0IHRlc3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBqZXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW50cmllcyB0byAuZ2l0aWdub3JlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aWdub3JlPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBVcGdyYWRlRGVwZW5kZW5jaWVzYC5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlT3B0aW9ucz86IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnM7XG4gIC8qKlxuICAgKiBVc2UgdGFza3MgYW5kIGdpdGh1YiB3b3JrZmxvd3MgdG8gaGFuZGxlIGRlcGVuZGVuY3kgdXBncmFkZXMuXG4gICAqIENhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGRlcGVuZGFib3RgLlxuICAgKiBAZGVmYXVsdCAtIGB0cnVlYCBmb3Igcm9vdCBwcm9qZWN0cywgYGZhbHNlYCBmb3Igc3VicHJvamVjdHNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGRlcGVuZGFib3QuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90T3B0aW9ucz86IGdpdGh1Yi5EZXBlbmRhYm90T3B0aW9ucztcbiAgLyoqXG4gICAqIFVzZSBkZXBlbmRhYm90IHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBkZXBzVXBncmFkZWAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtYWluIHJlbGVhc2UgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAZmVhdHVyZWQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJlbGVhc2VCcmFuY2g/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29weXJpZ2h0IHllYXJzIHRvIHB1dCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuICAgKiBUaGlzIHZhbHVlIGlzIG9ubHkgdXNlZCBpZiB0aGUgc2VsZWN0ZWQgbGljZW5zZSB0ZXh0IGNvbnRhaW5zIHRoZVxuICAgKiBgJGNvcHlyaWdodF9wZXJpb2RgIHBsYWNlaG9sZGVyLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGVcbiAgICogTVBMLTIuMCBsaWNlbnNlIHRleHQuXG4gICAqIEBkZWZhdWx0IC0gY3VycmVudCB5ZWFyXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb3B5cmlnaHRQZXJpb2Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaWNlbnNlIGNvcHlyaWdodCBvd25lci5cbiAgICogVGhpcyB2YWx1ZSBpcyBvbmx5IHVzZWQgaWYgdGhlIHNlbGVjdGVkIGxpY2Vuc2UgdGV4dCBjb250YWlucyB0aGVcbiAgICogYCRjb3B5cmlnaHRfb3duZXJgIHBsYWNlaG9sZGVyLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGVcbiAgICogTVBMLTIuMCBsaWNlbnNlIHRleHQuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGF1dGhvck5hbWUgb3IgXCJcIiBpZiBgYXV0aG9yTmFtZWAgaXMgdW5kZWZpbmVkLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0T3duZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHNlY3JldCBuYW1lIGZvciBhIHNwZWNpZmllZCBodHRwczovL2NvZGVjb3YuaW8vIHRva2VuLlxuICAgKiBAZGVmYXVsdCAtIE9JREMgYXV0aCBpcyB1c2VkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292VG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgYSBHaXRIdWIgd29ya2Zsb3cgc3RlcCBmb3Igc2VuZGluZyBjb2RlIGNvdmVyYWdlIG1ldHJpY3MgdG8gaHR0cHM6Ly9jb2RlY292LmlvLy5cbiAgICogVXNlcyBjb2RlY292L2NvZGVjb3YtYWN0aW9uLiBCeSBkZWZhdWx0LCBPSURDIGF1dGggaXMgdXNlZC5cbiAgICogQWx0ZXJuYXRpdmVseSBhIHRva2VuIGNhbiBiZSBwcm92aWRlZCB2aWEgYGNvZGVDb3ZUb2tlblNlY3JldGAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB3aGljaCBsaWNlbnNlcyBzaG91bGQgYmUgZGVlbWVkIGFjY2VwdGFibGUgZm9yIHVzZSBieSBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2V0dGluZyB3aWxsIGNhdXNlIHRoZSBidWlsZCB0byBmYWlsLCBpZiBhbnkgcHJvaGliaXRlZCBvciBub3QgYWxsb3dlZCBsaWNlbnNlcyBhcmVzIGVuY291bnRlcmVkLlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2UgY2hlY2tzIGFyZSBydW4gZHVyaW5nIHRoZSBidWlsZCBhbmQgYWxsIGxpY2Vuc2VzIHdpbGwgYmUgYWNjZXB0ZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrTGljZW5zZXM/OiBqYXZhc2NyaXB0LkxpY2Vuc2VDaGVja2VyT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZXJPcHRpb25zPzogamF2YXNjcmlwdC5CdW5kbGVyT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFBSIGJ1aWxkIHdvcmtmbG93LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvd09wdGlvbnM/OiBqYXZhc2NyaXB0LkJ1aWxkV29ya2Zsb3dPcHRpb25zO1xuICAvKipcbiAgICogRGVmaW5lIGEgR2l0SHViIHdvcmtmbG93IGZvciBidWlsZGluZyBQUnMuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBpZiBub3QgYSBzdWJwcm9qZWN0XG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWlsZFdvcmtmbG93PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJpb21lIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBiaW9tZU9wdGlvbnM/OiBqYXZhc2NyaXB0LkJpb21lT3B0aW9ucztcbiAgLyoqXG4gICAqIFNldHVwIEJpb21lLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYmlvbWU/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhcHByb3ZlIGRlcHMgdXBncmFkZSBQUnMsIGFsbG93aW5nIHRoZW0gdG8gYmUgbWVyZ2VkIGJ5IG1lcmdpZnkgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiBUaHJvdyBpZiBzZXQgdG8gdHJ1ZSBidXQgYGF1dG9BcHByb3ZlT3B0aW9uc2AgYXJlIG5vdCBkZWZpbmVkLlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlVXBncmFkZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogU2VjdXJpdHkgYXVkaXQgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0RGVwc09wdGlvbnM/OiBqYXZhc2NyaXB0LkF1ZGl0T3B0aW9ucztcbiAgLyoqXG4gICAqIFJ1biBzZWN1cml0eSBhdWRpdCBvbiBkZXBlbmRlbmNpZXMuXG4gICAqIFdoZW4gZW5hYmxlZCwgY3JlYXRlcyBhbiBcImF1ZGl0XCIgdGFzayB0aGF0IGNoZWNrcyBmb3Iga25vd24gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzXG4gICAqIGluIGRlcGVuZGVuY2llcy4gQnkgZGVmYXVsdCwgcnVucyBkdXJpbmcgZXZlcnkgYnVpbGQgYW5kIGNoZWNrcyBmb3IgXCJoaWdoXCIgc2V2ZXJpdHlcbiAgICogdnVsbmVyYWJpbGl0aWVzIG9yIGFib3ZlIGluIGFsbCBkZXBlbmRlbmNpZXMgKGluY2x1ZGluZyBkZXYgZGVwZW5kZW5jaWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0RGVwcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB3aGljaCB3aWxsIGNvbnRhaW4gYnVpbGQgYXJ0aWZhY3RzLlxuICAgKiBAZGVmYXVsdCBcImRpc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBHcm91cCBzZWxlY3Rpb24gb3B0aW9ucy5cbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBnaXRodWJPcHRpb25zLndvcmtmbG93UnVuc09uR3JvdXBgIG9uIHRoZSBwcm9qZWN0LCBvciBgcnVuc09uR3JvdXBgIG9uIGBSZWxlYXNlT3B0aW9uc2BcbiAgICogQHN0YWJpbGl0eSBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgdGFyZ2V0IFJ1bm5lciBHcm91cCBieSBuYW1lIGFuZC9vciBsYWJlbHNcbiAgICogQHRocm93cyB7RXJyb3J9IGlmIGJvdGggYHJ1bnNPbmAgYW5kIGBydW5zT25Hcm91cGAgYXJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dSdW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucztcbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgc2VsZWN0aW9uIGxhYmVscy5cbiAgICogQGRlZmF1bHQgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdpdGh1Yk9wdGlvbnMud29ya2Zsb3dSdW5zT25gIG9uIHRoZSBwcm9qZWN0LCBvciBgcnVuc09uYCBvbiBgUmVsZWFzZU9wdGlvbnNgXG4gICAqIEBzdGFiaWxpdHkgZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgYnkgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byB1c2UgZm9yIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBpbWFnZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dDb250YWluZXJJbWFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIHVzZWQgd2hlbiBjcmVhdGluZyBjaGFuZ2Vsb2cgd2l0aCBjb21taXQtYW5kLXRhZy12ZXJzaW9uIHBhY2thZ2UuXG4gICAqIEdpdmVuIHZhbHVlcyBlaXRoZXIgYXBwZW5kIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvciBvdmVyd3JpdGUgdmFsdWVzIGluIGl0LlxuICAgKiBAZGVmYXVsdCAtIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYXBwbGljYWJsZSBmb3IgR2l0SHViIHJlcG9zaXRvcmllc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBBIHNldCBvZiB3b3JrZmxvdyBzdGVwcyB0byBleGVjdXRlIGluIG9yZGVyIHRvIHNldHVwIHRoZSB3b3JrZmxvdyBjb250YWluZXIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlV29ya2Zsb3dTZXR1cFN0ZXBzPzogQXJyYXk8Z2l0aHViLndvcmtmbG93cy5Kb2JTdGVwPjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFwicmVsZWFzZVwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlV29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgcmVsZWFzZSB0cmlnZ2VyIHRvIHVzZS5cbiAgICogQGRlZmF1bHQgLSBDb250aW51b3VzIHJlbGVhc2VzIChgUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpYClcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyPzogcmVsZWFzZS5SZWxlYXNlVHJpZ2dlcjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZyB2ZXJzaW9uIG51bWJlcnMuXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICogQGRlZmF1bHQgXCJ2XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdG8gYXBwbHkgdG8gaXNzdWVzIGluZGljYXRpbmcgcHVibGlzaCBmYWlsdXJlcy5cbiAgICogT25seSBhcHBsaWVzIGlmIGByZWxlYXNlRmFpbHVyZUlzc3VlYCBpcyB0cnVlLlxuICAgKiBAZGVmYXVsdCBcImZhaWxlZC1yZWxlYXNlXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VGYWlsdXJlSXNzdWVMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGdpdGh1YiBpc3N1ZSBvbiBldmVyeSBmYWlsZWQgcHVibGlzaGluZyB0YXNrLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUZhaWx1cmVJc3N1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIEFjdGlvbnMgZW52aXJvbm1lbnQgdXNlZCBmb3IgdGhlIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGFuIGV4cGxpY2l0IGFwcHJvdmFsIHN0ZXAgdG8gdGhlIHJlbGVhc2VcbiAgICogb3IgbGltaXQgd2hvIGNhbiBpbml0aWF0ZSBhIHJlbGVhc2UgdGhyb3VnaCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIHJ1bGVzLlxuICAgKlxuICAgKiBXaGVuIG11bHRpcGxlIGFydGlmYWN0cyBhcmUgcmVsZWFzZWQsIHRoZSBlbnZpcm9ubWVudCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICogb24gYSBwZXIgYXJ0aWZhY3QgYmFzaXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgdXNlZCwgdW5sZXNzIHNldCBhdCB0aGUgYXJ0aWZhY3QgbGV2ZWxcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VFbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgYWRkaXRpb25hbCByZWxlYXNlIGJyYW5jaGVzLlxuICAgKiBBIHdvcmtmbG93IHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaFxuICAgKiByZWxlYXNlIGJyYW5jaCB3aGljaCB3aWxsIHB1Ymxpc2ggcmVsZWFzZXMgZnJvbSBjb21taXRzIGluIHRoaXMgYnJhbmNoLlxuICAgKiBFYWNoIHJlbGVhc2UgYnJhbmNoIF9tdXN0XyBiZSBhc3NpZ25lZCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIHdoaWNoIGlzIHVzZWRcbiAgICogdG8gZW5mb3JjZSB0aGF0IHZlcnNpb25zIHB1Ymxpc2hlZCBmcm9tIHRoYXQgYnJhbmNoIGFsd2F5cyB1c2UgdGhhdCBtYWpvclxuICAgKiB2ZXJzaW9uLiBJZiBtdWx0aXBsZSBicmFuY2hlcyBhcmUgdXNlZCwgdGhlIGBtYWpvclZlcnNpb25gIGZpZWxkIG11c3QgYWxzb1xuICAgKiBiZSBwcm92aWRlZCBmb3IgdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYnJhbmNoZXMgYXJlIHVzZWQgZm9yIHJlbGVhc2UuIHlvdSBjYW4gdXNlXG5gYWRkQnJhbmNoKClgIHRvIGFkZCBhZGRpdGlvbmFsIGJyYW5jaGVzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgcmVsZWFzZS5CcmFuY2hPcHRpb25zPjtcbiAgLyoqXG4gICAqIEZpbmQgY29tbWl0cyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIHJlbGVhc2FibGUgVXNlZCB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICAgKiBAZGVmYXVsdCBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0cz86IFJlbGVhc2FibGVDb21taXRzO1xuICAvKipcbiAgICogRGVmaW5lIHB1Ymxpc2hpbmcgdGFza3MgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgbWFudWFsbHkgYXMgd2VsbCBhcyB3b3JrZmxvd3MuXG4gICAqIE5vcm1hbGx5LCBwdWJsaXNoaW5nIG9ubHkgaGFwcGVucyB3aXRoaW4gYXV0b21hdGVkIHdvcmtmbG93cy4gRW5hYmxlIHRoaXNcbiAgICogaW4gb3JkZXIgdG8gY3JlYXRlIGEgcHVibGlzaGluZyB0YXNrIGZvciBlYWNoIHB1Ymxpc2hpbmcgYWN0aXZpdHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVGFza3M/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5zdGVhZCBvZiBhY3R1YWxseSBwdWJsaXNoaW5nIHRvIHBhY2thZ2UgbWFuYWdlcnMsIGp1c3QgcHJpbnQgdGhlIHB1Ymxpc2hpbmcgY29tbWFuZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hEcnlSdW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQnVtcCB2ZXJzaW9ucyBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaCBhcyBwcmUtcmVsZWFzZXMgKGUuZy4gXCJiZXRhXCIsIFwiYWxwaGFcIiwgXCJwcmVcIikuXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHNlbWFudGljIHZlcnNpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogU3RlcHMgdG8gZXhlY3V0ZSBhZnRlciBidWlsZCBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogVGhlIG5wbURpc3RUYWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICogVG8gc2V0IHRoZSBucG0gZGlzdC10YWcgZm9yIHJlbGVhc2UgYnJhbmNoZXMsIHNldCB0aGUgYG5wbURpc3RUYWdgIHByb3BlcnR5XG4gICAqIGZvciBlYWNoIGJyYW5jaC5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtRGlzdFRhZz86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2hlbGwgY29tbWFuZCB0byBjb250cm9sIHRoZSBuZXh0IHZlcnNpb24gdG8gcmVsZWFzZS5cbiAgICogSWYgcHJlc2VudCwgdGhpcyBzaGVsbCBjb21tYW5kIHdpbGwgYmUgcnVuIGJlZm9yZSB0aGUgYnVtcCBpcyBleGVjdXRlZCwgYW5kXG4gICAqIGl0IGRldGVybWluZXMgd2hhdCB2ZXJzaW9uIHRvIHJlbGVhc2UuIEl0IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIGZvbGxvd2luZ1xuICAgKiBlbnZpcm9ubWVudDpcbiAgICpcbiAgICogLSBXb3JraW5nIGRpcmVjdG9yeTogdGhlIHByb2plY3QgZGlyZWN0b3J5LlxuICAgKiAtIGAkVkVSU0lPTmA6IHRoZSBjdXJyZW50IHZlcnNpb24uIExvb2tzIGxpa2UgYDEuMi4zYC5cbiAgICogLSBgJExBVEVTVF9UQUdgOiB0aGUgbW9zdCByZWNlbnQgdGFnLiBMb29rcyBsaWtlIGBwcmVmaXgtdjEuMi4zYCwgb3IgbWF5IGJlIHVuc2V0LlxuICAgKiAtIGAkU1VHR0VTVEVEX0JVTVBgOiB0aGUgc3VnZ2VzdGVkIGJ1bXAgYWN0aW9uIGJhc2VkIG9uIGNvbW1pdHMuIE9uZSBvZiBgbWFqb3J8bWlub3J8cGF0Y2h8bm9uZWAuXG4gICAqXG4gICAqIFRoZSBjb21tYW5kIHNob3VsZCBwcmludCBvbmUgb2YgdGhlIGZvbGxvd2luZyB0byBgc3Rkb3V0YDpcbiAgICpcbiAgICogLSBOb3RoaW5nOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gY29tbWl0IGhpc3RvcnkuXG4gICAqIC0gYHgueS56YDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBgeC55LnpgLlxuICAgKiAtIGBtYWpvcnxtaW5vcnxwYXRjaGA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBudW1iZXJcbiAgICogICB3aXRoIHRoZSBpbmRpY2F0ZWQgY29tcG9uZW50IGJ1bXBlZC5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgbWluTWFqb3JWZXJzaW9uYDsgdGhlIGludm9rZWRcbiAgICogc2NyaXB0IGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIGVmZmVjdHMgb2YgYG1pbk1ham9yVmVyc2lvbmAuXG4gICAqIEBkZWZhdWx0IC0gVGhlIG5leHQgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGNvbW1pdCBoaXN0b3J5IGFuZCBwcm9qZWN0IHNldHRpbmdzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW1hbCBNYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXQgdG8gMSwgYXMgYnJlYWtpbmcgY2hhbmdlcyBiZWZvcmUgdGhlIDEueCBtYWpvclxuICAgKiByZWxlYXNlIGFyZSBub3QgaW5jcmVtZW50aW5nIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci5cbiAgICpcbiAgICogQ2FuIG5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCBgbWFqb3JWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIHZlcnNpb24gaXMgYmVpbmcgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1ham9yIHZlcnNpb24gdG8gcmVsZWFzZSBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICogSWYgdGhpcyBpcyBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbWFqb3IgdmVyc2lvbiBsaW5lLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB3ZSBidW1wIHRoZSBnbG9iYWwgbGF0ZXN0IHZlcnNpb24uXG4gICAqIEBkZWZhdWx0IC0gTWFqb3IgdmVyc2lvbiBpcyBub3QgZW5mb3JjZWQuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBHaXRIdWIgc2hvdWxkIGV4cGxpY2l0bHkgbWFyayB0aGUgcmVsZWFzZSBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaCBhcyB0aGUgbGF0ZXN0IHJlbGVhc2UuXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gbWFyayB0aGUgcmVsZWFzZSBhcyBsYXRlc3QsIG9yIGBmYWxzZWAgdG8gZXhwbGljaXRseSBub3RcbiAgICogbWFyayBpdCBhcyBsYXRlc3QuXG4gICAqIEBkZWZhdWx0IC0gR2l0SHViIGRldGVybWluZXMgdGhlIGxhdGVzdCByZWxlYXNlIGJhc2VkIG9uIGRhdGUgYW5kIHNlbWFudGljIHZlcnNpb24uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZWxlYXNlTGF0ZXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICogQGRlZmF1bHQgLSBBIHJlY2VudCB2ZXJzaW9uIG9mIFwiY29tbWl0LWFuZC10YWctdmVyc2lvblwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidW1wUGFja2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFlhcm4gQmVycnkuXG4gICAqIEBkZWZhdWx0IC0gWWFybiBCZXJyeSB2NCB3aXRoIGFsbCBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHlhcm5CZXJyeU9wdGlvbnM/OiBqYXZhc2NyaXB0Lllhcm5CZXJyeU9wdGlvbnM7XG4gIC8qKlxuICAgKiBQYWNrYWdlJ3MgU3RhYmlsaXR5LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhYmlsaXR5Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHJpdmF0ZWx5IGhvc3RlZCBzY29wZWQgcGFja2FnZXMuXG4gICAqIEBkZWZhdWx0IC0gZmV0Y2ggYWxsIHNjb3BlZCBwYWNrYWdlcyBmcm9tIHRoZSBwdWJsaWMgbnBtIHJlZ2lzdHJ5XG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzY29wZWRQYWNrYWdlc09wdGlvbnM/OiBBcnJheTxqYXZhc2NyaXB0LlNjb3BlZFBhY2thZ2VzT3B0aW9ucz47XG4gIC8qKlxuICAgKiBJZiB0aGUgcGFja2FnZS5qc29uIGZvciB5b3VyIHBhY2thZ2UgaXMgbm90IGluIHRoZSByb290IGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUgaWYgaXQgaXMgcGFydCBvZiBhIG1vbm9yZXBvKSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgbGl2ZXMuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5RGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgaXMgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgeW91ciBwYWNrYWdlIGxpdmVzLlxuICAgKiBTZWUgaHR0cHM6Ly9jbGFzc2ljLnlhcm5wa2cuY29tL2VuL2RvY3MvcGFja2FnZS1qc29uLyN0b2MtcmVwb3NpdG9yeVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIFBOUE0gdG8gdXNlIGlmIHVzaW5nIFBOUE0gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwiMTAuMzMuMFwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHBucG0uXG4gICAqIEBkZWZhdWx0IC0gYWxsIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbU9wdGlvbnM/OiBqYXZhc2NyaXB0LlBucG1PcHRpb25zO1xuICAvKipcbiAgICogUGVlciBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBEZXBlbmRlbmNpZXMgbGlzdGVkIGhlcmUgYXJlIHJlcXVpcmVkIHRvXG4gICAqIGJlIGluc3RhbGxlZCAoYW5kIHNhdGlzZmllZCkgYnkgdGhlIF9jb25zdW1lcl8gb2YgdGhpcyBsaWJyYXJ5LiBVc2luZyBwZWVyXG4gICAqIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBzaW5nbGUgbW9kdWxlIG9mIGEgY2VydGFpblxuICAgKiBsaWJyYXJ5IGV4aXN0cyBpbiB0aGUgYG5vZGVfbW9kdWxlc2AgdHJlZSBvZiB5b3VyIGNvbnN1bWVycy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHByaW9yIHRvIG5wbUA3LCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgX25vdF8gYXV0b21hdGljYWxseVxuICAgKiBpbnN0YWxsZWQsIHdoaWNoIG1lYW5zIHRoYXQgYWRkaW5nIHBlZXIgZGVwZW5kZW5jaWVzIHRvIGEgbGlicmFyeSB3aWxsIGJlIGFcbiAgICogYnJlYWtpbmcgY2hhbmdlIGZvciB5b3VyIGN1c3RvbWVycy5cbiAgICpcbiAgICogVW5sZXNzIGBwZWVyRGVwZW5kZW5jeU9wdGlvbnMucGlubmVkRGV2RGVwZW5kZW5jeWAgaXMgZGlzYWJsZWQgKGl0IGlzXG4gICAqIGVuYWJsZWQgYnkgZGVmYXVsdCksIHByb2plbiB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIGEgZGV2IGRlcGVuZGVuY3kgd2l0aCBhXG4gICAqIHBpbm5lZCB2ZXJzaW9uIGZvciBlYWNoIHBlZXIgZGVwZW5kZW5jeS4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHlvdSBidWlsZCAmXG4gICAqIHRlc3QgeW91ciBtb2R1bGUgYWdhaW5zdCB0aGUgbG93ZXN0IHBlZXIgdmVyc2lvbiByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBwZWVyRGVwc2AuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jeU9wdGlvbnM/OiBqYXZhc2NyaXB0LlBlZXJEZXBlbmRlbmN5T3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSBcIm5hbWVcIiBpbiBwYWNrYWdlLmpzb24uXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHMgdG8gcHJvamVjdCBuYW1lXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqIEBmZWF0dXJlZCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBOb2RlIFBhY2thZ2UgTWFuYWdlciB1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICogQGRlZmF1bHQgLSBEZXRlY3RlZCBmcm9tIHRoZSBjYWxsaW5nIHByb2Nlc3Mgb3IgYFlBUk5fQ0xBU1NJQ2AgaWYgZGV0ZWN0aW9uIGZhaWxzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAcGpuZXcgJFBBQ0tBR0VfTUFOQUdFUlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI/OiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlcjtcbiAgLyoqXG4gICAqIFVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIHB1Ymxpc2hpbmcgdG8gbnBtanMuY29tIE5lZWRzIHRvIGJlIHByZS1jb25maWd1cmVkIG9uIG5wbS5qcyB0byB3b3JrLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBucG1UcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBOUE0gdG9rZW4gdG8gdXNlIHdoZW4gcHVibGlzaGluZyBwYWNrYWdlcy5cbiAgICogQGRlZmF1bHQgXCJOUE1fVE9LRU5cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICAgKiBNdXN0IGJlIGEgVVJMIChlLmcuIHN0YXJ0IHdpdGggXCJodHRwczovL1wiIG9yIFwiaHR0cDovL1wiKVxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbVJlZ2lzdHJ5VXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogU2hvdWxkIHByb3ZlbmFuY2Ugc3RhdGVtZW50cyBiZSBnZW5lcmF0ZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuXG4gICAqIEEgc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlciBpcyByZXF1aXJlZCB0byBwdWJsaXNoIGEgcGFja2FnZSB3aXRoIG5wbSBwcm92ZW5hbmNlIHN0YXRlbWVudHMgYW5kXG4gICAqIHlvdSB3aWxsIG5lZWQgdG8gdXNlIGEgc3VwcG9ydGVkIENJL0NEIHByb3ZpZGVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHByb2plbiBgUmVsZWFzZWAgYW5kIGBQdWJsaXNoZXJgIGNvbXBvbmVudHMgYXJlIHVzaW5nIGBwdWJsaWJgIHRvIHB1Ymxpc2ggcGFja2FnZXMsXG4gICAqIHdoaWNoIGlzIHVzaW5nIG5wbSBpbnRlcm5hbGx5IGFuZCBzdXBwb3J0cyBwcm92ZW5hbmNlIHN0YXRlbWVudHMgaW5kZXBlbmRlbnRseSBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgcHVibGljIHBhY2thZ2VzLCBmYWxzZSBvdGhlcndpc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbVByb3ZlbmFuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQWNjZXNzIGxldmVsIG9mIHRoZSBucG0gcGFja2FnZS5cbiAgICogQGRlZmF1bHQgLSBmb3Igc2NvcGVkIHBhY2thZ2VzIChlLmcuIGBmb29AYmFyYCksIHRoZSBkZWZhdWx0IGlzXG5gTnBtQWNjZXNzLlJFU1RSSUNURURgLCBmb3Igbm9uLXNjb3BlZCBwYWNrYWdlcywgdGhlIGRlZmF1bHQgaXNcbmBOcG1BY2Nlc3MuUFVCTElDYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbUFjY2Vzcz86IGphdmFzY3JpcHQuTnBtQWNjZXNzO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbm9kZSB2ZXJzaW9uIHJlcXVpcmVkIGJ5IHRoaXMgcGFja2FnZSB0byBmdW5jdGlvbi4gTW9zdCBwcm9qZWN0cyBzaG91bGQgbm90IHVzZSB0aGlzIG9wdGlvbi5cbiAgICogVGhlIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBwYWNrYWdlIGlzIGluY29tcGF0aWJsZSB3aXRoIGFueSBvbGRlciB2ZXJzaW9ucyBvZiBub2RlLlxuICAgKiBUaGlzIHJlcXVpcmVtZW50IGlzIGVuZm9yY2VkIHZpYSB0aGUgZW5naW5lcyBmaWVsZC5cbiAgICpcbiAgICogWW91IHdpbGwgbm9ybWFsbHkgbm90IG5lZWQgdG8gc2V0IHRoaXMgb3B0aW9uLCBldmVuIGlmIHlvdXIgcGFja2FnZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBFT0wgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogQ29uc2lkZXIgdGhpcyBvcHRpb24gb25seSBpZiB5b3VyIHBhY2thZ2UgZGVwZW5kcyBvbiBhIHNwZWNpZmljIGZlYXR1cmUsIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBpbiBvdGhlciBMVFMgdmVyc2lvbnMuXG4gICAqIFNldHRpbmcgdGhpcyBvcHRpb24gaGFzIHZlcnkgaGlnaCBpbXBhY3Qgb24gdGhlIGNvbnN1bWVycyBvZiB5b3VyIHBhY2thZ2UsXG4gICAqIGFzIHBhY2thZ2UgbWFuYWdlcnMgd2lsbCBhY3RpdmVseSBwcmV2ZW50IHVzYWdlIHdpdGggbm9kZSB2ZXJzaW9ucyB5b3UgaGF2ZSBtYXJrZWQgYXMgaW5jb21wYXRpYmxlLlxuICAgKlxuICAgKiBUbyBjaGFuZ2UgdGhlIG5vZGUgdmVyc2lvbiBvZiB5b3VyIENJL0NEIHdvcmtmbG93cywgdXNlIGB3b3JrZmxvd05vZGVWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBubyBtaW5pbXVtIHZlcnNpb24gaXMgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1pbk5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbm9kZSB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGlzIHBhY2thZ2UuIE1vc3QgcHJvamVjdHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBvcHRpb24uXG4gICAqIFRoZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFja2FnZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbnkgbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogVGhpcyByZXF1aXJlbWVudCBpcyBlbmZvcmNlZCB2aWEgdGhlIGVuZ2luZXMgZmllbGQuXG4gICAqXG4gICAqIFlvdSB3aWxsIG5vcm1hbGx5IG5vdCBuZWVkIHRvIHNldCB0aGlzIG9wdGlvbi5cbiAgICogQ29uc2lkZXIgdGhpcyBvcHRpb24gb25seSBpZiB5b3VyIHBhY2thZ2UgaXMga25vd24gdG8gbm90IGZ1bmN0aW9uIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogQGRlZmF1bHQgLSBubyBtYXhpbXVtIHZlcnNpb24gaXMgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1heE5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgbGljZW5zZSBzaG91bGQgYmUgYWRkZWQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpY2Vuc2UncyBTUERYIGlkZW50aWZpZXIuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi90cmVlL21haW4vbGljZW5zZS10ZXh0IGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpY2Vuc2VzLlxuICAgKiBVc2UgdGhlIGBsaWNlbnNlZGAgb3B0aW9uIGlmIHlvdSB3YW50IHRvIG5vIGxpY2Vuc2UgdG8gYmUgc3BlY2lmaWVkLlxuICAgKiBAZGVmYXVsdCBcIkFwYWNoZS0yLjBcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEtleXdvcmRzIHRvIGluY2x1ZGUgaW4gYHBhY2thZ2UuanNvbmAuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBQYWNrYWdlJ3MgSG9tZXBhZ2UgLyBXZWJzaXRlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgaG9tZXBhZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb2R1bGUgZW50cnlwb2ludCAoYG1haW5gIGluIGBwYWNrYWdlLmpzb25gKS5cbiAgICogU2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBub3QgaW5jbHVkZSBgbWFpbmAgaW4geW91ciBwYWNrYWdlLmpzb25cbiAgICogQGRlZmF1bHQgXCJsaWIvaW5kZXguanNcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgYGRldkVuZ2luZXNgIGZpZWxkIGluIGBwYWNrYWdlLmpzb25gLlxuICAgKiBUaGUgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGJhc2VkIG9uXG4gICAqIHRoZSByZXNvbHZlZCBgcGFja2FnZU1hbmFnZXJgIHZhbHVlLiBBbnkgZmllbGRzIHByb3ZpZGVkIGhlcmUgYXJlIG1lcmdlZFxuICAgKiB3aXRoIHRoZSBhdXRvLXBvcHVsYXRlZCBgcGFja2FnZU1hbmFnZXJgIGVudHJ5LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2RW5naW5lcz86IGphdmFzY3JpcHQuRGV2RW5naW5lcztcbiAgLyoqXG4gICAqIEJ1aWxkIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIFRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIG9ubHkgYmVcbiAgICogYXZhaWxhYmxlIGluIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgYnV0IHdpbGwgbm90IGJlIGZldGNoZWQgd2hlbiB0aGlzXG4gICAqIG1vZHVsZSBpcyBjb25zdW1lZC5cbiAgICpcbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICogQGZlYXR1cmVkIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRldkRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIGlzIGp1c3QgYSBzdHJpbmcgdGhhdCBoZWxwcyBwZW9wbGUgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgcGFja2FnZS5cbiAgICogSXQgY2FuIGJlIHVzZWQgd2hlbiBzZWFyY2hpbmcgZm9yIHBhY2thZ2VzIGluIGEgcGFja2FnZSBtYW5hZ2VyIGFzIHdlbGwuXG4gICAqIFNlZSBodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vZW4vZG9jcy9wYWNrYWdlLWpzb24vI3RvYy1kZXNjcmlwdGlvblxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAZmVhdHVyZWQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSdW50aW1lIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICogQGZlYXR1cmVkIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBkZWxldGUgbG9ja2ZpbGVzIGZyb20gcGFja2FnZSBtYW5hZ2VycyB0aGF0IGFyZSBub3QgdGhlIGFjdGl2ZSBvbmUuXG4gICAqIE9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGxvY2tmaWxlIGZvciB0aGUgY29uZmlndXJlZCBwYWNrYWdlXG4gICAqIG1hbmFnZXIgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gbWlncmF0aW5nIGJldHdlZW4gcGFja2FnZSBtYW5hZ2VycyB0byBhdm9pZCBjb25mbGljdHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9ycGhhbmVkTG9ja0ZpbGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZCBhIGBkZWR1cGVgIHRhc2sgdGhhdCBkZWR1cGxpY2F0ZXMgcHJvamVjdCBkZXBlbmRlbmNpZXMuXG4gICAqIERlZHVwbGljYXRpb24gcHJldmVudHMgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcGFja2FnZSBmcm9tIGJlaW5nXG4gICAqIGluc3RhbGxlZCwgaWYgYSBzaW5nbGUgdmVyc2lvbiBjYW4gc2F0aXNmeSBhbGwgcmVxdWVzdGVkIHZlcnNpb24gcmFuZ2VzLlxuICAgKiBUaGlzIHByZXZlbnRzIHZlcnNpb24gcHJvbGlmZXJhdGlvbiBhbmQgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiB0cmVlLlxuICAgKlxuICAgKiBUaGUgYmVoYXZpb3IgZGVwZW5kcyBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyOlxuICAgKiAtIG5wbTogcnVucyBgbnBtIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC5cbiAgICogLSBwbnBtOiBydW5zIGBwbnBtIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC5cbiAgICogLSBZYXJuIEJlcnJ5OiBydW5zIGB5YXJuIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC4gSWZcbiAgICogICBgeWFybkJlcnJ5T3B0aW9ucy5kZWR1cGVQYWNrYWdlc2AgaXMgc2V0LCBvbmx5IHRoZSBsaXN0ZWQgcGFja2FnZXMgYXJlXG4gICAqICAgZGVkdXBsaWNhdGVkLlxuICAgKiAtIFlhcm4gQ2xhc3NpYzogYHlhcm4gaW5zdGFsbGAgYWxyZWFkeSBkZWR1cGxpY2F0ZXMsIHNvIHRoZSB0YXNrIG9ubHlcbiAgICogICBwcmludHMgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlLlxuICAgKiAtIEJ1bjogbm90IHN1cHBvcnRlZCwgZW5hYmxpbmcgdGhpcyBvcHRpb24gdGhyb3dzIGFuIGVycm9yLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlLCB1bmxlc3MgYHlhcm5CZXJyeU9wdGlvbnMuZGVkdXBlUGFja2FnZXNgIGlzIHNldFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlRGVwcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHZhbHVlcyBhdmFpbGFibGUgdG8gcGFja2FnZSBzY3JpcHRzIGF0IHJ1bnRpbWUuXG4gICAqIFZhbHVlcyBzaG91bGQgYmUgSlNPTi1zZXJpYWxpemFibGUuXG4gICAqIEBkZWZhdWx0IC0gbm8gcGFja2FnZSBjb25maWd1cmF0aW9uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgbnBtIHBhY2thZ2VzIHVzaW5nIEFXUyBDb2RlQXJ0aWZhY3QuXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgaWYgcHVibGlzaGluZyBwYWNrYWdlcyB0bywgb3IgaW5zdGFsbGluZyBzY29wZWQgcGFja2FnZXMgZnJvbSBBV1MgQ29kZUFydGlmYWN0XG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3RPcHRpb25zPzogamF2YXNjcmlwdC5Db2RlQXJ0aWZhY3RPcHRpb25zO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgQnVuIHRvIHVzZSBpZiB1c2luZyBCdW4gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1blZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGRlcGVuZGVuY2llcyB0byBidW5kbGUgaW50byB0aGlzIG1vZHVsZS5cbiAgICogVGhlc2UgbW9kdWxlcyB3aWxsIGJlXG4gICAqIGFkZGVkIGJvdGggdG8gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb24gYW5kIGBidW5kbGVkRGVwZW5kZW5jaWVzYCBzZWN0aW9uIG9mXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIFRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byBvbmx5IHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGhlcmUgKGUuZy5cbiAgICogYGV4cHJlc3NgKS4gVGhpcyB3aWxsIGJlaGF2ZSBzaW1pbGFyIHRvIGBwbnBtIGFkZGAgb3IgYG5wbSBpbnN0YWxsYCBpbiB0aGVcbiAgICogc2Vuc2UgdGhhdCBpdCB3aWxsIGFkZCB0aGUgbW9kdWxlIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIGBwYWNrYWdlLmpzb25gXG4gICAqIGZpbGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gKGBeYCkuIFlvdSBjYW4gc3BlY2lmeSBzZW12ZXIgcmVxdWlyZW1lbnRzIGluXG4gICAqIHRoZSBzYW1lIHN5bnRheCBwYXNzZWQgdG8gYHBucG0gYWRkYCBvciBgbnBtIGlgIChlLmcuIGBleHByZXNzQF4yYCkgYW5kXG4gICAqIHRoaXMgd2lsbCBiZSB3aGF0IHlvdXIgYHBhY2thZ2UuanNvbmAgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidW5kbGVkRGVwcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgdXJsIHRvIHlvdXIgcHJvamVjdCdzIGlzc3VlIHRyYWNrZXIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWdzVXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gd2hpY2ggaXNzdWVzIHNob3VsZCBiZSByZXBvcnRlZC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1Z3NFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEJpbmFyeSBwcm9ncmFtcyB2ZW5kZWQgd2l0aCB5b3VyIG1vZHVsZS5cbiAgICogWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8gYWRkL2N1c3RvbWl6ZSBob3cgYmluYXJpZXMgYXJlIHJlcHJlc2VudGVkIGluXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAsIGJ1dCB1bmxlc3MgYGF1dG9EZXRlY3RCaW5gIGlzIGBmYWxzZWAsIGV2ZXJ5XG4gICAqIGV4ZWN1dGFibGUgZmlsZSB1bmRlciBgYmluYCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhpcyBzZWN0aW9uLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYmluPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIGFsbCBleGVjdXRhYmxlcyB1bmRlciB0aGUgYGJpbmAgZGlyZWN0b3J5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmAgZmlsZSB1bmRlciB0aGUgYGJpbmAgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0RldGVjdEJpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRob3IncyBVUkwgLyBXZWJzaXRlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yVXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogSXMgdGhlIGF1dGhvciBhbiBvcmdhbml6YXRpb24uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhdXRob3JPcmdhbml6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0aG9yJ3MgbmFtZS5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRob3IncyBlLW1haWwuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhdXRob3JFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgZGVwZW5kZW5jeSAocGFja2FnZSkgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gbGlmZWN5Y2xlIGluc3RhbGwgc2NyaXB0cyAoYHByZWluc3RhbGxgLCBgaW5zdGFsbGAsIGBwb3N0aW5zdGFsbGAsIGBwcmVwYXJlYCkgZHVyaW5nIGRlcGVuZGVuY3kgaW5zdGFsbGF0aW9uLlxuICAgKiBUaGVzZSBzY3JpcHRzIGNhbiBleGVjdXRlIGFyYml0cmFyeSBjb2RlLCBtYWtpbmcgdGhlbSBhIGNvbW1vblxuICAgKiBzdXBwbHktY2hhaW4gYXR0YWNrIHZlY3Rvci4gUGFja2FnZSBtYW5hZ2VycyBhcmUgbW92aW5nIHRvd2FyZFxuICAgKiBibG9ja2luZyB0aGVtIGJ5IGRlZmF1bHQgYW5kIHJlcXVpcmluZyBhbiBleHBsaWNpdCBhbGxvd2xpc3QuXG4gICAqIENvbmZpZ3VyaW5nIGBhbGxvd1NjcmlwdHNgIHNldHMgdXAgdGhhdCBhbGxvd2xpc3Qgc28gc2NyaXB0cyBvbmx5IHJ1blxuICAgKiBmb3IgdGhlIHBhY2thZ2VzIHlvdSBoYXZlIGV4cGxpY2l0bHkgcmV2aWV3ZWQgYW5kIHRydXN0LlxuICAgKlxuICAgKiBTdXBwb3J0IGZvciB0aGlzIHNldHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJlZCBgcGFja2FnZU1hbmFnZXJgOlxuICAgKlxuICAgKiAtIGBOUE1gOiB3cml0dGVuIHRvIHRoZSBuYXRpdmUgYGFsbG93U2NyaXB0c2AgZmllbGQgaW4gYHBhY2thZ2UuanNvbmBcbiAgICogICAocmVxdWlyZXMgbnBtID49IDExLjE2OyBzZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGkvdjExL2NvbW1hbmRzL25wbS1hcHByb3ZlLXNjcmlwdHMpLlxuICAgKiAtIGBCVU5gOiB3cml0dGVuIHRvIHRoZSBuYXRpdmUgYHRydXN0ZWREZXBlbmRlbmNpZXNgIGZpZWxkIGluXG4gICAqICAgYHBhY2thZ2UuanNvbmAgKHNlZSBodHRwczovL2J1bi5jb20vZG9jcy9wbS9saWZlY3ljbGUpLlxuICAgKiAtIGBQTlBNYDogd3JpdHRlbiB0byB0aGUgYG9ubHlCdWlsdERlcGVuZGVuY2llc2Agc2V0dGluZyBpblxuICAgKiAgIGBwbnBtLXdvcmtzcGFjZS55YW1sYCAoc2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNvbmx5YnVpbHRkZXBlbmRlbmNpZXMpLlxuICAgKiAtIGBZQVJOMmAsIGBZQVJOX0JFUlJZYDogd3JpdHRlbiB0byB0aGUgbmF0aXZlXG4gICAqICAgYGRlcGVuZGVuY2llc01ldGEuPHBrZz4uYnVpbHRgIGFsbG93bGlzdCBpbiBgcGFja2FnZS5qc29uYCwgY29tYmluZWRcbiAgICogICB3aXRoIGBlbmFibGVTY3JpcHRzOiBmYWxzZWAgaW4gYC55YXJucmMueW1sYCAoc2VlXG4gICAqICAgaHR0cHM6Ly95YXJucGtnLmNvbS9mZWF0dXJlcy9zZWN1cml0eSNwb3N0aW5zdGFsbHMpLiBJZiB5b3Ugc2V0XG4gICAqICAgYHlhcm5CZXJyeU9wdGlvbnMueWFyblJjT3B0aW9ucy5lbmFibGVTY3JpcHRzYCBleHBsaWNpdGx5LCB0aGF0IHZhbHVlXG4gICAqICAgaXMgcmVzcGVjdGVkIGluc3RlYWQgb2YgYmVpbmcgb3ZlcnJpZGRlbi5cbiAgICogLSBgWUFSTmAsIGBZQVJOX0NMQVNTSUNgOiBub3Qgc3VwcG9ydGVkLiBZYXJuIENsYXNzaWMgaGFzIG5vIG5hdGl2ZVxuICAgKiAgIG1lY2hhbmlzbSB0byBhbGxvd2xpc3QgaW5zdGFsbCBzY3JpcHRzIGZvciBzcGVjaWZpYyBkZXBlbmRlbmNpZXMuXG4gICAqICAgU2V0dGluZyB0aGlzIG9wdGlvbiB3aXRoIG9uZSBvZiB0aGVzZSBwYWNrYWdlIG1hbmFnZXJzIHRocm93cyBhblxuICAgKiAgIGVycm9yIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCAtIGFsbCBpbnN0YWxsIHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gcnVuIChwYWNrYWdlIG1hbmFnZXIgZGVmYXVsdClcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U2NyaXB0cz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgcHJvamVjdCB0byBpbmNsdWRlIGBwZWVyRGVwZW5kZW5jaWVzYCBhbmQgYGJ1bmRsZWREZXBlbmRlbmNpZXNgLlxuICAgKiBUaGlzIGlzIG5vcm1hbGx5IG9ubHkgYWxsb3dlZCBmb3IgbGlicmFyaWVzLiBGb3IgYXBwcywgdGhlcmUncyBubyBtZWFuaW5nXG4gICAqIGZvciBzcGVjaWZ5aW5nIHRoZXNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhbGxvd0xpYnJhcnlEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGQgdGhlIHJlc29sdmVkIGBwYWNrYWdlTWFuYWdlcmAgdG8gYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIGluIGBwYWNrYWdlLmpzb25gLCBzZXR0aW5nIGBvbkZhaWxgIHRvIGBpZ25vcmVgLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhZGRQYWNrYWdlTWFuYWdlclRvRGV2RW5naW5lcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgVlNDb2RlIGludGVncmF0aW9uLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHJvb3QgcHJvamVjdHMuIERpc2FibGVkIGZvciBub24tcm9vdCBwcm9qZWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzLlxuICAgKiBUbyBkaXNhYmxlIHNldCBgc3RhbGVgIHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBTdGFsZU9wdGlvbnNgXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzdGFsZU9wdGlvbnM/OiBnaXRodWIuU3RhbGVPcHRpb25zO1xuICAvKipcbiAgICogQXV0by1jbG9zZSBvZiBzdGFsZSBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdC5cbiAgICogU2VlIGBzdGFsZU9wdGlvbnNgIGZvciBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhbGU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvZiB0aGUgUkVBRE1FLm1kIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRtZT86IFJlYWRtZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2Qgb2YgcHJvdmlkaW5nIEdpdEh1YiBBUEkgYWNjZXNzIGZvciBwcm9qZW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIHVzZSBhIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBuYW1lZCBQUk9KRU5fR0lUSFVCX1RPS0VOXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5DcmVkZW50aWFscz86IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscztcbiAgLyoqXG4gICAqIEFkZCBhIEdpdHBvZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdHBvZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqIEBkZWZhdWx0IC0gc2VlIEdpdEh1Yk9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk9wdGlvbnM/OiBnaXRodWIuR2l0SHViT3B0aW9ucztcbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqIEVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igcm9vdCBwcm9qZWN0cy4gRGlzYWJsZWQgZm9yIG5vbi1yb290IHByb2plY3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRodWI/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIGEgVlNDb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50ICh1c2VkIGZvciBHaXRIdWIgQ29kZXNwYWNlcykuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXZDb250YWluZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIGEgYGNsb2JiZXJgIHRhc2sgd2hpY2ggcmVzZXRzIHRoZSByZXBvIHRvIG9yaWdpbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlLCBidXQgZmFsc2UgZm9yIHN1YnByb2plY3RzXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjbG9iYmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBhdXRvbWF0aWMgbWVyZ2luZyBvbiBHaXRIdWIuXG4gICAqIEhhcyBubyBlZmZlY3QgaWZcbiAgICogYGdpdGh1Yi5tZXJnaWZ5YCBvciBgYXV0b01lcmdlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBBdXRvTWVyZ2VPcHRpb25zYFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlT3B0aW9ucz86IGdpdGh1Yi5BdXRvTWVyZ2VPcHRpb25zO1xuICAvKipcbiAgICogRW5hYmxlIGF1dG9tYXRpYyBtZXJnaW5nIG9uIEdpdEh1Yi5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiBgZ2l0aHViLm1lcmdpZnlgXG4gICAqIGlzIHNldCB0byBmYWxzZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSAnYXV0byBhcHByb3ZlJyB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgLSBhdXRvIGFwcHJvdmUgaXMgZGlzYWJsZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlT3B0aW9ucz86IGdpdGh1Yi5BdXRvQXBwcm92ZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciByZW5vdmF0ZWJvdC5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbm92YXRlYm90T3B0aW9ucz86IFJlbm92YXRlYm90T3B0aW9ucztcbiAgLyoqXG4gICAqIFVzZSByZW5vdmF0ZWJvdCB0byBoYW5kbGUgZGVwZW5kZW5jeSB1cGdyYWRlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbm92YXRlYm90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qc29uLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKc29uT3B0aW9ucz86IFByb2plbnJjSnNvbk9wdGlvbnM7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzb24gKGluIEpTT04pLiBTZXQgdG8gYGZhbHNlYCBpbiBvcmRlciB0byBkaXNhYmxlIC5wcm9qZW5yYy5qc29uIGdlbmVyYXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHNoZWxsIGNvbW1hbmQgdG8gdXNlIGluIG9yZGVyIHRvIHJ1biB0aGUgcHJvamVuIENMSS5cbiAgICogSW5zZXJ0ZWQgdmVyYmF0aW0gaW50byB0YXNrIHN0ZXBzLCB3b3JrZmxvd3MgYW5kIElERSBjb25maWd1cmF0aW9uLCBhbmQgcnVuXG4gICAqIGJ5IGVhY2ggb2YgdGhlaXIgc2hlbGxzIC0gbG9jYWxseSwgaW4gQ0kgYW5kIGluIGRldiBjb250YWluZXJzLiBLZWVwIGl0IGFcbiAgICogcGxhaW4gdW5xdW90ZWQgY29tbWFuZCwgc2luY2Ugc2hlbGwgc3ludGF4IGluIGl0IGV4ZWN1dGVzIGluIGFsbCBvZiB0aGVtLlxuICAgKlxuICAgKiBDYW4gYmUgdXNlZCB0byBjdXN0b21pemUgaW4gc3BlY2lhbCBlbnZpcm9ubWVudHMuXG4gICAqIEBkZWZhdWx0IFwibnB4IHByb2plblwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5Db21tYW5kPzogc3RyaW5nO1xuICAvKipcbiAgICogR2VuZXJhdGUgYSBwcm9qZWN0IHRyZWUgZmlsZSAoYC5wcm9qZW4vdHJlZS5qc29uYCkgdGhhdCBzaG93cyBhbGwgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIHlvdXIgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIGRlYnVnZ2luZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RUcmVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgcHJvamVjdCwgaWYgdGhpcyBwcm9qZWN0IGlzIHBhcnQgb2YgYSBiaWdnZXIgcHJvamVjdC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudD86IFByb2plY3Q7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAqIFJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LCBhbGwgZmlsZXMgYXJlIHN5bnRoZXNpemVkLlxuICAgKlxuICAgKiBJZiB0aGlzIHByb2plY3QgaGFzIGEgcGFyZW50LCB0aGlzIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50XG4gICAqIGRpcmVjdG9yeSBhbmQgaXQgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgb3IgYW55IG9mIGl0J3Mgb3RoZXJcbiAgICogc3VicHJvamVjdHMuXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb25maWd1cmUgbG9nZ2luZyBvcHRpb25zIHN1Y2ggYXMgdmVyYm9zaXR5LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IExvZ2dlck9wdGlvbnM7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGdpdC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdE9wdGlvbnM/OiBHaXRPcHRpb25zO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciAuZ2l0aWdub3JlIGZpbGUuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRJZ25vcmVPcHRpb25zPzogSWdub3JlRmlsZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbW1pdCB0aGUgbWFuYWdlZCBmaWxlcyBieSBkZWZhdWx0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb21taXRHZW5lcmF0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhpcyBpcyB0aGUgbmFtZSBvZiB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0ICRCQVNFRElSXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqIEBmZWF0dXJlZCB0cnVlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTY2FuIHRoZSBjb2RlIHdpdGggQ29kZVFMIG9uIHB1bGwgcmVxdWVzdHMsIHB1c2hlcyB0byB0aGUgZGVmYXVsdCBicmFuY2ggYW5kIHdlZWtseS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZXFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGVhbXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgQ09ERU9XTkVSUyBmaWxlXG4gICAqL1xuICByZWFkb25seSBjb2RlT3duZXJzOiBBcnJheTxzdHJpbmc+O1xufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvamVjdHMvY2RrLXRzL2Nkay10eXBlc2NyaXB0LWFwcC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgdHlwZSB7IGF3c2NkaywgZ2l0aHViLCBHaXRPcHRpb25zLCBHcm91cFJ1bm5lck9wdGlvbnMsIElnbm9yZUZpbGVPcHRpb25zLCBqYXZhc2NyaXB0LCBMb2dnZXJPcHRpb25zLCBQcm9qZWN0LCBQcm9qZW5yY0pzb25PcHRpb25zLCBSZWxlYXNhYmxlQ29tbWl0cywgcmVsZWFzZSwgUmVub3ZhdGVib3RPcHRpb25zLCB0eXBlc2NyaXB0IH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB0eXBlIHsgUmVhZG1lT3B0aW9ucyB9IGZyb20gJy4uLy4uLyc7XG5cbi8qKlxuICogQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5TaW5nbGV0b25GdW5jdGlvbmAgZm9yIGVhY2ggYC5zaW5nbGV0b24tbGFtYmRhLnRzYCBoYW5kbGVyIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzaW5nbGV0b25MYW1iZGFBdXRvRGlzY292ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29tbW9uIG9wdGlvbnMgZm9yIGFsbCBBV1MgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYU9wdGlvbnM/OiBhd3NjZGsuTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGRzIGFuIGBhd3NjZGsuTGFtYmRhRXh0ZW5zaW9uYCBmb3IgZWFjaCBgLmxhbWJkYS1leHRlbnNpb24udHNgIGVudHJ5cG9pbnQgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUV4dGVuc2lvbkF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZHMgYW4gYGF3c2Nkay5MYW1iZGFGdW5jdGlvbmAgZm9yIGVhY2ggYC5sYW1iZGEudHNgIGhhbmRsZXIgaW4geW91ciBzb3VyY2UgdHJlZS4gSWYgdGhpcyBpcyBkaXNhYmxlZCwgeW91IGNhbiBtYW51YWxseSBhZGQgYW4gYGF3c2Nkay5BdXRvRGlzY292ZXJgIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGRpc2NvdmVycyBhbmQgY3JlYXRlcyBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgZWFjaCBgLmludGVnLnRzYCBmaWxlIGluIHVuZGVyIHlvdXIgdGVzdCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGludGVncmF0aW9uVGVzdEF1dG9EaXNjb3Zlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBBV1MgQ0RLIGludGVnLXJ1bm5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEludGVnUnVubmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkcyBhbiBgY2xvdWRmcm9udC5leHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uYCBmb3IgZWFjaCBgLmVkZ2UtbGFtYmRhLnRzYCBoYW5kbGVyIGluIHlvdXIgc291cmNlIHRyZWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHlvdSBjYW4gbWFudWFsbHkgYWRkIGFuIGBhd3NjZGsuQXV0b0Rpc2NvdmVyYCBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlZGdlTGFtYmRhQXV0b0Rpc2NvdmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBDREsgYXBwJ3MgZW50cnlwb2ludCAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdoaWNoIGlzIFwic3JjXCIgYnkgZGVmYXVsdCkuXG4gICAqIEBkZWZhdWx0IFwibWFpbi50c1wiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhcHBFbnRyeXBvaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgbGluZSB0byBleGVjdXRlIGluIG9yZGVyIHRvIHN5bnRoZXNpemUgdGhlIENESyBhcHBsaWNhdGlvbiAobGFuZ3VhZ2Ugc3BlY2lmaWMpLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW11bSB2ZXJzaW9uIG9mIHRoZSBgY29uc3RydWN0c2AgbGlicmFyeSB0byBkZXBlbmQgb24uXG4gICAqIEBkZWZhdWx0IC0gZm9yIENESyAxLnggdGhlIGRlZmF1bHQgaXMgXCIzLjIuMjdcIiwgZm9yIENESyAyLnggdGhlIGRlZmF1bHQgaXNcblwiMTAuNS4xXCIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RzVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFVzZSBwaW5uZWQgdmVyc2lvbiBpbnN0ZWFkIG9mIGNhcmV0IHZlcnNpb24gZm9yIENESy5cbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBwcmV2ZW50IG1peGVkIHZlcnNpb25zIGZvciB5b3VyIENESyBkZXBlbmRlbmNpZXMgYW5kIHRvIHByZXZlbnQgYXV0by11cGRhdGVzLlxuICAgKiBJZiB5b3UgdXNlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyB0aGlzIHdpbGwgbGV0IHlvdSBkZWZpbmUgdGhlIG1vbWVudCB5b3UgaW5jbHVkZSBicmVha2luZyBjaGFuZ2VzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrVmVyc2lvblBpbm5pbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogVmVyc2lvbiByYW5nZSBvZiB0aGUgQVdTIENESyBDTEkgdG8gZGVwZW5kIG9uLlxuICAgKiBDYW4gYmUgZWl0aGVyIGEgc3BlY2lmaWMgdmVyc2lvbiwgb3IgYW4gTlBNIHZlcnNpb24gcmFuZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBsYXRlc3QgMi54IHZlcnNpb24gd2lsbCBiZSBpbnN0YWxsZWQ7IHlvdSBjYW4gdXNlIHRoaXNcbiAgICogb3B0aW9uIHRvIHJlc3RyaWN0IGl0IHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvciB2ZXJzaW9uIHJhbmdlLlxuICAgKiBAZGVmYXVsdCBcIl4yXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNka0NsaVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHZlcnNpb24gb2YgdGhlIEFXUyBDREsgdG8gZGVwZW5kIG9uLlxuICAgKiBAZGVmYXVsdCBcIjIuMTg5LjFcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrVmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogR2xvYiBwYXR0ZXJucyB0byBpbmNsdWRlIGluIGBjZGsgd2F0Y2hgLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hJbmNsdWRlcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBHbG9iIHBhdHRlcm5zIHRvIGV4Y2x1ZGUgZnJvbSBgY2RrIHdhdGNoYC5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoRXhjbHVkZXM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVG8gcHJvdGVjdCB5b3UgYWdhaW5zdCB1bmludGVuZGVkIGNoYW5nZXMgdGhhdCBhZmZlY3QgeW91ciBzZWN1cml0eSBwb3N0dXJlLCB0aGUgQVdTIENESyBUb29sa2l0IHByb21wdHMgeW91IHRvIGFwcHJvdmUgc2VjdXJpdHktcmVsYXRlZCBjaGFuZ2VzIGJlZm9yZSBkZXBsb3lpbmcgdGhlbS5cbiAgICogQGRlZmF1bHQgQXBwcm92YWxMZXZlbC5CUk9BREVOSU5HXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlQXBwcm92YWw/OiBhd3NjZGsuQXBwcm92YWxMZXZlbDtcbiAgLyoqXG4gICAqIEZlYXR1cmUgZmxhZ3MgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBpbiBgY2RrLmpzb25gLlxuICAgKiBNYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrIGFueSBjaGFuZ2VzIHRvIGZlYXR1cmUgZmxhZ3MgaW4gYGNkay5qc29uYCBiZWZvcmUgZGVwbG95aW5nLlxuICAgKiBVbmV4cGVjdGVkIGNoYW5nZXMgbWF5IGNhdXNlIGJyZWFraW5nIGNoYW5nZXMgaW4geW91ciBDREsgYXBwLlxuICAgKiBZb3UgY2FuIG92ZXJ3cml0ZSBhbnkgZmVhdHVyZSBmbGFnIGJ5IHBhc3NpbmcgaXQgaW50byB0aGUgY29udGV4dCBmaWVsZC5cbiAgICogQGRlZmF1bHQgLSBubyBmZWF0dXJlIGZsYWdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVGbGFncz86IGF3c2Nkay5JQ2RrRmVhdHVyZUZsYWdzO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb250ZXh0IHRvIGluY2x1ZGUgaW4gYGNkay5qc29uYC5cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogY2RrLm91dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiY2RrLm91dFwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjZGtvdXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGNvbW1hbmQgdG8gZXhlY3V0ZSBiZWZvcmUgc3ludGhlc2lzLlxuICAgKiBUaGlzIGNvbW1hbmQgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAgKiBydW5uaW5nIGBjZGsgc3ludGhgIG9yIHdoZW4gYGNkayB3YXRjaGAgaWRlbnRpZmllcyBhIGNoYW5nZSBpbiB5b3VyIHNvdXJjZVxuICAgKiBjb2RlIGJlZm9yZSByZWRlcGxveW1lbnQuXG4gICAqXG4gICAqIFRoZSBDREsgQ0xJIHJ1bnMgaXQgdGhyb3VnaCBhIHNoZWxsIG9uIGV2ZXJ5IHN5bnRoZXNpcywgb24gdGhlIG1hY2hpbmUgb2ZcbiAgICogYW55b25lIHdobyBjaGVja3Mgb3V0IHRoZSBwcm9qZWN0LCBzbyBzaGVsbCBzeW50YXggaW4gaXQgaXMgaW50ZXJwcmV0ZWQgYW5kXG4gICAqIHRoZSBjb21tYW5kIHNob3VsZCBiZSBvbmUgeW91IHdvdWxkIHJ1biB5b3Vyc2VsZi5cbiAgICogQGRlZmF1bHQgLSBubyBidWlsZCBjb21tYW5kXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWlsZENvbW1hbmQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHZlcnNpb24gdG8gdXNlLlxuICAgKiBOT1RFOiBUeXBlc2NyaXB0IGlzIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZVxuICAgKiBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeSAoZS5nLiBgfjEuMi4zYCkuXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVHlwZS1jaGVjayB0aGUgdGVzdCBzdWl0ZSBhcyBwYXJ0IG9mIHRoZSBgdGVzdGAgdGFzay5cbiAgICogQWRkcyBhIGB0c2MgLS1ub0VtaXRgIHN0ZXAgYWdhaW5zdCB0aGUgZGV2ZWxvcG1lbnQgdHNjb25maWcuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0eXBlY2hlY2tUZXN0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0cy1qZXN0LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdHNKZXN0T3B0aW9ucz86IHR5cGVzY3JpcHQuVHNKZXN0T3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIChhbmQgcGF0aCkgb2YgdGhlIGRldmVsb3BtZW50IHRzY29uZmlnIGZpbGUuXG4gICAqIEJ5IGRlZmF1bHQgdGhpcyBsaXZlcyBpbnNpZGUgdGhlIHRlc3QgZGlyZWN0b3J5IChlLmcuIGB0ZXN0L3RzY29uZmlnLmpzb25gKVxuICAgKiBzbyB0aGF0IHRoZSBUeXBlU2NyaXB0IGxhbmd1YWdlIHNlcnZpY2UgcmVzb2x2ZXMgaXQgYXMgdGhlIG5lYXJlc3QgY29uZmlnXG4gICAqIGZvciB0ZXN0IGZpbGVzLlxuICAgKiBAZGVmYXVsdCAtIFwie3Rlc3RkaXJ9L3RzY29uZmlnLmpzb25cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdEZXZGaWxlPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBDdXN0b20gVFNDb25maWcuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IGphdmFzY3JpcHQuVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBKZXN0IHRlc3RzIGRpcmVjdG9yeS4gVGVzdHMgZmlsZXMgc2hvdWxkIGJlIG5hbWVkIGB4eHgudGVzdC50c2AuXG4gICAqIElmIHRoaXMgZGlyZWN0b3J5IGlzIHVuZGVyIGBzcmNkaXJgIChlLmcuIGBzcmMvdGVzdGAsIGBzcmMvX190ZXN0c19fYCksXG4gICAqIHRoZW4gdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gYGxpYi9gIGFuZCBleGVjdXRlZCBhcyBqYXZhc2NyaXB0LlxuICAgKiBJZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgb3V0c2lkZSBvZiBgc3JjYCwgdGhlbiB3ZSBjb25maWd1cmUgamVzdCB0b1xuICAgKiBjb21waWxlIHRoZSBjb2RlIGluLW1lbW9yeS5cbiAgICogQGRlZmF1bHQgXCJ0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0IHNvdXJjZXMgZGlyZWN0b3J5LlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmUtdGltZSBzYW1wbGUgaW4gYHNyYy9gIGFuZCBgdGVzdC9gIGlmIHRoZXJlIGFyZSBubyBmaWxlcyB0aGVyZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCBydW5uZXIgdG8gdXNlIGZvciBleGVjdXRpbmcgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICogVGhpcyBpcyBhIHByb2plY3QtbGV2ZWwgc2V0dGluZyB0aGF0IGNvbXBvbmVudHMgKGUuZy4gcHJvamVucmMpIHdpbGxcbiAgICogdXNlIGFzIHRoZWlyIGRlZmF1bHQgcnVubmVyLlxuICAgKiBAZGVmYXVsdCBUeXBlU2NyaXB0UnVubmVyLnRzTm9kZSgpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBydW5uZXI/OiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRSdW5uZXI7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciAucHJvamVucmMudHMuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY1RzT3B0aW9ucz86IHR5cGVzY3JpcHQuUHJvamVucmNPcHRpb25zO1xuICAvKipcbiAgICogVXNlIFR5cGVTY3JpcHQgZm9yIHlvdXIgcHJvamVucmMgZmlsZSAoYC5wcm9qZW5yYy50c2ApLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAcGpuZXcgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNUcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0ICBhcnRpZmFjdHMgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJsaWJcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbGliZGlyPzogc3RyaW5nO1xuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gb3BpbmlvbmF0ZWQgZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlc2xpbnRPcHRpb25zPzogamF2YXNjcmlwdC5Fc2xpbnRPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgZXNsaW50LlxuICAgKiBAZGVmYXVsdCAtIHRydWUsIHVubGVzcyBiaW9tZSBpcyBlbmFibGVkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBlc2xpbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIC5kLnRzIGZpbGUgdGhhdCBpbmNsdWRlcyB0aGUgdHlwZSBkZWNsYXJhdGlvbnMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBAZGVmYXVsdCAtIC5kLnRzIGZpbGUgZGVyaXZlZCBmcm9tIHRoZSBwcm9qZWN0J3MgZW50cnlwb2ludCAodXN1YWxseSBsaWIvaW5kZXguZC50cylcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnRUeXBlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY3MgZGlyZWN0b3J5LlxuICAgKiBAZGVmYXVsdCBcImRvY3NcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY2dlbiBieSBUeXBlZG9jLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERvIG5vdCBnZW5lcmF0ZSBhIGRldmVsb3BtZW50IHRzY29uZmlnIGZpbGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWdEZXY/OiBib29sZWFuO1xuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZSB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIE5vZGUuanMgcGFja2FnZSBjYWNoZSBpbiBHaXRIdWIgd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dQYWNrYWdlQ2FjaGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIG5vZGUgdmVyc2lvbiB1c2VkIGluIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cy5cbiAgICogQWx3YXlzIHVzZSB0aGlzIG9wdGlvbiBpZiB5b3VyIEdpdEh1YiBBY3Rpb25zIHdvcmtmbG93cyByZXF1aXJlIGEgc3BlY2lmaWMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAtIGBtaW5Ob2RlVmVyc2lvbmAgaWYgc2V0LCBvdGhlcndpc2UgYGx0cy8qYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZ2l0IGlkZW50aXR5IHRvIHVzZSBpbiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBHaXRIdWIgQWN0aW9ucyB1c2VyXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0dpdElkZW50aXR5PzogZ2l0aHViLkdpdElkZW50aXR5O1xuICAvKipcbiAgICogV29ya2Zsb3cgc3RlcHMgdG8gdXNlIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGlzIHJlcG8uXG4gICAqIEBkZWZhdWx0IFwieWFybiBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlICYmIHlhcm4gcHJvamVuXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Qm9vdHN0cmFwU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSByZWxlYXNlIHRvIG5wbSB3aGVuIG5ldyB2ZXJzaW9ucyBhcmUgaW50cm9kdWNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUb05wbT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGQgcmVsZWFzZSBtYW5hZ2VtZW50IHRvIHRoaXMgcHJvamVjdC5cbiAgICogQGRlZmF1bHQgLSB0cnVlIChmYWxzZSBmb3Igc3VicHJvamVjdHMpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiB0aGUgcHVsbCByZXF1ZXN0IHRlbXBsYXRlLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgY29udGVudFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHVsbFJlcXVlc3RUZW1wbGF0ZUNvbnRlbnRzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIEluY2x1ZGUgYSBHaXRIdWIgcHVsbCByZXF1ZXN0IHRlbXBsYXRlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwdWxsUmVxdWVzdFRlbXBsYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgcHJvamVuIHRvIGluc3RhbGwuXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdHMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qcy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjSnNPcHRpb25zPzogamF2YXNjcmlwdC5Qcm9qZW5yY09wdGlvbnM7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzIChpbiBKYXZhU2NyaXB0KS4gU2V0IHRvIGBmYWxzZWAgaW4gb3JkZXIgdG8gZGlzYWJsZSAucHJvamVucmMuanMgZ2VuZXJhdGlvbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIHByb2plbnJjSnNvbiBpcyBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgb2YgXCJwcm9qZW5cIiBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbiAgICogQGRlZmF1bHQgLSB0cnVlIGlmIG5vdCBhIHN1YnByb2plY3RcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkRldkRlcGVuZGVuY3k/OiBib29sZWFuO1xuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByZXR0aWVyT3B0aW9ucz86IGphdmFzY3JpcHQuUHJldHRpZXJPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgcHJldHRpZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcmV0dGllcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgYHBhY2thZ2VgIHRhc2sgdGhhdCB3aWxsIHByb2R1Y2UgYW4gbnBtIHRhcmJhbGwgdW5kZXIgdGhlIGFydGlmYWN0cyBkaXJlY3RvcnkgKGUuZy4gYGRpc3RgKS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIC5ucG1pZ25vcmUgZmlsZS5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbUlnbm9yZU9wdGlvbnM/OiBJZ25vcmVGaWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIERlZmluZXMgYW4gLm5wbWlnbm9yZSBmaWxlLiBOb3JtYWxseSB0aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgcGFja2FnZWQgYXMgdGFyYmFsbHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbWlnbm9yZUVuYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSmVzdCBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgamVzdE9wdGlvbnM/OiBqYXZhc2NyaXB0Lkplc3RPcHRpb25zO1xuICAvKipcbiAgICogU2V0dXAgamVzdCB1bml0IHRlc3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBqZXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW50cmllcyB0byAuZ2l0aWdub3JlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aWdub3JlPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBVcGdyYWRlRGVwZW5kZW5jaWVzYC5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlT3B0aW9ucz86IGphdmFzY3JpcHQuVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnM7XG4gIC8qKlxuICAgKiBVc2UgdGFza3MgYW5kIGdpdGh1YiB3b3JrZmxvd3MgdG8gaGFuZGxlIGRlcGVuZGVuY3kgdXBncmFkZXMuXG4gICAqIENhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGRlcGVuZGFib3RgLlxuICAgKiBAZGVmYXVsdCAtIGB0cnVlYCBmb3Igcm9vdCBwcm9qZWN0cywgYGZhbHNlYCBmb3Igc3VicHJvamVjdHNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNVcGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGRlcGVuZGFib3QuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90T3B0aW9ucz86IGdpdGh1Yi5EZXBlbmRhYm90T3B0aW9ucztcbiAgLyoqXG4gICAqIFVzZSBkZXBlbmRhYm90IHRvIGhhbmRsZSBkZXBlbmRlbmN5IHVwZ3JhZGVzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBkZXBzVXBncmFkZWAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRhYm90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtYWluIHJlbGVhc2UgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAZmVhdHVyZWQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJlbGVhc2VCcmFuY2g/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29weXJpZ2h0IHllYXJzIHRvIHB1dCBpbiB0aGUgTElDRU5TRSBmaWxlLlxuICAgKiBUaGlzIHZhbHVlIGlzIG9ubHkgdXNlZCBpZiB0aGUgc2VsZWN0ZWQgbGljZW5zZSB0ZXh0IGNvbnRhaW5zIHRoZVxuICAgKiBgJGNvcHlyaWdodF9wZXJpb2RgIHBsYWNlaG9sZGVyLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGVcbiAgICogTVBMLTIuMCBsaWNlbnNlIHRleHQuXG4gICAqIEBkZWZhdWx0IC0gY3VycmVudCB5ZWFyXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb3B5cmlnaHRQZXJpb2Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaWNlbnNlIGNvcHlyaWdodCBvd25lci5cbiAgICogVGhpcyB2YWx1ZSBpcyBvbmx5IHVzZWQgaWYgdGhlIHNlbGVjdGVkIGxpY2Vuc2UgdGV4dCBjb250YWlucyB0aGVcbiAgICogYCRjb3B5cmlnaHRfb3duZXJgIHBsYWNlaG9sZGVyLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGVcbiAgICogTVBMLTIuMCBsaWNlbnNlIHRleHQuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGF1dGhvck5hbWUgb3IgXCJcIiBpZiBgYXV0aG9yTmFtZWAgaXMgdW5kZWZpbmVkLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgY29weXJpZ2h0T3duZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIHNlY3JldCBuYW1lIGZvciBhIHNwZWNpZmllZCBodHRwczovL2NvZGVjb3YuaW8vIHRva2VuLlxuICAgKiBAZGVmYXVsdCAtIE9JREMgYXV0aCBpcyB1c2VkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292VG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgYSBHaXRIdWIgd29ya2Zsb3cgc3RlcCBmb3Igc2VuZGluZyBjb2RlIGNvdmVyYWdlIG1ldHJpY3MgdG8gaHR0cHM6Ly9jb2RlY292LmlvLy5cbiAgICogVXNlcyBjb2RlY292L2NvZGVjb3YtYWN0aW9uLiBCeSBkZWZhdWx0LCBPSURDIGF1dGggaXMgdXNlZC5cbiAgICogQWx0ZXJuYXRpdmVseSBhIHRva2VuIGNhbiBiZSBwcm92aWRlZCB2aWEgYGNvZGVDb3ZUb2tlblNlY3JldGAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQ292PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB3aGljaCBsaWNlbnNlcyBzaG91bGQgYmUgZGVlbWVkIGFjY2VwdGFibGUgZm9yIHVzZSBieSBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2V0dGluZyB3aWxsIGNhdXNlIHRoZSBidWlsZCB0byBmYWlsLCBpZiBhbnkgcHJvaGliaXRlZCBvciBub3QgYWxsb3dlZCBsaWNlbnNlcyBhcmVzIGVuY291bnRlcmVkLlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2UgY2hlY2tzIGFyZSBydW4gZHVyaW5nIHRoZSBidWlsZCBhbmQgYWxsIGxpY2Vuc2VzIHdpbGwgYmUgYWNjZXB0ZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrTGljZW5zZXM/OiBqYXZhc2NyaXB0LkxpY2Vuc2VDaGVja2VyT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZXJPcHRpb25zPzogamF2YXNjcmlwdC5CdW5kbGVyT3B0aW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFBSIGJ1aWxkIHdvcmtmbG93LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRXb3JrZmxvd09wdGlvbnM/OiBqYXZhc2NyaXB0LkJ1aWxkV29ya2Zsb3dPcHRpb25zO1xuICAvKipcbiAgICogRGVmaW5lIGEgR2l0SHViIHdvcmtmbG93IGZvciBidWlsZGluZyBQUnMuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBpZiBub3QgYSBzdWJwcm9qZWN0XG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWlsZFdvcmtmbG93PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJpb21lIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBiaW9tZU9wdGlvbnM/OiBqYXZhc2NyaXB0LkJpb21lT3B0aW9ucztcbiAgLyoqXG4gICAqIFNldHVwIEJpb21lLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYmlvbWU/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhcHByb3ZlIGRlcHMgdXBncmFkZSBQUnMsIGFsbG93aW5nIHRoZW0gdG8gYmUgbWVyZ2VkIGJ5IG1lcmdpZnkgKGlmIGNvbmZpZ3VyZWQpLlxuICAgKiBUaHJvdyBpZiBzZXQgdG8gdHJ1ZSBidXQgYGF1dG9BcHByb3ZlT3B0aW9uc2AgYXJlIG5vdCBkZWZpbmVkLlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlVXBncmFkZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogU2VjdXJpdHkgYXVkaXQgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0RGVwc09wdGlvbnM/OiBqYXZhc2NyaXB0LkF1ZGl0T3B0aW9ucztcbiAgLyoqXG4gICAqIFJ1biBzZWN1cml0eSBhdWRpdCBvbiBkZXBlbmRlbmNpZXMuXG4gICAqIFdoZW4gZW5hYmxlZCwgY3JlYXRlcyBhbiBcImF1ZGl0XCIgdGFzayB0aGF0IGNoZWNrcyBmb3Iga25vd24gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzXG4gICAqIGluIGRlcGVuZGVuY2llcy4gQnkgZGVmYXVsdCwgcnVucyBkdXJpbmcgZXZlcnkgYnVpbGQgYW5kIGNoZWNrcyBmb3IgXCJoaWdoXCIgc2V2ZXJpdHlcbiAgICogdnVsbmVyYWJpbGl0aWVzIG9yIGFib3ZlIGluIGFsbCBkZXBlbmRlbmNpZXMgKGluY2x1ZGluZyBkZXYgZGVwZW5kZW5jaWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0RGVwcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB3aGljaCB3aWxsIGNvbnRhaW4gYnVpbGQgYXJ0aWZhY3RzLlxuICAgKiBAZGVmYXVsdCBcImRpc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBHcm91cCBzZWxlY3Rpb24gb3B0aW9ucy5cbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBnaXRodWJPcHRpb25zLndvcmtmbG93UnVuc09uR3JvdXBgIG9uIHRoZSBwcm9qZWN0LCBvciBgcnVuc09uR3JvdXBgIG9uIGBSZWxlYXNlT3B0aW9uc2BcbiAgICogQHN0YWJpbGl0eSBkZXByZWNhdGVkXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGEgdGFyZ2V0IFJ1bm5lciBHcm91cCBieSBuYW1lIGFuZC9vciBsYWJlbHNcbiAgICogQHRocm93cyB7RXJyb3J9IGlmIGJvdGggYHJ1bnNPbmAgYW5kIGBydW5zT25Hcm91cGAgYXJlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dSdW5zT25Hcm91cD86IEdyb3VwUnVubmVyT3B0aW9ucztcbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgc2VsZWN0aW9uIGxhYmVscy5cbiAgICogQGRlZmF1bHQgW1widWJ1bnR1LWxhdGVzdFwiXVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdpdGh1Yk9wdGlvbnMud29ya2Zsb3dSdW5zT25gIG9uIHRoZSBwcm9qZWN0LCBvciBgcnVuc09uYCBvbiBgUmVsZWFzZU9wdGlvbnNgXG4gICAqIEBzdGFiaWxpdHkgZGVwcmVjYXRlZFxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBhIHRhcmdldCBSdW5uZXIgYnkgbGFiZWxzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBpZiBib3RoIGBydW5zT25gIGFuZCBgcnVuc09uR3JvdXBgIGFyZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byB1c2UgZm9yIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBpbWFnZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dDb250YWluZXJJbWFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIHVzZWQgd2hlbiBjcmVhdGluZyBjaGFuZ2Vsb2cgd2l0aCBjb21taXQtYW5kLXRhZy12ZXJzaW9uIHBhY2thZ2UuXG4gICAqIEdpdmVuIHZhbHVlcyBlaXRoZXIgYXBwZW5kIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvciBvdmVyd3JpdGUgdmFsdWVzIGluIGl0LlxuICAgKiBAZGVmYXVsdCAtIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYXBwbGljYWJsZSBmb3IgR2l0SHViIHJlcG9zaXRvcmllc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBBIHNldCBvZiB3b3JrZmxvdyBzdGVwcyB0byBleGVjdXRlIGluIG9yZGVyIHRvIHNldHVwIHRoZSB3b3JrZmxvdyBjb250YWluZXIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlV29ya2Zsb3dTZXR1cFN0ZXBzPzogQXJyYXk8Z2l0aHViLndvcmtmbG93cy5Kb2JTdGVwPjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFwicmVsZWFzZVwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlV29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQGRlZmF1bHQge31cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd0Vudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgcmVsZWFzZSB0cmlnZ2VyIHRvIHVzZS5cbiAgICogQGRlZmF1bHQgLSBDb250aW51b3VzIHJlbGVhc2VzIChgUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpYClcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyPzogcmVsZWFzZS5SZWxlYXNlVHJpZ2dlcjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZyB2ZXJzaW9uIG51bWJlcnMuXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICogQGRlZmF1bHQgXCJ2XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdG8gYXBwbHkgdG8gaXNzdWVzIGluZGljYXRpbmcgcHVibGlzaCBmYWlsdXJlcy5cbiAgICogT25seSBhcHBsaWVzIGlmIGByZWxlYXNlRmFpbHVyZUlzc3VlYCBpcyB0cnVlLlxuICAgKiBAZGVmYXVsdCBcImZhaWxlZC1yZWxlYXNlXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VGYWlsdXJlSXNzdWVMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGdpdGh1YiBpc3N1ZSBvbiBldmVyeSBmYWlsZWQgcHVibGlzaGluZyB0YXNrLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUZhaWx1cmVJc3N1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIEFjdGlvbnMgZW52aXJvbm1lbnQgdXNlZCBmb3IgdGhlIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYWRkIGFuIGV4cGxpY2l0IGFwcHJvdmFsIHN0ZXAgdG8gdGhlIHJlbGVhc2VcbiAgICogb3IgbGltaXQgd2hvIGNhbiBpbml0aWF0ZSBhIHJlbGVhc2UgdGhyb3VnaCBlbnZpcm9ubWVudCBwcm90ZWN0aW9uIHJ1bGVzLlxuICAgKlxuICAgKiBXaGVuIG11bHRpcGxlIGFydGlmYWN0cyBhcmUgcmVsZWFzZWQsIHRoZSBlbnZpcm9ubWVudCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICogb24gYSBwZXIgYXJ0aWZhY3QgYmFzaXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gZW52aXJvbm1lbnQgdXNlZCwgdW5sZXNzIHNldCBhdCB0aGUgYXJ0aWZhY3QgbGV2ZWxcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VFbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgYWRkaXRpb25hbCByZWxlYXNlIGJyYW5jaGVzLlxuICAgKiBBIHdvcmtmbG93IHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaFxuICAgKiByZWxlYXNlIGJyYW5jaCB3aGljaCB3aWxsIHB1Ymxpc2ggcmVsZWFzZXMgZnJvbSBjb21taXRzIGluIHRoaXMgYnJhbmNoLlxuICAgKiBFYWNoIHJlbGVhc2UgYnJhbmNoIF9tdXN0XyBiZSBhc3NpZ25lZCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIHdoaWNoIGlzIHVzZWRcbiAgICogdG8gZW5mb3JjZSB0aGF0IHZlcnNpb25zIHB1Ymxpc2hlZCBmcm9tIHRoYXQgYnJhbmNoIGFsd2F5cyB1c2UgdGhhdCBtYWpvclxuICAgKiB2ZXJzaW9uLiBJZiBtdWx0aXBsZSBicmFuY2hlcyBhcmUgdXNlZCwgdGhlIGBtYWpvclZlcnNpb25gIGZpZWxkIG11c3QgYWxzb1xuICAgKiBiZSBwcm92aWRlZCBmb3IgdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYnJhbmNoZXMgYXJlIHVzZWQgZm9yIHJlbGVhc2UuIHlvdSBjYW4gdXNlXG5gYWRkQnJhbmNoKClgIHRvIGFkZCBhZGRpdGlvbmFsIGJyYW5jaGVzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgcmVsZWFzZS5CcmFuY2hPcHRpb25zPjtcbiAgLyoqXG4gICAqIEZpbmQgY29tbWl0cyB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIHJlbGVhc2FibGUgVXNlZCB0byBkZWNpZGUgaWYgYSByZWxlYXNlIGlzIHJlcXVpcmVkLlxuICAgKiBAZGVmYXVsdCBSZWxlYXNhYmxlQ29tbWl0cy5ldmVyeUNvbW1pdCgpXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZWxlYXNhYmxlQ29tbWl0cz86IFJlbGVhc2FibGVDb21taXRzO1xuICAvKipcbiAgICogRGVmaW5lIHB1Ymxpc2hpbmcgdGFza3MgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgbWFudWFsbHkgYXMgd2VsbCBhcyB3b3JrZmxvd3MuXG4gICAqIE5vcm1hbGx5LCBwdWJsaXNoaW5nIG9ubHkgaGFwcGVucyB3aXRoaW4gYXV0b21hdGVkIHdvcmtmbG93cy4gRW5hYmxlIHRoaXNcbiAgICogaW4gb3JkZXIgdG8gY3JlYXRlIGEgcHVibGlzaGluZyB0YXNrIGZvciBlYWNoIHB1Ymxpc2hpbmcgYWN0aXZpdHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVGFza3M/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5zdGVhZCBvZiBhY3R1YWxseSBwdWJsaXNoaW5nIHRvIHBhY2thZ2UgbWFuYWdlcnMsIGp1c3QgcHJpbnQgdGhlIHB1Ymxpc2hpbmcgY29tbWFuZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hEcnlSdW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQnVtcCB2ZXJzaW9ucyBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaCBhcyBwcmUtcmVsZWFzZXMgKGUuZy4gXCJiZXRhXCIsIFwiYWxwaGFcIiwgXCJwcmVcIikuXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHNlbWFudGljIHZlcnNpb25zXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogU3RlcHMgdG8gZXhlY3V0ZSBhZnRlciBidWlsZCBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM/OiBBcnJheTxnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXA+O1xuICAvKipcbiAgICogVGhlIG5wbURpc3RUYWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICogVG8gc2V0IHRoZSBucG0gZGlzdC10YWcgZm9yIHJlbGVhc2UgYnJhbmNoZXMsIHNldCB0aGUgYG5wbURpc3RUYWdgIHByb3BlcnR5XG4gICAqIGZvciBlYWNoIGJyYW5jaC5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtRGlzdFRhZz86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2hlbGwgY29tbWFuZCB0byBjb250cm9sIHRoZSBuZXh0IHZlcnNpb24gdG8gcmVsZWFzZS5cbiAgICogSWYgcHJlc2VudCwgdGhpcyBzaGVsbCBjb21tYW5kIHdpbGwgYmUgcnVuIGJlZm9yZSB0aGUgYnVtcCBpcyBleGVjdXRlZCwgYW5kXG4gICAqIGl0IGRldGVybWluZXMgd2hhdCB2ZXJzaW9uIHRvIHJlbGVhc2UuIEl0IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIGZvbGxvd2luZ1xuICAgKiBlbnZpcm9ubWVudDpcbiAgICpcbiAgICogLSBXb3JraW5nIGRpcmVjdG9yeTogdGhlIHByb2plY3QgZGlyZWN0b3J5LlxuICAgKiAtIGAkVkVSU0lPTmA6IHRoZSBjdXJyZW50IHZlcnNpb24uIExvb2tzIGxpa2UgYDEuMi4zYC5cbiAgICogLSBgJExBVEVTVF9UQUdgOiB0aGUgbW9zdCByZWNlbnQgdGFnLiBMb29rcyBsaWtlIGBwcmVmaXgtdjEuMi4zYCwgb3IgbWF5IGJlIHVuc2V0LlxuICAgKiAtIGAkU1VHR0VTVEVEX0JVTVBgOiB0aGUgc3VnZ2VzdGVkIGJ1bXAgYWN0aW9uIGJhc2VkIG9uIGNvbW1pdHMuIE9uZSBvZiBgbWFqb3J8bWlub3J8cGF0Y2h8bm9uZWAuXG4gICAqXG4gICAqIFRoZSBjb21tYW5kIHNob3VsZCBwcmludCBvbmUgb2YgdGhlIGZvbGxvd2luZyB0byBgc3Rkb3V0YDpcbiAgICpcbiAgICogLSBOb3RoaW5nOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gY29tbWl0IGhpc3RvcnkuXG4gICAqIC0gYHgueS56YDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBgeC55LnpgLlxuICAgKiAtIGBtYWpvcnxtaW5vcnxwYXRjaGA6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBudW1iZXJcbiAgICogICB3aXRoIHRoZSBpbmRpY2F0ZWQgY29tcG9uZW50IGJ1bXBlZC5cbiAgICpcbiAgICogVGhpcyBzZXR0aW5nIGNhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgbWluTWFqb3JWZXJzaW9uYDsgdGhlIGludm9rZWRcbiAgICogc2NyaXB0IGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIGVmZmVjdHMgb2YgYG1pbk1ham9yVmVyc2lvbmAuXG4gICAqIEBkZWZhdWx0IC0gVGhlIG5leHQgdmVyc2lvbiB3aWxsIGJlIGRldGVybWluZWQgYmFzZWQgb24gdGhlIGNvbW1pdCBoaXN0b3J5IGFuZCBwcm9qZWN0IHNldHRpbmdzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbmV4dFZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuICAvKipcbiAgICogTWluaW1hbCBNYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXQgdG8gMSwgYXMgYnJlYWtpbmcgY2hhbmdlcyBiZWZvcmUgdGhlIDEueCBtYWpvclxuICAgKiByZWxlYXNlIGFyZSBub3QgaW5jcmVtZW50aW5nIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci5cbiAgICpcbiAgICogQ2FuIG5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCBgbWFqb3JWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIHZlcnNpb24gaXMgYmVpbmcgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1ham9yIHZlcnNpb24gdG8gcmVsZWFzZSBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICogSWYgdGhpcyBpcyBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbWFqb3IgdmVyc2lvbiBsaW5lLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB3ZSBidW1wIHRoZSBnbG9iYWwgbGF0ZXN0IHZlcnNpb24uXG4gICAqIEBkZWZhdWx0IC0gTWFqb3IgdmVyc2lvbiBpcyBub3QgZW5mb3JjZWQuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBHaXRIdWIgc2hvdWxkIGV4cGxpY2l0bHkgbWFyayB0aGUgcmVsZWFzZSBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaCBhcyB0aGUgbGF0ZXN0IHJlbGVhc2UuXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gbWFyayB0aGUgcmVsZWFzZSBhcyBsYXRlc3QsIG9yIGBmYWxzZWAgdG8gZXhwbGljaXRseSBub3RcbiAgICogbWFyayBpdCBhcyBsYXRlc3QuXG4gICAqIEBkZWZhdWx0IC0gR2l0SHViIGRldGVybWluZXMgdGhlIGxhdGVzdCByZWxlYXNlIGJhc2VkIG9uIGRhdGUgYW5kIHNlbWFudGljIHZlcnNpb24uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZWxlYXNlTGF0ZXN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICogQGRlZmF1bHQgLSBBIHJlY2VudCB2ZXJzaW9uIG9mIFwiY29tbWl0LWFuZC10YWctdmVyc2lvblwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidW1wUGFja2FnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIFlhcm4gQmVycnkuXG4gICAqIEBkZWZhdWx0IC0gWWFybiBCZXJyeSB2NCB3aXRoIGFsbCBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHlhcm5CZXJyeU9wdGlvbnM/OiBqYXZhc2NyaXB0Lllhcm5CZXJyeU9wdGlvbnM7XG4gIC8qKlxuICAgKiBQYWNrYWdlJ3MgU3RhYmlsaXR5LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhYmlsaXR5Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHJpdmF0ZWx5IGhvc3RlZCBzY29wZWQgcGFja2FnZXMuXG4gICAqIEBkZWZhdWx0IC0gZmV0Y2ggYWxsIHNjb3BlZCBwYWNrYWdlcyBmcm9tIHRoZSBwdWJsaWMgbnBtIHJlZ2lzdHJ5XG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzY29wZWRQYWNrYWdlc09wdGlvbnM/OiBBcnJheTxqYXZhc2NyaXB0LlNjb3BlZFBhY2thZ2VzT3B0aW9ucz47XG4gIC8qKlxuICAgKiBJZiB0aGUgcGFja2FnZS5qc29uIGZvciB5b3VyIHBhY2thZ2UgaXMgbm90IGluIHRoZSByb290IGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUgaWYgaXQgaXMgcGFydCBvZiBhIG1vbm9yZXBvKSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgbGl2ZXMuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5RGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgaXMgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgeW91ciBwYWNrYWdlIGxpdmVzLlxuICAgKiBTZWUgaHR0cHM6Ly9jbGFzc2ljLnlhcm5wa2cuY29tL2VuL2RvY3MvcGFja2FnZS1qc29uLyN0b2MtcmVwb3NpdG9yeVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIFBOUE0gdG8gdXNlIGlmIHVzaW5nIFBOUE0gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwiMTAuMzMuMFwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHBucG0uXG4gICAqIEBkZWZhdWx0IC0gYWxsIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbU9wdGlvbnM/OiBqYXZhc2NyaXB0LlBucG1PcHRpb25zO1xuICAvKipcbiAgICogUGVlciBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBEZXBlbmRlbmNpZXMgbGlzdGVkIGhlcmUgYXJlIHJlcXVpcmVkIHRvXG4gICAqIGJlIGluc3RhbGxlZCAoYW5kIHNhdGlzZmllZCkgYnkgdGhlIF9jb25zdW1lcl8gb2YgdGhpcyBsaWJyYXJ5LiBVc2luZyBwZWVyXG4gICAqIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBzaW5nbGUgbW9kdWxlIG9mIGEgY2VydGFpblxuICAgKiBsaWJyYXJ5IGV4aXN0cyBpbiB0aGUgYG5vZGVfbW9kdWxlc2AgdHJlZSBvZiB5b3VyIGNvbnN1bWVycy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHByaW9yIHRvIG5wbUA3LCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgX25vdF8gYXV0b21hdGljYWxseVxuICAgKiBpbnN0YWxsZWQsIHdoaWNoIG1lYW5zIHRoYXQgYWRkaW5nIHBlZXIgZGVwZW5kZW5jaWVzIHRvIGEgbGlicmFyeSB3aWxsIGJlIGFcbiAgICogYnJlYWtpbmcgY2hhbmdlIGZvciB5b3VyIGN1c3RvbWVycy5cbiAgICpcbiAgICogVW5sZXNzIGBwZWVyRGVwZW5kZW5jeU9wdGlvbnMucGlubmVkRGV2RGVwZW5kZW5jeWAgaXMgZGlzYWJsZWQgKGl0IGlzXG4gICAqIGVuYWJsZWQgYnkgZGVmYXVsdCksIHByb2plbiB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIGEgZGV2IGRlcGVuZGVuY3kgd2l0aCBhXG4gICAqIHBpbm5lZCB2ZXJzaW9uIGZvciBlYWNoIHBlZXIgZGVwZW5kZW5jeS4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHlvdSBidWlsZCAmXG4gICAqIHRlc3QgeW91ciBtb2R1bGUgYWdhaW5zdCB0aGUgbG93ZXN0IHBlZXIgdmVyc2lvbiByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGBwZWVyRGVwc2AuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jeU9wdGlvbnM/OiBqYXZhc2NyaXB0LlBlZXJEZXBlbmRlbmN5T3B0aW9ucztcbiAgLyoqXG4gICAqIFRoZSBcIm5hbWVcIiBpbiBwYWNrYWdlLmpzb24uXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHMgdG8gcHJvamVjdCBuYW1lXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqIEBmZWF0dXJlZCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBOb2RlIFBhY2thZ2UgTWFuYWdlciB1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICogQGRlZmF1bHQgLSBEZXRlY3RlZCBmcm9tIHRoZSBjYWxsaW5nIHByb2Nlc3Mgb3IgYFlBUk5fQ0xBU1NJQ2AgaWYgZGV0ZWN0aW9uIGZhaWxzLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAcGpuZXcgJFBBQ0tBR0VfTUFOQUdFUlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI/OiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlcjtcbiAgLyoqXG4gICAqIFVzZSB0cnVzdGVkIHB1Ymxpc2hpbmcgZm9yIHB1Ymxpc2hpbmcgdG8gbnBtanMuY29tIE5lZWRzIHRvIGJlIHByZS1jb25maWd1cmVkIG9uIG5wbS5qcyB0byB3b3JrLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBucG1UcnVzdGVkUHVibGlzaGluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBOUE0gdG9rZW4gdG8gdXNlIHdoZW4gcHVibGlzaGluZyBwYWNrYWdlcy5cbiAgICogQGRlZmF1bHQgXCJOUE1fVE9LRU5cIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtVG9rZW5TZWNyZXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICAgKiBNdXN0IGJlIGEgVVJMIChlLmcuIHN0YXJ0IHdpdGggXCJodHRwczovL1wiIG9yIFwiaHR0cDovL1wiKVxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnXCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbVJlZ2lzdHJ5VXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogU2hvdWxkIHByb3ZlbmFuY2Ugc3RhdGVtZW50cyBiZSBnZW5lcmF0ZWQgd2hlbiB0aGUgcGFja2FnZSBpcyBwdWJsaXNoZWQuXG4gICAqIEEgc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlciBpcyByZXF1aXJlZCB0byBwdWJsaXNoIGEgcGFja2FnZSB3aXRoIG5wbSBwcm92ZW5hbmNlIHN0YXRlbWVudHMgYW5kXG4gICAqIHlvdSB3aWxsIG5lZWQgdG8gdXNlIGEgc3VwcG9ydGVkIENJL0NEIHByb3ZpZGVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHByb2plbiBgUmVsZWFzZWAgYW5kIGBQdWJsaXNoZXJgIGNvbXBvbmVudHMgYXJlIHVzaW5nIGBwdWJsaWJgIHRvIHB1Ymxpc2ggcGFja2FnZXMsXG4gICAqIHdoaWNoIGlzIHVzaW5nIG5wbSBpbnRlcm5hbGx5IGFuZCBzdXBwb3J0cyBwcm92ZW5hbmNlIHN0YXRlbWVudHMgaW5kZXBlbmRlbnRseSBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQuXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgcHVibGljIHBhY2thZ2VzLCBmYWxzZSBvdGhlcndpc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbVByb3ZlbmFuY2U/OiBib29sZWFuO1xuICAvKipcbiAgICogQWNjZXNzIGxldmVsIG9mIHRoZSBucG0gcGFja2FnZS5cbiAgICogQGRlZmF1bHQgLSBmb3Igc2NvcGVkIHBhY2thZ2VzIChlLmcuIGBmb29AYmFyYCksIHRoZSBkZWZhdWx0IGlzXG5gTnBtQWNjZXNzLlJFU1RSSUNURURgLCBmb3Igbm9uLXNjb3BlZCBwYWNrYWdlcywgdGhlIGRlZmF1bHQgaXNcbmBOcG1BY2Nlc3MuUFVCTElDYC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG5wbUFjY2Vzcz86IGphdmFzY3JpcHQuTnBtQWNjZXNzO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbm9kZSB2ZXJzaW9uIHJlcXVpcmVkIGJ5IHRoaXMgcGFja2FnZSB0byBmdW5jdGlvbi4gTW9zdCBwcm9qZWN0cyBzaG91bGQgbm90IHVzZSB0aGlzIG9wdGlvbi5cbiAgICogVGhlIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBwYWNrYWdlIGlzIGluY29tcGF0aWJsZSB3aXRoIGFueSBvbGRlciB2ZXJzaW9ucyBvZiBub2RlLlxuICAgKiBUaGlzIHJlcXVpcmVtZW50IGlzIGVuZm9yY2VkIHZpYSB0aGUgZW5naW5lcyBmaWVsZC5cbiAgICpcbiAgICogWW91IHdpbGwgbm9ybWFsbHkgbm90IG5lZWQgdG8gc2V0IHRoaXMgb3B0aW9uLCBldmVuIGlmIHlvdXIgcGFja2FnZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBFT0wgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogQ29uc2lkZXIgdGhpcyBvcHRpb24gb25seSBpZiB5b3VyIHBhY2thZ2UgZGVwZW5kcyBvbiBhIHNwZWNpZmljIGZlYXR1cmUsIHRoYXQgaXMgbm90IGF2YWlsYWJsZSBpbiBvdGhlciBMVFMgdmVyc2lvbnMuXG4gICAqIFNldHRpbmcgdGhpcyBvcHRpb24gaGFzIHZlcnkgaGlnaCBpbXBhY3Qgb24gdGhlIGNvbnN1bWVycyBvZiB5b3VyIHBhY2thZ2UsXG4gICAqIGFzIHBhY2thZ2UgbWFuYWdlcnMgd2lsbCBhY3RpdmVseSBwcmV2ZW50IHVzYWdlIHdpdGggbm9kZSB2ZXJzaW9ucyB5b3UgaGF2ZSBtYXJrZWQgYXMgaW5jb21wYXRpYmxlLlxuICAgKlxuICAgKiBUbyBjaGFuZ2UgdGhlIG5vZGUgdmVyc2lvbiBvZiB5b3VyIENJL0NEIHdvcmtmbG93cywgdXNlIGB3b3JrZmxvd05vZGVWZXJzaW9uYC5cbiAgICogQGRlZmF1bHQgLSBubyBtaW5pbXVtIHZlcnNpb24gaXMgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1pbk5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbm9kZSB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGlzIHBhY2thZ2UuIE1vc3QgcHJvamVjdHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBvcHRpb24uXG4gICAqIFRoZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFja2FnZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBhbnkgbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogVGhpcyByZXF1aXJlbWVudCBpcyBlbmZvcmNlZCB2aWEgdGhlIGVuZ2luZXMgZmllbGQuXG4gICAqXG4gICAqIFlvdSB3aWxsIG5vcm1hbGx5IG5vdCBuZWVkIHRvIHNldCB0aGlzIG9wdGlvbi5cbiAgICogQ29uc2lkZXIgdGhpcyBvcHRpb24gb25seSBpZiB5b3VyIHBhY2thZ2UgaXMga25vd24gdG8gbm90IGZ1bmN0aW9uIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2Ygbm9kZS5cbiAgICogQGRlZmF1bHQgLSBubyBtYXhpbXVtIHZlcnNpb24gaXMgZW5mb3JjZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IG1heE5vZGVWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgbGljZW5zZSBzaG91bGQgYmUgYWRkZWQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGxpY2Vuc2VkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExpY2Vuc2UncyBTUERYIGlkZW50aWZpZXIuXG4gICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi90cmVlL21haW4vbGljZW5zZS10ZXh0IGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGxpY2Vuc2VzLlxuICAgKiBVc2UgdGhlIGBsaWNlbnNlZGAgb3B0aW9uIGlmIHlvdSB3YW50IHRvIG5vIGxpY2Vuc2UgdG8gYmUgc3BlY2lmaWVkLlxuICAgKiBAZGVmYXVsdCBcIkFwYWNoZS0yLjBcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEtleXdvcmRzIHRvIGluY2x1ZGUgaW4gYHBhY2thZ2UuanNvbmAuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBQYWNrYWdlJ3MgSG9tZXBhZ2UgLyBXZWJzaXRlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgaG9tZXBhZ2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb2R1bGUgZW50cnlwb2ludCAoYG1haW5gIGluIGBwYWNrYWdlLmpzb25gKS5cbiAgICogU2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBub3QgaW5jbHVkZSBgbWFpbmAgaW4geW91ciBwYWNrYWdlLmpzb25cbiAgICogQGRlZmF1bHQgXCJsaWIvaW5kZXguanNcIlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlwb2ludD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgYGRldkVuZ2luZXNgIGZpZWxkIGluIGBwYWNrYWdlLmpzb25gLlxuICAgKiBUaGUgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGJhc2VkIG9uXG4gICAqIHRoZSByZXNvbHZlZCBgcGFja2FnZU1hbmFnZXJgIHZhbHVlLiBBbnkgZmllbGRzIHByb3ZpZGVkIGhlcmUgYXJlIG1lcmdlZFxuICAgKiB3aXRoIHRoZSBhdXRvLXBvcHVsYXRlZCBgcGFja2FnZU1hbmFnZXJgIGVudHJ5LlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZGV2RW5naW5lcz86IGphdmFzY3JpcHQuRGV2RW5naW5lcztcbiAgLyoqXG4gICAqIEJ1aWxkIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuXG4gICAqIFRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIG9ubHkgYmVcbiAgICogYXZhaWxhYmxlIGluIHlvdXIgYnVpbGQgZW52aXJvbm1lbnQgYnV0IHdpbGwgbm90IGJlIGZldGNoZWQgd2hlbiB0aGlzXG4gICAqIG1vZHVsZSBpcyBjb25zdW1lZC5cbiAgICpcbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICogQGZlYXR1cmVkIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRldkRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIGlzIGp1c3QgYSBzdHJpbmcgdGhhdCBoZWxwcyBwZW9wbGUgdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGUgcGFja2FnZS5cbiAgICogSXQgY2FuIGJlIHVzZWQgd2hlbiBzZWFyY2hpbmcgZm9yIHBhY2thZ2VzIGluIGEgcGFja2FnZSBtYW5hZ2VyIGFzIHdlbGwuXG4gICAqIFNlZSBodHRwczovL2NsYXNzaWMueWFybnBrZy5jb20vZW4vZG9jcy9wYWNrYWdlLWpzb24vI3RvYy1kZXNjcmlwdGlvblxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAZmVhdHVyZWQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSdW50aW1lIGRlcGVuZGVuY2llcyBvZiB0aGlzIG1vZHVsZS5cbiAgICogVGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIG9ubHkgc3BlY2lmeSB0aGUgbW9kdWxlIG5hbWUgaGVyZSAoZS5nLlxuICAgKiBgZXhwcmVzc2ApLiBUaGlzIHdpbGwgYmVoYXZlIHNpbWlsYXIgdG8gYHBucG0gYWRkYCBvciBgbnBtIGluc3RhbGxgIGluIHRoZVxuICAgKiBzZW5zZSB0aGF0IGl0IHdpbGwgYWRkIHRoZSBtb2R1bGUgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmBcbiAgICogZmlsZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiAoYF5gKS4gWW91IGNhbiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW5cbiAgICogdGhlIHNhbWUgc3ludGF4IHBhc3NlZCB0byBgcG5wbSBhZGRgIG9yIGBucG0gaWAgKGUuZy4gYGV4cHJlc3NAXjJgKSBhbmRcbiAgICogdGhpcyB3aWxsIGJlIHdoYXQgeW91ciBgcGFja2FnZS5qc29uYCB3aWxsIGV2ZW50dWFsbHkgaW5jbHVkZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICogQGZlYXR1cmVkIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlcHM/OiBBcnJheTxzdHJpbmc+O1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBkZWxldGUgbG9ja2ZpbGVzIGZyb20gcGFja2FnZSBtYW5hZ2VycyB0aGF0IGFyZSBub3QgdGhlIGFjdGl2ZSBvbmUuXG4gICAqIE9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlIGxvY2tmaWxlIGZvciB0aGUgY29uZmlndXJlZCBwYWNrYWdlXG4gICAqIG1hbmFnZXIgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gbWlncmF0aW5nIGJldHdlZW4gcGFja2FnZSBtYW5hZ2VycyB0byBhdm9pZCBjb25mbGljdHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9ycGhhbmVkTG9ja0ZpbGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFkZCBhIGBkZWR1cGVgIHRhc2sgdGhhdCBkZWR1cGxpY2F0ZXMgcHJvamVjdCBkZXBlbmRlbmNpZXMuXG4gICAqIERlZHVwbGljYXRpb24gcHJldmVudHMgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcGFja2FnZSBmcm9tIGJlaW5nXG4gICAqIGluc3RhbGxlZCwgaWYgYSBzaW5nbGUgdmVyc2lvbiBjYW4gc2F0aXNmeSBhbGwgcmVxdWVzdGVkIHZlcnNpb24gcmFuZ2VzLlxuICAgKiBUaGlzIHByZXZlbnRzIHZlcnNpb24gcHJvbGlmZXJhdGlvbiBhbmQgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgZGVwZW5kZW5jeVxuICAgKiB0cmVlLlxuICAgKlxuICAgKiBUaGUgYmVoYXZpb3IgZGVwZW5kcyBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyOlxuICAgKiAtIG5wbTogcnVucyBgbnBtIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC5cbiAgICogLSBwbnBtOiBydW5zIGBwbnBtIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC5cbiAgICogLSBZYXJuIEJlcnJ5OiBydW5zIGB5YXJuIGRlZHVwZWAgYWZ0ZXIgZXZlcnkgbXV0YXRpbmcgaW5zdGFsbC4gSWZcbiAgICogICBgeWFybkJlcnJ5T3B0aW9ucy5kZWR1cGVQYWNrYWdlc2AgaXMgc2V0LCBvbmx5IHRoZSBsaXN0ZWQgcGFja2FnZXMgYXJlXG4gICAqICAgZGVkdXBsaWNhdGVkLlxuICAgKiAtIFlhcm4gQ2xhc3NpYzogYHlhcm4gaW5zdGFsbGAgYWxyZWFkeSBkZWR1cGxpY2F0ZXMsIHNvIHRoZSB0YXNrIG9ubHlcbiAgICogICBwcmludHMgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlLlxuICAgKiAtIEJ1bjogbm90IHN1cHBvcnRlZCwgZW5hYmxpbmcgdGhpcyBvcHRpb24gdGhyb3dzIGFuIGVycm9yLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlLCB1bmxlc3MgYHlhcm5CZXJyeU9wdGlvbnMuZGVkdXBlUGFja2FnZXNgIGlzIHNldFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlRGVwcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHZhbHVlcyBhdmFpbGFibGUgdG8gcGFja2FnZSBzY3JpcHRzIGF0IHJ1bnRpbWUuXG4gICAqIFZhbHVlcyBzaG91bGQgYmUgSlNPTi1zZXJpYWxpemFibGUuXG4gICAqIEBkZWZhdWx0IC0gbm8gcGFja2FnZSBjb25maWd1cmF0aW9uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogT3B0aW9ucyBmb3IgbnBtIHBhY2thZ2VzIHVzaW5nIEFXUyBDb2RlQXJ0aWZhY3QuXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgaWYgcHVibGlzaGluZyBwYWNrYWdlcyB0bywgb3IgaW5zdGFsbGluZyBzY29wZWQgcGFja2FnZXMgZnJvbSBBV1MgQ29kZUFydGlmYWN0XG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb2RlQXJ0aWZhY3RPcHRpb25zPzogamF2YXNjcmlwdC5Db2RlQXJ0aWZhY3RPcHRpb25zO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgQnVuIHRvIHVzZSBpZiB1c2luZyBCdW4gYXMgYSBwYWNrYWdlIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1blZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGRlcGVuZGVuY2llcyB0byBidW5kbGUgaW50byB0aGlzIG1vZHVsZS5cbiAgICogVGhlc2UgbW9kdWxlcyB3aWxsIGJlXG4gICAqIGFkZGVkIGJvdGggdG8gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb24gYW5kIGBidW5kbGVkRGVwZW5kZW5jaWVzYCBzZWN0aW9uIG9mXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAuXG4gICAqXG4gICAqIFRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byBvbmx5IHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGhlcmUgKGUuZy5cbiAgICogYGV4cHJlc3NgKS4gVGhpcyB3aWxsIGJlaGF2ZSBzaW1pbGFyIHRvIGBwbnBtIGFkZGAgb3IgYG5wbSBpbnN0YWxsYCBpbiB0aGVcbiAgICogc2Vuc2UgdGhhdCBpdCB3aWxsIGFkZCB0aGUgbW9kdWxlIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIGBwYWNrYWdlLmpzb25gXG4gICAqIGZpbGUgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gKGBeYCkuIFlvdSBjYW4gc3BlY2lmeSBzZW12ZXIgcmVxdWlyZW1lbnRzIGluXG4gICAqIHRoZSBzYW1lIHN5bnRheCBwYXNzZWQgdG8gYHBucG0gYWRkYCBvciBgbnBtIGlgIChlLmcuIGBleHByZXNzQF4yYCkgYW5kXG4gICAqIHRoaXMgd2lsbCBiZSB3aGF0IHlvdXIgYHBhY2thZ2UuanNvbmAgd2lsbCBldmVudHVhbGx5IGluY2x1ZGUuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidW5kbGVkRGVwcz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBUaGUgdXJsIHRvIHlvdXIgcHJvamVjdCdzIGlzc3VlIHRyYWNrZXIuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBidWdzVXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gd2hpY2ggaXNzdWVzIHNob3VsZCBiZSByZXBvcnRlZC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGJ1Z3NFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEJpbmFyeSBwcm9ncmFtcyB2ZW5kZWQgd2l0aCB5b3VyIG1vZHVsZS5cbiAgICogWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8gYWRkL2N1c3RvbWl6ZSBob3cgYmluYXJpZXMgYXJlIHJlcHJlc2VudGVkIGluXG4gICAqIHlvdXIgYHBhY2thZ2UuanNvbmAsIGJ1dCB1bmxlc3MgYGF1dG9EZXRlY3RCaW5gIGlzIGBmYWxzZWAsIGV2ZXJ5XG4gICAqIGV4ZWN1dGFibGUgZmlsZSB1bmRlciBgYmluYCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhpcyBzZWN0aW9uLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYmluPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIGFsbCBleGVjdXRhYmxlcyB1bmRlciB0aGUgYGJpbmAgZGlyZWN0b3J5IHRvIHlvdXIgYHBhY2thZ2UuanNvbmAgZmlsZSB1bmRlciB0aGUgYGJpbmAgc2VjdGlvbi5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0RldGVjdEJpbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBdXRob3IncyBVUkwgLyBXZWJzaXRlLlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aG9yVXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogSXMgdGhlIGF1dGhvciBhbiBvcmdhbml6YXRpb24uXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhdXRob3JPcmdhbml6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0aG9yJ3MgbmFtZS5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRob3IncyBlLW1haWwuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhdXRob3JFbWFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgZGVwZW5kZW5jeSAocGFja2FnZSkgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gbGlmZWN5Y2xlIGluc3RhbGwgc2NyaXB0cyAoYHByZWluc3RhbGxgLCBgaW5zdGFsbGAsIGBwb3N0aW5zdGFsbGAsIGBwcmVwYXJlYCkgZHVyaW5nIGRlcGVuZGVuY3kgaW5zdGFsbGF0aW9uLlxuICAgKiBUaGVzZSBzY3JpcHRzIGNhbiBleGVjdXRlIGFyYml0cmFyeSBjb2RlLCBtYWtpbmcgdGhlbSBhIGNvbW1vblxuICAgKiBzdXBwbHktY2hhaW4gYXR0YWNrIHZlY3Rvci4gUGFja2FnZSBtYW5hZ2VycyBhcmUgbW92aW5nIHRvd2FyZFxuICAgKiBibG9ja2luZyB0aGVtIGJ5IGRlZmF1bHQgYW5kIHJlcXVpcmluZyBhbiBleHBsaWNpdCBhbGxvd2xpc3QuXG4gICAqIENvbmZpZ3VyaW5nIGBhbGxvd1NjcmlwdHNgIHNldHMgdXAgdGhhdCBhbGxvd2xpc3Qgc28gc2NyaXB0cyBvbmx5IHJ1blxuICAgKiBmb3IgdGhlIHBhY2thZ2VzIHlvdSBoYXZlIGV4cGxpY2l0bHkgcmV2aWV3ZWQgYW5kIHRydXN0LlxuICAgKlxuICAgKiBTdXBwb3J0IGZvciB0aGlzIHNldHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJlZCBgcGFja2FnZU1hbmFnZXJgOlxuICAgKlxuICAgKiAtIGBOUE1gOiB3cml0dGVuIHRvIHRoZSBuYXRpdmUgYGFsbG93U2NyaXB0c2AgZmllbGQgaW4gYHBhY2thZ2UuanNvbmBcbiAgICogICAocmVxdWlyZXMgbnBtID49IDExLjE2OyBzZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGkvdjExL2NvbW1hbmRzL25wbS1hcHByb3ZlLXNjcmlwdHMpLlxuICAgKiAtIGBCVU5gOiB3cml0dGVuIHRvIHRoZSBuYXRpdmUgYHRydXN0ZWREZXBlbmRlbmNpZXNgIGZpZWxkIGluXG4gICAqICAgYHBhY2thZ2UuanNvbmAgKHNlZSBodHRwczovL2J1bi5jb20vZG9jcy9wbS9saWZlY3ljbGUpLlxuICAgKiAtIGBQTlBNYDogd3JpdHRlbiB0byB0aGUgYG9ubHlCdWlsdERlcGVuZGVuY2llc2Agc2V0dGluZyBpblxuICAgKiAgIGBwbnBtLXdvcmtzcGFjZS55YW1sYCAoc2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNvbmx5YnVpbHRkZXBlbmRlbmNpZXMpLlxuICAgKiAtIGBZQVJOMmAsIGBZQVJOX0JFUlJZYDogd3JpdHRlbiB0byB0aGUgbmF0aXZlXG4gICAqICAgYGRlcGVuZGVuY2llc01ldGEuPHBrZz4uYnVpbHRgIGFsbG93bGlzdCBpbiBgcGFja2FnZS5qc29uYCwgY29tYmluZWRcbiAgICogICB3aXRoIGBlbmFibGVTY3JpcHRzOiBmYWxzZWAgaW4gYC55YXJucmMueW1sYCAoc2VlXG4gICAqICAgaHR0cHM6Ly95YXJucGtnLmNvbS9mZWF0dXJlcy9zZWN1cml0eSNwb3N0aW5zdGFsbHMpLiBJZiB5b3Ugc2V0XG4gICAqICAgYHlhcm5CZXJyeU9wdGlvbnMueWFyblJjT3B0aW9ucy5lbmFibGVTY3JpcHRzYCBleHBsaWNpdGx5LCB0aGF0IHZhbHVlXG4gICAqICAgaXMgcmVzcGVjdGVkIGluc3RlYWQgb2YgYmVpbmcgb3ZlcnJpZGRlbi5cbiAgICogLSBgWUFSTmAsIGBZQVJOX0NMQVNTSUNgOiBub3Qgc3VwcG9ydGVkLiBZYXJuIENsYXNzaWMgaGFzIG5vIG5hdGl2ZVxuICAgKiAgIG1lY2hhbmlzbSB0byBhbGxvd2xpc3QgaW5zdGFsbCBzY3JpcHRzIGZvciBzcGVjaWZpYyBkZXBlbmRlbmNpZXMuXG4gICAqICAgU2V0dGluZyB0aGlzIG9wdGlvbiB3aXRoIG9uZSBvZiB0aGVzZSBwYWNrYWdlIG1hbmFnZXJzIHRocm93cyBhblxuICAgKiAgIGVycm9yIGF0IHN5bnRoZXNpcyB0aW1lLlxuICAgKiBAZGVmYXVsdCAtIGFsbCBpbnN0YWxsIHNjcmlwdHMgYXJlIGFsbG93ZWQgdG8gcnVuIChwYWNrYWdlIG1hbmFnZXIgZGVmYXVsdClcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U2NyaXB0cz86IEFycmF5PHN0cmluZz47XG4gIC8qKlxuICAgKiBBbGxvdyB0aGUgcHJvamVjdCB0byBpbmNsdWRlIGBwZWVyRGVwZW5kZW5jaWVzYCBhbmQgYGJ1bmRsZWREZXBlbmRlbmNpZXNgLlxuICAgKiBUaGlzIGlzIG5vcm1hbGx5IG9ubHkgYWxsb3dlZCBmb3IgbGlicmFyaWVzLiBGb3IgYXBwcywgdGhlcmUncyBubyBtZWFuaW5nXG4gICAqIGZvciBzcGVjaWZ5aW5nIHRoZXNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhbGxvd0xpYnJhcnlEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGQgdGhlIHJlc29sdmVkIGBwYWNrYWdlTWFuYWdlcmAgdG8gYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIGluIGBwYWNrYWdlLmpzb25gLCBzZXR0aW5nIGBvbkZhaWxgIHRvIGBpZ25vcmVgLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBhZGRQYWNrYWdlTWFuYWdlclRvRGV2RW5naW5lcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgVlNDb2RlIGludGVncmF0aW9uLlxuICAgKiBFbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHJvb3QgcHJvamVjdHMuIERpc2FibGVkIGZvciBub24tcm9vdCBwcm9qZWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgdnNjb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEF1dG8tY2xvc2Ugc3RhbGUgaXNzdWVzIGFuZCBwdWxsIHJlcXVlc3RzLlxuICAgKiBUbyBkaXNhYmxlIHNldCBgc3RhbGVgIHRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBTdGFsZU9wdGlvbnNgXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBzdGFsZU9wdGlvbnM/OiBnaXRodWIuU3RhbGVPcHRpb25zO1xuICAvKipcbiAgICogQXV0by1jbG9zZSBvZiBzdGFsZSBpc3N1ZXMgYW5kIHB1bGwgcmVxdWVzdC5cbiAgICogU2VlIGBzdGFsZU9wdGlvbnNgIGZvciBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhbGU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvZiB0aGUgUkVBRE1FLm1kIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRtZT86IFJlYWRtZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBDaG9vc2UgYSBtZXRob2Qgb2YgcHJvdmlkaW5nIEdpdEh1YiBBUEkgYWNjZXNzIGZvciBwcm9qZW4gd29ya2Zsb3dzLlxuICAgKiBAZGVmYXVsdCAtIHVzZSBhIHBlcnNvbmFsIGFjY2VzcyB0b2tlbiBuYW1lZCBQUk9KRU5fR0lUSFVCX1RPS0VOXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5DcmVkZW50aWFscz86IGdpdGh1Yi5HaXRodWJDcmVkZW50aWFscztcbiAgLyoqXG4gICAqIEFkZCBhIEdpdHBvZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdHBvZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqIEBkZWZhdWx0IC0gc2VlIEdpdEh1Yk9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk9wdGlvbnM/OiBnaXRodWIuR2l0SHViT3B0aW9ucztcbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqIEVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igcm9vdCBwcm9qZWN0cy4gRGlzYWJsZWQgZm9yIG5vbi1yb290IHByb2plY3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRodWI/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIGEgVlNDb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50ICh1c2VkIGZvciBHaXRIdWIgQ29kZXNwYWNlcykuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBkZXZDb250YWluZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkIGEgYGNsb2JiZXJgIHRhc2sgd2hpY2ggcmVzZXRzIHRoZSByZXBvIHRvIG9yaWdpbi5cbiAgICogQGRlZmF1bHQgLSB0cnVlLCBidXQgZmFsc2UgZm9yIHN1YnByb2plY3RzXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjbG9iYmVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBvcHRpb25zIGZvciBhdXRvbWF0aWMgbWVyZ2luZyBvbiBHaXRIdWIuXG4gICAqIEhhcyBubyBlZmZlY3QgaWZcbiAgICogYGdpdGh1Yi5tZXJnaWZ5YCBvciBgYXV0b01lcmdlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAqIEBkZWZhdWx0IC0gc2VlIGRlZmF1bHRzIGluIGBBdXRvTWVyZ2VPcHRpb25zYFxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlT3B0aW9ucz86IGdpdGh1Yi5BdXRvTWVyZ2VPcHRpb25zO1xuICAvKipcbiAgICogRW5hYmxlIGF1dG9tYXRpYyBtZXJnaW5nIG9uIEdpdEh1Yi5cbiAgICogSGFzIG5vIGVmZmVjdCBpZiBgZ2l0aHViLm1lcmdpZnlgXG4gICAqIGlzIHNldCB0byBmYWxzZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01lcmdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSAnYXV0byBhcHByb3ZlJyB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgLSBhdXRvIGFwcHJvdmUgaXMgZGlzYWJsZWRcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9BcHByb3ZlT3B0aW9ucz86IGdpdGh1Yi5BdXRvQXBwcm92ZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciByZW5vdmF0ZWJvdC5cbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IG9wdGlvbnNcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbm92YXRlYm90T3B0aW9ucz86IFJlbm92YXRlYm90T3B0aW9ucztcbiAgLyoqXG4gICAqIFVzZSByZW5vdmF0ZWJvdCB0byBoYW5kbGUgZGVwZW5kZW5jeSB1cGdyYWRlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHJlbm92YXRlYm90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy5qc29uLlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNKc29uT3B0aW9ucz86IFByb2plbnJjSnNvbk9wdGlvbnM7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSAob25jZSkgLnByb2plbnJjLmpzb24gKGluIEpTT04pLiBTZXQgdG8gYGZhbHNlYCBpbiBvcmRlciB0byBkaXNhYmxlIC5wcm9qZW5yYy5qc29uIGdlbmVyYXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5yY0pzb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHNoZWxsIGNvbW1hbmQgdG8gdXNlIGluIG9yZGVyIHRvIHJ1biB0aGUgcHJvamVuIENMSS5cbiAgICogSW5zZXJ0ZWQgdmVyYmF0aW0gaW50byB0YXNrIHN0ZXBzLCB3b3JrZmxvd3MgYW5kIElERSBjb25maWd1cmF0aW9uLCBhbmQgcnVuXG4gICAqIGJ5IGVhY2ggb2YgdGhlaXIgc2hlbGxzIC0gbG9jYWxseSwgaW4gQ0kgYW5kIGluIGRldiBjb250YWluZXJzLiBLZWVwIGl0IGFcbiAgICogcGxhaW4gdW5xdW90ZWQgY29tbWFuZCwgc2luY2Ugc2hlbGwgc3ludGF4IGluIGl0IGV4ZWN1dGVzIGluIGFsbCBvZiB0aGVtLlxuICAgKlxuICAgKiBDYW4gYmUgdXNlZCB0byBjdXN0b21pemUgaW4gc3BlY2lhbCBlbnZpcm9ubWVudHMuXG4gICAqIEBkZWZhdWx0IFwibnB4IHByb2plblwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBwcm9qZW5Db21tYW5kPzogc3RyaW5nO1xuICAvKipcbiAgICogR2VuZXJhdGUgYSBwcm9qZWN0IHRyZWUgZmlsZSAoYC5wcm9qZW4vdHJlZS5qc29uYCkgdGhhdCBzaG93cyBhbGwgY29tcG9uZW50cyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gVXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIHlvdXIgcHJvamVjdCBzdHJ1Y3R1cmUgYW5kIGRlYnVnZ2luZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RUcmVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgcHJvamVjdCwgaWYgdGhpcyBwcm9qZWN0IGlzIHBhcnQgb2YgYSBiaWdnZXIgcHJvamVjdC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudD86IFByb2plY3Q7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAqIFJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LCBhbGwgZmlsZXMgYXJlIHN5bnRoZXNpemVkLlxuICAgKlxuICAgKiBJZiB0aGlzIHByb2plY3QgaGFzIGEgcGFyZW50LCB0aGlzIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50XG4gICAqIGRpcmVjdG9yeSBhbmQgaXQgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgb3IgYW55IG9mIGl0J3Mgb3RoZXJcbiAgICogc3VicHJvamVjdHMuXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb25maWd1cmUgbG9nZ2luZyBvcHRpb25zIHN1Y2ggYXMgdmVyYm9zaXR5LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IExvZ2dlck9wdGlvbnM7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGdpdC5cbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGdpdE9wdGlvbnM/OiBHaXRPcHRpb25zO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciAuZ2l0aWdub3JlIGZpbGUuXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBnaXRJZ25vcmVPcHRpb25zPzogSWdub3JlRmlsZU9wdGlvbnM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbW1pdCB0aGUgbWFuYWdlZCBmaWxlcyBieSBkZWZhdWx0LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICByZWFkb25seSBjb21taXRHZW5lcmF0ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhpcyBpcyB0aGUgbmFtZSBvZiB5b3VyIHByb2plY3QuXG4gICAqIEBkZWZhdWx0ICRCQVNFRElSXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqIEBmZWF0dXJlZCB0cnVlXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdXRob3JzIHdob3NlIHB1bGwgcmVxdWVzdHMgdGhlIG1lcmdlIHF1ZXVlIG1lcmdlcyB3aXRob3V0IGFuIGFwcHJvdmFsLCBzdWNoIGFzIHRoZSBzaW5nbGUgbWFpbnRhaW5lciBvZiBhIHJlcG9zaXRvcnksIHdobyBjYW5ub3QgYXBwcm92ZSB0aGVpciBvd24gcHVsbCByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IHRydXN0ZWRBdXRob3JzPzogQXJyYXk8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFNjYW4gdGhlIGNvZGUgd2l0aCBDb2RlUUwgb24gcHVsbCByZXF1ZXN0cywgcHVzaGVzIHRvIHRoZSBkZWZhdWx0IGJyYW5jaCBhbmQgd2Vla2x5LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb2RlcWw/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdCBvZiB0ZWFtcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBDT0RFT1dORVJTIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGNvZGVPd25lcnM6IEFycmF5PHN0cmluZz47XG59XG4iXX0=
|
|
@@ -41,12 +41,13 @@ function getOptions(options) {
|
|
|
41
41
|
* @pjid cdk-typescript-app
|
|
42
42
|
*/
|
|
43
43
|
class CdkTypeScriptApp extends awscdk_1.AwsCdkTypeScriptApp {
|
|
44
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.CdkTypeScriptApp", version: "3.2.
|
|
44
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen-modules.CdkTypeScriptApp", version: "3.2.2" };
|
|
45
45
|
readme;
|
|
46
46
|
constructor(options) {
|
|
47
47
|
const mergedOptions = getOptions(options);
|
|
48
48
|
super({
|
|
49
49
|
...mergedOptions,
|
|
50
|
+
autoMergeOptions: (0, mergify_1.autoMergeOptions)(mergedOptions),
|
|
50
51
|
});
|
|
51
52
|
new codeowners_1.CodeOwners(this, mergedOptions.codeOwners);
|
|
52
53
|
this.readme = new readme_1.Readme(this, {
|
|
@@ -62,10 +63,11 @@ class CdkTypeScriptApp extends awscdk_1.AwsCdkTypeScriptApp {
|
|
|
62
63
|
if (this.autoMerge) {
|
|
63
64
|
(0, mergify_1.configureMergify)(this, {
|
|
64
65
|
approvedReviews: mergedOptions.autoMergeOptions?.approvedReviews,
|
|
66
|
+
trustedAuthors: mergedOptions.trustedAuthors,
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
71
|
exports.CdkTypeScriptApp = CdkTypeScriptApp;
|
|
70
72
|
__exportStar(require("./cdk-typescript-app-options"), exports);
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvamVjdHMvY2RrLXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUcyQjtBQUUzQixtRUFBZ0U7QUFDaEUsMkRBQXdEO0FBQ3hELDZEQUd5QztBQUN6Qyx5RkFBOEY7QUFDOUYsb0RBQWlEO0FBQ2pELDZEQUF5RDtBQUV6RCxTQUFTLFVBQVUsQ0FBQyxPQUFnQztJQUNsRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSTtRQUNKLG9CQUFvQixFQUFFLE1BQU07UUFDNUIsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNoQywyQkFBMkIsRUFBRSxxREFBNkI7UUFDMUQsVUFBVSxFQUFFLElBQUk7S0FDMEIsQ0FBQztJQUU3QyxPQUFPLElBQUEsNEJBQVksRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSw0QkFBbUI7O0lBQ3ZELE1BQU0sQ0FBUztJQUVmLFlBQVksT0FBZ0M7UUFDMUMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLEtBQUssQ0FBQztZQUNKLEdBQUcsYUFBYTtZQUNoQixnQkFBZ0IsRUFBRSxJQUFBLDBCQUFnQixFQUFDLGFBQWEsQ0FBQztTQUNwQixDQUFDLENBQUM7UUFFakMsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxJQUFJLEVBQUU7WUFDN0IsV0FBVyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVztTQUMvQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FDcEIsaUJBQWlCLEVBQ2pCLDRDQUE0QyxDQUM3QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BFLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDOUMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDO2FBQ2hELENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFBLDBCQUFnQixFQUFDLElBQUksRUFBRTtnQkFDckIsZUFBZSxFQUFFLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlO2dCQUNoRSxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWM7YUFDN0MsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBL0JILDRDQWdDQztBQUVELCtEQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF3c0Nka1R5cGVTY3JpcHRBcHAsXG4gIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zLFxufSBmcm9tICdwcm9qZW4vbGliL2F3c2Nkayc7XG5pbXBvcnQgeyBDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucyB9IGZyb20gJy4vY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMnO1xuaW1wb3J0IHsgQ29kZU93bmVycyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZ2l0aHViL2NvZGVvd25lcnMnO1xuaW1wb3J0IHsgQ29kZVFsIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9naXRodWIvY29kZXFsJztcbmltcG9ydCB7XG4gIGF1dG9NZXJnZU9wdGlvbnMsXG4gIGNvbmZpZ3VyZU1lcmdpZnksXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZ2l0aHViL21lcmdpZnknO1xuaW1wb3J0IHsgREVGQVVMVF9QVUxMX1JFUVVFU1RfVEVNUExBVEUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2dpdGh1Yi9wdWxsLXJlcXVlc3QtdGVtcGxhdGUnO1xuaW1wb3J0IHsgUmVhZG1lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9yZWFkbWUnO1xuaW1wb3J0IHsgbWVyZ2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWVyZ2Utb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnMob3B0aW9uczogQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMpIHtcbiAgY29uc3QgeyBuYW1lIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgIG5hbWUsXG4gICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6ICdtYWluJyxcbiAgICBnaXRpZ25vcmU6IFsnLm5wbXJjJywgJy52c2NvZGUnXSxcbiAgICBwdWxsUmVxdWVzdFRlbXBsYXRlQ29udGVudHM6IERFRkFVTFRfUFVMTF9SRVFVRVNUX1RFTVBMQVRFLFxuICAgIHByb2plbnJjVHM6IHRydWUsXG4gIH0gc2F0aXNmaWVzIFBhcnRpYWw8Q2RrVHlwZVNjcmlwdEFwcE9wdGlvbnM+O1xuXG4gIHJldHVybiBtZXJnZU9wdGlvbnMoZGVmYXVsdHMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEEgQ0RLIGFwcGxpY2F0aW9uIGluIFR5cGVTY3JpcHRcbiAqXG4gKlxuICogQHBqaWQgY2RrLXR5cGVzY3JpcHQtYXBwXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtUeXBlU2NyaXB0QXBwIGV4dGVuZHMgQXdzQ2RrVHlwZVNjcmlwdEFwcCB7XG4gIHJlYWRtZTogUmVhZG1lO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka1R5cGVTY3JpcHRBcHBPcHRpb25zKSB7XG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IGdldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICBzdXBlcih7XG4gICAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgICAgYXV0b01lcmdlT3B0aW9uczogYXV0b01lcmdlT3B0aW9ucyhtZXJnZWRPcHRpb25zKSxcbiAgICB9IGFzIEF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zKTtcblxuICAgIG5ldyBDb2RlT3duZXJzKHRoaXMsIG1lcmdlZE9wdGlvbnMuY29kZU93bmVycyk7XG4gICAgdGhpcy5yZWFkbWUgPSBuZXcgUmVhZG1lKHRoaXMsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBtZXJnZWRPcHRpb25zLnJlYWRtZT8uZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gICAgdGhpcy5yZWFkbWUuYWRkU2VjdGlvbihcbiAgICAgICdHZXR0aW5nIFN0YXJ0ZWQnLFxuICAgICAgJ2BgYHNoXFxueWFybiBpbnN0YWxsXFxubnB4IHByb2plbiBidWlsZFxcbmBgYCcsXG4gICAgKTtcbiAgICBpZiAoKG1lcmdlZE9wdGlvbnMuY29kZXFsID8/IHRydWUpICYmIHRoaXMuZ2l0aHViPy53b3JrZmxvd3NFbmFibGVkKSB7XG4gICAgICBuZXcgQ29kZVFsKHRoaXMuZ2l0aHViLCB7XG4gICAgICAgIGJyYW5jaGVzOiBbbWVyZ2VkT3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaF0sXG4gICAgICAgIGxhbmd1YWdlczogWydqYXZhc2NyaXB0LXR5cGVzY3JpcHQnLCAnYWN0aW9ucyddLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmF1dG9NZXJnZSkge1xuICAgICAgY29uZmlndXJlTWVyZ2lmeSh0aGlzLCB7XG4gICAgICAgIGFwcHJvdmVkUmV2aWV3czogbWVyZ2VkT3B0aW9ucy5hdXRvTWVyZ2VPcHRpb25zPy5hcHByb3ZlZFJldmlld3MsXG4gICAgICAgIHRydXN0ZWRBdXRob3JzOiBtZXJnZWRPcHRpb25zLnRydXN0ZWRBdXRob3JzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCAqIGZyb20gJy4vY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMnO1xuIl19
|