projen 0.103.22 → 0.103.24

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.
Files changed (179) hide show
  1. package/.jsii +347 -5
  2. package/lib/ai-instructions.js +2 -2
  3. package/lib/awscdk/auto-discover.js +6 -6
  4. package/lib/awscdk/awscdk-app-java.js +1 -1
  5. package/lib/awscdk/awscdk-app-py.js +1 -1
  6. package/lib/awscdk/awscdk-app-ts.js +1 -1
  7. package/lib/awscdk/awscdk-construct.js +1 -1
  8. package/lib/awscdk/awscdk-deps-java.js +1 -1
  9. package/lib/awscdk/awscdk-deps-js.js +1 -1
  10. package/lib/awscdk/awscdk-deps-py.js +1 -1
  11. package/lib/awscdk/awscdk-deps.js +1 -1
  12. package/lib/awscdk/cdk-config.js +3 -3
  13. package/lib/awscdk/cdk-tasks.js +1 -1
  14. package/lib/awscdk/integration-test.js +1 -1
  15. package/lib/awscdk/internal.d.ts +1 -0
  16. package/lib/awscdk/lambda-extension.js +1 -1
  17. package/lib/awscdk/lambda-function.js +2 -2
  18. package/lib/awscdk/private/feature-flags-v2.const.d.ts +2 -1
  19. package/lib/awscdk/private/feature-flags-v2.const.js +4 -3
  20. package/lib/build/build-workflow.js +1 -1
  21. package/lib/cdk/auto-discover-base.js +2 -2
  22. package/lib/cdk/construct-lib.js +1 -1
  23. package/lib/cdk/integration-test-base.js +1 -1
  24. package/lib/cdk/jsii-build.js +4 -4
  25. package/lib/cdk/jsii-docgen.js +1 -1
  26. package/lib/cdk/jsii-project.js +1 -1
  27. package/lib/cdk8s/auto-discover.js +2 -2
  28. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  29. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  30. package/lib/cdk8s/cdk8s-construct.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  32. package/lib/cdk8s/cdk8s-deps.js +1 -1
  33. package/lib/cdk8s/integration-test.js +1 -1
  34. package/lib/cdktf/cdktf-construct.js +1 -1
  35. package/lib/cdktn/cdktn-app-ts.js +1 -1
  36. package/lib/cdktn/cdktn-config.js +1 -1
  37. package/lib/cdktn/cdktn-construct.js +1 -1
  38. package/lib/cdktn/cdktn-deps.js +1 -1
  39. package/lib/cdktn/cdktn-tasks.js +1 -1
  40. package/lib/circleci/circleci.js +1 -1
  41. package/lib/component.js +2 -2
  42. package/lib/dependencies.js +1 -1
  43. package/lib/dev-env.js +1 -1
  44. package/lib/docker-compose/docker-compose-service.js +1 -1
  45. package/lib/docker-compose/docker-compose.js +1 -1
  46. package/lib/file.js +1 -1
  47. package/lib/gitattributes.js +1 -1
  48. package/lib/github/actions-provider.js +1 -1
  49. package/lib/github/actions.const.d.ts +5 -2
  50. package/lib/github/actions.const.js +11 -6
  51. package/lib/github/auto-approve.js +1 -1
  52. package/lib/github/auto-merge.js +1 -1
  53. package/lib/github/auto-queue.js +1 -1
  54. package/lib/github/dependabot.js +1 -1
  55. package/lib/github/dependency-review.js +3 -3
  56. package/lib/github/github-credentials.js +3 -3
  57. package/lib/github/github-project.js +1 -1
  58. package/lib/github/github.js +1 -1
  59. package/lib/github/index.d.ts +1 -0
  60. package/lib/github/index.js +2 -1
  61. package/lib/github/merge-queue.js +1 -1
  62. package/lib/github/mergify.js +1 -1
  63. package/lib/github/pr-template.js +1 -1
  64. package/lib/github/pull-request-backport.js +3 -3
  65. package/lib/github/pull-request-lint.js +4 -4
  66. package/lib/github/stale.js +3 -3
  67. package/lib/github/task-workflow-job.js +1 -1
  68. package/lib/github/task-workflow.js +1 -1
  69. package/lib/github/workflow-actions.js +4 -4
  70. package/lib/github/workflow-jobs.js +1 -1
  71. package/lib/github/workflow-steps.js +5 -5
  72. package/lib/github/workflows.js +7 -7
  73. package/lib/gitlab/configuration.js +1 -1
  74. package/lib/gitlab/gitlab-configuration.js +1 -1
  75. package/lib/gitlab/nested-configuration.js +1 -1
  76. package/lib/gitpod.js +1 -1
  77. package/lib/ignore-file.js +1 -1
  78. package/lib/ini.js +1 -1
  79. package/lib/java/java-project.js +1 -1
  80. package/lib/java/junit.js +1 -1
  81. package/lib/java/maven-compile.js +1 -1
  82. package/lib/java/maven-packaging.js +1 -1
  83. package/lib/java/maven-sample.js +1 -1
  84. package/lib/java/pom.js +2 -2
  85. package/lib/java/projenrc.js +1 -1
  86. package/lib/javascript/biome/biome.js +1 -1
  87. package/lib/javascript/bundler.js +1 -1
  88. package/lib/javascript/eslint.js +1 -1
  89. package/lib/javascript/jest.js +4 -4
  90. package/lib/javascript/license-checker.js +1 -1
  91. package/lib/javascript/node-config-file.js +1 -1
  92. package/lib/javascript/node-package.js +1 -1
  93. package/lib/javascript/node-project.js +8 -8
  94. package/lib/javascript/npm-config.js +1 -1
  95. package/lib/javascript/pnpm-workspace-config.js +2 -2
  96. package/lib/javascript/pnpm-workspace.js +1 -1
  97. package/lib/javascript/prettier.js +1 -1
  98. package/lib/javascript/projenrc.js +1 -1
  99. package/lib/javascript/typescript-config.js +2 -2
  100. package/lib/javascript/upgrade-dependencies.js +2 -2
  101. package/lib/javascript/yarnrc.js +1 -1
  102. package/lib/json-patch.js +1 -1
  103. package/lib/json.js +1 -1
  104. package/lib/license.js +1 -1
  105. package/lib/logger.js +1 -1
  106. package/lib/makefile.js +1 -1
  107. package/lib/object-file.js +1 -1
  108. package/lib/polaris/coverity-go.js +1 -1
  109. package/lib/polaris/coverity-java.js +1 -1
  110. package/lib/polaris/coverity-javascript.js +1 -1
  111. package/lib/polaris/coverity.js +1 -1
  112. package/lib/project-build.js +1 -1
  113. package/lib/project-tree.js +1 -1
  114. package/lib/project.js +1 -1
  115. package/lib/projects.js +1 -1
  116. package/lib/projenrc-json.js +1 -1
  117. package/lib/projenrc.js +1 -1
  118. package/lib/properties-file.js +1 -1
  119. package/lib/python/pip.js +1 -1
  120. package/lib/python/poetry.js +2 -2
  121. package/lib/python/projenrc.js +1 -1
  122. package/lib/python/pyproject-toml-file.js +1 -1
  123. package/lib/python/pytest-sample.js +1 -1
  124. package/lib/python/pytest.js +1 -1
  125. package/lib/python/python-project.js +1 -1
  126. package/lib/python/python-sample.js +1 -1
  127. package/lib/python/requirements-file.js +1 -1
  128. package/lib/python/setuppy.js +1 -1
  129. package/lib/python/setuptools.js +1 -1
  130. package/lib/python/uv-config.js +1 -1
  131. package/lib/python/uv.js +1 -1
  132. package/lib/python/venv.js +1 -1
  133. package/lib/readme.js +1 -1
  134. package/lib/release/bump-version.d.ts +1 -1
  135. package/lib/release/bump-version.js +1 -1
  136. package/lib/release/commit-tag-version.js +2 -2
  137. package/lib/release/publisher.js +4 -4
  138. package/lib/release/release-trigger.js +1 -1
  139. package/lib/release/release.js +1 -1
  140. package/lib/renovatebot.js +1 -1
  141. package/lib/run-task.cjs +3 -3
  142. package/lib/sample-file.js +2 -2
  143. package/lib/script-runner.js +1 -1
  144. package/lib/sonarqube/javascript.js +1 -1
  145. package/lib/sonarqube/rust.js +1 -1
  146. package/lib/sonarqube/sonarqube.js +1 -1
  147. package/lib/sonarqube/typescript.js +1 -1
  148. package/lib/source-code.js +1 -1
  149. package/lib/task-shell.js +1 -1
  150. package/lib/task.js +1 -1
  151. package/lib/tasks.js +1 -1
  152. package/lib/testing.js +1 -1
  153. package/lib/textfile.js +1 -1
  154. package/lib/toml.js +1 -1
  155. package/lib/typescript/projenrc-ts.js +1 -1
  156. package/lib/typescript/projenrc.js +1 -1
  157. package/lib/typescript/typescript-runner.js +1 -1
  158. package/lib/typescript/typescript-typedoc.js +1 -1
  159. package/lib/typescript/typescript.js +5 -5
  160. package/lib/util/exec.js +2 -2
  161. package/lib/version.d.ts +1 -1
  162. package/lib/version.js +4 -4
  163. package/lib/vscode/devcontainer.js +1 -1
  164. package/lib/vscode/extensions.js +1 -1
  165. package/lib/vscode/launch-config.js +1 -1
  166. package/lib/vscode/settings.js +1 -1
  167. package/lib/vscode/vscode.js +1 -1
  168. package/lib/web/next.js +3 -3
  169. package/lib/web/postcss.js +1 -1
  170. package/lib/web/react.js +3 -3
  171. package/lib/web/tailwind.js +1 -1
  172. package/lib/xmlfile.js +1 -1
  173. package/lib/yaml.js +1 -1
  174. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +19 -18
  175. package/node_modules/yaml/browser/dist/nodes/Alias.js +25 -23
  176. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +19 -18
  177. package/node_modules/yaml/dist/nodes/Alias.js +25 -23
  178. package/node_modules/yaml/package.json +1 -1
  179. package/package.json +3 -3
package/lib/license.js CHANGED
@@ -38,7 +38,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
38
38
  const fs = __importStar(require("fs"));
39
39
  const file_1 = require("./file");
40
40
  class License extends file_1.FileBase {
41
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.103.22" };
41
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.License", version: "0.103.24" };
42
42
  text;
43
43
  constructor(project, options) {
44
44
  super(project, "LICENSE", {
package/lib/logger.js CHANGED
@@ -15,7 +15,7 @@ const constructs_1 = require("./util/constructs");
15
15
  * Project-level logging utilities.
16
16
  */
17
17
  class Logger extends component_1.Component {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.103.22" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.103.24" };
19
19
  level;
20
20
  usePrefix;
21
21
  constructor(scope, options = {}) {
package/lib/makefile.js CHANGED
@@ -7,7 +7,7 @@ const file_1 = require("./file");
7
7
  * Minimal Makefile.
8
8
  */
9
9
  class Makefile extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Makefile", version: "0.103.24" };
11
11
  /**
12
12
  * List of rule definitions.
13
13
  */
@@ -9,7 +9,7 @@ const util_1 = require("./util");
9
9
  * Represents an Object file.
10
10
  */
11
11
  class ObjectFile extends file_1.FileBase {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.103.22" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ObjectFile", version: "0.103.24" };
13
13
  /**
14
14
  * The output object. This object can be mutated until the project is
15
15
  * synthesized.
@@ -25,7 +25,7 @@ const util_1 = require("../util");
25
25
  * });
26
26
  */
27
27
  class PolarisGoCoverity extends coverity_1.PolarisCoverity {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.103.22" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisGoCoverity", version: "0.103.24" };
29
29
  constructor(project, options) {
30
30
  super(project, (0, util_1.deepMerge)([
31
31
  {
@@ -26,7 +26,7 @@ const util_1 = require("../util");
26
26
  * });
27
27
  */
28
28
  class PolarisJavaCoverity extends coverity_1.PolarisCoverity {
29
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.103.22" };
29
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavaCoverity", version: "0.103.24" };
30
30
  constructor(project, options) {
31
31
  super(project, (0, util_1.deepMerge)([
32
32
  {
@@ -25,7 +25,7 @@ const util_1 = require("../util");
25
25
  * });
26
26
  */
27
27
  class PolarisJavascriptCoverity extends coverity_1.PolarisCoverity {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.103.22" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisJavascriptCoverity", version: "0.103.24" };
29
29
  constructor(project, options) {
30
30
  super(project, (0, util_1.deepMerge)([
31
31
  {
@@ -13,7 +13,7 @@ const coverity_config_1 = require("./coverity-config");
13
13
  * @see https://docs.blackduck.com/r/cov_polaris/latest/coverity-on-polaris/configuration-file-schema.html
14
14
  */
15
15
  class PolarisCoverity extends component_1.Component {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.103.22" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.polaris.PolarisCoverity", version: "0.103.24" };
17
17
  /**
18
18
  * The YAML file for the Coverity on Polaris configuration.
19
19
  */
@@ -15,7 +15,7 @@ const component_1 = require("./component");
15
15
  * 6. package
16
16
  */
17
17
  class ProjectBuild extends component_1.Component {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.103.22" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectBuild", version: "0.103.24" };
19
19
  /**
20
20
  * The task responsible for a full release build.
21
21
  */
@@ -17,7 +17,7 @@ const json_1 = require("./json");
17
17
  * @stability experimental
18
18
  */
19
19
  class ProjectTree extends component_1.Component {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.103.22" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.103.24" };
21
21
  file;
22
22
  constructor(project) {
23
23
  super(project, new.target.name);
package/lib/project.js CHANGED
@@ -65,7 +65,7 @@ const DEFAULT_OUTDIR = ".";
65
65
  * Base project
66
66
  */
67
67
  class Project extends constructs_1.Construct {
68
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.103.22" };
68
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Project", version: "0.103.24" };
69
69
  /**
70
70
  * The name of the default task (the task executed when `projen` is run without arguments). Normally
71
71
  * this task should synthesize the project files.
package/lib/projects.js CHANGED
@@ -44,7 +44,7 @@ const option_hints_1 = require("./option-hints");
44
44
  * Programmatic API for projen.
45
45
  */
46
46
  class Projects {
47
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.103.22" };
47
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Projects", version: "0.103.24" };
48
48
  /**
49
49
  * Creates a new project with defaults.
50
50
  *
@@ -9,7 +9,7 @@ const projenrc_1 = require("./projenrc");
9
9
  * Sets up a project to use JSON for projenrc.
10
10
  */
11
11
  class ProjenrcJson extends projenrc_1.ProjenrcFile {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.103.22" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcJson", version: "0.103.24" };
13
13
  filePath;
14
14
  constructor(project, options = {}) {
15
15
  super(project);
package/lib/projenrc.js CHANGED
@@ -7,7 +7,7 @@ const component_1 = require("./component");
7
7
  * A component representing the projen runtime configuration
8
8
  */
9
9
  class ProjenrcFile extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjenrcFile", version: "0.103.24" };
11
11
  /**
12
12
  * Returns the `Projenrc` instance associated with a project or `undefined` if
13
13
  * there is no Projenrc.
@@ -35,7 +35,7 @@ const util_1 = require("./util");
35
35
  * // sonar.sources=src
36
36
  */
37
37
  class PropertiesFile extends object_file_1.ObjectFile {
38
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.103.22" };
38
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.PropertiesFile", version: "0.103.24" };
39
39
  comment;
40
40
  constructor(scope, filePath, options) {
41
41
  super(scope, filePath, options);
package/lib/python/pip.js CHANGED
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Manages dependencies using a requirements.txt file and the pip CLI tool.
10
10
  */
11
11
  class Pip extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.103.22" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pip", version: "0.103.24" };
13
13
  installCiTask;
14
14
  constructor(project, _options = {}) {
15
15
  super(project);
@@ -47,7 +47,7 @@ const exec_1 = require("../util/exec");
47
47
  * poetry CLI tool.
48
48
  */
49
49
  class Poetry extends component_1.Component {
50
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.103.22" };
50
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Poetry", version: "0.103.24" };
51
51
  /**
52
52
  * Task for updating the lockfile and installing project dependencies.
53
53
  */
@@ -253,7 +253,7 @@ exports.Poetry = Poetry;
253
253
  * @see https://python-poetry.org/docs/pyproject/
254
254
  */
255
255
  class PoetryPyproject extends component_1.Component {
256
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.103.22" };
256
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PoetryPyproject", version: "0.103.24" };
257
257
  file;
258
258
  constructor(scope, options) {
259
259
  super(scope);
@@ -17,7 +17,7 @@ const projenrc_1 = require("../projenrc");
17
17
  * `synth` task which will run `.projenrc.py`.
18
18
  */
19
19
  class Projenrc extends projenrc_1.ProjenrcFile {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.103.22" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Projenrc", version: "0.103.24" };
21
21
  /**
22
22
  * The name of the projenrc file.
23
23
  */
@@ -10,7 +10,7 @@ const pyproject_toml_1 = require("./pyproject-toml");
10
10
  * @see https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
11
11
  */
12
12
  class PyprojectTomlFile extends toml_1.TomlFile {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.103.22" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PyprojectTomlFile", version: "0.103.24" };
14
14
  constructor(scope, config) {
15
15
  super(scope, "pyproject.toml", {
16
16
  omitEmpty: false,
@@ -7,7 +7,7 @@ const __1 = require("..");
7
7
  * Python test code sample.
8
8
  */
9
9
  class PytestSample extends __1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PytestSample", version: "0.103.24" };
11
11
  constructor(project, options) {
12
12
  super(project);
13
13
  new __1.SampleDir(project, options.testdir, {
@@ -5,7 +5,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const component_1 = require("../component");
6
6
  const dependencies_1 = require("../dependencies");
7
7
  class Pytest extends component_1.Component {
8
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.103.22" };
8
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Pytest", version: "0.103.24" };
9
9
  testMatch;
10
10
  constructor(project, options = {}) {
11
11
  super(project);
@@ -23,7 +23,7 @@ const PYTHON_PROJECT_NAME_REGEX = /^[A-Za-z0-9-_\.]+$/;
23
23
  * @pjid python
24
24
  */
25
25
  class PythonProject extends github_1.GitHubProject {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.103.22" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonProject", version: "0.103.24" };
27
27
  /**
28
28
  * Python module name (the project name, with any hyphens or periods replaced
29
29
  * with underscores).
@@ -8,7 +8,7 @@ const sample_file_1 = require("../sample-file");
8
8
  * Python code sample.
9
9
  */
10
10
  class PythonSample extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.103.22" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.PythonSample", version: "0.103.24" };
12
12
  constructor(project, options) {
13
13
  super(project);
14
14
  new sample_file_1.SampleDir(project, options.dir, {
@@ -11,7 +11,7 @@ const semver_1 = require("../util/semver");
11
11
  * @see https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
12
12
  */
13
13
  class RequirementsFile extends file_1.FileBase {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.103.22" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.RequirementsFile", version: "0.103.24" };
15
15
  packages = new Array();
16
16
  packageProvider;
17
17
  constructor(project, filePath, options) {
@@ -7,7 +7,7 @@ const file_1 = require("../file");
7
7
  * Python packaging script where package metadata can be placed.
8
8
  */
9
9
  class SetupPy extends file_1.FileBase {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.103.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.SetupPy", version: "0.103.24" };
11
11
  setupConfig;
12
12
  constructor(project, options) {
13
13
  super(project, "setup.py");
@@ -9,7 +9,7 @@ const dependencies_1 = require("../dependencies");
9
9
  * Manages packaging through setuptools with a setup.py script.
10
10
  */
11
11
  class Setuptools extends component_1.Component {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.103.22" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Setuptools", version: "0.103.24" };
13
13
  publishTask;
14
14
  /**
15
15
  * A task that uploads the package to the Test PyPI repository.
@@ -220,7 +220,7 @@ function toJson_StaticMetadata(obj) {
220
220
  */
221
221
  class ExcludeNewerOverride {
222
222
  value;
223
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.103.22" };
223
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.uvConfig.ExcludeNewerOverride", version: "0.103.24" };
224
224
  static fromBoolean(value) {
225
225
  return new ExcludeNewerOverride(value);
226
226
  }
package/lib/python/uv.js CHANGED
@@ -11,7 +11,7 @@ const exec_1 = require("../util/exec");
11
11
  * Manage project dependencies, virtual environments, and packaging through uv.
12
12
  */
13
13
  class Uv extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.103.22" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Uv", version: "0.103.24" };
15
15
  /**
16
16
  * The `pyproject.toml` file
17
17
  */
@@ -43,7 +43,7 @@ const exec_1 = require("../util/exec");
43
43
  * Manages a virtual environment through the Python venv module.
44
44
  */
45
45
  class Venv extends component_1.Component {
46
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.103.22" };
46
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.python.Venv", version: "0.103.24" };
47
47
  /**
48
48
  * Name of directory to store the environment in
49
49
  */
package/lib/readme.js CHANGED
@@ -10,7 +10,7 @@ const sample_file_1 = require("./sample-file");
10
10
  * @param text - The initial contents of the README.md file. Defaults to '# replace this'
11
11
  */
12
12
  class SampleReadme extends sample_file_1.SampleFile {
13
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.103.22" };
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.SampleReadme", version: "0.103.24" };
14
14
  constructor(project, props) {
15
15
  super(project, props?.filename ?? "README.md", {
16
16
  contents: props?.contents ?? "# replace this",
@@ -82,7 +82,7 @@ export interface BumpOptions {
82
82
  *
83
83
  * This can be any compatible package version, including the deprecated `standard-version@9`.
84
84
  *
85
- * @default "commit-and-tag-version@12"
85
+ * @default "commit-and-tag-version@13"
86
86
  */
87
87
  readonly bumpPackage?: string;
88
88
  /**
@@ -259,4 +259,4 @@ function determineLatestTag(options) {
259
259
  }
260
260
  return { latestVersion, latestTag, isFirstRelease };
261
261
  }
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvYnVtcC12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0pBLDRDQTZDQztBQU1ELGdEQXlDQztBQU1ELDRDQW9GQztBQXhVRCwyQkFBZ0Q7QUFDaEQsK0JBQXFDO0FBRXJDLG1DQUFpQztBQUNqQyxvREFBc0M7QUFFdEMsMkNBQTRFO0FBQzVFLDZEQUEyRDtBQUMzRCx1Q0FBbUM7QUFzSW5DOzs7R0FHRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsR0FBVyxFQUNYLE9BT0M7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELENBQzVELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsR0FBRztRQUNILEtBQUs7UUFDTCxLQUFLO1FBQ0wsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7S0FDaEMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLHFDQUFxQztJQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFB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SSxDQUFDLElBQUksQ0FBQztRQUMxRCxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hFLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDOUIsSUFBSSxNQUFNLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQy9DLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiY29udmVudGlvbmFsLWNoYW5nZWxvZy1jb25maWctc3BlY1wiO1xuaW1wb3J0IHsgY29tcGFyZSB9IGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSBcIi4uL2xvZ2dpbmdcIjtcbmltcG9ydCB0eXBlIHsgQnVtcFR5cGUgfSBmcm9tIFwiLi9idW1wLXR5cGVcIjtcbmltcG9ydCB7IHBlcmZvcm1CdW1wLCByZWxhdGl2ZUJ1bXBUeXBlLCByZW5kZXJCdW1wVHlwZSB9IGZyb20gXCIuL2J1bXAtdHlwZVwiO1xuaW1wb3J0IHsgQ29tbWl0QW5kVGFnVmVyc2lvbiB9IGZyb20gXCIuL2NvbW1pdC10YWctdmVyc2lvblwiO1xuaW1wb3J0IHsgZ2l0IH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgYHZlcnNpb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbkZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBmaWxlIHRvIGdlbmVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSBhIHByZS1yZWxlYXNlIHN1ZmZpeC5cbiAgICogQGRlZmF1bHQgLSBub3JtYWwgdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWFqb3IgdmVyc2lvbiBsaW5lLiBUaGlzIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBsYXRlc3QgdmVyc2lvblxuICAgKiBhbmQgYWxzbyBlbmZvcmNlIHRoYXQgbmV3IG1ham9yIHZlcnNpb25zIGFyZSBub3QgcmVsZWFzZWQgYWNjaWRlbnRhbGx5LlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSB2ZXJzaW9uIGlzIHN1cHBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBtaW5pbWFsIG1ham9yIHZlcnNpb24uIFRoaXMgaXMgdXNlZCBpZiB5b3Ugd2FudCB0byBzdGFydCB3aXRoXG4gICAqIGEgc3BlY2lmaWMgbWFqb3IgdmVyc2lvbiwgYW5kIGluY3JlbWVudCBmcm9tIHRoZXJlIG9uLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1pbm9yIHZlcnNpb24gbGluZS4gVGhpcyBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgICogYW5kIGFsc28gZW5mb3JjZSB0aGF0IG5ldyBtaW5vciB2ZXJzaW9ucyBhcmUgbm90IHJlbGVhc2VkIGFjY2lkZW50YWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgdmVyc2lvbiBpcyBzdXBwb3J0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYSBmaWxlIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgb3V0cHV0IHZlcnNpb24gbnVtYmVyIChhIHRleHQgZmlsZSkuXG4gICAqXG4gICAqIFJlbGF0aXZlIHRvIGN3ZC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCIudmVyc2lvbi50eHRcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hpY2ggd2lsbCBpbmNsdWRlIHRoZSByZWxlYXNlIHRhZyAoYSB0ZXh0IGZpbGUpLlxuICAgKlxuICAgKiBSZWxhdGl2ZSB0byBjd2QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiLnJlbGVhc2V0YWcudHh0XCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggYXBwbGllZCB0byByZWxlYXNlIHRhZ3MuIEJ1bXBzIHdpbGwgYmUgbWFkZSBiYXNlZCBvbiB0aGUgbGF0ZXN0XG4gICAqIHZlcnNpb24gZm91bmQgd2l0aCB0aGlzIHByZWZpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiB2YWx1ZXMgdGhhdCB3b3VsZCBhcHBlbmQgdG8gdmVyc2lvbnJjIGZpbGUgb3Igb3ZlcndyaXRlIHZhbHVlc1xuICAgKiBjb21pbmcgdG8gdGhhdCBmcm9tIGRlZmF1bHQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHRvIGxpc3QgYWxsIHJlbGVhc2UgY29tbWl0cyBzaW5jZSB0aGUgbGF0ZXN0IHRhZy5cbiAgICpcbiAgICogQSBuZXcgcmVsZWFzZSB3aWxsIGJlIGluaXRpYXRlZCwgaWYgdGhlIG51bWJlciBvZiByZXR1cm5lZCBjb21taXRzIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICAgKlxuICAgKiBgJExBVEVTVF9UQUdgIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoc2V0IHRvIHRoZSBhY3R1YWwgbGF0ZXN0IHRhZyBmb3IgdGhlIGdpdmVuIHByZWZpeCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZ2l0IGxvZyAtLW9uZWxpbmUgJExBVEVTVF9UQUcuLkhFQURcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uQDEyXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICpcbiAgICogVGhlIGNvbW1hbmQgc2hvdWxkIHByaW50IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIGBzdGRvdXRgOlxuICAgKlxuICAgKiAtIE5vdGhpbmc6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiBjb21taXQgaGlzdG9yeS5cbiAgICogLSBgeC55LnpgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGB4LnkuemAuXG4gICAqIC0gYG1ham9yfG1pbm9yfHBhdGNoYDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlclxuICAgKiAgIHdpdGggdGhlIGluZGljYXRlZCBjb21wb25lbnQgYnVtcGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gOyB0aGUgaW52b2tlZFxuICAgKiBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgZWZmZWN0cyBvZiBgbWluTWFqb3JWZXJzaW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbmV4dCB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgY29tbWl0IGhpc3RvcnkgYW5kIHByb2plY3Qgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBuZXh0VmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCByZXNvbHZlZCBieSB7QGxpbmsgcmVzb2x2ZUxhdGVzdFRhZ30gYW5kIGNvbnN1bWVkIGJ5IHRoZSBsYXRlciBidW1wIHBoYXNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW1wQ29udGV4dCB7XG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgbGF0ZXN0VGFnOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRmlyc3RSZWxlYXNlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBoYXNlIDE6IHJlc29sdmUgdGhlIGxhdGVzdCB0YWcvdmVyc2lvbiBhbmQgc2VlZCB0aGUgdmVyc2lvbiBmaWxlIChzbyB0aGVcbiAqIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCB0aGUgY3VycmVudCB2ZXJzaW9uIGJhY2sgZnJvbSBpdCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlTGF0ZXN0VGFnKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgICBtaW5vclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWluTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBDb250ZXh0PiB7XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAmJiBvcHRpb25zLm1pbk1ham9yVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICYmICFtYWpvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlub3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gbXVzdCBiZSB1c2VkIHRvZ2V0aGVyLmApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG5cbiAgY29uc3QgY29udGV4dCA9IGRldGVybWluZUxhdGVzdFRhZyh7XG4gICAgY3dkLFxuICAgIG1ham9yLFxuICAgIG1pbm9yLFxuICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICBwcmVmaXg6IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFdyaXRlIHRoZSBjdXJyZW50IHZlcnNpb24gaW50byB0aGUgdmVyc2lvbiBmaWxlIHNvIHRoYXQgQ0FUViBrbm93cyBpdCBhbmRcbiAgLy8gdGhlIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCBpdCBiYWNrLlxuICBjb25zdCB7IGNvbnRlbnRzLCBuZXdsaW5lIH0gPSBhd2FpdCB0cnlSZWFkVmVyc2lvbkZpbGUodmVyc2lvbkZpbGUpO1xuICBjb250ZW50cy52ZXJzaW9uID0gY29udGV4dC5sYXRlc3RWZXJzaW9uO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYFVwZGF0ZSAke3ZlcnNpb25GaWxlfSB0byByZXNvbHZlZCB2ZXJzaW9uOiAke2NvbnRleHQubGF0ZXN0VmVyc2lvbn1gLFxuICApO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgdmVyc2lvbkZpbGUsXG4gICAgSlNPTi5zdHJpbmdpZnkoY29udGVudHMsIHVuZGVmaW5lZCwgMikgKyAobmV3bGluZSA/IFwiXFxuXCIgOiBcIlwiKSxcbiAgKTtcblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBQaGFzZSAyOiBkZWNpZGUgdGhlIGJ1bXAgZnJvbSB0aGUgY29tbWl0IGhpc3RvcnkuIFJldHVybnMgYG5vbmVgIHdoZW4gdGhlcmVcbiAqIGlzIG5vdGhpbmcgcmVsZWFzYWJsZSAob3Igb24gYSBmaXJzdCByZWxlYXNlLCB3aGljaCBpcyBoYW5kbGVkIGJ5IENBVFYpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VnZ2VzdFZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgbGF0ZXN0VGFnPzogc3RyaW5nO1xuICAgIHRhZ1ByZWZpeD86IHN0cmluZztcbiAgICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAgIGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuICAgIHZlcnNpb25yY09wdGlvbnM/OiBDb25maWc7XG4gICAgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBUeXBlPiB7XG4gIGNvbnN0IGlzRmlyc3RSZWxlYXNlID0gIW9wdGlvbnMubGF0ZXN0VGFnO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgcmVhZEN1cnJlbnRWZXJzaW9uKFxuICAgIGpvaW4oY3dkLCBvcHRpb25zLnZlcnNpb25GaWxlKSxcbiAgKTtcblxuICBjb25zdCBudW1Db21taXRzID0gKG9wdGlvbnMucmVsZWFzYWJsZUNvbW1pdHMgPz8gXCJcIilcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKChsKSA9PiBsLnRyaW0oKSkubGVuZ3RoO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYE51bWJlciBvZiBjb21taXRzIHNpbmNlICR7b3B0aW9ucy5sYXRlc3RUYWcgfHwgXCIoZmlyc3QgcmVsZWFzZSlcIn06ICR7bnVtQ29tbWl0c31gLFxuICApO1xuXG4gIGlmIChpc0ZpcnN0UmVsZWFzZSB8fCBudW1Db21taXRzID09PSAwKSB7XG4gICAgaWYgKCFpc0ZpcnN0UmVsZWFzZSkge1xuICAgICAgbG9nZ2luZy5pbmZvKFwiTm8gbmV3IGludGVyZXN0aW5nIGNvbW1pdHMuXCIpO1xuICAgIH1cbiAgICByZXR1cm4geyBidW1wOiBcIm5vbmVcIiB9O1xuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlOiBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSksXG4gICAgY2hhbmdlbG9nRmlsZTogam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKSxcbiAgICBwcmVyZWxlYXNlOiBvcHRpb25zLnByZXJlbGVhc2UsXG4gICAgY29uZmlnT3B0aW9uczogb3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zLFxuICAgIHRhZ1ByZWZpeDogb3B0aW9ucy50YWdQcmVmaXggPz8gXCJcIixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbGF0aXZlQnVtcFR5cGUobGF0ZXN0VmVyc2lvbiwgYXdhaXQgY2F0di5kcnlSdW4oKSk7XG59XG5cbi8qKlxuICogUGhhc2UgMzogYXBwbHkgdGhlIGNob3NlbiBidW1wIC0gaW52b2tlIENBVFYgKG9yIHJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyksXG4gKiBlbmZvcmNlIHZlcnNpb24gY29uc3RyYWludHMsIGFuZCByZWNvcmQgdGhlIHJlc3VsdGluZyB2ZXJzaW9uIGFuZCB0YWcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgYnVtcEZpbGU6IHN0cmluZztcbiAgICByZWxlYXNlVGFnRmlsZTogc3RyaW5nO1xuICAgIGJ1bXBUeXBlOiBCdW1wVHlwZTtcbiAgICBsYXRlc3RUYWc/OiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gICAgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gICAgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcbiAgICBtYWpvclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWlub3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpc0ZpcnN0UmVsZWFzZSA9ICFvcHRpb25zLmxhdGVzdFRhZztcbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG4gIGNvbnN0IGJ1bXBGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuYnVtcEZpbGUpO1xuICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKTtcbiAgY29uc3QgcmVsZWFzZVRhZ0ZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy5yZWxlYXNlVGFnRmlsZSk7XG4gIGNvbnN0IHRhZ1ByZWZpeCA9IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCI7XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGUpO1xuXG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUoYnVtcEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgZnMubWtkaXIoZGlybmFtZShjaGFuZ2Vsb2dGaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUocmVsZWFzZVRhZ0ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBsZXQgYnVtcFR5cGUgPSBvcHRpb25zLmJ1bXBUeXBlO1xuXG4gIC8vIFJlc3BlY3QgbWluTWFqb3JWZXJzaW9uIHRvIGNvcnJlY3QgdGhlIHJlc3VsdCBvZiB0aGUgbmV4dFZlcnNpb25Db21tYW5kLlxuICBpZiAob3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICBjb25zdCBidW1wZWRWZXJzaW9uID0gcGVyZm9ybUJ1bXAobGF0ZXN0VmVyc2lvbiwgYnVtcFR5cGUpO1xuICAgIGNvbnN0IFttYWpvclZlcnNpb25dID0gYnVtcGVkVmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgaWYgKHBhcnNlSW50KG1ham9yVmVyc2lvbiwgMTApIDwgb3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICAgIGJ1bXBUeXBlID0ge1xuICAgICAgICBidW1wOiBcImFic29sdXRlXCIsXG4gICAgICAgIGFic29sdXRlOiBgJHtvcHRpb25zLm1pbk1ham9yVmVyc2lvbn0uMC4wYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlLFxuICAgIGNoYW5nZWxvZ0ZpbGUsXG4gICAgcHJlcmVsZWFzZTogb3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgIGNvbmZpZ09wdGlvbnM6IG9wdGlvbnMudmVyc2lvbnJjT3B0aW9ucyxcbiAgICB0YWdQcmVmaXgsXG4gIH0pO1xuXG4gIGNvbnN0IG5ld1JlbGVhc2UgPSBidW1wVHlwZS5idW1wICE9PSBcIm5vbmVcIjtcbiAgaWYgKCFuZXdSZWxlYXNlICYmICFpc0ZpcnN0UmVsZWFzZSkge1xuICAgIC8vIFJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyBvZiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi5cbiAgICBhd2FpdCBjYXR2LnJlZ2VuZXJhdGVQcmV2aW91c0NoYW5nZUxvZyhsYXRlc3RWZXJzaW9uLCBvcHRpb25zLmxhdGVzdFRhZyEpO1xuICB9IGVsc2Uge1xuICAgIC8vIEJ1bXAgKyByZWxlYXNlLCBvciByZWxlYXNlIHRoZSBmaXJzdCB2ZXJzaW9uIChhbHJlYWR5IGluIHRoZSBmaWxlKS5cbiAgICBhd2FpdCBjYXR2Lmludm9rZSh7XG4gICAgICByZWxlYXNlQXM6IG5ld1JlbGVhc2UgPyByZW5kZXJCdW1wVHlwZShidW1wVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICBza2lwQnVtcDogIW5ld1JlbGVhc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdWZXJzaW9uID0gKGF3YWl0IHRyeVJlYWRWZXJzaW9uRmlsZSh2ZXJzaW9uRmlsZSkpLnZlcnNpb247XG4gIGlmICghbmV3VmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgYnVtcCBmYWlsZWQ6ICR7dmVyc2lvbkZpbGV9IGRvZXMgbm90IGhhdmUgYSB2ZXJzaW9uIHNldGApO1xuICB9XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAhPT0gdW5kZWZpbmVkICYmICFuZXdWZXJzaW9uLnN0YXJ0c1dpdGgoYCR7bWFqb3J9LmApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGJ1bXAgZmFpbGVkOiB0aGlzIGJyYW5jaCBpcyBjb25maWd1cmVkIHRvIG9ubHkgcHVibGlzaCB2JHttYWpvcn0gcmVsZWFzZXMgLSBidW1wIHJlc3VsdGVkIGluICR7bmV3VmVyc2lvbn1gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICE9PSB1bmRlZmluZWQgJiYgIW5ld1ZlcnNpb24uc3RhcnRzV2l0aChgJHttYWpvcn0uJHttaW5vcn1gKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBidW1wIGZhaWxlZDogdGhpcyBicmFuY2ggaXMgY29uZmlndXJlZCB0byBvbmx5IHB1Ymxpc2ggdiR7bWFqb3J9LiR7bWlub3J9IHJlbGVhc2VzIC0gYnVtcCByZXN1bHRlZCBpbiAke25ld1ZlcnNpb259YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV3VGFnID0gYCR7dGFnUHJlZml4fXYke25ld1ZlcnNpb259YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGJ1bXBGaWxlLCBuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHJlbGVhc2VUYWdGaWxlLCBuZXdUYWcpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgdmVyc2lvbiB9ID0gYXdhaXQgdHJ5UmVhZFZlcnNpb25GaWxlKHZlcnNpb25GaWxlKTtcbiAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3ZlcnNpb25GaWxlfSBkb2VzIG5vdCBoYXZlIGEgdmVyc2lvbiBzZXRgKTtcbiAgfVxuICByZXR1cm4gdmVyc2lvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJ5UmVhZFZlcnNpb25GaWxlKFxuICB2ZXJzaW9uRmlsZTogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGNvbnRlbnRzOiBhbnk7IHZlcnNpb24/OiBzdHJpbmc7IG5ld2xpbmU6IGJvb2xlYW4gfT4ge1xuICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgcmV0dXJuIHsgY29udGVudHM6IHt9LCBuZXdsaW5lOiB0cnVlIH07XG4gIH1cbiAgY29uc3QgcmF3ID0gYXdhaXQgZnMucmVhZEZpbGUodmVyc2lvbkZpbGUsIFwidXRmLThcIik7XG4gIGNvbnN0IGNvbnRlbnRzID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gIHJldHVybiB7XG4gICAgY29udGVudHMsXG4gICAgdmVyc2lvbjogY29udGVudHMudmVyc2lvbixcbiAgICBuZXdsaW5lOiByYXcuZW5kc1dpdGgoXCJcXG5cIiksXG4gIH07XG59XG5cbmludGVyZmFjZSBMYXRlc3RUYWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBnaXQgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yPzogbnVtYmVyO1xuICAvKipcbiAgICogTWlub3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yPzogbnVtYmVyO1xuICAvKipcbiAgICogQSBwcmUtcmVsZWFzZSBzdWZmaXguXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBwcmVmaXggYXBwbGllZCB0byBhbGwgdGFncy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGxhdGVzdCByZWxlYXNlIHRhZy5cbiAqIEBwYXJhbSBtYWpvciAob3B0aW9uYWwpIEEgbWFqb3IgdmVyc2lvbiBsaW5lIHRvIHNlbGVjdCBmcm9tXG4gKiBAcGFyYW0gcHJlcmVsZWFzZSAob3B0aW9uYWwpIEEgcHJlLXJlbGVhc2Ugc3VmZml4LlxuICogQHJldHVybnMgdGhlIGxhdGVzdCB0YWcsIGFuZCB3aGV0aGVyIGl0IGlzIHRoZSBmaXJzdCByZWxlYXNlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBkZXRlcm1pbmVMYXRlc3RUYWcob3B0aW9uczogTGF0ZXN0VGFnT3B0aW9ucyk6IHtcbiAgbGF0ZXN0VmVyc2lvbjogc3RyaW5nO1xuICBsYXRlc3RUYWc6IHN0cmluZztcbiAgaXNGaXJzdFJlbGVhc2U6IGJvb2xlYW47XG59IHtcbiAgY29uc3QgeyBjd2QsIG1ham9yLCBtaW5vciwgcHJlcmVsZWFzZSwgcHJlZml4IH0gPSBvcHRpb25zO1xuXG4gIC8vIGZpbHRlciBvbmx5IHRhZ3MgZm9yIHRoaXMgcHJlZml4IGFuZCBtYWpvciB2ZXJzaW9uIGlmIHNwZWNpZmllZCAoc3RhcnQgd2l0aCBcInZOTi5cIikuXG4gIGxldCBwcmVmaXhGaWx0ZXI6IHN0cmluZztcbiAgaWYgKG1ham9yICE9PSB1bmRlZmluZWQgJiYgbWlub3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uJHttaW5vcn0uKmA7XG4gIH0gZWxzZSBpZiAobWFqb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uKmA7XG4gIH0gZWxzZSB7XG4gICAgcHJlZml4RmlsdGVyID0gYCR7cHJlZml4fXYqYDtcbiAgfVxuXG4gIGNvbnN0IHN0ZG91dCA9IGdpdC5jYXB0dXJlKFxuICAgIFtcbiAgICAgIFwiLWNcIixcbiAgICAgIFwidmVyc2lvbnNvcnQuc3VmZml4PS1cIiwgLy8gbWFrZXMgc3VyZSBwcmUtcmVsZWFzZSB2ZXJzaW9ucyBhcmUgbGlzdGVkIGFmdGVyIHRoZSBwcmltYXJ5IHZlcnNpb25cbiAgICAgIFwidGFnXCIsXG4gICAgICBcIi0tc29ydD0tdmVyc2lvbjpyZWZuYW1lXCIsIC8vIHNvcnQgYXMgdmVyc2lvbnMgYW5kIG5vdCBsZXhpY29ncmFwaGljYWxseVxuICAgICAgXCItLWxpc3RcIixcbiAgICAgIHByZWZpeEZpbHRlcixcbiAgICBdLFxuICAgIHsgY3dkIH0sXG4gICk7XG5cbiAgbGV0IHRhZ3MgPSBzdGRvdXQ/LnNwbGl0KFwiXFxuXCIpO1xuXG4gIC8vIGlmIHByZXJlbGVhc2UgaXMgc2V0IGFuZCB0aGVyZSBhcmUgZXhpc3RpbmcgcHJlcmVsZWFzZSB0YWdzLCBmaWx0ZXIgdmVyc2lvbnMgdGhhdCBlbmQgd2l0aCBcIi1QUkUuZGRkXCIuXG4gIGNvbnN0IHByZXJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgbmV3IFJlZ0V4cChgLSR7cHJlcmVsZWFzZX1cXFxcLlswLTldKyRgKS50ZXN0KHgpLFxuICApO1xuICBpZiAocHJlcmVsZWFzZSAmJiBwcmVyZWxlYXNlVGFncy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHByZXJlbGVhc2VUYWcgPSBwcmVyZWxlYXNlVGFnc1swXTtcblxuICAgIC8qKlxuICAgICAqIENvdmVyIHRoZSBmb2xsb3dpbmcgY2FzZSBzcGVjaWZpY2FsbHlcbiAgICAgKiAxIC0gdjEuMC4wXG4gICAgICogMiAtIHYxLjAuMS1iZXRhLjBcbiAgICAgKiAzIC0gdjEuMC4xLWJldGEuMVxuICAgICAqIDQgLSB2MS4wLjFcbiAgICAgKiA1IC0gbm93IHB1Ymxpc2ggYSBuZXcgcmVsZWFzZSBvbiB0aGUgcHJlcmVsZWFzZSBicmFuY2hcbiAgICAgKiAgICBieSBzZXR0aW5nIHRoZSBsYXRlc3RUYWcgYXMgdjEuMC4xIGluc3RlYWQgb2YgdjEuMC4xLWJldGEuMVxuICAgICAqL1xuICAgIGNvbnN0IHJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgICBuZXcgUmVnRXhwKGBeJHtwcmVmaXh9dihbMC05XSspXFxcXC4oWzAtOV0rKVxcXFwuKFswLTldKykkYCkudGVzdCh4KSxcbiAgICApO1xuXG4gICAgbGV0IHJlbGVhc2VUYWc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAocmVsZWFzZVRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgcmVsZWFzZVRhZyA9IHJlbGVhc2VUYWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJlbGVhc2VUYWcgPSByZWxlYXNlVGFnPy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgICBwcmVyZWxlYXNlVGFnID0gcHJlcmVsZWFzZVRhZy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VUYWcgJiYgY29tcGFyZShyZWxlYXNlVGFnLCBwcmVyZWxlYXNlVGFnKSA9PT0gMSkge1xuICAgICAgdGFncyA9IHJlbGVhc2VUYWdzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzID0gcHJlcmVsZWFzZVRhZ3M7XG4gICAgfVxuICB9XG5cbiAgdGFncyA9IHRhZ3MuZmlsdGVyKCh4KSA9PiB4KTtcblxuICAvLyBpZiBhIHByZS1yZWxlYXNlIHRhZyBpcyB1c2VkLCB0aGVuIGFkZCBpdCB0byB0aGUgaW5pdGlhbCB2ZXJzaW9uXG4gIGxldCBpc0ZpcnN0UmVsZWFzZSA9IGZhbHNlO1xuICBsZXQgbGF0ZXN0VGFnO1xuXG4gIGlmICh0YWdzLmxlbmd0aCA+IDApIHtcbiAgICBsYXRlc3RUYWcgPSB0YWdzWzBdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGluaXRpYWwgPSBgJHtwcmVmaXh9diR7bWFqb3IgPz8gMH0uJHttaW5vciA/PyAwfS4wYDtcbiAgICBsYXRlc3RUYWcgPSBwcmVyZWxlYXNlID8gYCR7aW5pdGlhbH0tJHtwcmVyZWxlYXNlfS4wYCA6IGluaXRpYWw7XG4gICAgaXNGaXJzdFJlbGVhc2UgPSB0cnVlO1xuICB9XG5cbiAgLy8gcmVtb3ZlIHRhZyBwcmVmaXggKGlmIGV4aXN0cylcbiAgbGV0IGxhdGVzdFZlcnNpb24gPSBsYXRlc3RUYWc7XG4gIGlmIChwcmVmaXggJiYgbGF0ZXN0VmVyc2lvbi5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICBsYXRlc3RWZXJzaW9uID0gbGF0ZXN0VmVyc2lvbi5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gIH1cblxuICAvLyByZW1vdmUgXCJ2XCIgcHJlZml4IChpZiBleGlzdHMpXG4gIGlmIChsYXRlc3RWZXJzaW9uLnN0YXJ0c1dpdGgoXCJ2XCIpKSB7XG4gICAgbGF0ZXN0VmVyc2lvbiA9IGxhdGVzdFZlcnNpb24uc3Vic3RyaW5nKDEpO1xuICB9XG5cbiAgcmV0dXJuIHsgbGF0ZXN0VmVyc2lvbiwgbGF0ZXN0VGFnLCBpc0ZpcnN0UmVsZWFzZSB9O1xufVxuIl19
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvYnVtcC12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0pBLDRDQTZDQztBQU1ELGdEQXlDQztBQU1ELDRDQW9GQztBQXhVRCwyQkFBZ0Q7QUFDaEQsK0JBQXFDO0FBRXJDLG1DQUFpQztBQUNqQyxvREFBc0M7QUFFdEMsMkNBQTRFO0FBQzVFLDZEQUEyRDtBQUMzRCx1Q0FBbUM7QUFzSW5DOzs7R0FHRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsR0FBVyxFQUNYLE9BT0M7SUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDbkMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELENBQzVELENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkQsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsR0FBRztRQUNILEtBQUs7UUFDTCxLQUFLO1FBQ0wsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7S0FDaEMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLHFDQUFxQztJQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFB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SSxDQUFDLElBQUksQ0FBQztRQUMxRCxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ2hFLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDOUIsSUFBSSxNQUFNLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQy9DLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xDLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMsIGV4aXN0c1N5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiY29udmVudGlvbmFsLWNoYW5nZWxvZy1jb25maWctc3BlY1wiO1xuaW1wb3J0IHsgY29tcGFyZSB9IGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSBcIi4uL2xvZ2dpbmdcIjtcbmltcG9ydCB0eXBlIHsgQnVtcFR5cGUgfSBmcm9tIFwiLi9idW1wLXR5cGVcIjtcbmltcG9ydCB7IHBlcmZvcm1CdW1wLCByZWxhdGl2ZUJ1bXBUeXBlLCByZW5kZXJCdW1wVHlwZSB9IGZyb20gXCIuL2J1bXAtdHlwZVwiO1xuaW1wb3J0IHsgQ29tbWl0QW5kVGFnVmVyc2lvbiB9IGZyb20gXCIuL2NvbW1pdC10YWctdmVyc2lvblwiO1xuaW1wb3J0IHsgZ2l0IH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGEgLmpzb24gZmlsZSB0byBzZXQgYHZlcnNpb25gLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbkZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBmaWxlIHRvIGdlbmVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSBhIHByZS1yZWxlYXNlIHN1ZmZpeC5cbiAgICogQGRlZmF1bHQgLSBub3JtYWwgdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlcmVsZWFzZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWFqb3IgdmVyc2lvbiBsaW5lLiBUaGlzIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBsYXRlc3QgdmVyc2lvblxuICAgKiBhbmQgYWxzbyBlbmZvcmNlIHRoYXQgbmV3IG1ham9yIHZlcnNpb25zIGFyZSBub3QgcmVsZWFzZWQgYWNjaWRlbnRhbGx5LlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSB2ZXJzaW9uIGlzIHN1cHBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBtaW5pbWFsIG1ham9yIHZlcnNpb24uIFRoaXMgaXMgdXNlZCBpZiB5b3Ugd2FudCB0byBzdGFydCB3aXRoXG4gICAqIGEgc3BlY2lmaWMgbWFqb3IgdmVyc2lvbiwgYW5kIGluY3JlbWVudCBmcm9tIHRoZXJlIG9uLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gc2V0IHRvIDEsIGFzIGJyZWFraW5nIGNoYW5nZXMgYmVmb3JlIHRoZSAxLnggbWFqb3JcbiAgICogcmVsZWFzZSBhcmUgbm90IGluY3JlbWVudGluZyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIuXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvZ2V0aGVyIHdpdGggYG1ham9yVmVyc2lvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbWluaW11bSB2ZXJzaW9uIGlzIGJlaW5nIGVuZm9yY2VkXG4gICAqL1xuICByZWFkb25seSBtaW5NYWpvclZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIG1pbm9yIHZlcnNpb24gbGluZS4gVGhpcyBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgICogYW5kIGFsc28gZW5mb3JjZSB0aGF0IG5ldyBtaW5vciB2ZXJzaW9ucyBhcmUgbm90IHJlbGVhc2VkIGFjY2lkZW50YWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbnkgdmVyc2lvbiBpcyBzdXBwb3J0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yVmVyc2lvbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYSBmaWxlIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgb3V0cHV0IHZlcnNpb24gbnVtYmVyIChhIHRleHQgZmlsZSkuXG4gICAqXG4gICAqIFJlbGF0aXZlIHRvIGN3ZC5cbiAgICpcbiAgICogQGV4YW1wbGUgXCIudmVyc2lvbi50eHRcIlxuICAgKi9cbiAgcmVhZG9ubHkgYnVtcEZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGUgd2hpY2ggd2lsbCBpbmNsdWRlIHRoZSByZWxlYXNlIHRhZyAoYSB0ZXh0IGZpbGUpLlxuICAgKlxuICAgKiBSZWxhdGl2ZSB0byBjd2QuXG4gICAqXG4gICAqIEBleGFtcGxlIFwiLnJlbGVhc2V0YWcudHh0XCJcbiAgICovXG4gIHJlYWRvbmx5IHJlbGVhc2VUYWdGaWxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggYXBwbGllZCB0byByZWxlYXNlIHRhZ3MuIEJ1bXBzIHdpbGwgYmUgbWFkZSBiYXNlZCBvbiB0aGUgbGF0ZXN0XG4gICAqIHZlcnNpb24gZm91bmQgd2l0aCB0aGlzIHByZWZpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiB2YWx1ZXMgdGhhdCB3b3VsZCBhcHBlbmQgdG8gdmVyc2lvbnJjIGZpbGUgb3Igb3ZlcndyaXRlIHZhbHVlc1xuICAgKiBjb21pbmcgdG8gdGhhdCBmcm9tIGRlZmF1bHQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcblxuICAvKipcbiAgICogQSBzaGVsbCBjb21tYW5kIHRvIGxpc3QgYWxsIHJlbGVhc2UgY29tbWl0cyBzaW5jZSB0aGUgbGF0ZXN0IHRhZy5cbiAgICpcbiAgICogQSBuZXcgcmVsZWFzZSB3aWxsIGJlIGluaXRpYXRlZCwgaWYgdGhlIG51bWJlciBvZiByZXR1cm5lZCBjb21taXRzIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICAgKlxuICAgKiBgJExBVEVTVF9UQUdgIGlzIGF2YWlsYWJsZSBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAoc2V0IHRvIHRoZSBhY3R1YWwgbGF0ZXN0IHRhZyBmb3IgdGhlIGdpdmVuIHByZWZpeCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiZ2l0IGxvZyAtLW9uZWxpbmUgJExBVEVTVF9UQUcuLkhFQURcIlxuICAgKi9cbiAgcmVhZG9ubHkgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgY29tcGF0aWJsZSBwYWNrYWdlIHVzZWQgdG8gYnVtcCB0aGUgcGFja2FnZSB2ZXJzaW9uLCBhcyBhIGRlcGVuZGVuY3kgc3RyaW5nLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSBhbnkgY29tcGF0aWJsZSBwYWNrYWdlIHZlcnNpb24sIGluY2x1ZGluZyB0aGUgZGVwcmVjYXRlZCBgc3RhbmRhcmQtdmVyc2lvbkA5YC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uQDEzXCJcbiAgICovXG4gIHJlYWRvbmx5IGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHNoZWxsIGNvbW1hbmQgdG8gY29udHJvbCB0aGUgbmV4dCB2ZXJzaW9uIHRvIHJlbGVhc2UuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIHRoaXMgc2hlbGwgY29tbWFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgdGhlIGJ1bXAgaXMgZXhlY3V0ZWQsIGFuZFxuICAgKiBpdCBkZXRlcm1pbmVzIHdoYXQgdmVyc2lvbiB0byByZWxlYXNlLiBJdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBmb2xsb3dpbmdcbiAgICogZW52aXJvbm1lbnQ6XG4gICAqXG4gICAqIC0gV29ya2luZyBkaXJlY3Rvcnk6IHRoZSBwcm9qZWN0IGRpcmVjdG9yeS5cbiAgICogLSBgJFZFUlNJT05gOiB0aGUgY3VycmVudCB2ZXJzaW9uLiBMb29rcyBsaWtlIGAxLjIuM2AuXG4gICAqIC0gYCRMQVRFU1RfVEFHYDogdGhlIG1vc3QgcmVjZW50IHRhZy4gTG9va3MgbGlrZSBgcHJlZml4LXYxLjIuM2AsIG9yIG1heSBiZSB1bnNldC5cbiAgICpcbiAgICogVGhlIGNvbW1hbmQgc2hvdWxkIHByaW50IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIGBzdGRvdXRgOlxuICAgKlxuICAgKiAtIE5vdGhpbmc6IHRoZSBuZXh0IHZlcnNpb24gbnVtYmVyIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiBjb21taXQgaGlzdG9yeS5cbiAgICogLSBgeC55LnpgOiB0aGUgbmV4dCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGB4LnkuemAuXG4gICAqIC0gYG1ham9yfG1pbm9yfHBhdGNoYDogdGhlIG5leHQgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlclxuICAgKiAgIHdpdGggdGhlIGluZGljYXRlZCBjb21wb25lbnQgYnVtcGVkLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBtaW5NYWpvclZlcnNpb25gOyB0aGUgaW52b2tlZFxuICAgKiBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgZWZmZWN0cyBvZiBgbWluTWFqb3JWZXJzaW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbmV4dCB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgY29tbWl0IGhpc3RvcnkgYW5kIHByb2plY3Qgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBuZXh0VmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udGV4dCByZXNvbHZlZCBieSB7QGxpbmsgcmVzb2x2ZUxhdGVzdFRhZ30gYW5kIGNvbnN1bWVkIGJ5IHRoZSBsYXRlciBidW1wIHBoYXNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW1wQ29udGV4dCB7XG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgbGF0ZXN0VGFnOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRmlyc3RSZWxlYXNlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBoYXNlIDE6IHJlc29sdmUgdGhlIGxhdGVzdCB0YWcvdmVyc2lvbiBhbmQgc2VlZCB0aGUgdmVyc2lvbiBmaWxlIChzbyB0aGVcbiAqIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCB0aGUgY3VycmVudCB2ZXJzaW9uIGJhY2sgZnJvbSBpdCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlTGF0ZXN0VGFnKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIG1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgICBtaW5vclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWluTWFqb3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBDb250ZXh0PiB7XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAmJiBvcHRpb25zLm1pbk1ham9yVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci5gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICYmICFtYWpvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbWlub3JWZXJzaW9uIGFuZCBtYWpvclZlcnNpb24gbXVzdCBiZSB1c2VkIHRvZ2V0aGVyLmApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG5cbiAgY29uc3QgY29udGV4dCA9IGRldGVybWluZUxhdGVzdFRhZyh7XG4gICAgY3dkLFxuICAgIG1ham9yLFxuICAgIG1pbm9yLFxuICAgIHByZXJlbGVhc2U6IG9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICBwcmVmaXg6IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFdyaXRlIHRoZSBjdXJyZW50IHZlcnNpb24gaW50byB0aGUgdmVyc2lvbiBmaWxlIHNvIHRoYXQgQ0FUViBrbm93cyBpdCBhbmRcbiAgLy8gdGhlIGxhdGVyIHBoYXNlcyBjYW4gcmVhZCBpdCBiYWNrLlxuICBjb25zdCB7IGNvbnRlbnRzLCBuZXdsaW5lIH0gPSBhd2FpdCB0cnlSZWFkVmVyc2lvbkZpbGUodmVyc2lvbkZpbGUpO1xuICBjb250ZW50cy52ZXJzaW9uID0gY29udGV4dC5sYXRlc3RWZXJzaW9uO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYFVwZGF0ZSAke3ZlcnNpb25GaWxlfSB0byByZXNvbHZlZCB2ZXJzaW9uOiAke2NvbnRleHQubGF0ZXN0VmVyc2lvbn1gLFxuICApO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgdmVyc2lvbkZpbGUsXG4gICAgSlNPTi5zdHJpbmdpZnkoY29udGVudHMsIHVuZGVmaW5lZCwgMikgKyAobmV3bGluZSA/IFwiXFxuXCIgOiBcIlwiKSxcbiAgKTtcblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBQaGFzZSAyOiBkZWNpZGUgdGhlIGJ1bXAgZnJvbSB0aGUgY29tbWl0IGhpc3RvcnkuIFJldHVybnMgYG5vbmVgIHdoZW4gdGhlcmVcbiAqIGlzIG5vdGhpbmcgcmVsZWFzYWJsZSAob3Igb24gYSBmaXJzdCByZWxlYXNlLCB3aGljaCBpcyBoYW5kbGVkIGJ5IENBVFYpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3VnZ2VzdFZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgbGF0ZXN0VGFnPzogc3RyaW5nO1xuICAgIHRhZ1ByZWZpeD86IHN0cmluZztcbiAgICBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAgIGJ1bXBQYWNrYWdlPzogc3RyaW5nO1xuICAgIHZlcnNpb25yY09wdGlvbnM/OiBDb25maWc7XG4gICAgcmVsZWFzYWJsZUNvbW1pdHM/OiBzdHJpbmc7XG4gIH0sXG4pOiBQcm9taXNlPEJ1bXBUeXBlPiB7XG4gIGNvbnN0IGlzRmlyc3RSZWxlYXNlID0gIW9wdGlvbnMubGF0ZXN0VGFnO1xuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgcmVhZEN1cnJlbnRWZXJzaW9uKFxuICAgIGpvaW4oY3dkLCBvcHRpb25zLnZlcnNpb25GaWxlKSxcbiAgKTtcblxuICBjb25zdCBudW1Db21taXRzID0gKG9wdGlvbnMucmVsZWFzYWJsZUNvbW1pdHMgPz8gXCJcIilcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKChsKSA9PiBsLnRyaW0oKSkubGVuZ3RoO1xuICBsb2dnaW5nLmluZm8oXG4gICAgYE51bWJlciBvZiBjb21taXRzIHNpbmNlICR7b3B0aW9ucy5sYXRlc3RUYWcgfHwgXCIoZmlyc3QgcmVsZWFzZSlcIn06ICR7bnVtQ29tbWl0c31gLFxuICApO1xuXG4gIGlmIChpc0ZpcnN0UmVsZWFzZSB8fCBudW1Db21taXRzID09PSAwKSB7XG4gICAgaWYgKCFpc0ZpcnN0UmVsZWFzZSkge1xuICAgICAgbG9nZ2luZy5pbmZvKFwiTm8gbmV3IGludGVyZXN0aW5nIGNvbW1pdHMuXCIpO1xuICAgIH1cbiAgICByZXR1cm4geyBidW1wOiBcIm5vbmVcIiB9O1xuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlOiBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSksXG4gICAgY2hhbmdlbG9nRmlsZTogam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKSxcbiAgICBwcmVyZWxlYXNlOiBvcHRpb25zLnByZXJlbGVhc2UsXG4gICAgY29uZmlnT3B0aW9uczogb3B0aW9ucy52ZXJzaW9ucmNPcHRpb25zLFxuICAgIHRhZ1ByZWZpeDogb3B0aW9ucy50YWdQcmVmaXggPz8gXCJcIixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbGF0aXZlQnVtcFR5cGUobGF0ZXN0VmVyc2lvbiwgYXdhaXQgY2F0di5kcnlSdW4oKSk7XG59XG5cbi8qKlxuICogUGhhc2UgMzogYXBwbHkgdGhlIGNob3NlbiBidW1wIC0gaW52b2tlIENBVFYgKG9yIHJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyksXG4gKiBlbmZvcmNlIHZlcnNpb24gY29uc3RyYWludHMsIGFuZCByZWNvcmQgdGhlIHJlc3VsdGluZyB2ZXJzaW9uIGFuZCB0YWcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVZlcnNpb25CdW1wKFxuICBjd2Q6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHZlcnNpb25GaWxlOiBzdHJpbmc7XG4gICAgY2hhbmdlbG9nOiBzdHJpbmc7XG4gICAgYnVtcEZpbGU6IHN0cmluZztcbiAgICByZWxlYXNlVGFnRmlsZTogc3RyaW5nO1xuICAgIGJ1bXBUeXBlOiBCdW1wVHlwZTtcbiAgICBsYXRlc3RUYWc/OiBzdHJpbmc7XG4gICAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICAgIHByZXJlbGVhc2U/OiBzdHJpbmc7XG4gICAgYnVtcFBhY2thZ2U/OiBzdHJpbmc7XG4gICAgdmVyc2lvbnJjT3B0aW9ucz86IENvbmZpZztcbiAgICBtYWpvclZlcnNpb24/OiBudW1iZXI7XG4gICAgbWlub3JWZXJzaW9uPzogbnVtYmVyO1xuICAgIG1pbk1ham9yVmVyc2lvbj86IG51bWJlcjtcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpc0ZpcnN0UmVsZWFzZSA9ICFvcHRpb25zLmxhdGVzdFRhZztcbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy52ZXJzaW9uRmlsZSk7XG4gIGNvbnN0IGJ1bXBGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuYnVtcEZpbGUpO1xuICBjb25zdCBjaGFuZ2Vsb2dGaWxlID0gam9pbihjd2QsIG9wdGlvbnMuY2hhbmdlbG9nKTtcbiAgY29uc3QgcmVsZWFzZVRhZ0ZpbGUgPSBqb2luKGN3ZCwgb3B0aW9ucy5yZWxlYXNlVGFnRmlsZSk7XG4gIGNvbnN0IHRhZ1ByZWZpeCA9IG9wdGlvbnMudGFnUHJlZml4ID8/IFwiXCI7XG4gIGNvbnN0IGxhdGVzdFZlcnNpb24gPSBhd2FpdCByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGUpO1xuXG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUoYnVtcEZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgZnMubWtkaXIoZGlybmFtZShjaGFuZ2Vsb2dGaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGZzLm1rZGlyKGRpcm5hbWUocmVsZWFzZVRhZ0ZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBsZXQgYnVtcFR5cGUgPSBvcHRpb25zLmJ1bXBUeXBlO1xuXG4gIC8vIFJlc3BlY3QgbWluTWFqb3JWZXJzaW9uIHRvIGNvcnJlY3QgdGhlIHJlc3VsdCBvZiB0aGUgbmV4dFZlcnNpb25Db21tYW5kLlxuICBpZiAob3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICBjb25zdCBidW1wZWRWZXJzaW9uID0gcGVyZm9ybUJ1bXAobGF0ZXN0VmVyc2lvbiwgYnVtcFR5cGUpO1xuICAgIGNvbnN0IFttYWpvclZlcnNpb25dID0gYnVtcGVkVmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgaWYgKHBhcnNlSW50KG1ham9yVmVyc2lvbiwgMTApIDwgb3B0aW9ucy5taW5NYWpvclZlcnNpb24pIHtcbiAgICAgIGJ1bXBUeXBlID0ge1xuICAgICAgICBidW1wOiBcImFic29sdXRlXCIsXG4gICAgICAgIGFic29sdXRlOiBgJHtvcHRpb25zLm1pbk1ham9yVmVyc2lvbn0uMC4wYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2F0diA9IG5ldyBDb21taXRBbmRUYWdWZXJzaW9uKG9wdGlvbnMuYnVtcFBhY2thZ2UsIGN3ZCwge1xuICAgIHZlcnNpb25GaWxlLFxuICAgIGNoYW5nZWxvZ0ZpbGUsXG4gICAgcHJlcmVsZWFzZTogb3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgIGNvbmZpZ09wdGlvbnM6IG9wdGlvbnMudmVyc2lvbnJjT3B0aW9ucyxcbiAgICB0YWdQcmVmaXgsXG4gIH0pO1xuXG4gIGNvbnN0IG5ld1JlbGVhc2UgPSBidW1wVHlwZS5idW1wICE9PSBcIm5vbmVcIjtcbiAgaWYgKCFuZXdSZWxlYXNlICYmICFpc0ZpcnN0UmVsZWFzZSkge1xuICAgIC8vIFJlZ2VuZXJhdGUgdGhlIGNoYW5nZWxvZyBvZiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi5cbiAgICBhd2FpdCBjYXR2LnJlZ2VuZXJhdGVQcmV2aW91c0NoYW5nZUxvZyhsYXRlc3RWZXJzaW9uLCBvcHRpb25zLmxhdGVzdFRhZyEpO1xuICB9IGVsc2Uge1xuICAgIC8vIEJ1bXAgKyByZWxlYXNlLCBvciByZWxlYXNlIHRoZSBmaXJzdCB2ZXJzaW9uIChhbHJlYWR5IGluIHRoZSBmaWxlKS5cbiAgICBhd2FpdCBjYXR2Lmludm9rZSh7XG4gICAgICByZWxlYXNlQXM6IG5ld1JlbGVhc2UgPyByZW5kZXJCdW1wVHlwZShidW1wVHlwZSkgOiB1bmRlZmluZWQsXG4gICAgICBza2lwQnVtcDogIW5ld1JlbGVhc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdWZXJzaW9uID0gKGF3YWl0IHRyeVJlYWRWZXJzaW9uRmlsZSh2ZXJzaW9uRmlsZSkpLnZlcnNpb247XG4gIGlmICghbmV3VmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgYnVtcCBmYWlsZWQ6ICR7dmVyc2lvbkZpbGV9IGRvZXMgbm90IGhhdmUgYSB2ZXJzaW9uIHNldGApO1xuICB9XG4gIGNvbnN0IG1ham9yID0gb3B0aW9ucy5tYWpvclZlcnNpb247XG4gIGNvbnN0IG1pbm9yID0gb3B0aW9ucy5taW5vclZlcnNpb247XG4gIGlmIChtYWpvciAhPT0gdW5kZWZpbmVkICYmICFuZXdWZXJzaW9uLnN0YXJ0c1dpdGgoYCR7bWFqb3J9LmApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYGJ1bXAgZmFpbGVkOiB0aGlzIGJyYW5jaCBpcyBjb25maWd1cmVkIHRvIG9ubHkgcHVibGlzaCB2JHttYWpvcn0gcmVsZWFzZXMgLSBidW1wIHJlc3VsdGVkIGluICR7bmV3VmVyc2lvbn1gLFxuICAgICk7XG4gIH1cbiAgaWYgKG1pbm9yICE9PSB1bmRlZmluZWQgJiYgIW5ld1ZlcnNpb24uc3RhcnRzV2l0aChgJHttYWpvcn0uJHttaW5vcn1gKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBidW1wIGZhaWxlZDogdGhpcyBicmFuY2ggaXMgY29uZmlndXJlZCB0byBvbmx5IHB1Ymxpc2ggdiR7bWFqb3J9LiR7bWlub3J9IHJlbGVhc2VzIC0gYnVtcCByZXN1bHRlZCBpbiAke25ld1ZlcnNpb259YCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmV3VGFnID0gYCR7dGFnUHJlZml4fXYke25ld1ZlcnNpb259YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGJ1bXBGaWxlLCBuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHJlbGVhc2VUYWdGaWxlLCBuZXdUYWcpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudFZlcnNpb24odmVyc2lvbkZpbGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgdmVyc2lvbiB9ID0gYXdhaXQgdHJ5UmVhZFZlcnNpb25GaWxlKHZlcnNpb25GaWxlKTtcbiAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3ZlcnNpb25GaWxlfSBkb2VzIG5vdCBoYXZlIGEgdmVyc2lvbiBzZXRgKTtcbiAgfVxuICByZXR1cm4gdmVyc2lvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdHJ5UmVhZFZlcnNpb25GaWxlKFxuICB2ZXJzaW9uRmlsZTogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGNvbnRlbnRzOiBhbnk7IHZlcnNpb24/OiBzdHJpbmc7IG5ld2xpbmU6IGJvb2xlYW4gfT4ge1xuICBpZiAoIWV4aXN0c1N5bmModmVyc2lvbkZpbGUpKSB7XG4gICAgcmV0dXJuIHsgY29udGVudHM6IHt9LCBuZXdsaW5lOiB0cnVlIH07XG4gIH1cbiAgY29uc3QgcmF3ID0gYXdhaXQgZnMucmVhZEZpbGUodmVyc2lvbkZpbGUsIFwidXRmLThcIik7XG4gIGNvbnN0IGNvbnRlbnRzID0gSlNPTi5wYXJzZShyYXcpO1xuXG4gIHJldHVybiB7XG4gICAgY29udGVudHMsXG4gICAgdmVyc2lvbjogY29udGVudHMudmVyc2lvbixcbiAgICBuZXdsaW5lOiByYXcuZW5kc1dpdGgoXCJcXG5cIiksXG4gIH07XG59XG5cbmludGVyZmFjZSBMYXRlc3RUYWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBnaXQgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xuICAvKipcbiAgICogTWFqb3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1ham9yPzogbnVtYmVyO1xuICAvKipcbiAgICogTWlub3IgdmVyc2lvbiB0byBzZWxlY3QgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbm9yPzogbnVtYmVyO1xuICAvKipcbiAgICogQSBwcmUtcmVsZWFzZSBzdWZmaXguXG4gICAqL1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBwcmVmaXggYXBwbGllZCB0byBhbGwgdGFncy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGxhdGVzdCByZWxlYXNlIHRhZy5cbiAqIEBwYXJhbSBtYWpvciAob3B0aW9uYWwpIEEgbWFqb3IgdmVyc2lvbiBsaW5lIHRvIHNlbGVjdCBmcm9tXG4gKiBAcGFyYW0gcHJlcmVsZWFzZSAob3B0aW9uYWwpIEEgcHJlLXJlbGVhc2Ugc3VmZml4LlxuICogQHJldHVybnMgdGhlIGxhdGVzdCB0YWcsIGFuZCB3aGV0aGVyIGl0IGlzIHRoZSBmaXJzdCByZWxlYXNlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBkZXRlcm1pbmVMYXRlc3RUYWcob3B0aW9uczogTGF0ZXN0VGFnT3B0aW9ucyk6IHtcbiAgbGF0ZXN0VmVyc2lvbjogc3RyaW5nO1xuICBsYXRlc3RUYWc6IHN0cmluZztcbiAgaXNGaXJzdFJlbGVhc2U6IGJvb2xlYW47XG59IHtcbiAgY29uc3QgeyBjd2QsIG1ham9yLCBtaW5vciwgcHJlcmVsZWFzZSwgcHJlZml4IH0gPSBvcHRpb25zO1xuXG4gIC8vIGZpbHRlciBvbmx5IHRhZ3MgZm9yIHRoaXMgcHJlZml4IGFuZCBtYWpvciB2ZXJzaW9uIGlmIHNwZWNpZmllZCAoc3RhcnQgd2l0aCBcInZOTi5cIikuXG4gIGxldCBwcmVmaXhGaWx0ZXI6IHN0cmluZztcbiAgaWYgKG1ham9yICE9PSB1bmRlZmluZWQgJiYgbWlub3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uJHttaW5vcn0uKmA7XG4gIH0gZWxzZSBpZiAobWFqb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZpeEZpbHRlciA9IGAke3ByZWZpeH12JHttYWpvcn0uKmA7XG4gIH0gZWxzZSB7XG4gICAgcHJlZml4RmlsdGVyID0gYCR7cHJlZml4fXYqYDtcbiAgfVxuXG4gIGNvbnN0IHN0ZG91dCA9IGdpdC5jYXB0dXJlKFxuICAgIFtcbiAgICAgIFwiLWNcIixcbiAgICAgIFwidmVyc2lvbnNvcnQuc3VmZml4PS1cIiwgLy8gbWFrZXMgc3VyZSBwcmUtcmVsZWFzZSB2ZXJzaW9ucyBhcmUgbGlzdGVkIGFmdGVyIHRoZSBwcmltYXJ5IHZlcnNpb25cbiAgICAgIFwidGFnXCIsXG4gICAgICBcIi0tc29ydD0tdmVyc2lvbjpyZWZuYW1lXCIsIC8vIHNvcnQgYXMgdmVyc2lvbnMgYW5kIG5vdCBsZXhpY29ncmFwaGljYWxseVxuICAgICAgXCItLWxpc3RcIixcbiAgICAgIHByZWZpeEZpbHRlcixcbiAgICBdLFxuICAgIHsgY3dkIH0sXG4gICk7XG5cbiAgbGV0IHRhZ3MgPSBzdGRvdXQ/LnNwbGl0KFwiXFxuXCIpO1xuXG4gIC8vIGlmIHByZXJlbGVhc2UgaXMgc2V0IGFuZCB0aGVyZSBhcmUgZXhpc3RpbmcgcHJlcmVsZWFzZSB0YWdzLCBmaWx0ZXIgdmVyc2lvbnMgdGhhdCBlbmQgd2l0aCBcIi1QUkUuZGRkXCIuXG4gIGNvbnN0IHByZXJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgbmV3IFJlZ0V4cChgLSR7cHJlcmVsZWFzZX1cXFxcLlswLTldKyRgKS50ZXN0KHgpLFxuICApO1xuICBpZiAocHJlcmVsZWFzZSAmJiBwcmVyZWxlYXNlVGFncy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHByZXJlbGVhc2VUYWcgPSBwcmVyZWxlYXNlVGFnc1swXTtcblxuICAgIC8qKlxuICAgICAqIENvdmVyIHRoZSBmb2xsb3dpbmcgY2FzZSBzcGVjaWZpY2FsbHlcbiAgICAgKiAxIC0gdjEuMC4wXG4gICAgICogMiAtIHYxLjAuMS1iZXRhLjBcbiAgICAgKiAzIC0gdjEuMC4xLWJldGEuMVxuICAgICAqIDQgLSB2MS4wLjFcbiAgICAgKiA1IC0gbm93IHB1Ymxpc2ggYSBuZXcgcmVsZWFzZSBvbiB0aGUgcHJlcmVsZWFzZSBicmFuY2hcbiAgICAgKiAgICBieSBzZXR0aW5nIHRoZSBsYXRlc3RUYWcgYXMgdjEuMC4xIGluc3RlYWQgb2YgdjEuMC4xLWJldGEuMVxuICAgICAqL1xuICAgIGNvbnN0IHJlbGVhc2VUYWdzID0gdGFncy5maWx0ZXIoKHgpID0+XG4gICAgICBuZXcgUmVnRXhwKGBeJHtwcmVmaXh9dihbMC05XSspXFxcXC4oWzAtOV0rKVxcXFwuKFswLTldKykkYCkudGVzdCh4KSxcbiAgICApO1xuXG4gICAgbGV0IHJlbGVhc2VUYWc6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAocmVsZWFzZVRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgcmVsZWFzZVRhZyA9IHJlbGVhc2VUYWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJlbGVhc2VUYWcgPSByZWxlYXNlVGFnPy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgICBwcmVyZWxlYXNlVGFnID0gcHJlcmVsZWFzZVRhZy5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKHJlbGVhc2VUYWcgJiYgY29tcGFyZShyZWxlYXNlVGFnLCBwcmVyZWxlYXNlVGFnKSA9PT0gMSkge1xuICAgICAgdGFncyA9IHJlbGVhc2VUYWdzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzID0gcHJlcmVsZWFzZVRhZ3M7XG4gICAgfVxuICB9XG5cbiAgdGFncyA9IHRhZ3MuZmlsdGVyKCh4KSA9PiB4KTtcblxuICAvLyBpZiBhIHByZS1yZWxlYXNlIHRhZyBpcyB1c2VkLCB0aGVuIGFkZCBpdCB0byB0aGUgaW5pdGlhbCB2ZXJzaW9uXG4gIGxldCBpc0ZpcnN0UmVsZWFzZSA9IGZhbHNlO1xuICBsZXQgbGF0ZXN0VGFnO1xuXG4gIGlmICh0YWdzLmxlbmd0aCA+IDApIHtcbiAgICBsYXRlc3RUYWcgPSB0YWdzWzBdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGluaXRpYWwgPSBgJHtwcmVmaXh9diR7bWFqb3IgPz8gMH0uJHttaW5vciA/PyAwfS4wYDtcbiAgICBsYXRlc3RUYWcgPSBwcmVyZWxlYXNlID8gYCR7aW5pdGlhbH0tJHtwcmVyZWxlYXNlfS4wYCA6IGluaXRpYWw7XG4gICAgaXNGaXJzdFJlbGVhc2UgPSB0cnVlO1xuICB9XG5cbiAgLy8gcmVtb3ZlIHRhZyBwcmVmaXggKGlmIGV4aXN0cylcbiAgbGV0IGxhdGVzdFZlcnNpb24gPSBsYXRlc3RUYWc7XG4gIGlmIChwcmVmaXggJiYgbGF0ZXN0VmVyc2lvbi5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICBsYXRlc3RWZXJzaW9uID0gbGF0ZXN0VmVyc2lvbi5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCk7XG4gIH1cblxuICAvLyByZW1vdmUgXCJ2XCIgcHJlZml4IChpZiBleGlzdHMpXG4gIGlmIChsYXRlc3RWZXJzaW9uLnN0YXJ0c1dpdGgoXCJ2XCIpKSB7XG4gICAgbGF0ZXN0VmVyc2lvbiA9IGxhdGVzdFZlcnNpb24uc3Vic3RyaW5nKDEpO1xuICB9XG5cbiAgcmV0dXJuIHsgbGF0ZXN0VmVyc2lvbiwgbGF0ZXN0VGFnLCBpc0ZpcnN0UmVsZWFzZSB9O1xufVxuIl19
@@ -41,7 +41,7 @@ const fs_1 = require("fs");
41
41
  const path = __importStar(require("node:path"));
42
42
  const logging = __importStar(require("../logging"));
43
43
  const exec_1 = require("../util/exec");
44
- const DEFAULT_CATV_SPEC = "commit-and-tag-version@^12";
44
+ const DEFAULT_CATV_SPEC = "commit-and-tag-version@^13";
45
45
  class CommitAndTagVersion {
46
46
  cwd;
47
47
  options;
@@ -188,4 +188,4 @@ function stripAnsi(str) {
188
188
  ].join("|");
189
189
  return str.replace(new RegExp(pattern, "g"), "");
190
190
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LXRhZy12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvY29tbWl0LXRhZy12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMkJBQW9DO0FBQ3BDLGdEQUFrQztBQUVsQyxvREFBc0M7QUFDdEMsdUNBQThDO0FBRzlDLE1BQU0saUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7QUFtQnZELE1BQWEsbUJBQW1CO0lBTVg7SUFDQTtJQU5GLElBQUksQ0FBbUI7SUFDdkIsSUFBSSxDQUFXO0lBRWhDLFlBQ0UsV0FBK0IsRUFDZCxHQUFXLEVBQ1gsT0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBRTdDLElBQUksV0FBK0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsOERBQThEO1lBQzlELDREQUE0RDtZQUM1RCxJQUFJLENBQUM7Z0JBQ0gsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLGdEQUFnRDtZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsOERBQThEO1lBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLGlCQUFpQixDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFF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ZC10YWctdmVyc2lvblxuICovXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCJjb252ZW50aW9uYWwtY2hhbmdlbG9nLWNvbmZpZy1zcGVjXCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5pbXBvcnQgeyBnaXQsIG5vZGUsIG5weCB9IGZyb20gXCIuLi91dGlsL2V4ZWNcIjtcbmltcG9ydCB0eXBlIHsgQXN5bmNUb29sLCBUb29sIH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG5jb25zdCBERUZBVUxUX0NBVFZfU1BFQyA9IFwiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21taXRBbmRUYWdPcHRpb25zIHtcbiAgcmVhZG9ubHkgdGFnUHJlZml4Pzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuICByZWFkb25seSBjaGFuZ2Vsb2dGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWdPcHRpb25zPzogQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZU9wdGlvbnMge1xuICByZWFkb25seSByZWxlYXNlQXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG4gIC8qKiBBdm9pZCB1cGRhdGluZyB0aGUgdmVyc2lvbiBmaWxlcyAqL1xuICByZWFkb25seSBza2lwQnVtcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNraXBDaGFuZ2Vsb2c/OiBib29sZWFuO1xuICByZWFkb25seSBjYXB0dXJlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdEFuZFRhZ1ZlcnNpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IHRvb2w6IFRvb2wgfCBBc3luY1Rvb2w7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXJnczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcGFja2FnZVNwZWM6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN3ZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29tbWl0QW5kVGFnT3B0aW9ucyxcbiAgKSB7XG4gICAgbGV0IHJlc29sdmVkQ2xpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFwYWNrYWdlU3BlYykge1xuICAgICAgLy8gSWYgbm8gcGFja2FnZVNwZWMgaXMgZ2l2ZW4sIHRyeSBhbmQgcmVzb2x2ZSB0aGUgQ0FUViBiaW5hcnlcbiAgICAgIC8vIGZyb20gZGV2RGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgc3BlZWQgdXAgZXhlY3V0aW9uIGEgbG90LlxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzb2x2ZWRDbGkgPSByZXF1aXJlLnJlc29sdmUoXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uL2Jpbi9jbGkuanNcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gbm90IGluc3RhbGxlZCBsb2NhbGx5OyBmYWxsIGJhY2sgdG8gbnB4IGJlbG93XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQ2xpKSB7XG4gICAgICAvLyBSdW4gdGhlIHJlc29sdmVkIENMSSBkaXJlY3RseSB3aXRoIG5vZGUgLSBmdWxseSBzaGVsbC1mcmVlLlxuICAgICAgdGhpcy50b29sID0gbm9kZTtcbiAgICAgIHRoaXMuYXJncyA9IFtyZXNvbHZlZENsaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5weCBpcyBhIFdpbmRvd3MgYC5jbWRgIHNoaW0sIHNvIGl0IHJ1bnMgdmlhIHRoZSBjcm9zcy1wbGF0Zm9ybSBoZWxwZXIuXG4gICAgICB0aGlzLnRvb2wgPSBucHg7XG4gICAgICB0aGlzLmFyZ3MgPSBbcGFja2FnZVNwZWMgPz8gREVGQVVMVF9DQVRWX1NQRUNdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgdGhlIGBjb21taXQtYW5kLXRhZ2AgcGFja2FnZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGludm9rZTxBIGV4dGVuZHMgSW52b2tlT3B0aW9ucz4oXG4gICAgb3B0aW9uczogQSxcbiAgKTogUHJvbWlzZTxBIGV4dGVuZHMgeyBjYXB0dXJlOiB0cnVlIH0gPyBzdHJpbmcgOiB2b2lkPiB7XG4gICAgY29uc3QgY2F0dkNvbmZpZzogQ29tbWl0QW5kVGFnQ29uZmlnID0ge1xuICAgICAgcGFja2FnZUZpbGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlbmFtZTogdGhpcy5vcHRpb25zLnZlcnNpb25GaWxlLFxuICAgICAgICAgIHR5cGU6IFwianNvblwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGJ1bXBGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZW5hbWU6IHRoaXMub3B0aW9ucy52ZXJzaW9uRmlsZSxcbiAgICAgICAgICB0eXBlOiBcImpzb25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjb21taXRBbGw6IGZhbHNlLFxuICAgICAgaW5maWxlOiB0aGlzLm9wdGlvbnMuY2hhbmdlbG9nRmlsZSxcbiAgICAgIHByZXJlbGVhc2U6IHRoaXMub3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgICAgaGVhZGVyOiBcIlwiLFxuICAgICAgc2tpcDoge1xuICAgICAgICBjb21taXQ6IHRydWUsXG4gICAgICAgIHRhZzogdHJ1ZSxcbiAgICAgICAgYnVtcDogb3B0aW9ucy5za2lwQnVtcCxcbiAgICAgICAgY2hhbmdlbG9nOiBvcHRpb25zLnNraXBDaGFuZ2Vsb2csXG4gICAgICB9LFxuICAgICAgdGFnUHJlZml4OiB0aGlzLm9wdGlvbnMudGFnUHJlZml4XG4gICAgICAgID8gYCR7dGhpcy5vcHRpb25zLnRhZ1ByZWZpeH12YFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJlbGVhc2VBczogb3B0aW9ucy5yZWxlYXNlQXMsXG4gICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgLi4udGhpcy5vcHRpb25zLmNvbmZpZ09wdGlvbnMsXG4gICAgfTtcbiAgICBsb2dnaW5nLmRlYnVnKGAudmVyc2lvbnJjLmpzb246ICR7SlNPTi5zdHJpbmdpZnkoY2F0dkNvbmZpZyl9YCk7XG5cbiAgICAvLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBjb25maWcgZmlsZSwgdGhlbiBleGVjdXRlIHRoZSBwYWNrYWdlIGFuZCByZW1vdmUgdGhlXG4gICAgLy8gY29uZmlnIGZpbGUgYWdhaW4uXG4gICAgY29uc3QgcmNmaWxlID0gcGF0aC5qb2luKHRoaXMuY3dkLCBcIi52ZXJzaW9ucmMuanNvblwiKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocmNmaWxlLCBKU09OLnN0cmluZ2lmeShjYXR2Q29uZmlnLCB1bmRlZmluZWQsIDIpKTtcbiAgICB0cnkge1xuICAgICAgbGV0IHJldDogYW55O1xuICAgICAgaWYgKG9wdGlvbnMuY2FwdHVyZSkge1xuICAgICAgICByZXQgPSBhd2FpdCB0aGlzLnRvb2wuY2FwdHVyZSh0aGlzLmFyZ3MsIHsgY3dkOiB0aGlzLmN3ZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMudG9vbC5ydW4odGhpcy5hcmdzLCB7IGN3ZDogdGhpcy5jd2QgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBmcy51bmxpbmsocmNmaWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnZW5lcmF0ZSB0aGUgbW9zdCByZWNlbnQgY2hhbmdlIGxvZ1xuICAgKlxuICAgKiBEbyB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBtb3N0IHJlY2VudCB0YWcsIHJ1bm5pbmcgQ0FUViwgdGhlblxuICAgKiByZXN0b3JpbmcgdGhlIHRhZy5cbiAgICpcbiAgICogV2UgZG8gdGhpcyBjb21iaW5lZCB3aXRoIHNraXBwaW5nIHRoZSBidW1wIHRvIG1ha2UgQ0FUViByZWdlbmVyYXRlIHRoZVxuICAgKiBjaGFuZ2Vsb2cgb2YgdGhlIG1vc3QgcmVjZW50IHJlbGVhc2UgKGlmIHdlIGxlZnQgdGhlIHRhZywgdGhlIGNoYW5nZWxvZ1xuICAgKiB3b3VsZCBiZSBlbXB0eSkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnZW5lcmF0ZVByZXZpb3VzQ2hhbmdlTG9nKHZlcnNpb246IHN0cmluZywgbGF0ZXN0VGFnOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvbGRDb21taXQgPSBnaXQuY2FwdHVyZShbXCJyZXYtcGFyc2VcIiwgbGF0ZXN0VGFnXSwge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICB9KTtcblxuICAgIGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgbGF0ZXN0VGFnXSwgeyBjd2Q6IHRoaXMuY3dkIH0pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmludm9rZSh7XG4gICAgICAgIHJlbGVhc2VBczogdmVyc2lvbixcbiAgICAgICAgc2tpcEJ1bXA6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZ2l0LnJ1bihbXCJ0YWdcIiwgbGF0ZXN0VGFnLCBvbGRDb21taXRdLCB7IGN3ZDogdGhpcy5jd2QgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSBDQVRWIGFuZCByZXR1cm4gdGhlIHZlcnNpb24gaXQgd291bGQgaGF2ZSBidW1wZWQgdG9cbiAgICpcbiAgICogQ0FUViB3aWxsIGFsd2F5cyBhdCBsZWFzdCBwZXJmb3JtIGEgcGF0Y2ggYnVtcCwgZXZlbiBpZiB0aGVyZSBhcmVuJ3QgYW55XG4gICAqIGNvbW1pdHMgdG8gbG9vayBhdC5cbiAgICpcbiAgICogV2UgaGF2ZSB0byBkbyB0aGlzIGJ5IHBhcnNpbmcgdGhlIG91dHB1dCBzdHJpbmcsIHdoaWNoIGlzIHByZXR0eSBiYWRcbiAgICogYnV0IEkgZG9uJ3Qgc2VlIHRoYXQgd2UgaGF2ZSBhbm90aGVyIHdheS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkcnlSdW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBvdXRwdXQgPSBzdHJpcEFuc2koXG4gICAgICBhd2FpdCB0aGlzLmludm9rZSh7XG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgc2tpcENoYW5nZWxvZzogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgcmUgPSAvYnVtcGluZyB2ZXJzaW9uLipmcm9tIChbMC05YS16ListXSspIHRvIChbMC05YS16ListXSspL2ltO1xuICAgIGNvbnN0IG0gPSByZS5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBtYXRjaCAke3JlfSBpbiAke291dHB1dH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbVsyXTtcbiAgfVxufVxuXG4vKipcbiAqIE1vZGVsaW5nIHRoZSBDQVRWIGNvbmZpZyBmaWxlXG4gKi9cbmludGVyZmFjZSBDb21taXRBbmRUYWdDb25maWcgZXh0ZW5kcyBDb25maWcge1xuICBwYWNrYWdlRmlsZXM/OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9PjtcbiAgYnVtcEZpbGVzPzogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfT47XG4gIGNvbW1pdEFsbD86IGJvb2xlYW47XG4gIGluZmlsZT86IHN0cmluZztcbiAgcHJlcmVsZWFzZT86IHN0cmluZztcbiAgc2tpcD86IHtcbiAgICBjb21taXQ/OiBib29sZWFuO1xuICAgIHRhZz86IGJvb2xlYW47XG4gICAgYnVtcD86IGJvb2xlYW47XG4gICAgY2hhbmdlbG9nPzogYm9vbGVhbjtcbiAgfTtcbiAgZmlyc3RSZWxlYXNlPzogYm9vbGVhbjtcbiAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICByZWxlYXNlQXM/OiBzdHJpbmc7XG4gIGRyeVJ1bj86IGJvb2xlYW47XG4gIHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RyaXBzIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gYSBzdHJpbmdcbiAqXG4gKiBOZWVkIHRvIHVzZSB0aGlzIGJlY2F1c2UgdGhlIGAtLW5vLWNvbG9yc2AgYXJndW1lbnQgdG8gQ0FUViBpcyBzb21ldGltZXNcbiAqIHJlc3BlY3RlZCBhbmQgc29tZXRpbWVzIG5vdCBhbmQgaXQncyBkcml2aW5nIG1lIGNyYXp5LlxuICovXG5mdW5jdGlvbiBzdHJpcEFuc2koc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBQYXR0ZXJuIG1hdGNoZXMgYWxsIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBpbmNsdWRpbmcgY29sb3JzLCBjdXJzb3IgbW92ZW1lbnQsIGV0Y1xuICBjb25zdCBwYXR0ZXJuID0gW1xuICAgIFwiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLFxuICAgIFwiKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIixcbiAgXS5qb2luKFwifFwiKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAocGF0dGVybiwgXCJnXCIpLCBcIlwiKTtcbn1cbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LXRhZy12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvY29tbWl0LXRhZy12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMkJBQW9DO0FBQ3BDLGdEQUFrQztBQUVsQyxvREFBc0M7QUFDdEMsdUNBQThDO0FBRzlDLE1BQU0saUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7QUFtQnZELE1BQWEsbUJBQW1CO0lBTVg7SUFDQTtJQU5GLElBQUksQ0FBbUI7SUFDdkIsSUFBSSxDQUFXO0lBRWhDLFlBQ0UsV0FBK0IsRUFDZCxHQUFXLEVBQ1gsT0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBRTdDLElBQUksV0FBK0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsOERBQThEO1lBQzlELDREQUE0RDtZQUM1RCxJQUFJLENBQUM7Z0JBQ0gsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLGdEQUFnRDtZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsOERBQThEO1lBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLGlCQUFpQixDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLE9BQVU7UUFFVixNQUFNLFVBQVUsR0FBdUI7WUFDckMsWUFBWSxFQUFFO2dCQUNaO29CQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQ2xDLElBQUksRUFBRSxNQUFNO2lCQUNiO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztvQkFDbEMsSUFBSSxFQUFFLE1BQU07aUJBQ2I7YUFDRjtZQUNELFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUNuQyxNQUFNLEVBQUUsRUFBRTtZQUNWLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSTtnQkFDWixHQUFHLEVBQUUsSUFBSTtnQkFDVCxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYTthQUNqQztZQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQy9CLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHO2dCQUM5QixDQUFDLENBQUMsU0FBUztZQUNiLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7U0FDOUIsQ0FBQztRQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLDRFQUE0RTtRQUM1RSxxQkFBcUI7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUM7WUFDSCxJQUFJLEdBQVEsQ0FBQztZQUNiLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLDJCQUEyQixDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUN6RSxNQUFNLFNBQVMsR0FBRyxVQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUMsQ0FBQztRQUVILFVBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDaEIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsVUFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FDdEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQ0gsQ0FBQztRQUNGLE1BQU0sRUFBRSxHQUFHLDBEQUEwRCxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBeklELGtEQXlJQztBQXdCRDs7Ozs7R0FLRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDNUIsbUZBQW1GO0lBQ25GLE1BQU0sT0FBTyxHQUFHO1FBQ2QsOEhBQThIO1FBQzlILDBEQUEwRDtLQUMzRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlicmFyeSB0byBpbnZva2UgY29tbWl0LWFuZC10YWctdmVyc2lvblxuICovXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IENvbmZpZyB9IGZyb20gXCJjb252ZW50aW9uYWwtY2hhbmdlbG9nLWNvbmZpZy1zcGVjXCI7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gXCIuLi9sb2dnaW5nXCI7XG5pbXBvcnQgeyBnaXQsIG5vZGUsIG5weCB9IGZyb20gXCIuLi91dGlsL2V4ZWNcIjtcbmltcG9ydCB0eXBlIHsgQXN5bmNUb29sLCBUb29sIH0gZnJvbSBcIi4uL3V0aWwvZXhlY1wiO1xuXG5jb25zdCBERUZBVUxUX0NBVFZfU1BFQyA9IFwiY29tbWl0LWFuZC10YWctdmVyc2lvbkBeMTNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21taXRBbmRUYWdPcHRpb25zIHtcbiAgcmVhZG9ubHkgdGFnUHJlZml4Pzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uRmlsZTogc3RyaW5nO1xuICByZWFkb25seSBjaGFuZ2Vsb2dGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwcmVyZWxlYXNlPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWdPcHRpb25zPzogQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZU9wdGlvbnMge1xuICByZWFkb25seSByZWxlYXNlQXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG4gIC8qKiBBdm9pZCB1cGRhdGluZyB0aGUgdmVyc2lvbiBmaWxlcyAqL1xuICByZWFkb25seSBza2lwQnVtcD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNraXBDaGFuZ2Vsb2c/OiBib29sZWFuO1xuICByZWFkb25seSBjYXB0dXJlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdEFuZFRhZ1ZlcnNpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IHRvb2w6IFRvb2wgfCBBc3luY1Rvb2w7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXJnczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcGFja2FnZVNwZWM6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN3ZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29tbWl0QW5kVGFnT3B0aW9ucyxcbiAgKSB7XG4gICAgbGV0IHJlc29sdmVkQ2xpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFwYWNrYWdlU3BlYykge1xuICAgICAgLy8gSWYgbm8gcGFja2FnZVNwZWMgaXMgZ2l2ZW4sIHRyeSBhbmQgcmVzb2x2ZSB0aGUgQ0FUViBiaW5hcnlcbiAgICAgIC8vIGZyb20gZGV2RGVwZW5kZW5jaWVzLiBUaGlzIHdpbGwgc3BlZWQgdXAgZXhlY3V0aW9uIGEgbG90LlxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzb2x2ZWRDbGkgPSByZXF1aXJlLnJlc29sdmUoXCJjb21taXQtYW5kLXRhZy12ZXJzaW9uL2Jpbi9jbGkuanNcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gbm90IGluc3RhbGxlZCBsb2NhbGx5OyBmYWxsIGJhY2sgdG8gbnB4IGJlbG93XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQ2xpKSB7XG4gICAgICAvLyBSdW4gdGhlIHJlc29sdmVkIENMSSBkaXJlY3RseSB3aXRoIG5vZGUgLSBmdWxseSBzaGVsbC1mcmVlLlxuICAgICAgdGhpcy50b29sID0gbm9kZTtcbiAgICAgIHRoaXMuYXJncyA9IFtyZXNvbHZlZENsaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5weCBpcyBhIFdpbmRvd3MgYC5jbWRgIHNoaW0sIHNvIGl0IHJ1bnMgdmlhIHRoZSBjcm9zcy1wbGF0Zm9ybSBoZWxwZXIuXG4gICAgICB0aGlzLnRvb2wgPSBucHg7XG4gICAgICB0aGlzLmFyZ3MgPSBbcGFja2FnZVNwZWMgPz8gREVGQVVMVF9DQVRWX1NQRUNdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgdGhlIGBjb21taXQtYW5kLXRhZ2AgcGFja2FnZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGludm9rZTxBIGV4dGVuZHMgSW52b2tlT3B0aW9ucz4oXG4gICAgb3B0aW9uczogQSxcbiAgKTogUHJvbWlzZTxBIGV4dGVuZHMgeyBjYXB0dXJlOiB0cnVlIH0gPyBzdHJpbmcgOiB2b2lkPiB7XG4gICAgY29uc3QgY2F0dkNvbmZpZzogQ29tbWl0QW5kVGFnQ29uZmlnID0ge1xuICAgICAgcGFja2FnZUZpbGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlbmFtZTogdGhpcy5vcHRpb25zLnZlcnNpb25GaWxlLFxuICAgICAgICAgIHR5cGU6IFwianNvblwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGJ1bXBGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZW5hbWU6IHRoaXMub3B0aW9ucy52ZXJzaW9uRmlsZSxcbiAgICAgICAgICB0eXBlOiBcImpzb25cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjb21taXRBbGw6IGZhbHNlLFxuICAgICAgaW5maWxlOiB0aGlzLm9wdGlvbnMuY2hhbmdlbG9nRmlsZSxcbiAgICAgIHByZXJlbGVhc2U6IHRoaXMub3B0aW9ucy5wcmVyZWxlYXNlLFxuICAgICAgaGVhZGVyOiBcIlwiLFxuICAgICAgc2tpcDoge1xuICAgICAgICBjb21taXQ6IHRydWUsXG4gICAgICAgIHRhZzogdHJ1ZSxcbiAgICAgICAgYnVtcDogb3B0aW9ucy5za2lwQnVtcCxcbiAgICAgICAgY2hhbmdlbG9nOiBvcHRpb25zLnNraXBDaGFuZ2Vsb2csXG4gICAgICB9LFxuICAgICAgdGFnUHJlZml4OiB0aGlzLm9wdGlvbnMudGFnUHJlZml4XG4gICAgICAgID8gYCR7dGhpcy5vcHRpb25zLnRhZ1ByZWZpeH12YFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJlbGVhc2VBczogb3B0aW9ucy5yZWxlYXNlQXMsXG4gICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgLi4udGhpcy5vcHRpb25zLmNvbmZpZ09wdGlvbnMsXG4gICAgfTtcbiAgICBsb2dnaW5nLmRlYnVnKGAudmVyc2lvbnJjLmpzb246ICR7SlNPTi5zdHJpbmdpZnkoY2F0dkNvbmZpZyl9YCk7XG5cbiAgICAvLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBjb25maWcgZmlsZSwgdGhlbiBleGVjdXRlIHRoZSBwYWNrYWdlIGFuZCByZW1vdmUgdGhlXG4gICAgLy8gY29uZmlnIGZpbGUgYWdhaW4uXG4gICAgY29uc3QgcmNmaWxlID0gcGF0aC5qb2luKHRoaXMuY3dkLCBcIi52ZXJzaW9ucmMuanNvblwiKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocmNmaWxlLCBKU09OLnN0cmluZ2lmeShjYXR2Q29uZmlnLCB1bmRlZmluZWQsIDIpKTtcbiAgICB0cnkge1xuICAgICAgbGV0IHJldDogYW55O1xuICAgICAgaWYgKG9wdGlvbnMuY2FwdHVyZSkge1xuICAgICAgICByZXQgPSBhd2FpdCB0aGlzLnRvb2wuY2FwdHVyZSh0aGlzLmFyZ3MsIHsgY3dkOiB0aGlzLmN3ZCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMudG9vbC5ydW4odGhpcy5hcmdzLCB7IGN3ZDogdGhpcy5jd2QgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBmcy51bmxpbmsocmNmaWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnZW5lcmF0ZSB0aGUgbW9zdCByZWNlbnQgY2hhbmdlIGxvZ1xuICAgKlxuICAgKiBEbyB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBtb3N0IHJlY2VudCB0YWcsIHJ1bm5pbmcgQ0FUViwgdGhlblxuICAgKiByZXN0b3JpbmcgdGhlIHRhZy5cbiAgICpcbiAgICogV2UgZG8gdGhpcyBjb21iaW5lZCB3aXRoIHNraXBwaW5nIHRoZSBidW1wIHRvIG1ha2UgQ0FUViByZWdlbmVyYXRlIHRoZVxuICAgKiBjaGFuZ2Vsb2cgb2YgdGhlIG1vc3QgcmVjZW50IHJlbGVhc2UgKGlmIHdlIGxlZnQgdGhlIHRhZywgdGhlIGNoYW5nZWxvZ1xuICAgKiB3b3VsZCBiZSBlbXB0eSkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnZW5lcmF0ZVByZXZpb3VzQ2hhbmdlTG9nKHZlcnNpb246IHN0cmluZywgbGF0ZXN0VGFnOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvbGRDb21taXQgPSBnaXQuY2FwdHVyZShbXCJyZXYtcGFyc2VcIiwgbGF0ZXN0VGFnXSwge1xuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICB9KTtcblxuICAgIGdpdC5ydW4oW1widGFnXCIsIFwiLS1kZWxldGVcIiwgbGF0ZXN0VGFnXSwgeyBjd2Q6IHRoaXMuY3dkIH0pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmludm9rZSh7XG4gICAgICAgIHJlbGVhc2VBczogdmVyc2lvbixcbiAgICAgICAgc2tpcEJ1bXA6IHRydWUsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZ2l0LnJ1bihbXCJ0YWdcIiwgbGF0ZXN0VGFnLCBvbGRDb21taXRdLCB7IGN3ZDogdGhpcy5jd2QgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSBDQVRWIGFuZCByZXR1cm4gdGhlIHZlcnNpb24gaXQgd291bGQgaGF2ZSBidW1wZWQgdG9cbiAgICpcbiAgICogQ0FUViB3aWxsIGFsd2F5cyBhdCBsZWFzdCBwZXJmb3JtIGEgcGF0Y2ggYnVtcCwgZXZlbiBpZiB0aGVyZSBhcmVuJ3QgYW55XG4gICAqIGNvbW1pdHMgdG8gbG9vayBhdC5cbiAgICpcbiAgICogV2UgaGF2ZSB0byBkbyB0aGlzIGJ5IHBhcnNpbmcgdGhlIG91dHB1dCBzdHJpbmcsIHdoaWNoIGlzIHByZXR0eSBiYWRcbiAgICogYnV0IEkgZG9uJ3Qgc2VlIHRoYXQgd2UgaGF2ZSBhbm90aGVyIHdheS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkcnlSdW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBvdXRwdXQgPSBzdHJpcEFuc2koXG4gICAgICBhd2FpdCB0aGlzLmludm9rZSh7XG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgc2tpcENoYW5nZWxvZzogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgcmUgPSAvYnVtcGluZyB2ZXJzaW9uLipmcm9tIChbMC05YS16ListXSspIHRvIChbMC05YS16ListXSspL2ltO1xuICAgIGNvbnN0IG0gPSByZS5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBtYXRjaCAke3JlfSBpbiAke291dHB1dH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbVsyXTtcbiAgfVxufVxuXG4vKipcbiAqIE1vZGVsaW5nIHRoZSBDQVRWIGNvbmZpZyBmaWxlXG4gKi9cbmludGVyZmFjZSBDb21taXRBbmRUYWdDb25maWcgZXh0ZW5kcyBDb25maWcge1xuICBwYWNrYWdlRmlsZXM/OiBBcnJheTx7IGZpbGVuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9PjtcbiAgYnVtcEZpbGVzPzogQXJyYXk8eyBmaWxlbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmcgfT47XG4gIGNvbW1pdEFsbD86IGJvb2xlYW47XG4gIGluZmlsZT86IHN0cmluZztcbiAgcHJlcmVsZWFzZT86IHN0cmluZztcbiAgc2tpcD86IHtcbiAgICBjb21taXQ/OiBib29sZWFuO1xuICAgIHRhZz86IGJvb2xlYW47XG4gICAgYnVtcD86IGJvb2xlYW47XG4gICAgY2hhbmdlbG9nPzogYm9vbGVhbjtcbiAgfTtcbiAgZmlyc3RSZWxlYXNlPzogYm9vbGVhbjtcbiAgdGFnUHJlZml4Pzogc3RyaW5nO1xuICByZWxlYXNlQXM/OiBzdHJpbmc7XG4gIGRyeVJ1bj86IGJvb2xlYW47XG4gIHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RyaXBzIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gYSBzdHJpbmdcbiAqXG4gKiBOZWVkIHRvIHVzZSB0aGlzIGJlY2F1c2UgdGhlIGAtLW5vLWNvbG9yc2AgYXJndW1lbnQgdG8gQ0FUViBpcyBzb21ldGltZXNcbiAqIHJlc3BlY3RlZCBhbmQgc29tZXRpbWVzIG5vdCBhbmQgaXQncyBkcml2aW5nIG1lIGNyYXp5LlxuICovXG5mdW5jdGlvbiBzdHJpcEFuc2koc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBQYXR0ZXJuIG1hdGNoZXMgYWxsIEFOU0kgZXNjYXBlIHNlcXVlbmNlcyBpbmNsdWRpbmcgY29sb3JzLCBjdXJzb3IgbW92ZW1lbnQsIGV0Y1xuICBjb25zdCBwYXR0ZXJuID0gW1xuICAgIFwiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLFxuICAgIFwiKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIixcbiAgXS5qb2luKFwifFwiKTtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAocGF0dGVybiwgXCJnXCIpLCBcIlwiKTtcbn1cbiJdfQ==