projen 0.101.21 → 0.101.23

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 (151) hide show
  1. package/.jsii +50 -43
  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/lambda-extension.js +1 -1
  16. package/lib/awscdk/lambda-function.js +2 -2
  17. package/lib/awscdk/private/feature-flags-v2.const.d.ts +1 -1
  18. package/lib/awscdk/private/feature-flags-v2.const.js +2 -2
  19. package/lib/build/build-workflow.js +1 -1
  20. package/lib/cdk/auto-discover-base.js +2 -2
  21. package/lib/cdk/construct-lib.js +1 -1
  22. package/lib/cdk/integration-test-base.js +1 -1
  23. package/lib/cdk/jsii-build.js +1 -1
  24. package/lib/cdk/jsii-docgen.js +1 -1
  25. package/lib/cdk/jsii-project.js +1 -1
  26. package/lib/cdk8s/auto-discover.js +2 -2
  27. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  28. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  29. package/lib/cdk8s/cdk8s-construct.js +1 -1
  30. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  31. package/lib/cdk8s/cdk8s-deps.js +1 -1
  32. package/lib/cdk8s/integration-test.js +1 -1
  33. package/lib/cdktf/cdktf-construct.js +1 -1
  34. package/lib/circleci/circleci.js +1 -1
  35. package/lib/component.js +2 -2
  36. package/lib/dependencies.js +1 -1
  37. package/lib/dev-env.js +1 -1
  38. package/lib/docker-compose/docker-compose-service.js +1 -1
  39. package/lib/docker-compose/docker-compose.js +1 -1
  40. package/lib/file.js +1 -1
  41. package/lib/gitattributes.js +1 -1
  42. package/lib/github/actions-provider.js +1 -1
  43. package/lib/github/auto-approve.js +1 -1
  44. package/lib/github/auto-merge.js +1 -1
  45. package/lib/github/auto-queue.js +1 -1
  46. package/lib/github/dependabot.js +1 -1
  47. package/lib/github/dependency-review.js +1 -1
  48. package/lib/github/github-credentials.js +1 -1
  49. package/lib/github/github-project.js +1 -1
  50. package/lib/github/github.js +1 -1
  51. package/lib/github/merge-queue.js +1 -1
  52. package/lib/github/mergify.js +1 -1
  53. package/lib/github/pr-template.js +1 -1
  54. package/lib/github/pull-request-backport.js +1 -1
  55. package/lib/github/pull-request-lint.js +1 -1
  56. package/lib/github/stale.js +1 -1
  57. package/lib/github/task-workflow-job.js +1 -1
  58. package/lib/github/task-workflow.js +1 -1
  59. package/lib/github/workflow-actions.js +1 -1
  60. package/lib/github/workflow-jobs.js +1 -1
  61. package/lib/github/workflow-steps.js +1 -1
  62. package/lib/github/workflows.d.ts +1 -1
  63. package/lib/github/workflows.js +92 -10
  64. package/lib/gitlab/configuration.js +1 -1
  65. package/lib/gitlab/gitlab-configuration.js +1 -1
  66. package/lib/gitlab/nested-configuration.js +1 -1
  67. package/lib/gitpod.js +1 -1
  68. package/lib/ignore-file.js +1 -1
  69. package/lib/ini.js +1 -1
  70. package/lib/java/java-project.js +1 -1
  71. package/lib/java/junit.js +1 -1
  72. package/lib/java/maven-compile.js +1 -1
  73. package/lib/java/maven-packaging.js +1 -1
  74. package/lib/java/maven-sample.js +1 -1
  75. package/lib/java/pom.js +2 -2
  76. package/lib/java/projenrc.js +1 -1
  77. package/lib/javascript/biome/biome.js +1 -1
  78. package/lib/javascript/bundler.js +1 -1
  79. package/lib/javascript/eslint.js +1 -1
  80. package/lib/javascript/jest.js +4 -4
  81. package/lib/javascript/license-checker.js +1 -1
  82. package/lib/javascript/node-package.js +1 -1
  83. package/lib/javascript/node-project.js +1 -1
  84. package/lib/javascript/npm-config.js +1 -1
  85. package/lib/javascript/pnpm-workspace-config.d.ts +3 -1
  86. package/lib/javascript/pnpm-workspace-config.js +5 -3
  87. package/lib/javascript/pnpm-workspace.js +1 -1
  88. package/lib/javascript/prettier.js +1 -1
  89. package/lib/javascript/projenrc.js +1 -1
  90. package/lib/javascript/typescript-config.js +2 -2
  91. package/lib/javascript/upgrade-dependencies.js +2 -2
  92. package/lib/javascript/yarnrc.js +1 -1
  93. package/lib/json-patch.js +1 -1
  94. package/lib/json.js +1 -1
  95. package/lib/license.js +1 -1
  96. package/lib/logger.js +1 -1
  97. package/lib/makefile.js +1 -1
  98. package/lib/object-file.js +1 -1
  99. package/lib/project-build.js +1 -1
  100. package/lib/project-tree.js +1 -1
  101. package/lib/project.js +1 -1
  102. package/lib/projects.js +1 -1
  103. package/lib/projenrc-json.js +1 -1
  104. package/lib/projenrc.js +1 -1
  105. package/lib/python/pip.js +1 -1
  106. package/lib/python/poetry.js +2 -2
  107. package/lib/python/projenrc.js +1 -1
  108. package/lib/python/pyproject-toml-file.js +1 -1
  109. package/lib/python/pytest-sample.js +1 -1
  110. package/lib/python/pytest.js +1 -1
  111. package/lib/python/python-project.js +1 -1
  112. package/lib/python/python-sample.js +1 -1
  113. package/lib/python/requirements-file.js +1 -1
  114. package/lib/python/setuppy.js +1 -1
  115. package/lib/python/setuptools.js +1 -1
  116. package/lib/python/uv-config.js +1 -1
  117. package/lib/python/uv.js +1 -1
  118. package/lib/python/venv.js +1 -1
  119. package/lib/readme.js +1 -1
  120. package/lib/release/publisher.js +1 -1
  121. package/lib/release/release-trigger.js +1 -1
  122. package/lib/release/release.js +1 -1
  123. package/lib/renovatebot.js +1 -1
  124. package/lib/run-task.cjs +2 -2
  125. package/lib/sample-file.js +2 -2
  126. package/lib/script-runner.js +1 -1
  127. package/lib/source-code.js +1 -1
  128. package/lib/task-shell.js +1 -1
  129. package/lib/task.js +1 -1
  130. package/lib/tasks.js +1 -1
  131. package/lib/testing.js +1 -1
  132. package/lib/textfile.js +1 -1
  133. package/lib/toml.js +1 -1
  134. package/lib/typescript/projenrc-ts.js +1 -1
  135. package/lib/typescript/projenrc.js +1 -1
  136. package/lib/typescript/typescript-runner.js +1 -1
  137. package/lib/typescript/typescript-typedoc.js +1 -1
  138. package/lib/typescript/typescript.js +5 -5
  139. package/lib/version.js +2 -2
  140. package/lib/vscode/devcontainer.js +1 -1
  141. package/lib/vscode/extensions.js +1 -1
  142. package/lib/vscode/launch-config.js +1 -1
  143. package/lib/vscode/settings.js +1 -1
  144. package/lib/vscode/vscode.js +1 -1
  145. package/lib/web/next.js +3 -3
  146. package/lib/web/postcss.js +1 -1
  147. package/lib/web/react.js +3 -3
  148. package/lib/web/tailwind.js +1 -1
  149. package/lib/xmlfile.js +1 -1
  150. package/lib/yaml.js +1 -1
  151. package/package.json +2 -2
@@ -8,7 +8,7 @@ const ini_1 = require("../ini");
8
8
  * File representing the local NPM config in .npmrc
9
9
  */
10
10
  class NpmConfig extends component_1.Component {
11
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NpmConfig", version: "0.101.21" };
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.NpmConfig", version: "0.101.23" };
12
12
  /**
13
13
  * The config object. This object can be mutated until the project is
14
14
  * synthesized.
@@ -1170,7 +1170,9 @@ export declare enum PnpmWorkspaceYamlSchemaSavePrefix {
1170
1170
  /** ^ */
1171
1171
  VALUE_CARAT = "^",
1172
1172
  /** ~ */
1173
- VALUE_TILDE = "~"
1173
+ VALUE_TILDE = "~",
1174
+ /** = */
1175
+ VALUE_EQUALS = "="
1174
1176
  }
1175
1177
  /**
1176
1178
  * Determines how pnpm resolves dependencies, See https://pnpm.io/settings#resolutionmode
@@ -358,7 +358,7 @@ var PnpmWorkspaceYamlSchemaReporter;
358
358
  */
359
359
  class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
360
360
  value;
361
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.101.21" };
361
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.101.23" };
362
362
  static fromBoolean(value) {
363
363
  return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
364
364
  }
@@ -377,7 +377,7 @@ exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLi
377
377
  */
378
378
  class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
379
379
  value;
380
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.101.21" };
380
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.101.23" };
381
381
  static fromBoolean(value) {
382
382
  return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
383
383
  }
@@ -400,6 +400,8 @@ var PnpmWorkspaceYamlSchemaSavePrefix;
400
400
  PnpmWorkspaceYamlSchemaSavePrefix["VALUE_CARAT"] = "^";
401
401
  /** ~ */
402
402
  PnpmWorkspaceYamlSchemaSavePrefix["VALUE_TILDE"] = "~";
403
+ /** = */
404
+ PnpmWorkspaceYamlSchemaSavePrefix["VALUE_EQUALS"] = "=";
403
405
  })(PnpmWorkspaceYamlSchemaSavePrefix || (exports.PnpmWorkspaceYamlSchemaSavePrefix = PnpmWorkspaceYamlSchemaSavePrefix = {}));
404
406
  /**
405
407
  * Determines how pnpm resolves dependencies, See https://pnpm.io/settings#resolutionmode
@@ -489,4 +491,4 @@ var PnpmWorkspaceYamlSchemaHoistingLimits;
489
491
  /** dependencies */
490
492
  PnpmWorkspaceYamlSchemaHoistingLimits["DEPENDENCIES"] = "dependencies";
491
493
  })(PnpmWorkspaceYamlSchemaHoistingLimits || (exports.PnpmWorkspaceYamlSchemaHoistingLimits = PnpmWorkspaceYamlSchemaHoistingLimits = {}));
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlrQ0Esd0VBZ0tDO0FBZ0RELDhHQVNDO0FBb0JELGdHQU9DO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DOztBQTlWRDs7O0dBR0c7QUFDSCxxRkFBcUY7QUFDckYsU0FBZ0IsOEJBQThCLENBQUMsR0FBd0M7SUFDckYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlKLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENB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OztHQUlHO0FBQ0gsSUFBWSxvQ0FTWDtBQVRELFdBQVksb0NBQW9DO0lBQzlDLGVBQWU7SUFDZiw2REFBcUIsQ0FBQTtJQUNyQixZQUFZO0lBQ1osdURBQWUsQ0FBQTtJQUNmLFdBQVc7SUFDWCxxREFBYSxDQUFBO0lBQ2IsYUFBYTtJQUNiLHlEQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxvQ0FBb0Msb0RBQXBDLG9DQUFvQyxRQVMvQztBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHFDQU9YO0FBUEQsV0FBWSxxQ0FBcUM7SUFDL0MsV0FBVztJQUNYLHNEQUFhLENBQUE7SUFDYixpQkFBaUI7SUFDakIsa0VBQXlCLENBQUE7SUFDekIsbUJBQW1CO0lBQ25CLHNFQUE2QixDQUFBO0FBQy9CLENBQUMsRUFQVyxxQ0FBcUMscURBQXJDLHFDQUFxQyxRQU9oRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEge1xuICAvKipcbiAgICogV29ya3NwYWNlIHBhY2thZ2UgcGF0aHMuIEdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcyBhcyByZXVzYWJsZSBjb25zdGFudHMsXG4gICAqIGZvciBsYXRlciByZWZlcmVuY2UgaW4gcGFja2FnZS5qc29uIGZpbGVzLlxuICAgKiBUaGlzIChzaW5ndWxhcikgZmllbGQgY3JlYXRlcyBhIGNhdGFsb2cgbmFtZWQgZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lIGFyYml0cmFyaWx5IG5hbWVkIGNhdGFsb2dzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dzPzogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dNb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBwbnBtIHdpbGwgcmVtb3ZlIHVudXNlZCBjYXRhbG9nIGVudHJpZXMgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjbGVhbnVwVW51c2VkQ2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBVbnVzZWRDYXRhbG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgZXhlY3V0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIGFueSBkZXBlbmRlbmN5IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGV4dGVuZCB0aGUgZXhpc3RpbmcgcGFja2FnZSBkZWZpbml0aW9ucyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUV4dGVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VFeHRlbnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJEZXBlbmRlbmN5UnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5UnVsZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdG8gcnVuIGJ1aWxkcyBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV2ZXJCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgbmV2ZXJCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYWxsIGJ1aWxkIHNjcmlwdHMgKGUuZy4gcHJlaW5zdGFsbCwgaW5zdGFsbCwgcG9zdGluc3RhbGwpIGZyb20gZGVwZW5kZW5jaWVzIHdpbGwgcnVuIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgcmVxdWlyaW5nIGFwcHJvdmFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBKU09OIGZpbGUgdGhhdCBsaXN0cyB0aGUgb25seSBwYWNrYWdlcyBwZXJtaXR0ZWQgdG8gcnVuIGluc3RhbGxhdGlvbiBzY3JpcHRzIGR1cmluZyB0aGUgcG5wbSBpbnN0YWxsIHByb2Nlc3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0IGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcHJlY2F0ZWQgdmVyc2lvbnMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIHN1cHByZXNzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcGF0Y2hlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVkRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkRGVwZW5kZW5jaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuIChQcmV2aW91c2x5IG5hbWVkIFwiYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1wiKVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93VW51c2VkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOb25BcHBsaWVkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaXMgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQYXRjaEZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQYXRjaEZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUNvbmZpZz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb25maWcgZGVwZW5kZW5jaWVzIGFsbG93IHlvdSB0byBzaGFyZSBhbmQgY2VudHJhbGl6ZSBjb25maWd1cmF0aW9uIGZpbGVzLCBzZXR0aW5ncywgYW5kIGhvb2tzIGFjcm9zcyBtdWx0aXBsZSBwcm9qZWN0cy4gVGhleSBhcmUgaW5zdGFsbGVkIGJlZm9yZSBhbGwgcmVndWxhciBkZXBlbmRlbmNpZXMgKCdkZXBlbmRlbmNpZXMnLCAnZGV2RGVwZW5kZW5jaWVzJywgJ29wdGlvbmFsRGVwZW5kZW5jaWVzJyksIG1ha2luZyB0aGVtIGlkZWFsIGZvciBzZXR0aW5nIHVwIGN1c3RvbSBob29rcywgcGF0Y2hlcywgYW5kIGNhdGFsb2cgZW50cmllcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjb25maWdEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RlcGVuZGVuY2llcz86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdENvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IG11c3QgZXhpc3QgaW4gZWFjaCBwcm9qZWN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcXVpcmVkU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIGluc3RhbGwgb3B0aW9uYWwgZGVwZW5kZW5jaWVzLCBldmVuIGlmIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc3lzdGVtIHJ1bm5pbmcgdGhlIGluc3RhbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG9wdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBpbnN0YWxsIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXhlY3V0aW9uRW52XG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25FbnY/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBob2lzdGVkIHRvIG5vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2VzIGFyZSBzeW1saW5rZWQgdG8gZWl0aGVyIDx3b3Jrc3BhY2Vfcm9vdD4vbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlcyBvciB0byA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcyBkZXBlbmRpbmcgb24gb3RoZXIgaG9pc3Rpbmcgc2V0dGluZ3MgKGhvaXN0UGF0dGVybiBhbmQgcHVibGljSG9pc3RQYXR0ZXJuKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBob2lzdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGVsbHMgcG5wbSB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RQYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBob2lzdFBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5saWtlIGhvaXN0UGF0dGVybiwgd2hpY2ggaG9pc3RzIGRlcGVuZGVuY2llcyB0byBhIGhpZGRlbiBtb2R1bGVzIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUsIHB1YmxpY0hvaXN0UGF0dGVybiBob2lzdHMgZGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHRvIHRoZSByb290IG1vZHVsZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1YmxpY0hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHBucG0gY3JlYXRlcyBhIHNlbWlzdHJpY3Qgbm9kZV9tb2R1bGVzLCBtZWFuaW5nIGRlcGVuZGVuY2llcyBoYXZlIGFjY2VzcyB0byB1bmRlY2xhcmVkIGRlcGVuZGVuY2llcyBidXQgbW9kdWxlcyBvdXRzaWRlIG9mIG5vZGVfbW9kdWxlcyBkbyBub3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hhbWVmdWxseUhvaXN0XG4gICAqL1xuICByZWFkb25seSBzaGFtZWZ1bGx5SG9pc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCAoaW5zdGVhZCBvZiBub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hhdCBsaW5rZXIgc2hvdWxkIGJlIHVzZWQgZm9yIGluc3RhbGxpbmcgTm9kZSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlTGlua2VyXG4gICAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN5bWxpbmsgaXMgc2V0IHRvIGZhbHNlLCBwbnBtIGNyZWF0ZXMgYSB2aXJ0dWFsIHN0b3JlIGRpcmVjdG9yeSB3aXRob3V0IGFueSBzeW1saW5rcy4gSXQgaXMgYSB1c2VmdWwgc2V0dGluZyB0b2dldGhlciB3aXRoIG5vZGVMaW5rZXI9cG5wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bWxpbmtcbiAgICovXG4gIHJlYWRvbmx5IHN5bWxpbms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBwbnBtIHdpbGwgbm90IHdyaXRlIGFueSBmaWxlcyB0byB0aGUgbW9kdWxlcyBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlTW9kdWxlc0RpclxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTW9kdWxlc0Rpcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2l0aCBsaW5rcyB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBsZW5ndGggb2YgZGlyZWN0b3J5IG5hbWVzIGluc2lkZSB0aGUgdmlydHVhbCBzdG9yZSBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcy8ucG5wbSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB3YXkgcGFja2FnZXMgYXJlIGltcG9ydGVkIGZyb20gdGhlIHN0b3JlIChpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHN5bWxpbmtzIGluc2lkZSBub2RlX21vZHVsZXMsIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIHRoZSBub2RlTGlua2VyIHNldHRpbmcsIG5vdCB0aGlzIG9uZSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUltcG9ydE1ldGhvZFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUltcG9ydE1ldGhvZD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZDtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW4gbWludXRlcyBhZnRlciB3aGljaCBvcnBoYW4gcGFja2FnZXMgZnJvbSB0aGUgbW9kdWxlcyBkaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbW9kdWxlc0NhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzQ2FjaGVNYXhBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggZGx4IGNhY2hlIGV4cGlyZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGx4Q2FjaGVNYXhBZ2VcbiAgICovXG4gIHJlYWRvbmx5IGRseENhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gd2hlcmUgYWxsIHRoZSBwYWNrYWdlcyBhcmUgc2F2ZWQgb24gdGhlIGRpc2suXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RvcmVEaXJcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBpZiBhIGZpbGUgaW4gdGhlIHN0b3JlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgY2hlY2tlZCBiZWZvcmUgbGlua2luZyBpdCB0byBhIHByb2plY3QncyBub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyaWZ5U3RvcmVJbnRlZ3JpdHlcbiAgICovXG4gIHJlYWRvbmx5IHZlcmlmeVN0b3JlSW50ZWdyaXR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU29tZSByZWdpc3RyaWVzIGFsbG93IHRoZSBleGFjdCBzYW1lIGNvbnRlbnQgdG8gYmUgcHVibGlzaGVkIHVuZGVyIGRpZmZlcmVudCBwYWNrYWdlIG5hbWVzIGFuZC9vciB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIG5vZGVfbW9kdWxlcyBjb250YWlucyBvbmx5IHN5bWxpbmtzIHRvIGEgY2VudHJhbCB2aXJ0dWFsIHN0b3JlLCByYXRoZXIgdGhhbiB0byBub2RlX21vZHVsZXMvLnBucG0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgcG5wbSB3b24ndCByZWFkIG9yIGdlbmVyYXRlIGEgcG5wbS1sb2NrLnlhbWwgZmlsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlIGFuZCB0aGUgYXZhaWxhYmxlIHBucG0tbG9jay55YW1sIHNhdGlzZmllcyB0aGUgcGFja2FnZS5qc29uIGRlcGVuZGVuY2llcyBkaXJlY3RpdmUsIGEgaGVhZGxlc3MgaW5zdGFsbGF0aW9uIGlzIHBlcmZvcm1lZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJGcm96ZW5Mb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyRnJvemVuTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGZ1bGwgVVJMIHRvIHRoZSBwYWNrYWdlJ3MgdGFyYmFsbCB0byBldmVyeSBlbnRyeSBpbiBwbnBtLWxvY2sueWFtbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsXG4gICAqL1xuICByZWFkb25seSBsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIGdlbmVyYXRlZCBsb2NrZmlsZSBuYW1lIGFmdGVyIGluc3RhbGxhdGlvbiB3aWxsIGJlIG5hbWVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGJyYW5jaCBuYW1lIHRvIGNvbXBsZXRlbHkgYXZvaWQgbWVyZ2UgY29uZmxpY3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdEJyYW5jaExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBnaXRCcmFuY2hMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBtYXRjaGVzIHRoZSBjdXJyZW50IGJyYW5jaCBuYW1lIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIG1lcmdlIGFsbCBnaXQgYnJhbmNoIGxvY2tmaWxlIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgbWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPzogYW55W107XG5cbiAgLyoqXG4gICAqIE1heCBsZW5ndGggb2YgdGhlIHBlZXIgSURzIHN1ZmZpeCBhZGRlZCB0byBkZXBlbmRlbmN5IGtleXMgaW4gdGhlIGxvY2tmaWxlLiBJZiB0aGUgc3VmZml4IGlzIGxvbmdlciwgaXQgaXMgcmVwbGFjZWQgd2l0aCBhIGhhc2guXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGVlcnNTdWZmaXhNYXhMZW5ndGhcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJzU3VmZml4TWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5ICh0cmFpbGluZyBzbGFzaCBpbmNsdWRlZCkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGUgdGhhdCBpcyB0cnVzdGVkIGZvciBTU0wgY29ubmVjdGlvbnMgdG8gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhXG4gICAqL1xuICByZWFkb25seSBjYT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIG9uZSBvciBtdWx0aXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgc2lnbmluZyBjZXJ0aWZpY2F0ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FmaWxlXG4gICAqL1xuICByZWFkb25seSBjYWZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xpZW50IGNlcnRpZmljYXRlIHRvIHBhc3Mgd2hlbiBhY2Nlc3NpbmcgdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NlcnRcbiAgICovXG4gIHJlYWRvbmx5IGNlcnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xpZW50IGtleSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBmZXRjaGluZyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgR2l0IHJlcG9zaXRvcmllcywgaWYgdGhlIGhvc3QgaXMgbGlzdGVkIGluIHRoaXMgc2V0dGluZywgcG5wbSB3aWxsIHVzZSBzaGFsbG93IGNsb25pbmcgdG8gZmV0Y2ggb25seSB0aGUgbmVlZGVkIGNvbW1pdCwgbm90IGFsbCB0aGUgaGlzdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRTaGFsbG93SG9zdHNcbiAgICovXG4gIHJlYWRvbmx5IGdpdFNoYWxsb3dIb3N0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUFMgcmVxdWVzdHMuIElmIHRoZSBIVFRQU19QUk9YWSwgaHR0cHNfcHJveHksIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgdGhlaXIgdmFsdWVzIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2h0dHBzUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcHJveHkgdG8gdXNlIGZvciBvdXRnb2luZyBodHRwIHJlcXVlc3RzLiBJZiB0aGUgSFRUUF9QUk9YWSBvciBodHRwX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0LCBwcm94eSBzZXR0aW5ncyB3aWxsIGJlIGhvbm9yZWQgYnkgdGhlIHVuZGVybHlpbmcgcmVxdWVzdCBsaWJyYXJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3h5XG4gICAqL1xuICByZWFkb25seSBwcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGludGVyZmFjZSB0byB1c2Ugd2hlbiBtYWtpbmcgY29ubmVjdGlvbnMgdG8gdGhlIG5wbSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NhbEFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIHVzZSBwZXIgb3JpZ2luIChwcm90b2NvbC9ob3N0L3BvcnQgY29tYmluYXRpb24pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21heHNvY2tldHNcbiAgICovXG4gIHJlYWRvbmx5IG1heHNvY2tldHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiBkb21haW4gZXh0ZW5zaW9ucyB0aGF0IGEgcHJveHkgc2hvdWxkIG5vdCBiZSB1c2VkIGZvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub3Byb3h5XG4gICAqL1xuICByZWFkb25seSBub3Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkbyBTU0wga2V5IHZhbGlkYXRpb24gd2hlbiBtYWtpbmcgcmVxdWVzdHMgdG8gdGhlIHJlZ2lzdHJ5IHZpYSBIVFRQUy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RTc2xcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFNzbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBIVFRQKFMpIHJlcXVlc3RzIHRvIHByb2Nlc3Mgc2ltdWx0YW5lb3VzbHkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV0d29ya0NvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRvIHJldHJ5IGlmIHBucG0gZmFpbHMgdG8gZmV0Y2ggZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyaWVzXG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJpZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBvbmVudGlhbCBmYWN0b3IgZm9yIHJldHJ5IGJhY2tvZmYuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyeUZhY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeUZhY3Rvcj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gKGJhc2UpIHRpbWVvdXQgZm9yIHJldHJ5aW5nIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlNaW50aW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJ5TWludGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gZmFsbGJhY2sgdGltZW91dCB0byBlbnN1cmUgdGhlIHJldHJ5IGZhY3RvciBkb2VzIG5vdCBtYWtlIHJlcXVlc3RzIHRvbyBsb25nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlNYXh0aW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJ5TWF4dGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBmb3IgSFRUUCByZXF1ZXN0cyB0byBjb21wbGV0ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoVGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbnkgbWlzc2luZyBub24tb3B0aW9uYWwgcGVlciBkZXBlbmRlbmNpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1dG9JbnN0YWxsUGVlcnNcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9JbnN0YWxsUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gdHJ1ZSwgcGFja2FnZXMgd2l0aCBwZWVyIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZHVwbGljYXRlZCBhZnRlciBwZWVycyByZXNvbHV0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJEZXBlbmRlbnRzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVyRGVwZW5kZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgY29tbWFuZHMgd2lsbCBmYWlsIGlmIHRoZXJlIGlzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBlZXIgZGVwZW5kZW5jeSBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RQZWVyRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RQZWVyRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBkZXBlbmRlbmNpZXMgb2YgdGhlIHJvb3Qgd29ya3NwYWNlIHByb2plY3QgYXJlIHVzZWQgdG8gcmVzb2x2ZSBwZWVyIGRlcGVuZGVuY2llcyBvZiBhbnkgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjb2xvclxuICAgKi9cbiAgcmVhZG9ubHkgY29sb3I/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yO1xuXG4gIC8qKlxuICAgKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2dsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICAgKiBodHRwczovL3BucG0uaW8vY2xpL2luc3RhbGwjLS1yZXBvcnRlcm5hbWVcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0ZXI/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyO1xuXG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgb3B0aW9uIHRoYXQgZW5hYmxlcyBiZXRhIGZlYXR1cmVzIG9mIHRoZSBDTEkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlQmV0YUNsaVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQmV0YUNsaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgdGhlIHByaW1hcnkgYmVoYXZpb3VyIG9mIHBucG0gaW5zdGFsbCBiZWNvbWVzIHRoYXQgb2YgcG5wbSBpbnN0YWxsIC1yLCBtZWFuaW5nIHRoZSBpbnN0YWxsIGlzIHBlcmZvcm1lZCBvbiBhbGwgd29ya3NwYWNlIG9yIHN1YmRpcmVjdG9yeSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWN1cnNpdmVJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSByZWN1cnNpdmVJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIHdpbGwgbm90IGluc3RhbGwgYW55IHBhY2thZ2UgdGhhdCBjbGFpbXMgdG8gbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBOb2RlIHZlcnNpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5naW5lU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBlbmdpbmVTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIG5wbSBiaW5hcnkgdGhhdCBwbnBtIHVzZXMgZm9yIHNvbWUgYWN0aW9ucywgbGlrZSBwdWJsaXNoaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25wbVBhdGhcbiAgICovXG4gIHJlYWRvbmx5IG5wbVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgc2V0dGluZyBpcyBkaXNhYmxlZCwgcG5wbSB3aWxsIG5vdCBmYWlsIGlmIGEgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlciBpcyBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi4gV2hlbiBlbmFibGVkLCBvbmx5IHRoZSBwYWNrYWdlIG5hbWUgaXMgY2hlY2tlZCAoc2luY2UgcG5wbSB2OS4yLjApLCBzbyB5b3UgY2FuIHN0aWxsIHJ1biBhbnkgdmVyc2lvbiBvZiBwbnBtIHJlZ2FyZGxlc3Mgb2YgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBucG0gd2lsbCBmYWlsIGlmIGl0cyB2ZXJzaW9uIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgYW5kIHJ1biB0aGUgdmVyc2lvbiBvZiBwbnBtIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBkZWZpbmVkIGluIHRoZSBwcm9qZWN0IHBhY2thZ2UuanNvbiBhbmQgaXRzIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVTY3JpcHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGV4ZWN1dGUgYW55IHNjcmlwdHMgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlcy4gU2NyaXB0cyBvZiB0aGUgcHJvamVjdHMgYXJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZURlcFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIHRvIGFsbG9jYXRlIHNpbXVsdGFuZW91c2x5IHRvIGJ1aWxkIG5vZGVfbW9kdWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjaGlsZENvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBjaGlsZENvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVc2UgYW5kIGNhY2hlIHRoZSByZXN1bHRzIG9mIChwcmUvcG9zdClpbnN0YWxsIGhvb2tzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVcbiAgICovXG4gIHJlYWRvbmx5IHNpZGVFZmZlY3RzQ2FjaGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPbmx5IHVzZSB0aGUgc2lkZSBlZmZlY3RzIGNhY2hlIGlmIHByZXNlbnQsIGRvIG5vdCBjcmVhdGUgaXQgZm9yIG5ldyBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGVuYWJsZSBVSUQvR0lEIHN3aXRjaGluZyB3aGVuIHJ1bm5pbmcgcGFja2FnZSBzY3JpcHRzLiBJZiBzZXQgZXhwbGljaXRseSB0byBmYWxzZSwgdGhlbiBpbnN0YWxsaW5nIGFzIGEgbm9uLXJvb3QgdXNlciB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdW5zYWZlUGVybVxuICAgKi9cbiAgcmVhZG9ubHkgdW5zYWZlUGVybT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gcGFzcyB0aHJvdWdoIHRvIE5vZGUuanMgdmlhIHRoZSBOT0RFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZU9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVPcHRpb25zPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgYWxsb3dzIHRoZSBjaGVja2luZyBvZiB0aGUgc3RhdGUgb2YgZGVwZW5kZW5jaWVzIGJlZm9yZSBydW5uaW5nIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyaWZ5RGVwc0JlZm9yZVJ1blxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5RGVwc0JlZm9yZVJ1bj86IGFueTtcblxuICAvKipcbiAgICogV2hlbiBzdHJpY3REZXBCdWlsZHMgaXMgZW5hYmxlZCwgdGhlIGluc3RhbGxhdGlvbiB3aWxsIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBpZiBhbnkgZGVwZW5kZW5jaWVzIGhhdmUgdW5yZXZpZXdlZCBidWlsZCBzY3JpcHRzIChha2EgcG9zdGluc3RhbGwgc2NyaXB0cykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0RGVwQnVpbGRzXG4gICAqL1xuICByZWFkb25seSBzdHJpY3REZXBCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggZXhhY3QgTm9kZS5qcyB2ZXJzaW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgcHJvamVjdCdzIHJ1bnRpbWUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlTm9kZVZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHVzZU5vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZS5qcyB2ZXJzaW9uIHRvIHVzZSB3aGVuIGNoZWNraW5nIGEgcGFja2FnZSdzIGVuZ2luZXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xpbmtXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgbGlua1dvcmtzcGFjZVBhY2thZ2VzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgaGFyZC1saW5raW5nIG9mIGFsbCBsb2NhbCB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIGluc3RlYWQgb2Ygc3ltbGlua2luZyB0aGVtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2luamVjdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluamVjdGVkIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgYXJlIGNvbGxlY3Rpb25zIG9mIGhhcmRsaW5rcywgd2hpY2ggZG9uJ3QgYWRkIG9yIHJlbW92ZSB0aGUgZmlsZXMgd2hlbiB0aGVpciBzb3VyY2VzIGNoYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBzeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlIGFyZSBwcmVmZXJyZWQgb3ZlciBwYWNrYWdlcyBmcm9tIHRoZSByZWdpc3RyeSwgZXZlbiBpZiB0aGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgcG5wbSBjcmVhdGVzIGEgc2luZ2xlIHBucG0tbG9jay55YW1sIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkV29ya3NwYWNlTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsaW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIGFyZSBhZGRlZCB0byBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2F2ZVdvcmtzcGFjZVByb3RvY29sXG4gICAqL1xuICByZWFkb25seSBzYXZlV29ya3NwYWNlUHJvdG9jb2w/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbDtcblxuICAvKipcbiAgICogV2hlbiBleGVjdXRpbmcgY29tbWFuZHMgcmVjdXJzaXZlbHkgaW4gYSB3b3Jrc3BhY2UsIGV4ZWN1dGUgdGhlbSBvbiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcyB3ZWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2luY2x1ZGVXb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIG5vIHdvcmtzcGFjZSBjeWNsZSB3YXJuaW5ncyB3aWxsIGJlIHByaW50ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlV29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVXb3Jrc3BhY2VDeWNsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGRpbmcgYSBuZXcgZGVwZW5kZW5jeSB0byB0aGUgcm9vdCB3b3Jrc3BhY2UgcGFja2FnZSBmYWlscywgdW5sZXNzIHRoZSAtLWlnbm9yZS13b3Jrc3BhY2Utcm9vdC1jaGVjayBvciAtdyBmbGFnIGlzIHVzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlV29ya3NwYWNlUm9vdENoZWNrXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBpbnN0YWxsYXRpb24gd2lsbCBmYWlsIGlmIHRoZSB3b3Jrc3BhY2UgaGFzIGN5Y2xlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWxsb3dXb3Jrc3BhY2VDeWNsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIHRvIHJ1biBzaW11bHRhbmVvdXNseS4gRm9yIHVubGltaXRlZCBjb25jdXJyZW5jeSB1c2UgSW5maW5pdHkuIFlvdSBjYW4gc2V0IHRoZSB2YWx1ZSB0byA8PSAwIGFuZCBpdCB3aWxsIHVzZSBhbW91bnQgb2YgQ1BVIGNvcmVzIG9mIHRoZSBob3N0IG1pbnVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcHJvdmlkZWQgbnVtYmVyIGFzOiBtYXgoMSwgKG51bWJlciBvZiBjb3JlcykgLSBhYnMod29ya3NwYWNlQ29uY3VycmVuY3kpKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN3b3Jrc3BhY2VDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHBucG0gd2lsbCBmYWlsIGlmIG5vIHBhY2thZ2VzIG1hdGNoIHRoZSBmaWx0ZXJcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmYWlsSWZOb01hdGNoXG4gICAqL1xuICByZWFkb25seSBmYWlsSWZOb01hdGNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgcG5wbSBkZXBsb3kgd2lsbCB0cnkgY3JlYXRpbmcgYSBkZWRpY2F0ZWQgbG9ja2ZpbGUgZnJvbSBhIHNoYXJlZCBsb2NrZmlsZSBmb3IgZGVwbG95bWVudC4gSWYgdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCB0aGUgbGVnYWN5IGRlcGxveSBiZWhhdmlvciB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZm9yY2VMZWdhY3lEZXBsb3lcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlTGVnYWN5RGVwbG95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2F2ZVByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZVByZWZpeD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeDtcblxuICAvKipcbiAgICogSWYgeW91IHBucG0gYWRkIGEgcGFja2FnZSBhbmQgeW91IGRvbid0IHByb3ZpZGUgYSBzcGVjaWZpYyB2ZXJzaW9uLCB0aGVuIGl0IHdpbGwgaW5zdGFsbCB0aGUgcGFja2FnZSBhdCB0aGUgdmVyc2lvbiByZWdpc3RlcmVkIHVuZGVyIHRoZSB0YWcgZnJvbSB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdGFnXG4gICAqL1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gZGlyZWN0b3J5IHRvIHN0b3JlIGdsb2JhbCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxEaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgdGhlIGJpbiBmaWxlcyBvZiBnbG9iYWxseSBpbnN0YWxsZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsQmluRGlyXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxCaW5EaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSBhbGwgdGhlIHBhY2thZ2VzIGFyZSBzYXZlZCBvbiB0aGUgZGlzay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdGF0ZURpclxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgY2FjaGUgKHBhY2thZ2UgbWV0YWRhdGEgYW5kIGRseCkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FjaGVEaXJcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFsbCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gdG8gc3RkZXJyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VzZVN0ZGVyclxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgY2hlY2sgZm9yIHVwZGF0ZXMgdG8gdGhlIGluc3RhbGxlZCBwYWNrYWdlcyBhbmQgbm90aWZ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZU5vdGlmaWVyXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVOb3RpZmllcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzeW1saW5rcyB0byBleGVjdXRhYmxlcyBpbiBub2RlX21vZHVsZXMvLmJpbiBpbnN0ZWFkIG9mIGNvbW1hbmQgc2hpbXMuIFRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIG9uIFdpbmRvd3MsIHdoZXJlIG9ubHkgY29tbWFuZCBzaGltcyB3b3JrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIER1cmluZyBpbnN0YWxsYXRpb24gdGhlIGRlcGVuZGVuY2llcyBvZiBzb21lIHBhY2thZ2VzIGFyZSBhdXRvbWF0aWNhbGx5IHBhdGNoZWQuIElmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhpcywgc2V0IHRoaXMgY29uZmlnIHRvIGZhbHNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZUNvbXBhdGliaWxpdHlEYlxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ29tcGF0aWJpbGl0eURiPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgcG5wbSByZXNvbHZlcyBkZXBlbmRlbmNpZXMsIFNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjcmVzb2x1dGlvbm1vZGVcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXNvbHV0aW9uTW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x1dGlvbk1vZGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIGlmIHRoZSByZWdpc3RyeSB0aGF0IHlvdSBhcmUgdXNpbmcgcmV0dXJucyB0aGUgXCJ0aW1lXCIgZmllbGQgaW4gdGhlIGFiYnJldmlhdGVkIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGRcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCB0aGUgTk9ERV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgaW4gdGhlIGNvbW1hbmQgc2hpbXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXh0ZW5kTm9kZVBhdGhcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZE5vZGVQYXRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBkZXBsb3lpbmcgYSBwYWNrYWdlIG9yIGluc3RhbGxpbmcgYSBsb2NhbCBwYWNrYWdlLCBhbGwgZmlsZXMgb2YgdGhlIHBhY2thZ2UgYXJlIGNvcGllZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZXBsb3lBbGxGaWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95QWxsRmlsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBzeW1saW5rZWQgdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpcmVjdG9yeSBvZiB0aGUgd29ya3NwYWNlIHdpbGwgbm90IGJlIHN5bWxpbmtlZCB0byBzdWJwcm9qZWN0IG5vZGVfbW9kdWxlcyBkaXJlY3Rvcmllcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVEaXJlY3REZXBzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVEaXJlY3REZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIHNldHRpbmcgaXMgZW5hYmxlZCwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGluamVjdGVkIHdpbGwgYmUgc3ltbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSB3aGVuZXZlciBwb3NzaWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVJbmplY3RlZERlcHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZUluamVjdGVkRGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBmYXN0IGNoZWNrIHdpbGwgYmUgcGVyZm9ybWVkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGluc3RhbGxhdGlvbi4gVGhpcyB3YXkgYSByZXBlYXQgaW5zdGFsbCBvciBhbiBpbnN0YWxsIG9uIGEgcHJvamVjdCB3aXRoIGV2ZXJ5dGhpbmcgdXAtdG8tZGF0ZSBiZWNvbWVzIGEgbG90IGZhc3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvcHRpbWlzdGljUmVwZWF0SW5zdGFsbFxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW1pc3RpY1JlcGVhdEluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjdXJyZW50IGJyYW5jaCBpcyB5b3VyIHB1Ymxpc2ggYnJhbmNoLCBjbGVhbiwgYW5kIHVwLXRvLWRhdGUgd2l0aCByZW1vdGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0Q2hlY2tzXG4gICAqL1xuICByZWFkb25seSBnaXRDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVTkRPQ1VNRU5URUQuIFdoZW4gYHRydWVgLCBgcG5wbSBwdWJsaXNoYCB3cml0ZXMgdGhlIFJFQURNRSBmaWxlJ3MgY29udGVudCBpbnRvIHRoZSBwdWJsaXNoZWQgcGFja2FnZS5qc29uICh0aGUgYHJlYWRtZWAgZmllbGQpLCBzbyByZWdpc3RyaWVzIHN1Y2ggYXMgbnBtanMuY29tIHJlbmRlciB0aGUgcGFja2FnZSdzIFJFQURNRS4gQWRkZWQgaW4gcG5wbSA2LjI4LjA7IHBucG0gZG9lcyBub3QgZW1iZWQgdGhlIFJFQURNRSB1bmxlc3MgdGhpcyBpcyBlbmFibGVkLiBJdCBhbHNvIHdvbid0IG92ZXJyaWRlIGEgYHJlYWRtZWAgZmllbGQgYWxyZWFkeSBzZXQgaW4gdGhlIHBhY2thZ2UuanNvblxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VtYmVkUmVhZG1lXG4gICAqL1xuICByZWFkb25seSBlbWJlZFJlYWRtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IGJyYW5jaCBvZiB0aGUgcmVwb3NpdG9yeSB3aGljaCBpcyB1c2VkIGZvciBwdWJsaXNoaW5nIHRoZSBsYXRlc3QgY2hhbmdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaXNoQnJhbmNoXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoQnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHB1Ymxpc2hpbmcgZnJvbSBhIHN1cHBvcnRlZCBjbG91ZCBDSS9DRCBzeXN0ZW0sIHRoZSBwYWNrYWdlIHdpbGwgYmUgcHVibGljbHkgbGlua2VkIHRvIHdoZXJlIGl0IHdhcyBidWlsdCBhbmQgcHVibGlzaGVkIGZyb20uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJvdmVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmVuYW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbG9jYWwgcG5wbWZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSBnbG9iYWwgcG5wbWZpbGUuIEEgZ2xvYmFsIHBucG1maWxlIGlzIHVzZWQgYnkgYWxsIHByb2plY3RzIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsUG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAucG5wbWZpbGUuY2pzIHdpbGwgYmUgaWdub3JlZC4gVXNlZnVsIHRvZ2V0aGVyIHdpdGggLS1pZ25vcmUtc2NyaXB0cyB3aGVuIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIHNjcmlwdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQbnBtZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBnZW5lcmF0ZWQgcGF0Y2ggZmlsZSB3aWxsIGJlIHNhdmVkIHRvIHRoaXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB3aWxsIHJ1biBhbnkgcHJlL3Bvc3Qgc2NyaXB0cyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZVByZVBvc3RTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcmVQb3N0U2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB0byB1c2UgZm9yIHNjcmlwdHMgcnVuIHdpdGggdGhlIHBucG0gcnVuIGNvbW1hbmQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2NyaXB0U2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFNoZWxsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCB1c2UgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGEgYmFzaC1saWtlIHNoZWxsIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGVsbEVtdWxhdG9yXG4gICAqL1xuICByZWFkb25seSBzaGVsbEVtdWxhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2F2ZWQgZGVwZW5kZW5jaWVzIHdpbGwgYmUgY29uZmlndXJlZCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gcmF0aGVyIHRoYW4gdXNpbmcgcG5wbSdzIGRlZmF1bHQgc2VtdmVyIHJhbmdlIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVFeGFjdFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZUV4YWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzcyBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGBtaW5pbXVtUmVsZWFzZUFnZWAgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlciBgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlYC4gVGhlIGV4Y2x1c2lvbiB3b3JrcyBieSBgcGFja2FnZSBuYW1lYCBhbmQgYXBwbGllcyB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBwbnBtIGJlaGF2ZXMgd2hlbiBubyB2ZXJzaW9uIG9mIGEgZGVwZW5kZW5jeSBzYXRpc2ZpZXMgdGhlIG1pbmltdW1SZWxlYXNlQWdlIGNvbnN0cmFpbnQgd2l0aGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZXN0cmljdFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJ5cGFzcyBzdGFsZW5lc3MgY2hlY2tzIGZvciBjYWNoZWQgZGF0YS4gTWlzc2luZyBkYXRhIHdpbGwgc3RpbGwgYmUgcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJPZmZsaW5lXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJPZmZsaW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeTtcblxuICAvKipcbiAgICogWW91IGNhbiBub3cgbGlzdCBvbmUgb3IgbW9yZSBzcGVjaWZpYyBwYWNrYWdlcyBvciB2ZXJzaW9ucyB0aGF0IHBucG0gc2hvdWxkIGFsbG93IHRvIGluc3RhbGwsIGV2ZW4gaWYgdGhvc2UgcGFja2FnZXMgZG9uJ3Qgc2F0aXNmeSB0aGUgdHJ1c3QgcG9saWN5IHJlcXVpcmVtZW50LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5RXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3lFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIHBhY2thZ2UgbWF0Y2hlcnMgdG8gZXhwbGljaXRseSBhbGxvdyAoYHRydWVgKSBvciBkaXNhbGxvdyAoYGZhbHNlYCkgc2NyaXB0IGV4ZWN1dGlvbi4gVGhpcyBmaWVsZCByZXBsYWNlcyBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYCBhbmQgYGlnbm9yZWRCdWlsdERlcGVuZGVuY2llc2AgKHdoaWNoIGFyZSBhbHNvIGRlcHJlY2F0ZWQgYnkgdGhpcyBuZXcgc2V0dGluZyksIHByb3ZpZGluZyBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QnVpbGRzPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBpdCBwcmV2ZW50cyB0aGUgcmVzb2x1dGlvbiBvZiBleG90aWMgcHJvdG9jb2xzIChsaWtlIGdpdCtzc2g6IG9yIGRpcmVjdCBodHRwczogdGFyYmFsbHMpIGluIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzLiBPbmx5IGRpcmVjdCBkZXBlbmRlbmNpZXMgYXJlIGFsbG93ZWQgdG8gdXNlIGV4b3RpYyBzb3VyY2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Jsb2NrRXhvdGljU3ViZGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgYmxvY2tFeG90aWNTdWJkZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGlnbm9yaW5nIHRoZSB0cnVzdCBwb2xpY3kgY2hlY2sgZm9yIHBhY2thZ2VzIHB1Ymxpc2hlZCBtb3JlIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyBhZ28uIFRoaXMgaXMgdXNlZnVsIHdoZW4gZW5hYmxpbmcgc3RyaWN0IHRydXN0IHBvbGljaWVzLCBhcyBpdCBhbGxvd3Mgb2xkZXIgdmVyc2lvbnMgb2YgcGFja2FnZXMgKHdoaWNoIG1heSBsYWNrIGEgcHJvY2VzcyBmb3IgcHVibGlzaGluZyB3aXRoIHNpZ25hdHVyZXMgb3IgcHJvdmVuYW5jZSkgdG8gYmUgaW5zdGFsbGVkIHdpdGhvdXQgbWFudWFsIGV4Y2x1c2lvbiwgYXNzdW1pbmcgdGhleSBhcmUgc2FmZSBkdWUgdG8gdGhlaXIgYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5SWdub3JlQWZ0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5SWdub3JlQWZ0ZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBsZXZlbCBvZiBpc3N1ZXMgcmVwb3J0ZWQgYnkgYHBucG0gYXVkaXRgLiBXaGVuIHNldCB0byAnbG93JywgYWxsIHZ1bG5lcmFiaWxpdGllcyBhcmUgcmVwb3J0ZWQuIFdoZW4gc2V0IHRvICdtb2RlcmF0ZScsICdoaWdoJywgb3IgJ2NyaXRpY2FsJywgb25seSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB0aGF0IHNldmVyaXR5IG9yIGhpZ2hlciBhcmUgcmVwb3J0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRMZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRMZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRMZXZlbDtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwZWVyIGRlcGVuZGVuY3kgc3VmZml4ZXMgdXNlIHZlcnNpb24tb25seSBpZGVudGlmaWVycyAoYG5hbWVAdmVyc2lvbmApIGluc3RlYWQgb2YgZnVsbCBkZXAgcGF0aHMsIGVsaW1pbmF0aW5nIG5lc3RlZCBzdWZmaXhlcyBsaWtlIGAoZm9vQDEuMC4wKGJhckAyLjAuMCkpYC4gVGhpcyBkcmFtYXRpY2FsbHkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhY2thZ2UgaW5zdGFuY2VzIGluIHByb2plY3RzIHdpdGggbWFueSByZWN1cnNpdmUgcGVlciBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlcnNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgcmVnaXN0cnkgYXV0aGVudGljYXRpb24gdG9rZW5zLiBCeSBkZWZhdWx0LCBwbnBtIHJlYWRzIGF1dGggdG9rZW5zIGZyb20gfi8ubnBtcmMgYXMgYSBmYWxsYmFjayBmb3IgcmVnaXN0cnkgYXV0aGVudGljYXRpb24uIFVzZSB0aGlzIHNldHRpbmcgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgZmlsZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25wbXJjQXV0aEZpbGVcbiAgICovXG4gIHJlYWRvbmx5IG5wbXJjQXV0aEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBwbnBtIHNraXBzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIGNoZWNrIGZvciBhIHBhY2thZ2Ugd2hvc2UgcmVnaXN0cnkgbWV0YWRhdGEgZG9lcyBub3QgaW5jbHVkZSB0aGUgdGltZSBmaWVsZCAoc29tZSBwcml2YXRlIHJlZ2lzdHJpZXMgYW5kIG1pcnJvcnMgb21pdCBpdCkuIFNldCB0byBgZmFsc2VgIHRvIGZhaWwgcmVzb2x1dGlvbiBpbiB0aGF0IGNhc2UgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgcmVnaXN0cmllcyBmb3Igc2NvcGVkIHBhY2thZ2VzIGluIGBwbnBtLXdvcmtzcGFjZS55YW1sYC4gVGhlIGBkZWZhdWx0YCBrZXkgc2V0cyB0aGUgbWFpbiByZWdpc3RyeSAoZXF1aXZhbGVudCB0byB0aGUgYHJlZ2lzdHJ5YCBgLm5wbXJjYCBzZXR0aW5nKS4gU2NvcGVkIGtleXMgY29uZmlndXJlIHJlZ2lzdHJpZXMgZm9yIHNwZWNpZmljIHBhY2thZ2Ugc2NvcGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJpZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIHBvcHVsYXRlcyB0aGUgdmlydHVhbCBzdG9yZSB3aXRob3V0IGNyZWF0aW5nIGltcG9ydGVyIHN5bWxpbmtzLCBob2lzdGluZywgYmluIGxpbmtzLCBvciBydW5uaW5nIGxpZmVjeWNsZSBzY3JpcHRzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlLXBvcHVsYXRpbmcgYSBzdG9yZSAoZS5nLiwgaW4gTml4IGJ1aWxkcykgd2l0aG91dCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBwcm9qZWN0LWxldmVsIGFydGlmYWN0cy4gcG5wbSBmZXRjaCB1c2VzIHRoaXMgbW9kZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZU9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxTdG9yZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BtT25GYWlsXG4gICAqL1xuICByZWFkb25seSBwbU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNydW50aW1lT25GYWlsXG4gICAqL1xuICByZWFkb25seSBydW50aW1lT25GYWlsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgY3VzdG9tIE5vZGUuanMgZG93bmxvYWQgbWlycm9ycyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBrZXlzIGFyZSByZWxlYXNlIGNoYW5uZWxzIChgcmVsZWFzZWAsIGByY2AsIGBuaWdodGx5YCwgYHY4LWNhbmFyeWAsIGV0Yy4pIGFuZCB0aGUgdmFsdWVzIGFyZSBiYXNlIFVSTHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZURvd25sb2FkTWlycm9yc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZURvd25sb2FkTWlycm9ycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbmV3IHRydXN0TG9ja2ZpbGUgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIHBucG0gaW5zdGFsbCByZS1hcHBsaWVzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIC8gYHRydXN0UG9saWN5OiAnbm8tZG93bmdyYWRlJ2AgY2hlY2tzIHRvIGV2ZXJ5IGVudHJ5IGluIHRoZSBsb2FkZWQgbG9ja2ZpbGUuIFdoZW4gdHJ1ZSwgdGhlIGluc3RhbGwgdHJlYXRzIHRoZSBsb2NrZmlsZSBhcyBhbHJlYWR5LXRydXN0ZWQgYW5kIHNraXBzIHRoZSB2ZXJpZmljYXRpb24gcGFzcyDigJQgdXNlZnVsIGZvciBjbG9zZWQtc291cmNlIHByb2plY3RzIHdoZXJlIGV2ZXJ5IGNvbW1pdCBjb21lcyBmcm9tIGEgdHJ1c3RlZCBhdXRob3IuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLCBzbyB2ZXJpZmljYXRpb24gc3RheXMgb24gYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSB0cnVzdExvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdGluZ0xpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RpbmdMaW1pdHM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gICAgJ2NhdGFsb2cnOiAoKG9iai5jYXRhbG9nKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2NhdGFsb2dzJzogKChvYmouY2F0YWxvZ3MpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5jYXRhbG9ncykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06ICgoaVsxXSkgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMoaVsxXSkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSkgfSksIHt9KSksXG4gICAgJ2NhdGFsb2dNb2RlJzogb2JqLmNhdGFsb2dNb2RlLFxuICAgICdjbGVhbnVwVW51c2VkQ2F0YWxvZ3MnOiBvYmouY2xlYW51cFVudXNlZENhdGFsb2dzLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXMnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnb3ZlcnJpZGVzJzogb2JqLm92ZXJyaWRlcyxcbiAgICAncGFja2FnZUV4dGVuc2lvbnMnOiBvYmoucGFja2FnZUV4dGVuc2lvbnMsXG4gICAgJ3BlZXJEZXBlbmRlbmN5UnVsZXMnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzKG9iai5wZWVyRGVwZW5kZW5jeVJ1bGVzKSxcbiAgICAnbmV2ZXJCdWlsdERlcGVuZGVuY2llcyc6IG9iai5uZXZlckJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcyc6IG9iai5kYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUsXG4gICAgJ2lnbm9yZWRCdWlsdERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zJzogKChvYmouYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdwYXRjaGVkRGVwZW5kZW5jaWVzJzogKChvYmoucGF0Y2hlZERlcGVuZGVuY2llcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLnBhdGNoZWREZXBlbmRlbmNpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdhbGxvd1VudXNlZFBhdGNoZXMnOiBvYmouYWxsb3dVbnVzZWRQYXRjaGVzLFxuICAgICdhbGxvd05vbkFwcGxpZWRQYXRjaGVzJzogb2JqLmFsbG93Tm9uQXBwbGllZFBhdGNoZXMsXG4gICAgJ2lnbm9yZVBhdGNoRmFpbHVyZXMnOiBvYmouaWdub3JlUGF0Y2hGYWlsdXJlcyxcbiAgICAndXBkYXRlQ29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iai51cGRhdGVDb25maWcpLFxuICAgICdjb25maWdEZXBlbmRlbmNpZXMnOiBvYmouY29uZmlnRGVwZW5kZW5jaWVzLFxuICAgICdhdWRpdENvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iai5hdWRpdENvbmZpZyksXG4gICAgJ3JlcXVpcmVkU2NyaXB0cyc6IG9iai5yZXF1aXJlZFNjcmlwdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmouc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyksXG4gICAgJ2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdleGVjdXRpb25FbnYnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqLmV4ZWN1dGlvbkVudiksXG4gICAgJ2hvaXN0Jzogb2JqLmhvaXN0LFxuICAgICdob2lzdFdvcmtzcGFjZVBhY2thZ2VzJzogb2JqLmhvaXN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ2hvaXN0UGF0dGVybic6IG9iai5ob2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwdWJsaWNIb2lzdFBhdHRlcm4nOiBvYmoucHVibGljSG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAnc2hhbWVmdWxseUhvaXN0Jzogb2JqLnNoYW1lZnVsbHlIb2lzdCxcbiAgICAnbW9kdWxlc0Rpcic6IG9iai5tb2R1bGVzRGlyLFxuICAgICdub2RlTGlua2VyJzogb2JqLm5vZGVMaW5rZXIsXG4gICAgJ3N5bWxpbmsnOiBvYmouc3ltbGluayxcbiAgICAnZW5hYmxlTW9kdWxlc0Rpcic6IG9iai5lbmFibGVNb2R1bGVzRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXInOiBvYmoudmlydHVhbFN0b3JlRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGgnOiBvYmoudmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoLFxuICAgICdwYWNrYWdlSW1wb3J0TWV0aG9kJzogb2JqLnBhY2thZ2VJbXBvcnRNZXRob2QsXG4gICAgJ21vZHVsZXNDYWNoZU1heEFnZSc6IG9iai5tb2R1bGVzQ2FjaGVNYXhBZ2UsXG4gICAgJ2RseENhY2hlTWF4QWdlJzogb2JqLmRseENhY2hlTWF4QWdlLFxuICAgICdzdG9yZURpcic6IG9iai5zdG9yZURpcixcbiAgICAndmVyaWZ5U3RvcmVJbnRlZ3JpdHknOiBvYmoudmVyaWZ5U3RvcmVJbnRlZ3JpdHksXG4gICAgJ3N0cmljdFN0b3JlUGtnQ29udGVudENoZWNrJzogb2JqLnN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrLFxuICAgICdlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmUnOiBvYmouZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlLFxuICAgICdsb2NrZmlsZSc6IG9iai5sb2NrZmlsZSxcbiAgICAncHJlZmVyRnJvemVuTG9ja2ZpbGUnOiBvYmoucHJlZmVyRnJvemVuTG9ja2ZpbGUsXG4gICAgJ2xvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwnOiBvYmoubG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybCxcbiAgICAnZ2l0QnJhbmNoTG9ja2ZpbGUnOiBvYmouZ2l0QnJhbmNoTG9ja2ZpbGUsXG4gICAgJ21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybic6IG9iai5tZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwZWVyc1N1ZmZpeE1heExlbmd0aCc6IG9iai5wZWVyc1N1ZmZpeE1heExlbmd0aCxcbiAgICAncmVnaXN0cnknOiBvYmoucmVnaXN0cnksXG4gICAgJ2NhJzogb2JqLmNhLFxuICAgICdjYWZpbGUnOiBvYmouY2FmaWxlLFxuICAgICdjZXJ0Jzogb2JqLmNlcnQsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ2dpdFNoYWxsb3dIb3N0cyc6IG9iai5naXRTaGFsbG93SG9zdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdodHRwc1Byb3h5Jzogb2JqLmh0dHBzUHJveHksXG4gICAgJ3Byb3h5Jzogb2JqLnByb3h5LFxuICAgICdsb2NhbEFkZHJlc3MnOiBvYmoubG9jYWxBZGRyZXNzLFxuICAgICdtYXhzb2NrZXRzJzogb2JqLm1heHNvY2tldHMsXG4gICAgJ25vcHJveHknOiBvYmoubm9wcm94eSxcbiAgICAnc3RyaWN0U3NsJzogb2JqLnN0cmljdFNzbCxcbiAgICAnbmV0d29ya0NvbmN1cnJlbmN5Jzogb2JqLm5ldHdvcmtDb25jdXJyZW5jeSxcbiAgICAnZmV0Y2hSZXRyaWVzJzogb2JqLmZldGNoUmV0cmllcyxcbiAgICAnZmV0Y2hSZXRyeUZhY3Rvcic6IG9iai5mZXRjaFJldHJ5RmFjdG9yLFxuICAgICdmZXRjaFJldHJ5TWludGltZW91dCc6IG9iai5mZXRjaFJldHJ5TWludGltZW91dCxcbiAgICAnZmV0Y2hSZXRyeU1heHRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1heHRpbWVvdXQsXG4gICAgJ2ZldGNoVGltZW91dCc6IG9iai5mZXRjaFRpbWVvdXQsXG4gICAgJ2F1dG9JbnN0YWxsUGVlcnMnOiBvYmouYXV0b0luc3RhbGxQZWVycyxcbiAgICAnZGVkdXBlUGVlckRlcGVuZGVudHMnOiBvYmouZGVkdXBlUGVlckRlcGVuZGVudHMsXG4gICAgJ3N0cmljdFBlZXJEZXBlbmRlbmNpZXMnOiBvYmouc3RyaWN0UGVlckRlcGVuZGVuY2llcyxcbiAgICAncmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QnOiBvYmoucmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QsXG4gICAgJ2NvbG9yJzogb2JqLmNvbG9yLFxuICAgICdsb2dsZXZlbCc6IG9iai5sb2dsZXZlbCxcbiAgICAncmVwb3J0ZXInOiBvYmoucmVwb3J0ZXIsXG4gICAgJ3VzZUJldGFDbGknOiBvYmoudXNlQmV0YUNsaSxcbiAgICAncmVjdXJzaXZlSW5zdGFsbCc6IG9iai5yZWN1cnNpdmVJbnN0YWxsLFxuICAgICdlbmdpbmVTdHJpY3QnOiBvYmouZW5naW5lU3RyaWN0LFxuICAgICducG1QYXRoJzogb2JqLm5wbVBhdGgsXG4gICAgJ3BhY2thZ2VNYW5hZ2VyU3RyaWN0Jzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0LFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb24nOiBvYmoucGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uLFxuICAgICdtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zJzogb2JqLm1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnMsXG4gICAgJ2lnbm9yZVNjcmlwdHMnOiBvYmouaWdub3JlU2NyaXB0cyxcbiAgICAnaWdub3JlRGVwU2NyaXB0cyc6IG9iai5pZ25vcmVEZXBTY3JpcHRzLFxuICAgICdjaGlsZENvbmN1cnJlbmN5Jzogb2JqLmNoaWxkQ29uY3VycmVuY3ksXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGUnOiBvYmouc2lkZUVmZmVjdHNDYWNoZSxcbiAgICAnc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5Jzogb2JqLnNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSxcbiAgICAndW5zYWZlUGVybSc6IG9iai51bnNhZmVQZXJtLFxuICAgICdub2RlT3B0aW9ucyc6IG9iai5ub2RlT3B0aW9ucyxcbiAgICAndmVyaWZ5RGVwc0JlZm9yZVJ1bic6IG9iai52ZXJpZnlEZXBzQmVmb3JlUnVuLFxuICAgICdzdHJpY3REZXBCdWlsZHMnOiBvYmouc3RyaWN0RGVwQnVpbGRzLFxuICAgICd1c2VOb2RlVmVyc2lvbic6IG9iai51c2VOb2RlVmVyc2lvbixcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gICAgJ2xpbmtXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5saW5rV29ya3NwYWNlUGFja2FnZXM/LnZhbHVlLFxuICAgICdpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5pbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cyc6IG9iai5zeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPy5tYXAoeSA9PiB5KSxcbiAgICAncHJlZmVyV29ya3NwYWNlUGFja2FnZXMnOiBvYmoucHJlZmVyV29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlJzogb2JqLnNoYXJlZFdvcmtzcGFjZUxvY2tmaWxlLFxuICAgICdzYXZlV29ya3NwYWNlUHJvdG9jb2wnOiBvYmouc2F2ZVdvcmtzcGFjZVByb3RvY29sPy52YWx1ZSxcbiAgICAnaW5jbHVkZVdvcmtzcGFjZVJvb3QnOiBvYmouaW5jbHVkZVdvcmtzcGFjZVJvb3QsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZUN5Y2xlcyc6IG9iai5pZ25vcmVXb3Jrc3BhY2VDeWNsZXMsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZVJvb3RDaGVjayc6IG9iai5pZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2ssXG4gICAgJ2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzJzogb2JqLmRpc2FsbG93V29ya3NwYWNlQ3ljbGVzLFxuICAgICd3b3Jrc3BhY2VDb25jdXJyZW5jeSc6IG9iai53b3Jrc3BhY2VDb25jdXJyZW5jeSxcbiAgICAnZmFpbElmTm9NYXRjaCc6IG9iai5mYWlsSWZOb01hdGNoLFxuICAgICdmb3JjZUxlZ2FjeURlcGxveSc6IG9iai5mb3JjZUxlZ2FjeURlcGxveSxcbiAgICAnc2F2ZVByZWZpeCc6IG9iai5zYXZlUHJlZml4LFxuICAgICd0YWcnOiBvYmoudGFnLFxuICAgICdnbG9iYWxEaXInOiBvYmouZ2xvYmFsRGlyLFxuICAgICdnbG9iYWxCaW5EaXInOiBvYmouZ2xvYmFsQmluRGlyLFxuICAgICdzdGF0ZURpcic6IG9iai5zdGF0ZURpcixcbiAgICAnY2FjaGVEaXInOiBvYmouY2FjaGVEaXIsXG4gICAgJ3VzZVN0ZGVycic6IG9iai51c2VTdGRlcnIsXG4gICAgJ3VwZGF0ZU5vdGlmaWVyJzogb2JqLnVwZGF0ZU5vdGlmaWVyLFxuICAgICdwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcyc6IG9iai5wcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcyxcbiAgICAnaWdub3JlQ29tcGF0aWJpbGl0eURiJzogb2JqLmlnbm9yZUNvbXBhdGliaWxpdHlEYixcbiAgICAncmVzb2x1dGlvbk1vZGUnOiBvYmoucmVzb2x1dGlvbk1vZGUsXG4gICAgJ3JlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQnOiBvYmoucmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZCxcbiAgICAnZXh0ZW5kTm9kZVBhdGgnOiBvYmouZXh0ZW5kTm9kZVBhdGgsXG4gICAgJ2RlcGxveUFsbEZpbGVzJzogb2JqLmRlcGxveUFsbEZpbGVzLFxuICAgICdkZWR1cGVEaXJlY3REZXBzJzogb2JqLmRlZHVwZURpcmVjdERlcHMsXG4gICAgJ2RlZHVwZUluamVjdGVkRGVwcyc6IG9iai5kZWR1cGVJbmplY3RlZERlcHMsXG4gICAgJ29wdGltaXN0aWNSZXBlYXRJbnN0YWxsJzogb2JqLm9wdGltaXN0aWNSZXBlYXRJbnN0YWxsLFxuICAgICdnaXRDaGVja3MnOiBvYmouZ2l0Q2hlY2tzLFxuICAgICdlbWJlZFJlYWRtZSc6IG9iai5lbWJlZFJlYWRtZSxcbiAgICAncHVibGlzaEJyYW5jaCc6IG9iai5wdWJsaXNoQnJhbmNoLFxuICAgICdwcm92ZW5hbmNlJzogb2JqLnByb3ZlbmFuY2UsXG4gICAgJ3BucG1maWxlJzogb2JqLnBucG1maWxlLFxuICAgICdnbG9iYWxQbnBtZmlsZSc6IG9iai5nbG9iYWxQbnBtZmlsZSxcbiAgICAnaWdub3JlUG5wbWZpbGUnOiBvYmouaWdub3JlUG5wbWZpbGUsXG4gICAgJ3BhdGNoZXNEaXInOiBvYmoucGF0Y2hlc0RpcixcbiAgICAnZW5hYmxlUHJlUG9zdFNjcmlwdHMnOiBvYmouZW5hYmxlUHJlUG9zdFNjcmlwdHMsXG4gICAgJ3NjcmlwdFNoZWxsJzogb2JqLnNjcmlwdFNoZWxsLFxuICAgICdzaGVsbEVtdWxhdG9yJzogb2JqLnNoZWxsRW11bGF0b3IsXG4gICAgJ3NhdmVFeGFjdCc6IG9iai5zYXZlRXhhY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VTdHJpY3QnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VTdHJpY3QsXG4gICAgJ3ByZWZlck9mZmxpbmUnOiBvYmoucHJlZmVyT2ZmbGluZSxcbiAgICAndHJ1c3RQb2xpY3knOiBvYmoudHJ1c3RQb2xpY3ksXG4gICAgJ3RydXN0UG9saWN5RXhjbHVkZSc6IG9iai50cnVzdFBvbGljeUV4Y2x1ZGU/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd0J1aWxkcyc6IG9iai5hbGxvd0J1aWxkcyxcbiAgICAnYmxvY2tFeG90aWNTdWJkZXBzJzogb2JqLmJsb2NrRXhvdGljU3ViZGVwcyxcbiAgICAndHJ1c3RQb2xpY3lJZ25vcmVBZnRlcic6IG9iai50cnVzdFBvbGljeUlnbm9yZUFmdGVyLFxuICAgICdhdWRpdExldmVsJzogb2JqLmF1ZGl0TGV2ZWwsXG4gICAgJ2RlZHVwZVBlZXJzJzogb2JqLmRlZHVwZVBlZXJzLFxuICAgICducG1yY0F1dGhGaWxlJzogb2JqLm5wbXJjQXV0aEZpbGUsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZSxcbiAgICAncmVnaXN0cmllcyc6ICgob2JqLnJlZ2lzdHJpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5yZWdpc3RyaWVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndmlydHVhbFN0b3JlT25seSc6IG9iai52aXJ0dWFsU3RvcmVPbmx5LFxuICAgICdwbU9uRmFpbCc6IG9iai5wbU9uRmFpbCxcbiAgICAncnVudGltZU9uRmFpbCc6IG9iai5ydW50aW1lT25GYWlsLFxuICAgICdub2RlRG93bmxvYWRNaXJyb3JzJzogKChvYmoubm9kZURvd25sb2FkTWlycm9ycykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICd0cnVzdExvY2tmaWxlJzogb2JqLnRydXN0TG9ja2ZpbGUsXG4gICAgJ2hvaXN0aW5nTGltaXRzJzogb2JqLmhvaXN0aW5nTGltaXRzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ29udHJvbGxpbmcgaWYgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNhdGFsb2dcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZSB7XG4gIC8qKiBzdHJpY3QgKi9cbiAgU1RSSUNUID0gXCJzdHJpY3RcIixcbiAgLyoqIHByZWZlciAqL1xuICBQUkVGRVIgPSBcInByZWZlclwiLFxuICAvKiogbWFudWFsICovXG4gIE1BTlVBTCA9IFwibWFudWFsXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMge1xuICAvKipcbiAgICogcG5wbSB3aWxsIG5vdCBwcmludCB3YXJuaW5ncyBhYm91dCBtaXNzaW5nIHBlZXIgZGVwZW5kZW5jaWVzIGZyb20gdGhpcyBsaXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNpZ25vcmVNaXNzaW5nXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVNaXNzaW5nPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubWV0IHBlZXIgZGVwZW5kZW5jeSB3YXJuaW5ncyB3aWxsIG5vdCBiZSBwcmludGVkIGZvciBwZWVyIGRlcGVuZGVuY2llcyBvZiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNhbGxvd2VkVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRWZXJzaW9ucz86IGFueTtcblxuICAvKipcbiAgICogQW55IHBlZXIgZGVwZW5kZW5jeSBtYXRjaGluZyB0aGUgcGF0dGVybiB3aWxsIGJlIHJlc29sdmVkIGZyb20gYW55IHZlcnNpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHJhbmdlIHNwZWNpZmllZCBpbiBcInBlZXJEZXBlbmRlbmNpZXNcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dBbnlcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QW55Pzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZU1pc3NpbmcnOiBvYmouaWdub3JlTWlzc2luZz8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93ZWRWZXJzaW9ucyc6IG9iai5hbGxvd2VkVmVyc2lvbnMsXG4gICAgJ2FsbG93QW55Jzogb2JqLmFsbG93QW55Py5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHJ1bm5pbmcgXCJwbnBtIG91dGRhdGVkXCIgb3IgXCJwbnBtIHVwZGF0ZSAtLWxhdGVzdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnI2lnbm9yZURlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZURlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQ1ZFIElEcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUN2ZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN2ZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIEdIU0EgQ29kZXMgdGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgXCJwbnBtIGF1ZGl0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyNpZ25vcmVHaHNhc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlR2hzYXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlQ3Zlcyc6IG9iai5pZ25vcmVDdmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlR2hzYXMnOiBvYmouaWdub3JlR2hzYXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogU3BlY2lmaWVzIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIHlvdSdkIGxpa2UgdG8gaW5zdGFsbCBvcHRpb25hbCBkZXBlbmRlbmNpZXMsIGV2ZW4gaWYgdGhleSBkb24ndCBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0gcnVubmluZyB0aGUgaW5zdGFsbC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNvc1xuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjY3B1XG4gICAqL1xuICByZWFkb25seSBjcHU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjbGliY1xuICAgKi9cbiAgcmVhZG9ubHkgbGliYz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcyc6IG9iai5vcz8ubWFwKHkgPT4geSksXG4gICAgJ2NwdSc6IG9iai5jcHU/Lm1hcCh5ID0+IHkpLFxuICAgICdsaWJjJzogb2JqLmxpYmM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogRGVmaW5lcyB3aGF0IGxpbmtlciBzaG91bGQgYmUgdXNlZCBmb3IgaW5zdGFsbGluZyBOb2RlIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlciB7XG4gIC8qKiBpc29sYXRlZCAqL1xuICBJU09MQVRFRCA9IFwiaXNvbGF0ZWRcIixcbiAgLyoqIGhvaXN0ZWQgKi9cbiAgSE9JU1RFRCA9IFwiaG9pc3RlZFwiLFxuICAvKiogcG5wICovXG4gIFBOUCA9IFwicG5wXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHdheSBwYWNrYWdlcyBhcmUgaW1wb3J0ZWQgZnJvbSB0aGUgc3RvcmUgKGlmIHlvdSB3YW50IHRvIGRpc2FibGUgc3ltbGlua3MgaW5zaWRlIG5vZGVfbW9kdWxlcywgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIG5vZGVMaW5rZXIgc2V0dGluZywgbm90IHRoaXMgb25lKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Qge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBoYXJkbGluayAqL1xuICBIQVJETElOSyA9IFwiaGFyZGxpbmtcIixcbiAgLyoqIGNvcHkgKi9cbiAgQ09QWSA9IFwiY29weVwiLFxuICAvKiogY2xvbmUgKi9cbiAgQ0xPTkUgPSBcImNsb25lXCIsXG4gIC8qKiBjbG9uZS1vci1jb3B5ICovXG4gIENMT05FX0hZUEhFTl9PUl9IWVBIRU5fQ09QWSA9IFwiY2xvbmUtb3ItY29weVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yIHtcbiAgLyoqIGFsd2F5cyAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBuZXZlciAqL1xuICBORVZFUiA9IFwibmV2ZXJcIixcbn1cblxuLyoqXG4gKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbCB7XG4gIC8qKiBkZWJ1ZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIGluZm8gKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICogaHR0cHM6Ly9wbnBtLmlvL2NsaS9pbnN0YWxsIy0tcmVwb3J0ZXJuYW1lXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXIge1xuICAvKiogc2lsZW50ICovXG4gIFNJTEVOVCA9IFwic2lsZW50XCIsXG4gIC8qKiBkZWZhdWx0ICovXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgLyoqIGFwcGVuZC1vbmx5ICovXG4gIEFQUEVORF9IWVBIRU5fT05MWSA9IFwiYXBwZW5kLW9ubHlcIixcbiAgLyoqIG5kanNvbiAqL1xuICBOREpTT04gPSBcIm5kanNvblwiLFxufVxuXG4vKipcbiAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgYWRkZWQgdG8gcGFja2FnZS5qc29uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXhcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4IHtcbiAgLyoqIF4gKi9cbiAgVkFMVUVfQ0FSQVQgPSBcIl5cIixcbiAgLyoqIH4gKi9cbiAgVkFMVUVfVElMREUgPSBcIn5cIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBwbnBtIHJlc29sdmVzIGRlcGVuZGVuY2llcywgU2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNyZXNvbHV0aW9ubW9kZVxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlIHtcbiAgLyoqIGhpZ2hlc3QgKi9cbiAgSElHSEVTVCA9IFwiaGlnaGVzdFwiLFxuICAvKiogdGltZS1iYXNlZCAqL1xuICBUSU1FX0hZUEhFTl9CQVNFRCA9IFwidGltZS1iYXNlZFwiLFxuICAvKiogbG93ZXN0LWRpcmVjdCAqL1xuICBMT1dFU1RfSFlQSEVOX0RJUkVDVCA9IFwibG93ZXN0LWRpcmVjdFwiLFxufVxuXG4vKipcbiAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5IHtcbiAgLyoqIG9mZiAqL1xuICBPRkYgPSBcIm9mZlwiLFxuICAvKiogbm8tZG93bmdyYWRlICovXG4gIE5PX0hZUEhFTl9ET1dOR1JBREUgPSBcIm5vLWRvd25ncmFkZVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSBsZXZlbCBvZiBpc3N1ZXMgcmVwb3J0ZWQgYnkgYHBucG0gYXVkaXRgLiBXaGVuIHNldCB0byAnbG93JywgYWxsIHZ1bG5lcmFiaWxpdGllcyBhcmUgcmVwb3J0ZWQuIFdoZW4gc2V0IHRvICdtb2RlcmF0ZScsICdoaWdoJywgb3IgJ2NyaXRpY2FsJywgb25seSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB0aGF0IHNldmVyaXR5IG9yIGhpZ2hlciBhcmUgcmVwb3J0ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsIHtcbiAgLyoqIGxvdyAqL1xuICBMT1cgPSBcImxvd1wiLFxuICAvKiogbW9kZXJhdGUgKi9cbiAgTU9ERVJBVEUgPSBcIm1vZGVyYXRlXCIsXG4gIC8qKiBoaWdoICovXG4gIEhJR0ggPSBcImhpZ2hcIixcbiAgLyoqIGNyaXRpY2FsICovXG4gIENSSVRJQ0FMID0gXCJjcml0aWNhbFwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgYmVoYXZpb3Igb2YgYm90aCB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBhbmQgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIHdoZW4gdGhlIHJ1bm5pbmcgcG5wbSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBkZWNsYXJlZCBvbmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBmaWVsZCBvZiBgZGV2RW5naW5lcy5ydW50aW1lYCAoYW5kIGBlbmdpbmVzLnJ1bnRpbWVgKSBpbiB0aGUgcm9vdCBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYSBkaWZmZXJlbnQgbG9jYWwgYmVoYXZpb3IgdGhhbiB3aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIG1hbmlmZXN0IOKAlCBmb3IgaW5zdGFuY2UsIGZvcmNpbmcgcG5wbSB0byBkb3dubG9hZCB0aGUgZGVjbGFyZWQgcnVudGltZSBldmVuIHdoZW4gdGhlIG1hbmlmZXN0IHNldHMgYG9uRmFpbDogXCJ3YXJuXCJgLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBBZGRlZCBhIG5ldyBob2lzdGluZ0xpbWl0cyBzZXR0aW5nIGZvciBgbm9kZUxpbmtlcjogaG9pc3RlZGAgaW5zdGFsbHMsIG1pcnJvcmluZyB5YXJuJ3MgYG5tSG9pc3RpbmdMaW1pdHNgLiBJdCBhY2NlcHRzIGBub25lYCAodGhlIGRlZmF1bHQg4oCUIGhvaXN0IGFzIGZhciBhcyBwb3NzaWJsZSksIHdvcmtzcGFjZXMgKGhvaXN0IG9ubHkgYXMgZmFyIGFzIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UpLCBvciBkZXBlbmRlbmNpZXMgKGhvaXN0IG9ubHkgdXAgdG8gZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSdzIGRpcmVjdCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0c1xuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzIHtcbiAgLyoqIG5vZGUgKi9cbiAgTk9ERSA9IFwibm9kZVwiLFxuICAvKiogd29ya3NwYWNlcyAqL1xuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG4gIC8qKiBkZXBlbmRlbmNpZXMgKi9cbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbn1cbiJdfQ==
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlrQ0Esd0VBZ0tDO0FBZ0RELDhHQVNDO0FBb0JELGdHQU9DO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DOztBQTlWRDs7O0dBR0c7QUFDSCxxRkFBcUY7QUFDckYsU0FBZ0IsOEJBQThCLENBQUMsR0FBd0M7SUFDckYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlKLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENB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QiwrQ0FBL0IsK0JBQStCLFFBUzFDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksb0NBU1g7QUFURCxXQUFZLG9DQUFvQztJQUM5QyxlQUFlO0lBQ2YsNkRBQXFCLENBQUE7SUFDckIsWUFBWTtJQUNaLHVEQUFlLENBQUE7SUFDZixXQUFXO0lBQ1gscURBQWEsQ0FBQTtJQUNiLGFBQWE7SUFDYix5REFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVFcsb0NBQW9DLG9EQUFwQyxvQ0FBb0MsUUFTL0M7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxxQ0FPWDtBQVBELFdBQVkscUNBQXFDO0lBQy9DLFdBQVc7SUFDWCxzREFBYSxDQUFBO0lBQ2IsaUJBQWlCO0lBQ2pCLGtFQUF5QixDQUFBO0lBQ3pCLG1CQUFtQjtJQUNuQixzRUFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUFcscUNBQXFDLHFEQUFyQyxxQ0FBcUMsUUFPaEQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJub2RlIC4vcHJvamVuLmpzXCIuXG4vKipcbiAqIEpTT04gc2NoZW1hIGZvciBwbnBtLXdvcmtzcGFjZS55YW1sIGZpbGVzXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hIHtcbiAgLyoqXG4gICAqIFdvcmtzcGFjZSBwYWNrYWdlIHBhdGhzLiBHbG9iIHBhdHRlcm5zIGFyZSBzdXBwb3J0ZWRcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGVmaW5lIGRlcGVuZGVuY3kgdmVyc2lvbiByYW5nZXMgYXMgcmV1c2FibGUgY29uc3RhbnRzLFxuICAgKiBmb3IgbGF0ZXIgcmVmZXJlbmNlIGluIHBhY2thZ2UuanNvbiBmaWxlcy5cbiAgICogVGhpcyAoc2luZ3VsYXIpIGZpZWxkIGNyZWF0ZXMgYSBjYXRhbG9nIG5hbWVkIGRlZmF1bHQuXG4gICAqXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgY2F0YWxvZz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIERlZmluZSBhcmJpdHJhcmlseSBuYW1lZCBjYXRhbG9nc1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dzXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9ncz86IHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9O1xuXG4gIC8qKlxuICAgKiBDb250cm9sbGluZyBpZiBhbmQgaG93IGRlcGVuZGVuY2llcyBhcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2F0YWxvZ1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhdGFsb2dNb2RlXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nTW9kZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGU7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGB0cnVlYCwgcG5wbSB3aWxsIHJlbW92ZSB1bnVzZWQgY2F0YWxvZyBlbnRyaWVzIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2xlYW51cFVudXNlZENhdGFsb2dzXG4gICAqL1xuICByZWFkb25seSBjbGVhbnVwVW51c2VkQ2F0YWxvZ3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZSBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIGV4ZWN1dGVkIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBvbmx5QnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVXNlZCB0byBvdmVycmlkZSBhbnkgZGVwZW5kZW5jeSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvdmVycmlkZXNcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IGFueTtcblxuICAvKipcbiAgICogVXNlZCB0byBleHRlbmQgdGhlIGV4aXN0aW5nIHBhY2thZ2UgZGVmaW5pdGlvbnMgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VFeHRlbnNpb25zXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlRXh0ZW5zaW9ucz86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwZWVyRGVwZW5kZW5jeVJ1bGVzXG4gICAqL1xuICByZWFkb25seSBwZWVyRGVwZW5kZW5jeVJ1bGVzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIHRvIHJ1biBidWlsZHMgZm9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldmVyQnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG5ldmVyQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIHRydWUsIGFsbCBidWlsZCBzY3JpcHRzIChlLmcuIHByZWluc3RhbGwsIGluc3RhbGwsIHBvc3RpbnN0YWxsKSBmcm9tIGRlcGVuZGVuY2llcyB3aWxsIHJ1biBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IHJlcXVpcmluZyBhcHByb3ZhbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzXG4gICAqL1xuICByZWFkb25seSBkYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgSlNPTiBmaWxlIHRoYXQgbGlzdHMgdGhlIG9ubHkgcGFja2FnZXMgcGVybWl0dGVkIHRvIHJ1biBpbnN0YWxsYXRpb24gc2NyaXB0cyBkdXJpbmcgdGhlIHBucG0gaW5zdGFsbCBwcm9jZXNzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgc2hvdWxkIG5vdCBiZSBidWlsdCBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZWRCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXByZWNhdGVkIHZlcnNpb25zIHRoYXQgdGhlIHdhcm5pbmdzIGFyZSBzdXBwcmVzc2VkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93ZWREZXByZWNhdGVkVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIHBhdGNoZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGF0Y2hlZERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgcGF0Y2hlZERlcGVuZGVuY2llcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgaW5zdGFsbGF0aW9uIHdvbid0IGZhaWwgaWYgc29tZSBvZiB0aGUgcGF0Y2hlcyBmcm9tIHRoZSBcInBhdGNoZWREZXBlbmRlbmNpZXNcIiBmaWVsZCB3ZXJlIG5vdCBhcHBsaWVkLiAoUHJldmlvdXNseSBuYW1lZCBcImFsbG93Tm9uQXBwbGllZFBhdGNoZXNcIilcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd1VudXNlZFBhdGNoZXNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93VW51c2VkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgaW5zdGFsbGF0aW9uIHdvbid0IGZhaWwgaWYgc29tZSBvZiB0aGUgcGF0Y2hlcyBmcm9tIHRoZSBcInBhdGNoZWREZXBlbmRlbmNpZXNcIiBmaWVsZCB3ZXJlIG5vdCBhcHBsaWVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93Tm9uQXBwbGllZFBhdGNoZXNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93Tm9uQXBwbGllZFBhdGNoZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGlzIHVuZGVmaW5lZC4gRXJyb3JzIG91dCB3aGVuIGEgcGF0Y2ggd2l0aCBhbiBleGFjdCB2ZXJzaW9uIG9yIHZlcnNpb24gcmFuZ2UgZmFpbHMuIElnbm9yZXMgZmFpbHVyZXMgZnJvbSBuYW1lLW9ubHkgcGF0Y2hlcy4gV2hlbiB0cnVlLCBwcmludHMgYSB3YXJuaW5nIGluc3RlYWQgb2YgZmFpbGluZyB3aGVuIGFueSBwYXRjaCBjYW5ub3QgYmUgYXBwbGllZC4gV2hlbiBmYWxzZSwgZXJyb3JzIG91dCBmb3IgYW55IHBhdGNoIGZhaWx1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZC4gRXJyb3JzIG91dCB3aGVuIGEgcGF0Y2ggd2l0aCBhbiBleGFjdCB2ZXJzaW9uIG9yIHZlcnNpb24gcmFuZ2UgZmFpbHMuIElnbm9yZXMgZmFpbHVyZXMgZnJvbSBuYW1lLW9ubHkgcGF0Y2hlcy4gV2hlbiB0cnVlLCBwcmludHMgYSB3YXJuaW5nIGluc3RlYWQgb2YgZmFpbGluZyB3aGVuIGFueSBwYXRjaCBjYW5ub3QgYmUgYXBwbGllZC4gV2hlbiBmYWxzZSwgZXJyb3JzIG91dCBmb3IgYW55IHBhdGNoIGZhaWx1cmUuXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlUGF0Y2hGYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUGF0Y2hGYWlsdXJlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlQ29uZmlnXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZztcblxuICAvKipcbiAgICogQ29uZmlnIGRlcGVuZGVuY2llcyBhbGxvdyB5b3UgdG8gc2hhcmUgYW5kIGNlbnRyYWxpemUgY29uZmlndXJhdGlvbiBmaWxlcywgc2V0dGluZ3MsIGFuZCBob29rcyBhY3Jvc3MgbXVsdGlwbGUgcHJvamVjdHMuIFRoZXkgYXJlIGluc3RhbGxlZCBiZWZvcmUgYWxsIHJlZ3VsYXIgZGVwZW5kZW5jaWVzICgnZGVwZW5kZW5jaWVzJywgJ2RldkRlcGVuZGVuY2llcycsICdvcHRpb25hbERlcGVuZGVuY2llcycpLCBtYWtpbmcgdGhlbSBpZGVhbCBmb3Igc2V0dGluZyB1cCBjdXN0b20gaG9va3MsIHBhdGNoZXMsIGFuZCBjYXRhbG9nIGVudHJpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY29uZmlnRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBjb25maWdEZXBlbmRlbmNpZXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0Q29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHNjcmlwdHMgdGhhdCBtdXN0IGV4aXN0IGluIGVhY2ggcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXF1aXJlZFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkU2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N1cHBvcnRlZEFyY2hpdGVjdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgaW5zdGFsbCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4ZWN1dGlvbkVudlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uRW52PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnY7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIGRlcGVuZGVuY2llcyBhcmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0XG4gICAqL1xuICByZWFkb25seSBob2lzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlcyBhcmUgc3ltbGlua2VkIHRvIGVpdGhlciA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMgb3IgdG8gPHdvcmtzcGFjZV9yb290Pi9ub2RlX21vZHVsZXMgZGVwZW5kaW5nIG9uIG90aGVyIGhvaXN0aW5nIHNldHRpbmdzIChob2lzdFBhdHRlcm4gYW5kIHB1YmxpY0hvaXN0UGF0dGVybikuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRlbGxzIHBucG0gd2hpY2ggcGFja2FnZXMgc2hvdWxkIGJlIGhvaXN0ZWQgdG8gbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubGlrZSBob2lzdFBhdHRlcm4sIHdoaWNoIGhvaXN0cyBkZXBlbmRlbmNpZXMgdG8gYSBoaWRkZW4gbW9kdWxlcyBkaXJlY3RvcnkgaW5zaWRlIHRoZSB2aXJ0dWFsIHN0b3JlLCBwdWJsaWNIb2lzdFBhdHRlcm4gaG9pc3RzIGRlcGVuZGVuY2llcyBtYXRjaGluZyB0aGUgcGF0dGVybiB0byB0aGUgcm9vdCBtb2R1bGVzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaWNIb2lzdFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0hvaXN0UGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGNyZWF0ZXMgYSBzZW1pc3RyaWN0IG5vZGVfbW9kdWxlcywgbWVhbmluZyBkZXBlbmRlbmNpZXMgaGF2ZSBhY2Nlc3MgdG8gdW5kZWNsYXJlZCBkZXBlbmRlbmNpZXMgYnV0IG1vZHVsZXMgb3V0c2lkZSBvZiBub2RlX21vZHVsZXMgZG8gbm90LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYW1lZnVsbHlIb2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgc2hhbWVmdWxseUhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgKGluc3RlYWQgb2Ygbm9kZV9tb2R1bGVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtb2R1bGVzRGlyXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZUxpbmtlclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUxpbmtlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlcjtcblxuICAvKipcbiAgICogV2hlbiBzeW1saW5rIGlzIHNldCB0byBmYWxzZSwgcG5wbSBjcmVhdGVzIGEgdmlydHVhbCBzdG9yZSBkaXJlY3Rvcnkgd2l0aG91dCBhbnkgc3ltbGlua3MuIEl0IGlzIGEgdXNlZnVsIHNldHRpbmcgdG9nZXRoZXIgd2l0aCBub2RlTGlua2VyPXBucC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW1saW5rXG4gICAqL1xuICByZWFkb25seSBzeW1saW5rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgcG5wbSB3aWxsIG5vdCB3cml0ZSBhbnkgZmlsZXMgdG8gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IChub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZU1vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU1vZHVsZXNEaXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdpdGggbGlua3MgdG8gdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpclxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIGRpcmVjdG9yeSBuYW1lcyBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUgZGlyZWN0b3J5IChub2RlX21vZHVsZXMvLnBucG0pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpck1heExlbmd0aFxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VJbXBvcnRNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VJbXBvcnRNZXRob2Q/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Q7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggb3JwaGFuIHBhY2thZ2VzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc0NhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIGRseCBjYWNoZSBleHBpcmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RseENhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBkbHhDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSBzdG9yZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgYSBmaWxlIGluIHRoZSBzdG9yZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGNoZWNrZWQgYmVmb3JlIGxpbmtpbmcgaXQgdG8gYSBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeVN0b3JlSW50ZWdyaXR5XG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlTdG9yZUludGVncml0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvbWUgcmVnaXN0cmllcyBhbGxvdyB0aGUgZXhhY3Qgc2FtZSBjb250ZW50IHRvIGJlIHB1Ymxpc2hlZCB1bmRlciBkaWZmZXJlbnQgcGFja2FnZSBuYW1lcyBhbmQvb3IgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBub2RlX21vZHVsZXMgY29udGFpbnMgb25seSBzeW1saW5rcyB0byBhIGNlbnRyYWwgdmlydHVhbCBzdG9yZSwgcmF0aGVyIHRoYW4gdG8gbm9kZV9tb2R1bGVzLy5wbnBtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHBucG0gd29uJ3QgcmVhZCBvciBnZW5lcmF0ZSBhIHBucG0tbG9jay55YW1sIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGF2YWlsYWJsZSBwbnBtLWxvY2sueWFtbCBzYXRpc2ZpZXMgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMgZGlyZWN0aXZlLCBhIGhlYWRsZXNzIGluc3RhbGxhdGlvbiBpcyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyRnJvemVuTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlckZyb3plbkxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRoZSBmdWxsIFVSTCB0byB0aGUgcGFja2FnZSdzIHRhcmJhbGwgdG8gZXZlcnkgZW50cnkgaW4gcG5wbS1sb2NrLnlhbWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybFxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBnZW5lcmF0ZWQgbG9ja2ZpbGUgbmFtZSBhZnRlciBpbnN0YWxsYXRpb24gd2lsbCBiZSBuYW1lZCBiYXNlZCBvbiB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBjb21wbGV0ZWx5IGF2b2lkIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRCcmFuY2hMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBtZXJnZSBhbGwgZ2l0IGJyYW5jaCBsb2NrZmlsZSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybj86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNYXggbGVuZ3RoIG9mIHRoZSBwZWVyIElEcyBzdWZmaXggYWRkZWQgdG8gZGVwZW5kZW5jeSBrZXlzIGluIHRoZSBsb2NrZmlsZS4gSWYgdGhlIHN1ZmZpeCBpcyBsb25nZXIsIGl0IGlzIHJlcGxhY2VkIHdpdGggYSBoYXNoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJzU3VmZml4TWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSBwZWVyc1N1ZmZpeE1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeSAodHJhaWxpbmcgc2xhc2ggaW5jbHVkZWQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlIHRoYXQgaXMgdHJ1c3RlZCBmb3IgU1NMIGNvbm5lY3Rpb25zIHRvIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYVxuICAgKi9cbiAgcmVhZG9ubHkgY2E/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbXVsdGlwbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBjZXJ0aWZpY2F0ZSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjZXJ0XG4gICAqL1xuICByZWFkb25seSBjZXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBrZXkgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZmV0Y2hpbmcgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIEdpdCByZXBvc2l0b3JpZXMsIGlmIHRoZSBob3N0IGlzIGxpc3RlZCBpbiB0aGlzIHNldHRpbmcsIHBucG0gd2lsbCB1c2Ugc2hhbGxvdyBjbG9uaW5nIHRvIGZldGNoIG9ubHkgdGhlIG5lZWRlZCBjb21taXQsIG5vdCBhbGwgdGhlIGhpc3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0U2hhbGxvd0hvc3RzXG4gICAqL1xuICByZWFkb25seSBnaXRTaGFsbG93SG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFBTIHJlcXVlc3RzLiBJZiB0aGUgSFRUUFNfUFJPWFksIGh0dHBzX3Byb3h5LCBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwc1Byb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgaHR0cCByZXF1ZXN0cy4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBpbnRlcmZhY2UgdG8gdXNlIHdoZW4gbWFraW5nIGNvbm5lY3Rpb25zIHRvIHRoZSBucG0gcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9jYWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byB1c2UgcGVyIG9yaWdpbiAocHJvdG9jb2wvaG9zdC9wb3J0IGNvbWJpbmF0aW9uKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYXhzb2NrZXRzXG4gICAqL1xuICByZWFkb25seSBtYXhzb2NrZXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgZG9tYWluIGV4dGVuc2lvbnMgdGhhdCBhIHByb3h5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9wcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgbm9wcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZG8gU1NMIGtleSB2YWxpZGF0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzIHRvIHRoZSByZWdpc3RyeSB2aWEgSFRUUFMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3NsXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTc2w/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUChTKSByZXF1ZXN0cyB0byBwcm9jZXNzIHNpbXVsdGFuZW91c2x5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldHdvcmtDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0NvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0byByZXRyeSBpZiBwbnBtIGZhaWxzIHRvIGZldGNoIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwb25lbnRpYWwgZmFjdG9yIGZvciByZXRyeSBiYWNrb2ZmLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlGYWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlGYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIChiYXNlKSB0aW1lb3V0IGZvciByZXRyeWluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWludGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1pbnRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZhbGxiYWNrIHRpbWVvdXQgdG8gZW5zdXJlIHRoZSByZXRyeSBmYWN0b3IgZG9lcyBub3QgbWFrZSByZXF1ZXN0cyB0b28gbG9uZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWF4dGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1heHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIEhUVFAgcmVxdWVzdHMgdG8gY29tcGxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hUaW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYW55IG1pc3Npbmcgbm9uLW9wdGlvbmFsIHBlZXIgZGVwZW5kZW5jaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluc3RhbGxlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdXRvSW5zdGFsbFBlZXJzXG4gICAqL1xuICByZWFkb25seSBhdXRvSW5zdGFsbFBlZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIHNldHRpbmcgaXMgc2V0IHRvIHRydWUsIHBhY2thZ2VzIHdpdGggcGVlciBkZXBlbmRlbmNpZXMgd2lsbCBiZSBkZWR1cGxpY2F0ZWQgYWZ0ZXIgcGVlcnMgcmVzb2x1dGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVQZWVyRGVwZW5kZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlUGVlckRlcGVuZGVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGNvbW1hbmRzIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwZWVyIGRlcGVuZGVuY3kgaW4gdGhlIHRyZWUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0UGVlckRlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0UGVlckRlcGVuZGVuY2llcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgZGVwZW5kZW5jaWVzIG9mIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFyZSB1c2VkIHRvIHJlc29sdmUgcGVlciBkZXBlbmRlbmNpZXMgb2YgYW55IHByb2plY3RzIGluIHRoZSB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29udHJvbHMgY29sb3JzIGluIHRoZSBvdXRwdXQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY29sb3JcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvcjtcblxuICAvKipcbiAgICogQW55IGxvZ3MgYXQgb3IgaGlnaGVyIHRoYW4gdGhlIGdpdmVuIGxldmVsIHdpbGwgYmUgc2hvd24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9nbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2xldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbDtcblxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIG91dHB1dCBzdHlsZSBvZiB0aGUgbG9ncy5cbiAgICogaHR0cHM6Ly9wbnBtLmlvL2NsaS9pbnN0YWxsIy0tcmVwb3J0ZXJuYW1lXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVwb3J0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydGVyPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXBvcnRlcjtcblxuICAvKipcbiAgICogRXhwZXJpbWVudGFsIG9wdGlvbiB0aGF0IGVuYWJsZXMgYmV0YSBmZWF0dXJlcyBvZiB0aGUgQ0xJLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VzZUJldGFDbGlcbiAgICovXG4gIHJlYWRvbmx5IHVzZUJldGFDbGk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHRoZSBwcmltYXJ5IGJlaGF2aW91ciBvZiBwbnBtIGluc3RhbGwgYmVjb21lcyB0aGF0IG9mIHBucG0gaW5zdGFsbCAtciwgbWVhbmluZyB0aGUgaW5zdGFsbCBpcyBwZXJmb3JtZWQgb24gYWxsIHdvcmtzcGFjZSBvciBzdWJkaXJlY3RvcnkgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVjdXJzaXZlSW5zdGFsbFxuICAgKi9cbiAgcmVhZG9ubHkgcmVjdXJzaXZlSW5zdGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgcG5wbSB3aWxsIG5vdCBpbnN0YWxsIGFueSBwYWNrYWdlIHRoYXQgY2xhaW1zIHRvIG5vdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgTm9kZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuZ2luZVN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lU3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBucG0gYmluYXJ5IHRoYXQgcG5wbSB1c2VzIGZvciBzb21lIGFjdGlvbnMsIGxpa2UgcHVibGlzaGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNucG1QYXRoXG4gICAqL1xuICByZWFkb25seSBucG1QYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIHNldHRpbmcgaXMgZGlzYWJsZWQsIHBucG0gd2lsbCBub3QgZmFpbCBpZiBhIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uIFdoZW4gZW5hYmxlZCwgb25seSB0aGUgcGFja2FnZSBuYW1lIGlzIGNoZWNrZWQgKHNpbmNlIHBucG0gdjkuMi4wKSwgc28geW91IGNhbiBzdGlsbCBydW4gYW55IHZlcnNpb24gb2YgcG5wbSByZWdhcmRsZXNzIG9mIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZU1hbmFnZXJTdHJpY3RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyU3RyaWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwbnBtIHdpbGwgZmFpbCBpZiBpdHMgdmVyc2lvbiBkb2Vzbid0IGV4YWN0bHkgbWF0Y2ggdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBucG0gd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIGFuZCBydW4gdGhlIHZlcnNpb24gb2YgcG5wbSBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGV4ZWN1dGUgYW55IHNjcmlwdHMgZGVmaW5lZCBpbiB0aGUgcHJvamVjdCBwYWNrYWdlLmpzb24gYW5kIGl0cyBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlU2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBleGVjdXRlIGFueSBzY3JpcHRzIG9mIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMuIFNjcmlwdHMgb2YgdGhlIHByb2plY3RzIGFyZSBleGVjdXRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVEZXBTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVEZXBTY3JpcHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0byBhbGxvY2F0ZSBzaW11bHRhbmVvdXNseSB0byBidWlsZCBub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2hpbGRDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgY2hpbGRDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogVXNlIGFuZCBjYWNoZSB0aGUgcmVzdWx0cyBvZiAocHJlL3Bvc3QpaW5zdGFsbCBob29rcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaWRlRWZmZWN0c0NhY2hlXG4gICAqL1xuICByZWFkb25seSBzaWRlRWZmZWN0c0NhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT25seSB1c2UgdGhlIHNpZGUgZWZmZWN0cyBjYWNoZSBpZiBwcmVzZW50LCBkbyBub3QgY3JlYXRlIGl0IGZvciBuZXcgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5XG4gICAqL1xuICByZWFkb25seSBzaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgVUlEL0dJRCBzd2l0Y2hpbmcgd2hlbiBydW5uaW5nIHBhY2thZ2Ugc2NyaXB0cy4gSWYgc2V0IGV4cGxpY2l0bHkgdG8gZmFsc2UsIHRoZW4gaW5zdGFsbGluZyBhcyBhIG5vbi1yb290IHVzZXIgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Vuc2FmZVBlcm1cbiAgICovXG4gIHJlYWRvbmx5IHVuc2FmZVBlcm0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIHBhc3MgdGhyb3VnaCB0byBOb2RlLmpzIHZpYSB0aGUgTk9ERV9PUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVPcHRpb25zXG4gICAqL1xuICByZWFkb25seSBub2RlT3B0aW9ucz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBzZXR0aW5nIGFsbG93cyB0aGUgY2hlY2tpbmcgb2YgdGhlIHN0YXRlIG9mIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBzY3JpcHRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeURlcHNCZWZvcmVSdW5cbiAgICovXG4gIHJlYWRvbmx5IHZlcmlmeURlcHNCZWZvcmVSdW4/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFdoZW4gc3RyaWN0RGVwQnVpbGRzIGlzIGVuYWJsZWQsIHRoZSBpbnN0YWxsYXRpb24gd2lsbCBleGl0IHdpdGggYSBub24temVybyBleGl0IGNvZGUgaWYgYW55IGRlcGVuZGVuY2llcyBoYXZlIHVucmV2aWV3ZWQgYnVpbGQgc2NyaXB0cyAoYWthIHBvc3RpbnN0YWxsIHNjcmlwdHMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdERlcEJ1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0RGVwQnVpbGRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoaWNoIGV4YWN0IE5vZGUuanMgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHByb2plY3QncyBydW50aW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VzZU5vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSB1c2VOb2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE5vZGUuanMgdmVyc2lvbiB0byB1c2Ugd2hlbiBjaGVja2luZyBhIHBhY2thZ2UncyBlbmdpbmVzIHNldHRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZVZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGxvY2FsbHkgYXZhaWxhYmxlIHBhY2thZ2VzIGFyZSBsaW5rZWQgdG8gbm9kZV9tb2R1bGVzIGluc3RlYWQgb2YgYmVpbmcgZG93bmxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsaW5rV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtXb3Jrc3BhY2VQYWNrYWdlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGhhcmQtbGlua2luZyBvZiBhbGwgbG9jYWwgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBpbnN0ZWFkIG9mIHN5bWxpbmtpbmcgdGhlbS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpbmplY3RXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5qZWN0V29ya3NwYWNlUGFja2FnZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmplY3RlZCB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIGFyZSBjb2xsZWN0aW9ucyBvZiBoYXJkbGlua3MsIHdoaWNoIGRvbid0IGFkZCBvciByZW1vdmUgdGhlIGZpbGVzIHdoZW4gdGhlaXIgc291cmNlcyBjaGFuZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGxvY2FsIHBhY2thZ2VzIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgcHJlZmVycmVkIG92ZXIgcGFja2FnZXMgZnJvbSB0aGUgcmVnaXN0cnksIGV2ZW4gaWYgdGhlcmUgaXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIGluIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyV29ya3NwYWNlUGFja2FnZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHBucG0gY3JlYXRlcyBhIHNpbmdsZSBwbnBtLWxvY2sueWFtbCBmaWxlIGluIHRoZSByb290IG9mIHRoZSB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hhcmVkV29ya3NwYWNlTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZFdvcmtzcGFjZUxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgYWRkZWQgdG8gcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVXb3Jrc3BhY2VQcm90b2NvbFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZVdvcmtzcGFjZVByb3RvY29sPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFdoZW4gZXhlY3V0aW5nIGNvbW1hbmRzIHJlY3Vyc2l2ZWx5IGluIGEgd29ya3NwYWNlLCBleGVjdXRlIHRoZW0gb24gdGhlIHJvb3Qgd29ya3NwYWNlIHByb2plY3QgYXMgd2VsbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpbmNsdWRlV29ya3NwYWNlUm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVdvcmtzcGFjZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBubyB3b3Jrc3BhY2UgY3ljbGUgd2FybmluZ3Mgd2lsbCBiZSBwcmludGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVdvcmtzcGFjZUN5Y2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlV29ya3NwYWNlQ3ljbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkaW5nIGEgbmV3IGRlcGVuZGVuY3kgdG8gdGhlIHJvb3Qgd29ya3NwYWNlIHBhY2thZ2UgZmFpbHMsIHVubGVzcyB0aGUgLS1pZ25vcmUtd29ya3NwYWNlLXJvb3QtY2hlY2sgb3IgLXcgZmxhZyBpcyB1c2VkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVdvcmtzcGFjZVJvb3RDaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlV29ya3NwYWNlUm9vdENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbCBpZiB0aGUgd29ya3NwYWNlIGhhcyBjeWNsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGlzYWxsb3dXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FsbG93V29ya3NwYWNlQ3ljbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyB0byBydW4gc2ltdWx0YW5lb3VzbHkuIEZvciB1bmxpbWl0ZWQgY29uY3VycmVuY3kgdXNlIEluZmluaXR5LiBZb3UgY2FuIHNldCB0aGUgdmFsdWUgdG8gPD0gMCBhbmQgaXQgd2lsbCB1c2UgYW1vdW50IG9mIENQVSBjb3JlcyBvZiB0aGUgaG9zdCBtaW51cyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHByb3ZpZGVkIG51bWJlciBhczogbWF4KDEsIChudW1iZXIgb2YgY29yZXMpIC0gYWJzKHdvcmtzcGFjZUNvbmN1cnJlbmN5KSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjd29ya3NwYWNlQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtzcGFjZUNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBwbnBtIHdpbGwgZmFpbCBpZiBubyBwYWNrYWdlcyBtYXRjaCB0aGUgZmlsdGVyXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmFpbElmTm9NYXRjaFxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbElmTm9NYXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHBucG0gZGVwbG95IHdpbGwgdHJ5IGNyZWF0aW5nIGEgZGVkaWNhdGVkIGxvY2tmaWxlIGZyb20gYSBzaGFyZWQgbG9ja2ZpbGUgZm9yIGRlcGxveW1lbnQuIElmIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGxlZ2FjeSBkZXBsb3kgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZvcmNlTGVnYWN5RGVwbG95XG4gICAqL1xuICByZWFkb25seSBmb3JjZUxlZ2FjeURlcGxveT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBob3cgdmVyc2lvbnMgb2YgcGFja2FnZXMgaW5zdGFsbGVkIHRvIGEgcGFja2FnZS5qc29uIGZpbGUgZ2V0IHByZWZpeGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVQcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVQcmVmaXg/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXg7XG5cbiAgLyoqXG4gICAqIElmIHlvdSBwbnBtIGFkZCBhIHBhY2thZ2UgYW5kIHlvdSBkb24ndCBwcm92aWRlIGEgc3BlY2lmaWMgdmVyc2lvbiwgdGhlbiBpdCB3aWxsIGluc3RhbGwgdGhlIHBhY2thZ2UgYXQgdGhlIHZlcnNpb24gcmVnaXN0ZXJlZCB1bmRlciB0aGUgdGFnIGZyb20gdGhpcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RhZ1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IGEgY3VzdG9tIGRpcmVjdG9yeSB0byBzdG9yZSBnbG9iYWwgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsRGlyXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZm9yIHRoZSBiaW4gZmlsZXMgb2YgZ2xvYmFsbHkgaW5zdGFsbGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbEJpbkRpclxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsQmluRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gd2hlcmUgYWxsIHRoZSBwYWNrYWdlcyBhcmUgc2F2ZWQgb24gdGhlIGRpc2suXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RhdGVEaXJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGNhY2hlIChwYWNrYWdlIG1ldGFkYXRhIGFuZCBkbHgpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhY2hlRGlyXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbGwgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIHN0ZGVyci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VTdGRlcnJcbiAgICovXG4gIHJlYWRvbmx5IHVzZVN0ZGVycj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB3aWxsIGNoZWNrIGZvciB1cGRhdGVzIHRvIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgYW5kIG5vdGlmeSB0aGUgdXNlci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVOb3RpZmllclxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlTm90aWZpZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgc3ltbGlua3MgdG8gZXhlY3V0YWJsZXMgaW4gbm9kZV9tb2R1bGVzLy5iaW4gaW5zdGVhZCBvZiBjb21tYW5kIHNoaW1zLiBUaGlzIHNldHRpbmcgaXMgaWdub3JlZCBvbiBXaW5kb3dzLCB3aGVyZSBvbmx5IGNvbW1hbmQgc2hpbXMgd29yay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEdXJpbmcgaW5zdGFsbGF0aW9uIHRoZSBkZXBlbmRlbmNpZXMgb2Ygc29tZSBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBwYXRjaGVkLiBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMsIHNldCB0aGlzIGNvbmZpZyB0byBmYWxzZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVDb21wYXRpYmlsaXR5RGJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNvbXBhdGliaWxpdHlEYj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVzb2x1dGlvbk1vZGVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdXRpb25Nb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSBpZiB0aGUgcmVnaXN0cnkgdGhhdCB5b3UgYXJlIHVzaW5nIHJldHVybnMgdGhlIFwidGltZVwiIGZpZWxkIGluIHRoZSBhYmJyZXZpYXRlZCBtZXRhZGF0YS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgdGhlIE5PREVfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGluIHRoZSBjb21tYW5kIHNoaW1zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4dGVuZE5vZGVQYXRoXG4gICAqL1xuICByZWFkb25seSBleHRlbmROb2RlUGF0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZGVwbG95aW5nIGEgcGFja2FnZSBvciBpbnN0YWxsaW5nIGEgbG9jYWwgcGFja2FnZSwgYWxsIGZpbGVzIG9mIHRoZSBwYWNrYWdlIGFyZSBjb3BpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVwbG95QWxsRmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUFsbEZpbGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGFscmVhZHkgc3ltbGlua2VkIHRvIHRoZSByb290IG5vZGVfbW9kdWxlcyBkaXJlY3Rvcnkgb2YgdGhlIHdvcmtzcGFjZSB3aWxsIG5vdCBiZSBzeW1saW5rZWQgdG8gc3VicHJvamVjdCBub2RlX21vZHVsZXMgZGlyZWN0b3JpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlRGlyZWN0RGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlRGlyZWN0RGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBpbmplY3RlZCB3aWxsIGJlIHN5bWxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2Ugd2hlbmV2ZXIgcG9zc2libGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlSW5qZWN0ZWREZXBzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVJbmplY3RlZERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgZmFzdCBjaGVjayB3aWxsIGJlIHBlcmZvcm1lZCBiZWZvcmUgcHJvY2VlZGluZyB0byBpbnN0YWxsYXRpb24uIFRoaXMgd2F5IGEgcmVwZWF0IGluc3RhbGwgb3IgYW4gaW5zdGFsbCBvbiBhIHByb2plY3Qgd2l0aCBldmVyeXRoaW5nIHVwLXRvLWRhdGUgYmVjb21lcyBhIGxvdCBmYXN0ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb3B0aW1pc3RpY1JlcGVhdEluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IG9wdGltaXN0aWNSZXBlYXRJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgY3VycmVudCBicmFuY2ggaXMgeW91ciBwdWJsaXNoIGJyYW5jaCwgY2xlYW4sIGFuZCB1cC10by1kYXRlIHdpdGggcmVtb3RlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdENoZWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVU5ET0NVTUVOVEVELiBXaGVuIGB0cnVlYCwgYHBucG0gcHVibGlzaGAgd3JpdGVzIHRoZSBSRUFETUUgZmlsZSdzIGNvbnRlbnQgaW50byB0aGUgcHVibGlzaGVkIHBhY2thZ2UuanNvbiAodGhlIGByZWFkbWVgIGZpZWxkKSwgc28gcmVnaXN0cmllcyBzdWNoIGFzIG5wbWpzLmNvbSByZW5kZXIgdGhlIHBhY2thZ2UncyBSRUFETUUuIEFkZGVkIGluIHBucG0gNi4yOC4wOyBwbnBtIGRvZXMgbm90IGVtYmVkIHRoZSBSRUFETUUgdW5sZXNzIHRoaXMgaXMgZW5hYmxlZC4gSXQgYWxzbyB3b24ndCBvdmVycmlkZSBhIGByZWFkbWVgIGZpZWxkIGFscmVhZHkgc2V0IGluIHRoZSBwYWNrYWdlLmpzb25cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbWJlZFJlYWRtZVxuICAgKi9cbiAgcmVhZG9ubHkgZW1iZWRSZWFkbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpbWFyeSBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkgd2hpY2ggaXMgdXNlZCBmb3IgcHVibGlzaGluZyB0aGUgbGF0ZXN0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHVibGlzaEJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBwdWJsaXNoaW5nIGZyb20gYSBzdXBwb3J0ZWQgY2xvdWQgQ0kvQ0Qgc3lzdGVtLCB0aGUgcGFja2FnZSB3aWxsIGJlIHB1YmxpY2x5IGxpbmtlZCB0byB3aGVyZSBpdCB3YXMgYnVpbHQgYW5kIHB1Ymxpc2hlZCBmcm9tLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3ZlbmFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZlbmFuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGxvY2FsIHBucG1maWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BucG1maWxlXG4gICAqL1xuICByZWFkb25seSBwbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2xvYmFsIHBucG1maWxlLiBBIGdsb2JhbCBwbnBtZmlsZSBpcyB1c2VkIGJ5IGFsbCBwcm9qZWN0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxQbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogLnBucG1maWxlLmNqcyB3aWxsIGJlIGlnbm9yZWQuIFVzZWZ1bCB0b2dldGhlciB3aXRoIC0taWdub3JlLXNjcmlwdHMgd2hlbiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBubyBzY3JpcHQgZ2V0cyBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQbnBtZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUG5wbWZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIHBhdGNoIGZpbGUgd2lsbCBiZSBzYXZlZCB0byB0aGlzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVzRGlyXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBydW4gYW55IHByZS9wb3N0IHNjcmlwdHMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmFibGVQcmVQb3N0U2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJlUG9zdFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgdG8gdXNlIGZvciBzY3JpcHRzIHJ1biB3aXRoIHRoZSBwbnBtIHJ1biBjb21tYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NjcmlwdFNoZWxsXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRTaGVsbD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgdXNlIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJhc2gtbGlrZSBzaGVsbCB0byBleGVjdXRlIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hlbGxFbXVsYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGxFbXVsYXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNhdmVkIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNvbmZpZ3VyZWQgd2l0aCBhbiBleGFjdCB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHBucG0ncyBkZWZhdWx0IHNlbXZlciByYW5nZSBvcGVyYXRvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlRXhhY3RcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVFeGFjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3MgYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0byBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IHNldCBgbWluaW11bVJlbGVhc2VBZ2VgIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5cyBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXIgYG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZWAuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgYHBhY2thZ2UgbmFtZWAgYW5kIGFwcGxpZXMgdG8gYWxsIHZlcnNpb25zIG9mIHRoYXQgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgcG5wbSBiZWhhdmVzIHdoZW4gbm8gdmVyc2lvbiBvZiBhIGRlcGVuZGVuY3kgc2F0aXNmaWVzIHRoZSBtaW5pbXVtUmVsZWFzZUFnZSBjb25zdHJhaW50IHdpdGhpbiB0aGUgcmVxdWVzdGVkIHJhbmdlLlxuICAgKiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VzdHJpY3RcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZVN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc3RhbGVuZXNzIGNoZWNrcyBmb3IgY2FjaGVkIGRhdGEuIE1pc3NpbmcgZGF0YSB3aWxsIHN0aWxsIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyT2ZmbGluZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyT2ZmbGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5XG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gbm93IGxpc3Qgb25lIG9yIG1vcmUgc3BlY2lmaWMgcGFja2FnZXMgb3IgdmVyc2lvbnMgdGhhdCBwbnBtIHNob3VsZCBhbGxvdyB0byBpbnN0YWxsLCBldmVuIGlmIHRob3NlIHBhY2thZ2VzIGRvbid0IHNhdGlzZnkgdGhlIHRydXN0IHBvbGljeSByZXF1aXJlbWVudC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5RXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBwYWNrYWdlIG1hdGNoZXJzIHRvIGV4cGxpY2l0bHkgYWxsb3cgKGB0cnVlYCkgb3IgZGlzYWxsb3cgKGBmYWxzZWApIHNjcmlwdCBleGVjdXRpb24uIFRoaXMgZmllbGQgcmVwbGFjZXMgYG9ubHlCdWlsdERlcGVuZGVuY2llc2AgYW5kIGBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXNgICh3aGljaCBhcmUgYWxzbyBkZXByZWNhdGVkIGJ5IHRoaXMgbmV3IHNldHRpbmcpLCBwcm92aWRpbmcgYSBzaW5nbGUgc291cmNlIG9mIHRydXRoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93QnVpbGRzXG4gICAqL1xuICByZWFkb25seSBhbGxvd0J1aWxkcz86IGFueTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgaXQgcHJldmVudHMgdGhlIHJlc29sdXRpb24gb2YgZXhvdGljIHByb3RvY29scyAobGlrZSBnaXQrc3NoOiBvciBkaXJlY3QgaHR0cHM6IHRhcmJhbGxzKSBpbiB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcy4gT25seSBkaXJlY3QgZGVwZW5kZW5jaWVzIGFyZSBhbGxvd2VkIHRvIHVzZSBleG90aWMgc291cmNlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNibG9ja0V4b3RpY1N1YmRlcHNcbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrRXhvdGljU3ViZGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpZ25vcmluZyB0aGUgdHJ1c3QgcG9saWN5IGNoZWNrIGZvciBwYWNrYWdlcyBwdWJsaXNoZWQgbW9yZSB0aGFuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYWdvLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGVuYWJsaW5nIHN0cmljdCB0cnVzdCBwb2xpY2llcywgYXMgaXQgYWxsb3dzIG9sZGVyIHZlcnNpb25zIG9mIHBhY2thZ2VzICh3aGljaCBtYXkgbGFjayBhIHByb2Nlc3MgZm9yIHB1Ymxpc2hpbmcgd2l0aCBzaWduYXR1cmVzIG9yIHByb3ZlbmFuY2UpIHRvIGJlIGluc3RhbGxlZCB3aXRob3V0IG1hbnVhbCBleGNsdXNpb24sIGFzc3VtaW5nIHRoZXkgYXJlIHNhZmUgZHVlIHRvIHRoZWlyIGFnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeUlnbm9yZUFmdGVyXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUlnbm9yZUFmdGVyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbGV2ZWwgb2YgaXNzdWVzIHJlcG9ydGVkIGJ5IGBwbnBtIGF1ZGl0YC4gV2hlbiBzZXQgdG8gJ2xvdycsIGFsbCB2dWxuZXJhYmlsaXRpZXMgYXJlIHJlcG9ydGVkLiBXaGVuIHNldCB0byAnbW9kZXJhdGUnLCAnaGlnaCcsIG9yICdjcml0aWNhbCcsIG9ubHkgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhhdCBzZXZlcml0eSBvciBoaWdoZXIgYXJlIHJlcG9ydGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0TGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0TGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcGVlciBkZXBlbmRlbmN5IHN1ZmZpeGVzIHVzZSB2ZXJzaW9uLW9ubHkgaWRlbnRpZmllcnMgKGBuYW1lQHZlcnNpb25gKSBpbnN0ZWFkIG9mIGZ1bGwgZGVwIHBhdGhzLCBlbGltaW5hdGluZyBuZXN0ZWQgc3VmZml4ZXMgbGlrZSBgKGZvb0AxLjAuMChiYXJAMi4wLjApKWAuIFRoaXMgZHJhbWF0aWNhbGx5IHJlZHVjZXMgdGhlIG51bWJlciBvZiBwYWNrYWdlIGluc3RhbmNlcyBpbiBwcm9qZWN0cyB3aXRoIG1hbnkgcmVjdXJzaXZlIHBlZXIgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uIHRva2Vucy4gQnkgZGVmYXVsdCwgcG5wbSByZWFkcyBhdXRoIHRva2VucyBmcm9tIH4vLm5wbXJjIGFzIGEgZmFsbGJhY2sgZm9yIHJlZ2lzdHJ5IGF1dGhlbnRpY2F0aW9uLiBVc2UgdGhpcyBzZXR0aW5nIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IGZpbGUgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNucG1yY0F1dGhGaWxlXG4gICAqL1xuICByZWFkb25seSBucG1yY0F1dGhGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgcG5wbSBza2lwcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCBjaGVjayBmb3IgYSBwYWNrYWdlIHdob3NlIHJlZ2lzdHJ5IG1ldGFkYXRhIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRpbWUgZmllbGQgKHNvbWUgcHJpdmF0ZSByZWdpc3RyaWVzIGFuZCBtaXJyb3JzIG9taXQgaXQpLiBTZXQgdG8gYGZhbHNlYCB0byBmYWlsIHJlc29sdXRpb24gaW4gdGhhdCBjYXNlIGluc3RlYWQgb2YgaW5zdGFsbGluZyB0aGUgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIHJlZ2lzdHJpZXMgZm9yIHNjb3BlZCBwYWNrYWdlcyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBgZGVmYXVsdGAga2V5IHNldHMgdGhlIG1haW4gcmVnaXN0cnkgKGVxdWl2YWxlbnQgdG8gdGhlIGByZWdpc3RyeWAgYC5ucG1yY2Agc2V0dGluZykuIFNjb3BlZCBrZXlzIGNvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzcGVjaWZpYyBwYWNrYWdlIHNjb3Blcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWdpc3RyaWVzXG4gICAqL1xuICByZWFkb25seSByZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSBwb3B1bGF0ZXMgdGhlIHZpcnR1YWwgc3RvcmUgd2l0aG91dCBjcmVhdGluZyBpbXBvcnRlciBzeW1saW5rcywgaG9pc3RpbmcsIGJpbiBsaW5rcywgb3IgcnVubmluZyBsaWZlY3ljbGUgc2NyaXB0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIHByZS1wb3B1bGF0aW5nIGEgc3RvcmUgKGUuZy4sIGluIE5peCBidWlsZHMpIHdpdGhvdXQgY3JlYXRpbmcgdW5uZWNlc3NhcnkgcHJvamVjdC1sZXZlbCBhcnRpZmFjdHMuIHBucG0gZmV0Y2ggdXNlcyB0aGlzIG1vZGUgaW50ZXJuYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVPbmx5XG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBiZWhhdmlvciBvZiBib3RoIHRoZSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIGFuZCBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgd2hlbiB0aGUgcnVubmluZyBwbnBtIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGRlY2xhcmVkIG9uZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwbU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcG1PbkZhaWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGZpZWxkIG9mIGBkZXZFbmdpbmVzLnJ1bnRpbWVgIChhbmQgYGVuZ2luZXMucnVudGltZWApIGluIHRoZSByb290IHByb2plY3QncyBgcGFja2FnZS5qc29uYC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCBhIGRpZmZlcmVudCBsb2NhbCBiZWhhdmlvciB0aGFuIHdoYXQgaXMgd3JpdHRlbiBpbiB0aGUgbWFuaWZlc3Qg4oCUIGZvciBpbnN0YW5jZSwgZm9yY2luZyBwbnBtIHRvIGRvd25sb2FkIHRoZSBkZWNsYXJlZCBydW50aW1lIGV2ZW4gd2hlbiB0aGUgbWFuaWZlc3Qgc2V0cyBgb25GYWlsOiBcIndhcm5cImAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcnVudGltZU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbDtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGN1c3RvbSBOb2RlLmpzIGRvd25sb2FkIG1pcnJvcnMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUga2V5cyBhcmUgcmVsZWFzZSBjaGFubmVscyAoYHJlbGVhc2VgLCBgcmNgLCBgbmlnaHRseWAsIGB2OC1jYW5hcnlgLCBldGMuKSBhbmQgdGhlIHZhbHVlcyBhcmUgYmFzZSBVUkxzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVEb3dubG9hZE1pcnJvcnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVEb3dubG9hZE1pcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIG5ldyB0cnVzdExvY2tmaWxlIHNldHRpbmcgY29udHJvbHMgd2hldGhlciBwbnBtIGluc3RhbGwgcmUtYXBwbGllcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCAvIGB0cnVzdFBvbGljeTogJ25vLWRvd25ncmFkZSdgIGNoZWNrcyB0byBldmVyeSBlbnRyeSBpbiB0aGUgbG9hZGVkIGxvY2tmaWxlLiBXaGVuIHRydWUsIHRoZSBpbnN0YWxsIHRyZWF0cyB0aGUgbG9ja2ZpbGUgYXMgYWxyZWFkeS10cnVzdGVkIGFuZCBza2lwcyB0aGUgdmVyaWZpY2F0aW9uIHBhc3Mg4oCUIHVzZWZ1bCBmb3IgY2xvc2VkLXNvdXJjZSBwcm9qZWN0cyB3aGVyZSBldmVyeSBjb21taXQgY29tZXMgZnJvbSBhIHRydXN0ZWQgYXV0aG9yLiBUaGUgZGVmYXVsdCBpcyBmYWxzZSwgc28gdmVyaWZpY2F0aW9uIHN0YXlzIG9uIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGVkIGEgbmV3IGhvaXN0aW5nTGltaXRzIHNldHRpbmcgZm9yIGBub2RlTGlua2VyOiBob2lzdGVkYCBpbnN0YWxscywgbWlycm9yaW5nIHlhcm4ncyBgbm1Ib2lzdGluZ0xpbWl0c2AuIEl0IGFjY2VwdHMgYG5vbmVgICh0aGUgZGVmYXVsdCDigJQgaG9pc3QgYXMgZmFyIGFzIHBvc3NpYmxlKSwgd29ya3NwYWNlcyAoaG9pc3Qgb25seSBhcyBmYXIgYXMgZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSksIG9yIGRlcGVuZGVuY2llcyAoaG9pc3Qgb25seSB1cCB0byBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlJ3MgZGlyZWN0IGRlcGVuZGVuY2llcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RpbmdMaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0aW5nTGltaXRzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGFja2FnZXMnOiBvYmoucGFja2FnZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdjYXRhbG9nJzogKChvYmouY2F0YWxvZykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmNhdGFsb2cpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdjYXRhbG9ncyc6ICgob2JqLmNhdGFsb2dzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZ3MpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiAoKGlbMV0pID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKGlbMV0pLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpIH0pLCB7fSkpLFxuICAgICdjYXRhbG9nTW9kZSc6IG9iai5jYXRhbG9nTW9kZSxcbiAgICAnY2xlYW51cFVudXNlZENhdGFsb2dzJzogb2JqLmNsZWFudXBVbnVzZWRDYXRhbG9ncyxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ292ZXJyaWRlcyc6IG9iai5vdmVycmlkZXMsXG4gICAgJ3BhY2thZ2VFeHRlbnNpb25zJzogb2JqLnBhY2thZ2VFeHRlbnNpb25zLFxuICAgICdwZWVyRGVwZW5kZW5jeVJ1bGVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyhvYmoucGVlckRlcGVuZGVuY3lSdWxlcyksXG4gICAgJ25ldmVyQnVpbHREZXBlbmRlbmNpZXMnOiBvYmoubmV2ZXJCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMnOiBvYmouZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcyxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSc6IG9iai5vbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlLFxuICAgICdpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucyc6ICgob2JqLmFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAncGF0Y2hlZERlcGVuZGVuY2llcyc6ICgob2JqLnBhdGNoZWREZXBlbmRlbmNpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAnYWxsb3dVbnVzZWRQYXRjaGVzJzogb2JqLmFsbG93VW51c2VkUGF0Y2hlcyxcbiAgICAnYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyc6IG9iai5hbGxvd05vbkFwcGxpZWRQYXRjaGVzLFxuICAgICdpZ25vcmVQYXRjaEZhaWx1cmVzJzogb2JqLmlnbm9yZVBhdGNoRmFpbHVyZXMsXG4gICAgJ3VwZGF0ZUNvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmoudXBkYXRlQ29uZmlnKSxcbiAgICAnY29uZmlnRGVwZW5kZW5jaWVzJzogb2JqLmNvbmZpZ0RlcGVuZGVuY2llcyxcbiAgICAnYXVkaXRDb25maWcnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyhvYmouYXVkaXRDb25maWcpLFxuICAgICdyZXF1aXJlZFNjcmlwdHMnOiBvYmoucmVxdWlyZWRTY3JpcHRzPy5tYXAoeSA9PiB5KSxcbiAgICAnc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMob2JqLnN1cHBvcnRlZEFyY2hpdGVjdHVyZXMpLFxuICAgICdpZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnZXhlY3V0aW9uRW52JzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52KG9iai5leGVjdXRpb25FbnYpLFxuICAgICdob2lzdCc6IG9iai5ob2lzdCxcbiAgICAnaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5ob2lzdFdvcmtzcGFjZVBhY2thZ2VzLFxuICAgICdob2lzdFBhdHRlcm4nOiBvYmouaG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAncHVibGljSG9pc3RQYXR0ZXJuJzogb2JqLnB1YmxpY0hvaXN0UGF0dGVybj8ubWFwKHkgPT4geSksXG4gICAgJ3NoYW1lZnVsbHlIb2lzdCc6IG9iai5zaGFtZWZ1bGx5SG9pc3QsXG4gICAgJ21vZHVsZXNEaXInOiBvYmoubW9kdWxlc0RpcixcbiAgICAnbm9kZUxpbmtlcic6IG9iai5ub2RlTGlua2VyLFxuICAgICdzeW1saW5rJzogb2JqLnN5bWxpbmssXG4gICAgJ2VuYWJsZU1vZHVsZXNEaXInOiBvYmouZW5hYmxlTW9kdWxlc0RpcixcbiAgICAndmlydHVhbFN0b3JlRGlyJzogb2JqLnZpcnR1YWxTdG9yZURpcixcbiAgICAndmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoJzogb2JqLnZpcnR1YWxTdG9yZURpck1heExlbmd0aCxcbiAgICAncGFja2FnZUltcG9ydE1ldGhvZCc6IG9iai5wYWNrYWdlSW1wb3J0TWV0aG9kLFxuICAgICdtb2R1bGVzQ2FjaGVNYXhBZ2UnOiBvYmoubW9kdWxlc0NhY2hlTWF4QWdlLFxuICAgICdkbHhDYWNoZU1heEFnZSc6IG9iai5kbHhDYWNoZU1heEFnZSxcbiAgICAnc3RvcmVEaXInOiBvYmouc3RvcmVEaXIsXG4gICAgJ3ZlcmlmeVN0b3JlSW50ZWdyaXR5Jzogb2JqLnZlcmlmeVN0b3JlSW50ZWdyaXR5LFxuICAgICdzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayc6IG9iai5zdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayxcbiAgICAnZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlJzogb2JqLmVuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZSxcbiAgICAnbG9ja2ZpbGUnOiBvYmoubG9ja2ZpbGUsXG4gICAgJ3ByZWZlckZyb3plbkxvY2tmaWxlJzogb2JqLnByZWZlckZyb3plbkxvY2tmaWxlLFxuICAgICdsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsJzogb2JqLmxvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwsXG4gICAgJ2dpdEJyYW5jaExvY2tmaWxlJzogb2JqLmdpdEJyYW5jaExvY2tmaWxlLFxuICAgICdtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4nOiBvYmoubWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAncGVlcnNTdWZmaXhNYXhMZW5ndGgnOiBvYmoucGVlcnNTdWZmaXhNYXhMZW5ndGgsXG4gICAgJ3JlZ2lzdHJ5Jzogb2JqLnJlZ2lzdHJ5LFxuICAgICdjYSc6IG9iai5jYSxcbiAgICAnY2FmaWxlJzogb2JqLmNhZmlsZSxcbiAgICAnY2VydCc6IG9iai5jZXJ0LFxuICAgICdrZXknOiBvYmoua2V5LFxuICAgICdnaXRTaGFsbG93SG9zdHMnOiBvYmouZ2l0U2hhbGxvd0hvc3RzPy5tYXAoeSA9PiB5KSxcbiAgICAnaHR0cHNQcm94eSc6IG9iai5odHRwc1Byb3h5LFxuICAgICdwcm94eSc6IG9iai5wcm94eSxcbiAgICAnbG9jYWxBZGRyZXNzJzogb2JqLmxvY2FsQWRkcmVzcyxcbiAgICAnbWF4c29ja2V0cyc6IG9iai5tYXhzb2NrZXRzLFxuICAgICdub3Byb3h5Jzogb2JqLm5vcHJveHksXG4gICAgJ3N0cmljdFNzbCc6IG9iai5zdHJpY3RTc2wsXG4gICAgJ25ldHdvcmtDb25jdXJyZW5jeSc6IG9iai5uZXR3b3JrQ29uY3VycmVuY3ksXG4gICAgJ2ZldGNoUmV0cmllcyc6IG9iai5mZXRjaFJldHJpZXMsXG4gICAgJ2ZldGNoUmV0cnlGYWN0b3InOiBvYmouZmV0Y2hSZXRyeUZhY3RvcixcbiAgICAnZmV0Y2hSZXRyeU1pbnRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1pbnRpbWVvdXQsXG4gICAgJ2ZldGNoUmV0cnlNYXh0aW1lb3V0Jzogb2JqLmZldGNoUmV0cnlNYXh0aW1lb3V0LFxuICAgICdmZXRjaFRpbWVvdXQnOiBvYmouZmV0Y2hUaW1lb3V0LFxuICAgICdhdXRvSW5zdGFsbFBlZXJzJzogb2JqLmF1dG9JbnN0YWxsUGVlcnMsXG4gICAgJ2RlZHVwZVBlZXJEZXBlbmRlbnRzJzogb2JqLmRlZHVwZVBlZXJEZXBlbmRlbnRzLFxuICAgICdzdHJpY3RQZWVyRGVwZW5kZW5jaWVzJzogb2JqLnN0cmljdFBlZXJEZXBlbmRlbmNpZXMsXG4gICAgJ3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290Jzogb2JqLnJlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290LFxuICAgICdjb2xvcic6IG9iai5jb2xvcixcbiAgICAnbG9nbGV2ZWwnOiBvYmoubG9nbGV2ZWwsXG4gICAgJ3JlcG9ydGVyJzogb2JqLnJlcG9ydGVyLFxuICAgICd1c2VCZXRhQ2xpJzogb2JqLnVzZUJldGFDbGksXG4gICAgJ3JlY3Vyc2l2ZUluc3RhbGwnOiBvYmoucmVjdXJzaXZlSW5zdGFsbCxcbiAgICAnZW5naW5lU3RyaWN0Jzogb2JqLmVuZ2luZVN0cmljdCxcbiAgICAnbnBtUGF0aCc6IG9iai5ucG1QYXRoLFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdCc6IG9iai5wYWNrYWdlTWFuYWdlclN0cmljdCxcbiAgICAncGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uJzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbixcbiAgICAnbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucyc6IG9iai5tYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zLFxuICAgICdpZ25vcmVTY3JpcHRzJzogb2JqLmlnbm9yZVNjcmlwdHMsXG4gICAgJ2lnbm9yZURlcFNjcmlwdHMnOiBvYmouaWdub3JlRGVwU2NyaXB0cyxcbiAgICAnY2hpbGRDb25jdXJyZW5jeSc6IG9iai5jaGlsZENvbmN1cnJlbmN5LFxuICAgICdzaWRlRWZmZWN0c0NhY2hlJzogb2JqLnNpZGVFZmZlY3RzQ2FjaGUsXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSc6IG9iai5zaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHksXG4gICAgJ3Vuc2FmZVBlcm0nOiBvYmoudW5zYWZlUGVybSxcbiAgICAnbm9kZU9wdGlvbnMnOiBvYmoubm9kZU9wdGlvbnMsXG4gICAgJ3ZlcmlmeURlcHNCZWZvcmVSdW4nOiBvYmoudmVyaWZ5RGVwc0JlZm9yZVJ1bixcbiAgICAnc3RyaWN0RGVwQnVpbGRzJzogb2JqLnN0cmljdERlcEJ1aWxkcyxcbiAgICAndXNlTm9kZVZlcnNpb24nOiBvYmoudXNlTm9kZVZlcnNpb24sXG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICAgICdsaW5rV29ya3NwYWNlUGFja2FnZXMnOiBvYmoubGlua1dvcmtzcGFjZVBhY2thZ2VzPy52YWx1ZSxcbiAgICAnaW5qZWN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaW5qZWN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHMnOiBvYmouc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzJzogb2JqLnByZWZlcldvcmtzcGFjZVBhY2thZ2VzLFxuICAgICdzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSc6IG9iai5zaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSxcbiAgICAnc2F2ZVdvcmtzcGFjZVByb3RvY29sJzogb2JqLnNhdmVXb3Jrc3BhY2VQcm90b2NvbD8udmFsdWUsXG4gICAgJ2luY2x1ZGVXb3Jrc3BhY2VSb290Jzogb2JqLmluY2x1ZGVXb3Jrc3BhY2VSb290LFxuICAgICdpZ25vcmVXb3Jrc3BhY2VDeWNsZXMnOiBvYmouaWdub3JlV29ya3NwYWNlQ3ljbGVzLFxuICAgICdpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2snOiBvYmouaWdub3JlV29ya3NwYWNlUm9vdENoZWNrLFxuICAgICdkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyc6IG9iai5kaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyxcbiAgICAnd29ya3NwYWNlQ29uY3VycmVuY3knOiBvYmoud29ya3NwYWNlQ29uY3VycmVuY3ksXG4gICAgJ2ZhaWxJZk5vTWF0Y2gnOiBvYmouZmFpbElmTm9NYXRjaCxcbiAgICAnZm9yY2VMZWdhY3lEZXBsb3knOiBvYmouZm9yY2VMZWdhY3lEZXBsb3ksXG4gICAgJ3NhdmVQcmVmaXgnOiBvYmouc2F2ZVByZWZpeCxcbiAgICAndGFnJzogb2JqLnRhZyxcbiAgICAnZ2xvYmFsRGlyJzogb2JqLmdsb2JhbERpcixcbiAgICAnZ2xvYmFsQmluRGlyJzogb2JqLmdsb2JhbEJpbkRpcixcbiAgICAnc3RhdGVEaXInOiBvYmouc3RhdGVEaXIsXG4gICAgJ2NhY2hlRGlyJzogb2JqLmNhY2hlRGlyLFxuICAgICd1c2VTdGRlcnInOiBvYmoudXNlU3RkZXJyLFxuICAgICd1cGRhdGVOb3RpZmllcic6IG9iai51cGRhdGVOb3RpZmllcixcbiAgICAncHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMnOiBvYmoucHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMsXG4gICAgJ2lnbm9yZUNvbXBhdGliaWxpdHlEYic6IG9iai5pZ25vcmVDb21wYXRpYmlsaXR5RGIsXG4gICAgJ3Jlc29sdXRpb25Nb2RlJzogb2JqLnJlc29sdXRpb25Nb2RlLFxuICAgICdyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkJzogb2JqLnJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQsXG4gICAgJ2V4dGVuZE5vZGVQYXRoJzogb2JqLmV4dGVuZE5vZGVQYXRoLFxuICAgICdkZXBsb3lBbGxGaWxlcyc6IG9iai5kZXBsb3lBbGxGaWxlcyxcbiAgICAnZGVkdXBlRGlyZWN0RGVwcyc6IG9iai5kZWR1cGVEaXJlY3REZXBzLFxuICAgICdkZWR1cGVJbmplY3RlZERlcHMnOiBvYmouZGVkdXBlSW5qZWN0ZWREZXBzLFxuICAgICdvcHRpbWlzdGljUmVwZWF0SW5zdGFsbCc6IG9iai5vcHRpbWlzdGljUmVwZWF0SW5zdGFsbCxcbiAgICAnZ2l0Q2hlY2tzJzogb2JqLmdpdENoZWNrcyxcbiAgICAnZW1iZWRSZWFkbWUnOiBvYmouZW1iZWRSZWFkbWUsXG4gICAgJ3B1Ymxpc2hCcmFuY2gnOiBvYmoucHVibGlzaEJyYW5jaCxcbiAgICAncHJvdmVuYW5jZSc6IG9iai5wcm92ZW5hbmNlLFxuICAgICdwbnBtZmlsZSc6IG9iai5wbnBtZmlsZSxcbiAgICAnZ2xvYmFsUG5wbWZpbGUnOiBvYmouZ2xvYmFsUG5wbWZpbGUsXG4gICAgJ2lnbm9yZVBucG1maWxlJzogb2JqLmlnbm9yZVBucG1maWxlLFxuICAgICdwYXRjaGVzRGlyJzogb2JqLnBhdGNoZXNEaXIsXG4gICAgJ2VuYWJsZVByZVBvc3RTY3JpcHRzJzogb2JqLmVuYWJsZVByZVBvc3RTY3JpcHRzLFxuICAgICdzY3JpcHRTaGVsbCc6IG9iai5zY3JpcHRTaGVsbCxcbiAgICAnc2hlbGxFbXVsYXRvcic6IG9iai5zaGVsbEVtdWxhdG9yLFxuICAgICdzYXZlRXhhY3QnOiBvYmouc2F2ZUV4YWN0LFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZSc6IG9iai5taW5pbXVtUmVsZWFzZUFnZSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlU3RyaWN0Jzogb2JqLm1pbmltdW1SZWxlYXNlQWdlU3RyaWN0LFxuICAgICdwcmVmZXJPZmZsaW5lJzogb2JqLnByZWZlck9mZmxpbmUsXG4gICAgJ3RydXN0UG9saWN5Jzogb2JqLnRydXN0UG9saWN5LFxuICAgICd0cnVzdFBvbGljeUV4Y2x1ZGUnOiBvYmoudHJ1c3RQb2xpY3lFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dCdWlsZHMnOiBvYmouYWxsb3dCdWlsZHMsXG4gICAgJ2Jsb2NrRXhvdGljU3ViZGVwcyc6IG9iai5ibG9ja0V4b3RpY1N1YmRlcHMsXG4gICAgJ3RydXN0UG9saWN5SWdub3JlQWZ0ZXInOiBvYmoudHJ1c3RQb2xpY3lJZ25vcmVBZnRlcixcbiAgICAnYXVkaXRMZXZlbCc6IG9iai5hdWRpdExldmVsLFxuICAgICdkZWR1cGVQZWVycyc6IG9iai5kZWR1cGVQZWVycyxcbiAgICAnbnBtcmNBdXRoRmlsZSc6IG9iai5ucG1yY0F1dGhGaWxlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUsXG4gICAgJ3JlZ2lzdHJpZXMnOiAoKG9iai5yZWdpc3RyaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3ZpcnR1YWxTdG9yZU9ubHknOiBvYmoudmlydHVhbFN0b3JlT25seSxcbiAgICAncG1PbkZhaWwnOiBvYmoucG1PbkZhaWwsXG4gICAgJ3J1bnRpbWVPbkZhaWwnOiBvYmoucnVudGltZU9uRmFpbCxcbiAgICAnbm9kZURvd25sb2FkTWlycm9ycyc6ICgob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndHJ1c3RMb2NrZmlsZSc6IG9iai50cnVzdExvY2tmaWxlLFxuICAgICdob2lzdGluZ0xpbWl0cyc6IG9iai5ob2lzdGluZ0xpbWl0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGUge1xuICAvKiogc3RyaWN0ICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG4gIC8qKiBwcmVmZXIgKi9cbiAgUFJFRkVSID0gXCJwcmVmZXJcIixcbiAgLyoqIG1hbnVhbCAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHtcbiAgLyoqXG4gICAqIHBucG0gd2lsbCBub3QgcHJpbnQgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBwZWVyIGRlcGVuZGVuY2llcyBmcm9tIHRoaXMgbGlzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjaWdub3JlTWlzc2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTWlzc2luZz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVbm1ldCBwZWVyIGRlcGVuZGVuY3kgd2FybmluZ3Mgd2lsbCBub3QgYmUgcHJpbnRlZCBmb3IgcGVlciBkZXBlbmRlbmNpZXMgb2YgdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkVmVyc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFueSBwZWVyIGRlcGVuZGVuY3kgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2lsbCBiZSByZXNvbHZlZCBmcm9tIGFueSB2ZXJzaW9uLCByZWdhcmRsZXNzIG9mIHRoZSByYW5nZSBzcGVjaWZpZWQgaW4gXCJwZWVyRGVwZW5kZW5jaWVzXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93QW55XG4gICAqL1xuICByZWFkb25seSBhbGxvd0FueT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVNaXNzaW5nJzogb2JqLmlnbm9yZU1pc3Npbmc/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkVmVyc2lvbnMnOiBvYmouYWxsb3dlZFZlcnNpb25zLFxuICAgICdhbGxvd0FueSc6IG9iai5hbGxvd0FueT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBydW5uaW5nIFwicG5wbSBvdXRkYXRlZFwiIG9yIFwicG5wbSB1cGRhdGUgLS1sYXRlc3RcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyNpZ25vcmVEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVEZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlRGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcge1xuICAvKipcbiAgICogQSBsaXN0IG9mIENWRSBJRHMgdGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgXCJwbnBtIGF1ZGl0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyNpZ25vcmVDdmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDdmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBHSFNBIENvZGVzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IFwicG5wbSBhdWRpdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcjaWdub3JlR2hzYXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUdoc2FzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZUN2ZXMnOiBvYmouaWdub3JlQ3Zlcz8ubWFwKHkgPT4geSksXG4gICAgJ2lnbm9yZUdoc2FzJzogb2JqLmlnbm9yZUdoc2FzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFNwZWNpZmllcyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIGluc3RhbGwgb3B0aW9uYWwgZGVwZW5kZW5jaWVzLCBldmVuIGlmIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc3lzdGVtIHJ1bm5pbmcgdGhlIGluc3RhbGwuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjb3NcbiAgICovXG4gIHJlYWRvbmx5IG9zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzI2NwdVxuICAgKi9cbiAgcmVhZG9ubHkgY3B1Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzI2xpYmNcbiAgICovXG4gIHJlYWRvbmx5IGxpYmM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnb3MnOiBvYmoub3M/Lm1hcCh5ID0+IHkpLFxuICAgICdjcHUnOiBvYmouY3B1Py5tYXAoeSA9PiB5KSxcbiAgICAnbGliYyc6IG9iai5saWJjPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggZXhhY3QgTm9kZS5qcyB2ZXJzaW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgcHJvamVjdCdzIHJ1bnRpbWUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYjbm9kZVZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52KG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdub2RlVmVyc2lvbic6IG9iai5ub2RlVmVyc2lvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIERlZmluZXMgd2hhdCBsaW5rZXIgc2hvdWxkIGJlIHVzZWQgZm9yIGluc3RhbGxpbmcgTm9kZSBwYWNrYWdlcy5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVMaW5rZXIge1xuICAvKiogaXNvbGF0ZWQgKi9cbiAgSVNPTEFURUQgPSBcImlzb2xhdGVkXCIsXG4gIC8qKiBob2lzdGVkICovXG4gIEhPSVNURUQgPSBcImhvaXN0ZWRcIixcbiAgLyoqIHBucCAqL1xuICBQTlAgPSBcInBucFwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSB3YXkgcGFja2FnZXMgYXJlIGltcG9ydGVkIGZyb20gdGhlIHN0b3JlIChpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHN5bWxpbmtzIGluc2lkZSBub2RlX21vZHVsZXMsIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIHRoZSBub2RlTGlua2VyIHNldHRpbmcsIG5vdCB0aGlzIG9uZSkuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2RcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQYWNrYWdlSW1wb3J0TWV0aG9kIHtcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogaGFyZGxpbmsgKi9cbiAgSEFSRExJTksgPSBcImhhcmRsaW5rXCIsXG4gIC8qKiBjb3B5ICovXG4gIENPUFkgPSBcImNvcHlcIixcbiAgLyoqIGNsb25lICovXG4gIENMT05FID0gXCJjbG9uZVwiLFxuICAvKiogY2xvbmUtb3ItY29weSAqL1xuICBDTE9ORV9IWVBIRU5fT1JfSFlQSEVOX0NPUFkgPSBcImNsb25lLW9yLWNvcHlcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3JcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvciB7XG4gIC8qKiBhbHdheXMgKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogbmV2ZXIgKi9cbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG59XG5cbi8qKlxuICogQW55IGxvZ3MgYXQgb3IgaGlnaGVyIHRoYW4gdGhlIGdpdmVuIGxldmVsIHdpbGwgYmUgc2hvd24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWwge1xuICAvKiogZGVidWcgKi9cbiAgREVCVUcgPSBcImRlYnVnXCIsXG4gIC8qKiBpbmZvICovXG4gIElORk8gPSBcImluZm9cIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogQWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIG91dHB1dCBzdHlsZSBvZiB0aGUgbG9ncy5cbiAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXBvcnRlclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyIHtcbiAgLyoqIHNpbGVudCAqL1xuICBTSUxFTlQgPSBcInNpbGVudFwiLFxuICAvKiogZGVmYXVsdCAqL1xuICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gIC8qKiBhcHBlbmQtb25seSAqL1xuICBBUFBFTkRfSFlQSEVOX09OTFkgPSBcImFwcGVuZC1vbmx5XCIsXG4gIC8qKiBuZGpzb24gKi9cbiAgTkRKU09OID0gXCJuZGpzb25cIixcbn1cblxuLyoqXG4gKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGxvY2FsbHkgYXZhaWxhYmxlIHBhY2thZ2VzIGFyZSBsaW5rZWQgdG8gbm9kZV9tb2R1bGVzIGluc3RlYWQgb2YgYmVpbmcgZG93bmxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBob3cgdmVyc2lvbnMgb2YgcGFja2FnZXMgaW5zdGFsbGVkIHRvIGEgcGFja2FnZS5qc29uIGZpbGUgZ2V0IHByZWZpeGVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeCB7XG4gIC8qKiBeICovXG4gIFZBTFVFX0NBUkFUID0gXCJeXCIsXG4gIC8qKiB+ICovXG4gIFZBTFVFX1RJTERFID0gXCJ+XCIsXG4gIC8qKiA9ICovXG4gIFZBTFVFX0VRVUFMUyA9IFwiPVwiLFxufVxuXG4vKipcbiAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGUge1xuICAvKiogaGlnaGVzdCAqL1xuICBISUdIRVNUID0gXCJoaWdoZXN0XCIsXG4gIC8qKiB0aW1lLWJhc2VkICovXG4gIFRJTUVfSFlQSEVOX0JBU0VEID0gXCJ0aW1lLWJhc2VkXCIsXG4gIC8qKiBsb3dlc3QtZGlyZWN0ICovXG4gIExPV0VTVF9IWVBIRU5fRElSRUNUID0gXCJsb3dlc3QtZGlyZWN0XCIsXG59XG5cbi8qKlxuICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVHJ1c3RQb2xpY3kge1xuICAvKiogb2ZmICovXG4gIE9GRiA9IFwib2ZmXCIsXG4gIC8qKiBuby1kb3duZ3JhZGUgKi9cbiAgTk9fSFlQSEVOX0RPV05HUkFERSA9IFwibm8tZG93bmdyYWRlXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIGxldmVsIG9mIGlzc3VlcyByZXBvcnRlZCBieSBgcG5wbSBhdWRpdGAuIFdoZW4gc2V0IHRvICdsb3cnLCBhbGwgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXBvcnRlZC4gV2hlbiBzZXQgdG8gJ21vZGVyYXRlJywgJ2hpZ2gnLCBvciAnY3JpdGljYWwnLCBvbmx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIHRoYXQgc2V2ZXJpdHkgb3IgaGlnaGVyIGFyZSByZXBvcnRlZC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRMZXZlbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWwge1xuICAvKiogbG93ICovXG4gIExPVyA9IFwibG93XCIsXG4gIC8qKiBtb2RlcmF0ZSAqL1xuICBNT0RFUkFURSA9IFwibW9kZXJhdGVcIixcbiAgLyoqIGhpZ2ggKi9cbiAgSElHSCA9IFwiaGlnaFwiLFxuICAvKiogY3JpdGljYWwgKi9cbiAgQ1JJVElDQUwgPSBcImNyaXRpY2FsXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBiZWhhdmlvciBvZiBib3RoIHRoZSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIGFuZCBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgd2hlbiB0aGUgcnVubmluZyBwbnBtIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGRlY2xhcmVkIG9uZS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQbU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGZpZWxkIG9mIGBkZXZFbmdpbmVzLnJ1bnRpbWVgIChhbmQgYGVuZ2luZXMucnVudGltZWApIGluIHRoZSByb290IHByb2plY3QncyBgcGFja2FnZS5qc29uYC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCBhIGRpZmZlcmVudCBsb2NhbCBiZWhhdmlvciB0aGFuIHdoYXQgaXMgd3JpdHRlbiBpbiB0aGUgbWFuaWZlc3Qg4oCUIGZvciBpbnN0YW5jZSwgZm9yY2luZyBwbnBtIHRvIGRvd25sb2FkIHRoZSBkZWNsYXJlZCBydW50aW1lIGV2ZW4gd2hlbiB0aGUgbWFuaWZlc3Qgc2V0cyBgb25GYWlsOiBcIndhcm5cImAuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJ1bnRpbWVPbkZhaWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsIHtcbiAgLyoqIGRvd25sb2FkICovXG4gIERPV05MT0FEID0gXCJkb3dubG9hZFwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8qKiB3YXJuICovXG4gIFdBUk4gPSBcIndhcm5cIixcbiAgLyoqIGlnbm9yZSAqL1xuICBJR05PUkUgPSBcImlnbm9yZVwiLFxufVxuXG4vKipcbiAqIEFkZGVkIGEgbmV3IGhvaXN0aW5nTGltaXRzIHNldHRpbmcgZm9yIGBub2RlTGlua2VyOiBob2lzdGVkYCBpbnN0YWxscywgbWlycm9yaW5nIHlhcm4ncyBgbm1Ib2lzdGluZ0xpbWl0c2AuIEl0IGFjY2VwdHMgYG5vbmVgICh0aGUgZGVmYXVsdCDigJQgaG9pc3QgYXMgZmFyIGFzIHBvc3NpYmxlKSwgd29ya3NwYWNlcyAoaG9pc3Qgb25seSBhcyBmYXIgYXMgZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSksIG9yIGRlcGVuZGVuY2llcyAoaG9pc3Qgb25seSB1cCB0byBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlJ3MgZGlyZWN0IGRlcGVuZGVuY2llcykuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hSG9pc3RpbmdMaW1pdHMge1xuICAvKiogbm9kZSAqL1xuICBOT0RFID0gXCJub2RlXCIsXG4gIC8qKiB3b3Jrc3BhY2VzICovXG4gIFdPUktTUEFDRVMgPSBcIndvcmtzcGFjZXNcIixcbiAgLyoqIGRlcGVuZGVuY2llcyAqL1xuICBERVBFTkRFTkNJRVMgPSBcImRlcGVuZGVuY2llc1wiLFxufVxuIl19
@@ -11,7 +11,7 @@ const pnpm_workspace_config_1 = require("./pnpm-workspace-config");
11
11
  * @see https://pnpm.io/pnpm-workspace_yaml
12
12
  */
13
13
  class PnpmWorkspaceYaml extends component_1.Component {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYaml", version: "0.101.21" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYaml", version: "0.101.23" };
15
15
  /**
16
16
  * Returns the `PnpmWorkspaceYaml` instance associated with a project or
17
17
  * `undefined` if there is none.
@@ -113,7 +113,7 @@ var TrailingComma;
113
113
  * Represents prettier configuration.
114
114
  */
115
115
  class Prettier extends component_1.Component {
116
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Prettier", version: "0.101.21" };
116
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Prettier", version: "0.101.23" };
117
117
  static of(project) {
118
118
  const isPrettier = (c) => c instanceof Prettier;
119
119
  return project.components.find(isPrettier);
@@ -16,7 +16,7 @@ const biome_1 = require("./biome/biome");
16
16
  * and has no expectations around the project's main language.
17
17
  */
18
18
  class Projenrc extends projenrc_1.ProjenrcFile {
19
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Projenrc", version: "0.101.21" };
19
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Projenrc", version: "0.101.23" };
20
20
  filePath;
21
21
  constructor(project, options = {}) {
22
22
  super(project);
@@ -170,7 +170,7 @@ var TypeScriptJsxMode;
170
170
  * Extending from more than one base config file requires TypeScript 5.0+.
171
171
  */
172
172
  class TypescriptConfigExtends {
173
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.101.21" };
173
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfigExtends", version: "0.101.23" };
174
174
  /**
175
175
  * Factory for creation from array of file paths.
176
176
  *
@@ -204,7 +204,7 @@ class TypescriptConfigExtends {
204
204
  }
205
205
  exports.TypescriptConfigExtends = TypescriptConfigExtends;
206
206
  class TypescriptConfig extends component_1.Component {
207
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.101.21" };
207
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.TypescriptConfig", version: "0.101.23" };
208
208
  _extends;
209
209
  compilerOptions;
210
210
  includeSet;
@@ -20,7 +20,7 @@ const PATCH_CREATED_OUTPUT = "patch_created";
20
20
  * Upgrade node project dependencies.
21
21
  */
22
22
  class UpgradeDependencies extends component_1.Component {
23
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.101.21" };
23
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependencies", version: "0.101.23" };
24
24
  /**
25
25
  * The workflows that execute the upgrades. One workflow per branch.
26
26
  */
@@ -399,7 +399,7 @@ exports.UpgradeDependencies = UpgradeDependencies;
399
399
  */
400
400
  class UpgradeDependenciesSchedule {
401
401
  cron;
402
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.101.21" };
402
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.UpgradeDependenciesSchedule", version: "0.101.23" };
403
403
  /**
404
404
  * Disables automatic upgrades.
405
405
  */
@@ -95,7 +95,7 @@ var YarnWorkerPoolMode;
95
95
  YarnWorkerPoolMode["WORKERS"] = "workers";
96
96
  })(YarnWorkerPoolMode || (exports.YarnWorkerPoolMode = YarnWorkerPoolMode = {}));
97
97
  class Yarnrc extends component_1.Component {
98
- static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.101.21" };
98
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.Yarnrc", version: "0.101.23" };
99
99
  constructor(project, options = {}) {
100
100
  super(project);
101
101
  this.updateGitAttributes();