@xpertss/projen-types 0.0.18 → 0.0.20
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 +86 -47
- package/API.md +44 -4
- package/README.md +29 -2
- package/lib/actions/action-build-workflow.js +1 -1
- package/lib/actions/action-dogfood-workflow.d.ts +12 -2
- package/lib/actions/action-dogfood-workflow.js +3 -3
- package/lib/actions/action-sonar-workflow.d.ts +7 -0
- package/lib/actions/action-sonar-workflow.js +4 -2
- package/lib/actions/github-action-project.d.ts +10 -2
- package/lib/actions/github-action-project.js +5 -3
- package/lib/cdk/app-runtime-scaffold.js +1 -1
- package/lib/cdk/cdk-app-project.js +1 -1
- package/lib/cdk/cdk-infra-project.js +1 -1
- package/lib/cdk/cdk-typescript-base.js +1 -1
- package/lib/cdk/components/ecr-ecs-constructs.js +1 -1
- package/lib/cdk/components/edge-networking-constructs.js +1 -1
- package/lib/cdk/database-component.js +1 -1
- package/lib/common/license-file.d.ts +10 -0
- package/lib/common/license-file.js +72 -0
- package/lib/common/projen-drift-check-workflow.js +1 -1
- package/lib/common/workflow-change-notice-workflow.js +1 -1
- package/lib/java/components/cdk-deploy-hook.js +1 -1
- package/lib/java/components/code-index-workflow.js +1 -1
- package/lib/java/components/docker-publish.js +1 -1
- package/lib/java/components/flyway-migration.js +1 -1
- package/lib/java/components/github-packages-publish.js +1 -1
- package/lib/java/components/maven-central-publish.js +1 -1
- package/lib/java/components/maven-upgrade-report.js +1 -1
- package/lib/java/java-app-project.js +1 -1
- package/lib/java/java-library-project.js +1 -1
- package/lib/java/java-maven-base.js +4 -3
- package/lib/java/java-service-project.js +1 -1
- package/lib/java/java-spring-boot-project.js +1 -1
- package/lib/java/maven/maven-module.js +1 -1
- package/lib/java/maven/maven-pom.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.addLicenseFile = addLicenseFile;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const projen_1 = require("projen");
|
|
40
|
+
const LICENSE_NAMES = {
|
|
41
|
+
MIT: 'MIT License',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Write a `LICENSE` file that prepends a human-readable license name header
|
|
45
|
+
* (e.g. `MIT License`) before the standard SPDX copyright + grant text.
|
|
46
|
+
*/
|
|
47
|
+
function addLicenseFile(project, options) {
|
|
48
|
+
const spdx = options.spdx;
|
|
49
|
+
const licenseDir = path.join(path.dirname(require.resolve('projen')), '..', 'license-text');
|
|
50
|
+
const templatePath = path.join(licenseDir, `${spdx}.txt`);
|
|
51
|
+
if (!fs.existsSync(templatePath)) {
|
|
52
|
+
throw new Error(`unsupported license ${spdx}`);
|
|
53
|
+
}
|
|
54
|
+
const years = options.copyrightPeriod ?? new Date().getFullYear().toString();
|
|
55
|
+
const owner = options.copyrightOwner;
|
|
56
|
+
let text = fs.readFileSync(templatePath, 'utf-8');
|
|
57
|
+
text = text.replace(/\$copyright_period/g, years);
|
|
58
|
+
if (text.indexOf('$copyright_owner') !== -1) {
|
|
59
|
+
if (!owner) {
|
|
60
|
+
throw new Error(`The ${spdx} license requires "copyrightOwner" to be specified`);
|
|
61
|
+
}
|
|
62
|
+
text = text.replace(/\$copyright_owner/g, owner);
|
|
63
|
+
}
|
|
64
|
+
const header = LICENSE_NAMES[spdx] ?? spdx;
|
|
65
|
+
const lines = text.trim().split('\n');
|
|
66
|
+
new projen_1.TextFile(project, 'LICENSE', {
|
|
67
|
+
marker: false,
|
|
68
|
+
committed: true,
|
|
69
|
+
lines: [header, '', ...lines],
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9saWNlbnNlLWZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSx3Q0FxQ0M7QUFqREQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixtQ0FBMkM7QUFFM0MsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLEdBQUcsRUFBRSxhQUFhO0NBQ25CLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQzVCLE9BQWdCLEVBQ2hCLE9BSUM7SUFFRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzVGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQztJQUUxRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBRXJDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWxELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksb0RBQW9ELENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0QyxJQUFJLGlCQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUMvQixNQUFNLEVBQUUsS0FBSztRQUNiLFNBQVMsRUFBRSxJQUFJO1FBQ2YsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQztLQUM5QixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFByb2plY3QsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcblxuY29uc3QgTElDRU5TRV9OQU1FUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgTUlUOiAnTUlUIExpY2Vuc2UnLFxufTtcblxuLyoqXG4gKiBXcml0ZSBhIGBMSUNFTlNFYCBmaWxlIHRoYXQgcHJlcGVuZHMgYSBodW1hbi1yZWFkYWJsZSBsaWNlbnNlIG5hbWUgaGVhZGVyXG4gKiAoZS5nLiBgTUlUIExpY2Vuc2VgKSBiZWZvcmUgdGhlIHN0YW5kYXJkIFNQRFggY29weXJpZ2h0ICsgZ3JhbnQgdGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZExpY2Vuc2VGaWxlKFxuICBwcm9qZWN0OiBQcm9qZWN0LFxuICBvcHRpb25zOiB7XG4gICAgcmVhZG9ubHkgc3BkeDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNvcHlyaWdodE93bmVyPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNvcHlyaWdodFBlcmlvZD86IHN0cmluZztcbiAgfSxcbik6IHZvaWQge1xuICBjb25zdCBzcGR4ID0gb3B0aW9ucy5zcGR4O1xuICBjb25zdCBsaWNlbnNlRGlyID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoJ3Byb2plbicpKSwgJy4uJywgJ2xpY2Vuc2UtdGV4dCcpO1xuICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4obGljZW5zZURpciwgYCR7c3BkeH0udHh0YCk7XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKHRlbXBsYXRlUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGxpY2Vuc2UgJHtzcGR4fWApO1xuICB9XG5cbiAgY29uc3QgeWVhcnMgPSBvcHRpb25zLmNvcHlyaWdodFBlcmlvZCA/PyBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgY29uc3Qgb3duZXIgPSBvcHRpb25zLmNvcHlyaWdodE93bmVyO1xuXG4gIGxldCB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0Zi04Jyk7XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcJGNvcHlyaWdodF9wZXJpb2QvZywgeWVhcnMpO1xuXG4gIGlmICh0ZXh0LmluZGV4T2YoJyRjb3B5cmlnaHRfb3duZXInKSAhPT0gLTEpIHtcbiAgICBpZiAoIW93bmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAke3NwZHh9IGxpY2Vuc2UgcmVxdWlyZXMgXCJjb3B5cmlnaHRPd25lclwiIHRvIGJlIHNwZWNpZmllZGApO1xuICAgIH1cbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXCRjb3B5cmlnaHRfb3duZXIvZywgb3duZXIpO1xuICB9XG5cbiAgY29uc3QgaGVhZGVyID0gTElDRU5TRV9OQU1FU1tzcGR4XSA/PyBzcGR4O1xuICBjb25zdCBsaW5lcyA9IHRleHQudHJpbSgpLnNwbGl0KCdcXG4nKTtcblxuICBuZXcgVGV4dEZpbGUocHJvamVjdCwgJ0xJQ0VOU0UnLCB7XG4gICAgbWFya2VyOiBmYWxzZSxcbiAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgbGluZXM6IFtoZWFkZXIsICcnLCAuLi5saW5lc10sXG4gIH0pO1xufVxuIl19
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const ci_steps_1 = require("./ci-steps");
|
|
7
7
|
const workflow_purpose_1 = require("./workflow-purpose");
|
|
8
8
|
class ProjenDriftCheckWorkflow extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.ProjenDriftCheckWorkflow", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.ProjenDriftCheckWorkflow", version: "0.0.20" };
|
|
10
10
|
workflow;
|
|
11
11
|
constructor(scope, options = {}) {
|
|
12
12
|
super(scope, 'ProjenDriftCheckWorkflow');
|
|
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const projen_1 = require("projen");
|
|
6
6
|
const workflow_purpose_1 = require("./workflow-purpose");
|
|
7
7
|
class WorkflowChangeNoticeWorkflow extends projen_1.Component {
|
|
8
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.WorkflowChangeNoticeWorkflow", version: "0.0.
|
|
8
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.WorkflowChangeNoticeWorkflow", version: "0.0.20" };
|
|
9
9
|
workflow;
|
|
10
10
|
constructor(scope, options = {}) {
|
|
11
11
|
super(scope, 'WorkflowChangeNoticeWorkflow');
|
|
@@ -18,7 +18,7 @@ const manual_deploy_workflow_1 = require("../../common/manual-deploy-workflow");
|
|
|
18
18
|
* which is exactly when "this repo has no deploy target" needs saying.
|
|
19
19
|
*/
|
|
20
20
|
class CdkDeployHook extends projen_1.Component {
|
|
21
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkDeployHook", version: "0.0.
|
|
21
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CdkDeployHook", version: "0.0.20" };
|
|
22
22
|
constructor(project, environments, options = {}) {
|
|
23
23
|
super(project, 'CdkDeployHook');
|
|
24
24
|
const targetRepo = options.targetRepo;
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
7
|
/** Generates a code index and publishes it to `.cai/` on checkin. */
|
|
8
8
|
class CodeIndexWorkflow extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CodeIndexWorkflow", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.CodeIndexWorkflow", version: "0.0.20" };
|
|
10
10
|
constructor(project) {
|
|
11
11
|
super(project, 'CodeIndexWorkflow');
|
|
12
12
|
const gh = project.github;
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
7
|
/** On-demand build+push of a Docker image, defaulting to Docker Hub. */
|
|
8
8
|
class DockerPublish extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DockerPublish", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.DockerPublish", version: "0.0.20" };
|
|
10
10
|
constructor(project, options = {}) {
|
|
11
11
|
super(project, 'DockerPublish');
|
|
12
12
|
const gh = project.github;
|
|
@@ -11,7 +11,7 @@ const java_versions_1 = require("../java-versions");
|
|
|
11
11
|
* plugin (which Boot's BOM does not manage) is pinned for the Java line.
|
|
12
12
|
*/
|
|
13
13
|
class FlywayMigration extends projen_1.Component {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.FlywayMigration", version: "0.0.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.FlywayMigration", version: "0.0.20" };
|
|
15
15
|
constructor(project) {
|
|
16
16
|
super(project, 'FlywayMigration');
|
|
17
17
|
project.addPlugin(`${java_versions_1.FLYWAY_MAVEN_PLUGIN}@${project.pinnedVersion(java_versions_1.FLYWAY_MAVEN_PLUGIN)}`);
|
|
@@ -6,7 +6,7 @@ const projen_1 = require("projen");
|
|
|
6
6
|
const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
7
7
|
/** On-demand publish to GitHub Packages. */
|
|
8
8
|
class GitHubPackagesPublish extends projen_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubPackagesPublish", version: "0.0.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.GitHubPackagesPublish", version: "0.0.20" };
|
|
10
10
|
constructor(project, options = {}) {
|
|
11
11
|
super(project, 'GitHubPackagesPublish');
|
|
12
12
|
const gh = project.github;
|
|
@@ -9,7 +9,7 @@ const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
|
9
9
|
* or OIDC trusted publishing.
|
|
10
10
|
*/
|
|
11
11
|
class MavenCentralPublish extends projen_1.Component {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenCentralPublish", version: "0.0.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenCentralPublish", version: "0.0.20" };
|
|
13
13
|
constructor(project, options = {}) {
|
|
14
14
|
super(project, 'MavenCentralPublish');
|
|
15
15
|
const gh = project.github;
|
|
@@ -17,7 +17,7 @@ const workflow_purpose_1 = require("../../common/workflow-purpose");
|
|
|
17
17
|
* check. Apply an update by changing the version in `.projenrc.ts`.
|
|
18
18
|
*/
|
|
19
19
|
class MavenUpgradeReport extends projen_1.Component {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenUpgradeReport", version: "0.0.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenUpgradeReport", version: "0.0.20" };
|
|
21
21
|
workflow;
|
|
22
22
|
constructor(scope, options) {
|
|
23
23
|
super(scope, 'MavenUpgradeReport');
|
|
@@ -9,7 +9,7 @@ const java_maven_base_1 = require("./java-maven-base");
|
|
|
9
9
|
* explicitly excludes Maven Central, Docker, and CDK deploy hooks.
|
|
10
10
|
*/
|
|
11
11
|
class JavaAppProject extends java_maven_base_1.JavaMavenProject {
|
|
12
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaAppProject", version: "0.0.
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaAppProject", version: "0.0.20" };
|
|
13
13
|
constructor(options) {
|
|
14
14
|
super(options);
|
|
15
15
|
new github_packages_publish_1.GitHubPackagesPublish(this, {
|
|
@@ -12,7 +12,7 @@ const java_versions_1 = require("./java-versions");
|
|
|
12
12
|
* reactor, every module inherits them).
|
|
13
13
|
*/
|
|
14
14
|
class JavaLibraryProject extends java_maven_base_1.JavaMavenProject {
|
|
15
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaLibraryProject", version: "0.0.
|
|
15
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaLibraryProject", version: "0.0.20" };
|
|
16
16
|
constructor(options) {
|
|
17
17
|
super(options);
|
|
18
18
|
this.addPlugin(`${java_versions_1.MAVEN_SOURCE_PLUGIN}@${this.pinnedVersion(java_versions_1.MAVEN_SOURCE_PLUGIN)}`, {
|
|
@@ -12,6 +12,7 @@ const ci_steps_1 = require("../common/ci-steps");
|
|
|
12
12
|
const constants_1 = require("../common/constants");
|
|
13
13
|
const editorconfig_1 = require("../common/editorconfig");
|
|
14
14
|
const internal_actions_1 = require("../common/internal-actions");
|
|
15
|
+
const license_file_1 = require("../common/license-file");
|
|
15
16
|
const projen_drift_check_workflow_1 = require("../common/projen-drift-check-workflow");
|
|
16
17
|
const projenrc_ts_1 = require("../common/projenrc-ts");
|
|
17
18
|
const workflow_change_notice_workflow_1 = require("../common/workflow-change-notice-workflow");
|
|
@@ -43,7 +44,7 @@ const PROJEN_TYPES_VERSION = require('../../package.json').version;
|
|
|
43
44
|
* check, and a nightly report-only update check.
|
|
44
45
|
*/
|
|
45
46
|
class JavaMavenProject extends projen_1.github.GitHubProject {
|
|
46
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaMavenProject", version: "0.0.
|
|
47
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaMavenProject", version: "0.0.20" };
|
|
47
48
|
/** The root `pom.xml`. */
|
|
48
49
|
pom;
|
|
49
50
|
/** The canonical Java line the build targets (`1.8`, `17`, `21`, `25`). */
|
|
@@ -123,7 +124,7 @@ class JavaMavenProject extends projen_1.github.GitHubProject {
|
|
|
123
124
|
this.addGitIgnore('.project');
|
|
124
125
|
this.addGitIgnore('.settings');
|
|
125
126
|
if (options.licensed ?? true) {
|
|
126
|
-
|
|
127
|
+
(0, license_file_1.addLicenseFile)(this, {
|
|
127
128
|
spdx: options.license ?? 'MIT',
|
|
128
129
|
copyrightOwner: options.copyrightOwner ?? 'xpertss',
|
|
129
130
|
copyrightPeriod: options.copyrightPeriod,
|
|
@@ -403,4 +404,4 @@ function normalizeModuleDir(dir) {
|
|
|
403
404
|
}
|
|
404
405
|
return normalized;
|
|
405
406
|
}
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1tYXZlbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1tYXZlbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5Q0FBa0M7QUFDbEMsbUNBQTBFO0FBQzFFLDRFQUF1RTtBQUN2RSxtREFXeUI7QUFDekIsdURBQW1EO0FBQ25ELGlEQUFpRTtBQUVqRSxpREFBa0U7QUFDbEUsbURBQStEO0FBQy9ELHlEQUF5RDtBQUN6RCxpRUFBMEU7QUFDMUUsdUZBQWlGO0FBQ2pGLHVEQUFpRTtBQUNqRSwrRkFBeUY7QUFDekYsaUVBQWlFO0FBRWpFLDJFQUEyRTtBQUMzRSx3RUFBd0U7QUFDeEUseURBQXlEO0FBQ3pELDBCQUEwQjtBQUMxQixpRUFBaUU7QUFDakUsTUFBTSxjQUFjLEdBQVcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3RFLGlFQUFpRTtBQUNqRSxNQUFNLG9CQUFvQixHQUFXLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUUzRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLGVBQU0sQ0FBQyxhQUFhOztJQUN4RCwwQkFBMEI7SUFDVixHQUFHLENBQVc7SUFFOUIsMkVBQTJFO0lBQzNELFdBQVcsQ0FBUztJQUVwQyx5RUFBeUU7SUFDekQsV0FBVyxDQUFPO0lBRWxDOzs7O09BSUc7SUFDYSxtQkFBbUIsQ0FBc0I7SUFFekQ7OztPQUdHO0lBQ2EsWUFBWSxDQUE2QjtJQUV4QyxRQUFRLENBQWtCO0lBQzFCLGFBQWEsQ0FBVTtJQUN2QixPQUFPLENBQVM7SUFDaEIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBRWxELFlBQVksT0FBZ0M7UUFDMUMsS0FBSyxDQUFDO1lBQ0osb0VBQW9FO1lBQ3BFLHNFQUFzRTtZQUN0RSxpRUFBaUU7WUFDakUsd0RBQXdEO1lB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QztJQUM3RCxJQUFJLFVBQVUsS0FBSyxHQUFHLElBQUksVUFBVSxLQUFLLEVBQUUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BGLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxHQUFHLDRDQUE0QyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3NpeCB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBKc29uRmlsZSwgTGljZW5zZSwgU2FtcGxlRGlyLCBUYXNrLCBnaXRodWIsIGphdmEgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgTWF2ZW5VcGdyYWRlUmVwb3J0IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdmVuLXVwZ3JhZGUtcmVwb3J0JztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUlOX01BVkVOX1ZFUlNJT04sXG4gIEpVTklUX0JPTSxcbiAgSmF2YUxpbmVQcm9maWxlLFxuICBNQVZFTl9DT01QSUxFUl9QTFVHSU4sXG4gIE1BVkVOX0VORk9SQ0VSX1BMVUdJTixcbiAgTUFWRU5fRkFJTFNBRkVfUExVR0lOLFxuICBNQVZFTl9KQVJfUExVR0lOLFxuICBNQVZFTl9TVVJFRklSRV9QTFVHSU4sXG4gIFZFUlNJT05TX01BVkVOX1BMVUdJTixcbiAgcmVzb2x2ZUphdmFMaW5lLFxufSBmcm9tICcuL2phdmEtdmVyc2lvbnMnO1xuaW1wb3J0IHsgTWF2ZW5Nb2R1bGUgfSBmcm9tICcuL21hdmVuL21hdmVuLW1vZHVsZSc7XG5pbXBvcnQgeyBNYXZlblBvbSwgYXNzZXJ0RXhhY3RWZXJzaW9uIH0gZnJvbSAnLi9tYXZlbi9tYXZlbi1wb20nO1xuaW1wb3J0IHsgSmF2YU1hdmVuUHJvamVjdE9wdGlvbnMsIE1hdmVuTW9kdWxlT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBOUE1fQ0lfU1RFUCwgU0VUVVBfTk9ERV9TVEVQIH0gZnJvbSAnLi4vY29tbW9uL2NpLXN0ZXBzJztcbmltcG9ydCB7IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCB9IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYWRkRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vY29tbW9uL2VkaXRvcmNvbmZpZyc7XG5pbXBvcnQgeyBhcHBseUludGVybmFsQWN0aW9uT3ZlcnJpZGVzIH0gZnJvbSAnLi4vY29tbW9uL2ludGVybmFsLWFjdGlvbnMnO1xuaW1wb3J0IHsgUHJvamVuRHJpZnRDaGVja1dvcmtmbG93IH0gZnJvbSAnLi4vY29tbW9uL3Byb2plbi1kcmlmdC1jaGVjay13b3JrZmxvdyc7XG5pbXBvcnQgeyBhdHRhY2hUeXBlU2NyaXB0UHJvamVucmMgfSBmcm9tICcuLi9jb21tb24vcHJvamVucmMtdHMnO1xuaW1wb3J0IHsgV29ya2Zsb3dDaGFuZ2VOb3RpY2VXb3JrZmxvdyB9IGZyb20gJy4uL2NvbW1vbi93b3JrZmxvdy1jaGFuZ2Utbm90aWNlLXdvcmtmbG93JztcbmltcG9ydCB7IG5vdGVXb3JrZmxvd1B1cnBvc2UgfSBmcm9tICcuLi9jb21tb24vd29ya2Zsb3ctcHVycG9zZSc7XG5cbi8vIGByZXF1aXJlKC4uLilgIHJlc29sdmVzIHRocm91Z2ggTm9kZSdzIG5vcm1hbCBtb2R1bGUgcmVzb2x1dGlvbiwgc28gaW4gYVxuLy8gKnB1Ymxpc2hlZCogcGFja2FnZSB0aGVzZSBhcmUgdGhlIHZlcnNpb25zIGluc3RhbGxlZCBpbiB0aGUgY29uc3VtaW5nXG4vLyByZXBvIC0gZXhhY3RseSB3aGF0IGl0cyBwYWNrYWdlLmpzb24gbXVzdCBwaW4gKHNhbWUgYXNcbi8vIGBHaXRIdWJBY3Rpb25Qcm9qZWN0YCkuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgUFJPSkVOX1ZFUlNJT046IHN0cmluZyA9IHJlcXVpcmUoJ3Byb2plbi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IFBST0pFTl9UWVBFU19WRVJTSU9OOiBzdHJpbmcgPSByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG4vKipcbiAqIEJhc2VsaW5lIE1hdmVuIHByb2plY3QsIHNpbmdsZS0gb3IgbXVsdGktbW9kdWxlLCB3aXRoIG5vIGZyYW1ld29ya1xuICogYXNzdW1wdGlvbnMuIEl0IGlzIHRoZSBiYXNlIG9mIGV2ZXJ5IEphdmEgdHlwZSBpbiB0aGlzIHBhY2thZ2UgYW5kIGlzXG4gKiB1c2FibGUgb24gaXRzIG93biAoYHByb2plbiBuZXcgLi4uIGphdmFfbWF2ZW5gKS5cbiAqXG4gKiAtIFRoZSBwb20gaXMgd3JpdHRlbiBieSB0aGlzIHBhY2thZ2UgKGBNYXZlblBvbWApLCBub3QgcHJvamVuJ3NcbiAqICAgYGphdmEuUG9tYDogZXhhY3QgdmVyc2lvbnMgb25seSwgQk9NIGltcG9ydHMsIGA8bW9kdWxlcz5gLFxuICogICBgPGRlcGVuZGVuY3lNYW5hZ2VtZW50PmAsIGA8cGx1Z2luTWFuYWdlbWVudD5gLlxuICogLSBFdmVyeXRoaW5nIEphdmEtdmVyc2lvbi1kZXBlbmRlbnQgKGNvbXBpbGVyIGxldmVsLCBlbmZvcmNlciBydWxlLCBKVW5pdFxuICogICBsaW5lLCBDSSBKREspIGZvbGxvd3MgYGphdmFWZXJzaW9uYC5cbiAqIC0gV2l0aCBubyBgYWRkTW9kdWxlKClgIGNhbGxzIHRoZSByb290IHBvbSBpcyB0aGUgYXJ0aWZhY3QuIEFmdGVyIHRoZVxuICogICBmaXJzdCBgYWRkTW9kdWxlKClgIGl0IGlzIGEgYHBvbWAtcGFja2FnZWQgcmVhY3RvciBwYXJlbnQgYW5kIHRoZVxuICogICBtb2R1bGVzIGluaGVyaXQgaXRzIHBsdWdpbnMgYW5kIHRlc3QgZGVwZW5kZW5jaWVzLlxuICogLSBgbnB4IHByb2plbiBidWlsZGAgc3ludGhlc2l6ZXMsIHRoZW4gcnVucyBNYXZlbiBvbmNlOiBgbXZuIC1CIHZlcmlmeWBcbiAqICAgKHVuaXQgdGVzdHMgdmlhIHN1cmVmaXJlLCBgKklUYCB0ZXN0cyB2aWEgZmFpbHNhZmUpLlxuICogLSBDSTogYSBQUiBidWlsZCAod2l0aCBhbiBvcHRpb25hbCBTb25hclF1YmUgc2NhbiksIHRoZSBwcm9qZW4gZHJpZnRcbiAqICAgY2hlY2ssIGFuZCBhIG5pZ2h0bHkgcmVwb3J0LW9ubHkgdXBkYXRlIGNoZWNrLlxuICovXG5leHBvcnQgY2xhc3MgSmF2YU1hdmVuUHJvamVjdCBleHRlbmRzIGdpdGh1Yi5HaXRIdWJQcm9qZWN0IHtcbiAgLyoqIFRoZSByb290IGBwb20ueG1sYC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbTogTWF2ZW5Qb207XG5cbiAgLyoqIFRoZSBjYW5vbmljYWwgSmF2YSBsaW5lIHRoZSBidWlsZCB0YXJnZXRzIChgMS44YCwgYDE3YCwgYDIxYCwgYDI1YCkuICovXG4gIHB1YmxpYyByZWFkb25seSBqYXZhVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKiBQcmludHMgYXZhaWxhYmxlIGRlcGVuZGVuY3kvcGx1Z2luIHVwZGF0ZXMgKGBucHggcHJvamVuIHVwZ3JhZGVgKS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZ3JhZGVUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgUFIgYnVpbGQgd29ya2Zsb3cgKGBidWlsZC55bWxgKS4gQWRkIGpvYnMgdG8gaXQgd2l0aFxuICAgKiBgYnVpbGRWZXJpZnlXb3JrZmxvdy5hZGRKb2IoaWQsIGpvYilgOyB1c2UgYGNpU2V0dXBTdGVwc2AgZm9yIGEgam9iIHRoYXRcbiAgICogbmVlZHMgTm9kZSwgdGhlIHByb2plbiB0b29sY2hhaW4sIGFuZCB0aGUgSkRLLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkVmVyaWZ5V29ya2Zsb3c6IGdpdGh1Yi5UYXNrV29ya2Zsb3c7XG5cbiAgLyoqXG4gICAqIFN0ZXBzIHRoYXQgaW5zdGFsbCBOb2RlIChwaW5uZWQpLCBgbnBtIGNpYCwgYW5kIHRoZSBwcm9qZWN0J3MgSkRLIHdpdGggYVxuICAgKiBNYXZlbiBjYWNoZSAtIHRoZSBzZXR1cCBldmVyeSBNYXZlbiBDSSBqb2IgaW4gdGhpcyByZXBvIG5lZWRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNpU2V0dXBTdGVwczogZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBqYXZhTGluZTogSmF2YUxpbmVQcm9maWxlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvb3RQYWNrYWdpbmc/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbXBsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXZlbk1vZHVsZXM6IE1hdmVuTW9kdWxlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBKYXZhTWF2ZW5Qcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC8vIFNwcmVhZCBmaXJzdCwgb3ZlcnJpZGVzIGFmdGVyOiBmb3J3YXJkaW5nIHRoZSBjYWxsZXIncyBvcHRpb25zIGlzXG4gICAgICAvLyB3aGF0IGxldHMgYHByb2plbiBuZXcgLS1mcm9tIEB4cGVydHNzL3Byb2plbi10eXBlcyBqYXZhX21hdmVuYCB3b3JrXG4gICAgICAvLyAtIHByb2plbiBzbXVnZ2xlcyBpdHMgYm9vdHN0cmFwIG1hcmtlciAoYF9fbmV3X19gKSB0aHJvdWdoIHRoZVxuICAgICAgLy8gb3B0aW9ucyBvYmplY3QsIGFuZCBpdCBpcyB0aGF0IG1hcmtlciB3aGljaCBtYWtlcyB0aGVcbiAgICAgIC8vIGBQcm9qZW5yY0ZpbGVgIGNvbXBvbmVudCB3cml0ZSB0aGUgaW5pdGlhbCBgLnByb2plbnJjLnRzYC4gRHJvcCBpdFxuICAgICAgLy8gYW5kIGBwcm9qZW4gbmV3YCBzY2FmZm9sZHMgYSByZXBvIHdpdGggbm8gcHJvamVucmMgYXQgYWxsLlxuICAgICAgLi4uc3RyaW5naWZ5UHJvamVuTmV3QXJncyhvcHRpb25zKSxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIC8vIFBSIHRpdGxlcyBhcmUgbm90IGdhdGVkOiBgZmVhdDpgL2BmaXg6YCBtYXR0ZXIgb25seSBiZWNhdXNlIHRoZXkgZHJpdmVcbiAgICAgIC8vIHRoZSByZWxlYXNlIHdvcmtmbG93ICh2aWEgYHJlbGVhc2FibGVDb21taXRzYCksIG5vdCBQUiBjaGVja3MuIFRoZVxuICAgICAgLy8gY29udmVudGlvbmFsLWNvbW1pdCBQUi10aXRsZSBsaW50IGlzIGFkZGVkIGJ5IHRoZSBgR2l0SHViYCBjb21wb25lbnRcbiAgICAgIC8vIHVubGVzcyBgZ2l0aHViT3B0aW9ucy5wdWxsUmVxdWVzdExpbnRgIGlzIGBmYWxzZWAgKGl0IGRlZmF1bHRzIHRydWUpLlxuICAgICAgZ2l0aHViT3B0aW9uczogeyBwdWxsUmVxdWVzdExpbnQ6IGZhbHNlIH0sXG4gICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHtcbiAgICAgICAgc2VjcmV0OiBvcHRpb25zLmdoZVRva2VuU2VjcmV0ID8/IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCB2ZXJzaW9uIG9mIE9iamVjdC52YWx1ZXMob3B0aW9ucy5wbHVnaW5WZXJzaW9ucyA/PyB7fSkpIHtcbiAgICAgIGFzc2VydEV4YWN0VmVyc2lvbih2ZXJzaW9uLCAncGx1Z2luVmVyc2lvbnMnKTtcbiAgICB9XG4gICAgdGhpcy5qYXZhTGluZSA9IHJlc29sdmVKYXZhTGluZShvcHRpb25zLmphdmFWZXJzaW9uLCBvcHRpb25zLnBsdWdpblZlcnNpb25zKTtcbiAgICB0aGlzLmphdmFWZXJzaW9uID0gdGhpcy5qYXZhTGluZS5saW5lO1xuICAgIHRoaXMucm9vdFBhY2thZ2luZyA9IG9wdGlvbnMucGFja2FnaW5nO1xuICAgIHRoaXMuZ3JvdXBJZCA9IG9wdGlvbnMuZ3JvdXBJZDtcbiAgICB0aGlzLnNhbXBsZSA9IG9wdGlvbnMuc2FtcGxlID8/IGZhbHNlO1xuXG4gICAgLy8gYC5wcm9qZW5yYy50c2AgKyBgbnB4IHByb2plbmAsIHNhbWUgYXMgZXZlcnkgb3RoZXIgdHlwZSBoZXJlLiBUaGVcbiAgICAvLyBNYXZlbiByZXBvIG5lZWRzIG5vIFR5cGVTY3JpcHQgdG9vbGNoYWluIG9mIGl0cyBvd24gLSB0aGUgcnVubmVyIGlzXG4gICAgLy8gZmV0Y2hlZCAocGlubmVkKSBieSBucHggYXQgc3ludGggdGltZS5cbiAgICBhdHRhY2hUeXBlU2NyaXB0UHJvamVucmModGhpcyk7XG5cbiAgICAvLyBUaGUgcHJvamVuIHRvb2xjaGFpbiBgbnB4IHByb2plbmAgcnVucywgcGlubmVkIGV4YWN0bHkgc28gZXZlcnlcbiAgICAvLyBtYWNoaW5lIGFuZCBDSSByZXNvbHZlIHRoZSBzYW1lIGdlbmVyYXRvci4gT3duZXItd3JpdGFibGUgb24gZGlzayBzb1xuICAgIC8vIHRoZSBkb2N1bWVudGVkIHVwZGF0ZSBmbG93IChgbnBtIGkgLUQgLUUgQHhwZXJ0c3MvcHJvamVuLXR5cGVzQDx2PmApXG4gICAgLy8gY2FuIHJld3JpdGUgaXQ7IGhhbmQtZWRpdHMgYXJlIHN0aWxsIGNhdWdodCBieSB0aGUgZHJpZnQgY2hlY2suXG4gICAgbmV3IEpzb25GaWxlKHRoaXMsICdwYWNrYWdlLmpzb24nLCB7XG4gICAgICBvYmo6IHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiAnMC4wLjAnLFxuICAgICAgICBwcml2YXRlOiB0cnVlLFxuICAgICAgICBkZXZEZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAncHJvamVuJzogUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgJ0B4cGVydHNzL3Byb2plbi10eXBlcyc6IFBST0pFTl9UWVBFU19WRVJTSU9OLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICB9KTtcblxuICAgIC8vIEpldEJyYWlucyBJREUgc3RhdGUgKC5pZGVhLykgaXMgbmV2ZXIgdHJhY2tlZCBpbiBnZW5lcmF0ZWQgcmVwb3MsIGFuZFxuICAgIC8vIG5laXRoZXIgaXMgL3NwZWMvIChsb2NhbCBwbGFucyBhbmQgc3BlY3M7IHRoZSBwYXR0ZXJuIGNvdmVycyBldmVyeVxuICAgIC8vIHN1YmRpcmVjdG9yeSkuXG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy8uaWRlYS8qJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy9zcGVjLycpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCd0YXJnZXQvJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5jbGFzc3BhdGgnKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLnByb2plY3QnKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLnNldHRpbmdzJyk7XG5cbiAgICBpZiAob3B0aW9ucy5saWNlbnNlZCA/PyB0cnVlKSB7XG4gICAgICBuZXcgTGljZW5zZSh0aGlzLCB7XG4gICAgICAgIHNwZHg6IG9wdGlvbnMubGljZW5zZSA/PyAnTUlUJyxcbiAgICAgICAgY29weXJpZ2h0T3duZXI6IG9wdGlvbnMuY29weXJpZ2h0T3duZXIgPz8gJ3hwZXJ0c3MnLFxuICAgICAgICBjb3B5cmlnaHRQZXJpb2Q6IG9wdGlvbnMuY29weXJpZ2h0UGVyaW9kLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVkaXRvcmNvbmZpZyA/PyB0cnVlKSB7XG4gICAgICBhZGRFZGl0b3JDb25maWcodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5wb20gPSBuZXcgTWF2ZW5Qb20odGhpcywge1xuICAgICAgZ3JvdXBJZDogb3B0aW9ucy5ncm91cElkLFxuICAgICAgYXJ0aWZhY3RJZDogb3B0aW9ucy5hcnRpZmFjdElkLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/ICcwLjEuMCcsXG4gICAgICBwYWNrYWdpbmc6IHRoaXMucm9vdFBhY2thZ2luZyA/PyAnamFyJyxcbiAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ3VyZUJ1aWxkKG9wdGlvbnMpO1xuXG4gICAgLy8gT25lIE1hdmVuIHJ1biBwZXIgYnVpbGQ6IGB2ZXJpZnlgIHJ1bnMgZXZlcnkgZWFybGllciBwaGFzZSAoY29tcGlsZSxcbiAgICAvLyB1bml0IHRlc3RzLCBwYWNrYWdlKSBwbHVzIGludGVncmF0aW9uIHRlc3RzLiBOb3RoaW5nIGRlcGxveXMuXG4gICAgdGhpcy50ZXN0VGFzay5leGVjKCdtdm4gLUIgdmVyaWZ5Jyk7XG5cbiAgICBjb25zdCBnaCA9IHRoaXMuZ2l0aHViO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSmF2YU1hdmVuUHJvamVjdCByZXF1aXJlcyBHaXRIdWIgaW50ZWdyYXRpb24nKTtcbiAgICB9XG4gICAgYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyhnaCk7XG5cbiAgICBuZXcgUHJvamVuRHJpZnRDaGVja1dvcmtmbG93KHRoaXMsIHtcbiAgICAgIGdoZVRva2VuU2VjcmV0OiBvcHRpb25zLmdoZVRva2VuU2VjcmV0ID8/IERFRkFVTFRfR0hFX1RPS0VOX1NFQ1JFVCxcbiAgICB9KTtcbiAgICBuZXcgV29ya2Zsb3dDaGFuZ2VOb3RpY2VXb3JrZmxvdyh0aGlzKTtcblxuICAgIHRoaXMuY2lTZXR1cFN0ZXBzID0gW1xuICAgICAgU0VUVVBfTk9ERV9TVEVQLFxuICAgICAgTlBNX0NJX1NURVAsXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBKYXZhJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtamF2YUB2NicsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnZGlzdHJpYnV0aW9uJzogb3B0aW9ucy5qYXZhRGlzdHJpYnV0aW9uID8/ICd0ZW11cmluJyxcbiAgICAgICAgICAnamF2YS12ZXJzaW9uJzogdGhpcy5qYXZhTGluZS5zZXR1cEphdmFWZXJzaW9uLFxuICAgICAgICAgICdjYWNoZSc6ICdtYXZlbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBwb3N0QnVpbGRTdGVwczogZ2l0aHViLndvcmtmbG93cy5Kb2JTdGVwW10gPSBbXTtcbiAgICBpZiAob3B0aW9ucy5zb25hclByb2plY3RLZXkpIHtcbiAgICAgIHBvc3RCdWlsZFN0ZXBzLnB1c2goe1xuICAgICAgICBuYW1lOiAnU29uYXJRdWJlIHNjYW4nLFxuICAgICAgICBydW46IGBtdm4gLUIgc29uYXI6c29uYXIgLURzb25hci5wcm9qZWN0S2V5PSR7b3B0aW9ucy5zb25hclByb2plY3RLZXl9YCxcbiAgICAgICAgZW52OiB7IFNPTkFSX1RPS0VOOiAnJHt7IHNlY3JldHMuU09OQVJfVE9LRU4gfX0nIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkVmVyaWZ5V29ya2Zsb3cgPSBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyhnaCwge1xuICAgICAgbmFtZTogJ2J1aWxkJyxcbiAgICAgIGpvYklkOiAnYnVpbGQnLFxuICAgICAgdGFzazogdGhpcy5idWlsZFRhc2ssXG4gICAgICB0cmlnZ2VyczogeyBwdWxsUmVxdWVzdDoge30sIHdvcmtmbG93RGlzcGF0Y2g6IHt9IH0sXG4gICAgICBwZXJtaXNzaW9uczogeyBjb250ZW50czogZ2l0aHViLndvcmtmbG93cy5Kb2JQZXJtaXNzaW9uLlJFQUQgfSxcbiAgICAgIHByZUJ1aWxkU3RlcHM6IHRoaXMuY2lTZXR1cFN0ZXBzLFxuICAgICAgcG9zdEJ1aWxkU3RlcHMsXG4gICAgfSk7XG4gICAgbm90ZVdvcmtmbG93UHVycG9zZShcbiAgICAgIHRoaXMuYnVpbGRWZXJpZnlXb3JrZmxvdy5maWxlLFxuICAgICAgJ0J1aWxkIGFuZCB0ZXN0IHRoZSBNYXZlbiBwcm9qZWN0IG9uIHB1bGwgcmVxdWVzdHMsIHdpdGggYW4gb3B0aW9uYWwgU29uYXJRdWJlIHNjYW4uJyxcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbnNQbHVnaW4gPSBgb3JnLmNvZGVoYXVzLm1vam86dmVyc2lvbnMtbWF2ZW4tcGx1Z2luOiR7dGhpcy5waW5uZWRWZXJzaW9uKFZFUlNJT05TX01BVkVOX1BMVUdJTil9YDtcbiAgICB0aGlzLnVwZ3JhZGVUYXNrID0gdGhpcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZXhlYzogYG12biAtQiAke3ZlcnNpb25zUGx1Z2lufTpkaXNwbGF5LWRlcGVuZGVuY3ktdXBkYXRlcyAke3ZlcnNpb25zUGx1Z2lufTpkaXNwbGF5LXBsdWdpbi11cGRhdGVzYCxcbiAgICB9KTtcbiAgICBpZiAob3B0aW9ucy51cGdyYWRlV29ya2Zsb3cgPz8gdHJ1ZSkge1xuICAgICAgbmV3IE1hdmVuVXBncmFkZVJlcG9ydCh0aGlzLCB7XG4gICAgICAgIHRhc2s6IHRoaXMudXBncmFkZVRhc2ssXG4gICAgICAgIHNldHVwU3RlcHM6IHRoaXMuY2lTZXR1cFN0ZXBzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBtb2R1bGVzIGFkZGVkIHdpdGggYGFkZE1vZHVsZSgpYCwgaW4gb3JkZXIuICovXG4gIHB1YmxpYyBnZXQgbW9kdWxlcygpOiBNYXZlbk1vZHVsZVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMubWF2ZW5Nb2R1bGVzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgTWF2ZW4gbW9kdWxlIGluIGBkaXJgIChyZWxhdGl2ZSB0byB0aGUgcmVwbyByb290OyBtYXkgYmUgbmVzdGVkLFxuICAgKiBlLmcuIGB0b29scy9zdHViLW1vZGVsYCkgYW5kIHR1cm5zIHRoZSByb290IHBvbSBpbnRvIHRoZSByZWFjdG9yIHBhcmVudFxuICAgKiAoYHBhY2thZ2luZz1wb21gLCBgPG1vZHVsZXM+YCBpbiB0aGUgb3JkZXIgYWRkZWQpLiBUaGUgcGFyZW50IG1hbmFnZXNcbiAgICogZXZlcnkgbW9kdWxlIGF0IGAke3Byb2plY3QudmVyc2lvbn1gLCBzbyBtb2R1bGVzIGRlcGVuZCBvbiBlYWNoIG90aGVyXG4gICAqIHdpdGggYGFkZE1vZHVsZURlcGVuZGVuY3koKWAsIHZlcnNpb25sZXNzLlxuICAgKi9cbiAgcHVibGljIGFkZE1vZHVsZShvcHRpb25zOiBNYXZlbk1vZHVsZU9wdGlvbnMpOiBNYXZlbk1vZHVsZSB7XG4gICAgaWYgKHRoaXMucm9vdFBhY2thZ2luZyAhPT0gdW5kZWZpbmVkICYmIHRoaXMucm9vdFBhY2thZ2luZyAhPT0gJ3BvbScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEEgbXVsdGktbW9kdWxlIHByb2plY3QncyByb290IHBvbSBpcyBwYWNrYWdlZCBhcyBcInBvbVwiOyByZW1vdmUgcGFja2FnaW5nOiBcIiR7dGhpcy5yb290UGFja2FnaW5nfVwiLmAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkaXIgPSBub3JtYWxpemVNb2R1bGVEaXIob3B0aW9ucy5kaXIpO1xuICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLm1hdmVuTW9kdWxlcykge1xuICAgICAgaWYgKG0uYXJ0aWZhY3RJZCA9PT0gb3B0aW9ucy5hcnRpZmFjdElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSBhcnRpZmFjdElkIFwiJHtvcHRpb25zLmFydGlmYWN0SWR9XCIgKGRpcnMgXCIke20uZGlyfVwiIGFuZCBcIiR7ZGlyfVwiKS5gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtLmRpciA9PT0gZGlyIHx8IGRpci5zdGFydHNXaXRoKGAke20uZGlyfS9gKSB8fCBtLmRpci5zdGFydHNXaXRoKGAke2Rpcn0vYCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgb3ZlcmxhcHMgbW9kdWxlIGRpciBcIiR7bS5kaXJ9XCI6IG1vZHVsZSBkaXJzIG11c3QgYmUgZGlzdGluY3QgYW5kIG5vdCBuZXN0ZWQuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbW9kdWxlID0gbmV3IE1hdmVuTW9kdWxlKHRoaXMsIHRoaXMucG9tLCB7IC4uLm9wdGlvbnMsIGRpciB9KTtcbiAgICB0aGlzLm1hdmVuTW9kdWxlcy5wdXNoKG1vZHVsZSk7XG4gICAgdGhpcy5wb20ucGFja2FnaW5nID0gJ3BvbSc7XG4gICAgdGhpcy5wb20ubWFuYWdlUGx1Z2luVmVyc2lvbnMgPSB0cnVlO1xuICAgIHRoaXMucG9tLmFkZE1vZHVsZShkaXIpO1xuICAgIHRoaXMucG9tLmFkZE1hbmFnZWREZXBlbmRlbmN5KGAke3RoaXMuZ3JvdXBJZH0vJHtvcHRpb25zLmFydGlmYWN0SWR9QFxcJHtwcm9qZWN0LnZlcnNpb259YCk7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIGEgQk9NIGludG8gdGhlIHJvb3QgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gIChgdHlwZT1wb21gLFxuICAgKiBgc2NvcGU9aW1wb3J0YCkuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRAdmVyc2lvbmBcbiAgICovXG4gIHB1YmxpYyBhZGRCb20oc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkQm9tKHNwZWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBpbnMgYSB2ZXJzaW9uIGluIHRoZSByb290IGA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+YCB3aXRob3V0IGFkZGluZyB0aGVcbiAgICogZGVwZW5kZW5jeSwgc28gbW9kdWxlcyAob3IgdGhlIHJvb3QpIGNhbiB1c2UgaXQgdmVyc2lvbmxlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRAdmVyc2lvbmBcbiAgICovXG4gIHB1YmxpYyBhZGRNYW5hZ2VkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRNYW5hZ2VkRGVwZW5kZW5jeShzcGVjKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcGlsZS1zY29wZSBkZXBlbmRlbmN5IHRvIHRoZSByb290IHBvbS4gSW4gYSBtdWx0aS1tb2R1bGVcbiAgICogcHJvamVjdCBldmVyeSBtb2R1bGUgaW5oZXJpdHMgaXQ7IHVzZSBgTWF2ZW5Nb2R1bGUuYWRkRGVwZW5kZW5jeWAgZm9yXG4gICAqIG9uZSBtb2R1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjIGBncm91cElkL2FydGlmYWN0SWRbQHZlcnNpb25dYCAtIGV4YWN0IHZlcnNpb24sIG9yIG5vbmUgd2hlblxuICAgKiBhIEJPTSBtYW5hZ2VzIGl0XG4gICAqL1xuICBwdWJsaWMgYWRkRGVwZW5kZW5jeShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGREZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSB0ZXN0LXNjb3BlIGRlcGVuZGVuY3kgdG8gdGhlIHJvb3QgcG9tIChpbmhlcml0ZWQgYnkgZXZlcnkgbW9kdWxlKS4gKi9cbiAgcHVibGljIGFkZFRlc3REZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBidWlsZCBwbHVnaW4gdG8gdGhlIHJvb3QgcG9tIChpbmhlcml0ZWQgYnkgZXZlcnkgbW9kdWxlKS4gKi9cbiAgcHVibGljIGFkZFBsdWdpbihzcGVjOiBzdHJpbmcsIG9wdGlvbnM6IGphdmEuUGx1Z2luT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkUGx1Z2luKHNwZWMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuICAgIGlmICh0aGlzLnNhbXBsZSAmJiB0aGlzLm1hdmVuTW9kdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuYWRkU2FtcGxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCB2ZXJzaW9uIHRoaXMgcHJvamVjdCB1c2VzIGZvciBhIGBncm91cElkL2FydGlmYWN0SWRgIGl0IHBpbnNcbiAgICogYnkgZGVmYXVsdDogdGhlIGBwbHVnaW5WZXJzaW9uc2Agb3ZlcnJpZGUgaWYgc2V0LCBvdGhlcndpc2UgdGhlXG4gICAqIGRlZmF1bHQgZm9yIGBqYXZhVmVyc2lvbmAuXG4gICAqL1xuICBwdWJsaWMgcGlubmVkVmVyc2lvbihjb29yZGluYXRlczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5qYXZhTGluZS52ZXJzaW9uc1tjb29yZGluYXRlc107XG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRlZmF1bHQgdmVyc2lvbiBmb3IgJHtjb29yZGluYXRlc30uYCk7XG4gICAgfVxuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuZXdlc3QgU3ByaW5nIEJvb3QgbWFqb3IgdmVyc2lvbiBgamF2YVZlcnNpb25gIHN1cHBvcnRzLCBvclxuICAgKiB1bmRlZmluZWQgd2hlbiB0aGlzIHBhY2thZ2Uga25vd3Mgb2Ygbm8gY2FwLlxuICAgKi9cbiAgcHJvdGVjdGVkIG1heFNwcmluZ0Jvb3RNYWpvcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmphdmFMaW5lLm1heFNwcmluZ0Jvb3RNYWpvcjtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQnVpbGQob3B0aW9uczogSmF2YU1hdmVuUHJvamVjdE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRQcm9wZXJ0eSgncHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZycsICdVVEYtOCcpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmphdmFMaW5lLmNvbXBpbGVyUHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMucG9tLmFkZFByb3BlcnR5KG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBKVW5pdCdzIHZlcnNpb24gY29tZXMgZnJvbSBpdHMgQk9NIChvciBmcm9tIGEgZnJhbWV3b3JrIEJPTSB0aGF0XG4gICAgLy8gbWFuYWdlcyBpdCAtIHNlZSBKYXZhU3ByaW5nQm9vdFByb2plY3QpLCBuZXZlciBmcm9tIGEgZGVwZW5kZW5jeS5cbiAgICB0aGlzLnBvbS5hZGRCb20oYCR7SlVOSVRfQk9NfUAke3RoaXMucGlubmVkVmVyc2lvbihKVU5JVF9CT00pfWApO1xuICAgIHRoaXMucG9tLmFkZFRlc3REZXBlbmRlbmN5KCdvcmcuanVuaXQuanVwaXRlci9qdW5pdC1qdXBpdGVyJyk7XG5cbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9DT01QSUxFUl9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX0NPTVBJTEVSX1BMVUdJTil9YCk7XG4gICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fU1VSRUZJUkVfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9TVVJFRklSRV9QTFVHSU4pfWApO1xuICAgIC8vIGZhaWxzYWZlIGhhcyBubyBkZWZhdWx0IGxpZmVjeWNsZSBiaW5kaW5nOyBiaW5kIGl0IHNvIGAqSVRgIHRlc3RzIHJ1blxuICAgIC8vIGluIGBtdm4gdmVyaWZ5YC5cbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9GQUlMU0FGRV9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX0ZBSUxTQUZFX1BMVUdJTil9YCwge1xuICAgICAgZXhlY3V0aW9uczogW3sgaWQ6ICdpbnRlZ3JhdGlvbi10ZXN0cycsIGdvYWxzOiBbJ2ludGVncmF0aW9uLXRlc3QnLCAndmVyaWZ5J10gfV0sXG4gICAgfSk7XG4gICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fSkFSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fSkFSX1BMVUdJTil9YCwge1xuICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICBhcmNoaXZlOiB7XG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIGFkZERlZmF1bHRJbXBsZW1lbnRhdGlvbkVudHJpZXM6IHRydWUsXG4gICAgICAgICAgICBhZGREZWZhdWx0U3BlY2lmaWNhdGlvbkVudHJpZXM6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5lbmZvcmNlciA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBtaW5NYXZlbiA9IG9wdGlvbnMubWluTWF2ZW5WZXJzaW9uID8/IERFRkFVTFRfTUlOX01BVkVOX1ZFUlNJT047XG4gICAgICBhc3NlcnRFeGFjdFZlcnNpb24obWluTWF2ZW4sICdtaW5NYXZlblZlcnNpb24nKTtcbiAgICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0VORk9SQ0VSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fRU5GT1JDRVJfUExVR0lOKX1gLCB7XG4gICAgICAgIGV4ZWN1dGlvbnM6IFt7IGlkOiAnZW5mb3JjZS12ZXJzaW9ucycsIGdvYWxzOiBbJ2VuZm9yY2UnXSB9XSxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICByZXF1aXJlTWF2ZW5WZXJzaW9uOiB7IHZlcnNpb246IGBbJHttaW5NYXZlbn0sKWAgfSxcbiAgICAgICAgICAgIHJlcXVpcmVKYXZhVmVyc2lvbjogeyB2ZXJzaW9uOiB0aGlzLmphdmFMaW5lLmVuZm9yY2VySmF2YVJhbmdlIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU2FtcGxlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBrZyA9IHRoaXMuZ3JvdXBJZC5yZXBsYWNlKC9bXkEtWmEtejAtOV8uXS9nLCAnXycpO1xuICAgIGNvbnN0IHBhdGggPSBwa2cuc3BsaXQoJy4nKTtcbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIHBvc2l4LmpvaW4oJ3NyYy9tYWluL2phdmEnLCAuLi5wYXRoKSwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgJ01haW4uamF2YSc6IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZ307YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAncHVibGljIGNsYXNzIE1haW4geycsXG4gICAgICAgICAgJyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7JyxcbiAgICAgICAgICAnICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oXCJIZWxsbywgd29ybGQhXCIpOycsXG4gICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgICAgJycsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgcG9zaXguam9pbignc3JjL3Rlc3QvamF2YScsIC4uLnBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnTWFpblRlc3QuamF2YSc6IFtcbiAgICAgICAgICBgcGFja2FnZSAke3BrZ307YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnaW1wb3J0IG9yZy5qdW5pdC5qdXBpdGVyLmFwaS5UZXN0OycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ2NsYXNzIE1haW5UZXN0IHsnLFxuICAgICAgICAgICcgICAgQFRlc3QnLFxuICAgICAgICAgICcgICAgdm9pZCBydW5zKCkgeycsXG4gICAgICAgICAgJyAgICAgICAgTWFpbi5tYWluKG5ldyBTdHJpbmdbMF0pOycsXG4gICAgICAgICAgJyAgICB9JyxcbiAgICAgICAgICAnfScsXG4gICAgICAgICAgJycsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogYHByb2plbiBuZXcgLi4uIC0tamF2YS12ZXJzaW9uIDIxYCAob3IgYDEuOGAsIG9yIGAtLW1pbi1tYXZlbi12ZXJzaW9uIDMuOWApXG4gKiByZWFjaGVzIHRoZSBvcHRpb25zIGFzIGEgKm51bWJlcio6IHlhcmdzIHBhcnNlcyBudW1lcmljLWxvb2tpbmcgZmxhZ3MsIGFuZFxuICogcHJvamVuIHBhc3NlcyBzdHJpbmctdHlwZWQgb3B0aW9ucyB0aHJvdWdoIHVuY2hhbmdlZC4gVGhlIGluaXRpYWxcbiAqIGAucHJvamVucmMudHNgIGlzIHJlbmRlcmVkIGZyb20gdGhlIHNhbWUgYXJncywgc28gaXQgd291bGQgcmVhZFxuICogYGphdmFWZXJzaW9uOiAyMWAgYW5kIGZhaWwgdG8gdHlwZS1jaGVjay4gTm8gSmF2YSBvcHRpb24gaXMgbnVtYmVyLXR5cGVkLFxuICogc28gZXZlcnkgbnVtZXJpYyBhcmcgaXMgdHVybmVkIGJhY2sgaW50byB0aGUgc3RyaW5nIHRoZSB1c2VyIHR5cGVkLiBUaGlzXG4gKiBydW5zIGJlZm9yZSB0aGUgUHJvamVjdCBjb25zdHJ1Y3Rvciwgd2hpY2ggaXMgd2hlcmUgcHJvamVuIGNhcHR1cmVzIHRoZVxuICogYXJncyBpdCByZW5kZXJzLiBPcHRpb25zIGZyb20gYSBoYW5kLXdyaXR0ZW4gcHJvamVucmMgYXJlIG5ldmVyIG51bWJlcnNcbiAqICh0aGV5IHR5cGUtY2hlY2sgYXMgc3RyaW5ncykgYW5kIGFyZSBsZWZ0IGFsb25lLlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9qZW5OZXdBcmdzPFQgZXh0ZW5kcyBvYmplY3Q+KG9wdGlvbnM6IFQpOiBUIHtcbiAgY29uc3QgbWFya2VyID0gKG9wdGlvbnMgYXMgYW55KS5fX25ld19fO1xuICBpZiAoIW1hcmtlcj8uYXJncykge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIFtvcHRpb25zIGFzIGFueSwgbWFya2VyLmFyZ3NdKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhcmdldCkpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVNb2R1bGVEaXIoZGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB1bml4ID0gZGlyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgaWYgKHVuaXguc3RhcnRzV2l0aCgnLycpIHx8IC9eW0EtWmEtel06Ly50ZXN0KHVuaXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgbXVzdCBiZSByZWxhdGl2ZSB0byB0aGUgcmVwbyByb290LmApO1xuICB9XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBwb3NpeC5ub3JtYWxpemUodW5peCkucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIGlmIChub3JtYWxpemVkID09PSAnLicgfHwgbm9ybWFsaXplZCA9PT0gJycgfHwgbm9ybWFsaXplZC5zcGxpdCgnLycpLmluY2x1ZGVzKCcuLicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgZGlyIFwiJHtkaXJ9XCIgbXVzdCBiZSBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgcmVwbyByb290LmApO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuIl19
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YS1tYXZlbi1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmEvamF2YS1tYXZlbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5Q0FBa0M7QUFDbEMsbUNBQWlFO0FBQ2pFLDRFQUF1RTtBQUN2RSxtREFXeUI7QUFDekIsdURBQW1EO0FBQ25ELGlEQUFpRTtBQUVqRSxpREFBa0U7QUFDbEUsbURBQStEO0FBQy9ELHlEQUF5RDtBQUN6RCxpRUFBMEU7QUFDMUUseURBQXdEO0FBQ3hELHVGQUFpRjtBQUNqRix1REFBaUU7QUFDakUsK0ZBQXlGO0FBQ3pGLGlFQUFpRTtBQUVqRSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLHlEQUF5RDtBQUN6RCwwQkFBMEI7QUFDMUIsaUVBQWlFO0FBQ2pFLE1BQU0sY0FBYyxHQUFXLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUN0RSxpRUFBaUU7QUFDakUsTUFBTSxvQkFBb0IsR0FBVyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFFM0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxlQUFNLENBQUMsYUFBYTs7SUFDeEQsMEJBQTBCO0lBQ1YsR0FBRyxDQUFXO0lBRTlCLDJFQUEyRTtJQUMzRCxXQUFXLENBQVM7SUFFcEMseUVBQXlFO0lBQ3pELFdBQVcsQ0FBTztJQUVsQzs7OztPQUlHO0lBQ2EsbUJBQW1CLENBQXNCO0lBRXpEOzs7T0FHRztJQUNhLFlBQVksQ0FBNkI7SUFFeEMsUUFBUSxDQUFrQjtJQUMxQixhQUFhLENBQVU7SUFDdkIsT0FBTyxDQUFTO0lBQ2hCLE1BQU0sQ0FBVTtJQUNoQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUVsRCxZQUFZLE9BQWdDO1FBQzFDLEtBQUssQ0FBQztZQUNKLG9FQUFvRTtZQUNwRSxzRUFBc0U7WUFDdEUsaUVBQWlFO1lB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RUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxVQUFVLEtBQUssR0FBRyxJQUFJLFVBQVUsS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwRixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFNhbXBsZURpciwgVGFzaywgZ2l0aHViLCBqYXZhIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IE1hdmVuVXBncmFkZVJlcG9ydCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXZlbi11cGdyYWRlLXJlcG9ydCc7XG5pbXBvcnQge1xuICBERUZBVUxUX01JTl9NQVZFTl9WRVJTSU9OLFxuICBKVU5JVF9CT00sXG4gIEphdmFMaW5lUHJvZmlsZSxcbiAgTUFWRU5fQ09NUElMRVJfUExVR0lOLFxuICBNQVZFTl9FTkZPUkNFUl9QTFVHSU4sXG4gIE1BVkVOX0ZBSUxTQUZFX1BMVUdJTixcbiAgTUFWRU5fSkFSX1BMVUdJTixcbiAgTUFWRU5fU1VSRUZJUkVfUExVR0lOLFxuICBWRVJTSU9OU19NQVZFTl9QTFVHSU4sXG4gIHJlc29sdmVKYXZhTGluZSxcbn0gZnJvbSAnLi9qYXZhLXZlcnNpb25zJztcbmltcG9ydCB7IE1hdmVuTW9kdWxlIH0gZnJvbSAnLi9tYXZlbi9tYXZlbi1tb2R1bGUnO1xuaW1wb3J0IHsgTWF2ZW5Qb20sIGFzc2VydEV4YWN0VmVyc2lvbiB9IGZyb20gJy4vbWF2ZW4vbWF2ZW4tcG9tJztcbmltcG9ydCB7IEphdmFNYXZlblByb2plY3RPcHRpb25zLCBNYXZlbk1vZHVsZU9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgTlBNX0NJX1NURVAsIFNFVFVQX05PREVfU1RFUCB9IGZyb20gJy4uL2NvbW1vbi9jaS1zdGVwcyc7XG5pbXBvcnQgeyBERUZBVUxUX0dIRV9UT0tFTl9TRUNSRVQgfSBmcm9tICcuLi9jb21tb24vY29uc3RhbnRzJztcbmltcG9ydCB7IGFkZEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi9lZGl0b3Jjb25maWcnO1xuaW1wb3J0IHsgYXBwbHlJbnRlcm5hbEFjdGlvbk92ZXJyaWRlcyB9IGZyb20gJy4uL2NvbW1vbi9pbnRlcm5hbC1hY3Rpb25zJztcbmltcG9ydCB7IGFkZExpY2Vuc2VGaWxlIH0gZnJvbSAnLi4vY29tbW9uL2xpY2Vuc2UtZmlsZSc7XG5pbXBvcnQgeyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3cgfSBmcm9tICcuLi9jb21tb24vcHJvamVuLWRyaWZ0LWNoZWNrLXdvcmtmbG93JztcbmltcG9ydCB7IGF0dGFjaFR5cGVTY3JpcHRQcm9qZW5yYyB9IGZyb20gJy4uL2NvbW1vbi9wcm9qZW5yYy10cyc7XG5pbXBvcnQgeyBXb3JrZmxvd0NoYW5nZU5vdGljZVdvcmtmbG93IH0gZnJvbSAnLi4vY29tbW9uL3dvcmtmbG93LWNoYW5nZS1ub3RpY2Utd29ya2Zsb3cnO1xuaW1wb3J0IHsgbm90ZVdvcmtmbG93UHVycG9zZSB9IGZyb20gJy4uL2NvbW1vbi93b3JrZmxvdy1wdXJwb3NlJztcblxuLy8gYHJlcXVpcmUoLi4uKWAgcmVzb2x2ZXMgdGhyb3VnaCBOb2RlJ3Mgbm9ybWFsIG1vZHVsZSByZXNvbHV0aW9uLCBzbyBpbiBhXG4vLyAqcHVibGlzaGVkKiBwYWNrYWdlIHRoZXNlIGFyZSB0aGUgdmVyc2lvbnMgaW5zdGFsbGVkIGluIHRoZSBjb25zdW1pbmdcbi8vIHJlcG8gLSBleGFjdGx5IHdoYXQgaXRzIHBhY2thZ2UuanNvbiBtdXN0IHBpbiAoc2FtZSBhc1xuLy8gYEdpdEh1YkFjdGlvblByb2plY3RgKS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBQUk9KRU5fVkVSU0lPTjogc3RyaW5nID0gcmVxdWlyZSgncHJvamVuL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgUFJPSkVOX1RZUEVTX1ZFUlNJT046IHN0cmluZyA9IHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5cbi8qKlxuICogQmFzZWxpbmUgTWF2ZW4gcHJvamVjdCwgc2luZ2xlLSBvciBtdWx0aS1tb2R1bGUsIHdpdGggbm8gZnJhbWV3b3JrXG4gKiBhc3N1bXB0aW9ucy4gSXQgaXMgdGhlIGJhc2Ugb2YgZXZlcnkgSmF2YSB0eXBlIGluIHRoaXMgcGFja2FnZSBhbmQgaXNcbiAqIHVzYWJsZSBvbiBpdHMgb3duIChgcHJvamVuIG5ldyAuLi4gamF2YV9tYXZlbmApLlxuICpcbiAqIC0gVGhlIHBvbSBpcyB3cml0dGVuIGJ5IHRoaXMgcGFja2FnZSAoYE1hdmVuUG9tYCksIG5vdCBwcm9qZW4nc1xuICogICBgamF2YS5Qb21gOiBleGFjdCB2ZXJzaW9ucyBvbmx5LCBCT00gaW1wb3J0cywgYDxtb2R1bGVzPmAsXG4gKiAgIGA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+YCwgYDxwbHVnaW5NYW5hZ2VtZW50PmAuXG4gKiAtIEV2ZXJ5dGhpbmcgSmF2YS12ZXJzaW9uLWRlcGVuZGVudCAoY29tcGlsZXIgbGV2ZWwsIGVuZm9yY2VyIHJ1bGUsIEpVbml0XG4gKiAgIGxpbmUsIENJIEpESykgZm9sbG93cyBgamF2YVZlcnNpb25gLlxuICogLSBXaXRoIG5vIGBhZGRNb2R1bGUoKWAgY2FsbHMgdGhlIHJvb3QgcG9tIGlzIHRoZSBhcnRpZmFjdC4gQWZ0ZXIgdGhlXG4gKiAgIGZpcnN0IGBhZGRNb2R1bGUoKWAgaXQgaXMgYSBgcG9tYC1wYWNrYWdlZCByZWFjdG9yIHBhcmVudCBhbmQgdGhlXG4gKiAgIG1vZHVsZXMgaW5oZXJpdCBpdHMgcGx1Z2lucyBhbmQgdGVzdCBkZXBlbmRlbmNpZXMuXG4gKiAtIGBucHggcHJvamVuIGJ1aWxkYCBzeW50aGVzaXplcywgdGhlbiBydW5zIE1hdmVuIG9uY2U6IGBtdm4gLUIgdmVyaWZ5YFxuICogICAodW5pdCB0ZXN0cyB2aWEgc3VyZWZpcmUsIGAqSVRgIHRlc3RzIHZpYSBmYWlsc2FmZSkuXG4gKiAtIENJOiBhIFBSIGJ1aWxkICh3aXRoIGFuIG9wdGlvbmFsIFNvbmFyUXViZSBzY2FuKSwgdGhlIHByb2plbiBkcmlmdFxuICogICBjaGVjaywgYW5kIGEgbmlnaHRseSByZXBvcnQtb25seSB1cGRhdGUgY2hlY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBKYXZhTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgZ2l0aHViLkdpdEh1YlByb2plY3Qge1xuICAvKiogVGhlIHJvb3QgYHBvbS54bWxgLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9tOiBNYXZlblBvbTtcblxuICAvKiogVGhlIGNhbm9uaWNhbCBKYXZhIGxpbmUgdGhlIGJ1aWxkIHRhcmdldHMgKGAxLjhgLCBgMTdgLCBgMjFgLCBgMjVgKS4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGphdmFWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqIFByaW50cyBhdmFpbGFibGUgZGVwZW5kZW5jeS9wbHVnaW4gdXBkYXRlcyAoYG5weCBwcm9qZW4gdXBncmFkZWApLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBncmFkZVRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBQUiBidWlsZCB3b3JrZmxvdyAoYGJ1aWxkLnltbGApLiBBZGQgam9icyB0byBpdCB3aXRoXG4gICAqIGBidWlsZFZlcmlmeVdvcmtmbG93LmFkZEpvYihpZCwgam9iKWA7IHVzZSBgY2lTZXR1cFN0ZXBzYCBmb3IgYSBqb2IgdGhhdFxuICAgKiBuZWVkcyBOb2RlLCB0aGUgcHJvamVuIHRvb2xjaGFpbiwgYW5kIHRoZSBKREsuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRWZXJpZnlXb3JrZmxvdzogZ2l0aHViLlRhc2tXb3JrZmxvdztcblxuICAvKipcbiAgICogU3RlcHMgdGhhdCBpbnN0YWxsIE5vZGUgKHBpbm5lZCksIGBucG0gY2lgLCBhbmQgdGhlIHByb2plY3QncyBKREsgd2l0aCBhXG4gICAqIE1hdmVuIGNhY2hlIC0gdGhlIHNldHVwIGV2ZXJ5IE1hdmVuIENJIGpvYiBpbiB0aGlzIHJlcG8gbmVlZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2lTZXR1cFN0ZXBzOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGphdmFMaW5lOiBKYXZhTGluZVByb2ZpbGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9vdFBhY2thZ2luZz86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBncm91cElkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FtcGxlOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IG1hdmVuTW9kdWxlczogTWF2ZW5Nb2R1bGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEphdmFNYXZlblByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLy8gU3ByZWFkIGZpcnN0LCBvdmVycmlkZXMgYWZ0ZXI6IGZvcndhcmRpbmcgdGhlIGNhbGxlcidzIG9wdGlvbnMgaXNcbiAgICAgIC8vIHdoYXQgbGV0cyBgcHJvamVuIG5ldyAtLWZyb20gQHhwZXJ0c3MvcHJvamVuLXR5cGVzIGphdmFfbWF2ZW5gIHdvcmtcbiAgICAgIC8vIC0gcHJvamVuIHNtdWdnbGVzIGl0cyBib290c3RyYXAgbWFya2VyIChgX19uZXdfX2ApIHRocm91Z2ggdGhlXG4gICAgICAvLyBvcHRpb25zIG9iamVjdCwgYW5kIGl0IGlzIHRoYXQgbWFya2VyIHdoaWNoIG1ha2VzIHRoZVxuICAgICAgLy8gYFByb2plbnJjRmlsZWAgY29tcG9uZW50IHdyaXRlIHRoZSBpbml0aWFsIGAucHJvamVucmMudHNgLiBEcm9wIGl0XG4gICAgICAvLyBhbmQgYHByb2plbiBuZXdgIHNjYWZmb2xkcyBhIHJlcG8gd2l0aCBubyBwcm9qZW5yYyBhdCBhbGwuXG4gICAgICAuLi5zdHJpbmdpZnlQcm9qZW5OZXdBcmdzKG9wdGlvbnMpLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgLy8gUFIgdGl0bGVzIGFyZSBub3QgZ2F0ZWQ6IGBmZWF0OmAvYGZpeDpgIG1hdHRlciBvbmx5IGJlY2F1c2UgdGhleSBkcml2ZVxuICAgICAgLy8gdGhlIHJlbGVhc2Ugd29ya2Zsb3cgKHZpYSBgcmVsZWFzYWJsZUNvbW1pdHNgKSwgbm90IFBSIGNoZWNrcy4gVGhlXG4gICAgICAvLyBjb252ZW50aW9uYWwtY29tbWl0IFBSLXRpdGxlIGxpbnQgaXMgYWRkZWQgYnkgdGhlIGBHaXRIdWJgIGNvbXBvbmVudFxuICAgICAgLy8gdW5sZXNzIGBnaXRodWJPcHRpb25zLnB1bGxSZXF1ZXN0TGludGAgaXMgYGZhbHNlYCAoaXQgZGVmYXVsdHMgdHJ1ZSkuXG4gICAgICBnaXRodWJPcHRpb25zOiB7IHB1bGxSZXF1ZXN0TGludDogZmFsc2UgfSxcbiAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oe1xuICAgICAgICBzZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgT2JqZWN0LnZhbHVlcyhvcHRpb25zLnBsdWdpblZlcnNpb25zID8/IHt9KSkge1xuICAgICAgYXNzZXJ0RXhhY3RWZXJzaW9uKHZlcnNpb24sICdwbHVnaW5WZXJzaW9ucycpO1xuICAgIH1cbiAgICB0aGlzLmphdmFMaW5lID0gcmVzb2x2ZUphdmFMaW5lKG9wdGlvbnMuamF2YVZlcnNpb24sIG9wdGlvbnMucGx1Z2luVmVyc2lvbnMpO1xuICAgIHRoaXMuamF2YVZlcnNpb24gPSB0aGlzLmphdmFMaW5lLmxpbmU7XG4gICAgdGhpcy5yb290UGFja2FnaW5nID0gb3B0aW9ucy5wYWNrYWdpbmc7XG4gICAgdGhpcy5ncm91cElkID0gb3B0aW9ucy5ncm91cElkO1xuICAgIHRoaXMuc2FtcGxlID0gb3B0aW9ucy5zYW1wbGUgPz8gZmFsc2U7XG5cbiAgICAvLyBgLnByb2plbnJjLnRzYCArIGBucHggcHJvamVuYCwgc2FtZSBhcyBldmVyeSBvdGhlciB0eXBlIGhlcmUuIFRoZVxuICAgIC8vIE1hdmVuIHJlcG8gbmVlZHMgbm8gVHlwZVNjcmlwdCB0b29sY2hhaW4gb2YgaXRzIG93biAtIHRoZSBydW5uZXIgaXNcbiAgICAvLyBmZXRjaGVkIChwaW5uZWQpIGJ5IG5weCBhdCBzeW50aCB0aW1lLlxuICAgIGF0dGFjaFR5cGVTY3JpcHRQcm9qZW5yYyh0aGlzKTtcblxuICAgIC8vIFRoZSBwcm9qZW4gdG9vbGNoYWluIGBucHggcHJvamVuYCBydW5zLCBwaW5uZWQgZXhhY3RseSBzbyBldmVyeVxuICAgIC8vIG1hY2hpbmUgYW5kIENJIHJlc29sdmUgdGhlIHNhbWUgZ2VuZXJhdG9yLiBPd25lci13cml0YWJsZSBvbiBkaXNrIHNvXG4gICAgLy8gdGhlIGRvY3VtZW50ZWQgdXBkYXRlIGZsb3cgKGBucG0gaSAtRCAtRSBAeHBlcnRzcy9wcm9qZW4tdHlwZXNAPHY+YClcbiAgICAvLyBjYW4gcmV3cml0ZSBpdDsgaGFuZC1lZGl0cyBhcmUgc3RpbGwgY2F1Z2h0IGJ5IHRoZSBkcmlmdCBjaGVjay5cbiAgICBuZXcgSnNvbkZpbGUodGhpcywgJ3BhY2thZ2UuanNvbicsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246ICcwLjAuMCcsXG4gICAgICAgIHByaXZhdGU6IHRydWUsXG4gICAgICAgIGRldkRlcGVuZGVuY2llczoge1xuICAgICAgICAgICdwcm9qZW4nOiBQUk9KRU5fVkVSU0lPTixcbiAgICAgICAgICAnQHhwZXJ0c3MvcHJvamVuLXR5cGVzJzogUFJPSkVOX1RZUEVTX1ZFUlNJT04sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgLy8gSmV0QnJhaW5zIElERSBzdGF0ZSAoLmlkZWEvKSBpcyBuZXZlciB0cmFja2VkIGluIGdlbmVyYXRlZCByZXBvcywgYW5kXG4gICAgLy8gbmVpdGhlciBpcyAvc3BlYy8gKGxvY2FsIHBsYW5zIGFuZCBzcGVjczsgdGhlIHBhdHRlcm4gY292ZXJzIGV2ZXJ5XG4gICAgLy8gc3ViZGlyZWN0b3J5KS5cbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLy5pZGVhLyonKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnL3NwZWMvJyk7XG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJ3RhcmdldC8nKTtcbiAgICB0aGlzLmFkZEdpdElnbm9yZSgnLmNsYXNzcGF0aCcpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCcucHJvamVjdCcpO1xuICAgIHRoaXMuYWRkR2l0SWdub3JlKCcuc2V0dGluZ3MnKTtcblxuICAgIGlmIChvcHRpb25zLmxpY2Vuc2VkID8/IHRydWUpIHtcbiAgICAgIGFkZExpY2Vuc2VGaWxlKHRoaXMsIHtcbiAgICAgICAgc3BkeDogb3B0aW9ucy5saWNlbnNlID8/ICdNSVQnLFxuICAgICAgICBjb3B5cmlnaHRPd25lcjogb3B0aW9ucy5jb3B5cmlnaHRPd25lciA/PyAneHBlcnRzcycsXG4gICAgICAgIGNvcHlyaWdodFBlcmlvZDogb3B0aW9ucy5jb3B5cmlnaHRQZXJpb2QsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZWRpdG9yY29uZmlnID8/IHRydWUpIHtcbiAgICAgIGFkZEVkaXRvckNvbmZpZyh0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLnBvbSA9IG5ldyBNYXZlblBvbSh0aGlzLCB7XG4gICAgICBncm91cElkOiBvcHRpb25zLmdyb3VwSWQsXG4gICAgICBhcnRpZmFjdElkOiBvcHRpb25zLmFydGlmYWN0SWQsXG4gICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gJzAuMS4wJyxcbiAgICAgIHBhY2thZ2luZzogdGhpcy5yb290UGFja2FnaW5nID8/ICdqYXInLFxuICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgIH0pO1xuICAgIHRoaXMuY29uZmlndXJlQnVpbGQob3B0aW9ucyk7XG5cbiAgICAvLyBPbmUgTWF2ZW4gcnVuIHBlciBidWlsZDogYHZlcmlmeWAgcnVucyBldmVyeSBlYXJsaWVyIHBoYXNlIChjb21waWxlLFxuICAgIC8vIHVuaXQgdGVzdHMsIHBhY2thZ2UpIHBsdXMgaW50ZWdyYXRpb24gdGVzdHMuIE5vdGhpbmcgZGVwbG95cy5cbiAgICB0aGlzLnRlc3RUYXNrLmV4ZWMoJ212biAtQiB2ZXJpZnknKTtcblxuICAgIGNvbnN0IGdoID0gdGhpcy5naXRodWI7XG4gICAgaWYgKCFnaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdKYXZhTWF2ZW5Qcm9qZWN0IHJlcXVpcmVzIEdpdEh1YiBpbnRlZ3JhdGlvbicpO1xuICAgIH1cbiAgICBhcHBseUludGVybmFsQWN0aW9uT3ZlcnJpZGVzKGdoKTtcblxuICAgIG5ldyBQcm9qZW5EcmlmdENoZWNrV29ya2Zsb3codGhpcywge1xuICAgICAgZ2hlVG9rZW5TZWNyZXQ6IG9wdGlvbnMuZ2hlVG9rZW5TZWNyZXQgPz8gREVGQVVMVF9HSEVfVE9LRU5fU0VDUkVULFxuICAgIH0pO1xuICAgIG5ldyBXb3JrZmxvd0NoYW5nZU5vdGljZVdvcmtmbG93KHRoaXMpO1xuXG4gICAgdGhpcy5jaVNldHVwU3RlcHMgPSBbXG4gICAgICBTRVRVUF9OT0RFX1NURVAsXG4gICAgICBOUE1fQ0lfU1RFUCxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NldHVwIEphdmEnLFxuICAgICAgICB1c2VzOiAnYWN0aW9ucy9zZXR1cC1qYXZhQHY2JyxcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgICdkaXN0cmlidXRpb24nOiBvcHRpb25zLmphdmFEaXN0cmlidXRpb24gPz8gJ3RlbXVyaW4nLFxuICAgICAgICAgICdqYXZhLXZlcnNpb24nOiB0aGlzLmphdmFMaW5lLnNldHVwSmF2YVZlcnNpb24sXG4gICAgICAgICAgJ2NhY2hlJzogJ21hdmVuJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHBvc3RCdWlsZFN0ZXBzOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXSA9IFtdO1xuICAgIGlmIChvcHRpb25zLnNvbmFyUHJvamVjdEtleSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdTb25hclF1YmUgc2NhbicsXG4gICAgICAgIHJ1bjogYG12biAtQiBzb25hcjpzb25hciAtRHNvbmFyLnByb2plY3RLZXk9JHtvcHRpb25zLnNvbmFyUHJvamVjdEtleX1gLFxuICAgICAgICBlbnY6IHsgU09OQVJfVE9LRU46ICcke3sgc2VjcmV0cy5TT05BUl9UT0tFTiB9fScgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRWZXJpZnlXb3JrZmxvdyA9IG5ldyBnaXRodWIuVGFza1dvcmtmbG93KGdoLCB7XG4gICAgICBuYW1lOiAnYnVpbGQnLFxuICAgICAgam9iSWQ6ICdidWlsZCcsXG4gICAgICB0YXNrOiB0aGlzLmJ1aWxkVGFzayxcbiAgICAgIHRyaWdnZXJzOiB7IHB1bGxSZXF1ZXN0OiB7fSwgd29ya2Zsb3dEaXNwYXRjaDoge30gfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgcHJlQnVpbGRTdGVwczogdGhpcy5jaVNldHVwU3RlcHMsXG4gICAgICBwb3N0QnVpbGRTdGVwcyxcbiAgICB9KTtcbiAgICBub3RlV29ya2Zsb3dQdXJwb3NlKFxuICAgICAgdGhpcy5idWlsZFZlcmlmeVdvcmtmbG93LmZpbGUsXG4gICAgICAnQnVpbGQgYW5kIHRlc3QgdGhlIE1hdmVuIHByb2plY3Qgb24gcHVsbCByZXF1ZXN0cywgd2l0aCBhbiBvcHRpb25hbCBTb25hclF1YmUgc2Nhbi4nLFxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uc1BsdWdpbiA9IGBvcmcuY29kZWhhdXMubW9qbzp2ZXJzaW9ucy1tYXZlbi1wbHVnaW46JHt0aGlzLnBpbm5lZFZlcnNpb24oVkVSU0lPTlNfTUFWRU5fUExVR0lOKX1gO1xuICAgIHRoaXMudXBncmFkZVRhc2sgPSB0aGlzLmFkZFRhc2soJ3VwZ3JhZGUnLCB7XG4gICAgICBleGVjOiBgbXZuIC1CICR7dmVyc2lvbnNQbHVnaW59OmRpc3BsYXktZGVwZW5kZW5jeS11cGRhdGVzICR7dmVyc2lvbnNQbHVnaW59OmRpc3BsYXktcGx1Z2luLXVwZGF0ZXNgLFxuICAgIH0pO1xuICAgIGlmIChvcHRpb25zLnVwZ3JhZGVXb3JrZmxvdyA/PyB0cnVlKSB7XG4gICAgICBuZXcgTWF2ZW5VcGdyYWRlUmVwb3J0KHRoaXMsIHtcbiAgICAgICAgdGFzazogdGhpcy51cGdyYWRlVGFzayxcbiAgICAgICAgc2V0dXBTdGVwczogdGhpcy5jaVNldHVwU3RlcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIG1vZHVsZXMgYWRkZWQgd2l0aCBgYWRkTW9kdWxlKClgLCBpbiBvcmRlci4gKi9cbiAgcHVibGljIGdldCBtb2R1bGVzKCk6IE1hdmVuTW9kdWxlW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5tYXZlbk1vZHVsZXNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBNYXZlbiBtb2R1bGUgaW4gYGRpcmAgKHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3Q7IG1heSBiZSBuZXN0ZWQsXG4gICAqIGUuZy4gYHRvb2xzL3N0dWItbW9kZWxgKSBhbmQgdHVybnMgdGhlIHJvb3QgcG9tIGludG8gdGhlIHJlYWN0b3IgcGFyZW50XG4gICAqIChgcGFja2FnaW5nPXBvbWAsIGA8bW9kdWxlcz5gIGluIHRoZSBvcmRlciBhZGRlZCkuIFRoZSBwYXJlbnQgbWFuYWdlc1xuICAgKiBldmVyeSBtb2R1bGUgYXQgYCR7cHJvamVjdC52ZXJzaW9ufWAsIHNvIG1vZHVsZXMgZGVwZW5kIG9uIGVhY2ggb3RoZXJcbiAgICogd2l0aCBgYWRkTW9kdWxlRGVwZW5kZW5jeSgpYCwgdmVyc2lvbmxlc3MuXG4gICAqL1xuICBwdWJsaWMgYWRkTW9kdWxlKG9wdGlvbnM6IE1hdmVuTW9kdWxlT3B0aW9ucyk6IE1hdmVuTW9kdWxlIHtcbiAgICBpZiAodGhpcy5yb290UGFja2FnaW5nICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yb290UGFja2FnaW5nICE9PSAncG9tJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBtdWx0aS1tb2R1bGUgcHJvamVjdCdzIHJvb3QgcG9tIGlzIHBhY2thZ2VkIGFzIFwicG9tXCI7IHJlbW92ZSBwYWNrYWdpbmc6IFwiJHt0aGlzLnJvb3RQYWNrYWdpbmd9XCIuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGRpciA9IG5vcm1hbGl6ZU1vZHVsZURpcihvcHRpb25zLmRpcik7XG4gICAgZm9yIChjb25zdCBtIG9mIHRoaXMubWF2ZW5Nb2R1bGVzKSB7XG4gICAgICBpZiAobS5hcnRpZmFjdElkID09PSBvcHRpb25zLmFydGlmYWN0SWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgbW9kdWxlIGFydGlmYWN0SWQgXCIke29wdGlvbnMuYXJ0aWZhY3RJZH1cIiAoZGlycyBcIiR7bS5kaXJ9XCIgYW5kIFwiJHtkaXJ9XCIpLmApO1xuICAgICAgfVxuICAgICAgaWYgKG0uZGlyID09PSBkaXIgfHwgZGlyLnN0YXJ0c1dpdGgoYCR7bS5kaXJ9L2ApIHx8IG0uZGlyLnN0YXJ0c1dpdGgoYCR7ZGlyfS9gKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBvdmVybGFwcyBtb2R1bGUgZGlyIFwiJHttLmRpcn1cIjogbW9kdWxlIGRpcnMgbXVzdCBiZSBkaXN0aW5jdCBhbmQgbm90IG5lc3RlZC5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGUgPSBuZXcgTWF2ZW5Nb2R1bGUodGhpcywgdGhpcy5wb20sIHsgLi4ub3B0aW9ucywgZGlyIH0pO1xuICAgIHRoaXMubWF2ZW5Nb2R1bGVzLnB1c2gobW9kdWxlKTtcbiAgICB0aGlzLnBvbS5wYWNrYWdpbmcgPSAncG9tJztcbiAgICB0aGlzLnBvbS5tYW5hZ2VQbHVnaW5WZXJzaW9ucyA9IHRydWU7XG4gICAgdGhpcy5wb20uYWRkTW9kdWxlKGRpcik7XG4gICAgdGhpcy5wb20uYWRkTWFuYWdlZERlcGVuZGVuY3koYCR7dGhpcy5ncm91cElkfS8ke29wdGlvbnMuYXJ0aWZhY3RJZH1AXFwke3Byb2plY3QudmVyc2lvbn1gKTtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYSBCT00gaW50byB0aGUgcm9vdCBgPGRlcGVuZGVuY3lNYW5hZ2VtZW50PmAgKGB0eXBlPXBvbWAsXG4gICAqIGBzY29wZT1pbXBvcnRgKS5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZEB2ZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGFkZEJvbShzcGVjOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRCb20oc3BlYyk7XG4gIH1cblxuICAvKipcbiAgICogUGlucyBhIHZlcnNpb24gaW4gdGhlIHJvb3QgYDxkZXBlbmRlbmN5TWFuYWdlbWVudD5gIHdpdGhvdXQgYWRkaW5nIHRoZVxuICAgKiBkZXBlbmRlbmN5LCBzbyBtb2R1bGVzIChvciB0aGUgcm9vdCkgY2FuIHVzZSBpdCB2ZXJzaW9ubGVzcy5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZEB2ZXJzaW9uYFxuICAgKi9cbiAgcHVibGljIGFkZE1hbmFnZWREZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZE1hbmFnZWREZXBlbmRlbmN5KHNwZWMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21waWxlLXNjb3BlIGRlcGVuZGVuY3kgdG8gdGhlIHJvb3QgcG9tLiBJbiBhIG11bHRpLW1vZHVsZVxuICAgKiBwcm9qZWN0IGV2ZXJ5IG1vZHVsZSBpbmhlcml0cyBpdDsgdXNlIGBNYXZlbk1vZHVsZS5hZGREZXBlbmRlbmN5YCBmb3JcbiAgICogb25lIG1vZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYGdyb3VwSWQvYXJ0aWZhY3RJZFtAdmVyc2lvbl1gIC0gZXhhY3QgdmVyc2lvbiwgb3Igbm9uZSB3aGVuXG4gICAqIGEgQk9NIG1hbmFnZXMgaXRcbiAgICovXG4gIHB1YmxpYyBhZGREZXBlbmRlbmN5KHNwZWM6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAvKiogQWRkcyBhIHRlc3Qtc2NvcGUgZGVwZW5kZW5jeSB0byB0aGUgcm9vdCBwb20gKGluaGVyaXRlZCBieSBldmVyeSBtb2R1bGUpLiAqL1xuICBwdWJsaWMgYWRkVGVzdERlcGVuZGVuY3koc3BlYzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koc3BlYyk7XG4gIH1cblxuICAvKiogQWRkcyBhIGJ1aWxkIHBsdWdpbiB0byB0aGUgcm9vdCBwb20gKGluaGVyaXRlZCBieSBldmVyeSBtb2R1bGUpLiAqL1xuICBwdWJsaWMgYWRkUGx1Z2luKHNwZWM6IHN0cmluZywgb3B0aW9uczogamF2YS5QbHVnaW5PcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnBvbS5hZGRQbHVnaW4oc3BlYywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgaWYgKHRoaXMuc2FtcGxlICYmIHRoaXMubWF2ZW5Nb2R1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5hZGRTYW1wbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGV4YWN0IHZlcnNpb24gdGhpcyBwcm9qZWN0IHVzZXMgZm9yIGEgYGdyb3VwSWQvYXJ0aWZhY3RJZGAgaXQgcGluc1xuICAgKiBieSBkZWZhdWx0OiB0aGUgYHBsdWdpblZlcnNpb25zYCBvdmVycmlkZSBpZiBzZXQsIG90aGVyd2lzZSB0aGVcbiAgICogZGVmYXVsdCBmb3IgYGphdmFWZXJzaW9uYC5cbiAgICovXG4gIHB1YmxpYyBwaW5uZWRWZXJzaW9uKGNvb3JkaW5hdGVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmphdmFMaW5lLnZlcnNpb25zW2Nvb3JkaW5hdGVzXTtcbiAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZGVmYXVsdCB2ZXJzaW9uIGZvciAke2Nvb3JkaW5hdGVzfS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBTcHJpbmcgQm9vdCBtYWpvciB2ZXJzaW9uIGBqYXZhVmVyc2lvbmAgc3VwcG9ydHMsIG9yXG4gICAqIHVuZGVmaW5lZCB3aGVuIHRoaXMgcGFja2FnZSBrbm93cyBvZiBubyBjYXAuXG4gICAqL1xuICBwcm90ZWN0ZWQgbWF4U3ByaW5nQm9vdE1ham9yKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuamF2YUxpbmUubWF4U3ByaW5nQm9vdE1ham9yO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVCdWlsZChvcHRpb25zOiBKYXZhTWF2ZW5Qcm9qZWN0T3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMucG9tLmFkZFByb3BlcnR5KCdwcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nJywgJ1VURi04Jyk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuamF2YUxpbmUuY29tcGlsZXJQcm9wZXJ0aWVzKSkge1xuICAgICAgdGhpcy5wb20uYWRkUHJvcGVydHkobmFtZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEpVbml0J3MgdmVyc2lvbiBjb21lcyBmcm9tIGl0cyBCT00gKG9yIGZyb20gYSBmcmFtZXdvcmsgQk9NIHRoYXRcbiAgICAvLyBtYW5hZ2VzIGl0IC0gc2VlIEphdmFTcHJpbmdCb290UHJvamVjdCksIG5ldmVyIGZyb20gYSBkZXBlbmRlbmN5LlxuICAgIHRoaXMucG9tLmFkZEJvbShgJHtKVU5JVF9CT019QCR7dGhpcy5waW5uZWRWZXJzaW9uKEpVTklUX0JPTSl9YCk7XG4gICAgdGhpcy5wb20uYWRkVGVzdERlcGVuZGVuY3koJ29yZy5qdW5pdC5qdXBpdGVyL2p1bml0LWp1cGl0ZXInKTtcblxuICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0NPTVBJTEVSX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fQ09NUElMRVJfUExVR0lOKX1gKTtcbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9TVVJFRklSRV9QTFVHSU59QCR7dGhpcy5waW5uZWRWZXJzaW9uKE1BVkVOX1NVUkVGSVJFX1BMVUdJTil9YCk7XG4gICAgLy8gZmFpbHNhZmUgaGFzIG5vIGRlZmF1bHQgbGlmZWN5Y2xlIGJpbmRpbmc7IGJpbmQgaXQgc28gYCpJVGAgdGVzdHMgcnVuXG4gICAgLy8gaW4gYG12biB2ZXJpZnlgLlxuICAgIHRoaXMuYWRkUGx1Z2luKGAke01BVkVOX0ZBSUxTQUZFX1BMVUdJTn1AJHt0aGlzLnBpbm5lZFZlcnNpb24oTUFWRU5fRkFJTFNBRkVfUExVR0lOKX1gLCB7XG4gICAgICBleGVjdXRpb25zOiBbeyBpZDogJ2ludGVncmF0aW9uLXRlc3RzJywgZ29hbHM6IFsnaW50ZWdyYXRpb24tdGVzdCcsICd2ZXJpZnknXSB9XSxcbiAgICB9KTtcbiAgICB0aGlzLmFkZFBsdWdpbihgJHtNQVZFTl9KQVJfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9KQVJfUExVR0lOKX1gLCB7XG4gICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGFyY2hpdmU6IHtcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgYWRkRGVmYXVsdEltcGxlbWVudGF0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICAgIGFkZERlZmF1bHRTcGVjaWZpY2F0aW9uRW50cmllczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLmVuZm9yY2VyID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IG1pbk1hdmVuID0gb3B0aW9ucy5taW5NYXZlblZlcnNpb24gPz8gREVGQVVMVF9NSU5fTUFWRU5fVkVSU0lPTjtcbiAgICAgIGFzc2VydEV4YWN0VmVyc2lvbihtaW5NYXZlbiwgJ21pbk1hdmVuVmVyc2lvbicpO1xuICAgICAgdGhpcy5hZGRQbHVnaW4oYCR7TUFWRU5fRU5GT1JDRVJfUExVR0lOfUAke3RoaXMucGlubmVkVmVyc2lvbihNQVZFTl9FTkZPUkNFUl9QTFVHSU4pfWAsIHtcbiAgICAgICAgZXhlY3V0aW9uczogW3sgaWQ6ICdlbmZvcmNlLXZlcnNpb25zJywgZ29hbHM6IFsnZW5mb3JjZSddIH1dLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIHJlcXVpcmVNYXZlblZlcnNpb246IHsgdmVyc2lvbjogYFske21pbk1hdmVufSwpYCB9LFxuICAgICAgICAgICAgcmVxdWlyZUphdmFWZXJzaW9uOiB7IHZlcnNpb246IHRoaXMuamF2YUxpbmUuZW5mb3JjZXJKYXZhUmFuZ2UgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTYW1wbGUoKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gdGhpcy5ncm91cElkLnJlcGxhY2UoL1teQS1aYS16MC05Xy5dL2csICdfJyk7XG4gICAgY29uc3QgcGF0aCA9IHBrZy5zcGxpdCgnLicpO1xuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgcG9zaXguam9pbignc3JjL21haW4vamF2YScsIC4uLnBhdGgpLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICAnTWFpbi5qYXZhJzogW1xuICAgICAgICAgIGBwYWNrYWdlICR7cGtnfTtgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdwdWJsaWMgY2xhc3MgTWFpbiB7JyxcbiAgICAgICAgICAnICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsnLFxuICAgICAgICAgICcgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihcIkhlbGxvLCB3b3JsZCFcIik7JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbmV3IFNhbXBsZURpcih0aGlzLCBwb3NpeC5qb2luKCdzcmMvdGVzdC9qYXZhJywgLi4ucGF0aCksIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgICdNYWluVGVzdC5qYXZhJzogW1xuICAgICAgICAgIGBwYWNrYWdlICR7cGtnfTtgLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdpbXBvcnQgb3JnLmp1bml0Lmp1cGl0ZXIuYXBpLlRlc3Q7JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAnY2xhc3MgTWFpblRlc3QgeycsXG4gICAgICAgICAgJyAgICBAVGVzdCcsXG4gICAgICAgICAgJyAgICB2b2lkIHJ1bnMoKSB7JyxcbiAgICAgICAgICAnICAgICAgICBNYWluLm1haW4obmV3IFN0cmluZ1swXSk7JyxcbiAgICAgICAgICAnICAgIH0nLFxuICAgICAgICAgICd9JyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBgcHJvamVuIG5ldyAuLi4gLS1qYXZhLXZlcnNpb24gMjFgIChvciBgMS44YCwgb3IgYC0tbWluLW1hdmVuLXZlcnNpb24gMy45YClcbiAqIHJlYWNoZXMgdGhlIG9wdGlvbnMgYXMgYSAqbnVtYmVyKjogeWFyZ3MgcGFyc2VzIG51bWVyaWMtbG9va2luZyBmbGFncywgYW5kXG4gKiBwcm9qZW4gcGFzc2VzIHN0cmluZy10eXBlZCBvcHRpb25zIHRocm91Z2ggdW5jaGFuZ2VkLiBUaGUgaW5pdGlhbFxuICogYC5wcm9qZW5yYy50c2AgaXMgcmVuZGVyZWQgZnJvbSB0aGUgc2FtZSBhcmdzLCBzbyBpdCB3b3VsZCByZWFkXG4gKiBgamF2YVZlcnNpb246IDIxYCBhbmQgZmFpbCB0byB0eXBlLWNoZWNrLiBObyBKYXZhIG9wdGlvbiBpcyBudW1iZXItdHlwZWQsXG4gKiBzbyBldmVyeSBudW1lcmljIGFyZyBpcyB0dXJuZWQgYmFjayBpbnRvIHRoZSBzdHJpbmcgdGhlIHVzZXIgdHlwZWQuIFRoaXNcbiAqIHJ1bnMgYmVmb3JlIHRoZSBQcm9qZWN0IGNvbnN0cnVjdG9yLCB3aGljaCBpcyB3aGVyZSBwcm9qZW4gY2FwdHVyZXMgdGhlXG4gKiBhcmdzIGl0IHJlbmRlcnMuIE9wdGlvbnMgZnJvbSBhIGhhbmQtd3JpdHRlbiBwcm9qZW5yYyBhcmUgbmV2ZXIgbnVtYmVyc1xuICogKHRoZXkgdHlwZS1jaGVjayBhcyBzdHJpbmdzKSBhbmQgYXJlIGxlZnQgYWxvbmUuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeVByb2plbk5ld0FyZ3M8VCBleHRlbmRzIG9iamVjdD4ob3B0aW9uczogVCk6IFQge1xuICBjb25zdCBtYXJrZXIgPSAob3B0aW9ucyBhcyBhbnkpLl9fbmV3X187XG4gIGlmICghbWFya2VyPy5hcmdzKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgW29wdGlvbnMgYXMgYW55LCBtYXJrZXIuYXJnc10pIHtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFyZ2V0KSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdGFyZ2V0W25hbWVdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1vZHVsZURpcihkaXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVuaXggPSBkaXIucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICBpZiAodW5peC5zdGFydHNXaXRoKCcvJykgfHwgL15bQS1aYS16XTovLnRlc3QodW5peCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBtdXN0IGJlIHJlbGF0aXZlIHRvIHRoZSByZXBvIHJvb3QuYCk7XG4gIH1cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHBvc2l4Lm5vcm1hbGl6ZSh1bml4KS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgaWYgKG5vcm1hbGl6ZWQgPT09ICcuJyB8fCBub3JtYWxpemVkID09PSAnJyB8fCBub3JtYWxpemVkLnNwbGl0KCcvJykuaW5jbHVkZXMoJy4uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZHVsZSBkaXIgXCIke2Rpcn1cIiBtdXN0IGJlIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSByZXBvIHJvb3QuYCk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG4iXX0=
|
|
@@ -17,7 +17,7 @@ const java_spring_boot_project_1 = require("./java-spring-boot-project");
|
|
|
17
17
|
* repo use `JavaSpringBootProject`.
|
|
18
18
|
*/
|
|
19
19
|
class JavaServiceProject extends java_spring_boot_project_1.JavaSpringBootProject {
|
|
20
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaServiceProject", version: "0.0.
|
|
20
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaServiceProject", version: "0.0.20" };
|
|
21
21
|
constructor(options) {
|
|
22
22
|
super(options);
|
|
23
23
|
this.addDependency('org.springframework.boot/spring-boot-starter-web');
|
|
@@ -22,7 +22,7 @@ const REPACKAGE = { executions: [{ id: 'repackage', goals: ['repackage'] }] };
|
|
|
22
22
|
* and a CDK deploy hook.
|
|
23
23
|
*/
|
|
24
24
|
class JavaSpringBootProject extends java_maven_base_1.JavaMavenProject {
|
|
25
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaSpringBootProject", version: "0.0.
|
|
25
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.JavaSpringBootProject", version: "0.0.20" };
|
|
26
26
|
/** The Spring Boot version (BOM and Maven plugin). */
|
|
27
27
|
springBootVersion;
|
|
28
28
|
constructor(options) {
|
|
@@ -16,7 +16,7 @@ const maven_pom_1 = require("./maven-pom");
|
|
|
16
16
|
* an artifact gets the same version.
|
|
17
17
|
*/
|
|
18
18
|
class MavenModule extends projen_1.Component {
|
|
19
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenModule", version: "0.0.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenModule", version: "0.0.20" };
|
|
20
20
|
/** Module directory, relative to the repo root. */
|
|
21
21
|
dir;
|
|
22
22
|
artifactId;
|
|
@@ -58,7 +58,7 @@ function key(c) {
|
|
|
58
58
|
* `executions` and `dependencies` appended.
|
|
59
59
|
*/
|
|
60
60
|
class MavenPom extends projen_1.Component {
|
|
61
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenPom", version: "0.0.
|
|
61
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@xpertss/projen-types.MavenPom", version: "0.0.20" };
|
|
62
62
|
/** Path of the pom, relative to the project root. */
|
|
63
63
|
filePath;
|
|
64
64
|
groupId;
|