projen 0.62.27 → 0.63.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 +229 -180
- package/bin/projen +0 -0
- package/docs/api/API.md +13 -0
- package/lib/awscdk/auto-discover.js +5 -5
- 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 +2 -2
- 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 +1 -1
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +14 -2
- 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-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- 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 +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/component.js +1 -1
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose.js +2 -2
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +1 -1
- package/lib/github/constants.d.ts +8 -0
- package/lib/github/constants.js +10 -2
- package/lib/github/dependabot.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/mergify.js +1 -1
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow.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/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +1 -1
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/jest.d.ts +17 -0
- package/lib/javascript/jest.js +28 -17
- package/lib/javascript/node-package.js +1 -1
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +1 -1
- package/lib/javascript/upgrade-dependencies.js +2 -2
- 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.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.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 +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +8 -2
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +6 -2
- package/lib/renovatebot.js +1 -1
- package/lib/sample-file.js +2 -2
- package/lib/semver.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-runtime.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +3 -3
- package/lib/version.js +1 -1
- 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 +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +4 -4
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +1 -2
package/lib/release/publisher.js
CHANGED
|
@@ -388,6 +388,12 @@ class Publisher extends component_1.Component {
|
|
|
388
388
|
path: ARTIFACTS_DOWNLOAD_DIR,
|
|
389
389
|
},
|
|
390
390
|
},
|
|
391
|
+
{
|
|
392
|
+
name: "Restore build artifact permissions",
|
|
393
|
+
run: [
|
|
394
|
+
`cd ${ARTIFACTS_DOWNLOAD_DIR} && setfacl --restore=${constants_1.PERMISSION_BACKUP_FILE}`,
|
|
395
|
+
].join("\n"),
|
|
396
|
+
},
|
|
391
397
|
...opts.prePublishSteps,
|
|
392
398
|
{
|
|
393
399
|
name: "Release",
|
|
@@ -443,7 +449,7 @@ class Publisher extends component_1.Component {
|
|
|
443
449
|
}
|
|
444
450
|
exports.Publisher = Publisher;
|
|
445
451
|
_a = JSII_RTTI_SYMBOL_1;
|
|
446
|
-
Publisher[_a] = { fqn: "projen.release.Publisher", version: "0.
|
|
452
|
+
Publisher[_a] = { fqn: "projen.release.Publisher", version: "0.63.0" };
|
|
447
453
|
Publisher.PUBLISH_GIT_TASK_NAME = "publish:git";
|
|
448
454
|
function secret(secretName) {
|
|
449
455
|
return `\${{ secrets.${secretName} }}`;
|
|
@@ -474,4 +480,4 @@ function isAwsCodeArtifactRegistry(registryUrl) {
|
|
|
474
480
|
return registryUrl && AWS_CODEARTIFACT_REGISTRY_REGEX.test(registryUrl);
|
|
475
481
|
}
|
|
476
482
|
exports.isAwsCodeArtifactRegistry = isAwsCodeArtifactRegistry;
|
|
477
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXlDO0FBQ3pDLG1EQUc2QjtBQUM3QiwrREFNbUM7QUFDbkMsNkRBQTZEO0FBSTdELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUNoQyxNQUFNLHdCQUF3QixHQUFHLG9CQUFvQixDQUFDO0FBQ3RELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLE1BQU0sZ0NBQWdDLEdBQUcsOEJBQThCLENBQUM7QUFDeEUsTUFBTSxnQ0FBZ0MsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RSxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDO0FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsRUFBRSxFQUFFLEVBQUU7SUFDTixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3RDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRTtJQUNsQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7Q0FDdkMsQ0FBQztBQXlGRjs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEscUJBQVM7SUF5QnRDLFlBQVksT0FBZ0IsRUFBRSxPQUF5QjtRQUNyRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFWakIsK0RBQStEO1FBQzlDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUV4Qyx5QkFBb0IsR0FBYyxFQUFFLENBQUM7UUFTcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElB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b20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIEJVSUxEX0FSVElGQUNUX05BTUUsXG4gIERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUixcbn0gZnJvbSBcIi4uL2dpdGh1Yi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIEpvYixcbiAgSm9iUGVybWlzc2lvbixcbiAgSm9iUGVybWlzc2lvbnMsXG4gIEpvYlN0ZXAsXG4gIFRvb2xzLFxufSBmcm9tIFwiLi4vZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgZGVmYXVsdE5wbVRva2VuIH0gZnJvbSBcIi4uL2phdmFzY3JpcHQvbm9kZS1wYWNrYWdlXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IEJyYW5jaE9wdGlvbnMgfSBmcm9tIFwiLi9yZWxlYXNlXCI7XG5cbmNvbnN0IFBVQkxJQl9WRVJTSU9OID0gXCJsYXRlc3RcIjtcbmNvbnN0IEdJVEhVQl9QQUNLQUdFU19SRUdJU1RSWSA9IFwibnBtLnBrZy5naXRodWIuY29tXCI7XG5jb25zdCBBUlRJRkFDVFNfRE9XTkxPQURfRElSID0gXCJkaXN0XCI7XG5jb25zdCBHSVRIVUJfUEFDS0FHRVNfTUFWRU5fUkVQT1NJVE9SWSA9IFwiaHR0cHM6Ly9tYXZlbi5wa2cuZ2l0aHViLmNvbVwiO1xuY29uc3QgR0lUSFVCX1BBQ0tBR0VTX05VR0VUX1JFUE9TSVRPUlkgPSBcImh0dHBzOi8vbnVnZXQucGtnLmdpdGh1Yi5jb21cIjtcbmNvbnN0IEFXU19DT0RFQVJUSUZBQ1RfUkVHSVNUUllfUkVHRVggPSAvLmNvZGVhcnRpZmFjdC4qLmFtYXpvbmF3cy5jb20vO1xuY29uc3QgUFVCTElCX1RPT0xDSEFJTiA9IHtcbiAganM6IHt9LFxuICBqYXZhOiB7IGphdmE6IHsgdmVyc2lvbjogXCIxMS54XCIgfSB9LFxuICBweXRob246IHsgcHl0aG9uOiB7IHZlcnNpb246IFwiMy54XCIgfSB9LFxuICBnbzogeyBnbzogeyB2ZXJzaW9uOiBcIl4xLjE2LjBcIiB9IH0sXG4gIGRvdG5ldDogeyBkb3RuZXQ6IHsgdmVyc2lvbjogXCIzLnhcIiB9IH0sXG59O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBQdWJsaXNoZXJgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGpvYiBJRCB0aGF0IHByb2R1Y2VzIHRoZSBidWlsZCBhcnRpZmFjdHMuIEFsbCBwdWJsaXNoIGpvYnMgd2lsbCB0YWtlIGEgZGVwZW5kZW5jeSBvbiB0aGlzIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSm9iSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSBHaXRIdWIgd29ya2Zsb3cgZXhwcmVzc2lvbiB1c2VkIGFzIGEgY29uZGl0aW9uIGZvciBwdWJsaXNoZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXJ0aWZhY3QgdG8gZG93bmxvYWQgKGUuZy4gYGRpc3RgKS5cbiAgICpcbiAgICogVGhlIGFydGlmYWN0IGlzIGV4cGVjdGVkIHRvIGluY2x1ZGUgYSBzdWJkaXJlY3RvcnkgZm9yIGVhY2ggcmVsZWFzZSB0YXJnZXQ6XG4gICAqIGBnb2AgKEdpdEh1YiksIGBkb3RuZXRgIChOdUdldCksIGBqYXZhYCAoTWF2ZW4pLCBganNgIChucG0pLCBgcHl0aG9uYFxuICAgKiAoUHlQSSkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9wdWJsaWJcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHB1YmxpYlZlcnNpb25gIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IGpzaWlSZWxlYXNlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTm9kZSB2ZXJzaW9uIHRvIHNldHVwIGluIEdpdEh1YiB3b3JrZmxvd3MgaWYgYW55IG5vZGUtYmFzZWQgQ0xJIHV0aWxpdGllc1xuICAgKiBhcmUgbmVlZGVkLiBGb3IgZXhhbXBsZSBgcHVibGliYCwgdGhlIENMSSBwcm9qZW4gdXNlcyB0byBwdWJsaXNoIHJlbGVhc2VzLFxuICAgKiBpcyBhbiBucG0gbGlicmFyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgMTQueFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOb2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiByZXF1aXJlbWVudCBmb3IgYHB1YmxpYmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpYlZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpc3N1ZSB3aGVuIGEgcHVibGlzaCB0YXNrIGZhaWxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbHVyZUlzc3VlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIGFwcGx5IHRvIHRoZSBpc3N1ZSBtYXJraW5nIGZhaWxlZCBwdWJsaXNoIHRhc2tzLlxuICAgKiBPbmx5IGFwcGxpZXMgaWYgYGZhaWx1cmVJc3N1ZWAgaXMgdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJmYWlsZWQtcmVsZWFzZVwiXG4gICAqL1xuICByZWFkb25seSBmYWlsdXJlSXNzdWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBzZWxlY3Rpb24gbGFiZWxzXG4gICAqIEBkZWZhdWx0IFtcInVidW50dS1sYXRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZSBwdWJsaXNoaW5nIHRhc2tzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIG1hbnVhbGx5IGFzIHdlbGwgYXMgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBOb3JtYWxseSwgcHVibGlzaGluZyBvbmx5IGhhcHBlbnMgd2l0aGluIGF1dG9tYXRlZCB3b3JrZmxvd3MuIEVuYWJsZSB0aGlzXG4gICAqIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHB1Ymxpc2hpbmcgdGFzayBmb3IgZWFjaCBwdWJsaXNoaW5nIGFjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRhc2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGFjdHVhbGx5IHB1Ymxpc2gsIG9ubHkgcHJpbnQgdGhlIGNvbW1hbmRzIHRoYXQgd291bGQgYmUgZXhlY3V0ZWQgaW5zdGVhZC5cbiAgICpcbiAgICogVXNlZnVsIGlmIHlvdSB3aXNoIHRvIGJsb2NrIGFsbCBwdWJsaXNoaW5nIGZyb20gYSBzaW5nbGUgb3B0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIEdpdEh1YiBqb2JzIGZvciBwdWJsaXNoaW5nIG1vZHVsZXMgdG8gcGFja2FnZSBtYW5hZ2Vycy5cbiAqXG4gKiBVbmRlciB0aGUgaG9vZCwgaXQgdXNlcyBodHRwczovL2dpdGh1Yi5jb20vYXdzL3B1YmxpYlxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQVUJMSVNIX0dJVF9UQVNLX05BTUUgPSBcInB1Ymxpc2g6Z2l0XCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkSm9iSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0TmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGliVmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHB1YmxpYlZlcnNpb25gICovXG4gIHB1YmxpYyByZWFkb25seSBqc2lpUmVsZWFzZVZlcnNpb246IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGZhaWx1cmVJc3N1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBmYWlsdXJlSXNzdWVMYWJlbDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJ1bnNPbjogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcHVibGlzaFRhc2tzOiBib29sZWFuO1xuXG4gIC8vIGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSBqb2JzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGJyYW5jaFxuICBwcml2YXRlIHJlYWRvbmx5IF9qb2JGYWN0b3JpZXM6IFB1Ymxpc2hKb2JGYWN0b3J5W10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9naXRIdWJQcmVQdWJsaXNoaW5nOiBKb2JTdGVwW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRyeVJ1bjogYm9vbGVhbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBQdWJsaXNoZXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLmJ1aWxkSm9iSWQgPSBvcHRpb25zLmJ1aWxkSm9iSWQ7XG4gICAgdGhpcy5hcnRpZmFjdE5hbWUgPSBvcHRpb25zLmFydGlmYWN0TmFtZTtcbiAgICB0aGlzLnB1YmxpYlZlcnNpb24gPVxuICAgICAgb3B0aW9ucy5wdWJsaWJWZXJzaW9uID8/IG9wdGlvbnMuanNpaVJlbGVhc2VWZXJzaW9uID8/IFBVQkxJQl9WRVJTSU9OO1xuICAgIHRoaXMuanNpaVJlbGVhc2VWZXJzaW9uID0gdGhpcy5wdWJsaWJWZXJzaW9uO1xuICAgIHRoaXMuY29uZGl0aW9uID0gb3B0aW9ucy5jb25kaXRpb247XG4gICAgdGhpcy5kcnlSdW4gPSBvcHRpb25zLmRyeVJ1biA/PyBmYWxzZTtcbiAgICB0aGlzLndvcmtmbG93Tm9kZVZlcnNpb24gPSBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gXCIxNC54XCI7XG5cbiAgICB0aGlzLmZhaWx1cmVJc3N1ZSA9IG9wdGlvbnMuZmFpbHVyZUlzc3VlID8/IGZhbHNlO1xuICAgIHRoaXMuZmFpbHVyZUlzc3VlTGFiZWwgPSBvcHRpb25zLmZhaWx1cmVJc3N1ZUxhYmVsID8/IFwiZmFpbGVkLXJlbGVhc2VcIjtcbiAgICB0aGlzLnJ1bnNPbiA9IG9wdGlvbnMud29ya2Zsb3dSdW5zT24gPz8gW1widWJ1bnR1LWxhdGVzdFwiXTtcbiAgICB0aGlzLnB1Ymxpc2hUYXNrcyA9IG9wdGlvbnMucHVibGlzaFRhc2tzID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSBgUmVsZWFzZWAgdG8gYWRkIHRoZSBwdWJsaXNoaW5nIGpvYnMgdG8gYSByZWxlYXNlIHdvcmtmbG93XG4gICAqIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGJyYW5jaC5cbiAgICogQHBhcmFtIGJyYW5jaCBUaGUgYnJhbmNoIG5hbWVcbiAgICogQHBhcmFtIG9wdGlvbnMgQnJhbmNoIG9wdGlvbnNcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3JlbmRlckpvYnNGb3JCcmFuY2goXG4gICAgYnJhbmNoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxCcmFuY2hPcHRpb25zPlxuICApOiBSZWNvcmQ8c3RyaW5nLCBKb2I+IHtcbiAgICBsZXQgam9iczogUmVjb3JkPHN0cmluZywgSm9iPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBmYWN0b3J5IG9mIHRoaXMuX2pvYkZhY3Rvcmllcykge1xuICAgICAgam9icyA9IHtcbiAgICAgICAgLi4uam9icyxcbiAgICAgICAgLi4uZmFjdG9yeShicmFuY2gsIG9wdGlvbnMpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gam9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHByZSBwdWJsaXNoaW5nIHN0ZXBzIGZvciB0aGUgR2l0SHViIHJlbGVhc2Ugam9iLlxuICAgKlxuICAgKiBAcGFyYW0gc3RlcHMgVGhlIHN0ZXBzLlxuICAgKi9cbiAgcHVibGljIGFkZEdpdEh1YlByZVB1Ymxpc2hpbmdTdGVwcyguLi5zdGVwczogSm9iU3RlcFtdKSB7XG4gICAgdGhpcy5fZ2l0SHViUHJlUHVibGlzaGluZy5wdXNoKC4uLnN0ZXBzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRvIGdpdC5cbiAgICpcbiAgICogVGhpcyBpbmNsdWRlcyBnZW5lcmF0aW5nIGEgcHJvamVjdC1sZXZlbCBjaGFuZ2Vsb2cgYW5kIHJlbGVhc2UgdGFncy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb0dpdChvcHRpb25zOiBHaXRQdWJsaXNoT3B0aW9ucykge1xuICAgIGNvbnN0IHJlbGVhc2VUYWdGaWxlID0gb3B0aW9ucy5yZWxlYXNlVGFnRmlsZTtcbiAgICBjb25zdCB2ZXJzaW9uRmlsZSA9IG9wdGlvbnMudmVyc2lvbkZpbGU7XG4gICAgY29uc3QgY2hhbmdlbG9nID0gb3B0aW9ucy5jaGFuZ2Vsb2dGaWxlO1xuICAgIGNvbnN0IHByb2plY3RDaGFuZ2Vsb2dGaWxlID0gb3B0aW9ucy5wcm9qZWN0Q2hhbmdlbG9nRmlsZTtcbiAgICBjb25zdCBnaXRCcmFuY2ggPSBvcHRpb25zLmdpdEJyYW5jaCA/PyBcIm1haW5cIjtcblxuICAgIGNvbnN0IHRhc2tOYW1lID1cbiAgICAgIGdpdEJyYW5jaCA9PT0gXCJtYWluXCIgfHwgZ2l0QnJhbmNoID09PSBcIm1hc3RlclwiXG4gICAgICAgID8gUHVibGlzaGVyLlBVQkxJU0hfR0lUX1RBU0tfTkFNRVxuICAgICAgICA6IGAke1B1Ymxpc2hlci5QVUJMSVNIX0dJVF9UQVNLX05BTUV9OiR7Z2l0QnJhbmNofWA7XG5cbiAgICBjb25zdCBwdWJsaXNoVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQcmVwZW5kcyB0aGUgcmVsZWFzZSBjaGFuZ2Vsb2cgb250byB0aGUgcHJvamVjdCBjaGFuZ2Vsb2csIGNyZWF0ZXMgYSByZWxlYXNlIGNvbW1pdCwgYW5kIHRhZ3MgdGhlIHJlbGVhc2VcIixcbiAgICAgIGVudjoge1xuICAgICAgICBDSEFOR0VMT0c6IGNoYW5nZWxvZyxcbiAgICAgICAgUkVMRUFTRV9UQUdfRklMRTogcmVsZWFzZVRhZ0ZpbGUsXG4gICAgICAgIFBST0pFQ1RfQ0hBTkdFTE9HX0ZJTEU6IHByb2plY3RDaGFuZ2Vsb2dGaWxlID8/IFwiXCIsXG4gICAgICAgIFZFUlNJT05fRklMRTogdmVyc2lvbkZpbGUsXG4gICAgICB9LFxuICAgICAgY29uZGl0aW9uOiAnISBnaXQgbG9nIC0tb25lbGluZSAtMSB8IGdyZXAgLXEgXCJjaG9yZShyZWxlYXNlKTpcIicsXG4gICAgfSk7XG4gICAgaWYgKHByb2plY3RDaGFuZ2Vsb2dGaWxlKSB7XG4gICAgICBwdWJsaXNoVGFzay5idWlsdGluKFwicmVsZWFzZS91cGRhdGUtY2hhbmdlbG9nXCIpO1xuICAgIH1cbiAgICBwdWJsaXNoVGFzay5idWlsdGluKFwicmVsZWFzZS90YWctdmVyc2lvblwiKTtcblxuICAgIGlmIChvcHRpb25zLmdpdFB1c2hDb21tYW5kICE9PSBcIlwiKSB7XG4gICAgICBjb25zdCBnaXRQdXNoQ29tbWFuZCA9XG4gICAgICAgIG9wdGlvbnMuZ2l0UHVzaENvbW1hbmQgfHwgYGdpdCBwdXNoIC0tZm9sbG93LXRhZ3Mgb3JpZ2luICR7Z2l0QnJhbmNofWA7XG4gICAgICBwdWJsaXNoVGFzay5leGVjKGdpdFB1c2hDb21tYW5kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFRhc2s7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIEdpdEh1YiBSZWxlYXNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaFRvR2l0SHViUmVsZWFzZXMob3B0aW9uczogR2l0SHViUmVsZWFzZXNQdWJsaXNoT3B0aW9ucykge1xuICAgIGNvbnN0IGNoYW5nZWxvZ0ZpbGUgPSBvcHRpb25zLmNoYW5nZWxvZ0ZpbGU7XG4gICAgY29uc3QgcmVsZWFzZVRhZ0ZpbGUgPSBvcHRpb25zLnJlbGVhc2VUYWdGaWxlO1xuXG4gICAgLy8gY3JlYXRlIGEgZ2l0aHViIHJlbGVhc2VcbiAgICBjb25zdCByZWxlYXNlVGFnID0gYCQoY2F0ICR7cmVsZWFzZVRhZ0ZpbGV9KWA7XG5cbiAgICBjb25zdCBnaFJlbGVhc2UgPSBbXG4gICAgICBgZ2ggcmVsZWFzZSBjcmVhdGUgJHtyZWxlYXNlVGFnfWAsXG4gICAgICBcIi1SICRHSVRIVUJfUkVQT1NJVE9SWVwiLFxuICAgICAgYC1GICR7Y2hhbmdlbG9nRmlsZX1gLFxuICAgICAgYC10ICR7cmVsZWFzZVRhZ31gLFxuICAgICAgXCItLXRhcmdldCAkR0lUSFVCX1JFRlwiLFxuICAgIF0uam9pbihcIiBcIik7XG5cbiAgICAvLyByZWxlYXNlIHNjcmlwdCB0aGF0IGRvZXMgbm90IGVycm9yIHdoZW4gcmUtcmVsZWFzaW5nIGEgZ2l2ZW4gdmVyc2lvblxuICAgIGNvbnN0IGlkZW1wb3RlbnRSZWxlYXNlID0gW1xuICAgICAgXCJlcnJvdXQ9JChta3RlbXApO1wiLFxuICAgICAgYCR7Z2hSZWxlYXNlfSAyPiAkZXJyb3V0ICYmIHRydWU7YCxcbiAgICAgIFwiZXhpdGNvZGU9JD87XCIsXG4gICAgICAnaWYgWyAkZXhpdGNvZGUgLW5lIDAgXSAmJiAhIGdyZXAgLXEgXCJSZWxlYXNlLnRhZ19uYW1lIGFscmVhZHkgZXhpc3RzXCIgJGVycm91dDsgdGhlbicsXG4gICAgICBcImNhdCAkZXJyb3V0O1wiLFxuICAgICAgXCJleGl0ICRleGl0Y29kZTtcIixcbiAgICAgIFwiZmlcIixcbiAgICBdLmpvaW4oXCIgXCIpO1xuXG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKCgpOiBQdWJsaXNoSm9iT3B0aW9ucyA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBcImdpdGh1YlwiLFxuICAgICAgICByZWdpc3RyeU5hbWU6IFwiR2l0SHViIFJlbGVhc2VzXCIsXG4gICAgICAgIHByZVB1Ymxpc2hTdGVwczogb3B0aW9ucy5wcmVQdWJsaXNoU3RlcHMgPz8gdGhpcy5fZ2l0SHViUHJlUHVibGlzaGluZyxcbiAgICAgICAgcHVibGlzaFRvb2xzOiBvcHRpb25zLnB1Ymxpc2hUb29scyxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgICAgd29ya2Zsb3dFbnY6IHtcbiAgICAgICAgICBHSVRIVUJfVE9LRU46IFwiJHt7IHNlY3JldHMuR0lUSFVCX1RPS0VOIH19XCIsXG4gICAgICAgICAgR0lUSFVCX1JFUE9TSVRPUlk6IFwiJHt7IGdpdGh1Yi5yZXBvc2l0b3J5IH19XCIsXG4gICAgICAgICAgR0lUSFVCX1JFRjogXCIke3sgZ2l0aHViLnJlZiB9fVwiLFxuICAgICAgICB9LFxuICAgICAgICBydW46IGlkZW1wb3RlbnRSZWxlYXNlLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXMgYXJ0aWZhY3RzIGZyb20gYGpzLyoqYCB0byBucG0uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9OcG0ob3B0aW9uczogTnBtUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGlzR2l0SHViUGFja2FnZXMgPSBvcHRpb25zLnJlZ2lzdHJ5Py5zdGFydHNXaXRoKFxuICAgICAgR0lUSFVCX1BBQ0tBR0VTX1JFR0lTVFJZXG4gICAgKTtcbiAgICBjb25zdCBpc0F3c0NvZGVBcnRpZmFjdCA9IGlzQXdzQ29kZUFydGlmYWN0UmVnaXN0cnkob3B0aW9ucy5yZWdpc3RyeSk7XG4gICAgY29uc3QgaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkYyA9XG4gICAgICBpc0F3c0NvZGVBcnRpZmFjdCAmJlxuICAgICAgb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5hdXRoUHJvdmlkZXIgPT09XG4gICAgICAgIENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5HSVRIVUJfT0lEQztcbiAgICBjb25zdCBucG1Ub2tlbiA9IGRlZmF1bHROcG1Ub2tlbihvcHRpb25zLm5wbVRva2VuU2VjcmV0LCBvcHRpb25zLnJlZ2lzdHJ5KTtcblxuICAgIGlmIChvcHRpb25zLmRpc3RUYWcpIHtcbiAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIud2FybihcbiAgICAgICAgXCJUaGUgYGRpc3RUYWdgIG9wdGlvbiBpcyBkZXByZWNhdGVkLiBVc2UgdGhlIG5wbURpc3RUYWcgb3B0aW9uIGluc3RlYWQuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlUHVibGlzaFN0ZXBzOiBKb2JTdGVwW10gPSBvcHRpb25zLnByZVB1Ymxpc2hTdGVwcyA/PyBbXTtcblxuICAgIGlmIChpc0F3c0NvZGVBcnRpZmFjdFdpdGhPaWRjKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8uYWNjZXNzS2V5SWRTZWNyZXQgfHxcbiAgICAgICAgb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5zZWNyZXRBY2Nlc3NLZXlTZWNyZXRcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJhY2Nlc3MgYW5kIHNlY3JldCBrZXkgcGFpciBzaG91bGQgbm90IGJlIHByb3ZpZGVkIHdoZW4gdXNpbmcgR0lUSFVCX09JREMgYXV0aCBwcm92aWRlciBmb3IgQVdTIENvZGVBcnRpZmFjdFwiXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LnJvbGVUb0Fzc3VtZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1wicm9sZVRvQXNzdW1lXCIgcHJvcGVydHkgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBHSVRIVUJfT0lEQyBmb3IgQVdTIENvZGVBcnRpZmFjdCBvcHRpb25zJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVnaW9uQ2FwdHVyZVJlZ2V4ID0gL2NvZGVhcnRpZmFjdFxcLiguKylcXC5hbWF6b25hd3NcXC5jb20vO1xuICAgICAgY29uc3QgcmVnaW9uID0gb3B0aW9ucy5yZWdpc3RyeT8ubWF0Y2gocmVnaW9uQ2FwdHVyZVJlZ2V4KT8uWzFdO1xuICAgICAgcHJlUHVibGlzaFN0ZXBzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIkNvbmZpZ3VyZSBBV1MgQ3JlZGVudGlhbHMgdmlhIEdpdEh1YiBPSURDIFByb3ZpZGVyXCIsXG4gICAgICAgIHVzZXM6IFwiYXdzLWFjdGlvbnMvY29uZmlndXJlLWF3cy1jcmVkZW50aWFsc0B2MVwiLFxuICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgXCJyb2xlLXRvLWFzc3VtZVwiOiBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnMucm9sZVRvQXNzdW1lLFxuICAgICAgICAgIFwiYXdzLXJlZ2lvblwiOiByZWdpb24sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFB1Ymxpc2hKb2IoKF9icmFuY2gsIGJyYW5jaE9wdGlvbnMpOiBQdWJsaXNoSm9iT3B0aW9ucyA9PiB7XG4gICAgICBpZiAoYnJhbmNoT3B0aW9ucy5ucG1EaXN0VGFnICYmIG9wdGlvbnMuZGlzdFRhZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJjYW5ub3Qgc2V0IGJyYW5jaC1sZXZlbCBucG1EaXN0VGFnIGFuZCBucG1EaXN0VGFnIGluIHB1Ymxpc2hUb05wbSgpXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogXCJucG1cIixcbiAgICAgICAgcHVibGlzaFRvb2xzOiBQVUJMSUJfVE9PTENIQUlOLmpzLFxuICAgICAgICBwcmVQdWJsaXNoU3RlcHMsXG4gICAgICAgIHJ1bjogdGhpcy5wdWJsaWJDb21tYW5kKFwicHVibGliLW5wbVwiKSxcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIm5wbVwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBOUE1fRElTVF9UQUc6IGJyYW5jaE9wdGlvbnMubnBtRGlzdFRhZyA/PyBvcHRpb25zLmRpc3RUYWcgPz8gXCJsYXRlc3RcIixcbiAgICAgICAgICBOUE1fUkVHSVNUUlk6IG9wdGlvbnMucmVnaXN0cnksXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgaWRUb2tlbjogaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkYyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgICBwYWNrYWdlczogaXNHaXRIdWJQYWNrYWdlcyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB7XG4gICAgICAgICAgTlBNX1RPS0VOOiBucG1Ub2tlbiA/IHNlY3JldChucG1Ub2tlbikgOiB1bmRlZmluZWQsXG4gICAgICAgICAgLy8gaWYgd2UgYXJlIHB1Ymxpc2hpbmcgdG8gQVdTIENvZGVBcnRpZmFjdCwgcGFzcyBBV1MgYWNjZXNzIGtleXMgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgTlBNX1RPS0VOIHVzaW5nIEFXUyBDTEkuXG4gICAgICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6XG4gICAgICAgICAgICBpc0F3c0NvZGVBcnRpZmFjdCAmJiAhaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkY1xuICAgICAgICAgICAgICA/IHNlY3JldChcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8uYWNjZXNzS2V5SWRTZWNyZXQgPz9cbiAgICAgICAgICAgICAgICAgICAgXCJBV1NfQUNDRVNTX0tFWV9JRFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6XG4gICAgICAgICAgICBpc0F3c0NvZGVBcnRpZmFjdCAmJiAhaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkY1xuICAgICAgICAgICAgICA/IHNlY3JldChcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8uc2VjcmV0QWNjZXNzS2V5U2VjcmV0ID8/XG4gICAgICAgICAgICAgICAgICAgIFwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIEFXU19ST0xFX1RPX0FTU1VNRTpcbiAgICAgICAgICAgIGlzQXdzQ29kZUFydGlmYWN0ICYmICFpc0F3c0NvZGVBcnRpZmFjdFdpdGhPaWRjXG4gICAgICAgICAgICAgID8gb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5yb2xlVG9Bc3N1bWVcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlcyBhcnRpZmFjdHMgZnJvbSBgZG90bmV0LyoqYCB0byBOdUdldCBHYWxsZXJ5LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaFRvTnVnZXQob3B0aW9uczogTnVnZXRQdWJsaXNoT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgaXNHaXRIdWJQYWNrYWdlcyA9IG9wdGlvbnMubnVnZXRTZXJ2ZXI/LnN0YXJ0c1dpdGgoXG4gICAgICBHSVRIVUJfUEFDS0FHRVNfTlVHRVRfUkVQT1NJVE9SWVxuICAgICk7XG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKFxuICAgICAgKF9icmFuY2gsIF9icmFuY2hPcHRpb25zKTogUHVibGlzaEpvYk9wdGlvbnMgPT4gKHtcbiAgICAgICAgbmFtZTogXCJudWdldFwiLFxuICAgICAgICBwdWJsaXNoVG9vbHM6IFBVQkxJQl9UT09MQ0hBSU4uZG90bmV0LFxuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IG9wdGlvbnMucHJlUHVibGlzaFN0ZXBzID8/IFtdLFxuICAgICAgICBydW46IHRoaXMucHVibGliQ29tbWFuZChcInB1YmxpYi1udWdldFwiKSxcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIk51R2V0IEdhbGxlcnlcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIHBhY2thZ2VzOiBpc0dpdEh1YlBhY2thZ2VzID8gSm9iUGVybWlzc2lvbi5XUklURSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgd29ya2Zsb3dFbnY6IHtcbiAgICAgICAgICBOVUdFVF9BUElfS0VZOiBzZWNyZXQoXG4gICAgICAgICAgICBpc0dpdEh1YlBhY2thZ2VzXG4gICAgICAgICAgICAgID8gXCJHSVRIVUJfVE9LRU5cIlxuICAgICAgICAgICAgICA6IG9wdGlvbnMubnVnZXRBcGlLZXlTZWNyZXQgPz8gXCJOVUdFVF9BUElfS0VZXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIE5VR0VUX1NFUlZFUjogb3B0aW9ucy5udWdldFNlcnZlciA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaGVzIGFydGlmYWN0cyBmcm9tIGBqYXZhLyoqYCB0byBNYXZlbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb01hdmVuKG9wdGlvbnM6IE1hdmVuUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGlzR2l0SHViUGFja2FnZXMgPSBvcHRpb25zLm1hdmVuUmVwb3NpdG9yeVVybD8uc3RhcnRzV2l0aChcbiAgICAgIEdJVEhVQl9QQUNLQUdFU19NQVZFTl9SRVBPU0lUT1JZXG4gICAgKTtcbiAgICBjb25zdCBpc0dpdEh1YkFjdG9yID1cbiAgICAgIGlzR2l0SHViUGFja2FnZXMgJiYgb3B0aW9ucy5tYXZlblVzZXJuYW1lID09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXZlblNlcnZlcklkID1cbiAgICAgIG9wdGlvbnMubWF2ZW5TZXJ2ZXJJZCA/PyAoaXNHaXRIdWJQYWNrYWdlcyA/IFwiZ2l0aHViXCIgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKGlzR2l0SHViUGFja2FnZXMgJiYgbWF2ZW5TZXJ2ZXJJZCAhPSBcImdpdGh1YlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdwdWJsaXNoaW5nIHRvIEdpdEh1YiBQYWNrYWdlcyByZXF1aXJlcyB0aGUgXCJtYXZlblNlcnZlcklkXCIgdG8gYmUgXCJnaXRodWJcIidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKFxuICAgICAgKF9icmFuY2gsIF9icmFuY2hPcHRpb25zKTogUHVibGlzaEpvYk9wdGlvbnMgPT4gKHtcbiAgICAgICAgbmFtZTogXCJtYXZlblwiLFxuICAgICAgICByZWdpc3RyeU5hbWU6IFwiTWF2ZW4gQ2VudHJhbFwiLFxuICAgICAgICBwdWJsaXNoVG9vbHM6IFBVQkxJQl9UT09MQ0hBSU4uamF2YSxcbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzOiBvcHRpb25zLnByZVB1Ymxpc2hTdGVwcyA/PyBbXSxcbiAgICAgICAgcnVuOiB0aGlzLnB1YmxpYkNvbW1hbmQoXCJwdWJsaWItbWF2ZW5cIiksXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIE1BVkVOX0VORFBPSU5UOiBvcHRpb25zLm1hdmVuRW5kcG9pbnQsXG4gICAgICAgICAgTUFWRU5fU0VSVkVSX0lEOiBtYXZlblNlcnZlcklkLFxuICAgICAgICAgIE1BVkVOX1JFUE9TSVRPUllfVVJMOiBvcHRpb25zLm1hdmVuUmVwb3NpdG9yeVVybCxcbiAgICAgICAgfSxcbiAgICAgICAgd29ya2Zsb3dFbnY6IHtcbiAgICAgICAgICBNQVZFTl9HUEdfUFJJVkFURV9LRVk6IGlzR2l0SHViUGFja2FnZXNcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHNlY3JldChcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1hdmVuR3BnUHJpdmF0ZUtleVNlY3JldCA/PyBcIk1BVkVOX0dQR19QUklWQVRFX0tFWVwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgTUFWRU5fR1BHX1BSSVZBVEVfS0VZX1BBU1NQSFJBU0U6IGlzR2l0SHViUGFja2FnZXNcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHNlY3JldChcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1hdmVuR3BnUHJpdmF0ZUtleVBhc3NwaHJhc2UgPz9cbiAgICAgICAgICAgICAgICAgIFwiTUFWRU5fR1BHX1BSSVZBVEVfS0VZX1BBU1NQSFJBU0VcIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIE1BVkVOX1BBU1NXT1JEOiBzZWNyZXQoXG4gICAgICAgICAgICBvcHRpb25zLm1hdmVuUGFzc3dvcmQgPz9cbiAgICAgICAgICAgICAgKGlzR2l0SHViUGFja2FnZXMgPyBcIkdJVEhVQl9UT0tFTlwiIDogXCJNQVZFTl9QQVNTV09SRFwiKVxuICAgICAgICAgICksXG4gICAgICAgICAgTUFWRU5fVVNFUk5BTUU6IGlzR2l0SHViQWN0b3JcbiAgICAgICAgICAgID8gXCIke3sgZ2l0aHViLmFjdG9yIH19XCJcbiAgICAgICAgICAgIDogc2VjcmV0KG9wdGlvbnMubWF2ZW5Vc2VybmFtZSA/PyBcIk1BVkVOX1VTRVJOQU1FXCIpLFxuICAgICAgICAgIE1BVkVOX1NUQUdJTkdfUFJPRklMRV9JRDogaXNHaXRIdWJQYWNrYWdlc1xuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogc2VjcmV0KFxuICAgICAgICAgICAgICAgIG9wdGlvbnMubWF2ZW5TdGFnaW5nUHJvZmlsZUlkID8/IFwiTUFWRU5fU1RBR0lOR19QUk9GSUxFX0lEXCJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIHBhY2thZ2VzOiBpc0dpdEh1YlBhY2thZ2VzID8gSm9iUGVybWlzc2lvbi5XUklURSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXMgd2hlZWwgYXJ0aWZhY3RzIGZyb20gYHB5dGhvbmAgdG8gUHlQSS5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb1B5UGkob3B0aW9uczogUHlQaVB1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmFkZFB1Ymxpc2hKb2IoXG4gICAgICAoX2JyYW5jaCwgX2JyYW5jaE9wdGlvbnMpOiBQdWJsaXNoSm9iT3B0aW9ucyA9PiAoe1xuICAgICAgICBuYW1lOiBcInB5cGlcIixcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIlB5UElcIixcbiAgICAgICAgcHVibGlzaFRvb2xzOiBQVUJMSUJfVE9PTENIQUlOLnB5dGhvbixcbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzOiBvcHRpb25zLnByZVB1Ymxpc2hTdGVwcyA/PyBbXSxcbiAgICAgICAgcnVuOiB0aGlzLnB1YmxpYkNvbW1hbmQoXCJwdWJsaWItcHlwaVwiKSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgVFdJTkVfUkVQT1NJVE9SWV9VUkw6IG9wdGlvbnMudHdpbmVSZWdpc3RyeVVybCxcbiAgICAgICAgfSxcbiAgICAgICAgd29ya2Zsb3dFbnY6IHtcbiAgICAgICAgICBUV0lORV9VU0VSTkFNRTogc2VjcmV0KFxuICAgICAgICAgICAgb3B0aW9ucy50d2luZVVzZXJuYW1lU2VjcmV0ID8/IFwiVFdJTkVfVVNFUk5BTUVcIlxuICAgICAgICAgICksXG4gICAgICAgICAgVFdJTkVfUEFTU1dPUkQ6IHNlY3JldChcbiAgICAgICAgICAgIG9wdGlvbnMudHdpbmVQYXNzd29yZFNlY3JldCA/PyBcIlRXSU5FX1BBU1NXT1JEXCJcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBnbyBwdWJsaXNoaW5nIGpvYi5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb0dvKG9wdGlvbnM6IEdvUHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHByZVB1Ymxpc2hTdGVwcyA9IG9wdGlvbnMucHJlUHVibGlzaFN0ZXBzID8/IFtdO1xuICAgIGNvbnN0IHdvcmtmbG93RW52OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9O1xuICAgIGlmIChvcHRpb25zLmdpdGh1YlVzZVNzaCkge1xuICAgICAgd29ya2Zsb3dFbnYuR0lUSFVCX1VTRV9TU0ggPSBcInRydWVcIjtcbiAgICAgIHdvcmtmbG93RW52LlNTSF9BVVRIX1NPQ0sgPSBcIi90bXAvc3NoX2FnZW50LnNvY2tcIjtcbiAgICAgIHByZVB1Ymxpc2hTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJTZXR1cCBHaXRIdWIgZGVwbG95IGtleVwiLFxuICAgICAgICBydW46ICdzc2gtYWdlbnQgLWEgJHtTU0hfQVVUSF9TT0NLfSAmJiBzc2gtYWRkIC0gPDw8IFwiJHtHSVRIVUJfREVQTE9ZX0tFWX1cIicsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIEdJVEhVQl9ERVBMT1lfS0VZOiBzZWNyZXQoXG4gICAgICAgICAgICBvcHRpb25zLmdpdGh1YkRlcGxveUtleVNlY3JldCA/PyBcIkdPX0dJVEhVQl9ERVBMT1lfS0VZXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIFNTSF9BVVRIX1NPQ0s6IHdvcmtmbG93RW52LlNTSF9BVVRIX1NPQ0ssXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgd29ya2Zsb3dFbnYuR0lUSFVCX1RPS0VOID0gc2VjcmV0KFxuICAgICAgICBvcHRpb25zLmdpdGh1YlRva2VuU2VjcmV0ID8/IFwiR09fR0lUSFVCX1RPS0VOXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKFxuICAgICAgKF9icmFuY2gsIF9icmFuY2hPcHRpb25zKTogUHVibGlzaEpvYk9wdGlvbnMgPT4gKHtcbiAgICAgICAgbmFtZTogXCJnb2xhbmdcIixcbiAgICAgICAgcHVibGlzaFRvb2xzOiBQVUJMSUJfVE9PTENIQUlOLmdvLFxuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IHByZVB1Ymxpc2hTdGVwcyxcbiAgICAgICAgcnVuOiB0aGlzLnB1YmxpYkNvbW1hbmQoXCJwdWJsaWItZ29sYW5nXCIpLFxuICAgICAgICByZWdpc3RyeU5hbWU6IFwiR2l0SHViIEdvIE1vZHVsZSBSZXBvc2l0b3J5XCIsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIEdJVEhVQl9SRVBPOiBvcHRpb25zLmdpdGh1YlJlcG8sXG4gICAgICAgICAgR0lUX0JSQU5DSDogb3B0aW9ucy5naXRCcmFuY2gsXG4gICAgICAgICAgR0lUX1VTRVJfTkFNRTpcbiAgICAgICAgICAgIG9wdGlvbnMuZ2l0VXNlck5hbWUgPz8gREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSLm5hbWUsXG4gICAgICAgICAgR0lUX1VTRVJfRU1BSUw6XG4gICAgICAgICAgICBvcHRpb25zLmdpdFVzZXJFbWFpbCA/PyBERUZBVUxUX0dJVEhVQl9BQ1RJT05TX1VTRVIuZW1haWwsXG4gICAgICAgICAgR0lUX0NPTU1JVF9NRVNTQUdFOiBvcHRpb25zLmdpdENvbW1pdE1lc3NhZ2UsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB3b3JrZmxvd0VudixcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUHVibGlzaEpvYihcbiAgICBmYWN0b3J5OiAoXG4gICAgICBicmFuY2g6IHN0cmluZyxcbiAgICAgIGJyYW5jaE9wdGlvbnM6IFBhcnRpYWw8QnJhbmNoT3B0aW9ucz5cbiAgICApID0+IFB1Ymxpc2hKb2JPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX2pvYkZhY3Rvcmllcy5wdXNoKChicmFuY2gsIGJyYW5jaE9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSBmYWN0b3J5KGJyYW5jaCwgYnJhbmNoT3B0aW9ucyk7XG4gICAgICBjb25zdCBqb2JuYW1lID0gYHJlbGVhc2VfJHtvcHRzLm5hbWV9YDtcbiAgICAgIGlmIChqb2JuYW1lIGluIHRoaXMuX2pvYkZhY3Rvcmllcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBqb2Igd2l0aCBuYW1lIFwiJHtqb2JuYW1lfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbW1hbmRUb1J1biA9IHRoaXMuZHJ5UnVuXG4gICAgICAgID8gYGVjaG8gXCJEUlkgUlVOOiAke29wdHMucnVufVwiYFxuICAgICAgICA6IG9wdHMucnVuO1xuICAgICAgY29uc3QgcmVxdWlyZWRFbnYgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgICAvLyBqb2JFbnYgaXMgdGhlIGVudiB3ZSBwYXNzIHRvIHRoZSBnaXRodWIgam9iICh0YXNrIGVudmlyb25tZW50ICsgc2VjcmV0cy9leHByZXNzaW9ucykuXG4gICAgICBjb25zdCBqb2JFbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IC4uLm9wdHMuZW52IH07XG4gICAgICBjb25zdCB3b3JrZmxvd0VudkVudHJpZXMgPSBPYmplY3QuZW50cmllcyhvcHRzLndvcmtmbG93RW52ID8/IHt9KS5maWx0ZXIoXG4gICAgICAgIChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPSB1bmRlZmluZWRcbiAgICAgICkgYXMgc3RyaW5nW11bXTtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGV4cHJlc3Npb25dIG9mIHdvcmtmbG93RW52RW50cmllcykge1xuICAgICAgICByZXF1aXJlZEVudi5wdXNoKG5hbWUpO1xuICAgICAgICBqb2JFbnZbbmFtZV0gPSBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wdWJsaXNoVGFza3MpIHtcbiAgICAgICAgY29uc3QgYnJhbmNoU3VmZml4ID1cbiAgICAgICAgICBicmFuY2ggPT09IFwibWFpblwiIHx8IGJyYW5jaCA9PT0gXCJtYXN0ZXJcIiA/IFwiXCIgOiBgOiR7YnJhbmNofWA7XG5cbiAgICAgICAgLy8gZGVmaW5lIGEgdGFzayB3aGljaCBjYW4gYmUgdXNlZCB0aHJvdWdoIGBwcm9qZW4gcHVibGlzaDp4eHhgLlxuICAgICAgICBjb25zdCB0YXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soXG4gICAgICAgICAgYHB1Ymxpc2g6JHtvcHRzLm5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKX0ke2JyYW5jaFN1ZmZpeH1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUHVibGlzaCB0aGlzIHBhY2thZ2UgdG8gJHtvcHRzLnJlZ2lzdHJ5TmFtZX1gLFxuICAgICAgICAgICAgZW52OiBvcHRzLmVudixcbiAgICAgICAgICAgIHJlcXVpcmVkRW52OiByZXF1aXJlZEVudixcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gZmlyc3QgdmVyaWZ5IHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0IGJyYW5jaFxuICAgICAgICB0YXNrLmV4ZWMoYHRlc3QgXCIkKGdpdCBicmFuY2ggLS1zaG93LWN1cnJlbnQpXCIgPSBcIiR7YnJhbmNofVwiYCk7XG5cbiAgICAgICAgLy8gcnVuIGNvbW1hbmRzXG4gICAgICAgIHRhc2suZXhlYyhjb21tYW5kVG9SdW4pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGVwczogSm9iU3RlcFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJEb3dubG9hZCBidWlsZCBhcnRpZmFjdHNcIixcbiAgICAgICAgICB1c2VzOiBcImFjdGlvbnMvZG93bmxvYWQtYXJ0aWZhY3RAdjNcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICBuYW1lOiBCVUlMRF9BUlRJRkFDVF9OQU1FLFxuICAgICAgICAgICAgcGF0aDogQVJUSUZBQ1RTX0RPV05MT0FEX0RJUiwgLy8gdGhpcyBtdXN0IGJlIFwiZGlzdFwiIGZvciBwdWJsaWJcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5vcHRzLnByZVB1Ymxpc2hTdGVwcyxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiUmVsZWFzZVwiLFxuICAgICAgICAgIC8vIGl0IHdvdWxkIGhhdmUgYmVlbiBuaWNlIGlmIHdlIGNvdWxkIGp1c3QgcnVuIFwicHJvamVuIHB1Ymxpc2g6eHh4XCIgaGVyZSBidXQgdGhhdCBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB0aGlzIGpvYiBkb2VzIG5vdCBjaGVja291dCBzb3VyY2VzXG4gICAgICAgICAgcnVuOiBjb21tYW5kVG9SdW4sXG4gICAgICAgICAgZW52OiBqb2JFbnYsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBwZXJtcyA9IG9wdHMucGVybWlzc2lvbnMgPz8geyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH07XG5cbiAgICAgIGlmICh0aGlzLmZhaWx1cmVJc3N1ZSkge1xuICAgICAgICBzdGVwcy5wdXNoKFxuICAgICAgICAgIC4uLltcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IFZlcnNpb25cIixcbiAgICAgICAgICAgICAgaWY6IFwiJHt7IGZhaWx1cmUoKSB9fVwiLFxuICAgICAgICAgICAgICBpZDogXCJleHRyYWN0LXZlcnNpb25cIixcbiAgICAgICAgICAgICAgcnVuOiAnZWNobyBcIjo6c2V0LW91dHB1dCBuYW1lPVZFUlNJT046OiQoY2F0IGRpc3QvdmVyc2lvbi50eHQpXCInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJDcmVhdGUgSXNzdWVcIixcbiAgICAgICAgICAgICAgaWY6IFwiJHt7IGZhaWx1cmUoKSB9fVwiLFxuICAgICAgICAgICAgICB1c2VzOiBcImltam9obmJvL2lzc3VlLWJvdEB2M1wiLFxuICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgbGFiZWxzOiB0aGlzLmZhaWx1cmVJc3N1ZUxhYmVsLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBgUHVibGlzaGluZyB2XFwke3sgc3RlcHMuZXh0cmFjdC12ZXJzaW9uLm91dHB1dHMuVkVSU0lPTiB9fSB0byAke29wdHMucmVnaXN0cnlOYW1lfSBmYWlsZWRgLFxuICAgICAgICAgICAgICAgIGJvZHk6IFwiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS8ke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX0vYWN0aW9ucy9ydW5zLyR7eyBnaXRodWIucnVuX2lkIH19XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgIEdJVEhVQl9UT0tFTjogXCIke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICApO1xuICAgICAgICBPYmplY3QuYXNzaWduKHBlcm1zLCB7IGlzc3VlczogSm9iUGVybWlzc2lvbi5XUklURSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2pvYm5hbWVdOiB7XG4gICAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICAgIG5vZGU6IHsgdmVyc2lvbjogdGhpcy53b3JrZmxvd05vZGVWZXJzaW9uIH0sXG4gICAgICAgICAgICAuLi5vcHRzLnB1Ymxpc2hUb29scyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IGBQdWJsaXNoIHRvICR7b3B0cy5yZWdpc3RyeU5hbWV9YCxcbiAgICAgICAgICBwZXJtaXNzaW9uczogcGVybXMsXG4gICAgICAgICAgaWY6IHRoaXMuY29uZGl0aW9uLFxuICAgICAgICAgIG5lZWRzOiBbdGhpcy5idWlsZEpvYklkXSxcbiAgICAgICAgICBydW5zT246IHRoaXMucnVuc09uLFxuICAgICAgICAgIHN0ZXBzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHVibGliQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYG5weCAtcCBwdWJsaWJAJHt0aGlzLnB1YmxpYlZlcnNpb259ICR7Y29tbWFuZH1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlY3JldChzZWNyZXROYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcXCR7eyBzZWNyZXRzLiR7c2VjcmV0TmFtZX0gfX1gO1xufVxuXG5pbnRlcmZhY2UgUHVibGlzaEpvYk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0XG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSByZWdpc3RyeSAoZm9yIGRlc2NyaXB0aW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEpvYiBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM/OiBKb2JQZXJtaXNzaW9ucztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHB1Ymxpc2ggam9iIChzaG91bGQgYmUgbG93ZXJjYXNlKS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdG8gaW5jbHVkZSBvbmx5IGluIHRoZSB3b3JrZmxvdyAoYW5kIG5vdCB0YXNrcykuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Vudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGJlZm9yZSB0aGUgcmVsZWFzZSBjb21tYW5kIGZvciBwcmVwYXJpbmcgdGhlIGRpc3QvIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHByZVB1Ymxpc2hTdGVwczogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBUb29scyBzZXR1cCBmb3IgdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvb2xzIGFyZSBpbnN0YWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb29scz86IFRvb2xzO1xufVxuXG4vKipcbiAqIENvbW1vbiBwdWJsaXNoaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25QdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGJlZm9yZSBleGVjdXRpbmcgdGhlIHB1Ymxpc2hpbmcgY29tbWFuZC4gVGhlc2UgY2FuIGJlIHVzZWRcbiAgICogdG8gcHJlcGFyZSB0aGUgYXJ0aWZhY3QgZm9yIHB1Ymxpc2hpbmcgaWYgbmVlZGUuXG4gICAqXG4gICAqIFRoZXNlIHN0ZXBzIGFyZSBleGVjdXRlZCBhZnRlciBgZGlzdC9gIGhhcyBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZSBidWlsZFxuICAgKiBvdXRwdXQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB3aGVuIHVzaW5nIHRoaXMgaW4gYHB1Ymxpc2hUb0dpdEh1YlJlbGVhc2VzYCB0aGlzIHdpbGwgb3ZlcnJpZGUgc3RlcHMgYWRkZWQgdmlhIGBhZGRHaXRIdWJQcmVQdWJsaXNoaW5nU3RlcHNgLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlUHVibGlzaFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRvb2xzIHRvIGluc3RhbGwgaW4gdGhlIHB1Ymxpc2hpbmcgam9iLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgdG9vbHMgYXJlIGluc3RhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvb2xzPzogVG9vbHM7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBOcG1QdWJsaXNoT3B0aW9uc2AgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpUmVsZWFzZU5wbSBleHRlbmRzIE5wbVB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgbnBtIHJlbGVhc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOcG1QdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRhZ3MgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBhbGlhcyBpbnN0ZWFkIG9mIHZlcnNpb24gbnVtYmVycy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGEgcHJvamVjdCBtaWdodCBjaG9vc2UgdG8gaGF2ZSBtdWx0aXBsZSBzdHJlYW1zIG9mIGRldmVsb3BtZW50XG4gICAqIGFuZCB1c2UgYSBkaWZmZXJlbnQgdGFnIGZvciBlYWNoIHN0cmVhbSwgZS5nLiwgc3RhYmxlLCBiZXRhLCBkZXYsIGNhbmFyeS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIGBsYXRlc3RgIHRhZyBpcyB1c2VkIGJ5IG5wbSB0byBpZGVudGlmeSB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAqIG9mIGEgcGFja2FnZSwgYW5kIGBucG0gaW5zdGFsbCA8cGtnPmAgKHdpdGhvdXQgYW55IGBAPHZlcnNpb24+YCBvciBgQDx0YWc+YFxuICAgKiBzcGVjaWZpZXIpIGluc3RhbGxzIHRoZSBsYXRlc3QgdGFnLiBUeXBpY2FsbHksIHByb2plY3RzIG9ubHkgdXNlIHRoZVxuICAgKiBgbGF0ZXN0YCB0YWcgZm9yIHN0YWJsZSByZWxlYXNlIHZlcnNpb25zLCBhbmQgdXNlIG90aGVyIHRhZ3MgZm9yIHVuc3RhYmxlXG4gICAqIHZlcnNpb25zIHN1Y2ggYXMgcHJlcmVsZWFzZXMuXG4gICAqXG4gICAqIFRoZSBgbmV4dGAgdGFnIGlzIHVzZWQgYnkgc29tZSBwcm9qZWN0cyB0byBpZGVudGlmeSB0aGUgdXBjb21pbmcgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYG5wbURpc3RUYWdgIGZvciBlYWNoIHJlbGVhc2UgYnJhbmNoIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBUbyBwdWJsaXNoIHRvIEdpdEh1YiBQYWNrYWdlcywgc2V0IHRoaXMgdmFsdWUgdG8gYFwibnBtLnBrZy5naXRodWIuY29tXCJgLiBJblxuICAgKiB0aGlzIGlmIGBucG1Ub2tlblNlY3JldGAgaXMgbm90IHNwZWNpZmllZCwgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAqIGBHSVRIVUJfVE9LRU5gIHdoaWNoIG1lYW5zIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBwdWJsaXNoIHRvIHRoZVxuICAgKiByZXBvc2l0b3J5J3MgcGFja2FnZSBzdG9yZS4gSW4gdGhpcyBjYXNlLCBtYWtlIHN1cmUgYHJlcG9zaXRvcnlVcmxgIGlzXG4gICAqIGNvcnJlY3RseSBkZWZpbmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInJlZ2lzdHJ5Lm5wbWpzLm9yZ1wiXG4gICAqIEBleGFtcGxlIFwibnBtLnBrZy5naXRodWIuY29tXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBOUE0gdG9rZW4gdG8gdXNlIHdoZW4gcHVibGlzaGluZyBwYWNrYWdlcy5cbiAgICogQGRlZmF1bHQgLSBcIk5QTV9UT0tFTlwiIG9yIFwiR0lUSFVCX1RPS0VOXCIgaWYgYHJlZ2lzdHJ5YCBpcyBzZXQgdG8gYG5wbS5wa2cuZ2l0aHViLmNvbWAuXG4gICAqL1xuICByZWFkb25seSBucG1Ub2tlblNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBucG0gcGFja2FnZSB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUFydGlmYWN0T3B0aW9ucz86IENvZGVBcnRpZmFjdE9wdGlvbnM7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYXV0aG9yaXppbmcgcmVxdWVzdHMgdG8gYSBBV1MgQ29kZUFydGlmYWN0IG5wbSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgZW51bSBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIge1xuICAvKipcbiAgICogRml4ZWQgY3JlZGVudGlhbHMgcHJvdmlkZWQgdmlhIEdpdGh1YiBzZWNyZXRzLlxuICAgKi9cbiAgQUNDRVNTX0FORF9TRUNSRVRfS0VZX1BBSVIgPSBcIkFDQ0VTU19BTkRfU0VDUkVUX0tFWV9QQUlSXCIsXG5cbiAgLyoqXG4gICAqIEVwaGVtZXJhbCBjcmVkZW50aWFscyBwcm92aWRlZCB2aWEgR2l0aHViJ3MgT0lEQyBpbnRlZ3JhdGlvbiB3aXRoIGFuIElBTSByb2xlLlxuICAgKiBTZWU6XG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF9yb2xlc19wcm92aWRlcnNfY3JlYXRlX29pZGMuaHRtbFxuICAgKiBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL2RlcGxveW1lbnQvc2VjdXJpdHktaGFyZGVuaW5nLXlvdXItZGVwbG95bWVudHMvY29uZmlndXJpbmctb3BlbmlkLWNvbm5lY3QtaW4tYW1hem9uLXdlYi1zZXJ2aWNlc1xuICAgKi9cbiAgR0lUSFVCX09JREMgPSBcIkdJVEhVQl9PSURDXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBwYWNrYWdlcyB0byBBV1MgQ29kZUFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdE9wdGlvbnMge1xuICAvKipcbiAgICogUHJvdmlkZXIgdG8gdXNlIGZvciBhdXRob3JpemluZyByZXF1ZXN0cyB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuQUNDRVNTX0FORF9TRUNSRVRfS0VZX1BBSVJcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhQcm92aWRlcj86IENvZGVBcnRpZmFjdEF1dGhQcm92aWRlcjtcbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgd2hpY2ggY29udGFpbnMgdGhlIEFXUyBhY2Nlc3Mga2V5IElEIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgcGFja2FnZXMgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgbnBtUmVnaXN0cnlVcmxgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIHRoZSBgYXV0aFByb3ZpZGVyYCB2YWx1ZSBpcyBzZXQgdG9cbiAgICogYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5BQ0NFU1NfQU5EX1NFQ1JFVF9LRVlfUEFJUmAsIHRoZSBkZWZhdWx0IGlzXG4gICAqIFwiQVdTX0FDQ0VTU19LRVlfSURcIi4gRm9yIGBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JRENgLCB0aGlzXG4gICAqIHZhbHVlIG11c3QgYmUgbGVmdCB1bmRlZmluZWQuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NLZXlJZFNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIHNlY3JldCB3aGljaCBjb250YWlucyB0aGUgQVdTIHNlY3JldCBhY2Nlc3Mga2V5IHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgcGFja2FnZXMgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgbnBtUmVnaXN0cnlVcmxgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIHRoZSBgYXV0aFByb3ZpZGVyYCB2YWx1ZSBpcyBzZXQgdG9cbiAgICogYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5BQ0NFU1NfQU5EX1NFQ1JFVF9LRVlfUEFJUmAsIHRoZSBkZWZhdWx0IGlzXG4gICAqIFwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXCIuIEZvciBgQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkdJVEhVQl9PSURDYCwgdGhpc1xuICAgKiB2YWx1ZSBtdXN0IGJlIGxlZnQgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0QWNjZXNzS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgQVdTIHJvbGUgdG8gYmUgYXNzdW1lZCBwcmlvciB0byBnZXQgYXV0aG9yaXphdGlvbiB0b2tlbiBmcm9tIEFXUyBDb2RlQXJ0aWZhY3RcbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgcmVnaXN0cnlgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICogV2hlbiB1c2luZyB0aGUgYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5HSVRIVUJfT0lEQ2AgYXV0aCBwcm92aWRlciwgdGhpcyB2YWx1ZSBtdXN0IGJlIGRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZVRvQXNzdW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgUHlQaVB1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlUHlQaSBleHRlbmRzIFB5UGlQdWJsaXNoT3B0aW9ucyB7fVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFB5UEkgcmVsZWFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5UGlQdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWdpc3RyeSB1cmwgdG8gdXNlIHdoZW4gcmVsZWFzaW5nIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHR3aW5lIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHR3aW5lUmVnaXN0cnlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIFB5UEkgdXNlciBuYW1lLlxuICAgKiBAZGVmYXVsdCBcIlRXSU5FX1VTRVJOQU1FXCJcbiAgICovXG4gIHJlYWRvbmx5IHR3aW5lVXNlcm5hbWVTZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIFB5UEkgcGFzc3dvcmQuXG4gICAqIEBkZWZhdWx0IFwiVFdJTkVfUEFTU1dPUkRcIlxuICAgKi9cbiAgcmVhZG9ubHkgdHdpbmVQYXNzd29yZFNlY3JldD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYE51Z2V0UHVibGlzaE9wdGlvbnNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVJlbGVhc2VOdWdldCBleHRlbmRzIE51Z2V0UHVibGlzaE9wdGlvbnMge31cblxuLyoqXG4gKiBPcHRpb25zIGZvciBOdUdldCByZWxlYXNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE51Z2V0UHVibGlzaE9wdGlvbnMgZXh0ZW5kcyBDb21tb25QdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBBUEkga2V5IGZvciBOdUdldC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJOVUdFVF9BUElfS0VZXCJcbiAgICovXG4gIHJlYWRvbmx5IG51Z2V0QXBpS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgTnVHZXQgU2VydmVyIFVSTCAoZGVmYXVsdHMgdG8gbnVnZXQub3JnKVxuICAgKi9cbiAgcmVhZG9ubHkgbnVnZXRTZXJ2ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBNYXZlblB1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlTWF2ZW4gZXh0ZW5kcyBNYXZlblB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgTWF2ZW4gcmVsZWFzZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXZlblB1Ymxpc2hPcHRpb25zIGV4dGVuZHMgQ29tbW9uUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVVJMIG9mIE5leHVzIHJlcG9zaXRvcnkuIGlmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1wiXG4gICAqL1xuICByZWFkb25seSBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VkIGluIG1hdmVuIHNldHRpbmdzIGZvciBjcmVkZW50aWFsIGxvb2t1cCAoZS5nLiB1c2UgZ2l0aHViIHdoZW4gcHVibGlzaGluZyB0byBHaXRIdWIpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm9zc3JoXCIgKE1hdmVuIENlbnRyYWwpIG9yIFwiZ2l0aHViXCIgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuU2VydmVySWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgcmVwb3NpdG9yeSB3aGVuIG5vdCBkZXBsb3lpbmcgdG8gTWF2ZW4gQ2VudHJhbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdCBzZXRcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuUmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIHNlY3JldCBuYW1lIHdoaWNoIGNvbnRhaW5zIHRoZSBHUEcgcHJpdmF0ZSBrZXkgb3IgZmlsZSB0aGF0IGluY2x1ZGVzXG4gICAqIGl0LiBUaGlzIGlzIHVzZWQgdG8gc2lnbiB5b3VyIE1hdmVuXG4gICAqIHBhY2thZ2VzLiBTZWUgaW5zdHJ1Y3Rpb25zLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvcHVibGliI21hdmVuXG4gICAqIEBkZWZhdWx0IFwiTUFWRU5fR1BHX1BSSVZBVEVfS0VZXCIgb3Igbm90IHNldCB3aGVuIHVzaW5nIEdpdEh1YiBQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5HcGdQcml2YXRlS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IG5hbWUgd2hpY2ggY29udGFpbnMgdGhlIEdQRyBwcml2YXRlIGtleSBvciBmaWxlIHRoYXQgaW5jbHVkZXNcbiAgICogaXQuIFRoaXMgaXMgdXNlZCB0byBzaWduIHlvdXIgTWF2ZW4gcGFja2FnZXMuIFNlZSBpbnN0cnVjdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9wdWJsaWIjbWF2ZW5cbiAgICogQGRlZmF1bHQgXCJNQVZFTl9HUEdfUFJJVkFURV9LRVlfUEFTU1BIUkFTRVwiIG9yIG5vdCBzZXQgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3BnUHJpdmF0ZUtleVBhc3NwaHJhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgVXNlcm5hbWUgZm9yIG1hdmVuIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEZvciBNYXZlbiBDZW50cmFsLCB5b3Ugd2lsbCBuZWVkIHRvIENyZWF0ZSBKSVJBIGFjY291bnQgYW5kIHRoZW4gcmVxdWVzdCBhXG4gICAqIG5ldyBwcm9qZWN0IChzZWUgbGlua3MpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vaXNzdWVzLnNvbmF0eXBlLm9yZy9zZWN1cmUvU2lnbnVwXG4gICAqIEBzZWUgaHR0cHM6Ly9pc3N1ZXMuc29uYXR5cGUub3JnL3NlY3VyZS9DcmVhdGVJc3N1ZS5qc3BhP2lzc3VldHlwZT0yMSZwaWQ9MTAxMzRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJNQVZFTl9VU0VSTkFNRVwiIG9yIHRoZSBHaXRIdWIgQWN0b3Igd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuVXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgUGFzc3dvcmQgZm9yIG1hdmVuIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEZvciBNYXZlbiBDZW50cmFsLCB5b3Ugd2lsbCBuZWVkIHRvIENyZWF0ZSBKSVJBIGFjY291bnQgYW5kIHRoZW4gcmVxdWVzdCBhXG4gICAqIG5ldyBwcm9qZWN0IChzZWUgbGlua3MpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vaXNzdWVzLnNvbmF0eXBlLm9yZy9zZWN1cmUvU2lnbnVwXG4gICAqIEBzZWUgaHR0cHM6Ly9pc3N1ZXMuc29uYXR5cGUub3JnL3NlY3VyZS9DcmVhdGVJc3N1ZS5qc3BhP2lzc3VldHlwZT0yMSZwaWQ9MTAxMzRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJNQVZFTl9QQVNTV09SRFwiIG9yIFwiR0lUSFVCX1RPS0VOXCIgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgTWF2ZW4gQ2VudHJhbCAoc29uYXR5cGUpIHN0YWdpbmdcbiAgICogcHJvZmlsZSBJRCAoZS5nLiA2OGEwNTM2MzA4MzE3NCkuIFN0YWdpbmcgcHJvZmlsZSBJRCBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICAqIFVSTCBvZiB0aGUgXCJSZWxlYXNlc1wiIHN0YWdpbmcgcHJvZmlsZSB1bmRlciBcIlN0YWdpbmcgUHJvZmlsZXNcIiBpblxuICAgKiBodHRwczovL29zcy5zb25hdHlwZS5vcmcgKGUuZy5cbiAgICogaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnLyNzdGFnaW5nUHJvZmlsZXM7MTFhMzM0NTEyMzQ1MjEpXG5cbiAgICogQGRlZmF1bHQgXCJNQVZFTl9TVEFHSU5HX1BST0ZJTEVfSURcIiBvciBub3Qgc2V0IHdoZW4gdXNpbmcgR2l0SHViIFBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBtYXZlblN0YWdpbmdQcm9maWxlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBHb1B1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlR28gZXh0ZW5kcyBHb1B1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgR28gcmVsZWFzZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29QdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWNyZXQgdGhhdCBpbmNsdWRlcyBhIHBlcnNvbmFsIEdpdEh1YiBhY2Nlc3MgdG9rZW4gdXNlZCB0b1xuICAgKiBwdXNoIHRvIHRoZSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogSWdub3JlZCBpZiBgZ2l0aHViVXNlU3NoYCBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiR09fR0lUSFVCX1RPS0VOXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0IHRoYXQgaW5jbHVkZXMgYSBHaXRIdWIgZGVwbG95IGtleSB1c2VkIHRvIHB1c2ggdG8gdGhlXG4gICAqIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBJZ25vcmVkIGlmIGBnaXRodWJVc2VTc2hgIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiR09fR0lUSFVCX0RFUExPWV9LRVlcIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViRGVwbG95S2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgU1NIIHRvIHB1c2ggdG8gR2l0SHViIGluc3RlYWQgb2YgYSBwZXJzb25hbCBhY2NzZXMgdG9rZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBnaXRodWJVc2VTc2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgcmVwb3NpdG9yeSB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBgbW9kdWxlTmFtZWBcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlJlcG8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlciBuYW1lIHRvIHVzZSBmb3IgdGhlIHJlbGVhc2UgZ2l0IGNvbW1pdC5cbiAgICogQGRlZmF1bHQgXCJnaXRodWItYWN0aW9uc1wiXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVtYWlsIHRvIHVzZSBpbiB0aGUgcmVsZWFzZSBnaXQgY29tbWl0LlxuICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zQGdpdGh1Yi5jb21cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlckVtYWlsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBWZXJzaW9uQXJ0aWZhY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiBhIHRleHQgZmlsZSAocmVsYXRpdmUgdG8gYGRpc3QvYCkgdGhhdCBjb250YWlucyB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIEBleGFtcGxlIHZlcnNpb24udHh0XG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSB0ZXh0IGZpbGUgKHJlbGF0aXZlIHRvIGBkaXN0L2ApIHRoYXQgY29udGFpbnMgdGhlIHJlbGVhc2UgdGFnLlxuICAgKlxuICAgKiBAZXhhbXBsZSByZWxlYXNldGFnLnR4dFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRhZ0ZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGFuIC5tZCBmaWxlIChyZWxhdGl2ZSB0byBgZGlzdC9gKSB0aGF0IGluY2x1ZGVzIHRoZSBjaGFuZ2Vsb2cgZm9yIHRoZSByZWxlYXNlLlxuICAgKlxuICAgKiBAZXhhbXBsZSBjaGFuZ2Vsb2cubWRcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZWxvZ0ZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZXMgaWYgdGhlIGByZWdpc3RyeVVybGAgaXMgYSBBV1MgQ29kZUFydGlmYWN0IHJlZ2lzdHJ5LlxuICogQHBhcmFtIHJlZ2lzdHJ5VXJsIHVybCBvZiByZWdpc3RyeVxuICogQHJldHVybnMgdHJ1ZSBmb3IgQVdTIENvZGVBcnRpZmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBd3NDb2RlQXJ0aWZhY3RSZWdpc3RyeShyZWdpc3RyeVVybDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiByZWdpc3RyeVVybCAmJiBBV1NfQ09ERUFSVElGQUNUX1JFR0lTVFJZX1JFR0VYLnRlc3QocmVnaXN0cnlVcmwpO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hpbmcgb3B0aW9ucyBmb3IgR2l0SHViIHJlbGVhc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2VzUHVibGlzaE9wdGlvbnNcbiAgZXh0ZW5kcyBWZXJzaW9uQXJ0aWZhY3RPcHRpb25zLFxuICAgIENvbW1vblB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogUHVibGlzaGluZyBvcHRpb25zIGZvciBHaXQgcmVsZWFzZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRQdWJsaXNoT3B0aW9ucyBleHRlbmRzIFZlcnNpb25BcnRpZmFjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGFuIC5tZCBmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIHByb2plY3QtbGV2ZWwgY2hhbmdlbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdENoYW5nZWxvZ0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBnaXQtcHVzaCBjb21tYW5kLlxuICAgKlxuICAgKiBTZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgcHVzaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFB1c2hDb21tYW5kPzogc3RyaW5nO1xufVxuXG50eXBlIFB1Ymxpc2hKb2JGYWN0b3J5ID0gKFxuICBicmFuY2g6IHN0cmluZyxcbiAgYnJhbmNoT3B0aW9uczogUGFydGlhbDxCcmFuY2hPcHRpb25zPlxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBKb2I+O1xuIl19
|
|
483
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXlDO0FBQ3pDLG1EQUk2QjtBQUM3QiwrREFNbUM7QUFDbkMsNkRBQTZEO0FBSTdELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUNoQyxNQUFNLHdCQUF3QixHQUFHLG9CQUFvQixDQUFDO0FBQ3RELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLE1BQU0sZ0NBQWdDLEdBQUcsOEJBQThCLENBQUM7QUFDeEUsTUFBTSxnQ0FBZ0MsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RSxNQUFNLCtCQUErQixHQUFHLCtCQUErQixDQUFDO0FBQ3hFLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsRUFBRSxFQUFFLEVBQUU7SUFDTixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3RDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRTtJQUNsQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7Q0FDdkMsQ0FBQztBQXlGRjs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEscUJBQVM7SUF5QnRDLFlBQVksT0FBZ0IsRUFBRSxPQUF5QjtRQUNyRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFWakIsK0RBQStEO1FBQzlDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUV4Qyx5QkFBb0IsR0FBYyxFQUFFLENBQUM7UUFTcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYTtZQUNoQixPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxjQUFjLENBQUM7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUM7UUFFakUsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixJQUFJLGdCQUFnQixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxvQkFBb0IsQ0FDekIsTUFBYyxFQUNkLE9BQStCO1FBRS9CLElBQUksSUFBSSxHQUF3QixFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3hDLElBQUksR0FBRztnQkFDTCxHQUFHLElBQUk7Z0JBQ1AsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQzthQUM1QixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksMkJBQTJCLENBQUMsR0FBRyxLQUFnQjtRQUNwRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVksQ0FBQyxPQUEwQjtRQUM1QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUN4QyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQztRQUU5QyxNQUFNLFFBQVEsR0FDWixTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxRQUFRO1lBQzVDLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCO1lBQ2pDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUV4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDakQsV0FBVyxFQUNULDJHQUEyRztZQUM3RyxHQUFHLEVBQUU7Z0JBQ0gsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLGdCQUFnQixFQUFFLGNBQWM7Z0JBQ2hDLHNCQUFzQixFQUFFLG9CQUFvQixJQUFJLEVBQUU7Z0JBQ2xELFlBQVksRUFBRSxXQUFXO2FBQzFCO1lBQ0QsU0FBUyxFQUFFLG9EQUFvRDtTQUNoRSxDQUFDLENBQUM7UUFDSCxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUNqRDtRQUNELFdBQVcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUUzQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssRUFBRSxFQUFFO1lBQ2pDLE1BQU0sY0FBYyxHQUNsQixPQUFPLENBQUMsY0FBYyxJQUFJLGlDQUFpQyxTQUFTLEVBQUUsQ0FBQztZQUN6RSxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QixDQUFDLE9BQXFDO1FBQ2xFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUU5QywwQkFBMEI7UUFDMUIsTUFBTSxVQUFVLEdBQUcsU0FBUyxjQUFjLEdBQUcsQ0FBQztRQUU5QyxNQUFNLFNBQVMsR0FBRztZQUNoQixxQkFBcUIsVUFBVSxFQUFFO1lBQ2pDLHVCQUF1QjtZQUN2QixNQUFNLGFBQWEsRUFBRTtZQUNyQixNQUFNLFVBQVUsRUFBRTtZQUNsQixzQkFBc0I7U0FDdkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWix1RUFBdUU7UUFDdkUsTUFBTSxpQkFBaUIsR0FBRztZQUN4QixtQkFBbUI7WUFDbkIsR0FBRyxTQUFTLHNCQUFzQjtZQUNsQyxjQUFjO1lBQ2QscUZBQXFGO1lBQ3JGLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsSUFBSTtTQUNMLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVosSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFzQixFQUFFO1lBQ3pDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsWUFBWSxFQUFFLGlCQUFpQjtnQkFDL0IsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLG9CQUFvQjtnQkFDckUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsS0FBSztpQkFDOUI7Z0JBQ0QsV0FBVyxFQUFFO29CQUNYLFlBQVksRUFBRSw2QkFBNkI7b0JBQzNDLGlCQUFpQixFQUFFLDBCQUEwQjtvQkFDN0MsVUFBVSxFQUFFLG1CQUFtQjtpQkFDaEM7Z0JBQ0QsR0FBRyxFQUFFLGlCQUFpQjthQUN2QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLFVBQTZCLEVBQUU7UUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FDbkQsd0JBQXdCLENBQ3pCLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RSxNQUFNLHlCQUF5QixHQUM3QixpQkFBaUI7WUFDakIsT0FBTyxDQUFDLG1CQUFtQixFQUFFLFlBQVk7Z0JBQ3ZDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQztRQUN6QyxNQUFNLFFBQVEsR0FBRyw4QkFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLHdFQUF3RSxDQUN6RSxDQUFDO1NBQ0g7UUFFRCxNQUFNLGVBQWUsR0FBYyxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUVqRSxJQUFJLHlCQUF5QixFQUFFO1lBQzdCLElBQ0UsT0FBTyxDQUFDLG1CQUFtQixFQUFFLGlCQUFpQjtnQkFDOUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUNsRDtnQkFDQSxNQUFNLElBQUksS0FBSyxDQUNiLDZHQUE2RyxDQUM5RyxDQUFDO2FBQ0g7aUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLEVBQUU7Z0JBQ3JELE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7YUFDSDtZQUNELE1BQU0sa0JBQWtCLEdBQUcsb0NBQW9DLENBQUM7WUFDaEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxvREFBb0Q7Z0JBQzFELElBQUksRUFBRSwwQ0FBMEM7Z0JBQ2hELElBQUksRUFBRTtvQkFDSixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsWUFBWTtvQkFDMUQsWUFBWSxFQUFFLE1BQU07aUJBQ3JCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBcUIsRUFBRTtZQUMvRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixxRUFBcUUsQ0FDdEUsQ0FBQzthQUNIO1lBRUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSztnQkFDWCxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtnQkFDakMsZUFBZTtnQkFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7Z0JBQ3JDLFlBQVksRUFBRSxLQUFLO2dCQUNuQixHQUFHLEVBQUU7b0JBQ0gsWUFBWSxFQUFFLGFBQWEsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxRQUFRO29CQUNyRSxZQUFZLEVBQUUsT0FBTyxDQUFDLFFBQVE7aUJBQy9CO2dCQUNELFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUNwRSxRQUFRLEVBQUUsK0JBQWEsQ0FBQyxJQUFJO29CQUM1QixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUM3RDtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO29CQUNsRCx3SEFBd0g7b0JBQ3hILGlCQUFpQixFQUNmLGlCQUFpQixJQUFJLENBQUMseUJBQXlCO3dCQUM3QyxDQUFDLENBQUMsTUFBTSxDQUNKLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUI7NEJBQzVDLG1CQUFtQixDQUN0Qjt3QkFDSCxDQUFDLENBQUMsU0FBUztvQkFDZixxQkFBcUIsRUFDbkIsaUJBQWlCLElBQUksQ0FBQyx5QkFBeUI7d0JBQzdDLENBQUMsQ0FBQyxNQUFNLENBQ0osT0FBTyxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQjs0QkFDaEQsdUJBQXVCLENBQzFCO3dCQUNILENBQUMsQ0FBQyxTQUFTO29CQUNmLGtCQUFrQixFQUNoQixpQkFBaUIsSUFBSSxDQUFDLHlCQUF5Qjt3QkFDN0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxZQUFZO3dCQUMzQyxDQUFDLENBQUMsU0FBUztpQkFDaEI7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxDQUFDLFVBQStCLEVBQUU7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FDdEQsZ0NBQWdDLENBQ2pDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUNoQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLGdCQUFnQixDQUFDLE1BQU07WUFDckMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLElBQUksRUFBRTtZQUM5QyxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDdkMsWUFBWSxFQUFFLGVBQWU7WUFDN0IsV0FBVyxFQUFFO2dCQUNYLFFBQVEsRUFBRSwrQkFBYSxDQUFDLElBQUk7Z0JBQzVCLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsK0JBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDN0Q7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsYUFBYSxFQUFFLE1BQU0sQ0FDbkIsZ0JBQWdCO29CQUNkLENBQUMsQ0FBQyxjQUFjO29CQUNoQixDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLGVBQWUsQ0FDakQ7Z0JBQ0QsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUzthQUMvQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxVQUErQixFQUFFO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FDN0QsZ0NBQWdDLENBQ2pDLENBQUM7UUFDRixNQUFNLGFBQWEsR0FDakIsZ0JBQWdCLElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxTQUFTLENBQUM7UUFDekQsTUFBTSxhQUFhLEdBQ2pCLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRSxJQUFJLGdCQUFnQixJQUFJLGFBQWEsSUFBSSxRQUFRLEVBQUU7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FDYiwyRUFBMkUsQ0FDNUUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLEVBQUUsT0FBTztZQUNiLFlBQVksRUFBRSxlQUFlO1lBQzdCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO1lBQ25DLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLEdBQUcsRUFBRTtnQkFDSCxjQUFjLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3JDLGVBQWUsRUFBRSxhQUFhO2dCQUM5QixvQkFBb0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO2FBQ2pEO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLHFCQUFxQixFQUFFLGdCQUFnQjtvQkFDckMsQ0FBQyxDQUFDLFNBQVM7b0JBQ1gsQ0FBQyxDQUFDLE1BQU0sQ0FDSixPQUFPLENBQUMsd0JBQXdCLElBQUksdUJBQXVCLENBQzVEO2dCQUNMLGdDQUFnQyxFQUFFLGdCQUFnQjtvQkFDaEQsQ0FBQyxDQUFDLFNBQVM7b0JBQ1gsQ0FBQyxDQUFDLE1BQU0sQ0FDSixPQUFPLENBQUMsNEJBQTRCO3dCQUNsQyxrQ0FBa0MsQ0FDckM7Z0JBQ0wsY0FBYyxFQUFFLE1BQU0sQ0FDcEIsT0FBTyxDQUFDLGFBQWE7b0JBQ25CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDekQ7Z0JBQ0QsY0FBYyxFQUFFLGFBQWE7b0JBQzNCLENBQUMsQ0FBQyxxQkFBcUI7b0JBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQztnQkFDckQsd0JBQXdCLEVBQUUsZ0JBQWdCO29CQUN4QyxDQUFDLENBQUMsU0FBUztvQkFDWCxDQUFDLENBQUMsTUFBTSxDQUNKLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSwwQkFBMEIsQ0FDNUQ7YUFDTjtZQUNELFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsK0JBQWEsQ0FBQyxJQUFJO2dCQUM1QixRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLCtCQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzdEO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLFVBQThCLEVBQUU7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLEVBQUUsTUFBTTtZQUNaLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3JDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxJQUFJLEVBQUU7WUFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ3RDLEdBQUcsRUFBRTtnQkFDSCxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2FBQy9DO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLGNBQWMsRUFBRSxNQUFNLENBQ3BCLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxnQkFBZ0IsQ0FDaEQ7Z0JBQ0QsY0FBYyxFQUFFLE1BQU0sQ0FDcEIsT0FBTyxDQUFDLG1CQUFtQixJQUFJLGdCQUFnQixDQUNoRDthQUNGO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLFVBQTRCLEVBQUU7UUFDL0MsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDdEQsTUFBTSxXQUFXLEdBQTJDLEVBQUUsQ0FBQztRQUMvRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDeEIsV0FBVyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7WUFDcEMsV0FBVyxDQUFDLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQztZQUNsRCxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixHQUFHLEVBQUUsdUVBQXVFO2dCQUM1RSxHQUFHLEVBQUU7b0JBQ0gsaUJBQWlCLEVBQUUsTUFBTSxDQUN2QixPQUFPLENBQUMscUJBQXFCLElBQUksc0JBQXNCLENBQ3hEO29CQUNELGFBQWEsRUFBRSxXQUFXLENBQUMsYUFBYTtpQkFDekM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsV0FBVyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQy9CLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FDL0MsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFxQixFQUFFLENBQUMsQ0FBQztZQUMvQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2pDLGVBQWUsRUFBRSxlQUFlO1lBQ2hDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztZQUN4QyxZQUFZLEVBQUUsNkJBQTZCO1lBQzNDLEdBQUcsRUFBRTtnQkFDSCxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxPQUFPLENBQUMsU0FBUztnQkFDN0IsYUFBYSxFQUNYLE9BQU8sQ0FBQyxXQUFXLElBQUksdUNBQTJCLENBQUMsSUFBSTtnQkFDekQsY0FBYyxFQUNaLE9BQU8sQ0FBQyxZQUFZLElBQUksdUNBQTJCLENBQUMsS0FBSztnQkFDM0Qsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjthQUM3QztZQUNELFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FDbkIsT0FHc0I7UUFFdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixPQUFPLEdBQUcsQ0FBQyxDQUFDO2FBQ3pEO1lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQzlCLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEdBQUcsR0FBRztnQkFDL0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDYixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1lBRXhDLHdGQUF3RjtZQUN4RixNQUFNLE1BQU0sR0FBMkIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3RFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQ3JCLENBQUM7WUFDaEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLGtCQUFrQixFQUFFO2dCQUNuRCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO2FBQzNCO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixNQUFNLFlBQVksR0FDaEIsTUFBTSxLQUFLLE1BQU0sSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBRS9ELGdFQUFnRTtnQkFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQy9CLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLFlBQVksRUFBRSxFQUN6RDtvQkFDRSxXQUFXLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQzNELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztvQkFDYixXQUFXLEVBQUUsV0FBVztpQkFDekIsQ0FDRixDQUFDO2dCQUVGLGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQywwQ0FBMEMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFFL0QsZUFBZTtnQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsTUFBTSxLQUFLLEdBQWM7Z0JBQ3ZCO29CQUNFLElBQUksRUFBRSwwQkFBMEI7b0JBQ2hDLElBQUksRUFBRSw4QkFBOEI7b0JBQ3BDLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsK0JBQW1CO3dCQUN6QixJQUFJLEVBQUUsc0JBQXNCO3FCQUM3QjtpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsb0NBQW9DO29CQUMxQyxHQUFHLEVBQUU7d0JBQ0gsTUFBTSxzQkFBc0IseUJBQXlCLGtDQUFzQixFQUFFO3FCQUM5RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2I7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsZUFBZTtnQkFDdkI7b0JBQ0UsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsNklBQTZJO29CQUM3SSxHQUFHLEVBQUUsWUFBWTtvQkFDakIsR0FBRyxFQUFFLE1BQU07aUJBQ1o7YUFDRixDQUFDO1lBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLFFBQVEsRUFBRSwrQkFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRW5FLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHO29CQUNEO3dCQUNFLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLEVBQUUsRUFBRSxrQkFBa0I7d0JBQ3RCLEVBQUUsRUFBRSxpQkFBaUI7d0JBQ3JCLEdBQUcsRUFBRSwyREFBMkQ7cUJBQ2pFO29CQUNEO3dCQUNFLElBQUksRUFBRSxjQUFjO3dCQUNwQixFQUFFLEVBQUUsa0JBQWtCO3dCQUN0QixJQUFJLEVBQUUsdUJBQXVCO3dCQUM3QixJQUFJLEVBQUU7NEJBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7NEJBQzlCLEtBQUssRUFBRSxnRUFBZ0UsSUFBSSxDQUFDLFlBQVksU0FBUzs0QkFDakcsSUFBSSxFQUFFLG1GQUFtRjt5QkFDMUY7d0JBQ0QsR0FBRyxFQUFFOzRCQUNILFlBQVksRUFBRSw2QkFBNkI7eUJBQzVDO3FCQUNGO2lCQUNGLENBQ0YsQ0FBQztnQkFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSwrQkFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDdkQ7WUFFRCxPQUFPO2dCQUNMLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7d0JBQzNDLEdBQUcsSUFBSSxDQUFDLFlBQVk7cUJBQ3JCO29CQUNELElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3ZDLFdBQVcsRUFBRSxLQUFLO29CQUNsQixFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ2xCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsS0FBSztpQkFDTjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZTtRQUNuQyxPQUFPLGlCQUFpQixJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFELENBQUM7O0FBM2lCSCw4QkE0aUJDOzs7QUEzaUJ3QiwrQkFBcUIsR0FBRyxhQUFhLENBQUM7QUE2aUIvRCxTQUFTLE1BQU0sQ0FBQyxVQUFrQjtJQUNoQyxPQUFPLGdCQUFnQixVQUFVLEtBQUssQ0FBQztBQUN6QyxDQUFDO0FBMkhEOztHQUVHO0FBQ0gsSUFBWSx3QkFhWDtBQWJELFdBQVksd0JBQXdCO0lBQ2xDOztPQUVHO0lBQ0gscUZBQXlELENBQUE7SUFFekQ7Ozs7O09BS0c7SUFDSCx1REFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBYlcsd0JBQXdCLEdBQXhCLGdDQUF3QixLQUF4QixnQ0FBd0IsUUFhbkM7QUFtUkQ7Ozs7R0FJRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLFdBQStCO0lBQ3ZFLE9BQU8sV0FBVyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRkQsOERBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBCVUlMRF9BUlRJRkFDVF9OQU1FLFxuICBERUZBVUxUX0dJVEhVQl9BQ1RJT05TX1VTRVIsXG4gIFBFUk1JU1NJT05fQkFDS1VQX0ZJTEUsXG59IGZyb20gXCIuLi9naXRodWIvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBKb2IsXG4gIEpvYlBlcm1pc3Npb24sXG4gIEpvYlBlcm1pc3Npb25zLFxuICBKb2JTdGVwLFxuICBUb29scyxcbn0gZnJvbSBcIi4uL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IGRlZmF1bHROcG1Ub2tlbiB9IGZyb20gXCIuLi9qYXZhc2NyaXB0L25vZGUtcGFja2FnZVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBCcmFuY2hPcHRpb25zIH0gZnJvbSBcIi4vcmVsZWFzZVwiO1xuXG5jb25zdCBQVUJMSUJfVkVSU0lPTiA9IFwibGF0ZXN0XCI7XG5jb25zdCBHSVRIVUJfUEFDS0FHRVNfUkVHSVNUUlkgPSBcIm5wbS5wa2cuZ2l0aHViLmNvbVwiO1xuY29uc3QgQVJUSUZBQ1RTX0RPV05MT0FEX0RJUiA9IFwiZGlzdFwiO1xuY29uc3QgR0lUSFVCX1BBQ0tBR0VTX01BVkVOX1JFUE9TSVRPUlkgPSBcImh0dHBzOi8vbWF2ZW4ucGtnLmdpdGh1Yi5jb21cIjtcbmNvbnN0IEdJVEhVQl9QQUNLQUdFU19OVUdFVF9SRVBPU0lUT1JZID0gXCJodHRwczovL251Z2V0LnBrZy5naXRodWIuY29tXCI7XG5jb25zdCBBV1NfQ09ERUFSVElGQUNUX1JFR0lTVFJZX1JFR0VYID0gLy5jb2RlYXJ0aWZhY3QuKi5hbWF6b25hd3MuY29tLztcbmNvbnN0IFBVQkxJQl9UT09MQ0hBSU4gPSB7XG4gIGpzOiB7fSxcbiAgamF2YTogeyBqYXZhOiB7IHZlcnNpb246IFwiMTEueFwiIH0gfSxcbiAgcHl0aG9uOiB7IHB5dGhvbjogeyB2ZXJzaW9uOiBcIjMueFwiIH0gfSxcbiAgZ286IHsgZ286IHsgdmVyc2lvbjogXCJeMS4xNi4wXCIgfSB9LFxuICBkb3RuZXQ6IHsgZG90bmV0OiB7IHZlcnNpb246IFwiMy54XCIgfSB9LFxufTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgUHVibGlzaGVyYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBqb2IgSUQgdGhhdCBwcm9kdWNlcyB0aGUgYnVpbGQgYXJ0aWZhY3RzLiBBbGwgcHVibGlzaCBqb2JzIHdpbGwgdGFrZSBhIGRlcGVuZGVuY3kgb24gdGhpcyBqb2IuXG4gICAqL1xuICByZWFkb25seSBidWlsZEpvYklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgR2l0SHViIHdvcmtmbG93IGV4cHJlc3Npb24gdXNlZCBhcyBhIGNvbmRpdGlvbiBmb3IgcHVibGlzaGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25kaXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFydGlmYWN0IHRvIGRvd25sb2FkIChlLmcuIGBkaXN0YCkuXG4gICAqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBleHBlY3RlZCB0byBpbmNsdWRlIGEgc3ViZGlyZWN0b3J5IGZvciBlYWNoIHJlbGVhc2UgdGFyZ2V0OlxuICAgKiBgZ29gIChHaXRIdWIpLCBgZG90bmV0YCAoTnVHZXQpLCBgamF2YWAgKE1hdmVuKSwgYGpzYCAobnBtKSwgYHB5dGhvbmBcbiAgICogKFB5UEkpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvcHVibGliXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBwdWJsaWJWZXJzaW9uYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBqc2lpUmVsZWFzZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5vZGUgdmVyc2lvbiB0byBzZXR1cCBpbiBHaXRIdWIgd29ya2Zsb3dzIGlmIGFueSBub2RlLWJhc2VkIENMSSB1dGlsaXRpZXNcbiAgICogYXJlIG5lZWRlZC4gRm9yIGV4YW1wbGUgYHB1YmxpYmAsIHRoZSBDTEkgcHJvamVuIHVzZXMgdG8gcHVibGlzaCByZWxlYXNlcyxcbiAgICogaXMgYW4gbnBtIGxpYnJhcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE0LnhcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGBwdWJsaWJgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWJWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaXNzdWUgd2hlbiBhIHB1Ymxpc2ggdGFzayBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZhaWx1cmVJc3N1ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBhcHBseSB0byB0aGUgaXNzdWUgbWFya2luZyBmYWlsZWQgcHVibGlzaCB0YXNrcy5cbiAgICogT25seSBhcHBsaWVzIGlmIGBmYWlsdXJlSXNzdWVgIGlzIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZmFpbGVkLXJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbHVyZUlzc3VlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgc2VsZWN0aW9uIGxhYmVsc1xuICAgKiBAZGVmYXVsdCBbXCJ1YnVudHUtbGF0ZXN0XCJdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgcHVibGlzaGluZyB0YXNrcyB0aGF0IGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSBhcyB3ZWxsIGFzIHdvcmtmbG93cy5cbiAgICpcbiAgICogTm9ybWFsbHksIHB1Ymxpc2hpbmcgb25seSBoYXBwZW5zIHdpdGhpbiBhdXRvbWF0ZWQgd29ya2Zsb3dzLiBFbmFibGUgdGhpc1xuICAgKiBpbiBvcmRlciB0byBjcmVhdGUgYSBwdWJsaXNoaW5nIHRhc2sgZm9yIGVhY2ggcHVibGlzaGluZyBhY3Rpdml0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUYXNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBhY3R1YWxseSBwdWJsaXNoLCBvbmx5IHByaW50IHRoZSBjb21tYW5kcyB0aGF0IHdvdWxkIGJlIGV4ZWN1dGVkIGluc3RlYWQuXG4gICAqXG4gICAqIFVzZWZ1bCBpZiB5b3Ugd2lzaCB0byBibG9jayBhbGwgcHVibGlzaGluZyBmcm9tIGEgc2luZ2xlIG9wdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBHaXRIdWIgam9icyBmb3IgcHVibGlzaGluZyBtb2R1bGVzIHRvIHBhY2thZ2UgbWFuYWdlcnMuXG4gKlxuICogVW5kZXIgdGhlIGhvb2QsIGl0IHVzZXMgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9wdWJsaWJcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFVCTElTSF9HSVRfVEFTS19OQU1FID0gXCJwdWJsaXNoOmdpdFwiO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZEpvYklkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhcnRpZmFjdE5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpYlZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIGBwdWJsaWJWZXJzaW9uYCAqL1xuICBwdWJsaWMgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYWlsdXJlSXNzdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZmFpbHVyZUlzc3VlTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBydW5zT246IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHB1Ymxpc2hUYXNrczogYm9vbGVhbjtcblxuICAvLyBmdW5jdGlvbnMgdGhhdCBjcmVhdGUgam9icyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBicmFuY2hcbiAgcHJpdmF0ZSByZWFkb25seSBfam9iRmFjdG9yaWVzOiBQdWJsaXNoSm9iRmFjdG9yeVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZ2l0SHViUHJlUHVibGlzaGluZzogSm9iU3RlcFtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkcnlSdW46IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvd05vZGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogUHVibGlzaGVyT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy5idWlsZEpvYklkID0gb3B0aW9ucy5idWlsZEpvYklkO1xuICAgIHRoaXMuYXJ0aWZhY3ROYW1lID0gb3B0aW9ucy5hcnRpZmFjdE5hbWU7XG4gICAgdGhpcy5wdWJsaWJWZXJzaW9uID1cbiAgICAgIG9wdGlvbnMucHVibGliVmVyc2lvbiA/PyBvcHRpb25zLmpzaWlSZWxlYXNlVmVyc2lvbiA/PyBQVUJMSUJfVkVSU0lPTjtcbiAgICB0aGlzLmpzaWlSZWxlYXNlVmVyc2lvbiA9IHRoaXMucHVibGliVmVyc2lvbjtcbiAgICB0aGlzLmNvbmRpdGlvbiA9IG9wdGlvbnMuY29uZGl0aW9uO1xuICAgIHRoaXMuZHJ5UnVuID0gb3B0aW9ucy5kcnlSdW4gPz8gZmFsc2U7XG4gICAgdGhpcy53b3JrZmxvd05vZGVWZXJzaW9uID0gb3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/IFwiMTQueFwiO1xuXG4gICAgdGhpcy5mYWlsdXJlSXNzdWUgPSBvcHRpb25zLmZhaWx1cmVJc3N1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLmZhaWx1cmVJc3N1ZUxhYmVsID0gb3B0aW9ucy5mYWlsdXJlSXNzdWVMYWJlbCA/PyBcImZhaWxlZC1yZWxlYXNlXCI7XG4gICAgdGhpcy5ydW5zT24gPSBvcHRpb25zLndvcmtmbG93UnVuc09uID8/IFtcInVidW50dS1sYXRlc3RcIl07XG4gICAgdGhpcy5wdWJsaXNoVGFza3MgPSBvcHRpb25zLnB1Ymxpc2hUYXNrcyA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgYFJlbGVhc2VgIHRvIGFkZCB0aGUgcHVibGlzaGluZyBqb2JzIHRvIGEgcmVsZWFzZSB3b3JrZmxvd1xuICAgKiBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBicmFuY2guXG4gICAqIEBwYXJhbSBicmFuY2ggVGhlIGJyYW5jaCBuYW1lXG4gICAqIEBwYXJhbSBvcHRpb25zIEJyYW5jaCBvcHRpb25zXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXJKb2JzRm9yQnJhbmNoKFxuICAgIGJyYW5jaDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8QnJhbmNoT3B0aW9ucz5cbiAgKTogUmVjb3JkPHN0cmluZywgSm9iPiB7XG4gICAgbGV0IGpvYnM6IFJlY29yZDxzdHJpbmcsIEpvYj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZmFjdG9yeSBvZiB0aGlzLl9qb2JGYWN0b3JpZXMpIHtcbiAgICAgIGpvYnMgPSB7XG4gICAgICAgIC4uLmpvYnMsXG4gICAgICAgIC4uLmZhY3RvcnkoYnJhbmNoLCBvcHRpb25zKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvYnM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBwcmUgcHVibGlzaGluZyBzdGVwcyBmb3IgdGhlIEdpdEh1YiByZWxlYXNlIGpvYi5cbiAgICpcbiAgICogQHBhcmFtIHN0ZXBzIFRoZSBzdGVwcy5cbiAgICovXG4gIHB1YmxpYyBhZGRHaXRIdWJQcmVQdWJsaXNoaW5nU3RlcHMoLi4uc3RlcHM6IEpvYlN0ZXBbXSkge1xuICAgIHRoaXMuX2dpdEh1YlByZVB1Ymxpc2hpbmcucHVzaCguLi5zdGVwcyk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCB0byBnaXQuXG4gICAqXG4gICAqIFRoaXMgaW5jbHVkZXMgZ2VuZXJhdGluZyBhIHByb2plY3QtbGV2ZWwgY2hhbmdlbG9nIGFuZCByZWxlYXNlIHRhZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9HaXQob3B0aW9uczogR2l0UHVibGlzaE9wdGlvbnMpIHtcbiAgICBjb25zdCByZWxlYXNlVGFnRmlsZSA9IG9wdGlvbnMucmVsZWFzZVRhZ0ZpbGU7XG4gICAgY29uc3QgdmVyc2lvbkZpbGUgPSBvcHRpb25zLnZlcnNpb25GaWxlO1xuICAgIGNvbnN0IGNoYW5nZWxvZyA9IG9wdGlvbnMuY2hhbmdlbG9nRmlsZTtcbiAgICBjb25zdCBwcm9qZWN0Q2hhbmdlbG9nRmlsZSA9IG9wdGlvbnMucHJvamVjdENoYW5nZWxvZ0ZpbGU7XG4gICAgY29uc3QgZ2l0QnJhbmNoID0gb3B0aW9ucy5naXRCcmFuY2ggPz8gXCJtYWluXCI7XG5cbiAgICBjb25zdCB0YXNrTmFtZSA9XG4gICAgICBnaXRCcmFuY2ggPT09IFwibWFpblwiIHx8IGdpdEJyYW5jaCA9PT0gXCJtYXN0ZXJcIlxuICAgICAgICA/IFB1Ymxpc2hlci5QVUJMSVNIX0dJVF9UQVNLX05BTUVcbiAgICAgICAgOiBgJHtQdWJsaXNoZXIuUFVCTElTSF9HSVRfVEFTS19OQU1FfToke2dpdEJyYW5jaH1gO1xuXG4gICAgY29uc3QgcHVibGlzaFRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayh0YXNrTmFtZSwge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJlcGVuZHMgdGhlIHJlbGVhc2UgY2hhbmdlbG9nIG9udG8gdGhlIHByb2plY3QgY2hhbmdlbG9nLCBjcmVhdGVzIGEgcmVsZWFzZSBjb21taXQsIGFuZCB0YWdzIHRoZSByZWxlYXNlXCIsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0hBTkdFTE9HOiBjaGFuZ2Vsb2csXG4gICAgICAgIFJFTEVBU0VfVEFHX0ZJTEU6IHJlbGVhc2VUYWdGaWxlLFxuICAgICAgICBQUk9KRUNUX0NIQU5HRUxPR19GSUxFOiBwcm9qZWN0Q2hhbmdlbG9nRmlsZSA/PyBcIlwiLFxuICAgICAgICBWRVJTSU9OX0ZJTEU6IHZlcnNpb25GaWxlLFxuICAgICAgfSxcbiAgICAgIGNvbmRpdGlvbjogJyEgZ2l0IGxvZyAtLW9uZWxpbmUgLTEgfCBncmVwIC1xIFwiY2hvcmUocmVsZWFzZSk6XCInLFxuICAgIH0pO1xuICAgIGlmIChwcm9qZWN0Q2hhbmdlbG9nRmlsZSkge1xuICAgICAgcHVibGlzaFRhc2suYnVpbHRpbihcInJlbGVhc2UvdXBkYXRlLWNoYW5nZWxvZ1wiKTtcbiAgICB9XG4gICAgcHVibGlzaFRhc2suYnVpbHRpbihcInJlbGVhc2UvdGFnLXZlcnNpb25cIik7XG5cbiAgICBpZiAob3B0aW9ucy5naXRQdXNoQ29tbWFuZCAhPT0gXCJcIikge1xuICAgICAgY29uc3QgZ2l0UHVzaENvbW1hbmQgPVxuICAgICAgICBvcHRpb25zLmdpdFB1c2hDb21tYW5kIHx8IGBnaXQgcHVzaCAtLWZvbGxvdy10YWdzIG9yaWdpbiAke2dpdEJyYW5jaH1gO1xuICAgICAgcHVibGlzaFRhc2suZXhlYyhnaXRQdXNoQ29tbWFuZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hUYXNrO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBHaXRIdWIgUmVsZWFzZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb0dpdEh1YlJlbGVhc2VzKG9wdGlvbnM6IEdpdEh1YlJlbGVhc2VzUHVibGlzaE9wdGlvbnMpIHtcbiAgICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gb3B0aW9ucy5jaGFuZ2Vsb2dGaWxlO1xuICAgIGNvbnN0IHJlbGVhc2VUYWdGaWxlID0gb3B0aW9ucy5yZWxlYXNlVGFnRmlsZTtcblxuICAgIC8vIGNyZWF0ZSBhIGdpdGh1YiByZWxlYXNlXG4gICAgY29uc3QgcmVsZWFzZVRhZyA9IGAkKGNhdCAke3JlbGVhc2VUYWdGaWxlfSlgO1xuXG4gICAgY29uc3QgZ2hSZWxlYXNlID0gW1xuICAgICAgYGdoIHJlbGVhc2UgY3JlYXRlICR7cmVsZWFzZVRhZ31gLFxuICAgICAgXCItUiAkR0lUSFVCX1JFUE9TSVRPUllcIixcbiAgICAgIGAtRiAke2NoYW5nZWxvZ0ZpbGV9YCxcbiAgICAgIGAtdCAke3JlbGVhc2VUYWd9YCxcbiAgICAgIFwiLS10YXJnZXQgJEdJVEhVQl9SRUZcIixcbiAgICBdLmpvaW4oXCIgXCIpO1xuXG4gICAgLy8gcmVsZWFzZSBzY3JpcHQgdGhhdCBkb2VzIG5vdCBlcnJvciB3aGVuIHJlLXJlbGVhc2luZyBhIGdpdmVuIHZlcnNpb25cbiAgICBjb25zdCBpZGVtcG90ZW50UmVsZWFzZSA9IFtcbiAgICAgIFwiZXJyb3V0PSQobWt0ZW1wKTtcIixcbiAgICAgIGAke2doUmVsZWFzZX0gMj4gJGVycm91dCAmJiB0cnVlO2AsXG4gICAgICBcImV4aXRjb2RlPSQ/O1wiLFxuICAgICAgJ2lmIFsgJGV4aXRjb2RlIC1uZSAwIF0gJiYgISBncmVwIC1xIFwiUmVsZWFzZS50YWdfbmFtZSBhbHJlYWR5IGV4aXN0c1wiICRlcnJvdXQ7IHRoZW4nLFxuICAgICAgXCJjYXQgJGVycm91dDtcIixcbiAgICAgIFwiZXhpdCAkZXhpdGNvZGU7XCIsXG4gICAgICBcImZpXCIsXG4gICAgXS5qb2luKFwiIFwiKTtcblxuICAgIHRoaXMuYWRkUHVibGlzaEpvYigoKTogUHVibGlzaEpvYk9wdGlvbnMgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogXCJnaXRodWJcIixcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIkdpdEh1YiBSZWxlYXNlc1wiLFxuICAgICAgICBwcmVQdWJsaXNoU3RlcHM6IG9wdGlvbnMucHJlUHVibGlzaFN0ZXBzID8/IHRoaXMuX2dpdEh1YlByZVB1Ymxpc2hpbmcsXG4gICAgICAgIHB1Ymxpc2hUb29sczogb3B0aW9ucy5wdWJsaXNoVG9vbHMsXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB7XG4gICAgICAgICAgR0lUSFVCX1RPS0VOOiBcIiR7eyBzZWNyZXRzLkdJVEhVQl9UT0tFTiB9fVwiLFxuICAgICAgICAgIEdJVEhVQl9SRVBPU0lUT1JZOiBcIiR7eyBnaXRodWIucmVwb3NpdG9yeSB9fVwiLFxuICAgICAgICAgIEdJVEhVQl9SRUY6IFwiJHt7IGdpdGh1Yi5yZWYgfX1cIixcbiAgICAgICAgfSxcbiAgICAgICAgcnVuOiBpZGVtcG90ZW50UmVsZWFzZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaGVzIGFydGlmYWN0cyBmcm9tIGBqcy8qKmAgdG8gbnBtLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zXG4gICAqL1xuICBwdWJsaWMgcHVibGlzaFRvTnBtKG9wdGlvbnM6IE5wbVB1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBpc0dpdEh1YlBhY2thZ2VzID0gb3B0aW9ucy5yZWdpc3RyeT8uc3RhcnRzV2l0aChcbiAgICAgIEdJVEhVQl9QQUNLQUdFU19SRUdJU1RSWVxuICAgICk7XG4gICAgY29uc3QgaXNBd3NDb2RlQXJ0aWZhY3QgPSBpc0F3c0NvZGVBcnRpZmFjdFJlZ2lzdHJ5KG9wdGlvbnMucmVnaXN0cnkpO1xuICAgIGNvbnN0IGlzQXdzQ29kZUFydGlmYWN0V2l0aE9pZGMgPVxuICAgICAgaXNBd3NDb2RlQXJ0aWZhY3QgJiZcbiAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8uYXV0aFByb3ZpZGVyID09PVxuICAgICAgICBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JREM7XG4gICAgY29uc3QgbnBtVG9rZW4gPSBkZWZhdWx0TnBtVG9rZW4ob3B0aW9ucy5ucG1Ub2tlblNlY3JldCwgb3B0aW9ucy5yZWdpc3RyeSk7XG5cbiAgICBpZiAob3B0aW9ucy5kaXN0VGFnKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLndhcm4oXG4gICAgICAgIFwiVGhlIGBkaXN0VGFnYCBvcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBucG1EaXN0VGFnIG9wdGlvbiBpbnN0ZWFkLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHByZVB1Ymxpc2hTdGVwczogSm9iU3RlcFtdID0gb3B0aW9ucy5wcmVQdWJsaXNoU3RlcHMgPz8gW107XG5cbiAgICBpZiAoaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkYykge1xuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LmFjY2Vzc0tleUlkU2VjcmV0IHx8XG4gICAgICAgIG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8uc2VjcmV0QWNjZXNzS2V5U2VjcmV0XG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiYWNjZXNzIGFuZCBzZWNyZXQga2V5IHBhaXIgc2hvdWxkIG5vdCBiZSBwcm92aWRlZCB3aGVuIHVzaW5nIEdJVEhVQl9PSURDIGF1dGggcHJvdmlkZXIgZm9yIEFXUyBDb2RlQXJ0aWZhY3RcIlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zPy5yb2xlVG9Bc3N1bWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdcInJvbGVUb0Fzc3VtZVwiIHByb3BlcnR5IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgR0lUSFVCX09JREMgZm9yIEFXUyBDb2RlQXJ0aWZhY3Qgb3B0aW9ucydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlZ2lvbkNhcHR1cmVSZWdleCA9IC9jb2RlYXJ0aWZhY3RcXC4oLispXFwuYW1hem9uYXdzXFwuY29tLztcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IG9wdGlvbnMucmVnaXN0cnk/Lm1hdGNoKHJlZ2lvbkNhcHR1cmVSZWdleCk/LlsxXTtcbiAgICAgIHByZVB1Ymxpc2hTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJDb25maWd1cmUgQVdTIENyZWRlbnRpYWxzIHZpYSBHaXRIdWIgT0lEQyBQcm92aWRlclwiLFxuICAgICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjFcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIFwicm9sZS10by1hc3N1bWVcIjogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zLnJvbGVUb0Fzc3VtZSxcbiAgICAgICAgICBcImF3cy1yZWdpb25cIjogcmVnaW9uLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKChfYnJhbmNoLCBicmFuY2hPcHRpb25zKTogUHVibGlzaEpvYk9wdGlvbnMgPT4ge1xuICAgICAgaWYgKGJyYW5jaE9wdGlvbnMubnBtRGlzdFRhZyAmJiBvcHRpb25zLmRpc3RUYWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiY2Fubm90IHNldCBicmFuY2gtbGV2ZWwgbnBtRGlzdFRhZyBhbmQgbnBtRGlzdFRhZyBpbiBwdWJsaXNoVG9OcG0oKVwiXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IFwibnBtXCIsXG4gICAgICAgIHB1Ymxpc2hUb29sczogUFVCTElCX1RPT0xDSEFJTi5qcyxcbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzLFxuICAgICAgICBydW46IHRoaXMucHVibGliQ29tbWFuZChcInB1YmxpYi1ucG1cIiksXG4gICAgICAgIHJlZ2lzdHJ5TmFtZTogXCJucG1cIixcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgTlBNX0RJU1RfVEFHOiBicmFuY2hPcHRpb25zLm5wbURpc3RUYWcgPz8gb3B0aW9ucy5kaXN0VGFnID8/IFwibGF0ZXN0XCIsXG4gICAgICAgICAgTlBNX1JFR0lTVFJZOiBvcHRpb25zLnJlZ2lzdHJ5LFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgIGlkVG9rZW46IGlzQXdzQ29kZUFydGlmYWN0V2l0aE9pZGMgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgcGFja2FnZXM6IGlzR2l0SHViUGFja2FnZXMgPyBKb2JQZXJtaXNzaW9uLldSSVRFIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgICB3b3JrZmxvd0Vudjoge1xuICAgICAgICAgIE5QTV9UT0tFTjogbnBtVG9rZW4gPyBzZWNyZXQobnBtVG9rZW4pIDogdW5kZWZpbmVkLFxuICAgICAgICAgIC8vIGlmIHdlIGFyZSBwdWJsaXNoaW5nIHRvIEFXUyBDb2RlQXJ0aWZhY3QsIHBhc3MgQVdTIGFjY2VzcyBrZXlzIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIE5QTV9UT0tFTiB1c2luZyBBV1MgQ0xJLlxuICAgICAgICAgIEFXU19BQ0NFU1NfS0VZX0lEOlxuICAgICAgICAgICAgaXNBd3NDb2RlQXJ0aWZhY3QgJiYgIWlzQXdzQ29kZUFydGlmYWN0V2l0aE9pZGNcbiAgICAgICAgICAgICAgPyBzZWNyZXQoXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LmFjY2Vzc0tleUlkU2VjcmV0ID8/XG4gICAgICAgICAgICAgICAgICAgIFwiQVdTX0FDQ0VTU19LRVlfSURcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZOlxuICAgICAgICAgICAgaXNBd3NDb2RlQXJ0aWZhY3QgJiYgIWlzQXdzQ29kZUFydGlmYWN0V2l0aE9pZGNcbiAgICAgICAgICAgICAgPyBzZWNyZXQoXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmNvZGVBcnRpZmFjdE9wdGlvbnM/LnNlY3JldEFjY2Vzc0tleVNlY3JldCA/P1xuICAgICAgICAgICAgICAgICAgICBcIkFXU19TRUNSRVRfQUNDRVNTX0tFWVwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBBV1NfUk9MRV9UT19BU1NVTUU6XG4gICAgICAgICAgICBpc0F3c0NvZGVBcnRpZmFjdCAmJiAhaXNBd3NDb2RlQXJ0aWZhY3RXaXRoT2lkY1xuICAgICAgICAgICAgICA/IG9wdGlvbnMuY29kZUFydGlmYWN0T3B0aW9ucz8ucm9sZVRvQXNzdW1lXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoZXMgYXJ0aWZhY3RzIGZyb20gYGRvdG5ldC8qKmAgdG8gTnVHZXQgR2FsbGVyeS5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHB1Ymxpc2hUb051Z2V0KG9wdGlvbnM6IE51Z2V0UHVibGlzaE9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGlzR2l0SHViUGFja2FnZXMgPSBvcHRpb25zLm51Z2V0U2VydmVyPy5zdGFydHNXaXRoKFxuICAgICAgR0lUSFVCX1BBQ0tBR0VTX05VR0VUX1JFUE9TSVRPUllcbiAgICApO1xuICAgIHRoaXMuYWRkUHVibGlzaEpvYihcbiAgICAgIChfYnJhbmNoLCBfYnJhbmNoT3B0aW9ucyk6IFB1Ymxpc2hKb2JPcHRpb25zID0+ICh7XG4gICAgICAgIG5hbWU6IFwibnVnZXRcIixcbiAgICAgICAgcHVibGlzaFRvb2xzOiBQVUJMSUJfVE9PTENIQUlOLmRvdG5ldCxcbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzOiBvcHRpb25zLnByZVB1Ymxpc2hTdGVwcyA/PyBbXSxcbiAgICAgICAgcnVuOiB0aGlzLnB1YmxpYkNvbW1hbmQoXCJwdWJsaWItbnVnZXRcIiksXG4gICAgICAgIHJlZ2lzdHJ5TmFtZTogXCJOdUdldCBHYWxsZXJ5XCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgICBwYWNrYWdlczogaXNHaXRIdWJQYWNrYWdlcyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB7XG4gICAgICAgICAgTlVHRVRfQVBJX0tFWTogc2VjcmV0KFxuICAgICAgICAgICAgaXNHaXRIdWJQYWNrYWdlc1xuICAgICAgICAgICAgICA/IFwiR0lUSFVCX1RPS0VOXCJcbiAgICAgICAgICAgICAgOiBvcHRpb25zLm51Z2V0QXBpS2V5U2VjcmV0ID8/IFwiTlVHRVRfQVBJX0tFWVwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICBOVUdFVF9TRVJWRVI6IG9wdGlvbnMubnVnZXRTZXJ2ZXIgPz8gdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlcyBhcnRpZmFjdHMgZnJvbSBgamF2YS8qKmAgdG8gTWF2ZW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9NYXZlbihvcHRpb25zOiBNYXZlblB1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBpc0dpdEh1YlBhY2thZ2VzID0gb3B0aW9ucy5tYXZlblJlcG9zaXRvcnlVcmw/LnN0YXJ0c1dpdGgoXG4gICAgICBHSVRIVUJfUEFDS0FHRVNfTUFWRU5fUkVQT1NJVE9SWVxuICAgICk7XG4gICAgY29uc3QgaXNHaXRIdWJBY3RvciA9XG4gICAgICBpc0dpdEh1YlBhY2thZ2VzICYmIG9wdGlvbnMubWF2ZW5Vc2VybmFtZSA9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF2ZW5TZXJ2ZXJJZCA9XG4gICAgICBvcHRpb25zLm1hdmVuU2VydmVySWQgPz8gKGlzR2l0SHViUGFja2FnZXMgPyBcImdpdGh1YlwiIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChpc0dpdEh1YlBhY2thZ2VzICYmIG1hdmVuU2VydmVySWQgIT0gXCJnaXRodWJcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAncHVibGlzaGluZyB0byBHaXRIdWIgUGFja2FnZXMgcmVxdWlyZXMgdGhlIFwibWF2ZW5TZXJ2ZXJJZFwiIHRvIGJlIFwiZ2l0aHViXCInXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkUHVibGlzaEpvYihcbiAgICAgIChfYnJhbmNoLCBfYnJhbmNoT3B0aW9ucyk6IFB1Ymxpc2hKb2JPcHRpb25zID0+ICh7XG4gICAgICAgIG5hbWU6IFwibWF2ZW5cIixcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIk1hdmVuIENlbnRyYWxcIixcbiAgICAgICAgcHVibGlzaFRvb2xzOiBQVUJMSUJfVE9PTENIQUlOLmphdmEsXG4gICAgICAgIHByZVB1Ymxpc2hTdGVwczogb3B0aW9ucy5wcmVQdWJsaXNoU3RlcHMgPz8gW10sXG4gICAgICAgIHJ1bjogdGhpcy5wdWJsaWJDb21tYW5kKFwicHVibGliLW1hdmVuXCIpLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBNQVZFTl9FTkRQT0lOVDogb3B0aW9ucy5tYXZlbkVuZHBvaW50LFxuICAgICAgICAgIE1BVkVOX1NFUlZFUl9JRDogbWF2ZW5TZXJ2ZXJJZCxcbiAgICAgICAgICBNQVZFTl9SRVBPU0lUT1JZX1VSTDogb3B0aW9ucy5tYXZlblJlcG9zaXRvcnlVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB7XG4gICAgICAgICAgTUFWRU5fR1BHX1BSSVZBVEVfS0VZOiBpc0dpdEh1YlBhY2thZ2VzXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBzZWNyZXQoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tYXZlbkdwZ1ByaXZhdGVLZXlTZWNyZXQgPz8gXCJNQVZFTl9HUEdfUFJJVkFURV9LRVlcIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIE1BVkVOX0dQR19QUklWQVRFX0tFWV9QQVNTUEhSQVNFOiBpc0dpdEh1YlBhY2thZ2VzXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBzZWNyZXQoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tYXZlbkdwZ1ByaXZhdGVLZXlQYXNzcGhyYXNlID8/XG4gICAgICAgICAgICAgICAgICBcIk1BVkVOX0dQR19QUklWQVRFX0tFWV9QQVNTUEhSQVNFXCJcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICBNQVZFTl9QQVNTV09SRDogc2VjcmV0KFxuICAgICAgICAgICAgb3B0aW9ucy5tYXZlblBhc3N3b3JkID8/XG4gICAgICAgICAgICAgIChpc0dpdEh1YlBhY2thZ2VzID8gXCJHSVRIVUJfVE9LRU5cIiA6IFwiTUFWRU5fUEFTU1dPUkRcIilcbiAgICAgICAgICApLFxuICAgICAgICAgIE1BVkVOX1VTRVJOQU1FOiBpc0dpdEh1YkFjdG9yXG4gICAgICAgICAgICA/IFwiJHt7IGdpdGh1Yi5hY3RvciB9fVwiXG4gICAgICAgICAgICA6IHNlY3JldChvcHRpb25zLm1hdmVuVXNlcm5hbWUgPz8gXCJNQVZFTl9VU0VSTkFNRVwiKSxcbiAgICAgICAgICBNQVZFTl9TVEFHSU5HX1BST0ZJTEVfSUQ6IGlzR2l0SHViUGFja2FnZXNcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHNlY3JldChcbiAgICAgICAgICAgICAgICBvcHRpb25zLm1hdmVuU3RhZ2luZ1Byb2ZpbGVJZCA/PyBcIk1BVkVOX1NUQUdJTkdfUFJPRklMRV9JRFwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgY29udGVudHM6IEpvYlBlcm1pc3Npb24uUkVBRCxcbiAgICAgICAgICBwYWNrYWdlczogaXNHaXRIdWJQYWNrYWdlcyA/IEpvYlBlcm1pc3Npb24uV1JJVEUgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaGVzIHdoZWVsIGFydGlmYWN0cyBmcm9tIGBweXRob25gIHRvIFB5UEkuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9QeVBpKG9wdGlvbnM6IFB5UGlQdWJsaXNoT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5hZGRQdWJsaXNoSm9iKFxuICAgICAgKF9icmFuY2gsIF9icmFuY2hPcHRpb25zKTogUHVibGlzaEpvYk9wdGlvbnMgPT4gKHtcbiAgICAgICAgbmFtZTogXCJweXBpXCIsXG4gICAgICAgIHJlZ2lzdHJ5TmFtZTogXCJQeVBJXCIsXG4gICAgICAgIHB1Ymxpc2hUb29sczogUFVCTElCX1RPT0xDSEFJTi5weXRob24sXG4gICAgICAgIHByZVB1Ymxpc2hTdGVwczogb3B0aW9ucy5wcmVQdWJsaXNoU3RlcHMgPz8gW10sXG4gICAgICAgIHJ1bjogdGhpcy5wdWJsaWJDb21tYW5kKFwicHVibGliLXB5cGlcIiksXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIFRXSU5FX1JFUE9TSVRPUllfVVJMOiBvcHRpb25zLnR3aW5lUmVnaXN0cnlVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RW52OiB7XG4gICAgICAgICAgVFdJTkVfVVNFUk5BTUU6IHNlY3JldChcbiAgICAgICAgICAgIG9wdGlvbnMudHdpbmVVc2VybmFtZVNlY3JldCA/PyBcIlRXSU5FX1VTRVJOQU1FXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIFRXSU5FX1BBU1NXT1JEOiBzZWNyZXQoXG4gICAgICAgICAgICBvcHRpb25zLnR3aW5lUGFzc3dvcmRTZWNyZXQgPz8gXCJUV0lORV9QQVNTV09SRFwiXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgZ28gcHVibGlzaGluZyBqb2IuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBwdWJsaXNoVG9HbyhvcHRpb25zOiBHb1B1Ymxpc2hPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBwcmVQdWJsaXNoU3RlcHMgPSBvcHRpb25zLnByZVB1Ymxpc2hTdGVwcyA/PyBbXTtcbiAgICBjb25zdCB3b3JrZmxvd0VudjogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gPSB7fTtcbiAgICBpZiAob3B0aW9ucy5naXRodWJVc2VTc2gpIHtcbiAgICAgIHdvcmtmbG93RW52LkdJVEhVQl9VU0VfU1NIID0gXCJ0cnVlXCI7XG4gICAgICB3b3JrZmxvd0Vudi5TU0hfQVVUSF9TT0NLID0gXCIvdG1wL3NzaF9hZ2VudC5zb2NrXCI7XG4gICAgICBwcmVQdWJsaXNoU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiU2V0dXAgR2l0SHViIGRlcGxveSBrZXlcIixcbiAgICAgICAgcnVuOiAnc3NoLWFnZW50IC1hICR7U1NIX0FVVEhfU09DS30gJiYgc3NoLWFkZCAtIDw8PCBcIiR7R0lUSFVCX0RFUExPWV9LRVl9XCInLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBHSVRIVUJfREVQTE9ZX0tFWTogc2VjcmV0KFxuICAgICAgICAgICAgb3B0aW9ucy5naXRodWJEZXBsb3lLZXlTZWNyZXQgPz8gXCJHT19HSVRIVUJfREVQTE9ZX0tFWVwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICBTU0hfQVVUSF9TT0NLOiB3b3JrZmxvd0Vudi5TU0hfQVVUSF9TT0NLLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdvcmtmbG93RW52LkdJVEhVQl9UT0tFTiA9IHNlY3JldChcbiAgICAgICAgb3B0aW9ucy5naXRodWJUb2tlblNlY3JldCA/PyBcIkdPX0dJVEhVQl9UT0tFTlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkUHVibGlzaEpvYihcbiAgICAgIChfYnJhbmNoLCBfYnJhbmNoT3B0aW9ucyk6IFB1Ymxpc2hKb2JPcHRpb25zID0+ICh7XG4gICAgICAgIG5hbWU6IFwiZ29sYW5nXCIsXG4gICAgICAgIHB1Ymxpc2hUb29sczogUFVCTElCX1RPT0xDSEFJTi5nbyxcbiAgICAgICAgcHJlUHVibGlzaFN0ZXBzOiBwcmVQdWJsaXNoU3RlcHMsXG4gICAgICAgIHJ1bjogdGhpcy5wdWJsaWJDb21tYW5kKFwicHVibGliLWdvbGFuZ1wiKSxcbiAgICAgICAgcmVnaXN0cnlOYW1lOiBcIkdpdEh1YiBHbyBNb2R1bGUgUmVwb3NpdG9yeVwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBHSVRIVUJfUkVQTzogb3B0aW9ucy5naXRodWJSZXBvLFxuICAgICAgICAgIEdJVF9CUkFOQ0g6IG9wdGlvbnMuZ2l0QnJhbmNoLFxuICAgICAgICAgIEdJVF9VU0VSX05BTUU6XG4gICAgICAgICAgICBvcHRpb25zLmdpdFVzZXJOYW1lID8/IERFRkFVTFRfR0lUSFVCX0FDVElPTlNfVVNFUi5uYW1lLFxuICAgICAgICAgIEdJVF9VU0VSX0VNQUlMOlxuICAgICAgICAgICAgb3B0aW9ucy5naXRVc2VyRW1haWwgPz8gREVGQVVMVF9HSVRIVUJfQUNUSU9OU19VU0VSLmVtYWlsLFxuICAgICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogb3B0aW9ucy5naXRDb21taXRNZXNzYWdlLFxuICAgICAgICB9LFxuICAgICAgICB3b3JrZmxvd0Vudjogd29ya2Zsb3dFbnYsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFB1Ymxpc2hKb2IoXG4gICAgZmFjdG9yeTogKFxuICAgICAgYnJhbmNoOiBzdHJpbmcsXG4gICAgICBicmFuY2hPcHRpb25zOiBQYXJ0aWFsPEJyYW5jaE9wdGlvbnM+XG4gICAgKSA9PiBQdWJsaXNoSm9iT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl9qb2JGYWN0b3JpZXMucHVzaCgoYnJhbmNoLCBicmFuY2hPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0gZmFjdG9yeShicmFuY2gsIGJyYW5jaE9wdGlvbnMpO1xuICAgICAgY29uc3Qgam9ibmFtZSA9IGByZWxlYXNlXyR7b3B0cy5uYW1lfWA7XG4gICAgICBpZiAoam9ibmFtZSBpbiB0aGlzLl9qb2JGYWN0b3JpZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgam9iIHdpdGggbmFtZSBcIiR7am9ibmFtZX1cImApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tYW5kVG9SdW4gPSB0aGlzLmRyeVJ1blxuICAgICAgICA/IGBlY2hvIFwiRFJZIFJVTjogJHtvcHRzLnJ1bn1cImBcbiAgICAgICAgOiBvcHRzLnJ1bjtcbiAgICAgIGNvbnN0IHJlcXVpcmVkRW52ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgICAgLy8gam9iRW52IGlzIHRoZSBlbnYgd2UgcGFzcyB0byB0aGUgZ2l0aHViIGpvYiAodGFzayBlbnZpcm9ubWVudCArIHNlY3JldHMvZXhwcmVzc2lvbnMpLlxuICAgICAgY29uc3Qgam9iRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyAuLi5vcHRzLmVudiB9O1xuICAgICAgY29uc3Qgd29ya2Zsb3dFbnZFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob3B0cy53b3JrZmxvd0VudiA/PyB7fSkuZmlsdGVyKFxuICAgICAgICAoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT0gdW5kZWZpbmVkXG4gICAgICApIGFzIHN0cmluZ1tdW107XG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCBleHByZXNzaW9uXSBvZiB3b3JrZmxvd0VudkVudHJpZXMpIHtcbiAgICAgICAgcmVxdWlyZWRFbnYucHVzaChuYW1lKTtcbiAgICAgICAgam9iRW52W25hbWVdID0gZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHVibGlzaFRhc2tzKSB7XG4gICAgICAgIGNvbnN0IGJyYW5jaFN1ZmZpeCA9XG4gICAgICAgICAgYnJhbmNoID09PSBcIm1haW5cIiB8fCBicmFuY2ggPT09IFwibWFzdGVyXCIgPyBcIlwiIDogYDoke2JyYW5jaH1gO1xuXG4gICAgICAgIC8vIGRlZmluZSBhIHRhc2sgd2hpY2ggY2FuIGJlIHVzZWQgdGhyb3VnaCBgcHJvamVuIHB1Ymxpc2g6eHh4YC5cbiAgICAgICAgY29uc3QgdGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKFxuICAgICAgICAgIGBwdWJsaXNoOiR7b3B0cy5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCl9JHticmFuY2hTdWZmaXh9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYFB1Ymxpc2ggdGhpcyBwYWNrYWdlIHRvICR7b3B0cy5yZWdpc3RyeU5hbWV9YCxcbiAgICAgICAgICAgIGVudjogb3B0cy5lbnYsXG4gICAgICAgICAgICByZXF1aXJlZEVudjogcmVxdWlyZWRFbnYsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGZpcnN0IHZlcmlmeSB0aGF0IHdlIGFyZSBvbiB0aGUgY29ycmVjdCBicmFuY2hcbiAgICAgICAgdGFzay5leGVjKGB0ZXN0IFwiJChnaXQgYnJhbmNoIC0tc2hvdy1jdXJyZW50KVwiID0gXCIke2JyYW5jaH1cImApO1xuXG4gICAgICAgIC8vIHJ1biBjb21tYW5kc1xuICAgICAgICB0YXNrLmV4ZWMoY29tbWFuZFRvUnVuKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RlcHM6IEpvYlN0ZXBbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgYnVpbGQgYXJ0aWZhY3RzXCIsXG4gICAgICAgICAgdXNlczogXCJhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QHYzXCIsXG4gICAgICAgICAgd2l0aDoge1xuICAgICAgICAgICAgbmFtZTogQlVJTERfQVJUSUZBQ1RfTkFNRSxcbiAgICAgICAgICAgIHBhdGg6IEFSVElGQUNUU19ET1dOTE9BRF9ESVIsIC8vIHRoaXMgbXVzdCBiZSBcImRpc3RcIiBmb3IgcHVibGliXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiUmVzdG9yZSBidWlsZCBhcnRpZmFjdCBwZXJtaXNzaW9uc1wiLFxuICAgICAgICAgIHJ1bjogW1xuICAgICAgICAgICAgYGNkICR7QVJUSUZBQ1RTX0RPV05MT0FEX0RJUn0gJiYgc2V0ZmFjbCAtLXJlc3RvcmU9JHtQRVJNSVNTSU9OX0JBQ0tVUF9GSUxFfWAsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICB9LFxuICAgICAgICAuLi5vcHRzLnByZVB1Ymxpc2hTdGVwcyxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiUmVsZWFzZVwiLFxuICAgICAgICAgIC8vIGl0IHdvdWxkIGhhdmUgYmVlbiBuaWNlIGlmIHdlIGNvdWxkIGp1c3QgcnVuIFwicHJvamVuIHB1Ymxpc2g6eHh4XCIgaGVyZSBidXQgdGhhdCBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB0aGlzIGpvYiBkb2VzIG5vdCBjaGVja291dCBzb3VyY2VzXG4gICAgICAgICAgcnVuOiBjb21tYW5kVG9SdW4sXG4gICAgICAgICAgZW52OiBqb2JFbnYsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBwZXJtcyA9IG9wdHMucGVybWlzc2lvbnMgPz8geyBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFEIH07XG5cbiAgICAgIGlmICh0aGlzLmZhaWx1cmVJc3N1ZSkge1xuICAgICAgICBzdGVwcy5wdXNoKFxuICAgICAgICAgIC4uLltcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJFeHRyYWN0IFZlcnNpb25cIixcbiAgICAgICAgICAgICAgaWY6IFwiJHt7IGZhaWx1cmUoKSB9fVwiLFxuICAgICAgICAgICAgICBpZDogXCJleHRyYWN0LXZlcnNpb25cIixcbiAgICAgICAgICAgICAgcnVuOiAnZWNobyBcIjo6c2V0LW91dHB1dCBuYW1lPVZFUlNJT046OiQoY2F0IGRpc3QvdmVyc2lvbi50eHQpXCInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJDcmVhdGUgSXNzdWVcIixcbiAgICAgICAgICAgICAgaWY6IFwiJHt7IGZhaWx1cmUoKSB9fVwiLFxuICAgICAgICAgICAgICB1c2VzOiBcImltam9obmJvL2lzc3VlLWJvdEB2M1wiLFxuICAgICAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICAgICAgbGFiZWxzOiB0aGlzLmZhaWx1cmVJc3N1ZUxhYmVsLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBgUHVibGlzaGluZyB2XFwke3sgc3RlcHMuZXh0cmFjdC12ZXJzaW9uLm91dHB1dHMuVkVSU0lPTiB9fSB0byAke29wdHMucmVnaXN0cnlOYW1lfSBmYWlsZWRgLFxuICAgICAgICAgICAgICAgIGJvZHk6IFwiU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS8ke3sgZ2l0aHViLnJlcG9zaXRvcnkgfX0vYWN0aW9ucy9ydW5zLyR7eyBnaXRodWIucnVuX2lkIH19XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgIEdJVEhVQl9UT0tFTjogXCIke3sgc2VjcmV0cy5HSVRIVUJfVE9LRU4gfX1cIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICApO1xuICAgICAgICBPYmplY3QuYXNzaWduKHBlcm1zLCB7IGlzc3VlczogSm9iUGVybWlzc2lvbi5XUklURSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2pvYm5hbWVdOiB7XG4gICAgICAgICAgdG9vbHM6IHtcbiAgICAgICAgICAgIG5vZGU6IHsgdmVyc2lvbjogdGhpcy53b3JrZmxvd05vZGVWZXJzaW9uIH0sXG4gICAgICAgICAgICAuLi5vcHRzLnB1Ymxpc2hUb29scyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IGBQdWJsaXNoIHRvICR7b3B0cy5yZWdpc3RyeU5hbWV9YCxcbiAgICAgICAgICBwZXJtaXNzaW9uczogcGVybXMsXG4gICAgICAgICAgaWY6IHRoaXMuY29uZGl0aW9uLFxuICAgICAgICAgIG5lZWRzOiBbdGhpcy5idWlsZEpvYklkXSxcbiAgICAgICAgICBydW5zT246IHRoaXMucnVuc09uLFxuICAgICAgICAgIHN0ZXBzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHVibGliQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYG5weCAtcCBwdWJsaWJAJHt0aGlzLnB1YmxpYlZlcnNpb259ICR7Y29tbWFuZH1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlY3JldChzZWNyZXROYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcXCR7eyBzZWNyZXRzLiR7c2VjcmV0TmFtZX0gfX1gO1xufVxuXG5pbnRlcmZhY2UgUHVibGlzaEpvYk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0XG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSByZWdpc3RyeSAoZm9yIGRlc2NyaXB0aW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEpvYiBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnM/OiBKb2JQZXJtaXNzaW9ucztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHB1Ymxpc2ggam9iIChzaG91bGQgYmUgbG93ZXJjYXNlKS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdG8gaW5jbHVkZSBvbmx5IGluIHRoZSB3b3JrZmxvdyAoYW5kIG5vdCB0YXNrcykuXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Vudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGJlZm9yZSB0aGUgcmVsZWFzZSBjb21tYW5kIGZvciBwcmVwYXJpbmcgdGhlIGRpc3QvIG91dHB1dC5cbiAgICovXG4gIHJlYWRvbmx5IHByZVB1Ymxpc2hTdGVwczogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBUb29scyBzZXR1cCBmb3IgdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCAtIG5vIHRvb2xzIGFyZSBpbnN0YWxsZWRcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb29scz86IFRvb2xzO1xufVxuXG4vKipcbiAqIENvbW1vbiBwdWJsaXNoaW5nIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25QdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGJlZm9yZSBleGVjdXRpbmcgdGhlIHB1Ymxpc2hpbmcgY29tbWFuZC4gVGhlc2UgY2FuIGJlIHVzZWRcbiAgICogdG8gcHJlcGFyZSB0aGUgYXJ0aWZhY3QgZm9yIHB1Ymxpc2hpbmcgaWYgbmVlZGUuXG4gICAqXG4gICAqIFRoZXNlIHN0ZXBzIGFyZSBleGVjdXRlZCBhZnRlciBgZGlzdC9gIGhhcyBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZSBidWlsZFxuICAgKiBvdXRwdXQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB3aGVuIHVzaW5nIHRoaXMgaW4gYHB1Ymxpc2hUb0dpdEh1YlJlbGVhc2VzYCB0aGlzIHdpbGwgb3ZlcnJpZGUgc3RlcHMgYWRkZWQgdmlhIGBhZGRHaXRIdWJQcmVQdWJsaXNoaW5nU3RlcHNgLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlUHVibGlzaFN0ZXBzPzogSm9iU3RlcFtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHRvb2xzIHRvIGluc3RhbGwgaW4gdGhlIHB1Ymxpc2hpbmcgam9iLlxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgdG9vbHMgYXJlIGluc3RhbGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvb2xzPzogVG9vbHM7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBOcG1QdWJsaXNoT3B0aW9uc2AgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpUmVsZWFzZU5wbSBleHRlbmRzIE5wbVB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgbnBtIHJlbGVhc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOcG1QdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRhZ3MgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBhbGlhcyBpbnN0ZWFkIG9mIHZlcnNpb24gbnVtYmVycy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGEgcHJvamVjdCBtaWdodCBjaG9vc2UgdG8gaGF2ZSBtdWx0aXBsZSBzdHJlYW1zIG9mIGRldmVsb3BtZW50XG4gICAqIGFuZCB1c2UgYSBkaWZmZXJlbnQgdGFnIGZvciBlYWNoIHN0cmVhbSwgZS5nLiwgc3RhYmxlLCBiZXRhLCBkZXYsIGNhbmFyeS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIGBsYXRlc3RgIHRhZyBpcyB1c2VkIGJ5IG5wbSB0byBpZGVudGlmeSB0aGUgY3VycmVudCB2ZXJzaW9uXG4gICAqIG9mIGEgcGFja2FnZSwgYW5kIGBucG0gaW5zdGFsbCA8cGtnPmAgKHdpdGhvdXQgYW55IGBAPHZlcnNpb24+YCBvciBgQDx0YWc+YFxuICAgKiBzcGVjaWZpZXIpIGluc3RhbGxzIHRoZSBsYXRlc3QgdGFnLiBUeXBpY2FsbHksIHByb2plY3RzIG9ubHkgdXNlIHRoZVxuICAgKiBgbGF0ZXN0YCB0YWcgZm9yIHN0YWJsZSByZWxlYXNlIHZlcnNpb25zLCBhbmQgdXNlIG90aGVyIHRhZ3MgZm9yIHVuc3RhYmxlXG4gICAqIHZlcnNpb25zIHN1Y2ggYXMgcHJlcmVsZWFzZXMuXG4gICAqXG4gICAqIFRoZSBgbmV4dGAgdGFnIGlzIHVzZWQgYnkgc29tZSBwcm9qZWN0cyB0byBpZGVudGlmeSB0aGUgdXBjb21pbmcgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYG5wbURpc3RUYWdgIGZvciBlYWNoIHJlbGVhc2UgYnJhbmNoIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBUbyBwdWJsaXNoIHRvIEdpdEh1YiBQYWNrYWdlcywgc2V0IHRoaXMgdmFsdWUgdG8gYFwibnBtLnBrZy5naXRodWIuY29tXCJgLiBJblxuICAgKiB0aGlzIGlmIGBucG1Ub2tlblNlY3JldGAgaXMgbm90IHNwZWNpZmllZCwgaXQgd2lsbCBkZWZhdWx0IHRvXG4gICAqIGBHSVRIVUJfVE9LRU5gIHdoaWNoIG1lYW5zIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBwdWJsaXNoIHRvIHRoZVxuICAgKiByZXBvc2l0b3J5J3MgcGFja2FnZSBzdG9yZS4gSW4gdGhpcyBjYXNlLCBtYWtlIHN1cmUgYHJlcG9zaXRvcnlVcmxgIGlzXG4gICAqIGNvcnJlY3RseSBkZWZpbmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInJlZ2lzdHJ5Lm5wbWpzLm9yZ1wiXG4gICAqIEBleGFtcGxlIFwibnBtLnBrZy5naXRodWIuY29tXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBOUE0gdG9rZW4gdG8gdXNlIHdoZW4gcHVibGlzaGluZyBwYWNrYWdlcy5cbiAgICogQGRlZmF1bHQgLSBcIk5QTV9UT0tFTlwiIG9yIFwiR0lUSFVCX1RPS0VOXCIgaWYgYHJlZ2lzdHJ5YCBpcyBzZXQgdG8gYG5wbS5wa2cuZ2l0aHViLmNvbWAuXG4gICAqL1xuICByZWFkb25seSBucG1Ub2tlblNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBucG0gcGFja2FnZSB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgY29kZUFydGlmYWN0T3B0aW9ucz86IENvZGVBcnRpZmFjdE9wdGlvbnM7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYXV0aG9yaXppbmcgcmVxdWVzdHMgdG8gYSBBV1MgQ29kZUFydGlmYWN0IG5wbSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgZW51bSBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIge1xuICAvKipcbiAgICogRml4ZWQgY3JlZGVudGlhbHMgcHJvdmlkZWQgdmlhIEdpdGh1YiBzZWNyZXRzLlxuICAgKi9cbiAgQUNDRVNTX0FORF9TRUNSRVRfS0VZX1BBSVIgPSBcIkFDQ0VTU19BTkRfU0VDUkVUX0tFWV9QQUlSXCIsXG5cbiAgLyoqXG4gICAqIEVwaGVtZXJhbCBjcmVkZW50aWFscyBwcm92aWRlZCB2aWEgR2l0aHViJ3MgT0lEQyBpbnRlZ3JhdGlvbiB3aXRoIGFuIElBTSByb2xlLlxuICAgKiBTZWU6XG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9pZF9yb2xlc19wcm92aWRlcnNfY3JlYXRlX29pZGMuaHRtbFxuICAgKiBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL2RlcGxveW1lbnQvc2VjdXJpdHktaGFyZGVuaW5nLXlvdXItZGVwbG95bWVudHMvY29uZmlndXJpbmctb3BlbmlkLWNvbm5lY3QtaW4tYW1hem9uLXdlYi1zZXJ2aWNlc1xuICAgKi9cbiAgR0lUSFVCX09JREMgPSBcIkdJVEhVQl9PSURDXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcHVibGlzaGluZyBwYWNrYWdlcyB0byBBV1MgQ29kZUFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdE9wdGlvbnMge1xuICAvKipcbiAgICogUHJvdmlkZXIgdG8gdXNlIGZvciBhdXRob3JpemluZyByZXF1ZXN0cyB0byBBV1MgQ29kZUFydGlmYWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuQUNDRVNTX0FORF9TRUNSRVRfS0VZX1BBSVJcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhQcm92aWRlcj86IENvZGVBcnRpZmFjdEF1dGhQcm92aWRlcjtcbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgd2hpY2ggY29udGFpbnMgdGhlIEFXUyBhY2Nlc3Mga2V5IElEIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgcGFja2FnZXMgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgbnBtUmVnaXN0cnlVcmxgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIHRoZSBgYXV0aFByb3ZpZGVyYCB2YWx1ZSBpcyBzZXQgdG9cbiAgICogYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5BQ0NFU1NfQU5EX1NFQ1JFVF9LRVlfUEFJUmAsIHRoZSBkZWZhdWx0IGlzXG4gICAqIFwiQVdTX0FDQ0VTU19LRVlfSURcIi4gRm9yIGBDb2RlQXJ0aWZhY3RBdXRoUHJvdmlkZXIuR0lUSFVCX09JRENgLCB0aGlzXG4gICAqIHZhbHVlIG11c3QgYmUgbGVmdCB1bmRlZmluZWQuXG4gICAqL1xuICByZWFkb25seSBhY2Nlc3NLZXlJZFNlY3JldD86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIHNlY3JldCB3aGljaCBjb250YWlucyB0aGUgQVdTIHNlY3JldCBhY2Nlc3Mga2V5IHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgcGFja2FnZXMgdG8gQVdTIENvZGVBcnRpZmFjdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgbnBtUmVnaXN0cnlVcmxgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIHRoZSBgYXV0aFByb3ZpZGVyYCB2YWx1ZSBpcyBzZXQgdG9cbiAgICogYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5BQ0NFU1NfQU5EX1NFQ1JFVF9LRVlfUEFJUmAsIHRoZSBkZWZhdWx0IGlzXG4gICAqIFwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXCIuIEZvciBgQ29kZUFydGlmYWN0QXV0aFByb3ZpZGVyLkdJVEhVQl9PSURDYCwgdGhpc1xuICAgKiB2YWx1ZSBtdXN0IGJlIGxlZnQgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0QWNjZXNzS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgQVdTIHJvbGUgdG8gYmUgYXNzdW1lZCBwcmlvciB0byBnZXQgYXV0aG9yaXphdGlvbiB0b2tlbiBmcm9tIEFXUyBDb2RlQXJ0aWZhY3RcbiAgICogVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNwZWNpZmllZCBvbmx5IHdoZW4gcHVibGlzaGluZyB0byBBV1MgQ29kZUFydGlmYWN0IChgcmVnaXN0cnlgIGNvbnRhaW5zIEFXUyBDb2RlQXJ0aWZhY3QgVVJMKS5cbiAgICogV2hlbiB1c2luZyB0aGUgYENvZGVBcnRpZmFjdEF1dGhQcm92aWRlci5HSVRIVUJfT0lEQ2AgYXV0aCBwcm92aWRlciwgdGhpcyB2YWx1ZSBtdXN0IGJlIGRlZmluZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZVRvQXNzdW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgUHlQaVB1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlUHlQaSBleHRlbmRzIFB5UGlQdWJsaXNoT3B0aW9ucyB7fVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFB5UEkgcmVsZWFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5UGlQdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWdpc3RyeSB1cmwgdG8gdXNlIHdoZW4gcmVsZWFzaW5nIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHR3aW5lIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHR3aW5lUmVnaXN0cnlVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIFB5UEkgdXNlciBuYW1lLlxuICAgKiBAZGVmYXVsdCBcIlRXSU5FX1VTRVJOQU1FXCJcbiAgICovXG4gIHJlYWRvbmx5IHR3aW5lVXNlcm5hbWVTZWNyZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIFB5UEkgcGFzc3dvcmQuXG4gICAqIEBkZWZhdWx0IFwiVFdJTkVfUEFTU1dPUkRcIlxuICAgKi9cbiAgcmVhZG9ubHkgdHdpbmVQYXNzd29yZFNlY3JldD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYE51Z2V0UHVibGlzaE9wdGlvbnNgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVJlbGVhc2VOdWdldCBleHRlbmRzIE51Z2V0UHVibGlzaE9wdGlvbnMge31cblxuLyoqXG4gKiBPcHRpb25zIGZvciBOdUdldCByZWxlYXNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE51Z2V0UHVibGlzaE9wdGlvbnMgZXh0ZW5kcyBDb21tb25QdWJsaXNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IHdoaWNoIGNvbnRhaW5zIHRoZSBBUEkga2V5IGZvciBOdUdldC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJOVUdFVF9BUElfS0VZXCJcbiAgICovXG4gIHJlYWRvbmx5IG51Z2V0QXBpS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgTnVHZXQgU2VydmVyIFVSTCAoZGVmYXVsdHMgdG8gbnVnZXQub3JnKVxuICAgKi9cbiAgcmVhZG9ubHkgbnVnZXRTZXJ2ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBNYXZlblB1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlTWF2ZW4gZXh0ZW5kcyBNYXZlblB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgTWF2ZW4gcmVsZWFzZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXZlblB1Ymxpc2hPcHRpb25zIGV4dGVuZHMgQ29tbW9uUHVibGlzaE9wdGlvbnMge1xuICAvKipcbiAgICogVVJMIG9mIE5leHVzIHJlcG9zaXRvcnkuIGlmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1wiXG4gICAqL1xuICByZWFkb25seSBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VkIGluIG1hdmVuIHNldHRpbmdzIGZvciBjcmVkZW50aWFsIGxvb2t1cCAoZS5nLiB1c2UgZ2l0aHViIHdoZW4gcHVibGlzaGluZyB0byBHaXRIdWIpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm9zc3JoXCIgKE1hdmVuIENlbnRyYWwpIG9yIFwiZ2l0aHViXCIgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuU2VydmVySWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlcGxveW1lbnQgcmVwb3NpdG9yeSB3aGVuIG5vdCBkZXBsb3lpbmcgdG8gTWF2ZW4gQ2VudHJhbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdCBzZXRcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuUmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIHNlY3JldCBuYW1lIHdoaWNoIGNvbnRhaW5zIHRoZSBHUEcgcHJpdmF0ZSBrZXkgb3IgZmlsZSB0aGF0IGluY2x1ZGVzXG4gICAqIGl0LiBUaGlzIGlzIHVzZWQgdG8gc2lnbiB5b3VyIE1hdmVuXG4gICAqIHBhY2thZ2VzLiBTZWUgaW5zdHJ1Y3Rpb25zLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvcHVibGliI21hdmVuXG4gICAqIEBkZWZhdWx0IFwiTUFWRU5fR1BHX1BSSVZBVEVfS0VZXCIgb3Igbm90IHNldCB3aGVuIHVzaW5nIEdpdEh1YiBQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF2ZW5HcGdQcml2YXRlS2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgc2VjcmV0IG5hbWUgd2hpY2ggY29udGFpbnMgdGhlIEdQRyBwcml2YXRlIGtleSBvciBmaWxlIHRoYXQgaW5jbHVkZXNcbiAgICogaXQuIFRoaXMgaXMgdXNlZCB0byBzaWduIHlvdXIgTWF2ZW4gcGFja2FnZXMuIFNlZSBpbnN0cnVjdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9wdWJsaWIjbWF2ZW5cbiAgICogQGRlZmF1bHQgXCJNQVZFTl9HUEdfUFJJVkFURV9LRVlfUEFTU1BIUkFTRVwiIG9yIG5vdCBzZXQgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuR3BnUHJpdmF0ZUtleVBhc3NwaHJhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgVXNlcm5hbWUgZm9yIG1hdmVuIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEZvciBNYXZlbiBDZW50cmFsLCB5b3Ugd2lsbCBuZWVkIHRvIENyZWF0ZSBKSVJBIGFjY291bnQgYW5kIHRoZW4gcmVxdWVzdCBhXG4gICAqIG5ldyBwcm9qZWN0IChzZWUgbGlua3MpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vaXNzdWVzLnNvbmF0eXBlLm9yZy9zZWN1cmUvU2lnbnVwXG4gICAqIEBzZWUgaHR0cHM6Ly9pc3N1ZXMuc29uYXR5cGUub3JnL3NlY3VyZS9DcmVhdGVJc3N1ZS5qc3BhP2lzc3VldHlwZT0yMSZwaWQ9MTAxMzRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJNQVZFTl9VU0VSTkFNRVwiIG9yIHRoZSBHaXRIdWIgQWN0b3Igd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuVXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgUGFzc3dvcmQgZm9yIG1hdmVuIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEZvciBNYXZlbiBDZW50cmFsLCB5b3Ugd2lsbCBuZWVkIHRvIENyZWF0ZSBKSVJBIGFjY291bnQgYW5kIHRoZW4gcmVxdWVzdCBhXG4gICAqIG5ldyBwcm9qZWN0IChzZWUgbGlua3MpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vaXNzdWVzLnNvbmF0eXBlLm9yZy9zZWN1cmUvU2lnbnVwXG4gICAqIEBzZWUgaHR0cHM6Ly9pc3N1ZXMuc29uYXR5cGUub3JnL3NlY3VyZS9DcmVhdGVJc3N1ZS5qc3BhP2lzc3VldHlwZT0yMSZwaWQ9MTAxMzRcbiAgICpcbiAgICogQGRlZmF1bHQgXCJNQVZFTl9QQVNTV09SRFwiIG9yIFwiR0lUSFVCX1RPS0VOXCIgd2hlbiB1c2luZyBHaXRIdWIgUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBzZWNyZXQgbmFtZSB3aGljaCBjb250YWlucyB0aGUgTWF2ZW4gQ2VudHJhbCAoc29uYXR5cGUpIHN0YWdpbmdcbiAgICogcHJvZmlsZSBJRCAoZS5nLiA2OGEwNTM2MzA4MzE3NCkuIFN0YWdpbmcgcHJvZmlsZSBJRCBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICAqIFVSTCBvZiB0aGUgXCJSZWxlYXNlc1wiIHN0YWdpbmcgcHJvZmlsZSB1bmRlciBcIlN0YWdpbmcgUHJvZmlsZXNcIiBpblxuICAgKiBodHRwczovL29zcy5zb25hdHlwZS5vcmcgKGUuZy5cbiAgICogaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnLyNzdGFnaW5nUHJvZmlsZXM7MTFhMzM0NTEyMzQ1MjEpXG5cbiAgICogQGRlZmF1bHQgXCJNQVZFTl9TVEFHSU5HX1BST0ZJTEVfSURcIiBvciBub3Qgc2V0IHdoZW4gdXNpbmcgR2l0SHViIFBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBtYXZlblN0YWdpbmdQcm9maWxlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBHb1B1Ymxpc2hPcHRpb25zYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlSZWxlYXNlR28gZXh0ZW5kcyBHb1B1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgR28gcmVsZWFzZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR29QdWJsaXNoT3B0aW9ucyBleHRlbmRzIENvbW1vblB1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWNyZXQgdGhhdCBpbmNsdWRlcyBhIHBlcnNvbmFsIEdpdEh1YiBhY2Nlc3MgdG9rZW4gdXNlZCB0b1xuICAgKiBwdXNoIHRvIHRoZSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogSWdub3JlZCBpZiBgZ2l0aHViVXNlU3NoYCBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiR09fR0lUSFVCX1RPS0VOXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjcmV0IHRoYXQgaW5jbHVkZXMgYSBHaXRIdWIgZGVwbG95IGtleSB1c2VkIHRvIHB1c2ggdG8gdGhlXG4gICAqIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBJZ25vcmVkIGlmIGBnaXRodWJVc2VTc2hgIGlzIGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiR09fR0lUSFVCX0RFUExPWV9LRVlcIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViRGVwbG95S2V5U2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2UgU1NIIHRvIHB1c2ggdG8gR2l0SHViIGluc3RlYWQgb2YgYSBwZXJzb25hbCBhY2NzZXMgdG9rZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBnaXRodWJVc2VTc2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgcmVwb3NpdG9yeSB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBgbW9kdWxlTmFtZWBcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlJlcG8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlciBuYW1lIHRvIHVzZSBmb3IgdGhlIHJlbGVhc2UgZ2l0IGNvbW1pdC5cbiAgICogQGRlZmF1bHQgXCJnaXRodWItYWN0aW9uc1wiXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVtYWlsIHRvIHVzZSBpbiB0aGUgcmVsZWFzZSBnaXQgY29tbWl0LlxuICAgKiBAZGVmYXVsdCBcImdpdGh1Yi1hY3Rpb25zQGdpdGh1Yi5jb21cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlckVtYWlsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBWZXJzaW9uQXJ0aWZhY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiBhIHRleHQgZmlsZSAocmVsYXRpdmUgdG8gYGRpc3QvYCkgdGhhdCBjb250YWlucyB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIEBleGFtcGxlIHZlcnNpb24udHh0XG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSB0ZXh0IGZpbGUgKHJlbGF0aXZlIHRvIGBkaXN0L2ApIHRoYXQgY29udGFpbnMgdGhlIHJlbGVhc2UgdGFnLlxuICAgKlxuICAgKiBAZXhhbXBsZSByZWxlYXNldGFnLnR4dFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRhZ0ZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGFuIC5tZCBmaWxlIChyZWxhdGl2ZSB0byBgZGlzdC9gKSB0aGF0IGluY2x1ZGVzIHRoZSBjaGFuZ2Vsb2cgZm9yIHRoZSByZWxlYXNlLlxuICAgKlxuICAgKiBAZXhhbXBsZSBjaGFuZ2Vsb2cubWRcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZWxvZ0ZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZXMgaWYgdGhlIGByZWdpc3RyeVVybGAgaXMgYSBBV1MgQ29kZUFydGlmYWN0IHJlZ2lzdHJ5LlxuICogQHBhcmFtIHJlZ2lzdHJ5VXJsIHVybCBvZiByZWdpc3RyeVxuICogQHJldHVybnMgdHJ1ZSBmb3IgQVdTIENvZGVBcnRpZmFjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBd3NDb2RlQXJ0aWZhY3RSZWdpc3RyeShyZWdpc3RyeVVybDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiByZWdpc3RyeVVybCAmJiBBV1NfQ09ERUFSVElGQUNUX1JFR0lTVFJZX1JFR0VYLnRlc3QocmVnaXN0cnlVcmwpO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hpbmcgb3B0aW9ucyBmb3IgR2l0SHViIHJlbGVhc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2VzUHVibGlzaE9wdGlvbnNcbiAgZXh0ZW5kcyBWZXJzaW9uQXJ0aWZhY3RPcHRpb25zLFxuICAgIENvbW1vblB1Ymxpc2hPcHRpb25zIHt9XG5cbi8qKlxuICogUHVibGlzaGluZyBvcHRpb25zIGZvciBHaXQgcmVsZWFzZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRQdWJsaXNoT3B0aW9ucyBleHRlbmRzIFZlcnNpb25BcnRpZmFjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGFuIC5tZCBmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIHByb2plY3QtbGV2ZWwgY2hhbmdlbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdENoYW5nZWxvZ0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBnaXQtcHVzaCBjb21tYW5kLlxuICAgKlxuICAgKiBTZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgcHVzaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFB1c2hDb21tYW5kPzogc3RyaW5nO1xufVxuXG50eXBlIFB1Ymxpc2hKb2JGYWN0b3J5ID0gKFxuICBicmFuY2g6IHN0cmluZyxcbiAgYnJhbmNoT3B0aW9uczogUGFydGlhbDxCcmFuY2hPcHRpb25zPlxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBKb2I+O1xuIl19
|
|
@@ -72,5 +72,5 @@ class ReleaseTrigger {
|
|
|
72
72
|
}
|
|
73
73
|
exports.ReleaseTrigger = ReleaseTrigger;
|
|
74
74
|
_a = JSII_RTTI_SYMBOL_1;
|
|
75
|
-
ReleaseTrigger[_a] = { fqn: "projen.release.ReleaseTrigger", version: "0.
|
|
75
|
+
ReleaseTrigger[_a] = { fqn: "projen.release.ReleaseTrigger", version: "0.63.0" };
|
|
76
76
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvcmVsZWFzZS10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBb0VBOzs7R0FHRztBQUNILE1BQWEsY0FBYztJQWlGekIsWUFBb0IsVUFBaUMsRUFBRTtRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQy9DLENBQUM7SUFyRkQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQWdDLEVBQUU7UUFDckQsSUFBSSxhQUFhLENBQUM7UUFFbEIsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUM3QixhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxjQUFjLENBQUM7U0FDekQ7UUFFRCxPQUFPLElBQUksY0FBYyxDQUFDO1lBQ3hCLGFBQWEsRUFBRSxhQUFhO1lBQzVCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFnQztRQUN0RCxPQUFPLElBQUksY0FBYyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxVQUFVO1FBQ3RCLE9BQU8sSUFBSSxjQUFjLENBQUM7WUFDeEIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQW1DRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDOztBQTdGSCx3Q0E4RkMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZFJlbGVhc2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIENyb24gc2NoZWR1bGUgZm9yIHJlbGVhc2VzLlxuICAgKlxuICAgKiBPbmx5IGRlZmluZWQgaWYgdGhpcyBpcyBhIHNjaGVkdWxlZCByZWxlYXNlLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMCAxNyAqICogKicgLSBldmVyeSBkYXkgYXQgNSBwbVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYW51YWxSZWxlYXNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNYWludGFpbiBhIHByb2plY3QtbGV2ZWwgY2hhbmdlbG9nLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2Vsb2c/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9qZWN0LWxldmVsIGNoYW5nZWxvZyBmaWxlIHBhdGguXG4gICAqXG4gICAqIElnbm9yZWQgaWYgYGNoYW5nZWxvZ2AgaXMgZmFsc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdDSEFOR0VMT0cubWQnXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2Vsb2dQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBnaXQtcHVzaCBjb21tYW5kLlxuICAgKlxuICAgKiBTZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgcHVzaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFB1c2hDb21tYW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVsZWFzZVRyaWdnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb2plY3QtbGV2ZWwgY2hhbmdlbG9nIGZpbGUgcGF0aC5cbiAgICpcbiAgICogSWdub3JlZCBpZiBgY2hhbmdlbG9nYCBpcyBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udGludW91cyByZWxlYXNlcywgd2hpY2ggd2lsbCByZWxlYXNlIGV2ZXJ5IGNvbW1pdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRpbnVvdXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcm9uIHNjaGVkdWxlIGZvciByZWxlYXNlLlxuICAgKlxuICAgKiBPbmx5IGRlZmluZWQgaWYgdGhpcyBpcyBhIHNjaGVkdWxlZCByZWxlYXNlLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMCAxNyAqICogKicgLSBldmVyeSBkYXkgYXQgNSBwbVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGdpdC1wdXNoIGNvbW1hbmQuXG4gICAqXG4gICAqIFNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSBwdXNoaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0UHVzaENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBtYW5hZ2UgcmVsZWFzZSBzdHJhdGVnaWVzLiBUaGlzIGluY2x1ZGVzIHJlbGVhc2VcbiAqIGFuZCByZWxlYXNlIGFydGlmYWN0IGF1dG9tYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VUcmlnZ2VyIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBtYW51YWwgcmVsZWFzZSB0cmlnZ2VyLlxuICAgKlxuICAgKiBVc2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG90YWxseSBtYW51YWwgcmVsZWFzZXMuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBnaXZlIHlvdSBhIHJlbGVhc2UgdGFzayB0aGF0LCBpbiBhZGRpdGlvbiB0byB0aGUgbm9ybWFsXG4gICAqIHJlbGVhc2UgYWN0aXZpdGllcyB3aWxsIHRyaWdnZXIgYSBgcHVibGlzaDpnaXRgIHRhc2suIFRoaXMgdGFzayB3aWxsXG4gICAqIGhhbmRsZSBwcm9qZWN0LWxldmVsIGNoYW5nZWxvZyBtYW5hZ2VtZW50LCByZWxlYXNlIHRhZ2dpbmcsIGFuZCBwdXNoaW5nXG4gICAqIHRoZXNlIGFydGlmYWN0cyB0byBvcmlnaW4uXG4gICAqXG4gICAqIFRoZSBjb21tYW5kIHVzZWQgZm9yIHB1c2hpbmcgY2FuIGJlIGN1c3RvbWlzZWQgYnkgc3BlY2lmeWluZ1xuICAgKiBgZ2l0UHVzaENvbW1hbmRgLiBTZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgcHVzaGluZyBlbnRpcmVseS5cbiAgICpcbiAgICogU2ltcGx5IHJ1biBgeWFybiByZWxlYXNlYCB0byB0cmlnZ2VyIGEgbWFudWFsIHJlbGVhc2UuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIHJlbGVhc2Ugb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBtYW51YWwob3B0aW9uczogTWFudWFsUmVsZWFzZU9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjaGFuZ2Vsb2dQYXRoO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hhbmdlbG9nID8/IHRydWUpIHtcbiAgICAgIGNoYW5nZWxvZ1BhdGggPSBvcHRpb25zLmNoYW5nZWxvZ1BhdGggPz8gXCJDSEFOR0VMT0cubWRcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlbGVhc2VUcmlnZ2VyKHtcbiAgICAgIGNoYW5nZWxvZ1BhdGg6IGNoYW5nZWxvZ1BhdGgsXG4gICAgICBnaXRQdXNoQ29tbWFuZDogb3B0aW9ucy5naXRQdXNoQ29tbWFuZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2NoZWR1bGVkIHJlbGVhc2UgdHJpZ2dlci5cbiAgICpcbiAgICogQXV0b21hdGVkIHJlbGVhc2VzIHdpbGwgb2NjdXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNyb24gc2NoZWR1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIHJlbGVhc2Ugb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2NoZWR1bGVkKG9wdGlvbnM6IFNjaGVkdWxlZFJlbGVhc2VPcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBSZWxlYXNlVHJpZ2dlcih7XG4gICAgICBzY2hlZHVsZTogb3B0aW9ucy5zY2hlZHVsZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29udGludW91cyByZWxlYXNlIHRyaWdnZXIuXG4gICAqXG4gICAqIEF1dG9tYXRlZCByZWxlYXNlcyB3aWxsIG9jY3VyIG9uIGV2ZXJ5IGNvbW1pdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udGludW91cygpIHtcbiAgICByZXR1cm4gbmV3IFJlbGVhc2VUcmlnZ2VyKHtcbiAgICAgIGNvbnRpbnVvdXM6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvamVjdC1sZXZlbCBjaGFuZ2Vsb2cgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWxvZ1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyb24gc2NoZWR1bGUgZm9yIHJlbGVhc2VzLlxuICAgKlxuICAgKiBPbmx5IGRlZmluZWQgaWYgdGhpcyBpcyBhIHNjaGVkdWxlZCByZWxlYXNlLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMCAxNyAqICogKicgLSBldmVyeSBkYXkgYXQgNSBwbVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNjaGVkdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgY29udGludW91cyByZWxlYXNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzQ29udGludW91czogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgZ2l0LXB1c2ggY29tbWFuZCB1c2VkIHdoZW4gcmVsZWFzaW5nIG1hbnVhbGx5LlxuICAgKlxuICAgKiBTZXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgcHVzaGluZy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnaXRQdXNoQ29tbWFuZD86IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFJlbGVhc2VUcmlnZ2VyT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5pc0NvbnRpbnVvdXMgPSBvcHRpb25zLmNvbnRpbnVvdXMgPz8gZmFsc2U7XG4gICAgdGhpcy5zY2hlZHVsZSA9IG9wdGlvbnMuc2NoZWR1bGU7XG4gICAgdGhpcy5jaGFuZ2Vsb2dQYXRoID0gb3B0aW9ucy5jaGFuZ2Vsb2dQYXRoO1xuICAgIHRoaXMuZ2l0UHVzaENvbW1hbmQgPSBvcHRpb25zLmdpdFB1c2hDb21tYW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBtYW51YWwgcmVsZWFzZSB0cmlnZ2VyLlxuICAgKi9cbiAgcHVibGljIGdldCBpc01hbnVhbCgpIHtcbiAgICByZXR1cm4gISh0aGlzLmlzQ29udGludW91cyB8fCB0aGlzLnNjaGVkdWxlKTtcbiAgfVxufVxuIl19
|
package/lib/release/release.js
CHANGED
|
@@ -243,6 +243,10 @@ class Release extends component_1.Component {
|
|
|
243
243
|
run: `echo ::set-output name=${LATEST_COMMIT_OUTPUT}::"$(git ls-remote origin -h \${{ github.ref }} | cut -f1)"`,
|
|
244
244
|
});
|
|
245
245
|
postBuildSteps.push({
|
|
246
|
+
name: "Backup artifact permissions",
|
|
247
|
+
if: noNewCommits,
|
|
248
|
+
run: `cd ${this.artifactsDirectory} && getfacl -R . > ${constants_1.PERMISSION_BACKUP_FILE}`,
|
|
249
|
+
}, {
|
|
246
250
|
name: "Upload artifact",
|
|
247
251
|
if: noNewCommits,
|
|
248
252
|
uses: "actions/upload-artifact@v2.1.1",
|
|
@@ -296,6 +300,6 @@ class Release extends component_1.Component {
|
|
|
296
300
|
}
|
|
297
301
|
exports.Release = Release;
|
|
298
302
|
_a = JSII_RTTI_SYMBOL_1;
|
|
299
|
-
Release[_a] = { fqn: "projen.release.Release", version: "0.
|
|
303
|
+
Release[_a] = { fqn: "projen.release.Release", version: "0.63.0" };
|
|
300
304
|
Release.ANTI_TAMPER_CMD = "git diff --ignore-space-at-eol --exit-code";
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWxlYXNlL3JlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsNENBQXlDO0FBQ3pDLHNDQUFnRjtBQUNoRixtREFBMEQ7QUFDMUQsK0RBQXdFO0FBRXhFLHdDQUFxQztBQUNyQywyQ0FBd0M7QUFDeEMsdURBQW1EO0FBRW5ELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUM5QixNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQXdPN0M7Ozs7R0FJRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTO0lBcUNwQyxZQUFZLE9BQXNCLEVBQUUsT0FBdUI7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBZEEsY0FBUyxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO1FBQ3ZDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBZTlDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQztRQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7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RSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDMUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTt3QkFDcEMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQzVCLENBQUMsQ0FBQyxTQUFTO2lCQUNkO2dCQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDNUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ2hDLENBQUMsQ0FBQyxTQUFTO2dCQUNiLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsTUFBTTtpQkFDWDtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsS0FBSztpQkFDOUI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHlEQUF5RDtvQkFDekQscUNBQXFDO29CQUNyQyxhQUFhLEVBQUUsQ0FBQztpQkFDakI7Z0JBQ0QsYUFBYTtnQkFDYixJQUFJLEVBQUUsV0FBVztnQkFDakIsY0FBYztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDNUIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7QUFyWEgsMEJBc1hDOzs7QUFyWHdCLHVCQUFlLEdBQ3BDLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgR2l0SHViLCBHaXRIdWJQcm9qZWN0LCBHaXRodWJXb3JrZmxvdywgVGFza1dvcmtmbG93IH0gZnJvbSBcIi4uL2dpdGh1YlwiO1xuaW1wb3J0IHsgQlVJTERfQVJUSUZBQ1RfTkFNRSB9IGZyb20gXCIuLi9naXRodWIvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBKb2IsIEpvYlBlcm1pc3Npb24sIEpvYlN0ZXAgfSBmcm9tIFwiLi4vZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5pbXBvcnQgeyBWZXJzaW9uIH0gZnJvbSBcIi4uL3ZlcnNpb25cIjtcbmltcG9ydCB7IFB1Ymxpc2hlciB9IGZyb20gXCIuL3B1Ymxpc2hlclwiO1xuaW1wb3J0IHsgUmVsZWFzZVRyaWdnZXIgfSBmcm9tIFwiLi9yZWxlYXNlLXRyaWdnZXJcIjtcblxuY29uc3QgQlVJTERfSk9CSUQgPSBcInJlbGVhc2VcIjtcbmNvbnN0IEdJVF9SRU1PVEVfU1RFUElEID0gXCJnaXRfcmVtb3RlXCI7XG5jb25zdCBMQVRFU1RfQ09NTUlUX09VVFBVVCA9IFwibGF0ZXN0X2NvbW1pdFwiO1xuXG50eXBlIEJyYW5jaEhvb2sgPSAoYnJhbmNoOiBzdHJpbmcpID0+IHZvaWQ7XG5cbi8qKlxuICogUHJvamVjdCBvcHRpb25zIGZvciByZWxlYXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2VQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJlbGVhc2UgbmV3IHZlcnNpb25zIGV2ZXJ5IGNvbW1pdCB0byBvbmUgb2YgYnJhbmNoZXMgaW4gYHJlbGVhc2VCcmFuY2hlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGByZWxlYXNlVHJpZ2dlcjogUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlRXZlcnlDb21taXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDUk9OIHNjaGVkdWxlIHRvIHRyaWdnZXIgbmV3IHJlbGVhc2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNjaGVkdWxlZCByZWxlYXNlc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJlbGVhc2VUcmlnZ2VyOiBSZWxlYXNlVHJpZ2dlci5zY2hlZHVsZWQoKWAgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVNjaGVkdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVsZWFzZSB0cmlnZ2VyIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDb250aW51b3VzIHJlbGVhc2VzIChgUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpYClcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyPzogUmVsZWFzZVRyaWdnZXI7XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIHdvcmtmbG93IHN0ZXBzIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gc2V0dXAgdGhlIHdvcmtmbG93XG4gICAqIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHM/OiBKb2JTdGVwW107XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBpbWFnZSB0byB1c2UgZm9yIEdpdEh1YiB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dDb250YWluZXJJbWFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiByZXF1aXJlbWVudCBvZiBgcHVibGliYCB3aGljaCBpcyB1c2VkIHRvIHB1Ymxpc2ggbW9kdWxlcyB0byBucG0uXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IGpzaWlSZWxlYXNlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU3RlcHMgdG8gZXhlY3V0ZSBhZnRlciBidWlsZCBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM/OiBKb2JTdGVwW107XG5cbiAgLyoqXG4gICAqIE1ham9yIHZlcnNpb24gdG8gcmVsZWFzZSBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbWFqb3IgdmVyc2lvbiBsaW5lLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB3ZSBidW1wIHRoZSBnbG9iYWwgbGF0ZXN0IHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTWFqb3IgdmVyc2lvbiBpcyBub3QgZW5mb3JjZWQuXG4gICAqL1xuICByZWFkb25seSBtYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltYWwgTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlXG4gICAqXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXQgdG8gMSwgYXMgYnJlYWtpbmcgY2hhbmdlcyBiZWZvcmUgdGhlIDEueCBtYWpvclxuICAgKiByZWxlYXNlIGFyZSBub3QgaW5jcmVtZW50aW5nIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci5cbiAgICpcbiAgICogQ2FuIG5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCBgbWFqb3JWZXJzaW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtaW5pbXVtIHZlcnNpb24gaXMgYmVpbmcgZW5mb3JjZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogQnVtcCB2ZXJzaW9ucyBmcm9tIHRoZSBkZWZhdWx0IGJyYW5jaCBhcyBwcmUtcmVsZWFzZXMgKGUuZy4gXCJiZXRhXCIsXG4gICAqIFwiYWxwaGFcIiwgXCJwcmVcIikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHNlbWFudGljIHZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnBtRGlzdFRhZyB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKlxuICAgKiBUbyBzZXQgdGhlIG5wbSBkaXN0LXRhZyBmb3IgcmVsZWFzZSBicmFuY2hlcywgc2V0IHRoZSBgbnBtRGlzdFRhZ2AgcHJvcGVydHlcbiAgICogZm9yIGVhY2ggYnJhbmNoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBucG1EaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCByZWxlYXNlIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlJlbGVhc2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyBhZGRpdGlvbmFsIHJlbGVhc2UgYnJhbmNoZXMuIEEgd29ya2Zsb3cgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoXG4gICAqIHJlbGVhc2UgYnJhbmNoIHdoaWNoIHdpbGwgcHVibGlzaCByZWxlYXNlcyBmcm9tIGNvbW1pdHMgaW4gdGhpcyBicmFuY2guXG4gICAqIEVhY2ggcmVsZWFzZSBicmFuY2ggX211c3RfIGJlIGFzc2lnbmVkIGEgbWFqb3IgdmVyc2lvbiBudW1iZXIgd2hpY2ggaXMgdXNlZFxuICAgKiB0byBlbmZvcmNlIHRoYXQgdmVyc2lvbnMgcHVibGlzaGVkIGZyb20gdGhhdCBicmFuY2ggYWx3YXlzIHVzZSB0aGF0IG1ham9yXG4gICAqIHZlcnNpb24uIElmIG11bHRpcGxlIGJyYW5jaGVzIGFyZSB1c2VkLCB0aGUgYG1ham9yVmVyc2lvbmAgZmllbGQgbXVzdCBhbHNvXG4gICAqIGJlIHByb3ZpZGVkIGZvciB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBicmFuY2hlcyBhcmUgdXNlZCBmb3IgcmVsZWFzZS4geW91IGNhbiB1c2VcbiAgICogYGFkZEJyYW5jaCgpYCB0byBhZGQgYWRkaXRpb25hbCBicmFuY2hlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VCcmFuY2hlcz86IHsgW25hbWU6IHN0cmluZ106IEJyYW5jaE9wdGlvbnMgfTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgZ2l0aHViIGlzc3VlIG9uIGV2ZXJ5IGZhaWxlZCBwdWJsaXNoaW5nIHRhc2suXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlRmFpbHVyZUlzc3VlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxhYmVsIHRvIGFwcGx5IHRvIGlzc3VlcyBpbmRpY2F0aW5nIHB1Ymxpc2ggZmFpbHVyZXMuXG4gICAqIE9ubHkgYXBwbGllcyBpZiBgcmVsZWFzZUZhaWx1cmVJc3N1ZWAgaXMgdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJmYWlsZWQtcmVsZWFzZVwiXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlRmFpbHVyZUlzc3VlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLlxuICAgKiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZ1xuICAgKiB2ZXJzaW9uIG51bWJlcnMuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb25maWd1cmF0aW9uIHVzZWQgd2hlbiBjcmVhdGluZyBjaGFuZ2Vsb2cgd2l0aCBzdGFuZGFyZC12ZXJzaW9uIHBhY2thZ2UuXG4gICAqIEdpdmVuIHZhbHVlcyBlaXRoZXIgYXBwZW5kIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvciBvdmVyd3JpdGUgdmFsdWVzIGluIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYXBwbGljYWJsZSBmb3IgR2l0SHViIHJlcG9zaXRvcmllc1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqXG4gICAqIEdpdGh1YiBSdW5uZXIgc2VsZWN0aW9uIGxhYmVsc1xuICAgKiBAZGVmYXVsdCBbXCJ1YnVudHUtbGF0ZXN0XCJdXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1J1bnNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgcHVibGlzaGluZyB0YXNrcyB0aGF0IGNhbiBiZSBleGVjdXRlZCBtYW51YWxseSBhcyB3ZWxsIGFzIHdvcmtmbG93cy5cbiAgICpcbiAgICogTm9ybWFsbHksIHB1Ymxpc2hpbmcgb25seSBoYXBwZW5zIHdpdGhpbiBhdXRvbWF0ZWQgd29ya2Zsb3dzLiBFbmFibGUgdGhpc1xuICAgKiBpbiBvcmRlciB0byBjcmVhdGUgYSBwdWJsaXNoaW5nIHRhc2sgZm9yIGVhY2ggcHVibGlzaGluZyBhY3Rpdml0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUYXNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZyB0byBwYWNrYWdlIG1hbmFnZXJzLCBqdXN0IHByaW50IHRoZSBwdWJsaXNoaW5nIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoRHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgUmVsZWFzZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZU9wdGlvbnMgZXh0ZW5kcyBSZWxlYXNlUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRhc2sgdG8gZXhlY3V0ZSBpbiBvcmRlciB0byBjcmVhdGUgdGhlIHJlbGVhc2UgYXJ0aWZhY3RzLiBBcnRpZmFjdHMgYXJlXG4gICAqIGV4cGVjdGVkIHRvIHJlc2lkZSB1bmRlciBgYXJ0aWZhY3RzRGlyZWN0b3J5YCAoZGVmYXVsdHMgdG8gYGRpc3QvYCkgb25jZVxuICAgKiBidWlsZCBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhc2s6IFRhc2s7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBvZiBhIC5qc29uIGZpbGUgdG8gc2V0IHRoZSBgdmVyc2lvbmAgZmllbGQgaW4gYWZ0ZXIgYSBidW1wLlxuICAgKlxuICAgKiBAZXhhbXBsZSBcInBhY2thZ2UuanNvblwiXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBicmFuY2ggbmFtZSB0byByZWxlYXNlIGZyb20uXG4gICAqXG4gICAqIFVzZSBgbWFqb3JWZXJzaW9uYCB0byByZXN0cmljdCB0aGlzIGJyYW5jaCB0byBvbmx5IHB1Ymxpc2ggcmVsZWFzZXMgd2l0aCBhXG4gICAqIHNwZWNpZmljIG1ham9yIHZlcnNpb24uXG4gICAqXG4gICAqIFlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgYnJhbmNoZXMgdXNpbmcgYGFkZEJyYW5jaCgpYC5cbiAgICovXG4gIHJlYWRvbmx5IGJyYW5jaDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBHaXRIdWIgcmVsZWFzZSBmb3IgZWFjaCByZWxlYXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBnaXRodWJSZWxlYXNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBkaXJlY3Rvcnkgd2hpY2ggd2lsbCBjb250YWluIGJ1aWxkIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJkaXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOb2RlIHZlcnNpb24gdG8gc2V0dXAgaW4gR2l0SHViIHdvcmtmbG93cyBpZiBhbnkgbm9kZS1iYXNlZCBDTEkgdXRpbGl0aWVzXG4gICAqIGFyZSBuZWVkZWQuIEZvciBleGFtcGxlIGBwdWJsaWJgLCB0aGUgQ0xJIHByb2plbiB1c2VzIHRvIHB1Ymxpc2ggcmVsZWFzZXMsXG4gICAqIGlzIGFuIG5wbSBsaWJyYXJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxNC54XG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05vZGVWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1hbmFnZXMgcmVsZWFzZXMgKGN1cnJlbnRseSB0aHJvdWdoIEdpdEh1YiB3b3JrZmxvd3MpLlxuICpcbiAqIEJ5IGRlZmF1bHQsIG5vIGJyYW5jaGVzIGFyZSByZWxlYXNlZC4gVG8gYWRkIGJyYW5jaGVzLCBjYWxsIGBhZGRCcmFuY2goKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWxlYXNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTlRJX1RBTVBFUl9DTUQgPVxuICAgIFwiZ2l0IGRpZmYgLS1pZ25vcmUtc3BhY2UtYXQtZW9sIC0tZXhpdC1jb2RlXCI7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBgUmVsZWFzZWAgY29tcG9uZW50IG9mIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJvamVjdFxuICAgKiBkb2VzIG5vdCBoYXZlIGEgUmVsZWFzZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IEdpdEh1YlByb2plY3QpOiBSZWxlYXNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc1JlbGVhc2UgPSAoYzogQ29tcG9uZW50KTogYyBpcyBSZWxlYXNlID0+IGMgaW5zdGFuY2VvZiBSZWxlYXNlO1xuICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc1JlbGVhc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhY2thZ2UgcHVibGlzaGVyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHB1Ymxpc2hlcjogUHVibGlzaGVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRUYXNrOiBUYXNrO1xuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb246IFZlcnNpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9zdEJ1aWxkU3RlcHM6IEpvYlN0ZXBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyOiBSZWxlYXNlVHJpZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVCdWlsZFN0ZXBzOiBKb2JTdGVwW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVySW1hZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyYW5jaGVzID0gbmV3IEFycmF5PFJlbGVhc2VCcmFuY2g+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgam9iczogUmVjb3JkPHN0cmluZywgSm9iPiA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRCcmFuY2g6IFJlbGVhc2VCcmFuY2g7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0aHViPzogR2l0SHViO1xuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYnJhbmNoSG9va3M6IEJyYW5jaEhvb2tbXTtcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgYnVpbGQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFydGlmYWN0c0RpcmVjdG9yeTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IEdpdEh1YlByb2plY3QsIG9wdGlvbnM6IFJlbGVhc2VPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnJlbGVhc2VCcmFuY2hlcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1wicmVsZWFzZUJyYW5jaGVzXCIgaXMgbm8gbG9uZ2VyIGFuIGFycmF5LiBTZWUgdHlwZSBhbm5vdGF0aW9ucydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5naXRodWIgPSBwcm9qZWN0LmdpdGh1YjtcbiAgICB0aGlzLmJ1aWxkVGFzayA9IG9wdGlvbnMudGFzaztcbiAgICB0aGlzLnByZUJ1aWxkU3RlcHMgPSBvcHRpb25zLnJlbGVhc2VXb3JrZmxvd1NldHVwU3RlcHMgPz8gW107XG4gICAgdGhpcy5wb3N0QnVpbGRTdGVwcyA9IG9wdGlvbnMucG9zdEJ1aWxkU3RlcHMgPz8gW107XG4gICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnkgPSBvcHRpb25zLmFydGlmYWN0c0RpcmVjdG9yeSA/PyBcImRpc3RcIjtcbiAgICB0aGlzLnZlcnNpb25GaWxlID0gb3B0aW9ucy52ZXJzaW9uRmlsZTtcbiAgICB0aGlzLnJlbGVhc2VUcmlnZ2VyID0gb3B0aW9ucy5yZWxlYXNlVHJpZ2dlciA/PyBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKCk7XG4gICAgdGhpcy5jb250YWluZXJJbWFnZSA9IG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZTtcbiAgICB0aGlzLndvcmtmbG93UnVuc09uID0gb3B0aW9ucy53b3JrZmxvd1J1bnNPbjtcbiAgICB0aGlzLl9icmFuY2hIb29rcyA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogVXNlIG1hbnVhbCByZWxlYXNlcyB3aXRoIG5vIGNoYW5nZWxvZyBpZiByZWxlYXNlRXZlcnlDb21taXQgaXMgZXhwbGljaXRseVxuICAgICAqIGRpc2FibGVkIGFuZCBubyBvdGhlciB0cmlnZ2VyIGlzIHNldC5cbiAgICAgKlxuICAgICAqIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gcmVsZWFzZUV2ZXJ5Q29tbWl0IGFuZCByZWxlYXNlU2NoZWR1bGUgYXJlIHJlbW92ZWRcbiAgICAgKi9cbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICAob3B0aW9ucy5yZWxlYXNlRXZlcnlDb21taXQgPz8gdHJ1ZSkgfHxcbiAgICAgICAgb3B0aW9ucy5yZWxlYXNlU2NoZWR1bGUgfHxcbiAgICAgICAgb3B0aW9ucy5yZWxlYXNlVHJpZ2dlclxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5yZWxlYXNlVHJpZ2dlciA9IFJlbGVhc2VUcmlnZ2VyLm1hbnVhbCh7IGNoYW5nZWxvZzogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVsZWFzZVNjaGVkdWxlKSB7XG4gICAgICB0aGlzLnJlbGVhc2VUcmlnZ2VyID0gUmVsZWFzZVRyaWdnZXIuc2NoZWR1bGVkKHtcbiAgICAgICAgc2NoZWR1bGU6IG9wdGlvbnMucmVsZWFzZVNjaGVkdWxlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy52ZXJzaW9uID0gbmV3IFZlcnNpb24ocHJvamVjdCwge1xuICAgICAgdmVyc2lvbklucHV0RmlsZTogdGhpcy52ZXJzaW9uRmlsZSxcbiAgICAgIGFydGlmYWN0c0RpcmVjdG9yeTogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICB2ZXJzaW9ucmNPcHRpb25zOiBvcHRpb25zLnZlcnNpb25yY09wdGlvbnMsXG4gICAgICB0YWdQcmVmaXg6IG9wdGlvbnMucmVsZWFzZVRhZ1ByZWZpeCxcbiAgICB9KTtcblxuICAgIHRoaXMucHVibGlzaGVyID0gbmV3IFB1Ymxpc2hlcihwcm9qZWN0LCB7XG4gICAgICBhcnRpZmFjdE5hbWU6IHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgY29uZGl0aW9uOiBgbmVlZHMuJHtCVUlMRF9KT0JJRH0ub3V0cHV0cy4ke0xBVEVTVF9DT01NSVRfT1VUUFVUfSA9PSBnaXRodWIuc2hhYCxcbiAgICAgIGJ1aWxkSm9iSWQ6IEJVSUxEX0pPQklELFxuICAgICAganNpaVJlbGVhc2VWZXJzaW9uOiBvcHRpb25zLmpzaWlSZWxlYXNlVmVyc2lvbixcbiAgICAgIGZhaWx1cmVJc3N1ZTogb3B0aW9ucy5yZWxlYXNlRmFpbHVyZUlzc3VlLFxuICAgICAgZmFpbHVyZUlzc3VlTGFiZWw6IG9wdGlvbnMucmVsZWFzZUZhaWx1cmVJc3N1ZUxhYmVsLFxuICAgICAgd29ya2Zsb3dSdW5zT246IG9wdGlvbnMud29ya2Zsb3dSdW5zT24sXG4gICAgICBwdWJsaXNoVGFza3M6IG9wdGlvbnMucHVibGlzaFRhc2tzLFxuICAgICAgZHJ5UnVuOiBvcHRpb25zLnB1Ymxpc2hEcnlSdW4sXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBnaXRodWJSZWxlYXNlID0gb3B0aW9ucy5naXRodWJSZWxlYXNlID8/IHRydWU7XG4gICAgaWYgKGdpdGh1YlJlbGVhc2UpIHtcbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hUb0dpdEh1YlJlbGVhc2VzKHtcbiAgICAgICAgY2hhbmdlbG9nRmlsZTogcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICAgIHRoaXMudmVyc2lvbi5jaGFuZ2Vsb2dGaWxlTmFtZVxuICAgICAgICApLFxuICAgICAgICB2ZXJzaW9uRmlsZTogcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICAgIHRoaXMudmVyc2lvbi52ZXJzaW9uRmlsZU5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgcmVsZWFzZVRhZ0ZpbGU6IHBhdGgucG9zaXguam9pbihcbiAgICAgICAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgICB0aGlzLnZlcnNpb24ucmVsZWFzZVRhZ0ZpbGVOYW1lXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgdGhlIGRlZmF1bHQgYnJhbmNoICh3ZSBuZWVkIHRoZSBpbnRlcm5hbCBtZXRob2Qgd2hpY2ggZG9lcyBub3QgcmVxdWlyZSBtYWpvclZlcnNpb24pXG4gICAgdGhpcy5kZWZhdWx0QnJhbmNoID0gdGhpcy5fYWRkQnJhbmNoKG9wdGlvbnMuYnJhbmNoLCB7XG4gICAgICBwcmVyZWxlYXNlOiBvcHRpb25zLnByZXJlbGVhc2UsXG4gICAgICBtYWpvclZlcnNpb246IG9wdGlvbnMubWFqb3JWZXJzaW9uLFxuICAgICAgbWluTWFqb3JWZXJzaW9uOiBvcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgIHdvcmtmbG93TmFtZTogb3B0aW9ucy5yZWxlYXNlV29ya2Zsb3dOYW1lID8/IFwicmVsZWFzZVwiLFxuICAgICAgdGFnUHJlZml4OiBvcHRpb25zLnJlbGVhc2VUYWdQcmVmaXgsXG4gICAgICBucG1EaXN0VGFnOiBvcHRpb25zLm5wbURpc3RUYWcsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBvcHRzXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zLnJlbGVhc2VCcmFuY2hlcyA/PyB7fSkpIHtcbiAgICAgIHRoaXMuYWRkQnJhbmNoKG5hbWUsIG9wdHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBob29rIHRoYXQgc2hvdWxkIGJlIHJ1biBmb3IgZXZlcnkgYnJhbmNoIChpbmNsdWRpbmcgdGhvc2UgdGhhdCB3aWxsXG4gICAqIGJlIGFkZGVkIGJ5IGZ1dHVyZSBgYWRkQnJhbmNoYCBjYWxscykuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9mb3JFYWNoQnJhbmNoKGhvb2s6IEJyYW5jaEhvb2spIHtcbiAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLl9icmFuY2hlcykge1xuICAgICAgaG9vayhicmFuY2gubmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX2JyYW5jaEhvb2tzLnB1c2goaG9vayk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlbGVhc2UgYnJhbmNoLlxuICAgKlxuICAgKiBJdCBpcyBhIGdpdCBicmFuY2ggZnJvbSB3aGljaCByZWxlYXNlcyBhcmUgcHVibGlzaGVkLiBJZiBhIHByb2plY3QgaGFzIG1vcmUgdGhhbiBvbmUgcmVsZWFzZVxuICAgKiBicmFuY2gsIHdlIHJlcXVpcmUgdGhhdCBgbWFqb3JWZXJzaW9uYCBpcyBhbHNvIHNwZWNpZmllZCBmb3IgdGhlIHByaW1hcnkgYnJhbmNoIGluIG9yZGVyIHRvXG4gICAqIGVuc3VyZSBicmFuY2hlcyBhbHdheXMgcmVsZWFzZSB0aGUgY29ycmVjdCB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYnJhbmNoIFRoZSBicmFuY2ggdG8gbW9uaXRvciAoZS5nLiBgbWFpbmAsIGB2Mi54YClcbiAgICogQHBhcmFtIG9wdGlvbnMgQnJhbmNoIGRlZmluaXRpb25cbiAgICovXG4gIHB1YmxpYyBhZGRCcmFuY2goYnJhbmNoOiBzdHJpbmcsIG9wdGlvbnM6IEJyYW5jaE9wdGlvbnMpIHtcbiAgICB0aGlzLl9hZGRCcmFuY2goYnJhbmNoLCBvcHRpb25zKTtcblxuICAgIC8vIHJ1biBhbGwgYnJhbmNoIGhvb2tzXG4gICAgZm9yIChjb25zdCBob29rIG9mIHRoaXMuX2JyYW5jaEhvb2tzKSB7XG4gICAgICBob29rKGJyYW5jaCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZWxlYXNlIGJyYW5jaC5cbiAgICpcbiAgICogSXQgaXMgYSBnaXQgYnJhbmNoIGZyb20gd2hpY2ggcmVsZWFzZXMgYXJlIHB1Ymxpc2hlZC4gSWYgYSBwcm9qZWN0IGhhcyBtb3JlIHRoYW4gb25lIHJlbGVhc2VcbiAgICogYnJhbmNoLCB3ZSByZXF1aXJlIHRoYXQgYG1ham9yVmVyc2lvbmAgaXMgYWxzbyBzcGVjaWZpZWQgZm9yIHRoZSBwcmltYXJ5IGJyYW5jaCBpbiBvcmRlciB0b1xuICAgKiBlbnN1cmUgYnJhbmNoZXMgYWx3YXlzIHJlbGVhc2UgdGhlIGNvcnJlY3QgdmVyc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIGJyYW5jaCBUaGUgYnJhbmNoIHRvIG1vbml0b3IgKGUuZy4gYG1haW5gLCBgdjIueGApXG4gICAqIEBwYXJhbSBvcHRpb25zIEJyYW5jaCBkZWZpbml0aW9uXG4gICAqL1xuICBwcml2YXRlIF9hZGRCcmFuY2goXG4gICAgYnJhbmNoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUGFydGlhbDxCcmFuY2hPcHRpb25zPlxuICApOiBSZWxlYXNlQnJhbmNoIHtcbiAgICBpZiAodGhpcy5fYnJhbmNoZXMuZmluZCgoYikgPT4gYi5uYW1lID09PSBicmFuY2gpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZWxlYXNlIGJyYW5jaCAke2JyYW5jaH0gaXMgYWxyZWFkeSBkZWZpbmVkYCk7XG4gICAgfVxuXG4gICAgLy8gaWYgd2UgYWRkIGEgYnJhbmNoLCB3ZSByZXF1aXJlIHRoYXQgdGhlIGRlZmF1bHQgYnJhbmNoIHdpbGwgYWxzbyBkZWZpbmUgYVxuICAgIC8vIG1ham9yIHZlcnNpb24uXG4gICAgaWYgKFxuICAgICAgdGhpcy5kZWZhdWx0QnJhbmNoICYmXG4gICAgICBvcHRpb25zLm1ham9yVmVyc2lvbiAmJlxuICAgICAgdGhpcy5kZWZhdWx0QnJhbmNoLm1ham9yVmVyc2lvbiA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICd5b3UgbXVzdCBzcGVjaWZ5IFwibWFqb3JWZXJzaW9uXCIgZm9yIHRoZSBkZWZhdWx0IGJyYW5jaCB3aGVuIGFkZGluZyBtdWx0aXBsZSByZWxlYXNlIGJyYW5jaGVzJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlQnJhbmNoOiBSZWxlYXNlQnJhbmNoID0ge1xuICAgICAgbmFtZTogYnJhbmNoLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHdvcmtmbG93OiB0aGlzLmNyZWF0ZVdvcmtmbG93KGJyYW5jaCwgb3B0aW9ucyksXG4gICAgfTtcblxuICAgIHRoaXMuX2JyYW5jaGVzLnB1c2gocmVsZWFzZUJyYW5jaCk7XG5cbiAgICByZXR1cm4gcmVsZWFzZUJyYW5jaDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVTeW50aGVzaXplKCkge1xuICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIHRoaXMuX2JyYW5jaGVzKSB7XG4gICAgICBpZiAoIWJyYW5jaC53b3JrZmxvdykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJhbmNoLndvcmtmbG93LmFkZEpvYnMoXG4gICAgICAgIHRoaXMucHVibGlzaGVyLl9yZW5kZXJKb2JzRm9yQnJhbmNoKGJyYW5jaC5uYW1lLCBicmFuY2gpXG4gICAgICApO1xuICAgICAgYnJhbmNoLndvcmtmbG93LmFkZEpvYnModGhpcy5qb2JzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBqb2JzIHRvIGFsbCByZWxlYXNlIHdvcmtmbG93cy5cbiAgICogQHBhcmFtIGpvYnMgVGhlIGpvYnMgdG8gYWRkIChuYW1lID0+IGpvYilcbiAgICovXG4gIHB1YmxpYyBhZGRKb2JzKGpvYnM6IFJlY29yZDxzdHJpbmcsIEpvYj4pIHtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBqb2JdIG9mIE9iamVjdC5lbnRyaWVzKGpvYnMpKSB7XG4gICAgICB0aGlzLmpvYnNbbmFtZV0gPSBqb2I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFsbCByZWxlYXNlIGJyYW5jaCBuYW1lc1xuICAgKi9cbiAgcHVibGljIGdldCBicmFuY2hlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyYW5jaGVzLm1hcCgoYikgPT4gYi5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIHdvcmtmbG93IG9yIGB1bmRlZmluZWRgIGlmIGdpdGh1YiBpbnRlZ3JhdGlvbiBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlV29ya2Zsb3coXG4gICAgYnJhbmNoTmFtZTogc3RyaW5nLFxuICAgIGJyYW5jaDogUGFydGlhbDxCcmFuY2hPcHRpb25zPlxuICApOiBUYXNrV29ya2Zsb3cgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IGJyYW5jaC53b3JrZmxvd05hbWUgPz8gYHJlbGVhc2UtJHticmFuY2hOYW1lfWA7XG5cbiAgICAvLyB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0d28gY29tbWl0cyB0cnlpbmcgdG8gcmVsZWFzZSB0aGUgc2FtZVxuICAgIC8vIHZlcnNpb24sIHdlIGNoZWNrIGlmIHRoZSBoZWFkIHNoYSBpcyBpZGVudGljYWwgdG8gdGhlIHJlbW90ZSBzaGEuIGlmXG4gICAgLy8gbm90LCB3ZSB3aWxsIHNraXAgdGhlIHJlbGVhc2UgYW5kIGp1c3QgZmluaXNoIHRoZSBidWlsZC5cbiAgICBjb25zdCBub05ld0NvbW1pdHMgPSBgXFwke3sgc3RlcHMuJHtHSVRfUkVNT1RFX1NURVBJRH0ub3V0cHV0cy4ke0xBVEVTVF9DT01NSVRfT1VUUFVUfSA9PSBnaXRodWIuc2hhIH19YDtcblxuICAgIC8vIFRoZSBhcnJheXMgYXJlIGJlaW5nIGNsb25lZCB0byBhdm9pZCBhY2N1bXVsYXRpbmcgdmFsdWVzIGZyb20gcHJldmlvdXMgYnJhbmNoZXNcbiAgICBjb25zdCBwcmVCdWlsZFN0ZXBzID0gWy4uLnRoaXMucHJlQnVpbGRTdGVwc107XG5cbiAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBSRUxFQVNFOiBcInRydWVcIixcbiAgICB9O1xuXG4gICAgaWYgKGJyYW5jaC5tYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52Lk1BSk9SID0gYnJhbmNoLm1ham9yVmVyc2lvbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChicmFuY2gucHJlcmVsZWFzZSkge1xuICAgICAgZW52LlBSRVJFTEVBU0UgPSBicmFuY2gucHJlcmVsZWFzZTtcbiAgICB9XG5cbiAgICBpZiAoYnJhbmNoLnRhZ1ByZWZpeCkge1xuICAgICAgZW52LlJFTEVBU0VfVEFHX1BSRUZJWCA9IGJyYW5jaC50YWdQcmVmaXg7XG4gICAgfVxuXG4gICAgLy8gdGhlIFwicmVsZWFzZVwiIHRhc2sgcHJlcGFyZXMgYSByZWxlYXNlIGJ1dCBkb2VzIG5vdCBwdWJsaXNoIGFueXRoaW5nLiB0aGVcbiAgICAvLyBvdXRwdXQgb2YgdGhlIHJlbGVhc2UgdGFzayBpczogYGRpc3RgLCBgLnZlcnNpb24udHh0YCwgYW5kXG4gICAgLy8gYC5jaGFuZ2Vsb2cubWRgLiB0aGlzIGlzIHdoYXQgcHVibGlzaCB0YXNrcyBleHBlY3QuXG5cbiAgICAvLyBpZiB0aGlzIGlzIHRoZSByZWxlYXNlIGZvciBcIm1haW5cIiBvciBcIm1hc3RlclwiLCBqdXN0IGNhbGwgaXQgXCJyZWxlYXNlXCIuXG4gICAgLy8gb3RoZXJ3aXNlLCBcInJlbGVhc2U6QlJBTkNIXCJcbiAgICBjb25zdCByZWxlYXNlVGFza05hbWUgPVxuICAgICAgYnJhbmNoTmFtZSA9PT0gXCJtYWluXCIgfHwgYnJhbmNoTmFtZSA9PT0gXCJtYXN0ZXJcIlxuICAgICAgICA/IFwicmVsZWFzZVwiXG4gICAgICAgIDogYHJlbGVhc2U6JHticmFuY2hOYW1lfWA7XG4gICAgY29uc3QgcmVsZWFzZVRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhyZWxlYXNlVGFza05hbWUsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgUHJlcGFyZSBhIHJlbGVhc2UgZnJvbSBcIiR7YnJhbmNoTmFtZX1cIiBicmFuY2hgLFxuICAgICAgZW52LFxuICAgIH0pO1xuXG4gICAgcmVsZWFzZVRhc2suZXhlYyhgcm0gLWZyICR7dGhpcy5hcnRpZmFjdHNEaXJlY3Rvcnl9YCk7XG4gICAgcmVsZWFzZVRhc2suc3Bhd24odGhpcy52ZXJzaW9uLmJ1bXBUYXNrKTtcbiAgICByZWxlYXNlVGFzay5zcGF3bih0aGlzLmJ1aWxkVGFzayk7XG4gICAgcmVsZWFzZVRhc2suc3Bhd24odGhpcy52ZXJzaW9uLnVuYnVtcFRhc2spO1xuXG4gICAgLy8gYW50aS10YW1wZXIgY2hlY2sgKGZhaWxzIGlmIHRoZXJlIHdlcmUgY2hhbmdlcyB0byBjb21taXR0ZWQgZmlsZXMpXG4gICAgLy8gdGhpcyB3aWxsIGlkZW50aWZ5IGFueSBub24tY29tbWl0dGVkIGZpbGVzIGdlbmVyYXRlZCBkdXJpbmcgYnVpbGQgKGUuZy4gdGVzdCBzbmFwc2hvdHMpXG4gICAgcmVsZWFzZVRhc2suZXhlYyhSZWxlYXNlLkFOVElfVEFNUEVSX0NNRCk7XG5cbiAgICBpZiAodGhpcy5yZWxlYXNlVHJpZ2dlci5pc01hbnVhbCkge1xuICAgICAgY29uc3QgcHVibGlzaFRhc2sgPSB0aGlzLnB1Ymxpc2hlci5wdWJsaXNoVG9HaXQoe1xuICAgICAgICBjaGFuZ2Vsb2dGaWxlOiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgICAgdGhpcy52ZXJzaW9uLmNoYW5nZWxvZ0ZpbGVOYW1lXG4gICAgICAgICksXG4gICAgICAgIHZlcnNpb25GaWxlOiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgICAgdGhpcy52ZXJzaW9uLnZlcnNpb25GaWxlTmFtZVxuICAgICAgICApLFxuICAgICAgICByZWxlYXNlVGFnRmlsZTogcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICAgIHRoaXMudmVyc2lvbi5yZWxlYXNlVGFnRmlsZU5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgcHJvamVjdENoYW5nZWxvZ0ZpbGU6IHRoaXMucmVsZWFzZVRyaWdnZXIuY2hhbmdlbG9nUGF0aCxcbiAgICAgICAgZ2l0QnJhbmNoOiBicmFuY2hOYW1lLFxuICAgICAgICBnaXRQdXNoQ29tbWFuZDogdGhpcy5yZWxlYXNlVHJpZ2dlci5naXRQdXNoQ29tbWFuZCxcbiAgICAgIH0pO1xuXG4gICAgICByZWxlYXNlVGFzay5zcGF3bihwdWJsaXNoVGFzayk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zdEJ1aWxkU3RlcHMgPSBbLi4udGhpcy5wb3N0QnVpbGRTdGVwc107XG5cbiAgICAvLyBjaGVjayBpZiBuZXcgY29tbWl0cyB3ZXJlIHB1c2hlZCB0byB0aGUgcmVwbyB3aGlsZSB3ZSB3ZXJlIGJ1aWxkaW5nLlxuICAgIC8vIGlmIG5ldyBjb21taXRzIGhhdmUgYmVlbiBwdXNoZWQsIHdlIHdpbGwgY2FuY2VsIHRoaXMgcmVsZWFzZVxuICAgIHBvc3RCdWlsZFN0ZXBzLnB1c2goe1xuICAgICAgbmFtZTogXCJDaGVjayBmb3IgbmV3IGNvbW1pdHNcIixcbiAgICAgIGlkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgIHJ1bjogYGVjaG8gOjpzZXQtb3V0cHV0IG5hbWU9JHtMQVRFU1RfQ09NTUlUX09VVFBVVH06OlwiJChnaXQgbHMtcmVtb3RlIG9yaWdpbiAtaCBcXCR7eyBnaXRodWIucmVmIH19IHwgY3V0IC1mMSlcImAsXG4gICAgfSk7XG5cbiAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKHtcbiAgICAgIG5hbWU6IFwiVXBsb2FkIGFydGlmYWN0XCIsXG4gICAgICBpZjogbm9OZXdDb21taXRzLFxuICAgICAgdXNlczogXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2Mi4xLjFcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgbmFtZTogQlVJTERfQVJUSUZBQ1RfTkFNRSxcbiAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZ2l0aHViICYmICF0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICByZXR1cm4gbmV3IFRhc2tXb3JrZmxvdyh0aGlzLmdpdGh1Yiwge1xuICAgICAgICBuYW1lOiB3b3JrZmxvd05hbWUsXG4gICAgICAgIGpvYklkOiBCVUlMRF9KT0JJRCxcbiAgICAgICAgb3V0cHV0czoge1xuICAgICAgICAgIGxhdGVzdF9jb21taXQ6IHtcbiAgICAgICAgICAgIHN0ZXBJZDogR0lUX1JFTU9URV9TVEVQSUQsXG4gICAgICAgICAgICBvdXRwdXROYW1lOiBMQVRFU1RfQ09NTUlUX09VVFBVVCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgIHNjaGVkdWxlOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLnNjaGVkdWxlXG4gICAgICAgICAgICA/IFt7IGNyb246IHRoaXMucmVsZWFzZVRyaWdnZXIuc2NoZWR1bGUgfV1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHB1c2g6IHRoaXMucmVsZWFzZVRyaWdnZXIuaXNDb250aW51b3VzXG4gICAgICAgICAgICA/IHsgYnJhbmNoZXM6IFticmFuY2hOYW1lXSB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lckltYWdlXG4gICAgICAgICAgPyB7IGltYWdlOiB0aGlzLmNvbnRhaW5lckltYWdlIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgQ0k6IFwidHJ1ZVwiLFxuICAgICAgICB9LFxuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLldSSVRFLFxuICAgICAgICB9LFxuICAgICAgICBjaGVja291dFdpdGg6IHtcbiAgICAgICAgICAvLyB3ZSBtdXN0IHVzZSAnZmV0Y2gtZGVwdGg9MCcgaW4gb3JkZXIgdG8gZmV0Y2ggYWxsIHRhZ3NcbiAgICAgICAgICAvLyBvdGhlcndpc2UgdGFncyBhcmUgbm90IGNoZWNrZWQgb3V0XG4gICAgICAgICAgXCJmZXRjaC1kZXB0aFwiOiAwLFxuICAgICAgICB9LFxuICAgICAgICBwcmVCdWlsZFN0ZXBzLFxuICAgICAgICB0YXNrOiByZWxlYXNlVGFzayxcbiAgICAgICAgcG9zdEJ1aWxkU3RlcHMsXG4gICAgICAgIHJ1bnNPbjogdGhpcy53b3JrZmxvd1J1bnNPbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGEgcmVsZWFzZSBicmFuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVsZWFzZSB3b3JrZmxvdy5cbiAgICogQGRlZmF1bHQgXCJyZWxlYXNlLUJSQU5DSFwiXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYWpvciB2ZXJzaW9ucyByZWxlYXNlZCBmcm9tIHRoaXMgYnJhbmNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG1ham9yIHZlcnNpb24gdG8gcmVsZWFzZS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogQnVtcCB0aGUgdmVyc2lvbiBhcyBhIHByZS1yZWxlYXNlIHRhZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3JtYWwgcmVsZWFzZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZXJlbGVhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgYWRkIHRoZSBnaXZlbiBwcmVmaXggdG8gcmVsZWFzZSB0YWdzLlxuICAgKiBVc2VmdWwgaWYgeW91IGFyZSByZWxlYXNpbmcgb24gbXVsdGlwbGUgYnJhbmNoZXMgd2l0aCBvdmVybGFwcGluZ1xuICAgKiB2ZXJzaW9uIG51bWJlcnMuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgcHJlZml4IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBsYXRlc3QgdGFnZ2VkIHZlcnNpb25cbiAgICogd2hlbiBidW1waW5nLCBzbyBpZiB5b3UgY2hhbmdlIHRoaXMgb24gYSBwcm9qZWN0IHdpdGggYW4gZXhpc3RpbmcgdmVyc2lvblxuICAgKiBoaXN0b3J5LCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgdGFnIHlvdXIgbGF0ZXN0IHJlbGVhc2VcbiAgICogd2l0aCB0aGUgbmV3IHByZWZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5wbSBkaXN0cmlidXRpb24gdGFnIHRvIHVzZSBmb3IgdGhpcyBicmFuY2guXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5wbURpc3RUYWc/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZWxlYXNlQnJhbmNoIGV4dGVuZHMgUGFydGlhbDxCcmFuY2hPcHRpb25zPiB7XG4gIHJlYWRvbmx5IHdvcmtmbG93PzogR2l0aHViV29ya2Zsb3c7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cbiJdfQ==
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWxlYXNlL3JlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsNENBQXlDO0FBQ3pDLHNDQUFnRjtBQUNoRixtREFHNkI7QUFDN0IsK0RBQXdFO0FBRXhFLHdDQUFxQztBQUNyQywyQ0FBd0M7QUFDeEMsdURBQW1EO0FBRW5ELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUM5QixNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQXdPN0M7Ozs7R0FJRztBQUNILE1BQWEsT0FBUSxTQUFRLHFCQUFTO0lBcUNwQyxZQUFZLE9BQXNCLEVBQUUsT0FBdUI7UUFDekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBZEEsY0FBUyxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO1FBQ3ZDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBZTlDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FDYiwrREFBK0QsQ0FDaEUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQztRQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7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QUFVLEVBQUUsb0JBQW9CO3FCQUNqQztpQkFDRjtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUTt3QkFDcEMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDMUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWTt3QkFDcEMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQzVCLENBQUMsQ0FBQyxTQUFTO2lCQUNkO2dCQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDNUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ2hDLENBQUMsQ0FBQyxTQUFTO2dCQUNiLEdBQUcsRUFBRTtvQkFDSCxFQUFFLEVBQUUsTUFBTTtpQkFDWDtnQkFDRCxXQUFXLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsS0FBSztpQkFDOUI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLHlEQUF5RDtvQkFDekQscUNBQXFDO29CQUNyQyxhQUFhLEVBQUUsQ0FBQztpQkFDakI7Z0JBQ0QsYUFBYTtnQkFDYixJQUFJLEVBQUUsV0FBVztnQkFDakIsY0FBYztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDNUIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7QUE1WEgsMEJBNlhDOzs7QUE1WHdCLHVCQUFlLEdBQ3BDLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgR2l0SHViLCBHaXRIdWJQcm9qZWN0LCBHaXRodWJXb3JrZmxvdywgVGFza1dvcmtmbG93IH0gZnJvbSBcIi4uL2dpdGh1YlwiO1xuaW1wb3J0IHtcbiAgQlVJTERfQVJUSUZBQ1RfTkFNRSxcbiAgUEVSTUlTU0lPTl9CQUNLVVBfRklMRSxcbn0gZnJvbSBcIi4uL2dpdGh1Yi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEpvYiwgSm9iUGVybWlzc2lvbiwgSm9iU3RlcCB9IGZyb20gXCIuLi9naXRodWIvd29ya2Zsb3dzLW1vZGVsXCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IFZlcnNpb24gfSBmcm9tIFwiLi4vdmVyc2lvblwiO1xuaW1wb3J0IHsgUHVibGlzaGVyIH0gZnJvbSBcIi4vcHVibGlzaGVyXCI7XG5pbXBvcnQgeyBSZWxlYXNlVHJpZ2dlciB9IGZyb20gXCIuL3JlbGVhc2UtdHJpZ2dlclwiO1xuXG5jb25zdCBCVUlMRF9KT0JJRCA9IFwicmVsZWFzZVwiO1xuY29uc3QgR0lUX1JFTU9URV9TVEVQSUQgPSBcImdpdF9yZW1vdGVcIjtcbmNvbnN0IExBVEVTVF9DT01NSVRfT1VUUFVUID0gXCJsYXRlc3RfY29tbWl0XCI7XG5cbnR5cGUgQnJhbmNoSG9vayA9IChicmFuY2g6IHN0cmluZykgPT4gdm9pZDtcblxuLyoqXG4gKiBQcm9qZWN0IG9wdGlvbnMgZm9yIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZVByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgcmVsZWFzZSBuZXcgdmVyc2lvbnMgZXZlcnkgY29tbWl0IHRvIG9uZSBvZiBicmFuY2hlcyBpbiBgcmVsZWFzZUJyYW5jaGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHJlbGVhc2VUcmlnZ2VyOiBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgIGluc3RlYWRcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VFdmVyeUNvbW1pdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENST04gc2NoZWR1bGUgdG8gdHJpZ2dlciBuZXcgcmVsZWFzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2NoZWR1bGVkIHJlbGVhc2VzXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgcmVsZWFzZVRyaWdnZXI6IFJlbGVhc2VUcmlnZ2VyLnNjaGVkdWxlZCgpYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlU2NoZWR1bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWxlYXNlIHRyaWdnZXIgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIENvbnRpbnVvdXMgcmVsZWFzZXMgKGBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKClgKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI/OiBSZWxlYXNlVHJpZ2dlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2Ygd29ya2Zsb3cgc3RlcHMgdG8gZXhlY3V0ZSBpbiBvcmRlciB0byBzZXR1cCB0aGUgd29ya2Zsb3dcbiAgICogY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVdvcmtmbG93U2V0dXBTdGVwcz86IEpvYlN0ZXBbXTtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIHRvIHVzZSBmb3IgR2l0SHViIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZhdWx0IGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0NvbnRhaW5lckltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIHJlcXVpcmVtZW50IG9mIGBwdWJsaWJgIHdoaWNoIGlzIHVzZWQgdG8gcHVibGlzaCBtb2R1bGVzIHRvIG5wbS5cbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkganNpaVJlbGVhc2VWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGVwcyB0byBleGVjdXRlIGFmdGVyIGJ1aWxkIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwb3N0QnVpbGRTdGVwcz86IEpvYlN0ZXBbXTtcblxuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byByZWxlYXNlIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNwZWNpZmllZCwgd2UgYnVtcCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtYWpvciB2ZXJzaW9uIGxpbmUuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsYXRlc3QgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBNYWpvciB2ZXJzaW9uIGlzIG5vdCBlbmZvcmNlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW1hbCBNYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2VcbiAgICpcbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNldCB0byAxLCBhcyBicmVha2luZyBjaGFuZ2VzIGJlZm9yZSB0aGUgMS54IG1ham9yXG4gICAqIHJlbGVhc2UgYXJlIG5vdCBpbmNyZW1lbnRpbmcgdGhlIG1ham9yIHZlcnNpb24gbnVtYmVyLlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0b2dldGhlciB3aXRoIGBtYWpvclZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gdmVyc2lvbiBpcyBiZWluZyBlbmZvcmNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWluTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCdW1wIHZlcnNpb25zIGZyb20gdGhlIGRlZmF1bHQgYnJhbmNoIGFzIHByZS1yZWxlYXNlcyAoZS5nLiBcImJldGFcIixcbiAgICogXCJhbHBoYVwiLCBcInByZVwiKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3JtYWwgc2VtYW50aWMgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHByZXJlbGVhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBucG1EaXN0VGFnIHRvIHVzZSB3aGVuIHB1Ymxpc2hpbmcgZnJvbSB0aGUgZGVmYXVsdCBicmFuY2guXG4gICAqXG4gICAqIFRvIHNldCB0aGUgbnBtIGRpc3QtdGFnIGZvciByZWxlYXNlIGJyYW5jaGVzLCBzZXQgdGhlIGBucG1EaXN0VGFnYCBwcm9wZXJ0eVxuICAgKiBmb3IgZWFjaCBicmFuY2guXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IG5wbURpc3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiUmVsZWFzZVwiXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlV29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGFkZGl0aW9uYWwgcmVsZWFzZSBicmFuY2hlcy4gQSB3b3JrZmxvdyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2hcbiAgICogcmVsZWFzZSBicmFuY2ggd2hpY2ggd2lsbCBwdWJsaXNoIHJlbGVhc2VzIGZyb20gY29tbWl0cyBpbiB0aGlzIGJyYW5jaC5cbiAgICogRWFjaCByZWxlYXNlIGJyYW5jaCBfbXVzdF8gYmUgYXNzaWduZWQgYSBtYWpvciB2ZXJzaW9uIG51bWJlciB3aGljaCBpcyB1c2VkXG4gICAqIHRvIGVuZm9yY2UgdGhhdCB2ZXJzaW9ucyBwdWJsaXNoZWQgZnJvbSB0aGF0IGJyYW5jaCBhbHdheXMgdXNlIHRoYXQgbWFqb3JcbiAgICogdmVyc2lvbi4gSWYgbXVsdGlwbGUgYnJhbmNoZXMgYXJlIHVzZWQsIHRoZSBgbWFqb3JWZXJzaW9uYCBmaWVsZCBtdXN0IGFsc29cbiAgICogYmUgcHJvdmlkZWQgZm9yIHRoZSBkZWZhdWx0IGJyYW5jaC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGJyYW5jaGVzIGFyZSB1c2VkIGZvciByZWxlYXNlLiB5b3UgY2FuIHVzZVxuICAgKiBgYWRkQnJhbmNoKClgIHRvIGFkZCBhZGRpdGlvbmFsIGJyYW5jaGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZUJyYW5jaGVzPzogeyBbbmFtZTogc3RyaW5nXTogQnJhbmNoT3B0aW9ucyB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBnaXRodWIgaXNzdWUgb24gZXZlcnkgZmFpbGVkIHB1Ymxpc2hpbmcgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VGYWlsdXJlSXNzdWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdG8gYXBwbHkgdG8gaXNzdWVzIGluZGljYXRpbmcgcHVibGlzaCBmYWlsdXJlcy5cbiAgICogT25seSBhcHBsaWVzIGlmIGByZWxlYXNlRmFpbHVyZUlzc3VlYCBpcyB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImZhaWxlZC1yZWxlYXNlXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VGYWlsdXJlSXNzdWVMYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSBhZGQgdGhlIGdpdmVuIHByZWZpeCB0byByZWxlYXNlIHRhZ3MuXG4gICAqIFVzZWZ1bCBpZiB5b3UgYXJlIHJlbGVhc2luZyBvbiBtdWx0aXBsZSBicmFuY2hlcyB3aXRoIG92ZXJsYXBwaW5nXG4gICAqIHZlcnNpb24gbnVtYmVycy5cbiAgICpcbiAgICogTm90ZTogdGhpcyBwcmVmaXggaXMgdXNlZCB0byBkZXRlY3QgdGhlIGxhdGVzdCB0YWdnZWQgdmVyc2lvblxuICAgKiB3aGVuIGJ1bXBpbmcsIHNvIGlmIHlvdSBjaGFuZ2UgdGhpcyBvbiBhIHByb2plY3Qgd2l0aCBhbiBleGlzdGluZyB2ZXJzaW9uXG4gICAqIGhpc3RvcnksIHlvdSBtYXkgbmVlZCB0byBtYW51YWxseSB0YWcgeW91ciBsYXRlc3QgcmVsZWFzZVxuICAgKiB3aXRoIHRoZSBuZXcgcHJlZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzZVRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGNvbmZpZ3VyYXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNoYW5nZWxvZyB3aXRoIHN0YW5kYXJkLXZlcnNpb24gcGFja2FnZS5cbiAgICogR2l2ZW4gdmFsdWVzIGVpdGhlciBhcHBlbmQgdG8gZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIG92ZXJ3cml0ZSB2YWx1ZXMgaW4gaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gc3RhbmRhcmQgY29uZmlndXJhdGlvbiBhcHBsaWNhYmxlIGZvciBHaXRIdWIgcmVwb3NpdG9yaWVzXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9ucmNPcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvKipcbiAgICogR2l0aHViIFJ1bm5lciBzZWxlY3Rpb24gbGFiZWxzXG4gICAqIEBkZWZhdWx0IFtcInVidW50dS1sYXRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93UnVuc09uPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZSBwdWJsaXNoaW5nIHRhc2tzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIG1hbnVhbGx5IGFzIHdlbGwgYXMgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBOb3JtYWxseSwgcHVibGlzaGluZyBvbmx5IGhhcHBlbnMgd2l0aGluIGF1dG9tYXRlZCB3b3JrZmxvd3MuIEVuYWJsZSB0aGlzXG4gICAqIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHB1Ymxpc2hpbmcgdGFzayBmb3IgZWFjaCBwdWJsaXNoaW5nIGFjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRhc2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5zdGVhZCBvZiBhY3R1YWxseSBwdWJsaXNoaW5nIHRvIHBhY2thZ2UgbWFuYWdlcnMsIGp1c3QgcHJpbnQgdGhlIHB1Ymxpc2hpbmcgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hEcnlSdW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBSZWxlYXNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlT3B0aW9ucyBleHRlbmRzIFJlbGVhc2VQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFzayB0byBleGVjdXRlIGluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgcmVsZWFzZSBhcnRpZmFjdHMuIEFydGlmYWN0cyBhcmVcbiAgICogZXhwZWN0ZWQgdG8gcmVzaWRlIHVuZGVyIGBhcnRpZmFjdHNEaXJlY3RvcnlgIChkZWZhdWx0cyB0byBgZGlzdC9gKSBvbmNlXG4gICAqIGJ1aWxkIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFzazogVGFzaztcblxuICAvKipcbiAgICogQSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgdGhlIGB2ZXJzaW9uYCBmaWVsZCBpbiBhZnRlciBhIGJ1bXAuXG4gICAqXG4gICAqIEBleGFtcGxlIFwicGFja2FnZS5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25GaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJyYW5jaCBuYW1lIHRvIHJlbGVhc2UgZnJvbS5cbiAgICpcbiAgICogVXNlIGBtYWpvclZlcnNpb25gIHRvIHJlc3RyaWN0IHRoaXMgYnJhbmNoIHRvIG9ubHkgcHVibGlzaCByZWxlYXNlcyB3aXRoIGFcbiAgICogc3BlY2lmaWMgbWFqb3IgdmVyc2lvbi5cbiAgICpcbiAgICogWW91IGNhbiBhZGQgYWRkaXRpb25hbCBicmFuY2hlcyB1c2luZyBgYWRkQnJhbmNoKClgLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIEdpdEh1YiByZWxlYXNlIGZvciBlYWNoIHJlbGVhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlJlbGVhc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGRpcmVjdG9yeSB3aGljaCB3aWxsIGNvbnRhaW4gYnVpbGQgYXJ0aWZhY3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImRpc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5vZGUgdmVyc2lvbiB0byBzZXR1cCBpbiBHaXRIdWIgd29ya2Zsb3dzIGlmIGFueSBub2RlLWJhc2VkIENMSSB1dGlsaXRpZXNcbiAgICogYXJlIG5lZWRlZC4gRm9yIGV4YW1wbGUgYHB1YmxpYmAsIHRoZSBDTEkgcHJvamVuIHVzZXMgdG8gcHVibGlzaCByZWxlYXNlcyxcbiAgICogaXMgYW4gbnBtIGxpYnJhcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IDE0LnhcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93Tm9kZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWFuYWdlcyByZWxlYXNlcyAoY3VycmVudGx5IHRocm91Z2ggR2l0SHViIHdvcmtmbG93cykuXG4gKlxuICogQnkgZGVmYXVsdCwgbm8gYnJhbmNoZXMgYXJlIHJlbGVhc2VkLiBUbyBhZGQgYnJhbmNoZXMsIGNhbGwgYGFkZEJyYW5jaCgpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFOVElfVEFNUEVSX0NNRCA9XG4gICAgXCJnaXQgZGlmZiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgLS1leGl0LWNvZGVcIjtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBSZWxlYXNlYCBjb21wb25lbnQgb2YgYSBwcm9qZWN0IG9yIGB1bmRlZmluZWRgIGlmIHRoZSBwcm9qZWN0XG4gICAqIGRvZXMgbm90IGhhdmUgYSBSZWxlYXNlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogR2l0SHViUHJvamVjdCk6IFJlbGVhc2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzUmVsZWFzZSA9IChjOiBDb21wb25lbnQpOiBjIGlzIFJlbGVhc2UgPT4gYyBpbnN0YW5jZW9mIFJlbGVhc2U7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzUmVsZWFzZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFja2FnZSBwdWJsaXNoZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGlzaGVyOiBQdWJsaXNoZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFRhc2s6IFRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmVyc2lvbjogVmVyc2lvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBwb3N0QnVpbGRTdGVwczogSm9iU3RlcFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI6IFJlbGVhc2VUcmlnZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHByZUJ1aWxkU3RlcHM6IEpvYlN0ZXBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXJJbWFnZT86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJhbmNoZXMgPSBuZXcgQXJyYXk8UmVsZWFzZUJyYW5jaD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBqb2JzOiBSZWNvcmQ8c3RyaW5nLCBKb2I+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEJyYW5jaDogUmVsZWFzZUJyYW5jaDtcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRodWI/OiBHaXRIdWI7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2Zsb3dSdW5zT24/OiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9icmFuY2hIb29rczogQnJhbmNoSG9va1tdO1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBvZiBidWlsZCBhcnRpZmFjdHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWZhY3RzRGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogR2l0SHViUHJvamVjdCwgb3B0aW9uczogUmVsZWFzZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMucmVsZWFzZUJyYW5jaGVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnXCJyZWxlYXNlQnJhbmNoZXNcIiBpcyBubyBsb25nZXIgYW4gYXJyYXkuIFNlZSB0eXBlIGFubm90YXRpb25zJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmdpdGh1YiA9IHByb2plY3QuZ2l0aHViO1xuICAgIHRoaXMuYnVpbGRUYXNrID0gb3B0aW9ucy50YXNrO1xuICAgIHRoaXMucHJlQnVpbGRTdGVwcyA9IG9wdGlvbnMucmVsZWFzZVdvcmtmbG93U2V0dXBTdGVwcyA/PyBbXTtcbiAgICB0aGlzLnBvc3RCdWlsZFN0ZXBzID0gb3B0aW9ucy5wb3N0QnVpbGRTdGVwcyA/PyBbXTtcbiAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSA9IG9wdGlvbnMuYXJ0aWZhY3RzRGlyZWN0b3J5ID8/IFwiZGlzdFwiO1xuICAgIHRoaXMudmVyc2lvbkZpbGUgPSBvcHRpb25zLnZlcnNpb25GaWxlO1xuICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyID8/IFJlbGVhc2VUcmlnZ2VyLmNvbnRpbnVvdXMoKTtcbiAgICB0aGlzLmNvbnRhaW5lckltYWdlID0gb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlO1xuICAgIHRoaXMud29ya2Zsb3dSdW5zT24gPSBvcHRpb25zLndvcmtmbG93UnVuc09uO1xuICAgIHRoaXMuX2JyYW5jaEhvb2tzID0gW107XG5cbiAgICAvKipcbiAgICAgKiBVc2UgbWFudWFsIHJlbGVhc2VzIHdpdGggbm8gY2hhbmdlbG9nIGlmIHJlbGVhc2VFdmVyeUNvbW1pdCBpcyBleHBsaWNpdGx5XG4gICAgICogZGlzYWJsZWQgYW5kIG5vIG90aGVyIHRyaWdnZXIgaXMgc2V0LlxuICAgICAqXG4gICAgICogVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiByZWxlYXNlRXZlcnlDb21taXQgYW5kIHJlbGVhc2VTY2hlZHVsZSBhcmUgcmVtb3ZlZFxuICAgICAqL1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIChvcHRpb25zLnJlbGVhc2VFdmVyeUNvbW1pdCA/PyB0cnVlKSB8fFxuICAgICAgICBvcHRpb25zLnJlbGVhc2VTY2hlZHVsZSB8fFxuICAgICAgICBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbGVhc2VUcmlnZ2VyID0gUmVsZWFzZVRyaWdnZXIubWFudWFsKHsgY2hhbmdlbG9nOiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5yZWxlYXNlU2NoZWR1bGUpIHtcbiAgICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBSZWxlYXNlVHJpZ2dlci5zY2hlZHVsZWQoe1xuICAgICAgICBzY2hlZHVsZTogb3B0aW9ucy5yZWxlYXNlU2NoZWR1bGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnZlcnNpb24gPSBuZXcgVmVyc2lvbihwcm9qZWN0LCB7XG4gICAgICB2ZXJzaW9uSW5wdXRGaWxlOiB0aGlzLnZlcnNpb25GaWxlLFxuICAgICAgYXJ0aWZhY3RzRGlyZWN0b3J5OiB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgIHZlcnNpb25yY09wdGlvbnM6IG9wdGlvbnMudmVyc2lvbnJjT3B0aW9ucyxcbiAgICAgIHRhZ1ByZWZpeDogb3B0aW9ucy5yZWxlYXNlVGFnUHJlZml4LFxuICAgIH0pO1xuXG4gICAgdGhpcy5wdWJsaXNoZXIgPSBuZXcgUHVibGlzaGVyKHByb2plY3QsIHtcbiAgICAgIGFydGlmYWN0TmFtZTogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICBjb25kaXRpb246IGBuZWVkcy4ke0JVSUxEX0pPQklEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGFgLFxuICAgICAgYnVpbGRKb2JJZDogQlVJTERfSk9CSUQsXG4gICAgICBqc2lpUmVsZWFzZVZlcnNpb246IG9wdGlvbnMuanNpaVJlbGVhc2VWZXJzaW9uLFxuICAgICAgZmFpbHVyZUlzc3VlOiBvcHRpb25zLnJlbGVhc2VGYWlsdXJlSXNzdWUsXG4gICAgICBmYWlsdXJlSXNzdWVMYWJlbDogb3B0aW9ucy5yZWxlYXNlRmFpbHVyZUlzc3VlTGFiZWwsXG4gICAgICB3b3JrZmxvd1J1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICAgIHB1Ymxpc2hUYXNrczogb3B0aW9ucy5wdWJsaXNoVGFza3MsXG4gICAgICBkcnlSdW46IG9wdGlvbnMucHVibGlzaERyeVJ1bixcbiAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IG9wdGlvbnMud29ya2Zsb3dOb2RlVmVyc2lvbixcbiAgICB9KTtcblxuICAgIGNvbnN0IGdpdGh1YlJlbGVhc2UgPSBvcHRpb25zLmdpdGh1YlJlbGVhc2UgPz8gdHJ1ZTtcbiAgICBpZiAoZ2l0aHViUmVsZWFzZSkge1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaFRvR2l0SHViUmVsZWFzZXMoe1xuICAgICAgICBjaGFuZ2Vsb2dGaWxlOiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgICAgdGhpcy52ZXJzaW9uLmNoYW5nZWxvZ0ZpbGVOYW1lXG4gICAgICAgICksXG4gICAgICAgIHZlcnNpb25GaWxlOiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgICAgdGhpcy52ZXJzaW9uLnZlcnNpb25GaWxlTmFtZVxuICAgICAgICApLFxuICAgICAgICByZWxlYXNlVGFnRmlsZTogcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgIHRoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5LFxuICAgICAgICAgIHRoaXMudmVyc2lvbi5yZWxlYXNlVGFnRmlsZU5hbWVcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGFkZCB0aGUgZGVmYXVsdCBicmFuY2ggKHdlIG5lZWQgdGhlIGludGVybmFsIG1ldGhvZCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIG1ham9yVmVyc2lvbilcbiAgICB0aGlzLmRlZmF1bHRCcmFuY2ggPSB0aGlzLl9hZGRCcmFuY2gob3B0aW9ucy5icmFuY2gsIHtcbiAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy5tYWpvclZlcnNpb24sXG4gICAgICBtaW5NYWpvclZlcnNpb246IG9wdGlvbnMubWluTWFqb3JWZXJzaW9uLFxuICAgICAgd29ya2Zsb3dOYW1lOiBvcHRpb25zLnJlbGVhc2VXb3JrZmxvd05hbWUgPz8gXCJyZWxlYXNlXCIsXG4gICAgICB0YWdQcmVmaXg6IG9wdGlvbnMucmVsZWFzZVRhZ1ByZWZpeCxcbiAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgW25hbWUsIG9wdHNdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMucmVsZWFzZUJyYW5jaGVzID8/IHt9KSkge1xuICAgICAgdGhpcy5hZGRCcmFuY2gobmFtZSwgb3B0cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGhvb2sgdGhhdCBzaG91bGQgYmUgcnVuIGZvciBldmVyeSBicmFuY2ggKGluY2x1ZGluZyB0aG9zZSB0aGF0IHdpbGxcbiAgICogYmUgYWRkZWQgYnkgZnV0dXJlIGBhZGRCcmFuY2hgIGNhbGxzKS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2ZvckVhY2hCcmFuY2goaG9vazogQnJhbmNoSG9vaykge1xuICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIHRoaXMuX2JyYW5jaGVzKSB7XG4gICAgICBob29rKGJyYW5jaC5uYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fYnJhbmNoSG9va3MucHVzaChob29rKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVsZWFzZSBicmFuY2guXG4gICAqXG4gICAqIEl0IGlzIGEgZ2l0IGJyYW5jaCBmcm9tIHdoaWNoIHJlbGVhc2VzIGFyZSBwdWJsaXNoZWQuIElmIGEgcHJvamVjdCBoYXMgbW9yZSB0aGFuIG9uZSByZWxlYXNlXG4gICAqIGJyYW5jaCwgd2UgcmVxdWlyZSB0aGF0IGBtYWpvclZlcnNpb25gIGlzIGFsc28gc3BlY2lmaWVkIGZvciB0aGUgcHJpbWFyeSBicmFuY2ggaW4gb3JkZXIgdG9cbiAgICogZW5zdXJlIGJyYW5jaGVzIGFsd2F5cyByZWxlYXNlIHRoZSBjb3JyZWN0IHZlcnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSBicmFuY2ggVGhlIGJyYW5jaCB0byBtb25pdG9yIChlLmcuIGBtYWluYCwgYHYyLnhgKVxuICAgKiBAcGFyYW0gb3B0aW9ucyBCcmFuY2ggZGVmaW5pdGlvblxuICAgKi9cbiAgcHVibGljIGFkZEJyYW5jaChicmFuY2g6IHN0cmluZywgb3B0aW9uczogQnJhbmNoT3B0aW9ucykge1xuICAgIHRoaXMuX2FkZEJyYW5jaChicmFuY2gsIG9wdGlvbnMpO1xuXG4gICAgLy8gcnVuIGFsbCBicmFuY2ggaG9va3NcbiAgICBmb3IgKGNvbnN0IGhvb2sgb2YgdGhpcy5fYnJhbmNoSG9va3MpIHtcbiAgICAgIGhvb2soYnJhbmNoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlbGVhc2UgYnJhbmNoLlxuICAgKlxuICAgKiBJdCBpcyBhIGdpdCBicmFuY2ggZnJvbSB3aGljaCByZWxlYXNlcyBhcmUgcHVibGlzaGVkLiBJZiBhIHByb2plY3QgaGFzIG1vcmUgdGhhbiBvbmUgcmVsZWFzZVxuICAgKiBicmFuY2gsIHdlIHJlcXVpcmUgdGhhdCBgbWFqb3JWZXJzaW9uYCBpcyBhbHNvIHNwZWNpZmllZCBmb3IgdGhlIHByaW1hcnkgYnJhbmNoIGluIG9yZGVyIHRvXG4gICAqIGVuc3VyZSBicmFuY2hlcyBhbHdheXMgcmVsZWFzZSB0aGUgY29ycmVjdCB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYnJhbmNoIFRoZSBicmFuY2ggdG8gbW9uaXRvciAoZS5nLiBgbWFpbmAsIGB2Mi54YClcbiAgICogQHBhcmFtIG9wdGlvbnMgQnJhbmNoIGRlZmluaXRpb25cbiAgICovXG4gIHByaXZhdGUgX2FkZEJyYW5jaChcbiAgICBicmFuY2g6IHN0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEJyYW5jaE9wdGlvbnM+XG4gICk6IFJlbGVhc2VCcmFuY2gge1xuICAgIGlmICh0aGlzLl9icmFuY2hlcy5maW5kKChiKSA9PiBiLm5hbWUgPT09IGJyYW5jaCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHJlbGVhc2UgYnJhbmNoICR7YnJhbmNofSBpcyBhbHJlYWR5IGRlZmluZWRgKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSBhZGQgYSBicmFuY2gsIHdlIHJlcXVpcmUgdGhhdCB0aGUgZGVmYXVsdCBicmFuY2ggd2lsbCBhbHNvIGRlZmluZSBhXG4gICAgLy8gbWFqb3IgdmVyc2lvbi5cbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRCcmFuY2ggJiZcbiAgICAgIG9wdGlvbnMubWFqb3JWZXJzaW9uICYmXG4gICAgICB0aGlzLmRlZmF1bHRCcmFuY2gubWFqb3JWZXJzaW9uID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ3lvdSBtdXN0IHNwZWNpZnkgXCJtYWpvclZlcnNpb25cIiBmb3IgdGhlIGRlZmF1bHQgYnJhbmNoIHdoZW4gYWRkaW5nIG11bHRpcGxlIHJlbGVhc2UgYnJhbmNoZXMnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGVhc2VCcmFuY2g6IFJlbGVhc2VCcmFuY2ggPSB7XG4gICAgICBuYW1lOiBicmFuY2gsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgd29ya2Zsb3c6IHRoaXMuY3JlYXRlV29ya2Zsb3coYnJhbmNoLCBvcHRpb25zKSxcbiAgICB9O1xuXG4gICAgdGhpcy5fYnJhbmNoZXMucHVzaChyZWxlYXNlQnJhbmNoKTtcblxuICAgIHJldHVybiByZWxlYXNlQnJhbmNoO1xuICB9XG5cbiAgcHVibGljIHByZVN5bnRoZXNpemUoKSB7XG4gICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy5fYnJhbmNoZXMpIHtcbiAgICAgIGlmICghYnJhbmNoLndvcmtmbG93KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmFuY2gud29ya2Zsb3cuYWRkSm9icyhcbiAgICAgICAgdGhpcy5wdWJsaXNoZXIuX3JlbmRlckpvYnNGb3JCcmFuY2goYnJhbmNoLm5hbWUsIGJyYW5jaClcbiAgICAgICk7XG4gICAgICBicmFuY2gud29ya2Zsb3cuYWRkSm9icyh0aGlzLmpvYnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGpvYnMgdG8gYWxsIHJlbGVhc2Ugd29ya2Zsb3dzLlxuICAgKiBAcGFyYW0gam9icyBUaGUgam9icyB0byBhZGQgKG5hbWUgPT4gam9iKVxuICAgKi9cbiAgcHVibGljIGFkZEpvYnMoam9iczogUmVjb3JkPHN0cmluZywgSm9iPikge1xuICAgIGZvciAoY29uc3QgW25hbWUsIGpvYl0gb2YgT2JqZWN0LmVudHJpZXMoam9icykpIHtcbiAgICAgIHRoaXMuam9ic1tuYW1lXSA9IGpvYjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYWxsIHJlbGVhc2UgYnJhbmNoIG5hbWVzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJyYW5jaGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fYnJhbmNoZXMubWFwKChiKSA9PiBiLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGEgd29ya2Zsb3cgb3IgYHVuZGVmaW5lZGAgaWYgZ2l0aHViIGludGVncmF0aW9uIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVXb3JrZmxvdyhcbiAgICBicmFuY2hOYW1lOiBzdHJpbmcsXG4gICAgYnJhbmNoOiBQYXJ0aWFsPEJyYW5jaE9wdGlvbnM+XG4gICk6IFRhc2tXb3JrZmxvdyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lID0gYnJhbmNoLndvcmtmbG93TmFtZSA/PyBgcmVsZWFzZS0ke2JyYW5jaE5hbWV9YDtcblxuICAgIC8vIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIHR3byBjb21taXRzIHRyeWluZyB0byByZWxlYXNlIHRoZSBzYW1lXG4gICAgLy8gdmVyc2lvbiwgd2UgY2hlY2sgaWYgdGhlIGhlYWQgc2hhIGlzIGlkZW50aWNhbCB0byB0aGUgcmVtb3RlIHNoYS4gaWZcbiAgICAvLyBub3QsIHdlIHdpbGwgc2tpcCB0aGUgcmVsZWFzZSBhbmQganVzdCBmaW5pc2ggdGhlIGJ1aWxkLlxuICAgIGNvbnN0IG5vTmV3Q29tbWl0cyA9IGBcXCR7eyBzdGVwcy4ke0dJVF9SRU1PVEVfU1RFUElEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGEgfX1gO1xuXG4gICAgLy8gVGhlIGFycmF5cyBhcmUgYmVpbmcgY2xvbmVkIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB2YWx1ZXMgZnJvbSBwcmV2aW91cyBicmFuY2hlc1xuICAgIGNvbnN0IHByZUJ1aWxkU3RlcHMgPSBbLi4udGhpcy5wcmVCdWlsZFN0ZXBzXTtcblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFJFTEVBU0U6IFwidHJ1ZVwiLFxuICAgIH07XG5cbiAgICBpZiAoYnJhbmNoLm1ham9yVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbnYuTUFKT1IgPSBicmFuY2gubWFqb3JWZXJzaW9uLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGJyYW5jaC5wcmVyZWxlYXNlKSB7XG4gICAgICBlbnYuUFJFUkVMRUFTRSA9IGJyYW5jaC5wcmVyZWxlYXNlO1xuICAgIH1cblxuICAgIGlmIChicmFuY2gudGFnUHJlZml4KSB7XG4gICAgICBlbnYuUkVMRUFTRV9UQUdfUFJFRklYID0gYnJhbmNoLnRhZ1ByZWZpeDtcbiAgICB9XG5cbiAgICAvLyB0aGUgXCJyZWxlYXNlXCIgdGFzayBwcmVwYXJlcyBhIHJlbGVhc2UgYnV0IGRvZXMgbm90IHB1Ymxpc2ggYW55dGhpbmcuIHRoZVxuICAgIC8vIG91dHB1dCBvZiB0aGUgcmVsZWFzZSB0YXNrIGlzOiBgZGlzdGAsIGAudmVyc2lvbi50eHRgLCBhbmRcbiAgICAvLyBgLmNoYW5nZWxvZy5tZGAuIHRoaXMgaXMgd2hhdCBwdWJsaXNoIHRhc2tzIGV4cGVjdC5cblxuICAgIC8vIGlmIHRoaXMgaXMgdGhlIHJlbGVhc2UgZm9yIFwibWFpblwiIG9yIFwibWFzdGVyXCIsIGp1c3QgY2FsbCBpdCBcInJlbGVhc2VcIi5cbiAgICAvLyBvdGhlcndpc2UsIFwicmVsZWFzZTpCUkFOQ0hcIlxuICAgIGNvbnN0IHJlbGVhc2VUYXNrTmFtZSA9XG4gICAgICBicmFuY2hOYW1lID09PSBcIm1haW5cIiB8fCBicmFuY2hOYW1lID09PSBcIm1hc3RlclwiXG4gICAgICAgID8gXCJyZWxlYXNlXCJcbiAgICAgICAgOiBgcmVsZWFzZToke2JyYW5jaE5hbWV9YDtcbiAgICBjb25zdCByZWxlYXNlVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKHJlbGVhc2VUYXNrTmFtZSwge1xuICAgICAgZGVzY3JpcHRpb246IGBQcmVwYXJlIGEgcmVsZWFzZSBmcm9tIFwiJHticmFuY2hOYW1lfVwiIGJyYW5jaGAsXG4gICAgICBlbnYsXG4gICAgfSk7XG5cbiAgICByZWxlYXNlVGFzay5leGVjKGBybSAtZnIgJHt0aGlzLmFydGlmYWN0c0RpcmVjdG9yeX1gKTtcbiAgICByZWxlYXNlVGFzay5zcGF3bih0aGlzLnZlcnNpb24uYnVtcFRhc2spO1xuICAgIHJlbGVhc2VUYXNrLnNwYXduKHRoaXMuYnVpbGRUYXNrKTtcbiAgICByZWxlYXNlVGFzay5zcGF3bih0aGlzLnZlcnNpb24udW5idW1wVGFzayk7XG5cbiAgICAvLyBhbnRpLXRhbXBlciBjaGVjayAoZmFpbHMgaWYgdGhlcmUgd2VyZSBjaGFuZ2VzIHRvIGNvbW1pdHRlZCBmaWxlcylcbiAgICAvLyB0aGlzIHdpbGwgaWRlbnRpZnkgYW55IG5vbi1jb21taXR0ZWQgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyBidWlsZCAoZS5nLiB0ZXN0IHNuYXBzaG90cylcbiAgICByZWxlYXNlVGFzay5leGVjKFJlbGVhc2UuQU5USV9UQU1QRVJfQ01EKTtcblxuICAgIGlmICh0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICBjb25zdCBwdWJsaXNoVGFzayA9IHRoaXMucHVibGlzaGVyLnB1Ymxpc2hUb0dpdCh7XG4gICAgICAgIGNoYW5nZWxvZ0ZpbGU6IHBhdGgucG9zaXguam9pbihcbiAgICAgICAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgICB0aGlzLnZlcnNpb24uY2hhbmdlbG9nRmlsZU5hbWVcbiAgICAgICAgKSxcbiAgICAgICAgdmVyc2lvbkZpbGU6IHBhdGgucG9zaXguam9pbihcbiAgICAgICAgICB0aGlzLmFydGlmYWN0c0RpcmVjdG9yeSxcbiAgICAgICAgICB0aGlzLnZlcnNpb24udmVyc2lvbkZpbGVOYW1lXG4gICAgICAgICksXG4gICAgICAgIHJlbGVhc2VUYWdGaWxlOiBwYXRoLnBvc2l4LmpvaW4oXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgICAgdGhpcy52ZXJzaW9uLnJlbGVhc2VUYWdGaWxlTmFtZVxuICAgICAgICApLFxuICAgICAgICBwcm9qZWN0Q2hhbmdlbG9nRmlsZTogdGhpcy5yZWxlYXNlVHJpZ2dlci5jaGFuZ2Vsb2dQYXRoLFxuICAgICAgICBnaXRCcmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgICAgIGdpdFB1c2hDb21tYW5kOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLmdpdFB1c2hDb21tYW5kLFxuICAgICAgfSk7XG5cbiAgICAgIHJlbGVhc2VUYXNrLnNwYXduKHB1Ymxpc2hUYXNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3N0QnVpbGRTdGVwcyA9IFsuLi50aGlzLnBvc3RCdWlsZFN0ZXBzXTtcblxuICAgIC8vIGNoZWNrIGlmIG5ldyBjb21taXRzIHdlcmUgcHVzaGVkIHRvIHRoZSByZXBvIHdoaWxlIHdlIHdlcmUgYnVpbGRpbmcuXG4gICAgLy8gaWYgbmV3IGNvbW1pdHMgaGF2ZSBiZWVuIHB1c2hlZCwgd2Ugd2lsbCBjYW5jZWwgdGhpcyByZWxlYXNlXG4gICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICBuYW1lOiBcIkNoZWNrIGZvciBuZXcgY29tbWl0c1wiLFxuICAgICAgaWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgcnVuOiBgZWNobyA6OnNldC1vdXRwdXQgbmFtZT0ke0xBVEVTVF9DT01NSVRfT1VUUFVUfTo6XCIkKGdpdCBscy1yZW1vdGUgb3JpZ2luIC1oIFxcJHt7IGdpdGh1Yi5yZWYgfX0gfCBjdXQgLWYxKVwiYCxcbiAgICB9KTtcblxuICAgIHBvc3RCdWlsZFN0ZXBzLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQmFja3VwIGFydGlmYWN0IHBlcm1pc3Npb25zXCIsXG4gICAgICAgIGlmOiBub05ld0NvbW1pdHMsXG4gICAgICAgIHJ1bjogYGNkICR7dGhpcy5hcnRpZmFjdHNEaXJlY3Rvcnl9ICYmIGdldGZhY2wgLVIgLiA+ICR7UEVSTUlTU0lPTl9CQUNLVVBfRklMRX1gLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJVcGxvYWQgYXJ0aWZhY3RcIixcbiAgICAgICAgaWY6IG5vTmV3Q29tbWl0cyxcbiAgICAgICAgdXNlczogXCJhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2Mi4xLjFcIixcbiAgICAgICAgd2l0aDoge1xuICAgICAgICAgIG5hbWU6IEJVSUxEX0FSVElGQUNUX05BTUUsXG4gICAgICAgICAgcGF0aDogdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmICh0aGlzLmdpdGh1YiAmJiAhdGhpcy5yZWxlYXNlVHJpZ2dlci5pc01hbnVhbCkge1xuICAgICAgcmV0dXJuIG5ldyBUYXNrV29ya2Zsb3codGhpcy5naXRodWIsIHtcbiAgICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgICBqb2JJZDogQlVJTERfSk9CSUQsXG4gICAgICAgIG91dHB1dHM6IHtcbiAgICAgICAgICBsYXRlc3RfY29tbWl0OiB7XG4gICAgICAgICAgICBzdGVwSWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgICAgICAgb3V0cHV0TmFtZTogTEFURVNUX0NPTU1JVF9PVVRQVVQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICBzY2hlZHVsZTogdGhpcy5yZWxlYXNlVHJpZ2dlci5zY2hlZHVsZVxuICAgICAgICAgICAgPyBbeyBjcm9uOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLnNjaGVkdWxlIH1dXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwdXNoOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzQ29udGludW91c1xuICAgICAgICAgICAgPyB7IGJyYW5jaGVzOiBbYnJhbmNoTmFtZV0gfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXJJbWFnZVxuICAgICAgICAgID8geyBpbWFnZTogdGhpcy5jb250YWluZXJJbWFnZSB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIENJOiBcInRydWVcIixcbiAgICAgICAgfSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHtcbiAgICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2tvdXRXaXRoOiB7XG4gICAgICAgICAgLy8gd2UgbXVzdCB1c2UgJ2ZldGNoLWRlcHRoPTAnIGluIG9yZGVyIHRvIGZldGNoIGFsbCB0YWdzXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHRhZ3MgYXJlIG5vdCBjaGVja2VkIG91dFxuICAgICAgICAgIFwiZmV0Y2gtZGVwdGhcIjogMCxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlQnVpbGRTdGVwcyxcbiAgICAgICAgdGFzazogcmVsZWFzZVRhc2ssXG4gICAgICAgIHBvc3RCdWlsZFN0ZXBzLFxuICAgICAgICBydW5zT246IHRoaXMud29ya2Zsb3dSdW5zT24sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHJlbGVhc2UgYnJhbmNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugd29ya2Zsb3cuXG4gICAqIEBkZWZhdWx0IFwicmVsZWFzZS1CUkFOQ0hcIlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFqb3IgdmVyc2lvbnMgcmVsZWFzZWQgZnJvbSB0aGlzIGJyYW5jaC5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yVmVyc2lvbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBtYWpvciB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEJ1bXAgdGhlIHZlcnNpb24gYXMgYSBwcmUtcmVsZWFzZSB0YWcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9ybWFsIHJlbGVhc2VzXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZ2l2ZW4gcHJlZml4IHRvIHJlbGVhc2UgdGFncy5cbiAgICogVXNlZnVsIGlmIHlvdSBhcmUgcmVsZWFzaW5nIG9uIG11bHRpcGxlIGJyYW5jaGVzIHdpdGggb3ZlcmxhcHBpbmdcbiAgICogdmVyc2lvbiBudW1iZXJzLlxuICAgKlxuICAgKiBOb3RlOiB0aGlzIHByZWZpeCBpcyB1c2VkIHRvIGRldGVjdCB0aGUgbGF0ZXN0IHRhZ2dlZCB2ZXJzaW9uXG4gICAqIHdoZW4gYnVtcGluZywgc28gaWYgeW91IGNoYW5nZSB0aGlzIG9uIGEgcHJvamVjdCB3aXRoIGFuIGV4aXN0aW5nIHZlcnNpb25cbiAgICogaGlzdG9yeSwgeW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IHRhZyB5b3VyIGxhdGVzdCByZWxlYXNlXG4gICAqIHdpdGggdGhlIG5ldyBwcmVmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJlZml4XG4gICAqL1xuICByZWFkb25seSB0YWdQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBucG0gZGlzdHJpYnV0aW9uIHRhZyB0byB1c2UgZm9yIHRoaXMgYnJhbmNoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImxhdGVzdFwiXG4gICAqL1xuICByZWFkb25seSBucG1EaXN0VGFnPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUmVsZWFzZUJyYW5jaCBleHRlbmRzIFBhcnRpYWw8QnJhbmNoT3B0aW9ucz4ge1xuICByZWFkb25seSB3b3JrZmxvdz86IEdpdGh1YldvcmtmbG93O1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG4iXX0=
|
package/lib/renovatebot.js
CHANGED
|
@@ -101,5 +101,5 @@ class Renovatebot extends component_1.Component {
|
|
|
101
101
|
}
|
|
102
102
|
exports.Renovatebot = Renovatebot;
|
|
103
103
|
_a = JSII_RTTI_SYMBOL_1;
|
|
104
|
-
Renovatebot[_a] = { fqn: "projen.Renovatebot", version: "0.
|
|
104
|
+
Renovatebot[_a] = { fqn: "projen.Renovatebot", version: "0.63.0" };
|
|
105
105
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVub3ZhdGVib3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVub3ZhdGVib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBd0M7QUFDeEMsaURBQWdEO0FBQ2hELGlDQUFrQztBQThDbEM7Ozs7O0dBS0c7QUFDSCxJQUFZLDJCQXdDWDtBQXhDRCxXQUFZLDJCQUEyQjtJQUNyQzs7T0FFRztJQUNILHVEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gscUVBQXNDLENBQUE7SUFFdEM7O09BRUc7SUFDSCxtREFBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILDhEQUFzQixDQUFBO0lBRXRCOztPQUVHO0lBQ0gsbUZBQW9ELENBQUE7SUFFcEQ7O09BRUc7SUFDSCx5RkFBMEQsQ0FBQTtJQUUxRDs7T0FFRztJQUNILHlEQUEwQixDQUFBO0lBRTFCOztPQUVHO0lBQ0gseURBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQXhDVywyQkFBMkIsR0FBM0IsbUNBQTJCLEtBQTNCLG1DQUEyQixRQXdDdEM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxXQUFZLFNBQVEscUJBQVM7SUFTeEMsWUFBWSxPQUFnQixFQUFFLFVBQThCLEVBQUU7UUFDNUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSTtZQUNsRCwyQkFBMkIsQ0FBQyxRQUFRO1NBQ3JDLENBQUM7UUFDRixDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELDBGQUEwRjtJQUNuRixhQUFhO1FBQ2xCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTywyQkFBMkI7UUFDakMsTUFBTSxjQUFjLEdBQUc7WUFDckIsR0FBRyxJQUFJLEdBQUcsQ0FDUixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO2lCQUNuQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyw2QkFBYyxDQUFDLFFBQVEsQ0FBQztpQkFDcEUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2lCQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNoQztTQUNGLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixPQUFPLEVBQUU7Z0JBQ1AsdUJBQXVCO2dCQUN2QixhQUFhO2dCQUNiLG1CQUFtQjtnQkFDbkIsbUJBQW1CO2dCQUNuQixpQkFBaUI7YUFDbEI7WUFDRCxZQUFZLEVBQUU7Z0JBQ1o7b0JBQ0UsYUFBYSxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQ2xDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztvQkFDcEMsU0FBUyxFQUFFLDZCQUE2QjtpQkFDekM7YUFDRjtZQUNELFVBQVUsRUFBRSxjQUFjO1NBQzNCLENBQUM7UUFFRixJQUFJLGVBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFO1lBQzVDLEdBQUcsRUFBRSxNQUFNO1lBQ1gsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE1REgsa0NBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi9qc29uXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFJlbm92YXRlYm90XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVub3ZhdGVib3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEhvdyBvZnRlbiB0byBjaGVjayBmb3IgbmV3IHZlcnNpb25zIGFuZCByYWlzZSBwdWxsIHJlcXVlc3RzLlxuICAgKlxuICAgKiBDYW4gYmUgZ2l2ZW4gaW4gQ1JPTiBvciBMQVRFUiBmb3JtYXQsIGFuZCB1c2UgbXVsdGlwbGUgc2NoZWR1bGVzXG4gICAqIChlLmcuIGRpZmZlcmVudCBmb3Igd2Vla2RheXMgYW5kIHdlZWtlbmRzKS4gTXVsdGlwbGUgcnVsZXMgYXJlXG4gICAqIGhhbmRsZXMgYXMgT1IuXG4gICAqXG4gICAqIFNvbWUgbm9ybWFsIHNjaGVkdWxpbmcgdmFsdWVzIGRlZmluZWQgaW4gZW51bSBgUmVub3ZhdGVib3RTY2hlZHVsZUludGVydmFsYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL2NvbmZpZ3VyYXRpb24tb3B0aW9ucy8jc2NoZWR1bGVcbiAgICogQGRlZmF1bHQgW1wiYXQgYW55IHRpbWVcIl1cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlSW50ZXJ2YWw/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogWW91IGNhbiB1c2UgdGhlIGBpZ25vcmVgIG9wdGlvbiB0byBjdXN0b21pemUgd2hpY2ggZGVwZW5kZW5jaWVzIGFyZSB1cGRhdGVkLlxuICAgKiBUaGUgaWdub3JlIG9wdGlvbiBzdXBwb3J0cyBqdXN0IHBhY2thZ2UgbmFtZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZ25vcmVzIHVwZGF0ZXMgdG8gYHByb2plbmAuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgc2luY2UgcHJvamVuIHVwZGF0ZXMgbWF5IGNhdXNlIGNoYW5nZXMgaW4gY29tbWl0dGVkIGZpbGVzXG4gICAqIGFuZCBhbnRpLXRhbXBlciBjaGVja3Mgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBQcm9qZW4gdXBncmFkZXMgYXJlIGNvdmVyZWQgdGhyb3VnaCB0aGUgYFByb2plblVwZ3JhZGVgIGNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQcm9qZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGxhYmVscyB0byBhcHBseSB0byB0aGUgY3JlYXRlZCBQUidzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogSG93IG9mdGVuIHRvIGNoZWNrIGZvciBuZXcgdmVyc2lvbnMgYW5kIHJhaXNlIHB1bGwgcmVxdWVzdHMgZm9yIHZlcnNpb25cbiAqIHVwZGF0ZXMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL3ByZXNldHMtc2NoZWR1bGUvXG4gKi9cbmV4cG9ydCBlbnVtIFJlbm92YXRlYm90U2NoZWR1bGVJbnRlcnZhbCB7XG4gIC8qKlxuICAgKiBSdW4gYXQgYW55IHRpbWVcbiAgICovXG4gIEFOWV9USU1FID0gXCJhdCBhbnkgdGltZVwiLFxuXG4gIC8qKlxuICAgKiBXZWVrbHkgc2NoZWR1bGUgb24gZWFybHkgbW9uZGF5IG1vcm5pbmdzXG4gICAqL1xuICBFQVJMWV9NT05EQVlTID0gXCJiZWZvcmUgM2FtIG9uIE1vbmRheVwiLFxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBkYWlseVxuICAgKi9cbiAgREFJTFkgPSBcImJlZm9yZSAyYW1cIixcblxuICAvKipcbiAgICogU2NoZWR1bGUgd2Vla2x5XG4gICAqL1xuICBXRUVLTFkgPSBFQVJMWV9NT05EQVlTLFxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBtb250aGx5XG4gICAqL1xuICBNT05USExZID0gXCJiZWZvcmUgM2FtIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoXCIsXG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIHF1YXJ0ZXJseVxuICAgKi9cbiAgUVVBUlRFUkxZID0gXCJldmVyeSAzIG1vbnRocyBvbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aFwiLFxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBmb3Igd2Vla2VuZHNcbiAgICovXG4gIFdFRUtFTkRTID0gXCJldmVyeSB3ZWVrZW5kXCIsXG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGZvciB3ZWVrZGF5c1xuICAgKi9cbiAgV0VFS0RBWVMgPSBcImV2ZXJ5IHdlZWtkYXlcIixcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHJlbm92YXRlYm90IGNvbmZpZ3VyYXRpb24gZm9yIHByb2plbiBwcm9qZWN0LlxuICpcbiAqIElnbm9yZXMgdGhlIHZlcnNpb25zIGNvbnRyb2xsZWQgYnkgUHJvamVuLlxuICovXG5leHBvcnQgY2xhc3MgUmVub3ZhdGVib3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9qZWN0OiBQcm9qZWN0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXhwbGljaXRJZ25vcmVzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNjaGVkdWxlSW50ZXJ2YWw6IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxzPzogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogUmVub3ZhdGVib3RPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuX3Byb2plY3QgPSBwcm9qZWN0O1xuICAgIHRoaXMuZXhwbGljaXRJZ25vcmVzID0gb3B0aW9ucy5pZ25vcmUgPz8gW107XG4gICAgdGhpcy5sYWJlbHMgPSBvcHRpb25zLmxhYmVscztcbiAgICB0aGlzLnNjaGVkdWxlSW50ZXJ2YWwgPSBvcHRpb25zLnNjaGVkdWxlSW50ZXJ2YWwgPz8gW1xuICAgICAgUmVub3ZhdGVib3RTY2hlZHVsZUludGVydmFsLkFOWV9USU1FLFxuICAgIF07XG4gICAgKG9wdGlvbnMuaWdub3JlUHJvamVuID8/IHRydWUpICYmIHRoaXMuZXhwbGljaXRJZ25vcmVzLnB1c2goXCJwcm9qZW5cIik7XG4gIH1cblxuICAvLyBjcmVhdGUgYWN0dWFsIGZpbGUgb25seSBoZXJlLCBzbyB3ZSBrbm93IHRoYXQgYWxsIGRlcGVuZGVuY2llcyBhcmUgYWRkZWQgdG8gdGhlIHByb2plY3RcbiAgcHVibGljIHByZVN5bnRoZXNpemUoKSB7XG4gICAgdGhpcy5jcmVhdGVSZW5vdmF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVub3ZhdGVDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IHJlbm92YXRlSWdub3JlID0gW1xuICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgdGhpcy5fcHJvamVjdC5kZXBzLmFsbFxuICAgICAgICAgIC5maWx0ZXIoKGRlcCkgPT4gZGVwLnZlcnNpb24gfHwgZGVwLnR5cGUgPT09IERlcGVuZGVuY3lUeXBlLk9WRVJSSURFKVxuICAgICAgICAgIC5tYXAoKGRlcCkgPT4gZGVwLm5hbWUpXG4gICAgICAgICAgLmNvbmNhdCh0aGlzLmV4cGxpY2l0SWdub3JlcylcbiAgICAgICksXG4gICAgXTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGxhYmVsczogdGhpcy5sYWJlbHMsXG4gICAgICBzY2hlZHVsZTogdGhpcy5zY2hlZHVsZUludGVydmFsLFxuICAgICAgZXh0ZW5kczogW1xuICAgICAgICBcIjpwcmVzZXJ2ZVNlbXZlclJhbmdlc1wiLFxuICAgICAgICBcImNvbmZpZzpiYXNlXCIsXG4gICAgICAgIFwiZ3JvdXA6YWxsTm9uTWFqb3JcIixcbiAgICAgICAgXCJncm91cDpyZWNvbW1lbmRlZFwiLFxuICAgICAgICBcImdyb3VwOm1vbm9yZXBvc1wiLFxuICAgICAgXSxcbiAgICAgIHBhY2thZ2VSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hEZXBUeXBlczogW1wiZGV2RGVwZW5kZW5jaWVzXCJdLFxuICAgICAgICAgIG1hdGNoVXBkYXRlVHlwZXM6IFtcInBhdGNoXCIsIFwibWlub3JcIl0sXG4gICAgICAgICAgZ3JvdXBOYW1lOiBcImRldkRlcGVuZGVuY2llcyAobm9uLW1ham9yKVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGlnbm9yZURlcHM6IHJlbm92YXRlSWdub3JlLFxuICAgIH07XG5cbiAgICBuZXcgSnNvbkZpbGUodGhpcy5fcHJvamVjdCwgXCJyZW5vdmF0ZS5qc29uNVwiLCB7XG4gICAgICBvYmo6IGNvbmZpZyxcbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|