projen 0.100.6 → 0.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +714 -116
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +9 -9
- package/lib/awscdk/integ-runner.js +9 -3
- package/lib/awscdk/integration-test.js +12 -6
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +5 -5
- package/lib/cdk/jsii-docgen.js +3 -3
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +3 -3
- package/lib/cdk8s/cdk8s-app-ts.js +4 -4
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +17 -10
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/cli/cmds/run-task.js +4 -1
- package/lib/cli/task-runtime.js +152 -78
- package/lib/common.d.ts +1 -1
- package/lib/common.js +2 -2
- package/lib/component.js +1 -1
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +3 -3
- package/lib/java/maven-compile.js +3 -3
- package/lib/java/maven-packaging.js +3 -3
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +3 -3
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +3 -3
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +5 -5
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +13 -4
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +3 -3
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +4 -4
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/python/pip.js +17 -5
- package/lib/python/poetry.js +7 -7
- package/lib/python/projenrc.js +3 -3
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +8 -3
- package/lib/python/uv.js +6 -6
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/bump-version.d.ts +1 -1
- package/lib/release/bump-version.js +6 -2
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +141 -129
- package/lib/sample-file.js +2 -2
- package/lib/source-code.js +1 -1
- package/lib/task-model.d.ts +144 -4
- package/lib/task-model.js +1 -1
- package/lib/task-shell.d.ts +63 -0
- package/lib/task-shell.js +87 -0
- package/lib/task.d.ts +52 -2
- package/lib/task.js +71 -10
- package/lib/tasks.d.ts +13 -0
- package/lib/tasks.js +19 -2
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-typedoc.js +9 -3
- package/lib/typescript/typescript.js +8 -10
- package/lib/util/exec.d.ts +34 -70
- package/lib/util/exec.js +57 -51
- package/lib/version.d.ts +1 -1
- package/lib/version.js +5 -5
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +9 -9
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +7 -7
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +4 -4
package/lib/java/projenrc.js
CHANGED
|
@@ -19,7 +19,7 @@ const util_1 = require("../util");
|
|
|
19
19
|
* `src/main/java/projenrc.java`.
|
|
20
20
|
*/
|
|
21
21
|
class Projenrc extends projenrc_1.ProjenrcFile {
|
|
22
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Projenrc", version: "0.
|
|
22
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.java.Projenrc", version: "0.101.0" };
|
|
23
23
|
/**
|
|
24
24
|
* The name of the java class that includes the projen entrypoint.
|
|
25
25
|
*/
|
|
@@ -43,7 +43,7 @@ class Projenrc extends projenrc_1.ProjenrcFile {
|
|
|
43
43
|
project.deps.addDependency(`io.github.cdklabs/projen@${projenVersion}`, depType);
|
|
44
44
|
pom.addPlugin("org.codehaus.mojo/exec-maven-plugin@3.0.0");
|
|
45
45
|
// set up the "default" task which is the task executed when `projen` is executed for this project.
|
|
46
|
-
project.defaultTask?.
|
|
46
|
+
project.defaultTask?.execArgs(["mvn", compileGoal, "--quiet"]);
|
|
47
47
|
project.defaultTask?.exec(`mvn exec:java --quiet -Dexec.mainClass=${this.className}${execOpts}`);
|
|
48
48
|
// if this is a new project, generate a skeleton for projenrc.java
|
|
49
49
|
this.generateProjenrc();
|
|
@@ -180,4 +180,4 @@ function getJavaImport(jsiiType, jsiiManifest) {
|
|
|
180
180
|
.join(".");
|
|
181
181
|
return `${packageName}.${jsiiType.name}`;
|
|
182
182
|
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpTkEsMERBY0M7QUFrREQsc0NBU0M7O0FBMVJELDJCQUEwRDtBQUMxRCwrQkFBK0M7QUFFL0Msc0NBQTJDO0FBQzNDLGtEQUFpRDtBQUVqRCw0Q0FBZ0Q7QUFFaEQsMENBQTJDO0FBQzNDLGtDQUFpRDtBQWlDakQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxRQUFTLFNBQVEsdUJBQVk7O0lBQ3hDOztPQUVHO0lBQ2EsU0FBUyxDQUFTO0lBRWxDOztPQUVHO0lBQ2MsU0FBUyxDQUFVO0lBRXBDLFlBQVksT0FBZ0IsRUFBRSxHQUFRLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHVCQUFjLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQzVCLENBQUMsQ0FBQyw2QkFBYyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLDZCQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDaEMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFFdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3hCLDRCQUE0QixhQUFhLEVBQUUsRUFD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Q0FBQyxRQUFhO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQWEsRUFBRSxZQUFpQjtJQUM1RCxNQUFNLFdBQVcsR0FDZixZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN2RSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTztRQUMxQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDO2FBQ3BELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVmLE9BQU8sR0FBRyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgUG9tIH0gZnJvbSBcIi4vcG9tXCI7XG5pbXBvcnQgeyBQUk9KRU5fVkVSU0lPTiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0T3B0aW9uIH0gZnJvbSBcIi4uL2ludmVudG9yeVwiO1xuaW1wb3J0IHsgcmVhZEpzaWlNYW5pZmVzdCB9IGZyb20gXCIuLi9pbnZlbnRvcnlcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBQcm9qZW5yY0ZpbGUgfSBmcm9tIFwiLi4vcHJvamVucmNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBQcm9qZW5yY2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVucmNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBKYXZhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIHRoZSBgbWFpbigpYCBtZXRob2QgZm9yIHByb2plbi5cbiAgICogQGRlZmF1bHQgXCJwcm9qZW5yY1wiXG4gICAqL1xuICByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9qZW4gdmVyc2lvbiB0byB1c2VcbiAgICogQGRlZmF1bHQgLSBjdXJyZW50IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHByb2plblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgcHJvamVucmMgdW5kZXIgdGhlIHRlc3Qgc2NvcGUgaW5zdGVhZCBvZiB0aGUgbWFpbiBzY29wZSwgd2hpY2ggaXNcbiAgICogcmVzZXJ2ZWQgdG8gdGhlIGFwcC4gVGhpcyBtZWFucyB0aGF0IHByb2plbnJjIHdpbGwgYmUgdW5kZXJcbiAgICogYHNyYy90ZXN0L2phdmEvcHJvamVucmMuamF2YWAgYW5kIHByb2plbiB3aWxsIGJlIGRlZmluZWQgYXMgYSB0ZXN0XG4gICAqIGRlcGVuZGVuY3kuIFRoaXMgZW5mb3JjZXMgdGhhdCBhcHBsaWNhdGlvbiBjb2RlIGRvZXMgbm90IHRha2UgYSBkZXBlbmRlbmN5XG4gICAqIG9uIHByb2plbiBjb2RlLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIGRpc2FibGVkLCBwcm9qZW5yYyBzaG91bGQgYmUgdW5kZXJcbiAgICogYHNyYy9tYWluL2phdmEvcHJvamVucmMuamF2YWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RTY29wZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWxsb3dzIHdyaXRpbmcgcHJvamVucmMgZmlsZXMgaW4gamF2YS5cbiAqXG4gKiBUaGlzIHdpbGwgaW5zdGFsbCBgb3JnLnByb2plbi9wcm9qZW5gIGFzIGEgTWF2ZW4gZGVwZW5kZW5jeSBhbmQgd2lsbCBhZGQgYVxuICogYHN5bnRoYCB0YXNrIHdoaWNoIHdpbGwgY29tcGlsZSAmIGV4ZWN1dGUgYG1haW4oKWAgZnJvbVxuICogYHNyYy9tYWluL2phdmEvcHJvamVucmMuamF2YWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZW5yYyBleHRlbmRzIFByb2plbnJjRmlsZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgamF2YSBjbGFzcyB0aGF0IGluY2x1ZGVzIHRoZSBwcm9qZW4gZW50cnlwb2ludC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbGFzc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2xhc3MgaXMgaW4gdGhlIFwidGVzdFwiIG9yIFwibWFpblwiIHNjb3BlP1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0ZXN0U2NvcGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcG9tOiBQb20sIG9wdGlvbnM6IFByb2plbnJjT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBwcm9qZW5WZXJzaW9uID0gb3B0aW9ucy5wcm9qZW5WZXJzaW9uID8/IFBST0pFTl9WRVJTSU9OO1xuICAgIHRoaXMuY2xhc3NOYW1lID0gb3B0aW9ucy5jbGFzc05hbWUgPz8gXCJwcm9qZW5yY1wiO1xuICAgIHRoaXMudGVzdFNjb3BlID0gb3B0aW9ucy50ZXN0U2NvcGUgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IGRlcFR5cGUgPSB0aGlzLnRlc3RTY29wZVxuICAgICAgPyBEZXBlbmRlbmN5VHlwZS5URVNUXG4gICAgICA6IERlcGVuZGVuY3lUeXBlLlJVTlRJTUU7XG4gICAgY29uc3QgZXhlY09wdHMgPSB0aGlzLnRlc3RTY29wZSA/ICcgLURleGVjLmNsYXNzcGF0aFNjb3BlPVwidGVzdFwiJyA6IFwiXCI7XG4gICAgY29uc3QgY29tcGlsZUdvYWwgPSB0aGlzLnRlc3RTY29wZVxuICAgICAgPyBcImNvbXBpbGVyOnRlc3RDb21waWxlXCJcbiAgICAgIDogXCJjb21waWxlcjpjb21waWxlXCI7XG5cbiAgICBwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcbiAgICAgIGBpby5naXRodWIuY2RrbGFicy9wcm9qZW5AJHtwcm9qZW5WZXJzaW9ufWAsXG4gICAgICBkZXBUeXBlLFxuICAgICk7XG4gICAgcG9tLmFkZFBsdWdpbihcIm9yZy5jb2RlaGF1cy5tb2pvL2V4ZWMtbWF2ZW4tcGx1Z2luQDMuMC4wXCIpO1xuXG4gICAgLy8gc2V0IHVwIHRoZSBcImRlZmF1bHRcIiB0YXNrIHdoaWNoIGlzIHRoZSB0YXNrIGV4ZWN1dGVkIHdoZW4gYHByb2plbmAgaXMgZXhlY3V0ZWQgZm9yIHRoaXMgcHJvamVjdC5cbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5leGVjKGBtdm4gJHtjb21waWxlR29hbH0gLS1xdWlldGApO1xuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWMoXG4gICAgICBgbXZuIGV4ZWM6amF2YSAtLXF1aWV0IC1EZXhlYy5tYWluQ2xhc3M9JHt0aGlzLmNsYXNzTmFtZX0ke2V4ZWNPcHRzfWAsXG4gICAgKTtcblxuICAgIC8vIGlmIHRoaXMgaXMgYSBuZXcgcHJvamVjdCwgZ2VuZXJhdGUgYSBza2VsZXRvbiBmb3IgcHJvamVucmMuamF2YVxuICAgIHRoaXMuZ2VuZXJhdGVQcm9qZW5yYygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgamF2YUNsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3BsaXQgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdChcIi5cIik7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHNwbGl0WzBdO1xuICAgIH1cbiAgICByZXR1cm4gc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwcml2YXRlIGdldCBqYXZhUGFja2FnZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3BsaXQgPSB0aGlzLmNsYXNzTmFtZS5zcGxpdChcIi5cIik7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gc3BsaXQuc2xpY2UoMCwgc3BsaXQubGVuZ3RoIC0gMik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIHByb2plbnJjIGZpbGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbGVQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGlyID0gdGhpcy50ZXN0U2NvcGUgPyBcInNyYy90ZXN0L2phdmFcIiA6IFwic3JjL21haW4vamF2YVwiO1xuXG4gICAgY29uc3QgamF2YUZpbGUgPSBqb2luKFxuICAgICAgdGhpcy5wcm9qZWN0Lm91dGRpcixcbiAgICAgIGRpcixcbiAgICAgIC4uLnRoaXMuamF2YVBhY2thZ2UsXG4gICAgICB0aGlzLmphdmFDbGFzcyArIFwiLmphdmFcIixcbiAgICApO1xuXG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmUodGhpcy5wcm9qZWN0Lm91dGRpciwgamF2YUZpbGUpO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgocmVsYXRpdmVQYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9qZW5yYygpIHtcbiAgICBjb25zdCBib290c3RyYXAgPSB0aGlzLnByb2plY3QuaW5pdFByb2plY3Q7XG4gICAgaWYgKCFib290c3RyYXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNpaUZxbiA9IGJvb3RzdHJhcC5mcW47XG4gICAgY29uc3QganNpaU1hbmlmZXN0ID0gcmVhZEpzaWlNYW5pZmVzdChqc2lpRnFuKTtcbiAgICBjb25zdCBqc2lpVHlwZSA9IGpzaWlNYW5pZmVzdC50eXBlc1tqc2lpRnFuXTtcbiAgICBjb25zdCBqYXZhVGFyZ2V0ID0ganNpaU1hbmlmZXN0LnRhcmdldHMuamF2YTtcbiAgICBjb25zdCBvcHRpb25zVHlwZUZxbiA9IGpzaWlUeXBlLmluaXRpYWxpemVyPy5wYXJhbWV0ZXJzPy5bMF0udHlwZT8uZnFuO1xuICAgIGlmICghb3B0aW9uc1R5cGVGcW4pIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIud2FybihcbiAgICAgICAgXCJjYW5ub3QgZGV0ZXJtaW5lIGpzaWkgdHlwZSBmb3IgcHJvamVjdCBvcHRpb25zXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBqc2lpT3B0aW9uc1R5cGUgPSBqc2lpTWFuaWZlc3QudHlwZXNbb3B0aW9uc1R5cGVGcW5dO1xuICAgIGlmICghanNpaU9wdGlvbnNUeXBlKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIGBjYW5ub3QgZmluZCBqc2lpIHR5cGUgZm9yIHByb2plY3Qgb3B0aW9uczogJHtvcHRpb25zVHlwZUZxbn1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gc2tpcCBpZiBmaWxlIGV4aXN0c1xuICAgIGlmIChleGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgbGV0IGluZGVudCA9IDA7XG4gICAgY29uc3QgZW1pdCA9IChsaW5lOiBzdHJpbmcgPSBcIlwiKSA9PlxuICAgICAgbGluZXMucHVzaChcIiBcIi5yZXBlYXQoaW5kZW50ICogNCkgKyBsaW5lKTtcbiAgICBjb25zdCBvcGVuQmxvY2sgPSAobGluZTogc3RyaW5nID0gXCJcIikgPT4ge1xuICAgICAgZW1pdChsaW5lICsgXCIge1wiKTtcbiAgICAgIGluZGVudCsrO1xuICAgIH07XG4gICAgY29uc3QgY2xvc2VCbG9jayA9ICgpID0+IHtcbiAgICAgIGluZGVudC0tO1xuICAgICAgZW1pdChcIn1cIik7XG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSBnZW5lcmF0ZUphdmFPcHRpb25OYW1lcyhcbiAgICAgIGJvb3RzdHJhcC50eXBlLm9wdGlvbnMsXG4gICAgICBqc2lpTWFuaWZlc3QsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmphdmFQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgIGVtaXQoYHBhY2thZ2UgJHt0aGlzLmphdmFQYWNrYWdlLmpvaW4oXCIuXCIpfTtgKTtcbiAgICAgIGVtaXQoKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlbmRlcmVkT3B0aW9ucywgaW1wb3J0cyB9ID0gcmVuZGVySmF2YU9wdGlvbnMoXG4gICAgICAyLFxuICAgICAganNpaU9wdGlvbnNUeXBlLm5hbWUsXG4gICAgICBvcHRpb25GcW5zLFxuICAgICAgYm9vdHN0cmFwLmFyZ3MsXG4gICAgKTtcblxuICAgIGVtaXQoYGltcG9ydCAke2dldEphdmFJbXBvcnQoanNpaVR5cGUsIGpzaWlNYW5pZmVzdCl9O2ApO1xuICAgIGVtaXQoYGltcG9ydCAke2dldEphdmFJbXBvcnQoanNpaU9wdGlvbnNUeXBlLCBqc2lpTWFuaWZlc3QpfTtgKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvblR5cGVOYW1lIG9mIGltcG9ydHMpIHtcbiAgICAgIGVtaXQoYGltcG9ydCAke2phdmFUYXJnZXQucGFja2FnZX0uJHtvcHRpb25UeXBlTmFtZX07YCk7XG4gICAgfVxuICAgIGVtaXQoKTtcbiAgICBvcGVuQmxvY2soYHB1YmxpYyBjbGFzcyAke3RoaXMuamF2YUNsYXNzfWApO1xuICAgIG9wZW5CbG9jayhcInB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpXCIpO1xuICAgIGVtaXQoXG4gICAgICBgJHtqc2lpVHlwZS5uYW1lfSBwcm9qZWN0ID0gbmV3ICR7anNpaVR5cGUubmFtZX0oJHtyZW5kZXJlZE9wdGlvbnN9KTtgLFxuICAgICk7XG4gICAgZW1pdChcInByb2plY3Quc3ludGgoKTtcIik7XG4gICAgY2xvc2VCbG9jaygpO1xuICAgIGNsb3NlQmxvY2soKTtcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gam9pbih0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmZpbGVQYXRoKTtcbiAgICBta2RpclN5bmMoZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci5pbmZvKFxuICAgICAgYFByb2plY3QgZGVmaW5pdGlvbiBmaWxlIHdhcyBjcmVhdGVkIGF0ICR7dGhpcy5maWxlUGF0aH1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSmF2YU9wdGlvbk5hbWVzKFxuICBvcHRpb25zOiBQcm9qZWN0T3B0aW9uW10sXG4gIGpzaWlNYW5pZmVzdDogYW55LFxuKSB7XG4gIGNvbnN0IG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgIGlmIChvcHRpb24uZnFuICYmIGpzaWlNYW5pZmVzdC50eXBlc1tvcHRpb24uZnFuXSkge1xuICAgICAgb3B0aW9uRnFuc1tvcHRpb24ubmFtZV0gPSB0b0phdmFGdWxsVHlwZU5hbWUoXG4gICAgICAgIGpzaWlNYW5pZmVzdC50eXBlc1tvcHRpb24uZnFuXSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9wdGlvbkZxbnM7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckphdmFPcHRpb25zKFxuICBpbmRlbnQ6IG51bWJlcixcbiAgb3B0aW9uc1R5cGVOYW1lOiBzdHJpbmcsXG4gIG9wdGlvbkZxbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIGluaXRPcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pixcbikge1xuICBjb25zdCBpbXBvcnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGlmICghaW5pdE9wdGlvbnMgfHwgT2JqZWN0LmtleXMoaW5pdE9wdGlvbnMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IHJlbmRlcmVkT3B0aW9uczogXCJcIiwgaW1wb3J0cyB9OyAvLyBubyBvcHRpb25zXG4gIH1cblxuICBjb25zdCBsaW5lcyA9IFtgJHtvcHRpb25zVHlwZU5hbWV9LmJ1aWxkZXIoKWBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbml0T3B0aW9ucykpIHtcbiAgICBjb25zdCB7IGphdmFWYWx1ZSwgaW1wb3J0TmFtZSB9ID0gdG9KYXZhVmFsdWUodmFsdWUsIG5hbWUsIG9wdGlvbkZxbnMpO1xuICAgIGlmIChpbXBvcnROYW1lKSBpbXBvcnRzLmFkZChpbXBvcnROYW1lKTtcbiAgICBsaW5lcy5wdXNoKGAuJHt0b0phdmFQcm9wZXJ0eShuYW1lKX0oJHtqYXZhVmFsdWV9KWApO1xuICB9XG5cbiAgbGluZXMucHVzaChcIi5idWlsZCgpXCIpO1xuXG4gIGNvbnN0IHJlbmRlcmVkT3B0aW9ucyA9IGxpbmVzLmpvaW4oYFxcbiR7XCIgXCIucmVwZWF0KChpbmRlbnQgKyAxKSAqIDQpfWApO1xuICByZXR1cm4geyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfTtcbn1cblxuZnVuY3Rpb24gdG9KYXZhUHJvcGVydHkocHJvcDogc3RyaW5nKSB7XG4gIHJldHVybiBwcm9wO1xufVxuXG5mdW5jdGlvbiB0b0phdmFWYWx1ZShcbiAgdmFsdWU6IGFueSxcbiAgbmFtZTogc3RyaW5nLFxuICBvcHRpb25GcW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgb3B0aW9uRnFuc1tuYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcGFydHMgPSBvcHRpb25GcW5zW25hbWVdLnNwbGl0KFwiLlwiKTtcbiAgICBjb25zdCBiYXNlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgY2hvaWNlID0gU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoLy0vZywgXCJfXCIpO1xuICAgIHJldHVybiB7IGphdmFWYWx1ZTogYCR7YmFzZX0uJHtjaG9pY2V9YCwgaW1wb3J0TmFtZTogb3B0aW9uRnFuc1tuYW1lXSB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGphdmFWYWx1ZTogSlNPTi5zdHJpbmdpZnkodmFsdWUpIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9KYXZhRnVsbFR5cGVOYW1lKGpzaWlUeXBlOiBhbnkpIHtcbiAgcmV0dXJuIFtqc2lpVHlwZS5uYW1lc3BhY2UsIGpzaWlUeXBlLm5hbWVdLmZpbHRlcigoeCkgPT4geCkuam9pbihcIi5cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRKYXZhSW1wb3J0KGpzaWlUeXBlOiBhbnksIGpzaWlNYW5pZmVzdDogYW55KSB7XG4gIGNvbnN0IHBhY2thZ2VOYW1lID1cbiAgICBqc2lpTWFuaWZlc3Q/LnN1Ym1vZHVsZXM/LltgJHtqc2lpVHlwZS5hc3NlbWJseX0uJHtqc2lpVHlwZT8ubmFtZXNwYWNlfWBdXG4gICAgICA/LnRhcmdldHM/LmphdmE/LnBhY2thZ2UgfHxcbiAgICBbanNpaU1hbmlmZXN0LnRhcmdldHMuamF2YS5wYWNrYWdlLCBqc2lpVHlwZS5uYW1lc3BhY2VdXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4KVxuICAgICAgLmpvaW4oXCIuXCIpO1xuXG4gIHJldHVybiBgJHtwYWNrYWdlTmFtZX0uJHtqc2lpVHlwZS5uYW1lfWA7XG59XG4iXX0=
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVucmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YS9wcm9qZW5yYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpTkEsMERBY0M7QUFrREQsc0NBU0M7O0FBMVJELDJCQUEwRDtBQUMxRCwrQkFBK0M7QUFFL0Msc0NBQTJDO0FBQzNDLGtEQUFpRDtBQUVqRCw0Q0FBZ0Q7QUFFaEQsMENBQTJDO0FBQzNDLGtDQUFpRDtBQWlDakQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxRQUFTLFNBQVEsdUJBQVk7O0lBQ3hDOztPQUVHO0lBQ2EsU0FBUyxDQUFTO0lBRWxDOztPQUVHO0lBQ2MsU0FBUyxDQUFVO0lBRXBDLFlBQVksT0FBZ0IsRUFBRSxHQUFRLEVBQUUsVUFBMkIsRUFBRTtRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLHVCQUFjLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTO1lBQzVCLENBQUMsQ0FBQyw2QkFBYyxDQUFDLElBQUk7WUFDckIsQ0FBQyxDQUFDLDZCQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDaEMsQ0FBQyxDQUFDLHNCQUFzQjtZQUN4QixDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFFdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3hCLDRCQUE0QixhQUFhLEVBQUUsRUFD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QUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFFBQWE7SUFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsUUFBYSxFQUFFLFlBQWlCO0lBQzVELE1BQU0sV0FBVyxHQUNmLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPO1FBQzFCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUM7YUFDcEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsT0FBTyxHQUFHLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQb20gfSBmcm9tIFwiLi9wb21cIjtcbmltcG9ydCB7IFBST0pFTl9WRVJTSU9OIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3RPcHRpb24gfSBmcm9tIFwiLi4vaW52ZW50b3J5XCI7XG5pbXBvcnQgeyByZWFkSnNpaU1hbmlmZXN0IH0gZnJvbSBcIi4uL2ludmVudG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFByb2plbnJjRmlsZSB9IGZyb20gXCIuLi9wcm9qZW5yY1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGVyc2lzdGVkUGF0aCB9IGZyb20gXCIuLi91dGlsXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFByb2plbnJjYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZW5yY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEphdmEgY2xhc3Mgd2hpY2ggY29udGFpbnMgdGhlIGBtYWluKClgIG1ldGhvZCBmb3IgcHJvamVuLlxuICAgKiBAZGVmYXVsdCBcInByb2plbnJjXCJcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb2plbiB2ZXJzaW9uIHRvIHVzZVxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVuVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBwcm9qZW5yYyB1bmRlciB0aGUgdGVzdCBzY29wZSBpbnN0ZWFkIG9mIHRoZSBtYWluIHNjb3BlLCB3aGljaCBpc1xuICAgKiByZXNlcnZlZCB0byB0aGUgYXBwLiBUaGlzIG1lYW5zIHRoYXQgcHJvamVucmMgd2lsbCBiZSB1bmRlclxuICAgKiBgc3JjL3Rlc3QvamF2YS9wcm9qZW5yYy5qYXZhYCBhbmQgcHJvamVuIHdpbGwgYmUgZGVmaW5lZCBhcyBhIHRlc3RcbiAgICogZGVwZW5kZW5jeS4gVGhpcyBlbmZvcmNlcyB0aGF0IGFwcGxpY2F0aW9uIGNvZGUgZG9lcyBub3QgdGFrZSBhIGRlcGVuZGVuY3lcbiAgICogb24gcHJvamVuIGNvZGUuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgZGlzYWJsZWQsIHByb2plbnJjIHNob3VsZCBiZSB1bmRlclxuICAgKiBgc3JjL21haW4vamF2YS9wcm9qZW5yYy5qYXZhYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNjb3BlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbGxvd3Mgd3JpdGluZyBwcm9qZW5yYyBmaWxlcyBpbiBqYXZhLlxuICpcbiAqIFRoaXMgd2lsbCBpbnN0YWxsIGBvcmcucHJvamVuL3Byb2plbmAgYXMgYSBNYXZlbiBkZXBlbmRlbmN5IGFuZCB3aWxsIGFkZCBhXG4gKiBgc3ludGhgIHRhc2sgd2hpY2ggd2lsbCBjb21waWxlICYgZXhlY3V0ZSBgbWFpbigpYCBmcm9tXG4gKiBgc3JjL21haW4vamF2YS9wcm9qZW5yYy5qYXZhYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2plbnJjIGV4dGVuZHMgUHJvamVucmNGaWxlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBqYXZhIGNsYXNzIHRoYXQgaW5jbHVkZXMgdGhlIHByb2plbiBlbnRyeXBvaW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjbGFzcyBpcyBpbiB0aGUgXCJ0ZXN0XCIgb3IgXCJtYWluXCIgc2NvcGU/XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRlc3RTY29wZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwb206IFBvbSwgb3B0aW9uczogUHJvamVucmNPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IHByb2plblZlcnNpb24gPSBvcHRpb25zLnByb2plblZlcnNpb24gPz8gUFJPSkVOX1ZFUlNJT047XG4gICAgdGhpcy5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzTmFtZSA/PyBcInByb2plbnJjXCI7XG4gICAgdGhpcy50ZXN0U2NvcGUgPSBvcHRpb25zLnRlc3RTY29wZSA/PyB0cnVlO1xuXG4gICAgY29uc3QgZGVwVHlwZSA9IHRoaXMudGVzdFNjb3BlXG4gICAgICA/IERlcGVuZGVuY3lUeXBlLlRFU1RcbiAgICAgIDogRGVwZW5kZW5jeVR5cGUuUlVOVElNRTtcbiAgICBjb25zdCBleGVjT3B0cyA9IHRoaXMudGVzdFNjb3BlID8gJyAtRGV4ZWMuY2xhc3NwYXRoU2NvcGU9XCJ0ZXN0XCInIDogXCJcIjtcbiAgICBjb25zdCBjb21waWxlR29hbCA9IHRoaXMudGVzdFNjb3BlXG4gICAgICA/IFwiY29tcGlsZXI6dGVzdENvbXBpbGVcIlxuICAgICAgOiBcImNvbXBpbGVyOmNvbXBpbGVcIjtcblxuICAgIHByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFxuICAgICAgYGlvLmdpdGh1Yi5jZGtsYWJzL3Byb2plbkAke3Byb2plblZlcnNpb259YCxcbiAgICAgIGRlcFR5cGUsXG4gICAgKTtcbiAgICBwb20uYWRkUGx1Z2luKFwib3JnLmNvZGVoYXVzLm1vam8vZXhlYy1tYXZlbi1wbHVnaW5AMy4wLjBcIik7XG5cbiAgICAvLyBzZXQgdXAgdGhlIFwiZGVmYXVsdFwiIHRhc2sgd2hpY2ggaXMgdGhlIHRhc2sgZXhlY3V0ZWQgd2hlbiBgcHJvamVuYCBpcyBleGVjdXRlZCBmb3IgdGhpcyBwcm9qZWN0LlxuICAgIHByb2plY3QuZGVmYXVsdFRhc2s/LmV4ZWNBcmdzKFtcIm12blwiLCBjb21waWxlR29hbCwgXCItLXF1aWV0XCJdKTtcbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5leGVjKFxuICAgICAgYG12biBleGVjOmphdmEgLS1xdWlldCAtRGV4ZWMubWFpbkNsYXNzPSR7dGhpcy5jbGFzc05hbWV9JHtleGVjT3B0c31gLFxuICAgICk7XG5cbiAgICAvLyBpZiB0aGlzIGlzIGEgbmV3IHByb2plY3QsIGdlbmVyYXRlIGEgc2tlbGV0b24gZm9yIHByb2plbnJjLmphdmFcbiAgICB0aGlzLmdlbmVyYXRlUHJvamVucmMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGphdmFDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNwbGl0ID0gdGhpcy5jbGFzc05hbWUuc3BsaXQoXCIuXCIpO1xuICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBzcGxpdFswXTtcbiAgICB9XG4gICAgcmV0dXJuIHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgamF2YVBhY2thZ2UoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNwbGl0ID0gdGhpcy5jbGFzc05hbWUuc3BsaXQoXCIuXCIpO1xuICAgIGlmIChzcGxpdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHNwbGl0LnNsaWNlKDAsIHNwbGl0Lmxlbmd0aCAtIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBwcm9qZW5yYyBmaWxlLlxuICAgKi9cbiAgcHVibGljIGdldCBmaWxlUGF0aCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpciA9IHRoaXMudGVzdFNjb3BlID8gXCJzcmMvdGVzdC9qYXZhXCIgOiBcInNyYy9tYWluL2phdmFcIjtcblxuICAgIGNvbnN0IGphdmFGaWxlID0gam9pbihcbiAgICAgIHRoaXMucHJvamVjdC5vdXRkaXIsXG4gICAgICBkaXIsXG4gICAgICAuLi50aGlzLmphdmFQYWNrYWdlLFxuICAgICAgdGhpcy5qYXZhQ2xhc3MgKyBcIi5qYXZhXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIGphdmFGaWxlKTtcblxuICAgIHJldHVybiBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKHJlbGF0aXZlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUHJvamVucmMoKSB7XG4gICAgY29uc3QgYm9vdHN0cmFwID0gdGhpcy5wcm9qZWN0LmluaXRQcm9qZWN0O1xuICAgIGlmICghYm9vdHN0cmFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGpzaWlGcW4gPSBib290c3RyYXAuZnFuO1xuICAgIGNvbnN0IGpzaWlNYW5pZmVzdCA9IHJlYWRKc2lpTWFuaWZlc3QoanNpaUZxbik7XG4gICAgY29uc3QganNpaVR5cGUgPSBqc2lpTWFuaWZlc3QudHlwZXNbanNpaUZxbl07XG4gICAgY29uc3QgamF2YVRhcmdldCA9IGpzaWlNYW5pZmVzdC50YXJnZXRzLmphdmE7XG4gICAgY29uc3Qgb3B0aW9uc1R5cGVGcW4gPSBqc2lpVHlwZS5pbml0aWFsaXplcj8ucGFyYW1ldGVycz8uWzBdLnR5cGU/LmZxbjtcbiAgICBpZiAoIW9wdGlvbnNUeXBlRnFuKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiY2Fubm90IGRldGVybWluZSBqc2lpIHR5cGUgZm9yIHByb2plY3Qgb3B0aW9uc1wiLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QganNpaU9wdGlvbnNUeXBlID0ganNpaU1hbmlmZXN0LnR5cGVzW29wdGlvbnNUeXBlRnFuXTtcbiAgICBpZiAoIWpzaWlPcHRpb25zVHlwZSkge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci53YXJuKFxuICAgICAgICBgY2Fubm90IGZpbmQganNpaSB0eXBlIGZvciBwcm9qZWN0IG9wdGlvbnM6ICR7b3B0aW9uc1R5cGVGcW59YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHNraXAgaWYgZmlsZSBleGlzdHNcbiAgICBpZiAoZXhpc3RzU3luYyh0aGlzLmZpbGVQYXRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGxldCBpbmRlbnQgPSAwO1xuICAgIGNvbnN0IGVtaXQgPSAobGluZTogc3RyaW5nID0gXCJcIikgPT5cbiAgICAgIGxpbmVzLnB1c2goXCIgXCIucmVwZWF0KGluZGVudCAqIDQpICsgbGluZSk7XG4gICAgY29uc3Qgb3BlbkJsb2NrID0gKGxpbmU6IHN0cmluZyA9IFwiXCIpID0+IHtcbiAgICAgIGVtaXQobGluZSArIFwiIHtcIik7XG4gICAgICBpbmRlbnQrKztcbiAgICB9O1xuICAgIGNvbnN0IGNsb3NlQmxvY2sgPSAoKSA9PiB7XG4gICAgICBpbmRlbnQtLTtcbiAgICAgIGVtaXQoXCJ9XCIpO1xuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25GcW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gZ2VuZXJhdGVKYXZhT3B0aW9uTmFtZXMoXG4gICAgICBib290c3RyYXAudHlwZS5vcHRpb25zLFxuICAgICAganNpaU1hbmlmZXN0LFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5qYXZhUGFja2FnZS5sZW5ndGggPiAwKSB7XG4gICAgICBlbWl0KGBwYWNrYWdlICR7dGhpcy5qYXZhUGFja2FnZS5qb2luKFwiLlwiKX07YCk7XG4gICAgICBlbWl0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZW5kZXJlZE9wdGlvbnMsIGltcG9ydHMgfSA9IHJlbmRlckphdmFPcHRpb25zKFxuICAgICAgMixcbiAgICAgIGpzaWlPcHRpb25zVHlwZS5uYW1lLFxuICAgICAgb3B0aW9uRnFucyxcbiAgICAgIGJvb3RzdHJhcC5hcmdzLFxuICAgICk7XG5cbiAgICBlbWl0KGBpbXBvcnQgJHtnZXRKYXZhSW1wb3J0KGpzaWlUeXBlLCBqc2lpTWFuaWZlc3QpfTtgKTtcbiAgICBlbWl0KGBpbXBvcnQgJHtnZXRKYXZhSW1wb3J0KGpzaWlPcHRpb25zVHlwZSwganNpaU1hbmlmZXN0KX07YCk7XG4gICAgZm9yIChjb25zdCBvcHRpb25UeXBlTmFtZSBvZiBpbXBvcnRzKSB7XG4gICAgICBlbWl0KGBpbXBvcnQgJHtqYXZhVGFyZ2V0LnBhY2thZ2V9LiR7b3B0aW9uVHlwZU5hbWV9O2ApO1xuICAgIH1cbiAgICBlbWl0KCk7XG4gICAgb3BlbkJsb2NrKGBwdWJsaWMgY2xhc3MgJHt0aGlzLmphdmFDbGFzc31gKTtcbiAgICBvcGVuQmxvY2soXCJwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKVwiKTtcbiAgICBlbWl0KFxuICAgICAgYCR7anNpaVR5cGUubmFtZX0gcHJvamVjdCA9IG5ldyAke2pzaWlUeXBlLm5hbWV9KCR7cmVuZGVyZWRPcHRpb25zfSk7YCxcbiAgICApO1xuICAgIGVtaXQoXCJwcm9qZWN0LnN5bnRoKCk7XCIpO1xuICAgIGNsb3NlQmxvY2soKTtcbiAgICBjbG9zZUJsb2NrKCk7XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5maWxlUGF0aCk7XG4gICAgbWtkaXJTeW5jKGRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBsaW5lcy5qb2luKFwiXFxuXCIpKTtcblxuICAgIHRoaXMucHJvamVjdC5sb2dnZXIuaW5mbyhcbiAgICAgIGBQcm9qZWN0IGRlZmluaXRpb24gZmlsZSB3YXMgY3JlYXRlZCBhdCAke3RoaXMuZmlsZVBhdGh9YCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUphdmFPcHRpb25OYW1lcyhcbiAgb3B0aW9uczogUHJvamVjdE9wdGlvbltdLFxuICBqc2lpTWFuaWZlc3Q6IGFueSxcbikge1xuICBjb25zdCBvcHRpb25GcW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9uLmZxbiAmJiBqc2lpTWFuaWZlc3QudHlwZXNbb3B0aW9uLmZxbl0pIHtcbiAgICAgIG9wdGlvbkZxbnNbb3B0aW9uLm5hbWVdID0gdG9KYXZhRnVsbFR5cGVOYW1lKFxuICAgICAgICBqc2lpTWFuaWZlc3QudHlwZXNbb3B0aW9uLmZxbl0sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvcHRpb25GcW5zO1xufVxuXG5mdW5jdGlvbiByZW5kZXJKYXZhT3B0aW9ucyhcbiAgaW5kZW50OiBudW1iZXIsXG4gIG9wdGlvbnNUeXBlTmFtZTogc3RyaW5nLFxuICBvcHRpb25GcW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBpbml0T3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pIHtcbiAgY29uc3QgaW1wb3J0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBpZiAoIWluaXRPcHRpb25zIHx8IE9iamVjdC5rZXlzKGluaXRPcHRpb25zKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyByZW5kZXJlZE9wdGlvbnM6IFwiXCIsIGltcG9ydHMgfTsgLy8gbm8gb3B0aW9uc1xuICB9XG5cbiAgY29uc3QgbGluZXMgPSBbYCR7b3B0aW9uc1R5cGVOYW1lfS5idWlsZGVyKClgXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaW5pdE9wdGlvbnMpKSB7XG4gICAgY29uc3QgeyBqYXZhVmFsdWUsIGltcG9ydE5hbWUgfSA9IHRvSmF2YVZhbHVlKHZhbHVlLCBuYW1lLCBvcHRpb25GcW5zKTtcbiAgICBpZiAoaW1wb3J0TmFtZSkgaW1wb3J0cy5hZGQoaW1wb3J0TmFtZSk7XG4gICAgbGluZXMucHVzaChgLiR7dG9KYXZhUHJvcGVydHkobmFtZSl9KCR7amF2YVZhbHVlfSlgKTtcbiAgfVxuXG4gIGxpbmVzLnB1c2goXCIuYnVpbGQoKVwiKTtcblxuICBjb25zdCByZW5kZXJlZE9wdGlvbnMgPSBsaW5lcy5qb2luKGBcXG4ke1wiIFwiLnJlcGVhdCgoaW5kZW50ICsgMSkgKiA0KX1gKTtcbiAgcmV0dXJuIHsgcmVuZGVyZWRPcHRpb25zLCBpbXBvcnRzIH07XG59XG5cbmZ1bmN0aW9uIHRvSmF2YVByb3BlcnR5KHByb3A6IHN0cmluZykge1xuICByZXR1cm4gcHJvcDtcbn1cblxuZnVuY3Rpb24gdG9KYXZhVmFsdWUoXG4gIHZhbHVlOiBhbnksXG4gIG5hbWU6IHN0cmluZyxcbiAgb3B0aW9uRnFuczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIG9wdGlvbkZxbnNbbmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHBhcnRzID0gb3B0aW9uRnFuc1tuYW1lXS5zcGxpdChcIi5cIik7XG4gICAgY29uc3QgYmFzZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGNob2ljZSA9IFN0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbiAgICByZXR1cm4geyBqYXZhVmFsdWU6IGAke2Jhc2V9LiR7Y2hvaWNlfWAsIGltcG9ydE5hbWU6IG9wdGlvbkZxbnNbbmFtZV0gfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBqYXZhVmFsdWU6IEpTT04uc3RyaW5naWZ5KHZhbHVlKSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvSmF2YUZ1bGxUeXBlTmFtZShqc2lpVHlwZTogYW55KSB7XG4gIHJldHVybiBbanNpaVR5cGUubmFtZXNwYWNlLCBqc2lpVHlwZS5uYW1lXS5maWx0ZXIoKHgpID0+IHgpLmpvaW4oXCIuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SmF2YUltcG9ydChqc2lpVHlwZTogYW55LCBqc2lpTWFuaWZlc3Q6IGFueSkge1xuICBjb25zdCBwYWNrYWdlTmFtZSA9XG4gICAganNpaU1hbmlmZXN0Py5zdWJtb2R1bGVzPy5bYCR7anNpaVR5cGUuYXNzZW1ibHl9LiR7anNpaVR5cGU/Lm5hbWVzcGFjZX1gXVxuICAgICAgPy50YXJnZXRzPy5qYXZhPy5wYWNrYWdlIHx8XG4gICAgW2pzaWlNYW5pZmVzdC50YXJnZXRzLmphdmEucGFja2FnZSwganNpaVR5cGUubmFtZXNwYWNlXVxuICAgICAgLmZpbHRlcigoeCkgPT4geClcbiAgICAgIC5qb2luKFwiLlwiKTtcblxuICByZXR1cm4gYCR7cGFja2FnZU5hbWV9LiR7anNpaVR5cGUubmFtZX1gO1xufVxuIl19
|
|
@@ -100,7 +100,7 @@ const DEFAULT_ASSIST = {
|
|
|
100
100
|
*/
|
|
101
101
|
class Biome extends component_1.Component {
|
|
102
102
|
options;
|
|
103
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.
|
|
103
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Biome", version: "0.101.0" };
|
|
104
104
|
static of(project) {
|
|
105
105
|
const isBiome = (c) => c instanceof Biome;
|
|
106
106
|
return project.components.find(isBiome);
|
|
@@ -45,7 +45,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
45
45
|
* single file. In the future, this will also supports bundling websites.
|
|
46
46
|
*/
|
|
47
47
|
class Bundler extends component_1.Component {
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Bundler", version: "0.101.0" };
|
|
49
49
|
/**
|
|
50
50
|
* Returns the `Bundler` instance associated with a project or `undefined` if
|
|
51
51
|
* there is no Bundler.
|
|
@@ -190,7 +190,7 @@ class Bundler extends component_1.Component {
|
|
|
190
190
|
});
|
|
191
191
|
this.bundleTask.spawn(bundleTask);
|
|
192
192
|
if (options.executable ?? false) {
|
|
193
|
-
bundleTask.
|
|
193
|
+
bundleTask.execArgs(["chmod", "+x", outfile]);
|
|
194
194
|
}
|
|
195
195
|
let watchTask;
|
|
196
196
|
const watch = options.watchTask ?? true;
|
|
@@ -335,4 +335,4 @@ var BundleLogLevel;
|
|
|
335
335
|
/** Show nothing */
|
|
336
336
|
BundleLogLevel["SILENT"] = "silent";
|
|
337
337
|
})(BundleLogLevel || (exports.BundleLogLevel = BundleLogLevel = {}));
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhc2NyaXB0L2J1bmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QiwrQkFBd0M7QUFDeEMsaUNBQTBDO0FBQzFDLDRDQUF5QztBQUN6QyxrREFBaUQ7QUEyQ2pEOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTOztJQUNwQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ2EsY0FBYyxDQUFxQjtJQUVuRDs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUUxQixLQUFLLENBQW1CO0lBQ2YsYUFBYSxDQUFpQjtJQUM5QixPQUFPLENBQTZCO0lBRXJEOztPQUVHO0lBQ0gsWUFBWSxPQUFnQixFQUFFLFVBQTBCLEVBQUU7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsVUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtB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RCxXQUFZLGNBQWM7SUFDeEIsc0JBQXNCO0lBQ3RCLHFDQUFtQixDQUFBO0lBQ25CLDJFQUEyRTtJQUMzRSxpQ0FBZSxDQUFBO0lBQ2Ysd0RBQXdEO0lBQ3hELCtCQUFhLENBQUE7SUFDYiwrQkFBK0I7SUFDL0IscUNBQW1CLENBQUE7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlDQUFlLENBQUE7SUFDZixtQkFBbUI7SUFDbkIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWJXLGNBQWMsOEJBQWQsY0FBYyxRQWF6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGpvaW4gYXMgcGF0aEpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgcmVuZGVyQnVuZGxlTmFtZSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8vIFBhcnRzIG9mIHRoaXMgZmlsZSBpbnNwaXJlZCBieSBAYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcbi8vICAgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvYzNjNzcxYzZmNmY2NzkwZjIyOThhODVhNTQ5YmRlZDY0MGQyZTM1Yi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcy9saWIvYnVuZGxpbmcudHMjTDE5NVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgYGVzYnVpbGRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwZWNpZmljIHZlcnNpb24gKGltcGxpZXMgbGF0ZXN0KVxuICAgKi9cbiAgcmVhZG9ubHkgZXNidWlsZFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dCBkaXJlY3RvcnkgZm9yIGFsbCBidW5kbGVzLlxuICAgKiBAZGVmYXVsdCBcImFzc2V0c1wiXG4gICAqL1xuICByZWFkb25seSBhc3NldHNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENob29zZSB3aGljaCBwaGFzZSAoaWYgYW55KSB0byBhZGQgdGhlIGBidW5kbGVgIGNvbW1hbmQgdG8uXG4gICAqXG4gICAqIE5vdGU6IElmIHVzaW5nIGBhZGRCdW5kbGUoKWAgd2l0aCB0aGUgYGJ1bmRsZUNvbXBpbGVkUmVzdWx0c2AsIHRoaXMgb3B0aW9uXG4gICAqIG11c3QgYmUgc2V0IHRvIGBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRWAgb3IgYFJ1bkJ1bmRsZVRhc2suTUFOVUFMYC5cbiAgICpcbiAgICogQHNlZSBBZGRCdW5kbGVPcHRpb25zLmJ1bmRsZUNvbXBpbGVkUmVzdWx0c1xuICAgKlxuICAgKiBAZGVmYXVsdCBSdW5CdW5kbGVUYXNrLlBSRV9DT01QSUxFXG4gICAqL1xuICByZWFkb25seSBydW5CdW5kbGVUYXNrPzogUnVuQnVuZGxlVGFzaztcblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCBkb3QpIGFuZCBsb2FkZXJzIHRvIHVzZSBmb3IgdGhpcyBmaWxlIHR5cGUuXG4gICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQWRkcyBzdXBwb3J0IGZvciBidW5kbGluZyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGludG8gYVxuICogc2luZ2xlIGZpbGUuIEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBhbHNvIHN1cHBvcnRzIGJ1bmRsaW5nIHdlYnNpdGVzLlxuICovXG5leHBvcnQgY2xhc3MgQnVuZGxlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBgQnVuZGxlcmAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZlxuICAgKiB0aGVyZSBpcyBubyBCdW5kbGVyLlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdFxuICAgKiBAcmV0dXJucyBBIGJ1bmRsZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEJ1bmRsZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzQnVuZGxlciA9IChvOiBDb21wb25lbnQpOiBvIGlzIEJ1bmRsZXIgPT4gbyBpbnN0YW5jZW9mIEJ1bmRsZXI7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzQnVuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGBlc2J1aWxkYCAoaWYgZGVmaW5lZCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXNidWlsZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUm9vdCBidW5kbGUgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJ1bmRsZWRpcjogc3RyaW5nO1xuXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2sgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcnVuQnVuZGxlVGFzaz86IFJ1bkJ1bmRsZVRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBgQnVuZGxlcmAuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBCdW5kbGVyT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmVzYnVpbGRWZXJzaW9uID0gb3B0aW9ucy5lc2J1aWxkVmVyc2lvbjtcbiAgICB0aGlzLmJ1bmRsZWRpciA9IG9wdGlvbnMuYXNzZXRzRGlyID8/IFwiYXNzZXRzXCI7XG4gICAgdGhpcy5sb2FkZXJzID0gb3B0aW9ucy5sb2FkZXJzO1xuXG4gICAgdGhpcy5ydW5CdW5kbGVUYXNrID0gb3B0aW9ucy5ydW5CdW5kbGVUYXNrID8/IFJ1bkJ1bmRsZVRhc2suUFJFX0NPTVBJTEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBvciBjcmVhdGVzIHRoZSBzaW5nbGV0b24gXCJidW5kbGVcIiB0YXNrIG9mIHRoZSBwcm9qZWN0LlxuICAgKlxuICAgKiBJZiB0aGUgcHJvamVjdCBkb2Vzbid0IGhhdmUgYSBcImJ1bmRsZVwiIHRhc2ssIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgc3Bhd25lZFxuICAgKiBkdXJpbmcgdGhlIHByZS1jb21waWxlIHBoYXNlLlxuICAgKi9cbiAgcHVibGljIGdldCBidW5kbGVUYXNrKCk6IFRhc2sge1xuICAgIGlmICghdGhpcy5fdGFzaykge1xuICAgICAgdGhpcy5hZGRCdW5kbGluZ1N1cHBvcnQoKTtcbiAgICAgIHRoaXMuX3Rhc2sgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayhcImJ1bmRsZVwiLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByZXBhcmUgYXNzZXRzXCIsXG4gICAgICB9KTtcblxuICAgICAgLy8gaW5zdGFsbCB0aGUgYnVuZGxlIHRhc2sgaW50byB0aGUgcHJlLWNvbXBpbGUgcGhhc2UuXG4gICAgICBpZiAodGhpcy5ydW5CdW5kbGVUYXNrID09PSBSdW5CdW5kbGVUYXNrLlBSRV9DT01QSUxFKSB7XG4gICAgICAgIHRoaXMucHJvamVjdC5wcmVDb21waWxlVGFzay5zcGF3bih0aGlzLl90YXNrKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5ydW5CdW5kbGVUYXNrID09PSBSdW5CdW5kbGVUYXNrLlBPU1RfQ09NUElMRSkge1xuICAgICAgICB0aGlzLnByb2plY3QucG9zdENvbXBpbGVUYXNrLnNwYXduKHRoaXMuX3Rhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl90YXNrO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXNrIHRvIHRoZSBwcm9qZWN0IHdoaWNoIGJ1bmRsZXMgYSBzcGVjaWZpYyBlbnRyeXBvaW50IGFuZCBhbGwgb2ZcbiAgICogaXRzIGRlcGVuZGVuY2llcyBpbnRvIGEgc2luZ2xlIGphdmFzY3JpcHQgb3V0cHV0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbnRyeXBvaW50IFRoZSByZWxhdGl2ZSBwYXRoIG9mIHRoZSBhcnRpZmFjdCB3aXRoaW4gdGhlIHByb2plY3RcbiAgICogQHBhcmFtIG9wdGlvbnMgQnVuZGxpbmcgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZEJ1bmRsZShlbnRyeXBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEFkZEJ1bmRsZU9wdGlvbnMpOiBCdW5kbGUge1xuICAgIGNvbnN0IG5hbWUgPSByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQpO1xuXG4gICAgY29uc3Qgb3V0ZGlyID0gcGF0aC5wb3NpeC5qb2luKHRoaXMuYnVuZGxlZGlyLCBuYW1lKTtcbiAgICBjb25zdCBvdXRmaWxlID0gcGF0aC5wb3NpeC5qb2luKG91dGRpciwgb3B0aW9ucy5vdXRmaWxlID8/IFwiaW5kZXguanNcIik7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIFwiZXNidWlsZFwiLFxuICAgICAgXCItLWJ1bmRsZVwiLFxuICAgICAgZW50cnlwb2ludCxcbiAgICAgIGAtLXRhcmdldD1cIiR7b3B0aW9ucy50YXJnZXR9XCJgLFxuICAgICAgYC0tcGxhdGZvcm09XCIke29wdGlvbnMucGxhdGZvcm19XCJgLFxuICAgICAgYC0tb3V0ZmlsZT1cIiR7b3V0ZmlsZX1cImAsXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLnRzY29uZmlnUGF0aCkge1xuICAgICAgYXJncy5wdXNoKGAtLXRzY29uZmlnPVwiJHtvcHRpb25zLnRzY29uZmlnUGF0aH1cImApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgeCBvZiBvcHRpb25zLmV4dGVybmFscyA/PyBbXSkge1xuICAgICAgYXJncy5wdXNoKGAtLWV4dGVybmFsOiR7eH1gKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zb3VyY2VtYXAgfHwgb3B0aW9ucy5zb3VyY2VNYXBNb2RlKSB7XG4gICAgICBjb25zdCBzb3VyY2VNYXBNb2RlID0gb3B0aW9ucy5zb3VyY2VNYXBNb2RlID8/IFNvdXJjZU1hcE1vZGUuREVGQVVMVDtcbiAgICAgIGNvbnN0IHNvdXJjZU1hcFZhbHVlID1cbiAgICAgICAgc291cmNlTWFwTW9kZSA9PT0gU291cmNlTWFwTW9kZS5ERUZBVUxUXG4gICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgOiBgPSR7b3B0aW9ucy5zb3VyY2VNYXBNb2RlfWA7XG4gICAgICBhcmdzLnB1c2goYC0tc291cmNlbWFwJHtzb3VyY2VNYXBWYWx1ZX1gKTtcblxuICAgICAgaWYgKG9wdGlvbnMuc291cmNlc0NvbnRlbnQgPT09IHRydWUpIHtcbiAgICAgICAgYXJncy5wdXNoKGAtLXNvdXJjZXMtY29udGVudD0ke29wdGlvbnMuc291cmNlc0NvbnRlbnR9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG4gICAgaWYgKGZvcm1hdCkge1xuICAgICAgYXJncy5wdXNoKGAtLWZvcm1hdD0ke2Zvcm1hdH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkZXJzID1cbiAgICAgIChvcHRpb25zLmxvYWRlcnMgPz8gZmFsc2UpID8gb3B0aW9ucy5sb2FkZXJzIDogKHRoaXMubG9hZGVycyA/PyBmYWxzZSk7XG4gICAgaWYgKGxvYWRlcnMpIHtcbiAgICAgIGZvciAobGV0IFtleHRlbnNpb24sIGxvYWRlcl0gb2YgT2JqZWN0LmVudHJpZXMobG9hZGVycykpIHtcbiAgICAgICAgYXJncy5wdXNoKGAtLWxvYWRlcjouJHtleHRlbnNpb259PSR7bG9hZGVyfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlZmluZXMgPSBPYmplY3QuZW50cmllcyhvcHRpb25zLmRlZmluZSA/PyB7fSk7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZGVmaW5lcykge1xuICAgICAgYXJncy5wdXNoKGAtLWRlZmluZToke2tleX09JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWluaWZ5KSB7XG4gICAgICBhcmdzLnB1c2goXCItLW1pbmlmeVwiKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dMZXZlbCkge1xuICAgICAgYXJncy5wdXNoKGAtLWxvZy1sZXZlbD0ke29wdGlvbnMubG9nTGV2ZWx9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmtlZXBOYW1lcykge1xuICAgICAgYXJncy5wdXNoKFwiLS1rZWVwLW5hbWVzXCIpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5tZXRhZmlsZSkge1xuICAgICAgYXJncy5wdXNoKGAtLW1ldGFmaWxlPSR7cGF0aEpvaW4ob3V0ZGlyLCBcImluZGV4Lm1ldGEuanNvblwiKX1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYmFubmVyKSB7XG4gICAgICBhcmdzLnB1c2goYC0tYmFubmVyOmpzPSR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy5iYW5uZXIpfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5mb290ZXIpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1mb290ZXI6anM9JHtKU09OLnN0cmluZ2lmeShvcHRpb25zLmZvb3Rlcil9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1haW5GaWVsZHMpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1tYWluLWZpZWxkcz0ke29wdGlvbnMubWFpbkZpZWxkcy5qb2luKFwiLFwiKX1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuaW5qZWN0KSB7XG4gICAgICBhcmdzLnB1c2goLi4ub3B0aW9ucy5pbmplY3QubWFwKChpKSA9PiBgLS1pbmplY3Q6JHtpfWApKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZXNidWlsZEFyZ3MpIHtcbiAgICAgIGNvbnN0IHN1YkFyZ3MgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zLmVzYnVpbGRBcmdzKSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICBzdWJBcmdzLnB1c2goa2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHN1YkFyZ3MucHVzaChgJHtrZXl9PVwiJHt2YWx1ZX1cImApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFyZ3MucHVzaChzdWJBcmdzLmpvaW4oXCIgXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBidW5kbGVUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soYGJ1bmRsZToke25hbWV9YCwge1xuICAgICAgZGVzY3JpcHRpb246IGBDcmVhdGUgYSBKYXZhU2NyaXB0IGJ1bmRsZSBmcm9tICR7ZW50cnlwb2ludH1gLFxuICAgICAgZXhlYzogYXJncy5qb2luKFwiIFwiKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVuZGxlVGFzay5zcGF3bihidW5kbGVUYXNrKTtcblxuICAgIGlmIChvcHRpb25zLmV4ZWN1dGFibGUgPz8gZmFsc2UpIHtcbiAgICAgIGJ1bmRsZVRhc2suZXhlYyhgY2htb2QgK3ggJHtvdXRmaWxlfWApO1xuICAgIH1cblxuICAgIGxldCB3YXRjaFRhc2s7XG4gICAgY29uc3Qgd2F0Y2ggPSBvcHRpb25zLndhdGNoVGFzayA/PyB0cnVlO1xuICAgIGlmICh3YXRjaCkge1xuICAgICAgd2F0Y2hUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soYGJ1bmRsZToke25hbWV9OndhdGNoYCwge1xuICAgICAgICBkZXNjcmlwdGlvbjogYENvbnRpbnVvdXNseSB1cGRhdGUgdGhlIEphdmFTY3JpcHQgYnVuZGxlIGZyb20gJHtlbnRyeXBvaW50fWAsXG4gICAgICAgIGV4ZWM6IGAke2FyZ3Muam9pbihcIiBcIil9IC0td2F0Y2hgLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ1bmRsZVRhc2s6IGJ1bmRsZVRhc2ssXG4gICAgICB3YXRjaFRhc2s6IHdhdGNoVGFzayxcbiAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgb3V0ZmlsZTogb3V0ZmlsZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBidW5kbGluZyBzdXBwb3J0IHRvIGEgcHJvamVjdC4gVGhpcyBpcyBjYWxsZWQgaW1wbGljaXRseSB3aGVuXG4gICAqIGBidW5kbGVUYXNrYCBpcyByZWZlcmVuY2VkIGZpcnN0LiBJdCBhZGRzIHRoZSBkZXBlbmRlbmN5IG9uIGBlc2J1aWxkYCxcbiAgICogZ2l0aWdub3JlL25wbWlnbm9yZSwgZXRjLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRCdW5kbGluZ1N1cHBvcnQoKSB7XG4gICAgY29uc3QgaWdub3JlRW50cnkgPSBgLyR7dGhpcy5idW5kbGVkaXJ9L2A7XG4gICAgdGhpcy5wcm9qZWN0LmFkZEdpdElnbm9yZShpZ25vcmVFbnRyeSk7XG4gICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYCEke2lnbm9yZUVudHJ5fWApOyAvLyBpbmNsdWRlIGluIHRhcmJhbGxcbiAgICBjb25zdCBkZXAgPSB0aGlzLmVzYnVpbGRWZXJzaW9uXG4gICAgICA/IGBlc2J1aWxkQCR7dGhpcy5lc2J1aWxkVmVyc2lvbn1gXG4gICAgICA6IFwiZXNidWlsZFwiO1xuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koZGVwLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdW5kbGUge1xuICAvKipcbiAgICogVGhlIHRhc2sgdGhhdCBwcm9kdWNlcyB0aGlzIGJ1bmRsZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsZVRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBcIndhdGNoXCIgdGFzayBmb3IgdGhpcyBidW5kbGUuXG4gICAqL1xuICByZWFkb25seSB3YXRjaFRhc2s/OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBvZiB0aGUgb3V0cHV0IGZpbGUgKHJlbGF0aXZlIHRvIHByb2plY3Qgcm9vdCkuXG4gICAqL1xuICByZWFkb25seSBvdXRmaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhc2UgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYnVuZGxpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFlvdSBjYW4gbWFyayBhIGZpbGUgb3IgYSBwYWNrYWdlIGFzIGV4dGVybmFsIHRvIGV4Y2x1ZGUgaXQgZnJvbSB5b3VyIGJ1aWxkLlxuICAgKiBJbnN0ZWFkIG9mIGJlaW5nIGJ1bmRsZWQsIHRoZSBpbXBvcnQgd2lsbCBiZSBwcmVzZXJ2ZWQgKHVzaW5nIHJlcXVpcmUgZm9yXG4gICAqIHRoZSBpaWZlIGFuZCBjanMgZm9ybWF0cyBhbmQgdXNpbmcgaW1wb3J0IGZvciB0aGUgZXNtIGZvcm1hdCkgYW5kIHdpbGwgYmVcbiAgICogZXZhbHVhdGVkIGF0IHJ1biB0aW1lIGluc3RlYWQuXG4gICAqXG4gICAqIFRoaXMgaGFzIHNldmVyYWwgdXNlcy4gRmlyc3Qgb2YgYWxsLCBpdCBjYW4gYmUgdXNlZCB0byB0cmltIHVubmVjZXNzYXJ5XG4gICAqIGNvZGUgZnJvbSB5b3VyIGJ1bmRsZSBmb3IgYSBjb2RlIHBhdGggdGhhdCB5b3Uga25vdyB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkLlxuICAgKiBGb3IgZXhhbXBsZSwgYSBwYWNrYWdlIG1heSBjb250YWluIGNvZGUgdGhhdCBvbmx5IHJ1bnMgaW4gbm9kZSBidXQgeW91IHdpbGxcbiAgICogb25seSBiZSB1c2luZyB0aGF0IHBhY2thZ2UgaW4gdGhlIGJyb3dzZXIuIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gaW1wb3J0XG4gICAqIGNvZGUgaW4gbm9kZSBhdCBydW4gdGltZSBmcm9tIGEgcGFja2FnZSB0aGF0IGNhbm5vdCBiZSBidW5kbGVkLiBGb3JcbiAgICogZXhhbXBsZSwgdGhlIGZzZXZlbnRzIHBhY2thZ2UgY29udGFpbnMgYSBuYXRpdmUgZXh0ZW5zaW9uLCB3aGljaCBlc2J1aWxkXG4gICAqIGRvZXNuJ3Qgc3VwcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgc291cmNlIG1hcCBpbiB0aGUgYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlbWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW4gYWRkaXRpb24gdG8gdGhlIGBidW5kbGU6eHl6YCB0YXNrLCBjcmVhdGVzIGBidW5kbGU6eHl6OndhdGNoYCB0YXNrIHdoaWNoIHdpbGxcbiAgICogaW52b2tlIHRoZSBzYW1lIGVzYnVpbGQgY29tbWFuZCB3aXRoIHRoZSBgLS13YXRjaGAgZmxhZy4gVGhpcyBjYW4gYmUgdXNlZFxuICAgKiB0byBjb250aW51c291bHkgd2F0Y2ggZm9yIGNoYW5nZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoVGFzaz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGFkZEJ1bmRsZSgpYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRCdW5kbGVPcHRpb25zIGV4dGVuZHMgQnVuZGxpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIGVzYnVpbGQgdGFyZ2V0LlxuICAgKlxuICAgKiBAZXhhbXBsZSBcIm5vZGUxMlwiXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IHN0cmluZztcblxuICAvKipcbiAgICogZXNidWlsZCBwbGF0Zm9ybS5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJub2RlXCJcbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1bmRsZXIgb3V0cHV0IHBhdGggcmVsYXRpdmUgdG8gdGhlIGFzc2V0J3Mgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICogQGRlZmF1bHQgXCJpbmRleC5qc1wiXG4gICAqL1xuICByZWFkb25seSBvdXRmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrIHRoZSBvdXRwdXQgZmlsZSBhcyBleGVjdXRhYmxlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSB0c2NvbmZpZy5qc29uIGZpbGUgdG8gdXNlIGZvciBidW5kbGluZ1xuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgZmlsZSBleHRlbnNpb25zICh3aXRob3V0IGRvdCkgYW5kIGxvYWRlcnMgdG8gdXNlIGZvciB0aGlzIGZpbGUgdHlwZS5cbiAgICogTG9hZGVycyBhcmUgYXBwZW5kZWQgdG8gdGhlIGVzYnVpbGQgY29tbWFuZCBieSBgLS1sb2FkZXI6LmV4dGVuc2lvbj1sb2FkZXJgXG4gICAqL1xuICByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogT3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IGNhbiBiZSBjb25maWd1cmVkOiBgXCJpaWZlXCJgLCBgXCJjanNcImAsIGFuZCBgXCJlc21cImAuXG4gICAqXG4gICAqIElmIG5vdCBzZXQgKGB1bmRlZmluZWRgKSwgZXNidWlsZCBwaWNrcyBhbiBvdXRwdXQgZm9ybWF0IGZvciB5b3UgYmFzZWQgb24gYHBsYXRmb3JtYDpcbiAgICogLSBgXCJjanNcImAgaWYgYHBsYXRmb3JtYCBpcyBgXCJub2RlXCJgXG4gICAqIC0gYFwiaWlmZVwiYCBpZiBgcGxhdGZvcm1gIGlzIGBcImJyb3dzZXJcImBcbiAgICogLSBgXCJlc21cImAgaWYgYHBsYXRmb3JtYCBpcyBgXCJuZXV0cmFsXCJgXG4gICAqXG4gICAqIE5vdGU6IElmIG1ha2luZyBhIGJ1bmRsZSB0byBydW4gdW5kZXIgbm9kZSB3aXRoIEVTTSwgc2V0IGBmb3JtYXRgIHRvIGBcImVzbVwiYCBpbnN0ZWFkIG9mIHNldHRpbmcgYHBsYXRmb3JtYCB0byBgXCJuZXV0cmFsXCJgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICpcbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jZm9ybWF0XG4gICAqL1xuXG4gIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBtaW5pZnkgZmlsZXMgd2hlbiBidW5kbGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmlmeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvdXJjZSBtYXAgbW9kZSB0byBiZSB1c2VkIHdoZW4gYnVuZGxpbmcuXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3NvdXJjZW1hcFxuICAgKlxuICAgKiBAZGVmYXVsdCBTb3VyY2VNYXBNb2RlLkRFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcE1vZGU/OiBTb3VyY2VNYXBNb2RlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgb3JpZ2luYWwgc291cmNlIGNvZGUgaW4gc291cmNlIG1hcHMgd2hlbiBidW5kbGluZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jc291cmNlcy1jb250ZW50XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZXNDb250ZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTG9nIGxldmVsIGZvciBlc2J1aWxkLiBUaGlzIGlzIGFsc28gcHJvcGFnYXRlZCB0byB0aGUgcGFja2FnZSBtYW5hZ2VyIGFuZFxuICAgKiBhcHBsaWVzIHRvIGl0cyBzcGVjaWZpYyBpbnN0YWxsIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IExvZ0xldmVsLldBUk5JTkdcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0xldmVsPzogQnVuZGxlTG9nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHJlc2VydmUgdGhlIG9yaWdpbmFsIGBuYW1lYCB2YWx1ZXMgZXZlbiBpbiBtaW5pZmllZCBjb2RlLlxuICAgKlxuICAgKiBJbiBKYXZhU2NyaXB0IHRoZSBgbmFtZWAgcHJvcGVydHkgb24gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIGRlZmF1bHRzIHRvIGFcbiAgICogbmVhcmJ5IGlkZW50aWZpZXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBIb3dldmVyLCBtaW5pZmljYXRpb24gcmVuYW1lcyBzeW1ib2xzIHRvIHJlZHVjZSBjb2RlIHNpemUgYW5kIGJ1bmRsaW5nXG4gICAqIHNvbWV0aW1lcyBuZWVkIHRvIHJlbmFtZSBzeW1ib2xzIHRvIGF2b2lkIGNvbGxpc2lvbnMuIFRoYXQgY2hhbmdlcyB2YWx1ZSBvZlxuICAgKiB0aGUgYG5hbWVgIHByb3BlcnR5IGZvciBtYW55IG9mIHRoZXNlIGNhc2VzLiBUaGlzIGlzIHVzdWFsbHkgZmluZSBiZWNhdXNlXG4gICAqIHRoZSBgbmFtZWAgcHJvcGVydHkgaXMgbm9ybWFsbHkgb25seSB1c2VkIGZvciBkZWJ1Z2dpbmcuIEhvd2V2ZXIsIHNvbWVcbiAgICogZnJhbWV3b3JrcyByZWx5IG9uIHRoZSBgbmFtZWAgcHJvcGVydHkgZm9yIHJlZ2lzdHJhdGlvbiBhbmQgYmluZGluZyBwdXJwb3Nlcy5cbiAgICogSWYgdGhpcyBpcyB0aGUgY2FzZSwgeW91IGNhbiBlbmFibGUgdGhpcyBvcHRpb24gdG8gcHJlc2VydmUgdGhlIG9yaWdpbmFsXG4gICAqIGBuYW1lYCB2YWx1ZXMgZXZlbiBpbiBtaW5pZmllZCBjb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkga2VlcE5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBvcHRpb24gdGVsbHMgZXNidWlsZCB0byB3cml0ZSBvdXQgYSBKU09OIGZpbGUgcmVsYXRpdmUgdG8gb3V0cHV0IGRpcmVjdG9yeSB3aXRoIG1ldGFkYXRhIGFib3V0IHRoZSBidWlsZC5cbiAgICpcbiAgICogVGhlIG1ldGFkYXRhIGluIHRoaXMgSlNPTiBmaWxlIGZvbGxvd3MgdGhpcyBzY2hlbWEgKHNwZWNpZmllZCB1c2luZyBUeXBlU2NyaXB0IHN5bnRheCk6XG4gICAqXG4gICAqIGBgYHRleHRcbiAgICoge1xuICAgKiAgIG91dHB1dHM6IHtcbiAgICogICAgIFtwYXRoOiBzdHJpbmddOiB7XG4gICAqICAgICAgIGJ5dGVzOiBudW1iZXJcbiAgICogICAgICAgaW5wdXRzOiB7XG4gICAqICAgICAgICAgW3BhdGg6IHN0cmluZ106IHsgYnl0ZXNJbk91dHB1dDogbnVtYmVyIH1cbiAgICogICAgICAgfVxuICAgKiAgICAgICBpbXBvcnRzOiB7IHBhdGg6IHN0cmluZyB9W11cbiAgICogICAgICAgZXhwb3J0czogc3RyaW5nW11cbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIFRoaXMgZGF0YSBjYW4gdGhlbiBiZSBhbmFseXplZCBieSBvdGhlciB0b29scy4gRm9yIGV4YW1wbGUsXG4gICAqIGJ1bmRsZSBidWRkeSBjYW4gY29uc3VtZSBlc2J1aWxkJ3MgbWV0YWRhdGEgZm9ybWF0IGFuZCBnZW5lcmF0ZXMgYSB0cmVlbWFwIHZpc3VhbGl6YXRpb25cbiAgICogb2YgdGhlIG1vZHVsZXMgaW4geW91ciBidW5kbGUgYW5kIGhvdyBtdWNoIHNwYWNlIGVhY2ggb25lIHRha2VzIHVwLlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNtZXRhZmlsZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbnNlcnQgYW4gYXJiaXRyYXJ5IHN0cmluZyBhdCB0aGUgYmVnaW5uaW5nIG9mIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZm9vdGVyIHdoaWNoIGluc2VydHMgYXQgdGhlIGVuZCBpbnN0ZWFkIG9mIHRoZSBiZWdpbm5pbmcuXG4gICAqXG4gICAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCB0byBpbnNlcnQgY29tbWVudHM6XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFubmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbnNlcnQgYW4gYXJiaXRyYXJ5IHN0cmluZyBhdCB0aGUgZW5kIG9mIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gYmFubmVyIHdoaWNoIGluc2VydHMgYXQgdGhlIGJlZ2lubmluZyBpbnN0ZWFkIG9mIHRoZSBlbmQuXG4gICAqXG4gICAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCB0byBpbnNlcnQgY29tbWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb21tZW50cyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBmb290ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyc2V0IHRvIHVzZSBmb3IgZXNidWlsZCdzIG91dHB1dC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCBlc2J1aWxkJ3Mgb3V0cHV0IGlzIEFTQ0lJLW9ubHkuIEFueSBub24tQVNDSUkgY2hhcmFjdGVycyBhcmUgZXNjYXBlZFxuICAgKiB1c2luZyBiYWNrc2xhc2ggZXNjYXBlIHNlcXVlbmNlcy4gVXNpbmcgZXNjYXBlIHNlcXVlbmNlcyBtYWtlcyB0aGUgZ2VuZXJhdGVkIG91dHB1dFxuICAgKiBzbGlnaHRseSBiaWdnZXIsIGFuZCBhbHNvIG1ha2VzIGl0IGhhcmRlciB0byByZWFkLiBJZiB5b3Ugd291bGQgbGlrZSBmb3IgZXNidWlsZCB0byBwcmludFxuICAgKiB0aGUgb3JpZ2luYWwgY2hhcmFjdGVycyB3aXRob3V0IHVzaW5nIGVzY2FwZSBzZXF1ZW5jZXMsIHVzZSBgQ2hhcnNldC5VVEY4YC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jY2hhcnNldFxuICAgKiBAZGVmYXVsdCBDaGFyc2V0LkFTQ0lJXG4gICAqL1xuICByZWFkb25seSBjaGFyc2V0PzogQ2hhcnNldDtcblxuICAvKipcbiAgICogUmVwbGFjZSBnbG9iYWwgaWRlbnRpZmllcnMgd2l0aCBjb25zdGFudCBleHByZXNzaW9ucy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGB7ICdwcm9jZXNzLmVudi5ERUJVRyc6ICd0cnVlJyB9YC5cbiAgICpcbiAgICogQW5vdGhlciBleGFtcGxlLCBgeyAncHJvY2Vzcy5lbnYuQVBJX0tFWSc6IEpTT04uc3RyaW5naWZ5KCd4eHgteHh4eC14eHgnKSB9YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByZXBsYWNlbWVudHMgYXJlIG1hZGVcbiAgICovXG4gIHJlYWRvbmx5IGRlZmluZT86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3VtZW50cyB0byBwYXNzIGludG8gZXNidWlsZC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHRvIGFkZCB0aGUgWy0tbG9nLWxpbWl0XShodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jbG9nLWxpbWl0KSBmbGFnOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIHByb2plY3QuYnVuZGxlci5hZGRCdW5kbGUoXCIuL3NyYy9oZWxsby50c1wiLCB7XG4gICAqICAgcGxhdGZvcm06IFwibm9kZVwiLFxuICAgKiAgIHRhcmdldDogXCJub2RlMjJcIixcbiAgICogICBzb3VyY2VtYXA6IHRydWUsXG4gICAqICAgZm9ybWF0OiBcImVzbVwiLFxuICAgKiAgIGVzYnVpbGRBcmdzOiB7XG4gICAqICAgICBcIi0tbG9nLWxpbWl0XCI6IFwiMFwiLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGVzYnVpbGQgYXJndW1lbnRzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGVzYnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIH07XG5cbiAgLyoqXG4gICAqIEhvdyB0byBkZXRlcm1pbmUgdGhlIGVudHJ5IHBvaW50IGZvciBtb2R1bGVzLlxuICAgKiBUcnkgWydtb2R1bGUnLCAnbWFpbiddIHRvIGRlZmF1bHQgdG8gRVMgbW9kdWxlIHZlcnNpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgbWFpbkZpZWxkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSBhIGdsb2JhbCB2YXJpYWJsZSB3aXRoIGFuXG4gICAqIGltcG9ydCBmcm9tIGFub3RoZXIgZmlsZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jaW5qZWN0XG4gICAqIEBkZWZhdWx0IC0gbm8gY29kZSBpcyBpbmplY3RlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW5qZWN0Pzogc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgQnVuZGxlck9wdGlvbnMucnVuQnVuZGxlVGFza1xuICovXG5leHBvcnQgZW51bSBSdW5CdW5kbGVUYXNrIHtcbiAgLyoqXG4gICAqIERvbid0IGJ1bmRsZSBhdXRvbWF0aWNhbGx5IGFzIHBhcnQgb2YgdGhlIGJ1aWxkLlxuICAgKi9cbiAgTUFOVUFMID0gXCJtYW51YWxcIixcbiAgLyoqXG4gICAqIEJ1bmRsZSBhdXRvbWF0aWNhbGx5IGJlZm9yZSBjb21waWxhdGlvbi5cbiAgICovXG4gIFBSRV9DT01QSUxFID0gXCJwcmVfY29tcGlsZVwiLFxuICAvKipcbiAgICogQnVuZGxlIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgY29tcGlsYXRpb24uIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvXG4gICAqIGJ1bmRsZSB0aGUgY29tcGlsZWQgcmVzdWx0cy5cbiAgICpcbiAgICogVGh1cyB3aWxsIHJ1biBjb21waWxhdGlvbiB0YXNrcyAodXNpbmcgdHNjLCBldGMuKSBiZWZvcmUgcnVubmluZyBmaWxlXG4gICAqIHRocm91Z2ggYnVuZGxpbmcgc3RlcC5cbiAgICpcbiAgICogVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHVubGVzcyB5b3UgYXJlIHVzaW5nIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZXMgdGhhdFxuICAgKiBhcmUgbm90IHN1cHBvcnRlZCBieSBgZXNidWlsZGAgYnV0IGFyZSBzdXBwb3J0ZWQgYnkgdHlwZXNjcmlwdCdzIGB0c2NgXG4gICAqIGNvbXBpbGVyLiBPbmUgZXhhbXBsZSBvZiBzdWNoIGZlYXR1cmUgaXMgYGVtaXREZWNvcmF0b3JNZXRhZGF0YWAuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gSW4gYSBUeXBlU2NyaXB0IHByb2plY3Qgd2l0aCBvdXRwdXQgY29uZmlndXJlZFxuICAgKiAvLyB0byBnbyB0byB0aGUgXCJsaWJcIiBkaXJlY3Rvcnk6XG4gICAqIGNvbnN0IHByb2plY3QgPSBuZXcgVHlwZVNjcmlwdFByb2plY3Qoe1xuICAgKiAgIG5hbWU6IFwidGVzdFwiLFxuICAgKiAgIHRzY29uZmlnOiB7XG4gICAqICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICogICAgICAgb3V0RGlyOiBcImxpYlwiLFxuICAgKiAgICAgfSxcbiAgICogICB9LFxuICAgKiAgIGJ1bmRsZXJPcHRpb25zOiB7XG4gICAqICAgICAvLyBlbnN1cmUgd2UgY29tcGlsZSB3aXRoIGB0c2NgIGJlZm9yZSBidW5kbGluZ1xuICAgKiAgICAgcnVuQnVuZGxlVGFzazogUnVuQnVuZGxlVGFzay5QT1NUX0NPTVBJTEUsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIFRlbGwgdGhlIGJ1bmRsZXIgdG8gYnVuZGxlIHRoZSBjb21waWxlZCByZXN1bHRzIChmcm9tIHRoZSBcImxpYlwiIGRpcmVjdG9yeSlcbiAgICogcHJvamVjdC5idW5kbGVyLmFkZEJ1bmRsZShcIi4vbGliL2luZGV4LmpzXCIsIHtcbiAgICogICBwbGF0Zm9ybTogXCJub2RlXCIsXG4gICAqICAgdGFyZ2V0OiBcIm5vZGUyMlwiLFxuICAgKiAgIHNvdXJjZW1hcDogZmFsc2UsXG4gICAqICAgZm9ybWF0OiBcImVzbVwiLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqKi9cbiAgUE9TVF9DT01QSUxFID0gXCJwb3N0X2NvbXBpbGVcIixcbn1cblxuLyoqXG4gKiBTb3VyY2VNYXAgbW9kZSBmb3IgZXNidWlsZFxuICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jc291cmNlbWFwXG4gKi9cbmV4cG9ydCBlbnVtIFNvdXJjZU1hcE1vZGUge1xuICAvKipcbiAgICogRGVmYXVsdCBzb3VyY2VNYXAgbW9kZSAtIHdpbGwgZ2VuZXJhdGUgYSAuanMubWFwIGZpbGUgYWxvbmdzaWRlIGFueSBnZW5lcmF0ZWQgLmpzIGZpbGUgYW5kIGFkZCBhIHNwZWNpYWwgLy8jIHNvdXJjZU1hcHBpbmdVUkw9XG4gICAqIGNvbW1lbnQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgLmpzIGZpbGUgcG9pbnRpbmcgdG8gdGhlIC5qcy5tYXAgZmlsZVxuICAgKi9cbiAgREVGQVVMVCA9IFwiZGVmYXVsdFwiLFxuICAvKipcbiAgICogIEV4dGVybmFsIHNvdXJjZU1hcCBtb2RlIC0gSWYgeW91IHdhbnQgdG8gb21pdCB0aGUgc3BlY2lhbCAvLyMgc291cmNlTWFwcGluZ1VSTD0gY29tbWVudCBmcm9tIHRoZSBnZW5lcmF0ZWQgLmpzIGZpbGUgYnV0IHlvdSBzdGlsbFxuICAgKiAgd2FudCB0byBnZW5lcmF0ZSB0aGUgLmpzLm1hcCBmaWxlc1xuICAgKi9cbiAgRVhURVJOQUwgPSBcImV4dGVybmFsXCIsXG4gIC8qKlxuICAgKiBJbmxpbmUgc291cmNlTWFwIG1vZGUgLSBJZiB5b3Ugd2FudCB0byBpbnNlcnQgdGhlIGVudGlyZSBzb3VyY2UgbWFwIGludG8gdGhlIC5qcyBmaWxlIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhIHNlcGFyYXRlIC5qcy5tYXAgZmlsZVxuICAgKi9cbiAgSU5MSU5FID0gXCJpbmxpbmVcIixcbiAgLyoqXG4gICAqIEJvdGggc291cmNlTWFwIG1vZGUgLSBJZiB5b3Ugd2FudCB0byBoYXZlIHRoZSBlZmZlY3Qgb2YgYm90aCBpbmxpbmUgYW5kIGV4dGVybmFsIHNpbXVsdGFuZW91c2x5XG4gICAqL1xuICBCT1RIID0gXCJib3RoXCIsXG59XG5cbi8qKlxuICogQ2hhcnNldCBmb3IgZXNidWlsZCdzIG91dHB1dFxuICovXG5leHBvcnQgZW51bSBDaGFyc2V0IHtcbiAgLyoqXG4gICAqIEFTQ0lJXG4gICAqXG4gICAqIEFueSBub24tQVNDSUkgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB1c2luZyBiYWNrc2xhc2ggZXNjYXBlIHNlcXVlbmNlc1xuICAgKi9cbiAgQVNDSUkgPSBcImFzY2lpXCIsXG5cbiAgLyoqXG4gICAqIFVURi04XG4gICAqXG4gICAqIEtlZXAgb3JpZ2luYWwgY2hhcmFjdGVycyB3aXRob3V0IHVzaW5nIGVzY2FwZSBzZXF1ZW5jZXNcbiAgICovXG4gIFVURjggPSBcInV0ZjhcIixcbn1cblxuLyoqXG4gKiBMb2cgbGV2ZWxzIGZvciBlc2J1aWxkIGFuZCBwYWNrYWdlIG1hbmFnZXJzJyBpbnN0YWxsIGNvbW1hbmRzLlxuICovXG5leHBvcnQgZW51bSBCdW5kbGVMb2dMZXZlbCB7XG4gIC8qKiBTaG93IGV2ZXJ5dGhpbmcgKi9cbiAgVkVSQk9TRSA9IFwidmVyYm9zZVwiLFxuICAvKiogU2hvdyBldmVyeXRoaW5nIGZyb20gaW5mbyBhbmQgc29tZSBhZGRpdGlvbmFsIG1lc3NhZ2VzIGZvciBkZWJ1Z2dpbmcgKi9cbiAgREVCVUcgPSBcImRlYnVnXCIsXG4gIC8qKiBTaG93IHdhcm5pbmdzLCBlcnJvcnMsIGFuZCBhbiBvdXRwdXQgZmlsZSBzdW1tYXJ5ICovXG4gIElORk8gPSBcImluZm9cIixcbiAgLyoqIFNob3cgd2FybmluZ3MgYW5kIGVycm9ycyAqL1xuICBXQVJOSU5HID0gXCJ3YXJuaW5nXCIsXG4gIC8qKiBTaG93IGVycm9ycyBvbmx5ICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogU2hvdyBub3RoaW5nICovXG4gIFNJTEVOVCA9IFwic2lsZW50XCIsXG59XG4iXX0=
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qYXZhc2NyaXB0L2J1bmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QiwrQkFBd0M7QUFDeEMsaUNBQTBDO0FBQzFDLDRDQUF5QztBQUN6QyxrREFBaUQ7QUEyQ2pEOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTOztJQUNwQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ2EsY0FBYyxDQUFxQjtJQUVuRDs7T0FFRztJQUNhLFNBQVMsQ0FBUztJQUUxQixLQUFLLENBQW1CO0lBQ2YsYUFBYSxDQUFpQjtJQUM5QixPQUFPLENBQTZCO0lBRXJEOztPQUVHO0lBQ0gsWUFBWSxPQUFnQixFQUFFLFVBQTBCLEVBQUU7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRS9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsVUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEtB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RztBQUNILElBQVksY0FhWDtBQWJELFdBQVksY0FBYztJQUN4QixzQkFBc0I7SUFDdEIscUNBQW1CLENBQUE7SUFDbkIsMkVBQTJFO0lBQzNFLGlDQUFlLENBQUE7SUFDZix3REFBd0Q7SUFDeEQsK0JBQWEsQ0FBQTtJQUNiLCtCQUErQjtJQUMvQixxQ0FBbUIsQ0FBQTtJQUNuQix1QkFBdUI7SUFDdkIsaUNBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBYlcsY0FBYyw4QkFBZCxjQUFjLFFBYXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgam9pbiBhcyBwYXRoSm9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyByZW5kZXJCdW5kbGVOYW1lIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGVwZW5kZW5jeVR5cGUgfSBmcm9tIFwiLi4vZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcblxuLy8gUGFydHMgb2YgdGhpcyBmaWxlIGluc3BpcmVkIGJ5IEBhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1xuLy8gICBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9jM2M3NzFjNmY2ZjY3OTBmMjI5OGE4NWE1NDliZGVkNjQwZDJlMzViL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzL2xpYi9idW5kbGluZy50cyNMMTk1XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEJ1bmRsZXJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBgZXNidWlsZGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3BlY2lmaWMgdmVyc2lvbiAoaW1wbGllcyBsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBlc2J1aWxkVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3V0cHV0IGRpcmVjdG9yeSBmb3IgYWxsIGJ1bmRsZXMuXG4gICAqIEBkZWZhdWx0IFwiYXNzZXRzXCJcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0c0Rpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQ2hvb3NlIHdoaWNoIHBoYXNlIChpZiBhbnkpIHRvIGFkZCB0aGUgYGJ1bmRsZWAgY29tbWFuZCB0by5cbiAgICpcbiAgICogTm90ZTogSWYgdXNpbmcgYGFkZEJ1bmRsZSgpYCB3aXRoIHRoZSBgYnVuZGxlQ29tcGlsZWRSZXN1bHRzYCwgdGhpcyBvcHRpb25cbiAgICogbXVzdCBiZSBzZXQgdG8gYFJ1bkJ1bmRsZVRhc2suUE9TVF9DT01QSUxFYCBvciBgUnVuQnVuZGxlVGFzay5NQU5VQUxgLlxuICAgKlxuICAgKiBAc2VlIEFkZEJ1bmRsZU9wdGlvbnMuYnVuZGxlQ29tcGlsZWRSZXN1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IFJ1bkJ1bmRsZVRhc2suUFJFX0NPTVBJTEVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bkJ1bmRsZVRhc2s/OiBSdW5CdW5kbGVUYXNrO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgZmlsZSBleHRlbnNpb25zICh3aXRob3V0IGRvdCkgYW5kIGxvYWRlcnMgdG8gdXNlIGZvciB0aGlzIGZpbGUgdHlwZS5cbiAgICogTG9hZGVycyBhcmUgYXBwZW5kZWQgdG8gdGhlIGVzYnVpbGQgY29tbWFuZCBieSBgLS1sb2FkZXI6LmV4dGVuc2lvbj1sb2FkZXJgXG4gICAqL1xuICByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBBZGRzIHN1cHBvcnQgZm9yIGJ1bmRsaW5nIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaW50byBhXG4gKiBzaW5nbGUgZmlsZS4gSW4gdGhlIGZ1dHVyZSwgdGhpcyB3aWxsIGFsc28gc3VwcG9ydHMgYnVuZGxpbmcgd2Vic2l0ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBCdW5kbGVyYCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBwcm9qZWN0IG9yIGB1bmRlZmluZWRgIGlmXG4gICAqIHRoZXJlIGlzIG5vIEJ1bmRsZXIuXG4gICAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0XG4gICAqIEByZXR1cm5zIEEgYnVuZGxlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogQnVuZGxlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNCdW5kbGVyID0gKG86IENvbXBvbmVudCk6IG8gaXMgQnVuZGxlciA9PiBvIGluc3RhbmNlb2YgQnVuZGxlcjtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNCdW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgYGVzYnVpbGRgIChpZiBkZWZpbmVkKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSb290IGJ1bmRsZSBkaXJlY3RvcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVuZGxlZGlyOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfdGFzazogVGFzayB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBydW5CdW5kbGVUYXNrPzogUnVuQnVuZGxlVGFzaztcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGBCdW5kbGVyYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJ1bmRsZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuZXNidWlsZFZlcnNpb24gPSBvcHRpb25zLmVzYnVpbGRWZXJzaW9uO1xuICAgIHRoaXMuYnVuZGxlZGlyID0gb3B0aW9ucy5hc3NldHNEaXIgPz8gXCJhc3NldHNcIjtcbiAgICB0aGlzLmxvYWRlcnMgPSBvcHRpb25zLmxvYWRlcnM7XG5cbiAgICB0aGlzLnJ1bkJ1bmRsZVRhc2sgPSBvcHRpb25zLnJ1bkJ1bmRsZVRhc2sgPz8gUnVuQnVuZGxlVGFzay5QUkVfQ09NUElMRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG9yIGNyZWF0ZXMgdGhlIHNpbmdsZXRvbiBcImJ1bmRsZVwiIHRhc2sgb2YgdGhlIHByb2plY3QuXG4gICAqXG4gICAqIElmIHRoZSBwcm9qZWN0IGRvZXNuJ3QgaGF2ZSBhIFwiYnVuZGxlXCIgdGFzaywgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCBzcGF3bmVkXG4gICAqIGR1cmluZyB0aGUgcHJlLWNvbXBpbGUgcGhhc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJ1bmRsZVRhc2soKTogVGFzayB7XG4gICAgaWYgKCF0aGlzLl90YXNrKSB7XG4gICAgICB0aGlzLmFkZEJ1bmRsaW5nU3VwcG9ydCgpO1xuICAgICAgdGhpcy5fdGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFwiYnVuZGxlXCIsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUHJlcGFyZSBhc3NldHNcIixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpbnN0YWxsIHRoZSBidW5kbGUgdGFzayBpbnRvIHRoZSBwcmUtY29tcGlsZSBwaGFzZS5cbiAgICAgIGlmICh0aGlzLnJ1bkJ1bmRsZVRhc2sgPT09IFJ1bkJ1bmRsZVRhc2suUFJFX0NPTVBJTEUpIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLnNwYXduKHRoaXMuX3Rhc2spO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJ1bkJ1bmRsZVRhc2sgPT09IFJ1bkJ1bmRsZVRhc2suUE9TVF9DT01QSUxFKSB7XG4gICAgICAgIHRoaXMucHJvamVjdC5wb3N0Q29tcGlsZVRhc2suc3Bhd24odGhpcy5fdGFzayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2s7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhc2sgdG8gdGhlIHByb2plY3Qgd2hpY2ggYnVuZGxlcyBhIHNwZWNpZmljIGVudHJ5cG9pbnQgYW5kIGFsbCBvZlxuICAgKiBpdHMgZGVwZW5kZW5jaWVzIGludG8gYSBzaW5nbGUgamF2YXNjcmlwdCBvdXRwdXQgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGVudHJ5cG9pbnQgVGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIGFydGlmYWN0IHdpdGhpbiB0aGUgcHJvamVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyBCdW5kbGluZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgYWRkQnVuZGxlKGVudHJ5cG9pbnQ6IHN0cmluZywgb3B0aW9uczogQWRkQnVuZGxlT3B0aW9ucyk6IEJ1bmRsZSB7XG4gICAgY29uc3QgbmFtZSA9IHJlbmRlckJ1bmRsZU5hbWUoZW50cnlwb2ludCk7XG5cbiAgICBjb25zdCBvdXRkaXIgPSBwYXRoLnBvc2l4LmpvaW4odGhpcy5idW5kbGVkaXIsIG5hbWUpO1xuICAgIGNvbnN0IG91dGZpbGUgPSBwYXRoLnBvc2l4LmpvaW4ob3V0ZGlyLCBvcHRpb25zLm91dGZpbGUgPz8gXCJpbmRleC5qc1wiKTtcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgXCJlc2J1aWxkXCIsXG4gICAgICBcIi0tYnVuZGxlXCIsXG4gICAgICBlbnRyeXBvaW50LFxuICAgICAgYC0tdGFyZ2V0PVwiJHtvcHRpb25zLnRhcmdldH1cImAsXG4gICAgICBgLS1wbGF0Zm9ybT1cIiR7b3B0aW9ucy5wbGF0Zm9ybX1cImAsXG4gICAgICBgLS1vdXRmaWxlPVwiJHtvdXRmaWxlfVwiYCxcbiAgICBdO1xuXG4gICAgaWYgKG9wdGlvbnMudHNjb25maWdQYXRoKSB7XG4gICAgICBhcmdzLnB1c2goYC0tdHNjb25maWc9XCIke29wdGlvbnMudHNjb25maWdQYXRofVwiYCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB4IG9mIG9wdGlvbnMuZXh0ZXJuYWxzID8/IFtdKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZXh0ZXJuYWw6JHt4fWApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNvdXJjZW1hcCB8fCBvcHRpb25zLnNvdXJjZU1hcE1vZGUpIHtcbiAgICAgIGNvbnN0IHNvdXJjZU1hcE1vZGUgPSBvcHRpb25zLnNvdXJjZU1hcE1vZGUgPz8gU291cmNlTWFwTW9kZS5ERUZBVUxUO1xuICAgICAgY29uc3Qgc291cmNlTWFwVmFsdWUgPVxuICAgICAgICBzb3VyY2VNYXBNb2RlID09PSBTb3VyY2VNYXBNb2RlLkRFRkFVTFRcbiAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICA6IGA9JHtvcHRpb25zLnNvdXJjZU1hcE1vZGV9YDtcbiAgICAgIGFyZ3MucHVzaChgLS1zb3VyY2VtYXAke3NvdXJjZU1hcFZhbHVlfWApO1xuXG4gICAgICBpZiAob3B0aW9ucy5zb3VyY2VzQ29udGVudCA9PT0gdHJ1ZSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tc291cmNlcy1jb250ZW50PSR7b3B0aW9ucy5zb3VyY2VzQ29udGVudH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICBhcmdzLnB1c2goYC0tZm9ybWF0PSR7Zm9ybWF0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlcnMgPVxuICAgICAgKG9wdGlvbnMubG9hZGVycyA/PyBmYWxzZSkgPyBvcHRpb25zLmxvYWRlcnMgOiAodGhpcy5sb2FkZXJzID8/IGZhbHNlKTtcbiAgICBpZiAobG9hZGVycykge1xuICAgICAgZm9yIChsZXQgW2V4dGVuc2lvbiwgbG9hZGVyXSBvZiBPYmplY3QuZW50cmllcyhsb2FkZXJzKSkge1xuICAgICAgICBhcmdzLnB1c2goYC0tbG9hZGVyOi4ke2V4dGVuc2lvbn09JHtsb2FkZXJ9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVmaW5lcyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZGVmaW5lID8/IHt9KTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBkZWZpbmVzKSB7XG4gICAgICBhcmdzLnB1c2goYC0tZGVmaW5lOiR7a2V5fT0ke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5taW5pZnkpIHtcbiAgICAgIGFyZ3MucHVzaChcIi0tbWluaWZ5XCIpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ0xldmVsKSB7XG4gICAgICBhcmdzLnB1c2goYC0tbG9nLWxldmVsPSR7b3B0aW9ucy5sb2dMZXZlbH1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMua2VlcE5hbWVzKSB7XG4gICAgICBhcmdzLnB1c2goXCItLWtlZXAtbmFtZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm1ldGFmaWxlKSB7XG4gICAgICBhcmdzLnB1c2goYC0tbWV0YWZpbGU9JHtwYXRoSm9pbihvdXRkaXIsIFwiaW5kZXgubWV0YS5qc29uXCIpfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5iYW5uZXIpIHtcbiAgICAgIGFyZ3MucHVzaChgLS1iYW5uZXI6anM9JHtKU09OLnN0cmluZ2lmeShvcHRpb25zLmJhbm5lcil9YCk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZvb3Rlcikge1xuICAgICAgYXJncy5wdXNoKGAtLWZvb3Rlcjpqcz0ke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMuZm9vdGVyKX1gKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubWFpbkZpZWxkcykge1xuICAgICAgYXJncy5wdXNoKGAtLW1haW4tZmllbGRzPSR7b3B0aW9ucy5tYWluRmllbGRzLmpvaW4oXCIsXCIpfWApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5pbmplY3QpIHtcbiAgICAgIGFyZ3MucHVzaCguLi5vcHRpb25zLmluamVjdC5tYXAoKGkpID0+IGAtLWluamVjdDoke2l9YCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lc2J1aWxkQXJncykge1xuICAgICAgY29uc3Qgc3ViQXJncyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuZXNidWlsZEFyZ3MpKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgIHN1YkFyZ3MucHVzaChrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgc3ViQXJncy5wdXNoKGAke2tleX09XCIke3ZhbHVlfVwiYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXJncy5wdXNoKHN1YkFyZ3Muam9pbihcIiBcIikpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1bmRsZVRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhgYnVuZGxlOiR7bmFtZX1gLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSBhIEphdmFTY3JpcHQgYnVuZGxlIGZyb20gJHtlbnRyeXBvaW50fWAsXG4gICAgICBleGVjOiBhcmdzLmpvaW4oXCIgXCIpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5idW5kbGVUYXNrLnNwYXduKGJ1bmRsZVRhc2spO1xuXG4gICAgaWYgKG9wdGlvbnMuZXhlY3V0YWJsZSA/PyBmYWxzZSkge1xuICAgICAgYnVuZGxlVGFzay5leGVjQXJncyhbXCJjaG1vZFwiLCBcIit4XCIsIG91dGZpbGVdKTtcbiAgICB9XG5cbiAgICBsZXQgd2F0Y2hUYXNrO1xuICAgIGNvbnN0IHdhdGNoID0gb3B0aW9ucy53YXRjaFRhc2sgPz8gdHJ1ZTtcbiAgICBpZiAod2F0Y2gpIHtcbiAgICAgIHdhdGNoVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfTp3YXRjaGAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBDb250aW51b3VzbHkgdXBkYXRlIHRoZSBKYXZhU2NyaXB0IGJ1bmRsZSBmcm9tICR7ZW50cnlwb2ludH1gLFxuICAgICAgICBleGVjOiBgJHthcmdzLmpvaW4oXCIgXCIpfSAtLXdhdGNoYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBidW5kbGVUYXNrOiBidW5kbGVUYXNrLFxuICAgICAgd2F0Y2hUYXNrOiB3YXRjaFRhc2ssXG4gICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgIG91dGZpbGU6IG91dGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYnVuZGxpbmcgc3VwcG9ydCB0byBhIHByb2plY3QuIFRoaXMgaXMgY2FsbGVkIGltcGxpY2l0bHkgd2hlblxuICAgKiBgYnVuZGxlVGFza2AgaXMgcmVmZXJlbmNlZCBmaXJzdC4gSXQgYWRkcyB0aGUgZGVwZW5kZW5jeSBvbiBgZXNidWlsZGAsXG4gICAqIGdpdGlnbm9yZS9ucG1pZ25vcmUsIGV0Yy5cbiAgICovXG4gIHByaXZhdGUgYWRkQnVuZGxpbmdTdXBwb3J0KCkge1xuICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgIHRoaXMucHJvamVjdC5hZGRHaXRJZ25vcmUoaWdub3JlRW50cnkpO1xuICAgIHRoaXMucHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGAhJHtpZ25vcmVFbnRyeX1gKTsgLy8gaW5jbHVkZSBpbiB0YXJiYWxsXG4gICAgY29uc3QgZGVwID0gdGhpcy5lc2J1aWxkVmVyc2lvblxuICAgICAgPyBgZXNidWlsZEAke3RoaXMuZXNidWlsZFZlcnNpb259YFxuICAgICAgOiBcImVzYnVpbGRcIjtcbiAgICB0aGlzLnByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KGRlcCwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlIHtcbiAgLyoqXG4gICAqIFRoZSB0YXNrIHRoYXQgcHJvZHVjZXMgdGhpcyBidW5kbGUuXG4gICAqL1xuICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgXCJ3YXRjaFwiIHRhc2sgZm9yIHRoaXMgYnVuZGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hUYXNrPzogVGFzaztcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBvdXRwdXQgZmlsZSAocmVsYXRpdmUgdG8gcHJvamVjdCByb290KS5cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bmRsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBZb3UgY2FuIG1hcmsgYSBmaWxlIG9yIGEgcGFja2FnZSBhcyBleHRlcm5hbCB0byBleGNsdWRlIGl0IGZyb20geW91ciBidWlsZC5cbiAgICogSW5zdGVhZCBvZiBiZWluZyBidW5kbGVkLCB0aGUgaW1wb3J0IHdpbGwgYmUgcHJlc2VydmVkICh1c2luZyByZXF1aXJlIGZvclxuICAgKiB0aGUgaWlmZSBhbmQgY2pzIGZvcm1hdHMgYW5kIHVzaW5nIGltcG9ydCBmb3IgdGhlIGVzbSBmb3JtYXQpIGFuZCB3aWxsIGJlXG4gICAqIGV2YWx1YXRlZCBhdCBydW4gdGltZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGlzIGhhcyBzZXZlcmFsIHVzZXMuIEZpcnN0IG9mIGFsbCwgaXQgY2FuIGJlIHVzZWQgdG8gdHJpbSB1bm5lY2Vzc2FyeVxuICAgKiBjb2RlIGZyb20geW91ciBidW5kbGUgZm9yIGEgY29kZSBwYXRoIHRoYXQgeW91IGtub3cgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cbiAgICogRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBtYXkgY29udGFpbiBjb2RlIHRoYXQgb25seSBydW5zIGluIG5vZGUgYnV0IHlvdSB3aWxsXG4gICAqIG9ubHkgYmUgdXNpbmcgdGhhdCBwYWNrYWdlIGluIHRoZSBicm93c2VyLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcG9ydFxuICAgKiBjb2RlIGluIG5vZGUgYXQgcnVuIHRpbWUgZnJvbSBhIHBhY2thZ2UgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC4gRm9yXG4gICAqIGV4YW1wbGUsIHRoZSBmc2V2ZW50cyBwYWNrYWdlIGNvbnRhaW5zIGEgbmF0aXZlIGV4dGVuc2lvbiwgd2hpY2ggZXNidWlsZFxuICAgKiBkb2Vzbid0IHN1cHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSW5jbHVkZSBhIHNvdXJjZSBtYXAgaW4gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluIGFkZGl0aW9uIHRvIHRoZSBgYnVuZGxlOnh5emAgdGFzaywgY3JlYXRlcyBgYnVuZGxlOnh5ejp3YXRjaGAgdGFzayB3aGljaCB3aWxsXG4gICAqIGludm9rZSB0aGUgc2FtZSBlc2J1aWxkIGNvbW1hbmQgd2l0aCB0aGUgYC0td2F0Y2hgIGZsYWcuIFRoaXMgY2FuIGJlIHVzZWRcbiAgICogdG8gY29udGludXNvdWx5IHdhdGNoIGZvciBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSB3YXRjaFRhc2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBhZGRCdW5kbGUoKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQnVuZGxlT3B0aW9ucyBleHRlbmRzIEJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBlc2J1aWxkIHRhcmdldC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJub2RlMTJcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzYnVpbGQgcGxhdGZvcm0uXG4gICAqXG4gICAqIEBleGFtcGxlIFwibm9kZVwiXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdW5kbGVyIG91dHB1dCBwYXRoIHJlbGF0aXZlIHRvIHRoZSBhc3NldCdzIG91dHB1dCBkaXJlY3RvcnkuXG4gICAqIEBkZWZhdWx0IFwiaW5kZXguanNcIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWFyayB0aGUgb3V0cHV0IGZpbGUgYXMgZXhlY3V0YWJsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGFibGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgdHNjb25maWcuanNvbiBmaWxlIHRvIHVzZSBmb3IgYnVuZGxpbmdcbiAgICogQGRlZmF1bHQgXCJ0c2NvbmZpZy5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogTWFwIG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCBkb3QpIGFuZCBsb2FkZXJzIHRvIHVzZSBmb3IgdGhpcyBmaWxlIHR5cGUuXG4gICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZDogYFwiaWlmZVwiYCwgYFwiY2pzXCJgLCBhbmQgYFwiZXNtXCJgLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0IChgdW5kZWZpbmVkYCksIGVzYnVpbGQgcGlja3MgYW4gb3V0cHV0IGZvcm1hdCBmb3IgeW91IGJhc2VkIG9uIGBwbGF0Zm9ybWA6XG4gICAqIC0gYFwiY2pzXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibm9kZVwiYFxuICAgKiAtIGBcImlpZmVcImAgaWYgYHBsYXRmb3JtYCBpcyBgXCJicm93c2VyXCJgXG4gICAqIC0gYFwiZXNtXCJgIGlmIGBwbGF0Zm9ybWAgaXMgYFwibmV1dHJhbFwiYFxuICAgKlxuICAgKiBOb3RlOiBJZiBtYWtpbmcgYSBidW5kbGUgdG8gcnVuIHVuZGVyIG5vZGUgd2l0aCBFU00sIHNldCBgZm9ybWF0YCB0byBgXCJlc21cImAgaW5zdGVhZCBvZiBzZXR0aW5nIGBwbGF0Zm9ybWAgdG8gYFwibmV1dHJhbFwiYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2Zvcm1hdFxuICAgKi9cblxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWluaWZ5IGZpbGVzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgbWFwIG1vZGUgdG8gYmUgdXNlZCB3aGVuIGJ1bmRsaW5nLlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VtYXBcbiAgICpcbiAgICogQGRlZmF1bHQgU291cmNlTWFwTW9kZS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VNYXBNb2RlPzogU291cmNlTWFwTW9kZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGluIHNvdXJjZSBtYXBzIHdoZW4gYnVuZGxpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3NvdXJjZXMtY29udGVudFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExvZyBsZXZlbCBmb3IgZXNidWlsZC4gVGhpcyBpcyBhbHNvIHByb3BhZ2F0ZWQgdG8gdGhlIHBhY2thZ2UgbWFuYWdlciBhbmRcbiAgICogYXBwbGllcyB0byBpdHMgc3BlY2lmaWMgaW5zdGFsbCBjb21tYW5kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMb2dMZXZlbC5XQVJOSU5HXG4gICAqL1xuICByZWFkb25seSBsb2dMZXZlbD86IEJ1bmRsZUxvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogSW4gSmF2YVNjcmlwdCB0aGUgYG5hbWVgIHByb3BlcnR5IG9uIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBkZWZhdWx0cyB0byBhXG4gICAqIG5lYXJieSBpZGVudGlmaWVyIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgICpcbiAgICogSG93ZXZlciwgbWluaWZpY2F0aW9uIHJlbmFtZXMgc3ltYm9scyB0byByZWR1Y2UgY29kZSBzaXplIGFuZCBidW5kbGluZ1xuICAgKiBzb21ldGltZXMgbmVlZCB0byByZW5hbWUgc3ltYm9scyB0byBhdm9pZCBjb2xsaXNpb25zLiBUaGF0IGNoYW5nZXMgdmFsdWUgb2ZcbiAgICogdGhlIGBuYW1lYCBwcm9wZXJ0eSBmb3IgbWFueSBvZiB0aGVzZSBjYXNlcy4gVGhpcyBpcyB1c3VhbGx5IGZpbmUgYmVjYXVzZVxuICAgKiB0aGUgYG5hbWVgIHByb3BlcnR5IGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBmb3IgZGVidWdnaW5nLiBIb3dldmVyLCBzb21lXG4gICAqIGZyYW1ld29ya3MgcmVseSBvbiB0aGUgYG5hbWVgIHByb3BlcnR5IGZvciByZWdpc3RyYXRpb24gYW5kIGJpbmRpbmcgcHVycG9zZXMuXG4gICAqIElmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBjYW4gZW5hYmxlIHRoaXMgb3B0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbFxuICAgKiBgbmFtZWAgdmFsdWVzIGV2ZW4gaW4gbWluaWZpZWQgY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGtlZXBOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIHRlbGxzIGVzYnVpbGQgdG8gd3JpdGUgb3V0IGEgSlNPTiBmaWxlIHJlbGF0aXZlIHRvIG91dHB1dCBkaXJlY3Rvcnkgd2l0aCBtZXRhZGF0YSBhYm91dCB0aGUgYnVpbGQuXG4gICAqXG4gICAqIFRoZSBtZXRhZGF0YSBpbiB0aGlzIEpTT04gZmlsZSBmb2xsb3dzIHRoaXMgc2NoZW1hIChzcGVjaWZpZWQgdXNpbmcgVHlwZVNjcmlwdCBzeW50YXgpOlxuICAgKlxuICAgKiBgYGB0ZXh0XG4gICAqIHtcbiAgICogICBvdXRwdXRzOiB7XG4gICAqICAgICBbcGF0aDogc3RyaW5nXToge1xuICAgKiAgICAgICBieXRlczogbnVtYmVyXG4gICAqICAgICAgIGlucHV0czoge1xuICAgKiAgICAgICAgIFtwYXRoOiBzdHJpbmddOiB7IGJ5dGVzSW5PdXRwdXQ6IG51bWJlciB9XG4gICAqICAgICAgIH1cbiAgICogICAgICAgaW1wb3J0czogeyBwYXRoOiBzdHJpbmcgfVtdXG4gICAqICAgICAgIGV4cG9ydHM6IHN0cmluZ1tdXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBUaGlzIGRhdGEgY2FuIHRoZW4gYmUgYW5hbHl6ZWQgYnkgb3RoZXIgdG9vbHMuIEZvciBleGFtcGxlLFxuICAgKiBidW5kbGUgYnVkZHkgY2FuIGNvbnN1bWUgZXNidWlsZCdzIG1ldGFkYXRhIGZvcm1hdCBhbmQgZ2VuZXJhdGVzIGEgdHJlZW1hcCB2aXN1YWxpemF0aW9uXG4gICAqIG9mIHRoZSBtb2R1bGVzIGluIHlvdXIgYnVuZGxlIGFuZCBob3cgbXVjaCBzcGFjZSBlYWNoIG9uZSB0YWtlcyB1cC5cbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jbWV0YWZpbGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1ldGFmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGZvb3RlciB3aGljaCBpbnNlcnRzIGF0IHRoZSBlbmQgaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzOlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbW1lbnRzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gaW5zZXJ0IGFuIGFyYml0cmFyeSBzdHJpbmcgYXQgdGhlIGVuZCBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGJhbm5lciB3aGljaCBpbnNlcnRzIGF0IHRoZSBiZWdpbm5pbmcgaW5zdGVhZCBvZiB0aGUgZW5kLlxuICAgKlxuICAgKiBUaGlzIGlzIGNvbW1vbmx5IHVzZWQgdG8gaW5zZXJ0IGNvbW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgZm9vdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcnNldCB0byB1c2UgZm9yIGVzYnVpbGQncyBvdXRwdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQgZXNidWlsZCdzIG91dHB1dCBpcyBBU0NJSS1vbmx5LiBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWRcbiAgICogdXNpbmcgYmFja3NsYXNoIGVzY2FwZSBzZXF1ZW5jZXMuIFVzaW5nIGVzY2FwZSBzZXF1ZW5jZXMgbWFrZXMgdGhlIGdlbmVyYXRlZCBvdXRwdXRcbiAgICogc2xpZ2h0bHkgYmlnZ2VyLCBhbmQgYWxzbyBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4gSWYgeW91IHdvdWxkIGxpa2UgZm9yIGVzYnVpbGQgdG8gcHJpbnRcbiAgICogdGhlIG9yaWdpbmFsIGNoYXJhY3RlcnMgd2l0aG91dCB1c2luZyBlc2NhcGUgc2VxdWVuY2VzLCB1c2UgYENoYXJzZXQuVVRGOGAuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2NoYXJzZXRcbiAgICogQGRlZmF1bHQgQ2hhcnNldC5BU0NJSVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnNldD86IENoYXJzZXQ7XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZ2xvYmFsIGlkZW50aWZpZXJzIHdpdGggY29uc3RhbnQgZXhwcmVzc2lvbnMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBgeyAncHJvY2Vzcy5lbnYuREVCVUcnOiAndHJ1ZScgfWAuXG4gICAqXG4gICAqIEFub3RoZXIgZXhhbXBsZSwgYHsgJ3Byb2Nlc3MuZW52LkFQSV9LRVknOiBKU09OLnN0cmluZ2lmeSgneHh4LXh4eHgteHh4JykgfWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVwbGFjZW1lbnRzIGFyZSBtYWRlXG4gICAqL1xuICByZWFkb25seSBkZWZpbmU/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBCdWlsZCBhcmd1bWVudHMgdG8gcGFzcyBpbnRvIGVzYnVpbGQuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB0byBhZGQgdGhlIFstLWxvZy1saW1pdF0oaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2xvZy1saW1pdCkgZmxhZzpcbiAgICpcbiAgICogYGBgdGV4dFxuICAgKiBwcm9qZWN0LmJ1bmRsZXIuYWRkQnVuZGxlKFwiLi9zcmMvaGVsbG8udHNcIiwge1xuICAgKiAgIHBsYXRmb3JtOiBcIm5vZGVcIixcbiAgICogICB0YXJnZXQ6IFwibm9kZTIyXCIsXG4gICAqICAgc291cmNlbWFwOiB0cnVlLFxuICAgKiAgIGZvcm1hdDogXCJlc21cIixcbiAgICogICBlc2J1aWxkQXJnczoge1xuICAgKiAgICAgXCItLWxvZy1saW1pdFwiOiBcIjBcIixcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlc2J1aWxkIGFyZ3VtZW50cyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBlc2J1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB9O1xuXG4gIC8qKlxuICAgKiBIb3cgdG8gZGV0ZXJtaW5lIHRoZSBlbnRyeSBwb2ludCBmb3IgbW9kdWxlcy5cbiAgICogVHJ5IFsnbW9kdWxlJywgJ21haW4nXSB0byBkZWZhdWx0IHRvIEVTIG1vZHVsZSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IG1haW5GaWVsZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBhdXRvbWF0aWNhbGx5IHJlcGxhY2UgYSBnbG9iYWwgdmFyaWFibGUgd2l0aCBhblxuICAgKiBpbXBvcnQgZnJvbSBhbm90aGVyIGZpbGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI2luamVjdFxuICAgKiBAZGVmYXVsdCAtIG5vIGNvZGUgaXMgaW5qZWN0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdD86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIEJ1bmRsZXJPcHRpb25zLnJ1bkJ1bmRsZVRhc2tcbiAqL1xuZXhwb3J0IGVudW0gUnVuQnVuZGxlVGFzayB7XG4gIC8qKlxuICAgKiBEb24ndCBidW5kbGUgYXV0b21hdGljYWxseSBhcyBwYXJ0IG9mIHRoZSBidWlsZC5cbiAgICovXG4gIE1BTlVBTCA9IFwibWFudWFsXCIsXG4gIC8qKlxuICAgKiBCdW5kbGUgYXV0b21hdGljYWxseSBiZWZvcmUgY29tcGlsYXRpb24uXG4gICAqL1xuICBQUkVfQ09NUElMRSA9IFwicHJlX2NvbXBpbGVcIixcbiAgLyoqXG4gICAqIEJ1bmRsZSBhdXRvbWF0aWNhbGx5IGFmdGVyIGNvbXBpbGF0aW9uLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0b1xuICAgKiBidW5kbGUgdGhlIGNvbXBpbGVkIHJlc3VsdHMuXG4gICAqXG4gICAqIFRodXMgd2lsbCBydW4gY29tcGlsYXRpb24gdGFza3MgKHVzaW5nIHRzYywgZXRjLikgYmVmb3JlIHJ1bm5pbmcgZmlsZVxuICAgKiB0aHJvdWdoIGJ1bmRsaW5nIHN0ZXAuXG4gICAqXG4gICAqIFRoaXMgaXMgb25seSByZXF1aXJlZCB1bmxlc3MgeW91IGFyZSB1c2luZyBuZXcgZXhwZXJpbWVudGFsIGZlYXR1cmVzIHRoYXRcbiAgICogYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYGVzYnVpbGRgIGJ1dCBhcmUgc3VwcG9ydGVkIGJ5IHR5cGVzY3JpcHQncyBgdHNjYFxuICAgKiBjb21waWxlci4gT25lIGV4YW1wbGUgb2Ygc3VjaCBmZWF0dXJlIGlzIGBlbWl0RGVjb3JhdG9yTWV0YWRhdGFgLlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIEluIGEgVHlwZVNjcmlwdCBwcm9qZWN0IHdpdGggb3V0cHV0IGNvbmZpZ3VyZWRcbiAgICogLy8gdG8gZ28gdG8gdGhlIFwibGliXCIgZGlyZWN0b3J5OlxuICAgKiBjb25zdCBwcm9qZWN0ID0gbmV3IFR5cGVTY3JpcHRQcm9qZWN0KHtcbiAgICogICBuYW1lOiBcInRlc3RcIixcbiAgICogICB0c2NvbmZpZzoge1xuICAgKiAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAqICAgICAgIG91dERpcjogXCJsaWJcIixcbiAgICogICAgIH0sXG4gICAqICAgfSxcbiAgICogICBidW5kbGVyT3B0aW9uczoge1xuICAgKiAgICAgLy8gZW5zdXJlIHdlIGNvbXBpbGUgd2l0aCBgdHNjYCBiZWZvcmUgYnVuZGxpbmdcbiAgICogICAgIHJ1bkJ1bmRsZVRhc2s6IFJ1bkJ1bmRsZVRhc2suUE9TVF9DT01QSUxFLFxuICAgKiAgIH0sXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBUZWxsIHRoZSBidW5kbGVyIHRvIGJ1bmRsZSB0aGUgY29tcGlsZWQgcmVzdWx0cyAoZnJvbSB0aGUgXCJsaWJcIiBkaXJlY3RvcnkpXG4gICAqIHByb2plY3QuYnVuZGxlci5hZGRCdW5kbGUoXCIuL2xpYi9pbmRleC5qc1wiLCB7XG4gICAqICAgcGxhdGZvcm06IFwibm9kZVwiLFxuICAgKiAgIHRhcmdldDogXCJub2RlMjJcIixcbiAgICogICBzb3VyY2VtYXA6IGZhbHNlLFxuICAgKiAgIGZvcm1hdDogXCJlc21cIixcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKiovXG4gIFBPU1RfQ09NUElMRSA9IFwicG9zdF9jb21waWxlXCIsXG59XG5cbi8qKlxuICogU291cmNlTWFwIG1vZGUgZm9yIGVzYnVpbGRcbiAqIEBzZWUgaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3NvdXJjZW1hcFxuICovXG5leHBvcnQgZW51bSBTb3VyY2VNYXBNb2RlIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgc291cmNlTWFwIG1vZGUgLSB3aWxsIGdlbmVyYXRlIGEgLmpzLm1hcCBmaWxlIGFsb25nc2lkZSBhbnkgZ2VuZXJhdGVkIC5qcyBmaWxlIGFuZCBhZGQgYSBzcGVjaWFsIC8vIyBzb3VyY2VNYXBwaW5nVVJMPVxuICAgKiBjb21tZW50IHRvIHRoZSBib3R0b20gb2YgdGhlIC5qcyBmaWxlIHBvaW50aW5nIHRvIHRoZSAuanMubWFwIGZpbGVcbiAgICovXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgLyoqXG4gICAqICBFeHRlcm5hbCBzb3VyY2VNYXAgbW9kZSAtIElmIHlvdSB3YW50IHRvIG9taXQgdGhlIHNwZWNpYWwgLy8jIHNvdXJjZU1hcHBpbmdVUkw9IGNvbW1lbnQgZnJvbSB0aGUgZ2VuZXJhdGVkIC5qcyBmaWxlIGJ1dCB5b3Ugc3RpbGxcbiAgICogIHdhbnQgdG8gZ2VuZXJhdGUgdGhlIC5qcy5tYXAgZmlsZXNcbiAgICovXG4gIEVYVEVSTkFMID0gXCJleHRlcm5hbFwiLFxuICAvKipcbiAgICogSW5saW5lIHNvdXJjZU1hcCBtb2RlIC0gSWYgeW91IHdhbnQgdG8gaW5zZXJ0IHRoZSBlbnRpcmUgc291cmNlIG1hcCBpbnRvIHRoZSAuanMgZmlsZSBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgYSBzZXBhcmF0ZSAuanMubWFwIGZpbGVcbiAgICovXG4gIElOTElORSA9IFwiaW5saW5lXCIsXG4gIC8qKlxuICAgKiBCb3RoIHNvdXJjZU1hcCBtb2RlIC0gSWYgeW91IHdhbnQgdG8gaGF2ZSB0aGUgZWZmZWN0IG9mIGJvdGggaW5saW5lIGFuZCBleHRlcm5hbCBzaW11bHRhbmVvdXNseVxuICAgKi9cbiAgQk9USCA9IFwiYm90aFwiLFxufVxuXG4vKipcbiAqIENoYXJzZXQgZm9yIGVzYnVpbGQncyBvdXRwdXRcbiAqL1xuZXhwb3J0IGVudW0gQ2hhcnNldCB7XG4gIC8qKlxuICAgKiBBU0NJSVxuICAgKlxuICAgKiBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgdXNpbmcgYmFja3NsYXNoIGVzY2FwZSBzZXF1ZW5jZXNcbiAgICovXG4gIEFTQ0lJID0gXCJhc2NpaVwiLFxuXG4gIC8qKlxuICAgKiBVVEYtOFxuICAgKlxuICAgKiBLZWVwIG9yaWdpbmFsIGNoYXJhY3RlcnMgd2l0aG91dCB1c2luZyBlc2NhcGUgc2VxdWVuY2VzXG4gICAqL1xuICBVVEY4ID0gXCJ1dGY4XCIsXG59XG5cbi8qKlxuICogTG9nIGxldmVscyBmb3IgZXNidWlsZCBhbmQgcGFja2FnZSBtYW5hZ2VycycgaW5zdGFsbCBjb21tYW5kcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVuZGxlTG9nTGV2ZWwge1xuICAvKiogU2hvdyBldmVyeXRoaW5nICovXG4gIFZFUkJPU0UgPSBcInZlcmJvc2VcIixcbiAgLyoqIFNob3cgZXZlcnl0aGluZyBmcm9tIGluZm8gYW5kIHNvbWUgYWRkaXRpb25hbCBtZXNzYWdlcyBmb3IgZGVidWdnaW5nICovXG4gIERFQlVHID0gXCJkZWJ1Z1wiLFxuICAvKiogU2hvdyB3YXJuaW5ncywgZXJyb3JzLCBhbmQgYW4gb3V0cHV0IGZpbGUgc3VtbWFyeSAqL1xuICBJTkZPID0gXCJpbmZvXCIsXG4gIC8qKiBTaG93IHdhcm5pbmdzIGFuZCBlcnJvcnMgKi9cbiAgV0FSTklORyA9IFwid2FybmluZ1wiLFxuICAvKiogU2hvdyBlcnJvcnMgb25seSAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIFNob3cgbm90aGluZyAqL1xuICBTSUxFTlQgPSBcInNpbGVudFwiLFxufVxuIl19
|
package/lib/javascript/eslint.js
CHANGED
|
@@ -10,7 +10,7 @@ const yaml_1 = require("../yaml");
|
|
|
10
10
|
* Represents eslint configuration.
|
|
11
11
|
*/
|
|
12
12
|
class Eslint extends component_1.Component {
|
|
13
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Eslint", version: "0.101.0" };
|
|
14
14
|
/**
|
|
15
15
|
* Returns the singleton Eslint component of a project or undefined if there is none.
|
|
16
16
|
*/
|
package/lib/javascript/jest.js
CHANGED
|
@@ -45,7 +45,7 @@ const DEFAULT_TEST_REPORTS_DIR = "test-reports";
|
|
|
45
45
|
class Transform {
|
|
46
46
|
name;
|
|
47
47
|
options;
|
|
48
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.
|
|
48
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Transform", version: "0.101.0" };
|
|
49
49
|
constructor(name, options) {
|
|
50
50
|
this.name = name;
|
|
51
51
|
this.options = options;
|
|
@@ -65,7 +65,7 @@ exports.Transform = Transform;
|
|
|
65
65
|
class WatchPlugin {
|
|
66
66
|
name;
|
|
67
67
|
options;
|
|
68
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.
|
|
68
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.WatchPlugin", version: "0.101.0" };
|
|
69
69
|
constructor(name, options) {
|
|
70
70
|
this.name = name;
|
|
71
71
|
this.options = options;
|
|
@@ -96,7 +96,7 @@ var UpdateSnapshot;
|
|
|
96
96
|
class JestReporter {
|
|
97
97
|
name;
|
|
98
98
|
options;
|
|
99
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.
|
|
99
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.JestReporter", version: "0.101.0" };
|
|
100
100
|
constructor(name, options) {
|
|
101
101
|
this.name = name;
|
|
102
102
|
this.options = options;
|
|
@@ -122,7 +122,7 @@ exports.JestReporter = JestReporter;
|
|
|
122
122
|
*
|
|
123
123
|
*/
|
|
124
124
|
class Jest extends component_1.Component {
|
|
125
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.
|
|
125
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Jest", version: "0.101.0" };
|
|
126
126
|
/**
|
|
127
127
|
* Returns the singleton Jest component of a project or undefined if there is none.
|
|
128
128
|
*/
|
|
@@ -8,7 +8,7 @@ const dependencies_1 = require("../dependencies");
|
|
|
8
8
|
* Enforces allowed licenses used by dependencies.
|
|
9
9
|
*/
|
|
10
10
|
class LicenseChecker extends component_1.Component {
|
|
11
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.
|
|
11
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.LicenseChecker", version: "0.101.0" };
|
|
12
12
|
task;
|
|
13
13
|
constructor(scope, options) {
|
|
14
14
|
const taskName = options.taskName ?? "check-licenses";
|
|
@@ -32,19 +32,19 @@ class LicenseChecker extends component_1.Component {
|
|
|
32
32
|
}
|
|
33
33
|
if (allowedLicenses.length) {
|
|
34
34
|
cmd.push("--onlyAllow");
|
|
35
|
-
cmd.push(
|
|
35
|
+
cmd.push(allowedLicenses.join(";"));
|
|
36
36
|
}
|
|
37
37
|
if (prohibitedLicenses.length) {
|
|
38
38
|
cmd.push("--failOn");
|
|
39
|
-
cmd.push(
|
|
39
|
+
cmd.push(prohibitedLicenses.join(";"));
|
|
40
40
|
}
|
|
41
41
|
this.project.deps.addDependency("license-checker", dependencies_1.DependencyType.BUILD);
|
|
42
42
|
this.task = this.project.addTask(taskName, {
|
|
43
|
-
|
|
43
|
+
execArgs: cmd,
|
|
44
44
|
receiveArgs: true,
|
|
45
45
|
});
|
|
46
46
|
this.project.preCompileTask.spawn(this.task);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
exports.LicenseChecker = LicenseChecker;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS1jaGVja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvbGljZW5zZS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSw0Q0FBeUM7QUFDekMsa0RBQWlEO0FBNkNqRDs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHFCQUFTOztJQUMzQixJQUFJLENBQU87SUFFM0IsWUFBbUIsS0FBZ0IsRUFBRSxPQUE4QjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDO1FBQ3RELEtBQUssQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFM0MsTUFBTSxFQUNKLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLFdBQVcsR0FBRyxLQUFLLEVBQ25CLEtBQUssRUFBRSxlQUFlLEdBQUcsRUFBRSxFQUMzQixJQUFJLEVBQUUsa0JBQWtCLEdBQUcsRUFBRSxHQUM5QixHQUFHLE9BQU8sQ0FBQztRQUVaLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLGdGQUFnRixDQUNqRixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRkFBK0YsQ0FDaEcsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRkFBK0YsQ0FDaEcsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLElBQUksVUFBVSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxXQUFXLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLDZCQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDekMsUUFBUSxFQUFFLEdBQUc7WUFDYixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckRILHdDQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcblxuLyoqXG4gKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgbGljZW5zZSBjaGVja2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGljZW5zZUNoZWNrZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIENoZWNrIHByb2R1Y3Rpb24gZGVwZW5kZW5jaWVzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgZGV2ZWxvcG1lbnQgZGVwZW5kZW5jaWVzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEZvciB0aGUgbGljZW5zZSBjaGVjayB0byBwYXNzLCBhbGwgZGV0ZWN0ZWQgbGljZW5zZXMgTVVTVCBiZSBpbiB0aGlzIGxpc3QuXG4gICAqIE9ubHkgb25lIG9mIGBhbGxvd2VkTGljZW5zZXNgIGFuZCBgcHJvaGliaXRlZExpY2Vuc2VzYCBjYW4gYmUgcHJvdmlkZWQgYW5kIG11c3Qgbm90IGJlIGVtcHR5LlxuICAgKiBAZGVmYXVsdCAtIG5vIGxpY2Vuc2VzIGFyZSBhbGxvd2VkXG4gICAqL1xuICByZWFkb25seSBhbGxvdz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFNQRFggbGljZW5zZSBpZGVudGlmaWVycyB0aGF0IGFyZSBwcm9oaWJpdGVkIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEZvciB0aGUgbGljZW5zZSBjaGVjayB0byBwYXNzLCBubyBkZXRlY3RlZCBsaWNlbnNlcyBjYW4gYmUgaW4gdGhpcyBsaXN0LlxuICAgKiBPbmx5IG9uZSBvZiBgYWxsb3dlZExpY2Vuc2VzYCBhbmQgYHByb2hpYml0ZWRMaWNlbnNlc2AgY2FuIGJlIHByb3ZpZGVkIGFuZCBtdXN0IG5vdCBiZSBlbXB0eS5cbiAgICogQGRlZmF1bHQgLSBubyBsaWNlbnNlcyBhcmUgcHJvaGliaXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGVueT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFzayB0aGF0IGlzIGFkZGVkIHRvIGNoZWNrIGxpY2Vuc2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hlY2stbGljZW5zZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGFza05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5mb3JjZXMgYWxsb3dlZCBsaWNlbnNlcyB1c2VkIGJ5IGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNsYXNzIExpY2Vuc2VDaGVja2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IHRhc2s6IFRhc2s7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IExpY2Vuc2VDaGVja2VyT3B0aW9ucykge1xuICAgIGNvbnN0IHRhc2tOYW1lID0gb3B0aW9ucy50YXNrTmFtZSA/PyBcImNoZWNrLWxpY2Vuc2VzXCI7XG4gICAgc3VwZXIoc2NvcGUsIGBMaWNlbnNlQ2hlY2tlciMke3Rhc2tOYW1lfWApO1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJvZHVjdGlvbiA9IHRydWUsXG4gICAgICBkZXZlbG9wbWVudCA9IGZhbHNlLFxuICAgICAgYWxsb3c6IGFsbG93ZWRMaWNlbnNlcyA9IFtdLFxuICAgICAgZGVueTogcHJvaGliaXRlZExpY2Vuc2VzID0gW10sXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIXByb2R1Y3Rpb24gJiYgIWRldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTGljZW5zZUNoZWNrZXI6IEF0IGxlYXN0IG9uZSBvZiBgcHJvZHVjdGlvbmAgb3IgYGRldmVsb3BtZW50YCBtdXN0IGJlIGVuYWJsZWQuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWFsbG93ZWRMaWNlbnNlcy5sZW5ndGggJiYgIXByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJMaWNlbnNlQ2hlY2tlcjogTmVpdGhlciBgYWxsb3dgIG5vciBgZGVueWAgZm91bmQuIEV4YWN0bHkgb25lIG11c3QgYmUgcHJvdmlkZWQgYW5kIG5vdCBlbXB0eS5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChhbGxvd2VkTGljZW5zZXMubGVuZ3RoICYmIHByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJMaWNlbnNlQ2hlY2tlcjogYGFsbG93YCBhbmQgYGRlbnlgIGNhbiBub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lLiBDaG9vc2Ugb25lIG9yIHRoZSBvdGhlci5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY21kID0gW1wibGljZW5zZS1jaGVja2VyXCIsIFwiLS1zdW1tYXJ5XCJdO1xuXG4gICAgaWYgKHByb2R1Y3Rpb24gJiYgIWRldmVsb3BtZW50KSB7XG4gICAgICBjbWQucHVzaChcIi0tcHJvZHVjdGlvblwiKTtcbiAgICB9XG4gICAgaWYgKGRldmVsb3BtZW50ICYmICFwcm9kdWN0aW9uKSB7XG4gICAgICBjbWQucHVzaChcIi0tZGV2ZWxvcG1lbnRcIik7XG4gICAgfVxuICAgIGlmIChhbGxvd2VkTGljZW5zZXMubGVuZ3RoKSB7XG4gICAgICBjbWQucHVzaChcIi0tb25seUFsbG93XCIpO1xuICAgICAgY21kLnB1c2goYWxsb3dlZExpY2Vuc2VzLmpvaW4oXCI7XCIpKTtcbiAgICB9XG4gICAgaWYgKHByb2hpYml0ZWRMaWNlbnNlcy5sZW5ndGgpIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1mYWlsT25cIik7XG4gICAgICBjbWQucHVzaChwcm9oaWJpdGVkTGljZW5zZXMuam9pbihcIjtcIikpO1xuICAgIH1cblxuICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koXCJsaWNlbnNlLWNoZWNrZXJcIiwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICAgIHRoaXMudGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICBleGVjQXJnczogY21kLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5wcm9qZWN0LnByZUNvbXBpbGVUYXNrLnNwYXduKHRoaXMudGFzayk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -76,7 +76,7 @@ var CodeArtifactAuthProvider;
|
|
|
76
76
|
* Represents the npm `package.json` file.
|
|
77
77
|
*/
|
|
78
78
|
class NodePackage extends component_1.Component {
|
|
79
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodePackage", version: "0.
|
|
79
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NodePackage", version: "0.101.0" };
|
|
80
80
|
/**
|
|
81
81
|
* Returns the `NodePackage` instance associated with a project or `undefined` if
|
|
82
82
|
* there is no NodePackage.
|