projen 0.52.21 → 0.52.25

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 (235) hide show
  1. package/.jsii +139 -107
  2. package/changelog.md +3 -3
  3. package/docs/api/API.md +42 -39
  4. package/lib/awscdk/auto-discover.d.ts +14 -46
  5. package/lib/awscdk/auto-discover.js +8 -22
  6. package/lib/awscdk/awscdk-app-java.d.ts +10 -32
  7. package/lib/awscdk/awscdk-app-java.js +5 -9
  8. package/lib/awscdk/awscdk-app-ts.d.ts +15 -35
  9. package/lib/awscdk/awscdk-app-ts.js +6 -14
  10. package/lib/awscdk/awscdk-construct.d.ts +14 -28
  11. package/lib/awscdk/awscdk-construct.js +8 -16
  12. package/lib/awscdk/awscdk-deps-java.d.ts +1 -8
  13. package/lib/awscdk/awscdk-deps-java.js +3 -10
  14. package/lib/awscdk/awscdk-deps-js.d.ts +1 -8
  15. package/lib/awscdk/awscdk-deps-js.js +3 -10
  16. package/lib/awscdk/awscdk-deps.d.ts +28 -67
  17. package/lib/awscdk/awscdk-deps.js +5 -12
  18. package/lib/awscdk/cdk-config.d.ts +19 -51
  19. package/lib/awscdk/cdk-config.js +13 -11
  20. package/lib/awscdk/cdk-tasks.d.ts +7 -24
  21. package/lib/awscdk/cdk-tasks.js +3 -8
  22. package/lib/awscdk/integration-test.d.ts +7 -29
  23. package/lib/awscdk/integration-test.js +3 -8
  24. package/lib/awscdk/lambda-function.d.ts +22 -50
  25. package/lib/awscdk/lambda-function.js +11 -24
  26. package/lib/build/build-workflow.d.ts +33 -78
  27. package/lib/build/build-workflow.js +15 -25
  28. package/lib/cdk/auto-discover-base.d.ts +11 -34
  29. package/lib/cdk/auto-discover-base.js +5 -15
  30. package/lib/cdk/construct-lib.d.ts +8 -22
  31. package/lib/cdk/construct-lib.js +3 -8
  32. package/lib/cdk/integration-test-base.d.ts +12 -38
  33. package/lib/cdk/integration-test-base.js +2 -8
  34. package/lib/cdk/jsii-docgen.d.ts +6 -12
  35. package/lib/cdk/jsii-docgen.js +6 -8
  36. package/lib/cdk/jsii-project.d.ts +16 -95
  37. package/lib/cdk/jsii-project.js +3 -10
  38. package/lib/cdk8s/auto-discover.d.ts +6 -23
  39. package/lib/cdk8s/auto-discover.js +6 -15
  40. package/lib/cdk8s/cdk8s-app-ts.d.ts +21 -43
  41. package/lib/cdk8s/cdk8s-app-ts.js +4 -7
  42. package/lib/cdk8s/cdk8s-construct.d.ts +12 -27
  43. package/lib/cdk8s/cdk8s-construct.js +3 -7
  44. package/lib/cdk8s/integration-test.d.ts +2 -9
  45. package/lib/cdk8s/integration-test.js +3 -8
  46. package/lib/cdktf/cdktf-construct.d.ts +3 -12
  47. package/lib/cdktf/cdktf-construct.js +3 -7
  48. package/lib/component.d.ts +4 -17
  49. package/lib/component.js +6 -19
  50. package/lib/dependencies.d.ts +44 -77
  51. package/lib/dependencies.js +50 -38
  52. package/lib/dev-env.d.ts +26 -53
  53. package/lib/dev-env.js +9 -19
  54. package/lib/docker-compose.d.ts +83 -209
  55. package/lib/docker-compose.js +38 -61
  56. package/lib/file.d.ts +24 -71
  57. package/lib/file.js +4 -16
  58. package/lib/gitattributes.d.ts +3 -14
  59. package/lib/gitattributes.js +5 -16
  60. package/lib/github/auto-approve.d.ts +7 -23
  61. package/lib/github/auto-approve.js +3 -8
  62. package/lib/github/auto-merge.d.ts +7 -29
  63. package/lib/github/auto-merge.js +7 -16
  64. package/lib/github/dependabot.d.ts +54 -147
  65. package/lib/github/dependabot.js +81 -22
  66. package/lib/github/github-project.d.ts +26 -70
  67. package/lib/github/github-project.js +5 -10
  68. package/lib/github/github.d.ts +19 -58
  69. package/lib/github/github.js +9 -30
  70. package/lib/github/mergify.d.ts +9 -54
  71. package/lib/github/mergify.js +2 -14
  72. package/lib/github/pr-template.d.ts +3 -13
  73. package/lib/github/pr-template.js +3 -8
  74. package/lib/github/pull-request-lint.d.ts +8 -28
  75. package/lib/github/pull-request-lint.js +3 -9
  76. package/lib/github/stale.d.ts +17 -47
  77. package/lib/github/stale.js +6 -10
  78. package/lib/github/task-workflow.d.ts +21 -63
  79. package/lib/github/task-workflow.js +3 -8
  80. package/lib/github/workflows-model.d.ts +199 -582
  81. package/lib/github/workflows-model.js +5 -4
  82. package/lib/github/workflows.d.ts +14 -41
  83. package/lib/github/workflows.js +8 -16
  84. package/lib/gitlab/configuration-model.d.ts +145 -947
  85. package/lib/gitlab/configuration-model.js +11 -28
  86. package/lib/gitlab/configuration.d.ts +31 -121
  87. package/lib/gitlab/configuration.js +14 -49
  88. package/lib/gitlab/gitlab-configuration.d.ts +2 -13
  89. package/lib/gitlab/gitlab-configuration.js +4 -15
  90. package/lib/gitlab/nested-configuration.d.ts +1 -9
  91. package/lib/gitlab/nested-configuration.js +3 -8
  92. package/lib/gitpod.d.ts +71 -167
  93. package/lib/gitpod.js +75 -42
  94. package/lib/ignore-file.d.ts +4 -23
  95. package/lib/ignore-file.js +6 -25
  96. package/lib/ini.d.ts +2 -14
  97. package/lib/ini.js +3 -13
  98. package/lib/java/java-project.d.ts +29 -70
  99. package/lib/java/java-project.js +10 -17
  100. package/lib/java/junit.d.ts +5 -17
  101. package/lib/java/junit.js +3 -8
  102. package/lib/java/maven-compile.d.ts +4 -13
  103. package/lib/java/maven-compile.js +3 -8
  104. package/lib/java/maven-packaging.d.ts +6 -21
  105. package/lib/java/maven-packaging.js +3 -8
  106. package/lib/java/maven-sample.d.ts +2 -12
  107. package/lib/java/maven-sample.js +3 -8
  108. package/lib/java/pom.d.ts +38 -100
  109. package/lib/java/pom.js +13 -25
  110. package/lib/java/projenrc.d.ts +7 -22
  111. package/lib/java/projenrc.js +3 -8
  112. package/lib/javascript/bundler.d.ts +30 -72
  113. package/lib/javascript/bundler.js +13 -21
  114. package/lib/javascript/eslint.d.ts +27 -84
  115. package/lib/javascript/eslint.js +11 -30
  116. package/lib/javascript/jest.d.ts +91 -344
  117. package/lib/javascript/jest.js +6 -23
  118. package/lib/javascript/node-package.d.ts +111 -259
  119. package/lib/javascript/node-package.js +64 -81
  120. package/lib/javascript/node-project.d.ts +112 -220
  121. package/lib/javascript/node-project.js +54 -73
  122. package/lib/javascript/npm-config.d.ts +9 -19
  123. package/lib/javascript/npm-config.js +9 -16
  124. package/lib/javascript/prettier.d.ts +65 -196
  125. package/lib/javascript/prettier.js +70 -46
  126. package/lib/javascript/projenrc.d.ts +2 -12
  127. package/lib/javascript/projenrc.js +3 -8
  128. package/lib/javascript/typescript-config.d.ts +62 -158
  129. package/lib/javascript/typescript-config.js +31 -18
  130. package/lib/javascript/upgrade-dependencies.d.ts +35 -94
  131. package/lib/javascript/upgrade-dependencies.js +21 -51
  132. package/lib/json.d.ts +3 -17
  133. package/lib/json.js +3 -13
  134. package/lib/license.d.ts +3 -20
  135. package/lib/license.js +2 -13
  136. package/lib/logger.d.ts +18 -62
  137. package/lib/logger.js +17 -37
  138. package/lib/makefile.d.ts +14 -45
  139. package/lib/makefile.js +7 -25
  140. package/lib/object-file.d.ts +19 -39
  141. package/lib/object-file.js +17 -28
  142. package/lib/option-hints.d.ts +4 -13
  143. package/lib/option-hints.js +11 -5
  144. package/lib/project-build.d.ts +7 -26
  145. package/lib/project-build.js +3 -8
  146. package/lib/project.d.ts +64 -186
  147. package/lib/project.js +43 -91
  148. package/lib/projects.d.ts +11 -32
  149. package/lib/projects.js +4 -8
  150. package/lib/projenrc-json.d.ts +2 -12
  151. package/lib/projenrc-json.js +3 -8
  152. package/lib/python/pip.d.ts +7 -23
  153. package/lib/python/pip.js +8 -17
  154. package/lib/python/poetry.d.ts +36 -121
  155. package/lib/python/poetry.js +12 -26
  156. package/lib/python/projenrc.d.ts +4 -15
  157. package/lib/python/projenrc.js +3 -8
  158. package/lib/python/pytest.d.ts +3 -16
  159. package/lib/python/pytest.js +2 -8
  160. package/lib/python/python-deps.d.ts +7 -21
  161. package/lib/python/python-deps.js +1 -1
  162. package/lib/python/python-env.d.ts +1 -6
  163. package/lib/python/python-env.js +1 -1
  164. package/lib/python/python-packaging.d.ts +12 -34
  165. package/lib/python/python-packaging.js +1 -1
  166. package/lib/python/python-project.d.ts +34 -79
  167. package/lib/python/python-project.js +7 -20
  168. package/lib/python/python-sample.d.ts +2 -9
  169. package/lib/python/python-sample.js +3 -8
  170. package/lib/python/requirements-file.d.ts +4 -19
  171. package/lib/python/requirements-file.js +5 -15
  172. package/lib/python/setuppy.d.ts +11 -39
  173. package/lib/python/setuppy.js +3 -13
  174. package/lib/python/setuptools.d.ts +2 -14
  175. package/lib/python/setuptools.js +3 -8
  176. package/lib/python/venv.d.ts +4 -14
  177. package/lib/python/venv.js +4 -11
  178. package/lib/readme.d.ts +7 -16
  179. package/lib/readme.js +5 -7
  180. package/lib/release/publisher.d.ts +103 -206
  181. package/lib/release/publisher.js +47 -59
  182. package/lib/release/release-trigger.d.ts +16 -48
  183. package/lib/release/release-trigger.js +8 -18
  184. package/lib/release/release.d.ts +50 -110
  185. package/lib/release/release.js +9 -24
  186. package/lib/run-task.js +1820 -0
  187. package/lib/sample-file.d.ts +14 -47
  188. package/lib/sample-file.js +9 -30
  189. package/lib/semver.d.ts +4 -21
  190. package/lib/semver.js +6 -20
  191. package/lib/source-code.d.ts +7 -23
  192. package/lib/source-code.js +7 -19
  193. package/lib/task-model.d.ts +21 -61
  194. package/lib/task-model.js +1 -1
  195. package/lib/task-runtime.d.ts +7 -24
  196. package/lib/task-runtime.js +7 -20
  197. package/lib/task.d.ts +29 -73
  198. package/lib/task.js +28 -61
  199. package/lib/tasks.d.ts +12 -34
  200. package/lib/tasks.js +14 -36
  201. package/lib/testing.d.ts +6 -10
  202. package/lib/testing.js +8 -12
  203. package/lib/textfile.d.ts +9 -24
  204. package/lib/textfile.js +9 -19
  205. package/lib/toml.d.ts +2 -14
  206. package/lib/toml.js +3 -13
  207. package/lib/typescript/projenrc.d.ts +4 -14
  208. package/lib/typescript/projenrc.js +3 -8
  209. package/lib/typescript/typescript-typedoc.d.ts +1 -6
  210. package/lib/typescript/typescript-typedoc.js +3 -8
  211. package/lib/typescript/typescript.d.ts +24 -82
  212. package/lib/typescript/typescript.js +6 -15
  213. package/lib/version.d.ts +9 -38
  214. package/lib/version.js +2 -11
  215. package/lib/vscode/devcontainer.d.ts +10 -30
  216. package/lib/vscode/devcontainer.js +10 -26
  217. package/lib/vscode/launch-config.d.ts +18 -97
  218. package/lib/vscode/launch-config.js +9 -15
  219. package/lib/vscode/vscode.d.ts +0 -9
  220. package/lib/vscode/vscode.js +2 -11
  221. package/lib/web/next.d.ts +19 -60
  222. package/lib/web/next.js +6 -20
  223. package/lib/web/postcss.d.ts +3 -24
  224. package/lib/web/postcss.js +3 -8
  225. package/lib/web/react.d.ts +13 -60
  226. package/lib/web/react.js +7 -32
  227. package/lib/web/tailwind.d.ts +1 -15
  228. package/lib/web/tailwind.js +3 -7
  229. package/lib/xmlfile.d.ts +2 -14
  230. package/lib/xmlfile.js +3 -13
  231. package/lib/yaml.d.ts +4 -19
  232. package/lib/yaml.js +3 -13
  233. package/package.json +5 -5
  234. package/releasetag.txt +1 -1
  235. package/version.txt +1 -1
@@ -5,24 +5,21 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WorkflowWhen = exports.Strategy = exports.LinkType = exports.DefaultElement = exports.KubernetesEnum = exports.DeploymentTier = exports.Action = exports.JobWhen = exports.CacheWhen = void 0;
7
7
  /**
8
- * (experimental) Configure when artifacts are uploaded depended on job status.
9
- *
8
+ * Configure when artifacts are uploaded depended on job status.
10
9
  * @see https://docs.gitlab.com/ee/ci/yaml/#cachewhen
11
- * @experimental
12
10
  */
13
11
  var CacheWhen;
14
12
  (function (CacheWhen) {
13
+ /** Upload artifacts regardless of job status. */
15
14
  CacheWhen["ALWAYS"] = "always";
15
+ /** Upload artifacts only when the job fails. */
16
16
  CacheWhen["ON_FAILURE"] = "on_failure";
17
+ /** Upload artifacts only when the job succeeds (this is the default). */
17
18
  CacheWhen["ON_SUCCESS"] = "on_success";
18
19
  })(CacheWhen = exports.CacheWhen || (exports.CacheWhen = {}));
19
20
  /**
20
- * (experimental) Describes the conditions for when to run the job.
21
- *
22
- * Defaults to 'on_success'.
23
- *
21
+ * Describes the conditions for when to run the job. Defaults to 'on_success'.
24
22
  * @see https://docs.gitlab.com/ee/ci/yaml/#when
25
- * @experimental
26
23
  */
27
24
  var JobWhen;
28
25
  (function (JobWhen) {
@@ -34,13 +31,9 @@ var JobWhen;
34
31
  JobWhen["ON_SUCCESS"] = "on_success";
35
32
  })(JobWhen = exports.JobWhen || (exports.JobWhen = {}));
36
33
  /**
37
- * (experimental) Specifies what this job will do.
38
- *
39
- * 'start' (default) indicates the job will start the
34
+ * Specifies what this job will do. 'start' (default) indicates the job will start the
40
35
  * deployment. 'prepare' indicates this will not affect the deployment. 'stop' indicates
41
36
  * this will stop the deployment.
42
- *
43
- * @experimental
44
37
  */
45
38
  var Action;
46
39
  (function (Action) {
@@ -49,9 +42,8 @@ var Action;
49
42
  Action["STOP"] = "stop";
50
43
  })(Action = exports.Action || (exports.Action = {}));
51
44
  /**
52
- * (experimental) Explicitly specifies the tier of the deployment environment if non-standard environment name is used.
53
- *
54
- * @experimental
45
+ * Explicitly specifies the tier of the deployment environment if non-standard environment
46
+ * name is used.
55
47
  */
56
48
  var DeploymentTier;
57
49
  (function (DeploymentTier) {
@@ -68,9 +60,6 @@ var KubernetesEnum;
68
60
  (function (KubernetesEnum) {
69
61
  KubernetesEnum["ACTIVE"] = "active";
70
62
  })(KubernetesEnum = exports.KubernetesEnum || (exports.KubernetesEnum = {}));
71
- /**
72
- * @experimental
73
- */
74
63
  var DefaultElement;
75
64
  (function (DefaultElement) {
76
65
  DefaultElement["AFTER_SCRIPT"] = "after_script";
@@ -85,9 +74,7 @@ var DefaultElement;
85
74
  DefaultElement["TIMEOUT"] = "timeout";
86
75
  })(DefaultElement = exports.DefaultElement || (exports.DefaultElement = {}));
87
76
  /**
88
- * (experimental) The content kind of what users can download via url.
89
- *
90
- * @experimental
77
+ * The content kind of what users can download via url.
91
78
  */
92
79
  var LinkType;
93
80
  (function (LinkType) {
@@ -106,17 +93,13 @@ var Strategy;
106
93
  Strategy["DEPEND"] = "depend";
107
94
  })(Strategy = exports.Strategy || (exports.Strategy = {}));
108
95
  /**
109
- * (experimental) Describes the conditions for when to run the job.
110
- *
111
- * Defaults to 'on_success'.
96
+ * Describes the conditions for when to run the job. Defaults to 'on_success'.
112
97
  * The value can only be 'always' or 'never' when used with workflow.
113
- *
114
98
  * @see https://docs.gitlab.com/ee/ci/yaml/#workflowrules
115
- * @experimental
116
99
  */
117
100
  var WorkflowWhen;
118
101
  (function (WorkflowWhen) {
119
102
  WorkflowWhen["ALWAYS"] = "always";
120
103
  WorkflowWhen["NEVER"] = "never";
121
104
  })(WorkflowWhen = exports.WorkflowWhen || (exports.WorkflowWhen = {}));
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTJDO0FBQzNDLDhHQUE4RztBQUM5RyxpRUFBaUU7Ozs7Ozs7OztBQVNqRSxJQUFZLFNBT1g7QUFQRCxXQUFZLFNBQVM7SUFFbkIsOEJBQWlCLENBQUE7SUFFakIsc0NBQXlCLENBQUE7SUFFekIsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCOzs7Ozs7Ozs7QUFzSkQsSUFBWSxPQU9YO0FBUEQsV0FBWSxPQUFPO0lBQ2pCLDRCQUFpQixDQUFBO0lBQ2pCLDhCQUFtQixDQUFBO0lBQ25CLDRCQUFpQixDQUFBO0lBQ2pCLDBCQUFlLENBQUE7SUFDZixvQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUFcsT0FBTyxHQUFQLGVBQU8sS0FBUCxlQUFPLFFBT2xCOzs7Ozs7Ozs7O0FBcUZELElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiw2QkFBbUIsQ0FBQTtJQUNuQix5QkFBZSxDQUFBO0lBQ2YsdUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxNQUFNLEdBQU4sY0FBTSxLQUFOLGNBQU0sUUFJakI7Ozs7OztBQUdELElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQixpQ0FBZSxDQUFBO0lBQ2YsMkNBQXlCLENBQUE7SUFDekIscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5XLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBTXpCO0FBb0JEOztHQUVHO0FBQ0gsSUFBWSxjQUVYO0FBRkQsV0FBWSxjQUFjO0lBQ3hCLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6Qjs7OztBQVVELElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtJQUM3Qix5Q0FBdUIsQ0FBQTtJQUN2QixpREFBK0IsQ0FBQTtJQUMvQixpQ0FBZSxDQUFBO0lBQ2YsaUNBQWUsQ0FBQTtJQUNmLGlEQUErQixDQUFBO0lBQy9CLGlDQUFlLENBQUE7SUFDZix1Q0FBcUIsQ0FBQTtJQUNyQiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVhXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBV3pCOzs7Ozs7QUFxREQsSUFBWSxRQUtYO0FBTEQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBS25CO0FBdUREOzs7O0dBSUc7QUFDSCxJQUFZLFFBRVg7QUFGRCxXQUFZLFFBQVE7SUFDbEIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUZXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBRW5COzs7Ozs7Ozs7O0FBK0JELElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC9cbi8vIFNjaGVtYSBmcm9tOiBodHRwczovL2dpdGxhYi5jb20vZ2l0bGFiLW9yZy9naXRsYWIvLS9yYXcvbWFzdGVyL2FwcC9hc3NldHMvamF2YXNjcmlwdHMvZWRpdG9yL3NjaGVtYS9jaS5qc29uXG4vLyBJbml0aWFsIFR5cGVTY3JpcHQgSW50ZXJmYWNlcyBmcm9tOiBodHRwczovL2FwcC5xdWlja3R5cGUuaW8vI1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgd2hlbj86IENhY2hlV2hlbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgZW51bSBDYWNoZVdoZW4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBPTl9GQUlMVVJFID0gXCJvbl9mYWlsdXJlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYWZ0ZXJTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhcnRpZmFjdHM/OiBBcnRpZmFjdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBiZWZvcmVTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2FjaGU/OiBDYWNoZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpbWFnZT86IEltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpbnRlcnJ1cHRpYmxlPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZXRyeT86IFJldHJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzZXJ2aWNlcz86IFNlcnZpY2VbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEFydGlmYWN0cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGV4cGlyZUluPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBleHBvc2VBcz86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVwb3J0cz86IFJlcG9ydHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdW50cmFja2VkPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB3aGVuPzogQ2FjaGVXaGVuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb2JlcnR1cmE/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvZGVxdWFsaXR5Pzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbnRhaW5lclNjYW5uaW5nPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkYXN0Pzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXBlbmRlbmN5U2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZG90ZW52Pzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkganVuaXQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsaWNlbnNlTWFuYWdlbWVudD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsaWNlbnNlU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxzaWY/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG1ldHJpY3M/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2U/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZXF1aXJlbWVudHM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNhc3Q/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2VjcmV0RGV0ZWN0aW9uPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRlcnJhZm9ybT86IHN0cmluZ1tdO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW50cnlwb2ludD86IGFueVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWF4PzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHdoZW4/OiBhbnk7XG59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29tbWFuZD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxvY2FsPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmNsdWRlUnVsZVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBmaWxlPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlbW90ZT86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJbmNsdWRlUnVsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbGxvd0ZhaWx1cmU/OiBib29sZWFuIHwgQWxsb3dGYWlsdXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNoYW5nZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZXhpc3RzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGlmPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3RhcnRJbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEFsbG93RmFpbHVyZSB7XG4gIHJlYWRvbmx5IGV4aXRDb2RlczogbnVtYmVyW10gfCBudW1iZXI7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGVudW0gSm9iV2hlbiB7XG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIERFTEFZRUQgPSBcImRlbGF5ZWRcIixcbiAgTUFOVUFMID0gXCJtYW51YWxcIixcbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG4gIE9OX0ZBSUxVUkUgPSBcIm9uX2ZhaWx1cmVcIixcbiAgT05fU1VDQ0VTUyA9IFwib25fc3VjY2Vzc1wiLFxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEpvYiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhZnRlclNjcmlwdD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhbGxvd0ZhaWx1cmU/OiBib29sZWFuIHwgQWxsb3dGYWlsdXJlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXJ0aWZhY3RzPzogQXJ0aWZhY3RzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGJlZm9yZVNjcmlwdD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjYWNoZT86IENhY2hlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb3ZlcmFnZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogRW52aXJvbm1lbnQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZXhjZXB0Pzogc3RyaW5nW10gfCBGaWx0ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpbWFnZT86IEltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpbmhlcml0PzogSW5oZXJpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgaW50ZXJydXB0aWJsZT86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBuZWVkcz86IEFycmF5PE5lZWQgfCBzdHJpbmc+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG9ubHk/OiBzdHJpbmdbXSB8IEZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHBhcmFsbGVsPzogUGFyYWxsZWwgfCBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlbGVhc2U/OiBSZWxlYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZXRyeT86IFJldHJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVsZXM/OiBJbmNsdWRlUnVsZVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2NyaXB0Pzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNlY3JldHM/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBTZWNyZXQ+PjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc2VydmljZXM/OiBTZXJ2aWNlW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHN0YWdlPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3RhcnRJbj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YWdzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGltZW91dD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdHJpZ2dlcj86IFRyaWdnZXIgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHdoZW4/OiBKb2JXaGVuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYWN0aW9uPzogQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhdXRvU3RvcEluPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXBsb3ltZW50VGllcj86IERlcGxveW1lbnRUaWVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBrdWJlcm5ldGVzPzogS3ViZXJuZXRlc0NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgb25TdG9wPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGVudW0gQWN0aW9uIHtcbiAgUFJFUEFSRSA9IFwicHJlcGFyZVwiLFxuICBTVEFSVCA9IFwic3RhcnRcIixcbiAgU1RPUCA9IFwic3RvcFwiLFxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgZW51bSBEZXBsb3ltZW50VGllciB7XG4gIERFVkVMT1BNRU5UID0gXCJkZXZlbG9wbWVudFwiLFxuICBPVEhFUiA9IFwib3RoZXJcIixcbiAgUFJPRFVDVElPTiA9IFwicHJvZHVjdGlvblwiLFxuICBTVEFHSU5HID0gXCJzdGFnaW5nXCIsXG4gIFRFU1RJTkcgPSBcInRlc3RpbmdcIixcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBLdWJlcm5ldGVzQ29uZmlnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNoYW5nZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkga3ViZXJuZXRlcz86IEt1YmVybmV0ZXNFbnVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZWZzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgam9iIGJhc2VkIG9uIGlmIEt1YmVybmV0ZXMgaW50ZWdyYXRpb24gaXMgYWN0aXZlLlxuICovXG5leHBvcnQgZW51bSBLdWJlcm5ldGVzRW51bSB7XG4gIEFDVElWRSA9IFwiYWN0aXZlXCIsXG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSW5oZXJpdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVmYXVsdD86IERlZmF1bHRFbGVtZW50W10gfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nW10gfCBib29sZWFuO1xufVxuXG5leHBvcnQgZW51bSBEZWZhdWx0RWxlbWVudCB7XG4gIEFGVEVSX1NDUklQVCA9IFwiYWZ0ZXJfc2NyaXB0XCIsXG4gIEFSVElGQUNUUyA9IFwiYXJ0aWZhY3RzXCIsXG4gIEJFRk9SRV9TQ1JJUFQgPSBcImJlZm9yZV9zY3JpcHRcIixcbiAgQ0FDSEUgPSBcImNhY2hlXCIsXG4gIElNQUdFID0gXCJpbWFnZVwiLFxuICBJTlRFUlJVUFRJQkxFID0gXCJpbnRlcnJ1cHRpYmxlXCIsXG4gIFJFVFJZID0gXCJyZXRyeVwiLFxuICBTRVJWSUNFUyA9IFwic2VydmljZXNcIixcbiAgVEFHUyA9IFwidGFnc1wiLFxuICBUSU1FT1VUID0gXCJ0aW1lb3V0XCIsXG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIE5lZWQge1xuICByZWFkb25seSBhcnRpZmFjdHM/OiBib29sZWFuO1xuICByZWFkb25seSBqb2I6IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW9uYWw/OiBib29sZWFuO1xuICByZWFkb25seSBwaXBlbGluZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBQYXJhbGxlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtYXRyaXg6IFJlY29yZDxzdHJpbmcsIGFueVtdPltdO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFJlbGVhc2Uge1xuICByZWFkb25seSBhc3NldHM/OiBBc3NldHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtaWxlc3RvbmVzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByZWxlYXNlZEF0Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRhZ05hbWU6IHN0cmluZztcbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBBc3NldHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsaW5rczogTGlua1tdO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBmaWxlcGF0aD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsaW5rVHlwZT86IExpbmtUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGVudW0gTGlua1R5cGUge1xuICBJTUFHRSA9IFwiaW1hZ2VcIixcbiAgT1RIRVIgPSBcIm90aGVyXCIsXG4gIFBBQ0tBR0UgPSBcInBhY2thZ2VcIixcbiAgUlVOQk9PSyA9IFwicnVuYm9va1wiLFxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YXVsdDogVmF1bHRDb25maWc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBWYXVsdENvbmZpZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGVuZ2luZTogRW5naW5lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZmllbGQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBFbmdpbmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBTdHJhdGVneTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgaW5jbHVkZT86IFRyaWdnZXJJbmNsdWRlW107XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgVHJpZ2dlckluY2x1ZGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsb2NhbD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGFydGlmYWN0Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGpvYj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcm9qZWN0Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBZb3UgY2FuIG1pcnJvciB0aGUgcGlwZWxpbmUgc3RhdHVzIGZyb20gdGhlIHRyaWdnZXJlZCBwaXBlbGluZSB0byB0aGUgc291cmNlIGJyaWRnZSBqb2JcbiAqIGJ5IHVzaW5nIHN0cmF0ZWd5OiBkZXBlbmRcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jdHJpZ2dlcnN0cmF0ZWd5XG4gKi9cbmV4cG9ydCBlbnVtIFN0cmF0ZWd5IHtcbiAgREVQRU5EID0gXCJkZXBlbmRcIixcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVDb25maWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3cge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVsZXM/OiBXb3JrZmxvd1J1bGVbXTtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dSdWxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjaGFuZ2VzPzogc3RyaW5nW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGV4aXN0cz86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpZj86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgd2hlbj86IEpvYldoZW47XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBlbnVtIFdvcmtmbG93V2hlbiB7XG4gIEFMV0FZUyA9IFwiYWx3YXlzXCIsXG4gIE5FVkVSID0gXCJuZXZlclwiLFxufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRsYWIvY29uZmlndXJhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTJDO0FBQzNDLDhHQUE4RztBQUM5RyxpRUFBaUU7OztBQVdqRTs7O0dBR0c7QUFDSCxJQUFZLFNBT1g7QUFQRCxXQUFZLFNBQVM7SUFDbkIsaURBQWlEO0lBQ2pELDhCQUFpQixDQUFBO0lBQ2pCLGdEQUFnRDtJQUNoRCxzQ0FBeUIsQ0FBQTtJQUN6Qix5RUFBeUU7SUFDekUsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCO0FBc0xEOzs7R0FHRztBQUNILElBQVksT0FPWDtBQVBELFdBQVksT0FBTztJQUNqQiw0QkFBaUIsQ0FBQTtJQUNqQiw4QkFBbUIsQ0FBQTtJQUNuQiw0QkFBaUIsQ0FBQTtJQUNqQiwwQkFBZSxDQUFBO0lBQ2Ysb0NBQXlCLENBQUE7SUFDekIsb0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVBXLE9BQU8sR0FBUCxlQUFPLEtBQVAsZUFBTyxRQU9sQjtBQXlGRDs7OztHQUlHO0FBQ0gsSUFBWSxNQUlYO0FBSkQsV0FBWSxNQUFNO0lBQ2hCLDZCQUFtQixDQUFBO0lBQ25CLHlCQUFlLENBQUE7SUFDZix1QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLE1BQU0sR0FBTixjQUFNLEtBQU4sY0FBTSxRQUlqQjtBQUVEOzs7R0FHRztBQUNILElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQixpQ0FBZSxDQUFBO0lBQ2YsMkNBQXlCLENBQUE7SUFDekIscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5XLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBTXpCO0FBeUJEOztHQUVHO0FBQ0gsSUFBWSxjQUVYO0FBRkQsV0FBWSxjQUFjO0lBQ3hCLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQWVELElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4QiwrQ0FBNkIsQ0FBQTtJQUM3Qix5Q0FBdUIsQ0FBQTtJQUN2QixpREFBK0IsQ0FBQTtJQUMvQixpQ0FBZSxDQUFBO0lBQ2YsaUNBQWUsQ0FBQTtJQUNmLGlEQUErQixDQUFBO0lBQy9CLGlDQUFlLENBQUE7SUFDZix1Q0FBcUIsQ0FBQTtJQUNyQiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVhXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBV3pCO0FBOEREOztHQUVHO0FBQ0gsSUFBWSxRQUtYO0FBTEQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZiwyQkFBZSxDQUFBO0lBQ2YsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBS25CO0FBc0VEOzs7O0dBSUc7QUFDSCxJQUFZLFFBRVg7QUFGRCxXQUFZLFFBQVE7SUFDbEIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUZXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBRW5CO0FBdUNEOzs7O0dBSUc7QUFDSCxJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDdEIsaUNBQWlCLENBQUE7SUFDakIsK0JBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFHdkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvXG4vLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9naXRsYWIuY29tL2dpdGxhYi1vcmcvZ2l0bGFiLy0vcmF3L21hc3Rlci9hcHAvYXNzZXRzL2phdmFzY3JpcHRzL2VkaXRvci9zY2hlbWEvY2kuanNvblxuLy8gSW5pdGlhbCBUeXBlU2NyaXB0IEludGVyZmFjZXMgZnJvbTogaHR0cHM6Ly9hcHAucXVpY2t0eXBlLmlvLyNcblxuLyoqXG4gKiBDYWNoZSBEZWZpbml0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlIHtcbiAgLyoqIERlZmluZXMgd2hlbiB0byBzYXZlIHRoZSBjYWNoZSwgYmFzZWQgb24gdGhlIHN0YXR1cyBvZiB0aGUgam9iIChEZWZhdWx0OiBKb2IgU3VjY2VzcykuICovXG4gIHJlYWRvbmx5IHdoZW4/OiBDYWNoZVdoZW47XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHdoZW4gYXJ0aWZhY3RzIGFyZSB1cGxvYWRlZCBkZXBlbmRlZCBvbiBqb2Igc3RhdHVzLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNjYWNoZXdoZW5cbiAqL1xuZXhwb3J0IGVudW0gQ2FjaGVXaGVuIHtcbiAgLyoqIFVwbG9hZCBhcnRpZmFjdHMgcmVnYXJkbGVzcyBvZiBqb2Igc3RhdHVzLiAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogVXBsb2FkIGFydGlmYWN0cyBvbmx5IHdoZW4gdGhlIGpvYiBmYWlscy4gKi9cbiAgT05fRkFJTFVSRSA9IFwib25fZmFpbHVyZVwiLFxuICAvKiogVXBsb2FkIGFydGlmYWN0cyBvbmx5IHdoZW4gdGhlIGpvYiBzdWNjZWVkcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuICovXG4gIE9OX1NVQ0NFU1MgPSBcIm9uX3N1Y2Nlc3NcIixcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgQ0kgQ29uZmlndXJhdGlvbi4gSm9icyB0aGF0IGRvIG5vdCBkZWZpbmUgb25lIG9yIG1vcmUgb2YgdGhlIGxpc3RlZCBrZXl3b3JkcyB1c2UgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHQgc2VjdGlvbi5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jZGVmYXVsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHQge1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICphZnRlciogYWxsIGpvYnMuIENhbiBiZSBvdmVycmlkZW4gYnkgdGhlIGpvYiBsZXZlbCBgYWZ0ZXJTY3JpcHQuICovXG4gIHJlYWRvbmx5IGFmdGVyU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIExpc3Qgb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBqb2IgaWYgaXQgc3VjY2VlZHMuIEFydGlmYWN0cyBhcmUgc2VudCB0byBHaXRsYWIgd2hlcmUgdGhleSBjYW4gYmUgZG93bmxvYWRlZC4gKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RzPzogQXJ0aWZhY3RzO1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICpiZWZvcmUqIGFsbCBqb2JzLiBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBqb2IgbGV2ZWwgYGFmdGVyU2NyaXB0YC4gKi9cbiAgcmVhZG9ubHkgYmVmb3JlU2NyaXB0Pzogc3RyaW5nW107XG4gIC8qIEEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gY2FjaGUgYmV0d2VlbiBqb2JzLiBZb3UgY2FuIG9ubHkgdXNlIHBhdGhzIHRoYXQgYXJlIGluIHRoZSBsb2NhbCB3b3JraW5nIGNvcHkuICovXG4gIHJlYWRvbmx5IGNhY2hlPzogQ2FjaGU7XG4gIC8qIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBkb2NrZXIgaW1hZ2UgdG8gdXNlIGdsb2JhbGx5IGZvciBhbGwgam9icy4gKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBJbWFnZTtcbiAgLyogSWYgYSBqb2Igc2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXdlciBwaXBlbGluZSBzdGFydHMgYmVmb3JlIHRoZSBqb2IgY29tcGxldGVzIChEZWZhdWx0OiBmYWxzZSkuKi9cbiAgcmVhZG9ubHkgaW50ZXJydXB0aWJsZT86IGJvb2xlYW47XG4gIC8qIEhvdyBtYW55IHRpbWVzIGEgam9iIGlzIHJldHJpZWQgaWYgaXQgZmFpbHMuIElmIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byAwIGFuZCBqb2JzIGRvIG5vdCByZXRyeS4gKi9cbiAgcmVhZG9ubHkgcmV0cnk/OiBSZXRyeTtcbiAgLyogQWRkaXRpb25hbCBEb2NrZXIgaW1hZ2VzIHRvIHJ1biBzY3JpcHRzIGluLiBUaGUgc2VydmljZSBpbWFnZSBpcyBsaW5rZWQgdG8gdGhlIGltYWdlIHNwZWNpZmllZCBpbiB0aGUgIGltYWdlIHBhcmFtZXRlci4gKi9cbiAgcmVhZG9ubHkgc2VydmljZXM/OiBTZXJ2aWNlW107XG4gIC8qIFVzZWQgdG8gc2VsZWN0IGEgc3BlY2lmaWMgcnVubmVyIGZyb20gdGhlIGxpc3Qgb2YgYWxsIHJ1bm5lcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgcHJvamVjdC4gKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuICAvKiBBIGRlZmF1bHQgdGltZW91dCBqb2Igd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIGpvYiBpZiBpdFxuICogc3VjY2VlZHMuIEFydGlmYWN0cyBhcmUgc2VudCB0byBHaXRsYWIgd2hlcmUgdGhleSBjYW4gYmUgZG93bmxvYWRlZC5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RzIHtcbiAgLyoqIEEgbGlzdCBvZiBwYXRocyB0byBmaWxlcy9mb2xkZXJzIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGluIHRoZSBhcnRpZmFjdC4gKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuICAvKiogSG93IGxvbmcgYXJ0aWZhY3RzIHNob3VsZCBiZSBrZXB0LiBUaGV5IGFyZSBzYXZlZCAzMCBkYXlzIGJ5IGRlZmF1bHQuIEFydGlmYWN0cyB0aGF0IGhhdmUgZXhwaXJlZCBhcmUgcmVtb3ZlZCBwZXJpb2RpY2FsbHkgdmlhIGNyb24gam9iLiBTdXBwb3J0cyBhIHdpZGUgdmFyaWV0eSBvZiBmb3JtYXRzLCBlLmcuICcxIHdlZWsnLCAnMyBtaW5zIDQgc2VjJywgJzIgaHJzIDIwIG1pbicsICcyaDIwbWluJywgJzYgbW9zIDEgZGF5JywgJzQ3IHlycyA2IG1vcyBhbmQgNGQnLCAnMyB3ZWVrcyBhbmQgMiBkYXlzJy4gKi9cbiAgcmVhZG9ubHkgZXhwaXJlSW4/OiBzdHJpbmc7XG4gIC8qKiBDYW4gYmUgdXNlZCB0byBleHBvc2Ugam9iIGFydGlmYWN0cyBpbiB0aGUgbWVyZ2UgcmVxdWVzdCBVSS4gR2l0TGFiIHdpbGwgYWRkIGEgbGluayA8ZXhwb3NlX2FzPiB0byB0aGUgcmVsZXZhbnQgbWVyZ2UgcmVxdWVzdCB0aGF0IHBvaW50cyB0byB0aGUgYXJ0aWZhY3QuICovXG4gIHJlYWRvbmx5IGV4cG9zZUFzPzogc3RyaW5nO1xuICAvKiogTmFtZSBmb3IgdGhlIGFyY2hpdmUgY3JlYXRlZCBvbiBqb2Igc3VjY2Vzcy4gQ2FuIHVzZSB2YXJpYWJsZXMgaW4gdGhlIG5hbWUsIGUuZy4gJyRDSV9KT0JfTkFNRScgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqIEEgbGlzdCBvZiBwYXRocyB0byBmaWxlcy9mb2xkZXJzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBhcnRpZmFjdC4gKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiBzdHJpbmdbXTtcbiAgLyoqIFJlcG9ydHMgd2lsbCBiZSB1cGxvYWRlZCBhcyBhcnRpZmFjdHMsIGFuZCBvZnRlbiBkaXNwbGF5ZWQgaW4gdGhlIEdpdGxhYiBVSSwgc3VjaCBhcyBpbiBNZXJnZSBSZXF1ZXN0cy4qL1xuICByZWFkb25seSByZXBvcnRzPzogUmVwb3J0cztcbiAgLyoqIFdoZXRoZXIgdG8gYWRkIGFsbCB1bnRyYWNrZWQgZmlsZXMgKGFsb25nIHdpdGggJ2FydGlmYWN0cy5wYXRocycpIHRvIHRoZSBhcnRpZmFjdC4qL1xuICByZWFkb25seSB1bnRyYWNrZWQ/OiBib29sZWFuO1xuICAvKiogQ29uZmlndXJlIHdoZW4gYXJ0aWZhY3RzIGFyZSB1cGxvYWRlZCBkZXBlbmRlZCBvbiBqb2Igc3RhdHVzLiovXG4gIHJlYWRvbmx5IHdoZW4/OiBDYWNoZVdoZW47XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aWxsIGJlIHVwbG9hZGVkIGFzIGFydGlmYWN0cywgYW5kIG9mdGVuIGRpc3BsYXllZCBpbiB0aGUgR2l0bGFiIFVJLCBzdWNoIGFzIGluXG4gKiBNZXJnZSBSZXF1ZXN0cy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jYXJ0aWZhY3RzcmVwb3J0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydHMge1xuICAvKiogUGF0aCBmb3IgZmlsZShzKSB0aGF0IHNob3VsZCBiZSBwYXJzZWQgYXMgQ29iZXJ0dXJhIFhNTCBjb3ZlcmFnZSByZXBvcnQqL1xuICByZWFkb25seSBjb2JlcnR1cmE/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggY29kZSBxdWFsaXR5IHJlcG9ydChzKSAoc3VjaCBhcyBDb2RlIENsaW1hdGUpLiovXG4gIHJlYWRvbmx5IGNvZGVxdWFsaXR5Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIENvbnRhaW5lciBzY2FubmluZyB2dWxuZXJhYmlsaXRpZXMgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclNjYW5uaW5nPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERBU1QgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkYXN0Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIERlcGVuZGVuY3kgc2Nhbm5pbmcgdnVsbmVyYWJpbGl0aWVzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBkZXBlbmRlbmN5U2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgcnVudGltZS1jcmVhdGVkIHZhcmlhYmxlcyBmb3IgdGhpcyBqb2IuKi9cbiAgcmVhZG9ubHkgZG90ZW52Pzogc3RyaW5nW107XG4gIC8qKiBQYXRoIGZvciBmaWxlKHMpIHRoYXQgc2hvdWxkIGJlIHBhcnNlZCBhcyBKVW5pdCBYTUwgcmVzdWx0Ki9cbiAgcmVhZG9ubHkganVuaXQ/OiBzdHJpbmdbXTtcbiAgLyoqIERlcHJlY2F0ZWQgaW4gMTIuODogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlTWFuYWdlbWVudD86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byBmaWxlIG9yIGxpc3Qgb2YgZmlsZXMgd2l0aCBsaWNlbnNlIHJlcG9ydChzKS4qL1xuICByZWFkb25seSBsaWNlbnNlU2Nhbm5pbmc/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIGNvbnRhaW5pbmcgY29kZSBpbnRlbGxpZ2VuY2UgKExhbmd1YWdlIFNlcnZlciBJbmRleCBGb3JtYXQpLiovXG4gIHJlYWRvbmx5IGxzaWY/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggY3VzdG9tIG1ldHJpY3MgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IG1ldHJpY3M/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcGVyZm9ybWFuY2UgbWV0cmljcyByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgcGVyZm9ybWFuY2U/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggcmVxdWlyZW1lbnRzIHJlcG9ydChzKS4qL1xuICByZWFkb25seSByZXF1aXJlbWVudHM/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggU0FTVCB2dWxuZXJhYmlsaXRpZXMgcmVwb3J0KHMpLiovXG4gIHJlYWRvbmx5IHNhc3Q/OiBzdHJpbmdbXTtcbiAgLyoqIFBhdGggdG8gZmlsZSBvciBsaXN0IG9mIGZpbGVzIHdpdGggc2VjcmV0IGRldGVjdGlvbiByZXBvcnQocykuKi9cbiAgcmVhZG9ubHkgc2VjcmV0RGV0ZWN0aW9uPzogc3RyaW5nW107XG4gIC8qKiBQYXRoIHRvIGZpbGUgb3IgbGlzdCBvZiBmaWxlcyB3aXRoIHRlcnJhZm9ybSBwbGFuKHMpLiovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZG9ja2VyIGltYWdlIHRvIHVzZSBmb3IgdGhlIGpvYiBvciBnbG9iYWxseSBmb3IgYWxsIGpvYnMuIEpvYiBjb25maWd1cmF0aW9uXG4gKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZ2xvYmFsIHNldHRpbmcuIFJlcXVpcmVzIGEgY2VydGFpbiBraW5kIG9mIEdpdGxhYiBydW5uZXIgZXhlY3V0b3IuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2ltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2Uge1xuICAvKiogQ29tbWFuZCBvciBzY3JpcHQgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYXMgdGhlIGNvbnRhaW5lcidzIGVudHJ5cG9pbnQuIEl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBEb2NrZXIncyAtLWVudHJ5cG9pbnQgb3B0aW9uIHdoaWxlIGNyZWF0aW5nIHRoZSBjb250YWluZXIuIFRoZSBzeW50YXggaXMgc2ltaWxhciB0byBEb2NrZXJmaWxlJ3MgRU5UUllQT0lOVCBkaXJlY3RpdmUsIHdoZXJlIGVhY2ggc2hlbGwgdG9rZW4gaXMgYSBzZXBhcmF0ZSBzdHJpbmcgaW4gdGhlIGFycmF5LiovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnQ/OiBhbnlbXTtcbiAgLyoqIEZ1bGwgbmFtZSBvZiB0aGUgaW1hZ2UgdGhhdCBzaG91bGQgYmUgdXNlZC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIFJlZ2lzdHJ5IHBhcnQgaWYgbmVlZGVkLiovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cbi8qKlxuICogSG93IG1hbnkgdGltZXMgYSBqb2IgaXMgcmV0cmllZCBpZiBpdCBmYWlscy4gSWYgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIDAgYW5kIGpvYnMgZG8gbm90IHJldHJ5LlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNyZXRyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5IHtcbiAgLyoqIDAgKGRlZmF1bHQpLCAxLCBvciAyLiovXG4gIHJlYWRvbmx5IG1heD86IG51bWJlcjtcbiAgLyoqIEVpdGhlciBhIHNpbmdsZSBvciBhcnJheSBvZiBlcnJvciB0eXBlcyB0byB0cmlnZ2VyIGpvYiByZXRyeS4qL1xuICByZWFkb25seSB3aGVuPzogYW55O1xufVxuLyoqXG4gKiBVc2VkIHRvIHNwZWNpZnkgYW4gYWRkaXRpb25hbCBEb2NrZXIgaW1hZ2UgdG8gcnVuIHNjcmlwdHMgaW4uIFRoZSBzZXJ2aWNlIGltYWdlIGlzIGxpbmtlZCB0byB0aGUgaW1hZ2Ugc3BlY2lmaWVkIGluIHRoZSBARGVmYXVsdCBpbWFnZSBrZXl3b3JkLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNzZXJ2aWNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2Uge1xuICAvKiogQWRkaXRpb25hbCBhbGlhcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgc2VydmljZSBmcm9tIHRoZSBqb2IncyBjb250YWluZXIuIFJlYWQgQWNjZXNzaW5nIHRoZSBzZXJ2aWNlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4qL1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgLyoqIENvbW1hbmQgb3Igc2NyaXB0IHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGNvbnRhaW5lcidzIGNvbW1hbmQuIEl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBhcmd1bWVudHMgcGFzc2VkIHRvIERvY2tlciBhZnRlciB0aGUgaW1hZ2UncyBuYW1lLiBUaGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gRG9ja2VyZmlsZSdzIENNRCBkaXJlY3RpdmUsIHdoZXJlIGVhY2ggc2hlbGwgdG9rZW4gaXMgYSBzZXBhcmF0ZSBzdHJpbmcgaW4gdGhlIGFycmF5LiovXG4gIHJlYWRvbmx5IGNvbW1hbmQ/OiBzdHJpbmdbXTtcbiAgLyoqIENvbW1hbmQgb3Igc2NyaXB0IHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIGFzIHRoZSBjb250YWluZXIncyBlbnRyeXBvaW50LiBJdCB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gRG9ja2VyJ3MgLS1lbnRyeXBvaW50IG9wdGlvbiB3aGlsZSBjcmVhdGluZyB0aGUgY29udGFpbmVyLiBUaGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gRG9ja2VyZmlsZSdzIEVOVFJZUE9JTlQgZGlyZWN0aXZlLCB3aGVyZSBlYWNoIHNoZWxsIHRva2VuIGlzIGEgc2VwYXJhdGUgc3RyaW5nIGluIHRoZSBhcnJheS4qL1xuICByZWFkb25seSBlbnRyeXBvaW50Pzogc3RyaW5nW107XG4gIC8qKiBGdWxsIG5hbWUgb2YgdGhlIGltYWdlIHRoYXQgc2hvdWxkIGJlIHVzZWQuIEl0IHNob3VsZCBjb250YWluIHRoZSBSZWdpc3RyeSBwYXJ0IGlmIG5lZWRlZC4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gaW5jbHVkZWQgWUFNTCBmaWxlLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyNpbmNsdWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jbHVkZSB7XG4gIC8qKiBSZWxhdGl2ZSBwYXRoIGZyb20gbG9jYWwgcmVwb3NpdG9yeSByb290IChgL2ApIHRvIHRoZSBgeWFtbGAvYHltbGAgZmlsZSB0ZW1wbGF0ZS4gVGhlIGZpbGUgbXVzdCBiZSBvbiB0aGUgc2FtZSBicmFuY2gsIGFuZCBkb2VzIG5vdCB3b3JrIGFjcm9zcyBnaXQgc3VibW9kdWxlcy4qL1xuICByZWFkb25seSBsb2NhbD86IHN0cmluZztcbiAgLyoqUnVsZXMgYWxsb3dzIGZvciBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIHJ1bGUgb2JqZWN0cyB0byBiZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHVudGlsIG9uZSBtYXRjaGVzIGFuZCBkeW5hbWljYWxseSBwcm92aWRlcyBhdHRyaWJ1dGVzIHRvIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogSW5jbHVkZVJ1bGVbXTtcbiAgLyoqIEZpbGVzIGZyb20gYW5vdGhlciBwcml2YXRlIHByb2plY3Qgb24gdGhlIHNhbWUgR2l0TGFiIGluc3RhbmNlLiBZb3UgY2FuIHVzZSBgZmlsZWAgaW4gY29tYmluYXRpb24gd2l0aCBgcHJvamVjdGAgb25seS4gKi9cbiAgcmVhZG9ubHkgZmlsZT86IHN0cmluZ1tdO1xuICAvKiogUGF0aCB0byB0aGUgcHJvamVjdCwgZS5nLiBgZ3JvdXAvcHJvamVjdGAsIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIEJyYW5jaC9UYWcvQ29tbWl0LWhhc2ggZm9yIHRoZSB0YXJnZXQgcHJvamVjdC4qL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG4gIC8qKiBVc2UgYSBgLmdpdGxhYi1jaS55bWxgIHRlbXBsYXRlIGFzIGEgYmFzZSwgZS5nLiBgTm9kZWpzLmdpdGxhYi1jaS55bWxgLiovXG4gIHJlYWRvbmx5IHRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogVVJMIHRvIGEgYHlhbWxgL2B5bWxgIHRlbXBsYXRlIGZpbGUgdXNpbmcgSFRUUC9IVFRQUy4qL1xuICByZWFkb25seSByZW1vdGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUnVsZXMgYWxsb3dzIGZvciBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIHJ1bGUgb2JqZWN0cyB0byBiZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHVudGlsIG9uZVxuICogbWF0Y2hlcyBhbmQgZHluYW1pY2FsbHkgcHJvdmlkZXMgYXR0cmlidXRlcyB0byB0aGUgam9iLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL2luY2x1ZGVzLmh0bWwjdXNlLXJ1bGVzLXdpdGgtaW5jbHVkZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2x1ZGVSdWxlIHtcbiAgLyogV2hldGhlciBhIHBpcGVsaW5lIHNob3VsZCBjb250aW51ZSBydW5uaW5nIHdoZW4gYSBqb2IgZmFpbHMuICovXG4gIHJlYWRvbmx5IGFsbG93RmFpbHVyZT86IGJvb2xlYW4gfCBBbGxvd0ZhaWx1cmU7XG4gIC8qIFNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZSBieSBjaGVja2luZyBmb3IgY2hhbmdlcyB0byBzcGVjaWZpYyBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IHN0cmluZ1tdO1xuICAvKiBSdW4gYSBqb2Igd2hlbiBjZXJ0YWluIGZpbGVzIGV4aXN0IGluIHRoZSByZXBvc2l0b3J5LiAqL1xuICByZWFkb25seSBleGlzdHM/OiBzdHJpbmdbXTtcbiAgLyogQ2xhdXNlcyB0byBzcGVjaWZ5IHdoZW4gdG8gYWRkIGEgam9iIHRvIGEgcGlwZWxpbmUuKi9cbiAgcmVhZG9ubHkgaWY/OiBzdHJpbmc7XG4gIC8qIEV4ZWN1dGUgc2NyaXB0cyBhZnRlciBhIHdhaXRpbmcgcGVyaW9kIHdyaXR0ZW4gaW4gbmF0dXJhbCBsYW5ndWFnZSAoRXguIG9uZSBob3VyLCAzNjAwIHNlY29uZHMsIDYwIG1pbnV0ZXMpLiAqL1xuICByZWFkb25seSBzdGFydEluPzogc3RyaW5nO1xuICAvKiBVc2UgdmFyaWFibGVzIGluIHJ1bGVzIHRvIGRlZmluZSB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGNvbmRpdGlvbnMuICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz47XG4gIC8qIENvbmRpdGlvbnMgZm9yIHdoZW4gdG8gcnVuIHRoZSBqb2IuIERlZmF1bHRzIHRvICdvbl9zdWNjZXNzJyAqL1xuICByZWFkb25seSB3aGVuPzogSm9iV2hlbjtcbn1cblxuLyoqXG4gKiBFeGl0IGNvZGUgdGhhdCBhcmUgbm90IGNvbnNpZGVyZWQgZmFpbHVyZS4gVGhlIGpvYiBmYWlscyBmb3IgYW55IG90aGVyIGV4aXQgY29kZS5cbiAqIFlvdSBjYW4gbGlzdCB3aGljaCBleGl0IGNvZGVzIGFyZSBub3QgY29uc2lkZXJlZCBmYWlsdXJlcy4gVGhlIGpvYiBmYWlscyBmb3IgYW55IG90aGVyXG4gKiBleGl0IGNvZGUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI2FsbG93X2ZhaWx1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxvd0ZhaWx1cmUge1xuICByZWFkb25seSBleGl0Q29kZXM6IG51bWJlcltdIHwgbnVtYmVyO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3aGVuXG4gKi9cbmV4cG9ydCBlbnVtIEpvYldoZW4ge1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICBERUxBWUVEID0gXCJkZWxheWVkXCIsXG4gIE1BTlVBTCA9IFwibWFudWFsXCIsXG4gIE5FVkVSID0gXCJuZXZlclwiLFxuICBPTl9GQUlMVVJFID0gXCJvbl9mYWlsdXJlXCIsXG4gIE9OX1NVQ0NFU1MgPSBcIm9uX3N1Y2Nlc3NcIixcbn1cblxuLyoqXG4gKiBKb2JzIGFyZSB0aGUgbW9zdCBmdW5kYW1lbnRhbCBlbGVtZW50IG9mIGEgLmdpdGxhYi1jaS55bWwgZmlsZS5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kvam9icy9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2Ige1xuICAvKiBEZWZpbmVzIHNjcmlwdHMgdGhhdCBzaG91bGQgcnVuICphZnRlciogdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgYWZ0ZXJTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgdGhlIHBpcGVsaW5lIHRvIGNvbnRpbnVlIHJ1bm5pbmcgb24gam9iIGZhaWx1cmUgKERlZmF1bHQ6IGZhbHNlKS4gKi9cbiAgcmVhZG9ubHkgYWxsb3dGYWlsdXJlPzogYm9vbGVhbiB8IEFsbG93RmFpbHVyZTtcbiAgLyogQSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgam9iIGlmIGl0IHN1Y2NlZWRzLiBBcnRpZmFjdHMgYXJlIHNlbnQgdG8gR2l0bGFiIHdoZXJlIHRoZXkgY2FuIGJlIGRvd25sb2FkZWQuICovXG4gIHJlYWRvbmx5IGFydGlmYWN0cz86IEFydGlmYWN0cztcbiAgLyogRGVmaW5lcyBzY3JpcHRzIHRoYXQgc2hvdWxkIHJ1biAqYmVmb3JlKiB0aGUgam9iLiAqL1xuICByZWFkb25seSBiZWZvcmVTY3JpcHQ/OiBzdHJpbmdbXTtcbiAgLyogQSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBjYWNoZSBiZXR3ZWVuIGpvYnMuIFlvdSBjYW4gb25seSB1c2UgcGF0aHMgdGhhdCBhcmUgaW4gdGhlIGxvY2FsIHdvcmtpbmcgY29weS4gKi9cbiAgcmVhZG9ubHkgY2FjaGU/OiBDYWNoZTtcbiAgLyoqIE11c3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24sIG9wdGlvbmFsbHkgYnV0IHJlY29tbWVuZGVkIHRvIGJlIHF1b3RlZCwgYW5kIG11c3QgYmUgc3Vycm91bmRlZCB3aXRoICcvJy4gRXhhbXBsZTogJy9Db2RlIGNvdmVyYWdlOiBcXGQrXFwuXFxkKy8nKi9cbiAgcmVhZG9ubHkgY292ZXJhZ2U/OiBzdHJpbmc7XG4gIC8qKiBTcGVjaWZ5IGEgbGlzdCBvZiBqb2IgbmFtZXMgZnJvbSBlYXJsaWVyIHN0YWdlcyBmcm9tIHdoaWNoIGFydGlmYWN0cyBzaG91bGQgYmUgbG9hZGVkLiBCeSBkZWZhdWx0LCBhbGwgcHJldmlvdXMgYXJ0aWZhY3RzIGFyZSBwYXNzZWQuIFVzZSBhbiBlbXB0eSBhcnJheSB0byBza2lwIGRvd25sb2FkaW5nIGFydGlmYWN0cy4qL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIGVudmlyb25tZW50IG1ldGFkYXRhIHdpdGggYSBkZXBsb3kuIEVudmlyb25tZW50IGNhbiBoYXZlIGEgbmFtZSBhbmQgVVJMIGF0dGFjaGVkIHRvIGl0LCBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgdW5kZXIgL2Vudmlyb25tZW50cyB1bmRlciB0aGUgcHJvamVjdC4qL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IEVudmlyb25tZW50IHwgc3RyaW5nO1xuICAvKiogSm9iIHdpbGwgcnVuICpleGNlcHQqIGZvciB3aGVuIHRoZXNlIGZpbHRlcmluZyBvcHRpb25zIG1hdGNoLiovXG4gIHJlYWRvbmx5IGV4Y2VwdD86IHN0cmluZ1tdIHwgRmlsdGVyO1xuICAvKiogVGhlIG5hbWUgb2Ygb25lIG9yIG1vcmUgam9icyB0byBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZnJvbS4qL1xuICByZWFkb25seSBleHRlbmRzPzogc3RyaW5nW107XG4gIC8qIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBkb2NrZXIgaW1hZ2UgdG8gdXNlZCBmb3IgdGhlIGpvYi4gKi9cbiAgcmVhZG9ubHkgaW1hZ2U/OiBJbWFnZTtcbiAgLyoqIENvbnRyb2xzIGluaGVyaXRhbmNlIG9mIGdsb2JhbGx5LWRlZmluZWQgZGVmYXVsdHMgYW5kIHZhcmlhYmxlcy4gQm9vbGVhbiB2YWx1ZXMgY29udHJvbCBpbmhlcml0YW5jZSBvZiBhbGwgZGVmYXVsdDogb3IgdmFyaWFibGVzOiBrZXl3b3Jkcy4gVG8gaW5oZXJpdCBvbmx5IGEgc3Vic2V0IG9mIGRlZmF1bHQ6IG9yIHZhcmlhYmxlczoga2V5d29yZHMsIHNwZWNpZnkgd2hhdCB5b3Ugd2lzaCB0byBpbmhlcml0LiBBbnl0aGluZyBub3QgbGlzdGVkIGlzIG5vdCBpbmhlcml0ZWQuKi9cbiAgcmVhZG9ubHkgaW5oZXJpdD86IEluaGVyaXQ7XG4gIC8qIElmIGEgam9iIHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3ZXIgcGlwZWxpbmUgc3RhcnRzIGJlZm9yZSB0aGUgam9iIGNvbXBsZXRlcyAoRGVmYXVsdDogZmFsc2UpLiovXG4gIHJlYWRvbmx5IGludGVycnVwdGlibGU/OiBib29sZWFuO1xuICAvKiogVGhlIGxpc3Qgb2Ygam9icyBpbiBwcmV2aW91cyBzdGFnZXMgd2hvc2Ugc29sZSBjb21wbGV0aW9uIGlzIG5lZWRlZCB0byBzdGFydCB0aGUgY3VycmVudCBqb2IuKi9cbiAgcmVhZG9ubHkgbmVlZHM/OiBBcnJheTxOZWVkIHwgc3RyaW5nPjtcbiAgLyoqIEpvYiB3aWxsIHJ1biAqb25seSogd2hlbiB0aGVzZSBmaWx0ZXJpbmcgb3B0aW9ucyBtYXRjaC4qL1xuICByZWFkb25seSBvbmx5Pzogc3RyaW5nW10gfCBGaWx0ZXI7XG4gIC8qKiBQYXJhbGxlbCB3aWxsIHNwbGl0IHVwIGEgc2luZ2xlIGpvYiBpbnRvIHNldmVyYWwsIGFuZCBwcm92aWRlIGBDSV9OT0RFX0lOREVYYCBhbmQgYENJX05PREVfVE9UQUxgIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIHJ1bm5pbmcgam9icy4qL1xuICByZWFkb25seSBwYXJhbGxlbD86IFBhcmFsbGVsIHwgbnVtYmVyO1xuICAvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGpvYiBjcmVhdGVzIGEgUmVsZWFzZS4qL1xuICByZWFkb25seSByZWxlYXNlPzogUmVsZWFzZTtcbiAgLyoqIExpbWl0IGpvYiBjb25jdXJyZW5jeS4gQ2FuIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIFJ1bm5lciB3aWxsIG5vdCBydW4gY2VydGFpbiBqb2JzIHNpbXVsdGFuZW91c2x5LiovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA/OiBzdHJpbmc7XG4gIC8qIEhvdyBtYW55IHRpbWVzIGEgam9iIGlzIHJldHJpZWQgaWYgaXQgZmFpbHMuIElmIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byAwIGFuZCBqb2JzIGRvIG5vdCByZXRyeS4gKi9cbiAgcmVhZG9ubHkgcmV0cnk/OiBSZXRyeTtcbiAgLyoqUnVsZXMgYWxsb3dzIGZvciBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIHJ1bGUgb2JqZWN0cyB0byBiZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHVudGlsIG9uZSBtYXRjaGVzIGFuZCBkeW5hbWljYWxseSBwcm92aWRlcyBhdHRyaWJ1dGVzIHRvIHRoZSBqb2IuICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogSW5jbHVkZVJ1bGVbXTtcbiAgLyoqIFNoZWxsIHNjcmlwdHMgZXhlY3V0ZWQgYnkgdGhlIFJ1bm5lci4gVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHkgb2Ygam9icy4gQmUgY2FyZWZ1bCB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyAoZS5nLiBgOmAsIGB7YCwgYH1gLCBgJmApIGFuZCB1c2Ugc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgdG8gYXZvaWQgaXNzdWVzLiovXG4gIHJlYWRvbmx5IHNjcmlwdD86IHN0cmluZ1tdO1xuICAvKiogQ0kvQ0Qgc2VjcmV0cyAqL1xuICByZWFkb25seSBzZWNyZXRzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgU2VjcmV0Pj47XG4gIC8qIEFkZGl0aW9uYWwgRG9ja2VyIGltYWdlcyB0byBydW4gc2NyaXB0cyBpbi4gVGhlIHNlcnZpY2UgaW1hZ2UgaXMgbGlua2VkIHRvIHRoZSBpbWFnZSBzcGVjaWZpZWQgaW4gdGhlICBpbWFnZSBwYXJhbWV0ZXIuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzPzogU2VydmljZVtdO1xuICAvKiogRGVmaW5lIHdoYXQgc3RhZ2UgdGhlIGpvYiB3aWxsIHJ1biBpbi4qL1xuICByZWFkb25seSBzdGFnZT86IHN0cmluZztcbiAgLyogRXhlY3V0ZSBzY3JpcHRzIGFmdGVyIGEgd2FpdGluZyBwZXJpb2Qgd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHN0YXJ0SW4/OiBzdHJpbmc7XG4gIC8qIFVzZWQgdG8gc2VsZWN0IGEgc3BlY2lmaWMgcnVubmVyIGZyb20gdGhlIGxpc3Qgb2YgYWxsIHJ1bm5lcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgcHJvamVjdC4gKi9cbiAgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdO1xuICAvKiBBIGRlZmF1bHQgdGltZW91dCBqb2Igd3JpdHRlbiBpbiBuYXR1cmFsIGxhbmd1YWdlIChFeC4gb25lIGhvdXIsIDM2MDAgc2Vjb25kcywgNjAgbWludXRlcykuICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG4gIC8qKiBUcmlnZ2VyIGFsbG93cyB5b3UgdG8gZGVmaW5lIGRvd25zdHJlYW0gcGlwZWxpbmUgdHJpZ2dlci4gV2hlbiBhIGpvYiBjcmVhdGVkIGZyb20gdHJpZ2dlciBkZWZpbml0aW9uIGlzIHN0YXJ0ZWQgYnkgR2l0TGFiLCBhIGRvd25zdHJlYW0gcGlwZWxpbmUgZ2V0cyBjcmVhdGVkLiBSZWFkIG1vcmU6IGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjdHJpZ2dlciovXG4gIHJlYWRvbmx5IHRyaWdnZXI/OiBUcmlnZ2VyIHwgc3RyaW5nO1xuICAvKiogQ29uZmlndXJhYmxlIHZhbHVlcyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIEpvYi4gKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPjtcbiAgLyoqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnLiAqL1xuICByZWFkb25seSB3aGVuPzogSm9iV2hlbjtcbn1cblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgdGhhdCBhIGpvYiBkZXBsb3lzIHRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcbiAgLyoqIFNwZWNpZmllcyB3aGF0IHRoaXMgam9iIHdpbGwgZG8uICdzdGFydCcgKGRlZmF1bHQpIGluZGljYXRlcyB0aGUgam9iIHdpbGwgc3RhcnQgdGhlIGRlcGxveW1lbnQuICdwcmVwYXJlJyBpbmRpY2F0ZXMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGRlcGxveW1lbnQuICdzdG9wJyBpbmRpY2F0ZXMgdGhpcyB3aWxsIHN0b3AgdGhlIGRlcGxveW1lbnQuKi9cbiAgcmVhZG9ubHkgYWN0aW9uPzogQWN0aW9uO1xuICAvKiogVGhlIGFtb3VudCBvZiB0aW1lIGl0IHNob3VsZCB0YWtlIGJlZm9yZSBHaXRsYWIgd2lsbCBhdXRvbWF0aWNhbGx5IHN0b3AgdGhlIGVudmlyb25tZW50LiBTdXBwb3J0cyBhIHdpZGUgdmFyaWV0eSBvZiBmb3JtYXRzLCBlLmcuICcxIHdlZWsnLCAnMyBtaW5zIDQgc2VjJywgJzIgaHJzIDIwIG1pbicsICcyaDIwbWluJywgJzYgbW9zIDEgZGF5JywgJzQ3IHlycyA2IG1vcyBhbmQgNGQnLCAnMyB3ZWVrcyBhbmQgMiBkYXlzJy4qL1xuICByZWFkb25seSBhdXRvU3RvcEluPzogc3RyaW5nO1xuICAvKiogRXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIHRpZXIgb2YgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgaWYgbm9uLXN0YW5kYXJkIGVudmlyb25tZW50IG5hbWUgaXMgdXNlZC4qL1xuICByZWFkb25seSBkZXBsb3ltZW50VGllcj86IERlcGxveW1lbnRUaWVyO1xuICAvKiogVXNlZCB0byBjb25maWd1cmUgdGhlIGt1YmVybmV0ZXMgZGVwbG95bWVudCBmb3IgdGhpcyBlbnZpcm9ubWVudC4gVGhpcyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBmb3Iga3ViZXJuZXRlcyBjbHVzdGVycyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IEdpdGxhYi4qL1xuICByZWFkb25seSBrdWJlcm5ldGVzPzogS3ViZXJuZXRlc0NvbmZpZztcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCwgZS5nLiAncWEnLCAnc3RhZ2luZycsICdwcm9kdWN0aW9uJy4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgbmFtZSBvZiBhIGpvYiB0byBleGVjdXRlIHdoZW4gdGhlIGVudmlyb25tZW50IGlzIGFib3V0IHRvIGJlIHN0b3BwZWQuKi9cbiAgcmVhZG9ubHkgb25TdG9wPzogc3RyaW5nO1xuICAvKiogV2hlbiBzZXQsIHRoaXMgd2lsbCBleHBvc2UgYnV0dG9ucyBpbiB2YXJpb3VzIHBsYWNlcyBmb3IgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgaW4gR2l0bGFiLCB0aGF0IHdpbGwgdGFrZSB5b3UgdG8gdGhlIGRlZmluZWQgVVJMLiovXG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hhdCB0aGlzIGpvYiB3aWxsIGRvLiAnc3RhcnQnIChkZWZhdWx0KSBpbmRpY2F0ZXMgdGhlIGpvYiB3aWxsIHN0YXJ0IHRoZVxuICogZGVwbG95bWVudC4gJ3ByZXBhcmUnIGluZGljYXRlcyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZGVwbG95bWVudC4gJ3N0b3AnIGluZGljYXRlc1xuICogdGhpcyB3aWxsIHN0b3AgdGhlIGRlcGxveW1lbnQuXG4gKi9cbmV4cG9ydCBlbnVtIEFjdGlvbiB7XG4gIFBSRVBBUkUgPSBcInByZXBhcmVcIixcbiAgU1RBUlQgPSBcInN0YXJ0XCIsXG4gIFNUT1AgPSBcInN0b3BcIixcbn1cblxuLyoqXG4gKiBFeHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgdGllciBvZiB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBpZiBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRcbiAqIG5hbWUgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGVudW0gRGVwbG95bWVudFRpZXIge1xuICBERVZFTE9QTUVOVCA9IFwiZGV2ZWxvcG1lbnRcIixcbiAgT1RIRVIgPSBcIm90aGVyXCIsXG4gIFBST0RVQ1RJT04gPSBcInByb2R1Y3Rpb25cIixcbiAgU1RBR0lORyA9IFwic3RhZ2luZ1wiLFxuICBURVNUSU5HID0gXCJ0ZXN0aW5nXCIsXG59XG5cbi8qKlxuICogVXNlZCB0byBjb25maWd1cmUgdGhlIGt1YmVybmV0ZXMgZGVwbG95bWVudCBmb3IgdGhpcyBlbnZpcm9ubWVudC4gVGhpcyBpcyBjdXJyZW50bHkgbm90XG4gKiBzdXBwb3J0ZWQgZm9yIGt1YmVybmV0ZXMgY2x1c3RlcnMgdGhhdCBhcmUgbWFuYWdlZCBieSBHaXRsYWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS3ViZXJuZXRlc0NvbmZpZyB7XG4gIC8qKiBUaGUga3ViZXJuZXRlcyBuYW1lc3BhY2Ugd2hlcmUgdGhpcyBlbnZpcm9ubWVudCBzaG91bGQgYmUgZGVwbG95ZWQgdG8uKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZpbHRlcmluZyBvcHRpb25zIGZvciB3aGVuIGEgam9iIHdpbGwgcnVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG4gIC8qKiBGaWx0ZXIgam9iIGNyZWF0aW9uIGJhc2VkIG9uIGZpbGVzIHRoYXQgd2VyZSBtb2RpZmllZCBpbiBhIGdpdCBwdXNoLiovXG4gIHJlYWRvbmx5IGNoYW5nZXM/OiBzdHJpbmdbXTtcbiAgLyoqIEZpbHRlciBqb2IgYmFzZWQgb24gaWYgS3ViZXJuZXRlcyBpbnRlZ3JhdGlvbiBpcyBhY3RpdmUuKi9cbiAgcmVhZG9ubHkga3ViZXJuZXRlcz86IEt1YmVybmV0ZXNFbnVtO1xuICAvKiogQ29udHJvbCB3aGVuIHRvIGFkZCBqb2JzIHRvIGEgcGlwZWxpbmUgYmFzZWQgb24gYnJhbmNoIG5hbWVzIG9yIHBpcGVsaW5lIHR5cGVzLiAqL1xuICByZWFkb25seSByZWZzPzogc3RyaW5nW107XG4gIC8qKiBGaWx0ZXIgam9iIGJ5IGNoZWNraW5nIGNvbXBhcmluZyB2YWx1ZXMgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBSZWFkIG1vcmUgYWJvdXQgdmFyaWFibGUgZXhwcmVzc2lvbnM6IGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3ZhcmlhYmxlcy9SRUFETUUuaHRtbCN2YXJpYWJsZXMtZXhwcmVzc2lvbnMqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgam9iIGJhc2VkIG9uIGlmIEt1YmVybmV0ZXMgaW50ZWdyYXRpb24gaXMgYWN0aXZlLlxuICovXG5leHBvcnQgZW51bSBLdWJlcm5ldGVzRW51bSB7XG4gIEFDVElWRSA9IFwiYWN0aXZlXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgaW5oZXJpdGFuY2Ugb2YgZ2xvYmFsbHktZGVmaW5lZCBkZWZhdWx0cyBhbmQgdmFyaWFibGVzLiBCb29sZWFuIHZhbHVlcyBjb250cm9sXG4gKiBpbmhlcml0YW5jZSBvZiBhbGwgZGVmYXVsdDogb3IgdmFyaWFibGVzOiBrZXl3b3Jkcy4gVG8gaW5oZXJpdCBvbmx5IGEgc3Vic2V0IG9mIGRlZmF1bHQ6XG4gKiBvciB2YXJpYWJsZXM6IGtleXdvcmRzLCBzcGVjaWZ5IHdoYXQgeW91IHdpc2ggdG8gaW5oZXJpdC4gQW55dGhpbmcgbm90IGxpc3RlZCBpcyBub3RcbiAqIGluaGVyaXRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0IHtcbiAgLyoqIFdoZXRoZXIgdG8gaW5oZXJpdCBhbGwgZ2xvYmFsbHktZGVmaW5lZCBkZWZhdWx0cyBvciBub3QuIE9yIHN1YnNldCBvZiBpbmhlcml0ZWQgZGVmYXVsdHMqL1xuICByZWFkb25seSBkZWZhdWx0PzogRGVmYXVsdEVsZW1lbnRbXSB8IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIGluaGVyaXQgYWxsIGdsb2JhbGx5LWRlZmluZWQgdmFyaWFibGVzIG9yIG5vdC4gT3Igc3Vic2V0IG9mIGluaGVyaXRlZCB2YXJpYWJsZXMqL1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmdbXSB8IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIERlZmF1bHRFbGVtZW50IHtcbiAgQUZURVJfU0NSSVBUID0gXCJhZnRlcl9zY3JpcHRcIixcbiAgQVJUSUZBQ1RTID0gXCJhcnRpZmFjdHNcIixcbiAgQkVGT1JFX1NDUklQVCA9IFwiYmVmb3JlX3NjcmlwdFwiLFxuICBDQUNIRSA9IFwiY2FjaGVcIixcbiAgSU1BR0UgPSBcImltYWdlXCIsXG4gIElOVEVSUlVQVElCTEUgPSBcImludGVycnVwdGlibGVcIixcbiAgUkVUUlkgPSBcInJldHJ5XCIsXG4gIFNFUlZJQ0VTID0gXCJzZXJ2aWNlc1wiLFxuICBUQUdTID0gXCJ0YWdzXCIsXG4gIFRJTUVPVVQgPSBcInRpbWVvdXRcIixcbn1cblxuLyoqXG4gKiBBIGpvYnMgaW4gYSBwcmV2aW91cyBzdGFnZSB3aG9zZSBzb2xlIGNvbXBsZXRpb24gaXMgbmVlZGVkIHRvIHN0YXJ0IHRoZSBjdXJyZW50IGpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZWVkIHtcbiAgcmVhZG9ubHkgYXJ0aWZhY3RzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgam9iOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGlwZWxpbmU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb2plY3Q/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHJ1biBhIGpvYiBtdWx0aXBsZSB0aW1lcyBpbiBwYXJhbGxlbCBpbiBhIHNpbmdsZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJhbGxlbCB7XG4gIC8qKiBEZWZpbmVzIGRpZmZlcmVudCB2YXJpYWJsZXMgZm9yIGpvYnMgdGhhdCBhcmUgcnVubmluZyBpbiBwYXJhbGxlbC4qL1xuICByZWFkb25seSBtYXRyaXg6IFJlY29yZDxzdHJpbmcsIGFueVtdPltdO1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB0aGF0IHRoZSBqb2IgY3JlYXRlcyBhIFJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZSB7XG4gIHJlYWRvbmx5IGFzc2V0cz86IEFzc2V0cztcbiAgLyoqIFNwZWNpZmllcyB0aGUgbG9uZ2VyIGRlc2NyaXB0aW9uIG9mIHRoZSBSZWxlYXNlLiovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBUaGUgdGl0bGUgb2YgZWFjaCBtaWxlc3RvbmUgdGhlIHJlbGVhc2UgaXMgYXNzb2NpYXRlZCB3aXRoLiovXG4gIHJlYWRvbmx5IG1pbGVzdG9uZXM/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSBSZWxlYXNlIG5hbWUuIElmIG9taXR0ZWQsIGl0IGlzIHBvcHVsYXRlZCB3aXRoIHRoZSB2YWx1ZSBvZiByZWxlYXNlOiB0YWdfbmFtZS4qL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICAvKiogSWYgdGhlIHJlbGVhc2U6IHRhZ19uYW1lIGRvZXNu4oCZdCBleGlzdCB5ZXQsIHRoZSByZWxlYXNlIGlzIGNyZWF0ZWQgZnJvbSByZWYuIHJlZiBjYW4gYmUgYSBjb21taXQgU0hBLCBhbm90aGVyIHRhZyBuYW1lLCBvciBhIGJyYW5jaCBuYW1lLiovXG4gIHJlYWRvbmx5IHJlZj86IHN0cmluZztcbiAgLyoqIFRoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHJlbGVhc2UgaXMgcmVhZHkuIERlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaWYgbm90IGRlZmluZWQuIFNob3VsZCBiZSBlbmNsb3NlZCBpbiBxdW90ZXMgYW5kIGV4cHJlc3NlZCBpbiBJU08gODYwMSBmb3JtYXQuKi9cbiAgcmVhZG9ubHkgcmVsZWFzZWRBdD86IHN0cmluZztcbiAgLyoqIFRoZSB0YWdfbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4gSXQgY2FuIHJlZmVyIHRvIGFuIGV4aXN0aW5nIEdpdCB0YWcgb3IgY2FuIGJlIHNwZWNpZmllZCBieSB0aGUgdXNlci4qL1xuICByZWFkb25seSB0YWdOYW1lOiBzdHJpbmc7XG59XG4vKipcbiAqIEFzc2V0IGNvbmZpZ3VyYXRpb24gZm9yIGEgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldHMge1xuICAvKiogSW5jbHVkZSBhc3NldCBsaW5rcyBpbiB0aGUgcmVsZWFzZS4qL1xuICByZWFkb25seSBsaW5rczogTGlua1tdO1xufVxuXG4vKipcbiAqIExpbmsgY29uZmlndXJhdGlvbiBmb3IgYW4gYXNzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XG4gIC8qKiBUaGUgcmVkaXJlY3QgbGluayB0byB0aGUgdXJsLiovXG4gIHJlYWRvbmx5IGZpbGVwYXRoPzogc3RyaW5nO1xuICAvKiogVGhlIGNvbnRlbnQga2luZCBvZiB3aGF0IHVzZXJzIGNhbiBkb3dubG9hZCB2aWEgdXJsLiovXG4gIHJlYWRvbmx5IGxpbmtUeXBlPzogTGlua1R5cGU7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgbGluay4qL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgVVJMIHRvIGRvd25sb2FkIGEgZmlsZS4qL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgY29udGVudCBraW5kIG9mIHdoYXQgdXNlcnMgY2FuIGRvd25sb2FkIHZpYSB1cmwuXG4gKi9cbmV4cG9ydCBlbnVtIExpbmtUeXBlIHtcbiAgSU1BR0UgPSBcImltYWdlXCIsXG4gIE9USEVSID0gXCJvdGhlclwiLFxuICBQQUNLQUdFID0gXCJwYWNrYWdlXCIsXG4gIFJVTkJPT0sgPSBcInJ1bmJvb2tcIixcbn1cblxuLyoqXG4gKiBBIENJL0NEIHNlY3JldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldCB7XG4gIC8qIFNwZWNpZmljYXRpb24gZm9yIGEgc2VjcmV0IHByb3ZpZGVkIGJ5IGEgSGFzaGlDb3JwIFZhdWx0LiAqL1xuICByZWFkb25seSB2YXVsdDogVmF1bHRDb25maWc7XG59XG5cbi8qKlxuICogU3BlY2lmaWNhdGlvbiBmb3IgYSBzZWNyZXQgcHJvdmlkZWQgYnkgYSBIYXNoaUNvcnAgVmF1bHQuXG4gKiBAc2VlIGh0dHBzOi8vd3d3LnZhdWx0cHJvamVjdC5pby9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYXVsdENvbmZpZyB7XG4gIC8qIFRoZSBlbmdpbmUgY29uZmlndXJhdGlvbiBmb3IgYSBzZWNyZXQuICovXG4gIHJlYWRvbmx5IGVuZ2luZTogRW5naW5lO1xuICAvKiBUaGUgbmFtZSBvZiB0aGUgZmllbGQgd2hlcmUgdGhlIHBhc3N3b3JkIGlzIHN0b3JlZC4gKi9cbiAgcmVhZG9ubHkgZmllbGQ6IHN0cmluZztcbiAgLyoqIFBhdGggdG8gdGhlIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuLyoqXG4gKiBUaGUgZW5naW5lIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2VjcmV0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuZ2luZSB7XG4gIC8qKiBOYW1lIG9mIHRoZSBzZWNyZXRzIGVuZ2luZS4gKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgc2VjcmV0cyBlbmdpbmUuICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGEgbXVsdGktcHJvamVjdCBvciBhIGNoaWxkIHBpcGVsaW5lLiBSZWFkIG1vcmU6XG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvUkVBRE1FLmh0bWwjc2ltcGxlLXRyaWdnZXItc3ludGF4LWZvci1tdWx0aS1wcm9qZWN0LXBpcGVsaW5lc1xuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sL1JFQURNRS5odG1sI3RyaWdnZXItc3ludGF4LWZvci1jaGlsZC1waXBlbGluZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXIge1xuICAvKiogVGhlIGJyYW5jaCBuYW1lIHRoYXQgYSBkb3duc3RyZWFtIHBpcGVsaW5lIHdpbGwgdXNlKi9cbiAgcmVhZG9ubHkgYnJhbmNoPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byB0aGUgcHJvamVjdCwgZS5nLiBgZ3JvdXAvcHJvamVjdGAsIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIFlvdSBjYW4gbWlycm9yIHRoZSBwaXBlbGluZSBzdGF0dXMgZnJvbSB0aGUgdHJpZ2dlcmVkIHBpcGVsaW5lIHRvIHRoZSBzb3VyY2UgYnJpZGdlIGpvYiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBTdHJhdGVneTtcbiAgLyoqIEEgbGlzdCBvZiBsb2NhbCBmaWxlcyBvciBhcnRpZmFjdHMgZnJvbSBvdGhlciBqb2JzIHRvIGRlZmluZSB0aGUgcGlwZWxpbmUgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZT86IFRyaWdnZXJJbmNsdWRlW107XG59XG5cbi8qKlxuICogUmVmZXJlbmNlcyBhIGxvY2FsIGZpbGUgb3IgYW4gYXJ0aWZhY3QgZnJvbSBhbm90aGVyIGpvYiB0byBkZWZpbmUgdGhlIHBpcGVsaW5lXG4gKiBjb25maWd1cmF0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN0cmlnZ2VyaW5jbHVkZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaWdnZXJJbmNsdWRlIHtcbiAgLyoqIFJlbGF0aXZlIHBhdGggZnJvbSBsb2NhbCByZXBvc2l0b3J5IHJvb3QgKGAvYCkgdG8gdGhlIGxvY2FsIFlBTUwgZmlsZSB0byBkZWZpbmUgdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24uKi9cbiAgcmVhZG9ubHkgbG9jYWw/OiBzdHJpbmc7XG4gIC8qKiBOYW1lIG9mIHRoZSB0ZW1wbGF0ZSBZQU1MIGZpbGUgdG8gdXNlIGluIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uLiovXG4gIHJlYWRvbmx5IHRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogUmVsYXRpdmUgcGF0aCB0byB0aGUgZ2VuZXJhdGVkIFlBTUwgZmlsZSB3aGljaCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgYXJ0aWZhY3RzIGFuZCB1c2VkIGFzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0cmlnZ2VyaW5nIHRoZSBjaGlsZCBwaXBlbGluZS4qL1xuICByZWFkb25seSBhcnRpZmFjdD86IHN0cmluZztcbiAgLyoqIEpvYiBuYW1lIHdoaWNoIGdlbmVyYXRlcyB0aGUgYXJ0aWZhY3QqL1xuICByZWFkb25seSBqb2I/OiBzdHJpbmc7XG4gIC8qKiBSZWxhdGl2ZSBwYXRoIGZyb20gcmVwb3NpdG9yeSByb290IChgL2ApIHRvIHRoZSBwaXBlbGluZSBjb25maWd1cmF0aW9uIFlBTUwgZmlsZS4qL1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBhbm90aGVyIHByaXZhdGUgcHJvamVjdCB1bmRlciB0aGUgc2FtZSBHaXRMYWIgaW5zdGFuY2UsIGxpa2UgYGdyb3VwL3Byb2plY3RgIG9yIGBncm91cC9zdWItZ3JvdXAvcHJvamVjdGAuKi9cbiAgcmVhZG9ubHkgcHJvamVjdD86IHN0cmluZztcbiAgLyoqIEJyYW5jaC9UYWcvQ29tbWl0IGhhc2ggZm9yIHRoZSB0YXJnZXQgcHJvamVjdC4qL1xuICByZWFkb25seSByZWY/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogWW91IGNhbiBtaXJyb3IgdGhlIHBpcGVsaW5lIHN0YXR1cyBmcm9tIHRoZSB0cmlnZ2VyZWQgcGlwZWxpbmUgdG8gdGhlIHNvdXJjZSBicmlkZ2Ugam9iXG4gKiBieSB1c2luZyBzdHJhdGVneTogZGVwZW5kXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3RyaWdnZXJzdHJhdGVneVxuICovXG5leHBvcnQgZW51bSBTdHJhdGVneSB7XG4gIERFUEVORCA9IFwiZGVwZW5kXCIsXG59XG5cbi8qKlxuICogRXhwbGFpbnMgd2hhdCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgZm9yLCB3aGF0IHRoZSBhY2NlcHRhYmxlIHZhbHVlcyBhcmUuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3ZhcmlhYmxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlQ29uZmlnIHtcbiAgLyoqIERlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIHByZWZpbGxlZCB3aGVuIHJ1bm5pbmcgYSBwaXBlbGluZSBtYW51YWxseS4gTXVzdCBiZSB1c2VkIHdpdGggdmFsdWUuICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2YXJpYWJsZSB2YWx1ZS4gKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVXNlZCB0byBjb250cm9sIHBpcGVsaW5lIGJlaGF2aW9yLlxuICogQHNlZSBodHRwczovL2RvY3MuZ2l0bGFiLmNvbS9lZS9jaS95YW1sLyN3b3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93IHtcbiAgLyoqIFVzZWQgdG8gY29udHJvbCB3aGV0aGVyIG9yIG5vdCBhIHdob2xlIHBpcGVsaW5lIGlzIGNyZWF0ZWQuICovXG4gIHJlYWRvbmx5IHJ1bGVzPzogV29ya2Zsb3dSdWxlW107XG59XG5cbi8qKlxuICogVXNlZCB0byBjb250cm9sIHdoZXRoZXIgb3Igbm90IGEgd2hvbGUgcGlwZWxpbmUgaXMgY3JlYXRlZC5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGxhYi5jb20vZWUvY2kveWFtbC8jd29ya2Zsb3dydWxlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93UnVsZSB7XG4gIC8qIFNwZWNpZnkgd2hlbiB0byBhZGQgYSBqb2IgdG8gYSBwaXBlbGluZSBieSBjaGVja2luZyBmb3IgY2hhbmdlcyB0byBzcGVjaWZpYyBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IHN0cmluZ1tdO1xuICAvKiBSdW4gYSBqb2Igd2hlbiBjZXJ0YWluIGZpbGVzIGV4aXN0IGluIHRoZSByZXBvc2l0b3J5LiAqL1xuICByZWFkb25seSBleGlzdHM/OiBzdHJpbmdbXTtcbiAgLyogQ2xhdXNlcyB0byBzcGVjaWZ5IHdoZW4gdG8gYWRkIGEgam9iIHRvIGEgcGlwZWxpbmUuKi9cbiAgcmVhZG9ubHkgaWY/OiBzdHJpbmc7XG4gIC8qIFVzZSB2YXJpYWJsZXMgaW4gcnVsZXMgdG8gZGVmaW5lIHZhcmlhYmxlcyBmb3Igc3BlY2lmaWMgY29uZGl0aW9ucy4gKi9cbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPjtcbiAgLyogQ29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnICovXG4gIHJlYWRvbmx5IHdoZW4/OiBKb2JXaGVuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY29uZGl0aW9ucyBmb3Igd2hlbiB0byBydW4gdGhlIGpvYi4gRGVmYXVsdHMgdG8gJ29uX3N1Y2Nlc3MnLlxuICogVGhlIHZhbHVlIGNhbiBvbmx5IGJlICdhbHdheXMnIG9yICduZXZlcicgd2hlbiB1c2VkIHdpdGggd29ya2Zsb3cuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRsYWIuY29tL2VlL2NpL3lhbWwvI3dvcmtmbG93cnVsZXNcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dXaGVuIHtcbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG59XG4iXX0=
@@ -3,141 +3,85 @@ import { Project } from "../project";
3
3
  import { YamlFile } from "../yaml";
4
4
  import { Artifacts, Cache, Default, Image, Include, Job, Retry, Service, VariableConfig, Workflow } from "./configuration-model";
5
5
  /**
6
- * (experimental) Options for `CiConfiguration`.
7
- *
8
- * @experimental
6
+ * Options for `CiConfiguration`.
9
7
  */
10
8
  export interface CiConfigurationOptions {
11
9
  /**
12
- * (experimental) Default settings for the CI Configuration.
13
- *
14
- * Jobs that do not define one or more of the listed keywords use the value defined in the default section.
15
- *
16
- * @experimental
10
+ * Default settings for the CI Configuration. Jobs that do not define one or more of the listed keywords use the value defined in the default section.
17
11
  */
18
12
  readonly default?: Default;
19
13
  /**
20
- * (experimental) A special job used to upload static sites to Gitlab pages.
21
- *
22
- * Requires a `public/` directory
14
+ * A special job used to upload static sites to Gitlab pages. Requires a `public/` directory
23
15
  * with `artifacts.path` pointing to it.
24
- *
25
- * @experimental
26
16
  */
27
17
  readonly pages?: Job;
28
18
  /**
29
- * (experimental) Used to control pipeline behavior.
30
- *
31
- * @experimental
19
+ * Used to control pipeline behavior.
32
20
  */
33
21
  readonly workflow?: Workflow;
34
22
  /**
35
- * (experimental) Groups jobs into stages.
36
- *
37
- * All jobs in one stage must complete before next stage is
23
+ * Groups jobs into stages. All jobs in one stage must complete before next stage is
38
24
  * executed. If no stages are specified. Defaults to ['build', 'test', 'deploy'].
39
- *
40
- * @experimental
41
25
  */
42
26
  readonly stages?: string[];
43
27
  /**
44
- * (experimental) Global variables that are passed to jobs.
45
- *
28
+ * Global variables that are passed to jobs.
46
29
  * If the job already has that variable defined, the job-level variable takes precedence.
47
- *
48
- * @experimental
49
30
  */
50
31
  readonly variables?: Record<string, any>;
51
32
  /**
52
- * (experimental) An initial set of jobs to add to the configuration.
53
- *
54
- * @experimental
33
+ * An initial set of jobs to add to the configuration.
55
34
  */
56
35
  readonly jobs?: Record<string, Job>;
57
36
  }
58
37
  /**
59
- * (experimental) CI for GitLab.
60
- *
38
+ * CI for GitLab.
61
39
  * A CI is a configurable automated process made up of one or more stages/jobs.
62
- *
63
40
  * @see https://docs.gitlab.com/ee/ci/yaml/
64
- * @experimental
65
41
  */
66
42
  export declare class CiConfiguration extends Component {
67
43
  /**
68
- * (experimental) The project the configuration belongs to.
69
- *
70
- * @experimental
44
+ * The project the configuration belongs to.
71
45
  */
72
46
  readonly project: Project;
73
47
  /**
74
- * (experimental) The name of the configuration.
75
- *
76
- * @experimental
48
+ * The name of the configuration.
77
49
  */
78
50
  readonly name: string;
79
51
  /**
80
- * (experimental) Path to CI file generated by the configuration.
81
- *
82
- * @experimental
52
+ * Path to CI file generated by the configuration.
83
53
  */
84
54
  readonly path: string;
85
55
  /**
86
- * (experimental) The workflow YAML file.
87
- *
88
- * @experimental
56
+ * The workflow YAML file.
89
57
  */
90
58
  readonly file: YamlFile;
91
59
  /**
92
- * (experimental) Defines default scripts that should run *after* all jobs.
93
- *
94
- * Can be overriden by the job level `afterScript`.
95
- *
96
- * @experimental
60
+ * Defines default scripts that should run *after* all jobs. Can be overriden by the job level `afterScript`.
97
61
  */
98
62
  readonly defaultAfterScript: string[];
99
63
  /**
100
- * (experimental) Default list of files and directories that should be attached to the job if it succeeds.
101
- *
102
- * Artifacts are sent to Gitlab where they can be downloaded.
103
- *
104
- * @experimental
64
+ * Default list of files and directories that should be attached to the job if it succeeds. Artifacts are sent to Gitlab where they can be downloaded.
105
65
  */
106
66
  readonly defaultArtifacts?: Artifacts;
107
67
  /**
108
- * (experimental) Defines default scripts that should run *before* all jobs.
109
- *
110
- * Can be overriden by the job level `afterScript`.
111
- *
112
- * @experimental
68
+ * Defines default scripts that should run *before* all jobs. Can be overriden by the job level `afterScript`.
113
69
  */
114
70
  readonly defaultBeforeScript: string[];
115
71
  /**
116
- * (experimental) A default list of files and directories to cache between jobs.
117
- *
118
- * You can only use paths that are in the local working copy.
119
- *
120
- * @experimental
72
+ * A default list of files and directories to cache between jobs. You can only use paths that are in the local working copy.
121
73
  */
122
74
  readonly defaultCache?: Cache;
123
75
  /**
124
- * (experimental) Specifies the default docker image to use globally for all jobs.
125
- *
126
- * @experimental
76
+ * Specifies the default docker image to use globally for all jobs.
127
77
  */
128
78
  readonly defaultImage?: Image;
129
79
  /**
130
- * (experimental) The default behavior for whether a job should be canceled when a newer pipeline starts before the job completes (Default: false).
131
- *
132
- * @experimental
80
+ * The default behavior for whether a job should be canceled when a newer pipeline starts before the job completes (Default: false).
133
81
  */
134
82
  readonly defaultInterruptible?: boolean;
135
83
  /**
136
- * (experimental) How many times a job is retried if it fails.
137
- *
138
- * If not defined, defaults to 0 and jobs do not retry.
139
- *
140
- * @experimental
84
+ * How many times a job is retried if it fails. If not defined, defaults to 0 and jobs do not retry.
141
85
  */
142
86
  readonly defaultRetry?: Retry;
143
87
  /**
@@ -145,17 +89,11 @@ export declare class CiConfiguration extends Component {
145
89
  */
146
90
  private defaultServices;
147
91
  /**
148
- * (experimental) Used to select a specific runner from the list of all runners that are available for the project.
149
- *
150
- * @experimental
92
+ * Used to select a specific runner from the list of all runners that are available for the project.
151
93
  */
152
94
  readonly defaultTags: string[];
153
95
  /**
154
- * (experimental) A default timeout job written in natural language (Ex.
155
- *
156
- * one hour, 3600 seconds, 60 minutes).
157
- *
158
- * @experimental
96
+ * A default timeout job written in natural language (Ex. one hour, 3600 seconds, 60 minutes).
159
97
  */
160
98
  readonly defaultTimeout?: string;
161
99
  /**
@@ -165,52 +103,32 @@ export declare class CiConfiguration extends Component {
165
103
  */
166
104
  private include;
167
105
  /**
168
- * (experimental) A special job used to upload static sites to Gitlab pages.
169
- *
170
- * Requires a `public/` directory
106
+ * A special job used to upload static sites to Gitlab pages. Requires a `public/` directory
171
107
  * with `artifacts.path` pointing to it.
172
- *
173
- * @experimental
174
108
  */
175
109
  readonly pages?: Job;
176
110
  /**
177
- * (experimental) Groups jobs into stages.
178
- *
179
- * All jobs in one stage must complete before next stage is
111
+ * Groups jobs into stages. All jobs in one stage must complete before next stage is
180
112
  * executed. Defaults to ['build', 'test', 'deploy'].
181
- *
182
- * @experimental
183
113
  */
184
114
  readonly stages: string[];
185
115
  /**
186
- * (experimental) Global variables that are passed to jobs.
187
- *
116
+ * Global variables that are passed to jobs.
188
117
  * If the job already has that variable defined, the job-level variable takes precedence.
189
- *
190
- * @experimental
191
118
  */
192
119
  readonly variables: Record<string, number | VariableConfig | string>;
193
120
  /**
194
- * (experimental) Used to control pipeline behavior.
195
- *
196
- * @experimental
121
+ * Used to control pipeline behavior.
197
122
  */
198
123
  readonly workflow?: Workflow;
199
124
  /**
200
- * (experimental) The jobs in the CI configuration.
201
- *
202
- * @experimental
125
+ * The jobs in the CI configuration.
203
126
  */
204
127
  readonly jobs: Record<string, Job>;
205
- /**
206
- * @experimental
207
- */
208
128
  constructor(project: Project, name: string, options?: CiConfigurationOptions);
209
129
  /**
210
- * (experimental) Add additional yml/yaml files to the CI includes.
211
- *
130
+ * Add additional yml/yaml files to the CI includes
212
131
  * @param includes The includes to add.
213
- * @experimental
214
132
  */
215
133
  addIncludes(...includes: Include[]): void;
216
134
  /**
@@ -228,31 +146,23 @@ export declare class CiConfiguration extends Component {
228
146
  */
229
147
  private areEqualIncludes;
230
148
  /**
231
- * (experimental) Add additional services.
232
- *
149
+ * Add additional services.
233
150
  * @param services The services to add.
234
- * @experimental
235
151
  */
236
152
  addServices(...services: Service[]): void;
237
153
  /**
238
- * (experimental) Add a globally defined variable to the CI configuration.
239
- *
154
+ * Add a globally defined variable to the CI configuration.
240
155
  * @param variables The variables to add.
241
- * @experimental
242
156
  */
243
157
  addGlobalVariables(variables: Record<string, any>): void;
244
158
  /**
245
- * (experimental) Add stages to the CI configuration if not already present.
246
- *
159
+ * Add stages to the CI configuration if not already present.
247
160
  * @param stages stages to add.
248
- * @experimental
249
161
  */
250
162
  addStages(...stages: string[]): void;
251
163
  /**
252
- * (experimental) Add jobs and their stages to the CI configuration.
253
- *
164
+ * Add jobs and their stages to the CI configuration.
254
165
  * @param jobs Jobs to add.
255
- * @experimental
256
166
  */
257
167
  addJobs(jobs: Record<string, Job>): void;
258
168
  private renderCI;