projen 0.58.1 → 0.58.2

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 (468) hide show
  1. package/.jsii +3 -3
  2. package/lib/_resolve.d.ts +0 -1
  3. package/lib/_resolve.js +5 -6
  4. package/lib/awscdk/auto-discover.d.ts +0 -1
  5. package/lib/awscdk/auto-discover.js +10 -11
  6. package/lib/awscdk/awscdk-app-java.d.ts +0 -1
  7. package/lib/awscdk/awscdk-app-java.js +3 -4
  8. package/lib/awscdk/awscdk-app-py.d.ts +0 -1
  9. package/lib/awscdk/awscdk-app-py.js +6 -7
  10. package/lib/awscdk/awscdk-app-ts.d.ts +0 -1
  11. package/lib/awscdk/awscdk-app-ts.js +11 -12
  12. package/lib/awscdk/awscdk-construct.d.ts +0 -1
  13. package/lib/awscdk/awscdk-construct.js +8 -9
  14. package/lib/awscdk/awscdk-deps-java.d.ts +0 -1
  15. package/lib/awscdk/awscdk-deps-java.js +1 -1
  16. package/lib/awscdk/awscdk-deps-js.d.ts +0 -1
  17. package/lib/awscdk/awscdk-deps-js.js +1 -1
  18. package/lib/awscdk/awscdk-deps-py.d.ts +0 -1
  19. package/lib/awscdk/awscdk-deps.d.ts +0 -1
  20. package/lib/awscdk/awscdk-deps.js +9 -12
  21. package/lib/awscdk/awscdk-pytest-sample.d.ts +0 -1
  22. package/lib/awscdk/cdk-config.d.ts +0 -1
  23. package/lib/awscdk/cdk-config.js +6 -7
  24. package/lib/awscdk/cdk-tasks.d.ts +0 -1
  25. package/lib/awscdk/cdk-tasks.js +3 -4
  26. package/lib/awscdk/index.d.ts +0 -1
  27. package/lib/awscdk/integration-test.d.ts +0 -1
  28. package/lib/awscdk/integration-test.js +5 -6
  29. package/lib/awscdk/internal.d.ts +0 -1
  30. package/lib/awscdk/lambda-extension.d.ts +0 -1
  31. package/lib/awscdk/lambda-extension.js +7 -9
  32. package/lib/awscdk/lambda-function.d.ts +0 -1
  33. package/lib/awscdk/lambda-function.js +8 -9
  34. package/lib/build/build-workflow.d.ts +0 -1
  35. package/lib/build/build-workflow.js +14 -17
  36. package/lib/build/index.d.ts +0 -1
  37. package/lib/builtin-example.task.d.ts +0 -1
  38. package/lib/cdk/auto-discover-base.d.ts +0 -1
  39. package/lib/cdk/auto-discover-base.js +2 -2
  40. package/lib/cdk/construct-lib.d.ts +0 -1
  41. package/lib/cdk/construct-lib.js +1 -1
  42. package/lib/cdk/consts.d.ts +0 -1
  43. package/lib/cdk/index.d.ts +0 -1
  44. package/lib/cdk/integration-test-base.d.ts +0 -1
  45. package/lib/cdk/integration-test-base.js +3 -4
  46. package/lib/cdk/internal.d.ts +0 -1
  47. package/lib/cdk/jsii-docgen.d.ts +0 -1
  48. package/lib/cdk/jsii-docgen.js +3 -4
  49. package/lib/cdk/jsii-project.d.ts +0 -1
  50. package/lib/cdk/jsii-project.js +16 -18
  51. package/lib/cdk8s/auto-discover.d.ts +0 -1
  52. package/lib/cdk8s/auto-discover.js +4 -5
  53. package/lib/cdk8s/cdk8s-app-ts.d.ts +0 -1
  54. package/lib/cdk8s/cdk8s-app-ts.js +6 -7
  55. package/lib/cdk8s/cdk8s-construct.d.ts +0 -1
  56. package/lib/cdk8s/cdk8s-construct.js +5 -6
  57. package/lib/cdk8s/index.d.ts +0 -1
  58. package/lib/cdk8s/integration-test.d.ts +0 -1
  59. package/lib/cdk8s/integration-test.js +1 -1
  60. package/lib/cdktf/cdktf-construct.d.ts +0 -1
  61. package/lib/cdktf/cdktf-construct.js +3 -4
  62. package/lib/cdktf/index.d.ts +0 -1
  63. package/lib/cleanup.d.ts +0 -1
  64. package/lib/cleanup.js +2 -2
  65. package/lib/cli/cmds/new.d.ts +0 -1
  66. package/lib/cli/cmds/new.js +9 -15
  67. package/lib/cli/index.d.ts +0 -1
  68. package/lib/cli/macros.d.ts +0 -1
  69. package/lib/cli/macros.js +6 -8
  70. package/lib/cli/synth.d.ts +0 -1
  71. package/lib/cli/synth.js +2 -3
  72. package/lib/cli/tasks.d.ts +0 -1
  73. package/lib/cli/tasks.js +5 -7
  74. package/lib/cli/util.d.ts +0 -1
  75. package/lib/clobber.d.ts +0 -1
  76. package/lib/common.d.ts +0 -1
  77. package/lib/component.d.ts +0 -1
  78. package/lib/component.js +1 -1
  79. package/lib/dependencies.d.ts +0 -1
  80. package/lib/dependencies.js +3 -3
  81. package/lib/dev-env.d.ts +0 -1
  82. package/lib/dev-env.js +1 -1
  83. package/lib/docker-compose.d.ts +0 -1
  84. package/lib/docker-compose.js +16 -21
  85. package/lib/file.d.ts +0 -1
  86. package/lib/file.js +7 -8
  87. package/lib/gitattributes.d.ts +0 -1
  88. package/lib/gitattributes.js +1 -1
  89. package/lib/github/auto-approve.d.ts +0 -1
  90. package/lib/github/auto-approve.js +6 -7
  91. package/lib/github/auto-merge.d.ts +0 -1
  92. package/lib/github/auto-merge.js +6 -6
  93. package/lib/github/constants.d.ts +0 -1
  94. package/lib/github/dependabot.d.ts +0 -1
  95. package/lib/github/dependabot.js +6 -7
  96. package/lib/github/github-credentials.d.ts +0 -1
  97. package/lib/github/github-credentials.js +5 -7
  98. package/lib/github/github-project.d.ts +0 -1
  99. package/lib/github/github-project.js +7 -8
  100. package/lib/github/github.d.ts +0 -1
  101. package/lib/github/github.js +5 -6
  102. package/lib/github/index.d.ts +0 -1
  103. package/lib/github/mergify.d.ts +0 -1
  104. package/lib/github/mergify.js +4 -5
  105. package/lib/github/pr-template.d.ts +0 -1
  106. package/lib/github/pr-template.js +3 -4
  107. package/lib/github/pull-request-lint.d.ts +0 -1
  108. package/lib/github/pull-request-lint.js +7 -8
  109. package/lib/github/stale-util.d.ts +0 -1
  110. package/lib/github/stale-util.js +10 -9
  111. package/lib/github/stale.d.ts +0 -1
  112. package/lib/github/stale.js +3 -4
  113. package/lib/github/task-workflow.d.ts +0 -1
  114. package/lib/github/task-workflow.js +8 -9
  115. package/lib/github/util.d.ts +0 -1
  116. package/lib/github/workflow-actions.d.ts +0 -1
  117. package/lib/github/workflows-model.d.ts +0 -1
  118. package/lib/github/workflows.d.ts +0 -1
  119. package/lib/github/workflows.js +3 -4
  120. package/lib/gitlab/configuration-model.d.ts +0 -1
  121. package/lib/gitlab/configuration.d.ts +0 -1
  122. package/lib/gitlab/configuration.js +9 -10
  123. package/lib/gitlab/gitlab-configuration.d.ts +0 -1
  124. package/lib/gitlab/gitlab-configuration.js +1 -1
  125. package/lib/gitlab/index.d.ts +0 -1
  126. package/lib/gitlab/nested-configuration.d.ts +0 -1
  127. package/lib/gitlab/nested-configuration.js +1 -1
  128. package/lib/gitpod.d.ts +0 -1
  129. package/lib/gitpod.js +9 -10
  130. package/lib/ignore-file.d.ts +0 -1
  131. package/lib/ignore-file.js +1 -1
  132. package/lib/index.d.ts +0 -1
  133. package/lib/ini.d.ts +0 -1
  134. package/lib/ini.js +1 -1
  135. package/lib/inventory.d.ts +0 -1
  136. package/lib/inventory.js +18 -22
  137. package/lib/java/index.d.ts +0 -1
  138. package/lib/java/java-project.d.ts +0 -1
  139. package/lib/java/java-project.js +9 -10
  140. package/lib/java/junit.d.ts +0 -1
  141. package/lib/java/junit.js +4 -5
  142. package/lib/java/maven-compile.d.ts +0 -1
  143. package/lib/java/maven-compile.js +4 -5
  144. package/lib/java/maven-packaging.d.ts +0 -1
  145. package/lib/java/maven-packaging.js +5 -6
  146. package/lib/java/maven-sample.d.ts +0 -1
  147. package/lib/java/maven-sample.js +1 -1
  148. package/lib/java/pom.d.ts +0 -1
  149. package/lib/java/pom.js +6 -9
  150. package/lib/java/projenrc.d.ts +0 -1
  151. package/lib/java/projenrc.js +10 -12
  152. package/lib/javascript/bundler.d.ts +0 -1
  153. package/lib/javascript/bundler.js +9 -11
  154. package/lib/javascript/eslint.d.ts +0 -1
  155. package/lib/javascript/eslint.js +10 -11
  156. package/lib/javascript/index.d.ts +0 -1
  157. package/lib/javascript/jest.d.ts +0 -1
  158. package/lib/javascript/jest.js +19 -19
  159. package/lib/javascript/node-package.d.ts +0 -1
  160. package/lib/javascript/node-package.js +36 -37
  161. package/lib/javascript/node-project.d.ts +0 -1
  162. package/lib/javascript/node-project.js +53 -54
  163. package/lib/javascript/npm-config.d.ts +0 -1
  164. package/lib/javascript/npm-config.js +1 -1
  165. package/lib/javascript/prettier.d.ts +0 -1
  166. package/lib/javascript/prettier.js +5 -7
  167. package/lib/javascript/projenrc.d.ts +0 -1
  168. package/lib/javascript/projenrc.js +4 -5
  169. package/lib/javascript/render-options.d.ts +0 -1
  170. package/lib/javascript/render-options.js +7 -8
  171. package/lib/javascript/typescript-config.d.ts +0 -1
  172. package/lib/javascript/typescript-config.js +6 -7
  173. package/lib/javascript/upgrade-dependencies.d.ts +0 -1
  174. package/lib/javascript/upgrade-dependencies.js +30 -30
  175. package/lib/javascript/util.d.ts +0 -1
  176. package/lib/javascript/util.js +3 -4
  177. package/lib/json.d.ts +0 -1
  178. package/lib/json.js +3 -4
  179. package/lib/license.d.ts +0 -1
  180. package/lib/license.js +3 -4
  181. package/lib/logger.d.ts +0 -1
  182. package/lib/logger.js +6 -7
  183. package/lib/logging.d.ts +0 -1
  184. package/lib/makefile.d.ts +0 -1
  185. package/lib/makefile.js +1 -1
  186. package/lib/object-file.d.ts +0 -1
  187. package/lib/object-file.js +6 -8
  188. package/lib/option-hints.d.ts +0 -1
  189. package/lib/project-build.d.ts +0 -1
  190. package/lib/project-build.js +1 -1
  191. package/lib/project.d.ts +0 -1
  192. package/lib/project.js +7 -8
  193. package/lib/projects.d.ts +0 -1
  194. package/lib/projects.js +5 -6
  195. package/lib/projenrc-json.d.ts +0 -1
  196. package/lib/projenrc-json.js +5 -6
  197. package/lib/python/index.d.ts +0 -1
  198. package/lib/python/pip.d.ts +0 -1
  199. package/lib/python/pip.js +1 -1
  200. package/lib/python/poetry.d.ts +0 -1
  201. package/lib/python/poetry.js +4 -5
  202. package/lib/python/projenrc.d.ts +0 -1
  203. package/lib/python/projenrc.js +7 -10
  204. package/lib/python/pytest-sample.d.ts +0 -1
  205. package/lib/python/pytest-sample.js +1 -1
  206. package/lib/python/pytest.d.ts +0 -1
  207. package/lib/python/pytest.js +4 -5
  208. package/lib/python/python-deps.d.ts +0 -1
  209. package/lib/python/python-env.d.ts +0 -1
  210. package/lib/python/python-packaging.d.ts +0 -1
  211. package/lib/python/python-project.d.ts +0 -1
  212. package/lib/python/python-project.js +16 -17
  213. package/lib/python/python-sample.d.ts +0 -1
  214. package/lib/python/python-sample.js +1 -1
  215. package/lib/python/requirements-file.d.ts +0 -1
  216. package/lib/python/requirements-file.js +1 -1
  217. package/lib/python/setuppy.d.ts +0 -1
  218. package/lib/python/setuppy.js +1 -1
  219. package/lib/python/setuptools.d.ts +0 -1
  220. package/lib/python/setuptools.js +1 -1
  221. package/lib/python/venv.d.ts +0 -1
  222. package/lib/python/venv.js +3 -4
  223. package/lib/readme.d.ts +0 -1
  224. package/lib/readme.js +4 -5
  225. package/lib/release/bump-version.d.ts +0 -1
  226. package/lib/release/bump-version.js +4 -5
  227. package/lib/release/bump-version.task.d.ts +0 -1
  228. package/lib/release/bump-version.task.js +2 -2
  229. package/lib/release/index.d.ts +0 -1
  230. package/lib/release/publisher.d.ts +0 -1
  231. package/lib/release/publisher.js +108 -123
  232. package/lib/release/release-trigger.d.ts +0 -1
  233. package/lib/release/release-trigger.js +5 -7
  234. package/lib/release/release.d.ts +0 -1
  235. package/lib/release/release.js +11 -13
  236. package/lib/release/reset-version.task.d.ts +0 -1
  237. package/lib/release/tag-version.d.ts +0 -1
  238. package/lib/release/tag-version.task.d.ts +0 -1
  239. package/lib/release/update-changelog.d.ts +0 -1
  240. package/lib/release/update-changelog.task.d.ts +0 -1
  241. package/lib/renovatebot.d.ts +0 -1
  242. package/lib/renovatebot.js +5 -6
  243. package/lib/run-projenrc-json.task.d.ts +0 -1
  244. package/lib/run-task.js +13 -17
  245. package/lib/sample-file.d.ts +0 -1
  246. package/lib/sample-file.js +4 -4
  247. package/lib/semver.d.ts +0 -1
  248. package/lib/semver.js +3 -4
  249. package/lib/source-code.d.ts +0 -1
  250. package/lib/source-code.js +5 -6
  251. package/lib/task-model.d.ts +0 -1
  252. package/lib/task-runtime.d.ts +0 -1
  253. package/lib/task-runtime.js +15 -19
  254. package/lib/task.d.ts +0 -1
  255. package/lib/task.js +4 -5
  256. package/lib/tasks.d.ts +0 -1
  257. package/lib/tasks.js +1 -1
  258. package/lib/testing.d.ts +0 -1
  259. package/lib/testing.js +1 -1
  260. package/lib/textfile.d.ts +0 -1
  261. package/lib/textfile.js +3 -4
  262. package/lib/toml.d.ts +0 -1
  263. package/lib/toml.js +1 -1
  264. package/lib/typescript/index.d.ts +0 -1
  265. package/lib/typescript/projenrc.d.ts +0 -1
  266. package/lib/typescript/projenrc.js +9 -10
  267. package/lib/typescript/typescript-typedoc.d.ts +0 -1
  268. package/lib/typescript/typescript-typedoc.js +1 -1
  269. package/lib/typescript/typescript.d.ts +0 -1
  270. package/lib/typescript/typescript.js +43 -46
  271. package/lib/util/semver.d.ts +0 -1
  272. package/lib/util/semver.js +2 -3
  273. package/lib/util/synth.d.ts +0 -1
  274. package/lib/util/synth.js +2 -3
  275. package/lib/util.d.ts +0 -1
  276. package/lib/util.js +7 -9
  277. package/lib/version.d.ts +0 -1
  278. package/lib/version.js +3 -4
  279. package/lib/vscode/devcontainer.d.ts +0 -1
  280. package/lib/vscode/devcontainer.js +8 -8
  281. package/lib/vscode/index.d.ts +0 -1
  282. package/lib/vscode/launch-config.d.ts +0 -1
  283. package/lib/vscode/launch-config.js +1 -1
  284. package/lib/vscode/vscode.d.ts +0 -1
  285. package/lib/vscode/vscode.js +1 -1
  286. package/lib/web/index.d.ts +0 -1
  287. package/lib/web/next.d.ts +0 -1
  288. package/lib/web/next.js +16 -20
  289. package/lib/web/postcss.d.ts +0 -1
  290. package/lib/web/postcss.js +6 -7
  291. package/lib/web/react.d.ts +0 -1
  292. package/lib/web/react.js +15 -19
  293. package/lib/web/tailwind.d.ts +0 -1
  294. package/lib/web/tailwind.js +4 -5
  295. package/lib/xmlfile.d.ts +0 -1
  296. package/lib/xmlfile.js +1 -1
  297. package/lib/yaml.d.ts +0 -1
  298. package/lib/yaml.js +3 -4
  299. package/package.json +5 -5
  300. package/lib/_resolve.d.ts.map +0 -1
  301. package/lib/awscdk/auto-discover.d.ts.map +0 -1
  302. package/lib/awscdk/awscdk-app-java.d.ts.map +0 -1
  303. package/lib/awscdk/awscdk-app-py.d.ts.map +0 -1
  304. package/lib/awscdk/awscdk-app-ts.d.ts.map +0 -1
  305. package/lib/awscdk/awscdk-construct.d.ts.map +0 -1
  306. package/lib/awscdk/awscdk-deps-java.d.ts.map +0 -1
  307. package/lib/awscdk/awscdk-deps-js.d.ts.map +0 -1
  308. package/lib/awscdk/awscdk-deps-py.d.ts.map +0 -1
  309. package/lib/awscdk/awscdk-deps.d.ts.map +0 -1
  310. package/lib/awscdk/awscdk-pytest-sample.d.ts.map +0 -1
  311. package/lib/awscdk/cdk-config.d.ts.map +0 -1
  312. package/lib/awscdk/cdk-tasks.d.ts.map +0 -1
  313. package/lib/awscdk/index.d.ts.map +0 -1
  314. package/lib/awscdk/integration-test.d.ts.map +0 -1
  315. package/lib/awscdk/internal.d.ts.map +0 -1
  316. package/lib/awscdk/lambda-extension.d.ts.map +0 -1
  317. package/lib/awscdk/lambda-function.d.ts.map +0 -1
  318. package/lib/build/build-workflow.d.ts.map +0 -1
  319. package/lib/build/index.d.ts.map +0 -1
  320. package/lib/builtin-example.task.d.ts.map +0 -1
  321. package/lib/cdk/auto-discover-base.d.ts.map +0 -1
  322. package/lib/cdk/construct-lib.d.ts.map +0 -1
  323. package/lib/cdk/consts.d.ts.map +0 -1
  324. package/lib/cdk/index.d.ts.map +0 -1
  325. package/lib/cdk/integration-test-base.d.ts.map +0 -1
  326. package/lib/cdk/internal.d.ts.map +0 -1
  327. package/lib/cdk/jsii-docgen.d.ts.map +0 -1
  328. package/lib/cdk/jsii-project.d.ts.map +0 -1
  329. package/lib/cdk8s/auto-discover.d.ts.map +0 -1
  330. package/lib/cdk8s/cdk8s-app-ts.d.ts.map +0 -1
  331. package/lib/cdk8s/cdk8s-construct.d.ts.map +0 -1
  332. package/lib/cdk8s/index.d.ts.map +0 -1
  333. package/lib/cdk8s/integration-test.d.ts.map +0 -1
  334. package/lib/cdktf/cdktf-construct.d.ts.map +0 -1
  335. package/lib/cdktf/index.d.ts.map +0 -1
  336. package/lib/cleanup.d.ts.map +0 -1
  337. package/lib/cli/cmds/new.d.ts.map +0 -1
  338. package/lib/cli/index.d.ts.map +0 -1
  339. package/lib/cli/macros.d.ts.map +0 -1
  340. package/lib/cli/synth.d.ts.map +0 -1
  341. package/lib/cli/tasks.d.ts.map +0 -1
  342. package/lib/cli/util.d.ts.map +0 -1
  343. package/lib/clobber.d.ts.map +0 -1
  344. package/lib/common.d.ts.map +0 -1
  345. package/lib/component.d.ts.map +0 -1
  346. package/lib/dependencies.d.ts.map +0 -1
  347. package/lib/dev-env.d.ts.map +0 -1
  348. package/lib/docker-compose.d.ts.map +0 -1
  349. package/lib/file.d.ts.map +0 -1
  350. package/lib/gitattributes.d.ts.map +0 -1
  351. package/lib/github/auto-approve.d.ts.map +0 -1
  352. package/lib/github/auto-merge.d.ts.map +0 -1
  353. package/lib/github/constants.d.ts.map +0 -1
  354. package/lib/github/dependabot.d.ts.map +0 -1
  355. package/lib/github/github-credentials.d.ts.map +0 -1
  356. package/lib/github/github-project.d.ts.map +0 -1
  357. package/lib/github/github.d.ts.map +0 -1
  358. package/lib/github/index.d.ts.map +0 -1
  359. package/lib/github/mergify.d.ts.map +0 -1
  360. package/lib/github/pr-template.d.ts.map +0 -1
  361. package/lib/github/pull-request-lint.d.ts.map +0 -1
  362. package/lib/github/stale-util.d.ts.map +0 -1
  363. package/lib/github/stale.d.ts.map +0 -1
  364. package/lib/github/task-workflow.d.ts.map +0 -1
  365. package/lib/github/util.d.ts.map +0 -1
  366. package/lib/github/workflow-actions.d.ts.map +0 -1
  367. package/lib/github/workflows-model.d.ts.map +0 -1
  368. package/lib/github/workflows.d.ts.map +0 -1
  369. package/lib/gitlab/configuration-model.d.ts.map +0 -1
  370. package/lib/gitlab/configuration.d.ts.map +0 -1
  371. package/lib/gitlab/gitlab-configuration.d.ts.map +0 -1
  372. package/lib/gitlab/index.d.ts.map +0 -1
  373. package/lib/gitlab/nested-configuration.d.ts.map +0 -1
  374. package/lib/gitpod.d.ts.map +0 -1
  375. package/lib/ignore-file.d.ts.map +0 -1
  376. package/lib/index.d.ts.map +0 -1
  377. package/lib/ini.d.ts.map +0 -1
  378. package/lib/inventory.d.ts.map +0 -1
  379. package/lib/java/index.d.ts.map +0 -1
  380. package/lib/java/java-project.d.ts.map +0 -1
  381. package/lib/java/junit.d.ts.map +0 -1
  382. package/lib/java/maven-compile.d.ts.map +0 -1
  383. package/lib/java/maven-packaging.d.ts.map +0 -1
  384. package/lib/java/maven-sample.d.ts.map +0 -1
  385. package/lib/java/pom.d.ts.map +0 -1
  386. package/lib/java/projenrc.d.ts.map +0 -1
  387. package/lib/javascript/bundler.d.ts.map +0 -1
  388. package/lib/javascript/eslint.d.ts.map +0 -1
  389. package/lib/javascript/index.d.ts.map +0 -1
  390. package/lib/javascript/jest.d.ts.map +0 -1
  391. package/lib/javascript/node-package.d.ts.map +0 -1
  392. package/lib/javascript/node-project.d.ts.map +0 -1
  393. package/lib/javascript/npm-config.d.ts.map +0 -1
  394. package/lib/javascript/prettier.d.ts.map +0 -1
  395. package/lib/javascript/projenrc.d.ts.map +0 -1
  396. package/lib/javascript/render-options.d.ts.map +0 -1
  397. package/lib/javascript/typescript-config.d.ts.map +0 -1
  398. package/lib/javascript/upgrade-dependencies.d.ts.map +0 -1
  399. package/lib/javascript/util.d.ts.map +0 -1
  400. package/lib/json.d.ts.map +0 -1
  401. package/lib/license.d.ts.map +0 -1
  402. package/lib/logger.d.ts.map +0 -1
  403. package/lib/logging.d.ts.map +0 -1
  404. package/lib/makefile.d.ts.map +0 -1
  405. package/lib/object-file.d.ts.map +0 -1
  406. package/lib/option-hints.d.ts.map +0 -1
  407. package/lib/project-build.d.ts.map +0 -1
  408. package/lib/project.d.ts.map +0 -1
  409. package/lib/projects.d.ts.map +0 -1
  410. package/lib/projenrc-json.d.ts.map +0 -1
  411. package/lib/python/index.d.ts.map +0 -1
  412. package/lib/python/pip.d.ts.map +0 -1
  413. package/lib/python/poetry.d.ts.map +0 -1
  414. package/lib/python/projenrc.d.ts.map +0 -1
  415. package/lib/python/pytest-sample.d.ts.map +0 -1
  416. package/lib/python/pytest.d.ts.map +0 -1
  417. package/lib/python/python-deps.d.ts.map +0 -1
  418. package/lib/python/python-env.d.ts.map +0 -1
  419. package/lib/python/python-packaging.d.ts.map +0 -1
  420. package/lib/python/python-project.d.ts.map +0 -1
  421. package/lib/python/python-sample.d.ts.map +0 -1
  422. package/lib/python/requirements-file.d.ts.map +0 -1
  423. package/lib/python/setuppy.d.ts.map +0 -1
  424. package/lib/python/setuptools.d.ts.map +0 -1
  425. package/lib/python/venv.d.ts.map +0 -1
  426. package/lib/readme.d.ts.map +0 -1
  427. package/lib/release/bump-version.d.ts.map +0 -1
  428. package/lib/release/bump-version.task.d.ts.map +0 -1
  429. package/lib/release/index.d.ts.map +0 -1
  430. package/lib/release/publisher.d.ts.map +0 -1
  431. package/lib/release/release-trigger.d.ts.map +0 -1
  432. package/lib/release/release.d.ts.map +0 -1
  433. package/lib/release/reset-version.task.d.ts.map +0 -1
  434. package/lib/release/tag-version.d.ts.map +0 -1
  435. package/lib/release/tag-version.task.d.ts.map +0 -1
  436. package/lib/release/update-changelog.d.ts.map +0 -1
  437. package/lib/release/update-changelog.task.d.ts.map +0 -1
  438. package/lib/renovatebot.d.ts.map +0 -1
  439. package/lib/run-projenrc-json.task.d.ts.map +0 -1
  440. package/lib/sample-file.d.ts.map +0 -1
  441. package/lib/semver.d.ts.map +0 -1
  442. package/lib/source-code.d.ts.map +0 -1
  443. package/lib/task-model.d.ts.map +0 -1
  444. package/lib/task-runtime.d.ts.map +0 -1
  445. package/lib/task.d.ts.map +0 -1
  446. package/lib/tasks.d.ts.map +0 -1
  447. package/lib/testing.d.ts.map +0 -1
  448. package/lib/textfile.d.ts.map +0 -1
  449. package/lib/toml.d.ts.map +0 -1
  450. package/lib/typescript/index.d.ts.map +0 -1
  451. package/lib/typescript/projenrc.d.ts.map +0 -1
  452. package/lib/typescript/typescript-typedoc.d.ts.map +0 -1
  453. package/lib/typescript/typescript.d.ts.map +0 -1
  454. package/lib/util/semver.d.ts.map +0 -1
  455. package/lib/util/synth.d.ts.map +0 -1
  456. package/lib/util.d.ts.map +0 -1
  457. package/lib/version.d.ts.map +0 -1
  458. package/lib/vscode/devcontainer.d.ts.map +0 -1
  459. package/lib/vscode/index.d.ts.map +0 -1
  460. package/lib/vscode/launch-config.d.ts.map +0 -1
  461. package/lib/vscode/vscode.d.ts.map +0 -1
  462. package/lib/web/index.d.ts.map +0 -1
  463. package/lib/web/next.d.ts.map +0 -1
  464. package/lib/web/postcss.d.ts.map +0 -1
  465. package/lib/web/react.d.ts.map +0 -1
  466. package/lib/web/tailwind.d.ts.map +0 -1
  467. package/lib/xmlfile.d.ts.map +0 -1
  468. package/lib/yaml.d.ts.map +0 -1
@@ -19,5 +19,5 @@ class TypedocDocgen {
19
19
  }
20
20
  exports.TypedocDocgen = TypedocDocgen;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- TypedocDocgen[_a] = { fqn: "projen.typescript.TypedocDocgen", version: "0.58.1" };
22
+ TypedocDocgen[_a] = { fqn: "projen.typescript.TypedocDocgen", version: "0.58.2" };
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC10eXBlZG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzY3JpcHQvdHlwZXNjcmlwdC10eXBlZG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUE7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEIsWUFBWSxPQUEwQjtRQUNwQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxxQ0FBcUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN6RSxJQUFJLEVBQUUsV0FBVyxPQUFPLENBQUMsTUFBTSwyQkFBMkIsT0FBTyxDQUFDLGFBQWEsRUFBRTtTQUNsRixDQUFDLENBQUM7UUFFSCxtQ0FBbUM7UUFDbkMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7QUFYSCxzQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0IH0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcblxuLyoqXG4gIEFkZHMgYSBzaW1wbGUgVHlwZXNjcmlwdCBkb2N1bWVudGF0aW9uIGdlbmVyYXRvclxuICovXG5leHBvcnQgY2xhc3MgVHlwZWRvY0RvY2dlbiB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFR5cGVTY3JpcHRQcm9qZWN0KSB7XG4gICAgcHJvamVjdC5hZGREZXZEZXBzKFwidHlwZWRvY1wiKTtcblxuICAgIGNvbnN0IGRvY2dlbiA9IHByb2plY3QuYWRkVGFzayhcImRvY2dlblwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYEdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIHJlZmVyZW5jZSAke3Byb2plY3QuZG9jc0RpcmVjdG9yeX1gLFxuICAgICAgZXhlYzogYHR5cGVkb2MgJHtwcm9qZWN0LnNyY2Rpcn0gLS1kaXNhYmxlU291cmNlcyAtLW91dCAke3Byb2plY3QuZG9jc0RpcmVjdG9yeX1gLFxuICAgIH0pO1xuXG4gICAgLy8gc3Bhd24gYWZ0ZXIgYSBzdWNjZXNzZnVsIGNvbXBpbGVcbiAgICBwcm9qZWN0LnBvc3RDb21waWxlVGFzay5zcGF3bihkb2NnZW4pO1xuICB9XG59XG4iXX0=
@@ -161,4 +161,3 @@ export interface TypeScriptLibraryProjectOptions extends TypeScriptProjectOption
161
161
  * @internal
162
162
  */
163
163
  export declare function mergeTsconfigOptions(...options: (TypescriptConfigOptions | undefined)[]): TypescriptConfigOptions;
164
- //# sourceMappingURL=typescript.d.ts.map
@@ -17,7 +17,6 @@ const typescript_1 = require("../typescript");
17
17
  */
18
18
  class TypeScriptProject extends javascript_1.NodeProject {
19
19
  constructor(options) {
20
- var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
21
20
  super({
22
21
  ...options,
23
22
  // disable .projenrc.js if typescript is enabled
@@ -25,30 +24,31 @@ class TypeScriptProject extends javascript_1.NodeProject {
25
24
  jestOptions: {
26
25
  ...options.jestOptions,
27
26
  jestConfig: {
28
- ...(_d = options.jestOptions) === null || _d === void 0 ? void 0 : _d.jestConfig,
27
+ ...options.jestOptions?.jestConfig,
29
28
  testMatch: [],
30
29
  },
31
30
  },
32
31
  });
33
- this.srcdir = (_e = options.srcdir) !== null && _e !== void 0 ? _e : "src";
34
- this.libdir = (_f = options.libdir) !== null && _f !== void 0 ? _f : "lib";
32
+ this.srcdir = options.srcdir ?? "src";
33
+ this.libdir = options.libdir ?? "lib";
35
34
  this.docgen = options.docgen;
36
- this.docsDirectory = (_g = options.docsDirectory) !== null && _g !== void 0 ? _g : "docs/";
35
+ this.docsDirectory = options.docsDirectory ?? "docs/";
37
36
  this.compileTask.exec("tsc --build");
38
37
  this.watchTask = this.addTask("watch", {
39
38
  description: "Watch & compile in the background",
40
39
  exec: "tsc --build -w",
41
40
  });
42
- this.testdir = (_h = options.testdir) !== null && _h !== void 0 ? _h : "test";
41
+ this.testdir = options.testdir ?? "test";
43
42
  this.gitignore.include(`/${this.testdir}/`);
44
- (_j = this.npmignore) === null || _j === void 0 ? void 0 : _j.exclude(`/${this.testdir}/`);
43
+ this.npmignore?.exclude(`/${this.testdir}/`);
45
44
  // if the test directory is under `src/`, then we will run our tests against
46
45
  // the javascript files and not let jest compile it for us.
47
46
  const compiledTests = this.testdir.startsWith(this.srcdir + path.posix.sep);
48
47
  if (options.entrypointTypes || this.entrypoint !== "") {
49
- const entrypointTypes = (_k = options.entrypointTypes) !== null && _k !== void 0 ? _k : `${path
50
- .join(path.dirname(this.entrypoint), path.basename(this.entrypoint, ".js"))
51
- .replace(/\\/g, "/")}.d.ts`;
48
+ const entrypointTypes = options.entrypointTypes ??
49
+ `${path
50
+ .join(path.dirname(this.entrypoint), path.basename(this.entrypoint, ".js"))
51
+ .replace(/\\/g, "/")}.d.ts`;
52
52
  this.package.addField("types", entrypointTypes);
53
53
  }
54
54
  const compilerOptionDefaults = {
@@ -85,7 +85,7 @@ class TypeScriptProject extends javascript_1.NodeProject {
85
85
  },
86
86
  }, options.tsconfig));
87
87
  }
88
- const tsconfigDevFile = (_l = options.tsconfigDevFile) !== null && _l !== void 0 ? _l : "tsconfig.dev.json";
88
+ const tsconfigDevFile = options.tsconfigDevFile ?? "tsconfig.dev.json";
89
89
  this.tsconfigDev = new javascript_1.TypescriptConfig(this, mergeTsconfigOptions({
90
90
  fileName: tsconfigDevFile,
91
91
  include: [
@@ -97,7 +97,7 @@ class TypeScriptProject extends javascript_1.NodeProject {
97
97
  compilerOptions: compilerOptionDefaults,
98
98
  }, options.tsconfig, options.tsconfigDev));
99
99
  this.gitignore.include(`/${this.srcdir}/`);
100
- (_m = this.npmignore) === null || _m === void 0 ? void 0 : _m.exclude(`/${this.srcdir}/`);
100
+ this.npmignore?.exclude(`/${this.srcdir}/`);
101
101
  if (this.srcdir !== this.libdir) {
102
102
  // separated, can ignore the entire libdir
103
103
  this.gitignore.exclude(`/${this.libdir}`);
@@ -107,17 +107,17 @@ class TypeScriptProject extends javascript_1.NodeProject {
107
107
  this.gitignore.exclude(`/${this.libdir}/**/*.js`);
108
108
  this.gitignore.exclude(`/${this.libdir}/**/*.d.ts`);
109
109
  }
110
- (_o = this.npmignore) === null || _o === void 0 ? void 0 : _o.include(`/${this.libdir}/`);
111
- (_p = this.npmignore) === null || _p === void 0 ? void 0 : _p.include(`/${this.libdir}/**/*.js`);
112
- (_q = this.npmignore) === null || _q === void 0 ? void 0 : _q.include(`/${this.libdir}/**/*.d.ts`);
110
+ this.npmignore?.include(`/${this.libdir}/`);
111
+ this.npmignore?.include(`/${this.libdir}/**/*.js`);
112
+ this.npmignore?.include(`/${this.libdir}/**/*.d.ts`);
113
113
  this.gitignore.exclude("/dist/");
114
- (_r = this.npmignore) === null || _r === void 0 ? void 0 : _r.exclude("dist"); // jsii-pacmak expects this to be "dist" and not "/dist". otherwise it will tamper with it
115
- (_s = this.npmignore) === null || _s === void 0 ? void 0 : _s.exclude("/tsconfig.json");
116
- (_t = this.npmignore) === null || _t === void 0 ? void 0 : _t.exclude("/.github/");
117
- (_u = this.npmignore) === null || _u === void 0 ? void 0 : _u.exclude("/.vscode/");
118
- (_v = this.npmignore) === null || _v === void 0 ? void 0 : _v.exclude("/.idea/");
119
- (_w = this.npmignore) === null || _w === void 0 ? void 0 : _w.exclude("/.projenrc.js");
120
- (_x = this.npmignore) === null || _x === void 0 ? void 0 : _x.exclude("tsconfig.tsbuildinfo");
114
+ this.npmignore?.exclude("dist"); // jsii-pacmak expects this to be "dist" and not "/dist". otherwise it will tamper with it
115
+ this.npmignore?.exclude("/tsconfig.json");
116
+ this.npmignore?.exclude("/.github/");
117
+ this.npmignore?.exclude("/.vscode/");
118
+ this.npmignore?.exclude("/.idea/");
119
+ this.npmignore?.exclude("/.projenrc.js");
120
+ this.npmignore?.exclude("tsconfig.tsbuildinfo");
121
121
  if (this.jest) {
122
122
  if (compiledTests) {
123
123
  this.addJestCompiled(this.jest);
@@ -126,13 +126,14 @@ class TypeScriptProject extends javascript_1.NodeProject {
126
126
  this.addJestNoCompile(this.jest);
127
127
  }
128
128
  }
129
- const projenrcTypeScript = (_y = options.projenrcTs) !== null && _y !== void 0 ? _y : false;
129
+ const projenrcTypeScript = options.projenrcTs ?? false;
130
130
  if (projenrcTypeScript) {
131
131
  new typescript_1.Projenrc(this, options.projenrcTsOptions);
132
132
  }
133
133
  const projenRcFilename = projenrcTypeScript
134
- ? (_0 = (_z = options.projenrcTsOptions) === null || _z === void 0 ? void 0 : _z.filename) !== null && _0 !== void 0 ? _0 : ".projenrc.ts" : undefined;
135
- if ((_1 = options.eslint) !== null && _1 !== void 0 ? _1 : true) {
134
+ ? options.projenrcTsOptions?.filename ?? ".projenrc.ts"
135
+ : undefined;
136
+ if (options.eslint ?? true) {
136
137
  this.eslint = new javascript_1.Eslint(this, {
137
138
  tsconfigPath: `./${this.tsconfigDev.fileName}`,
138
139
  dirs: [this.srcdir],
@@ -156,9 +157,9 @@ class TypeScriptProject extends javascript_1.NodeProject {
156
157
  // Additionally, we default to tracking the 12.x line, as the current earliest LTS release of
157
158
  // node is 12.x, so this is what corresponds to the broadest compatibility with supported node
158
159
  // runtimes.
159
- `@types/node@^${semver.major((_2 = this.package.minNodeVersion) !== null && _2 !== void 0 ? _2 : "14.0.0")}`);
160
+ `@types/node@^${semver.major(this.package.minNodeVersion ?? "14.0.0")}`);
160
161
  // generate sample code in `src` and `lib` if these directories are empty or non-existent.
161
- if ((_3 = options.sampleCode) !== null && _3 !== void 0 ? _3 : true) {
162
+ if (options.sampleCode ?? true) {
162
163
  new SampleCode(this);
163
164
  }
164
165
  if (this.docgen) {
@@ -170,12 +171,11 @@ class TypeScriptProject extends javascript_1.NodeProject {
170
171
  * for us. just run them directly from javascript.
171
172
  */
172
173
  addJestCompiled(jest) {
173
- var _d;
174
174
  this.addDevDeps("@types/jest");
175
175
  const testout = path.posix.relative(this.srcdir, this.testdir);
176
176
  const libtest = path.posix.join(this.libdir, testout);
177
177
  const srctest = this.testdir;
178
- (_d = this.npmignore) === null || _d === void 0 ? void 0 : _d.exclude(`/${libtest}/`);
178
+ this.npmignore?.exclude(`/${libtest}/`);
179
179
  jest.addTestMatch(`**/${libtest}/**/?(*.)+(spec|test).js?(x)`);
180
180
  jest.addWatchIgnorePattern(`/${this.srcdir}/`);
181
181
  const resolveSnapshotPath = (test, ext) => {
@@ -216,7 +216,7 @@ class TypeScriptProject extends javascript_1.NodeProject {
216
216
  }
217
217
  exports.TypeScriptProject = TypeScriptProject;
218
218
  _a = JSII_RTTI_SYMBOL_1;
219
- TypeScriptProject[_a] = { fqn: "projen.typescript.TypeScriptProject", version: "0.58.1" };
219
+ TypeScriptProject[_a] = { fqn: "projen.typescript.TypeScriptProject", version: "0.58.2" };
220
220
  class SampleCode extends component_1.Component {
221
221
  constructor(project) {
222
222
  super(project);
@@ -264,7 +264,7 @@ class TypeScriptAppProject extends TypeScriptProject {
264
264
  }
265
265
  exports.TypeScriptAppProject = TypeScriptAppProject;
266
266
  _b = JSII_RTTI_SYMBOL_1;
267
- TypeScriptAppProject[_b] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.58.1" };
267
+ TypeScriptAppProject[_b] = { fqn: "projen.typescript.TypeScriptAppProject", version: "0.58.2" };
268
268
  /**
269
269
  * @deprecated use `TypeScriptProject`
270
270
  */
@@ -272,25 +272,22 @@ class TypeScriptLibraryProject extends TypeScriptProject {
272
272
  }
273
273
  exports.TypeScriptLibraryProject = TypeScriptLibraryProject;
274
274
  _c = JSII_RTTI_SYMBOL_1;
275
- TypeScriptLibraryProject[_c] = { fqn: "projen.typescript.TypeScriptLibraryProject", version: "0.58.1" };
275
+ TypeScriptLibraryProject[_c] = { fqn: "projen.typescript.TypeScriptLibraryProject", version: "0.58.2" };
276
276
  /**
277
277
  * @internal
278
278
  */
279
279
  function mergeTsconfigOptions(...options) {
280
280
  const definedOptions = options.filter(Boolean);
281
- return definedOptions.reduce((previous, current) => {
282
- var _d, _e, _f, _g;
283
- return ({
284
- ...previous,
285
- ...current,
286
- include: [...((_d = previous.include) !== null && _d !== void 0 ? _d : []), ...((_e = current.include) !== null && _e !== void 0 ? _e : [])],
287
- exclude: [...((_f = previous.exclude) !== null && _f !== void 0 ? _f : []), ...((_g = current.exclude) !== null && _g !== void 0 ? _g : [])],
288
- compilerOptions: {
289
- ...previous.compilerOptions,
290
- ...current.compilerOptions,
291
- },
292
- });
293
- }, { compilerOptions: {} });
281
+ return definedOptions.reduce((previous, current) => ({
282
+ ...previous,
283
+ ...current,
284
+ include: [...(previous.include ?? []), ...(current.include ?? [])],
285
+ exclude: [...(previous.exclude ?? []), ...(current.exclude ?? [])],
286
+ compilerOptions: {
287
+ ...previous.compilerOptions,
288
+ ...current.compilerOptions,
289
+ },
290
+ }), { compilerOptions: {} });
294
291
  }
295
292
  exports.mergeTsconfigOptions = mergeTsconfigOptions;
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlc2NyaXB0L3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLHNDQUFrRDtBQUNsRCw0Q0FBeUM7QUFDekMsOENBU3VCO0FBQ3ZCLGdEQUEyQztBQUUzQywwQ0FBdUM7QUFDdkMsOENBSXVCO0FBc0h2Qjs7O0dBR0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHdCQUFXO0lBZ0NoRCxZQUFZLE9BQWlDOztRQUMzQyxLQUFLLENBQUM7WUFDSixHQUFHLE9BQU87WUFFVixnREFBZ0Q7WUFDaEQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFFM0QsV0FBVyxFQUFFO2dCQUNYLEdBQUcsT0FBTyxDQUFDLFdBQVc7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixTQUFHLE9BQU8sQ0FBQyxXQUFXLDBDQUFFLFVBQVU7b0JBQ2xDLFNBQVMsRUFBRSxFQUFFO2lCQUNkO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxTQUFHLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxTQUFHLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsU0FBRyxPQUFPLENBQUMsYUFBYSxtQ0FBSSxPQUFPLENBQUM7UUFFdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNyQyxXQUFXLEVBQUUs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O1lBQ3RCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQVRILG9EQVVDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsaUJBQWlCOztBQUEvRCw0REFBa0U7OztBQVFsRTs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxHQUFHLE9BQWdEO0lBRW5ELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUE4QixDQUFDO0lBQzVFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FDMUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7O1FBQUMsT0FBQSxDQUFDO1lBQ3RCLEdBQUcsUUFBUTtZQUNYLEdBQUcsT0FBTztZQUNWLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBQyxRQUFRLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQUMsT0FBTyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDLENBQUM7WUFDbEUsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFDLFFBQVEsQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBQyxPQUFPLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsQ0FBQztZQUNsRSxlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxRQUFRLENBQUMsZUFBZTtnQkFDM0IsR0FBRyxPQUFPLENBQUMsZUFBZTthQUMzQjtTQUNGLENBQUMsQ0FBQTtLQUFBLEVBQ0YsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBakJELG9EQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBQUk9KRU5fRElSLCBQUk9KRU5fUkMgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBFc2xpbnQsXG4gIEVzbGludE9wdGlvbnMsXG4gIEplc3QsXG4gIE5vZGVQcm9qZWN0LFxuICBOb2RlUHJvamVjdE9wdGlvbnMsXG4gIFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMsXG4gIFR5cGVzY3JpcHRDb25maWcsXG4gIFR5cGVzY3JpcHRDb25maWdPcHRpb25zLFxufSBmcm9tIFwiLi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgU2FtcGxlRGlyIH0gZnJvbSBcIi4uL3NhbXBsZS1maWxlXCI7XG5pbXBvcnQgeyBUYXNrIH0gZnJvbSBcIi4uL3Rhc2tcIjtcbmltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSBcIi4uL3RleHRmaWxlXCI7XG5pbXBvcnQge1xuICBQcm9qZW5yYyBhcyBQcm9qZW5yY1RzLFxuICBQcm9qZW5yY09wdGlvbnMgYXMgUHJvamVucmNUc09wdGlvbnMsXG4gIFR5cGVkb2NEb2NnZW4sXG59IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIGV4dGVuZHMgTm9kZVByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFR5cGVzY3JpcHQgIGFydGlmYWN0cyBvdXRwdXQgZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGliXCJcbiAgICovXG4gIHJlYWRvbmx5IGxpYmRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZXNjcmlwdCBzb3VyY2VzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJzcmNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBKZXN0IHRlc3RzIGRpcmVjdG9yeS4gVGVzdHMgZmlsZXMgc2hvdWxkIGJlIG5hbWVkIGB4eHgudGVzdC50c2AuXG4gICAqXG4gICAqIElmIHRoaXMgZGlyZWN0b3J5IGlzIHVuZGVyIGBzcmNkaXJgIChlLmcuIGBzcmMvdGVzdGAsIGBzcmMvX190ZXN0c19fYCksXG4gICAqIHRoZW4gdGVzdHMgYXJlIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGludG8gYGxpYi9gIGFuZCBleGVjdXRlZCBhcyBqYXZhc2NyaXB0LlxuICAgKiBJZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgb3V0c2lkZSBvZiBgc3JjYCwgdGhlbiB3ZSBjb25maWd1cmUgamVzdCB0b1xuICAgKiBjb21waWxlIHRoZSBjb2RlIGluLW1lbW9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHVwIGVzbGludC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXNsaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXNsaW50IG9wdGlvbnNcbiAgICogQGRlZmF1bHQgLSBvcGluaW9uYXRlZCBkZWZhdWx0IG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVzbGludE9wdGlvbnM/OiBFc2xpbnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBOT1RFOiBUeXBlc2NyaXB0IGlzIG5vdCBzZW1hbnRpY2FsbHkgdmVyc2lvbmVkIGFuZCBzaG91bGQgcmVtYWluIG9uIHRoZVxuICAgKiBzYW1lIG1pbm9yLCBzbyB3ZSByZWNvbW1lbmQgdXNpbmcgYSBgfmAgZGVwZW5kZW5jeSAoZS5nLiBgfjEuMi4zYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibGF0ZXN0XCJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzY3JpcHRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2NnZW4gYnkgVHlwZWRvY1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG9jcyBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJkb2NzXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBUU0NvbmZpZ1xuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWc/OiBUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucztcblxuICAvKipcbiAgICogQ3VzdG9tIHRzY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUgKHVzZWQgZm9yIHRlc3RpbmcpLlxuICAgKiBAZGVmYXVsdCAtIHVzZSB0aGUgcHJvZHVjdGlvbiB0c2NvbmZpZyBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZ0Rldj86IFR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGV2ZWxvcG1lbnQgdHNjb25maWcuanNvbiBmaWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInRzY29uZmlnLmRldi5qc29uXCJcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2RmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRG8gbm90IGdlbmVyYXRlIGEgYHRzY29uZmlnLmpzb25gIGZpbGUgKHVzZWQgYnkganNpaSBwcm9qZWN0cyBzaW5jZVxuICAgKiB0c2NvbmZpZy5qc29uIGlzIGdlbmVyYXRlZCBieSB0aGUganNpaSBjb21waWxlcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlVHNjb25maWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmUtdGltZSBzYW1wbGUgaW4gYHNyYy9gIGFuZCBgdGVzdC9gIGlmIHRoZXJlIGFyZSBubyBmaWxlcyB0aGVyZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlQ29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSAuZC50cyBmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIHR5cGUgZGVjbGFyYXRpb25zIGZvciB0aGlzIG1vZHVsZS5cbiAgICogQGRlZmF1bHQgLSAuZC50cyBmaWxlIGRlcml2ZWQgZnJvbSB0aGUgcHJvamVjdCdzIGVudHJ5cG9pbnQgKHVzdWFsbHkgbGliL2luZGV4LmQudHMpXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50VHlwZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSBUeXBlU2NyaXB0IGZvciB5b3VyIHByb2plbnJjIGZpbGUgKGAucHJvamVucmMudHNgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjVHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciAucHJvamVucmMudHNcbiAgICovXG4gIHJlYWRvbmx5IHByb2plbnJjVHNPcHRpb25zPzogUHJvamVucmNUc09wdGlvbnM7XG59XG5cbi8qKlxuICogVHlwZVNjcmlwdCBwcm9qZWN0XG4gKiBAcGppZCB0eXBlc2NyaXB0XG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIE5vZGVQcm9qZWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGRvY2dlbj86IGJvb2xlYW47XG4gIHB1YmxpYyByZWFkb25seSBkb2NzRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBlc2xpbnQ/OiBFc2xpbnQ7XG4gIHB1YmxpYyByZWFkb25seSB0c2NvbmZpZ0VzbGludD86IFR5cGVzY3JpcHRDb25maWc7XG4gIHB1YmxpYyByZWFkb25seSB0c2NvbmZpZz86IFR5cGVzY3JpcHRDb25maWc7XG5cbiAgLyoqXG4gICAqIEEgdHlwZXNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgd2hpY2ggY292ZXJzIGFsbCBmaWxlcyAoc291cmNlcywgdGVzdHMsIHByb2plbikuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHNjb25maWdEZXY6IFR5cGVzY3JpcHRDb25maWc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIC50cyBzb3VyY2VzIHJlc2lkZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBjb21waWxlZCAuanMgZmlsZXMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxpYmRpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIHRlc3RzIHJlc2lkZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZXN0ZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBcIndhdGNoXCIgdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3YXRjaFRhc2s6IFRhc2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogVHlwZVNjcmlwdFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcblxuICAgICAgLy8gZGlzYWJsZSAucHJvamVucmMuanMgaWYgdHlwZXNjcmlwdCBpcyBlbmFibGVkXG4gICAgICBwcm9qZW5yY0pzOiBvcHRpb25zLnByb2plbnJjVHMgPyBmYWxzZSA6IG9wdGlvbnMucHJvamVucmNKcyxcblxuICAgICAgamVzdE9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5qZXN0T3B0aW9ucyxcbiAgICAgICAgamVzdENvbmZpZzoge1xuICAgICAgICAgIC4uLm9wdGlvbnMuamVzdE9wdGlvbnM/Lmplc3RDb25maWcsXG4gICAgICAgICAgdGVzdE1hdGNoOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNyY2RpciA9IG9wdGlvbnMuc3JjZGlyID8/IFwic3JjXCI7XG4gICAgdGhpcy5saWJkaXIgPSBvcHRpb25zLmxpYmRpciA/PyBcImxpYlwiO1xuXG4gICAgdGhpcy5kb2NnZW4gPSBvcHRpb25zLmRvY2dlbjtcbiAgICB0aGlzLmRvY3NEaXJlY3RvcnkgPSBvcHRpb25zLmRvY3NEaXJlY3RvcnkgPz8gXCJkb2NzL1wiO1xuXG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwidHNjIC0tYnVpbGRcIik7XG5cbiAgICB0aGlzLndhdGNoVGFzayA9IHRoaXMuYWRkVGFzayhcIndhdGNoXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIldhdGNoICYgY29tcGlsZSBpbiB0aGUgYmFja2dyb3VuZFwiLFxuICAgICAgZXhlYzogXCJ0c2MgLS1idWlsZCAtd1wiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50ZXN0ZGlyID0gb3B0aW9ucy50ZXN0ZGlyID8/IFwidGVzdFwiO1xuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoYC8ke3RoaXMudGVzdGRpcn0vYCk7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMudGVzdGRpcn0vYCk7XG5cbiAgICAvLyBpZiB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgdW5kZXIgYHNyYy9gLCB0aGVuIHdlIHdpbGwgcnVuIG91ciB0ZXN0cyBhZ2FpbnN0XG4gICAgLy8gdGhlIGphdmFzY3JpcHQgZmlsZXMgYW5kIG5vdCBsZXQgamVzdCBjb21waWxlIGl0IGZvciB1cy5cbiAgICBjb25zdCBjb21waWxlZFRlc3RzID0gdGhpcy50ZXN0ZGlyLnN0YXJ0c1dpdGgodGhpcy5zcmNkaXIgKyBwYXRoLnBvc2l4LnNlcCk7XG5cbiAgICBpZiAob3B0aW9ucy5lbnRyeXBvaW50VHlwZXMgfHwgdGhpcy5lbnRyeXBvaW50ICE9PSBcIlwiKSB7XG4gICAgICBjb25zdCBlbnRyeXBvaW50VHlwZXMgPVxuICAgICAgICBvcHRpb25zLmVudHJ5cG9pbnRUeXBlcyA/P1xuICAgICAgICBgJHtwYXRoXG4gICAgICAgICAgLmpvaW4oXG4gICAgICAgICAgICBwYXRoLmRpcm5hbWUodGhpcy5lbnRyeXBvaW50KSxcbiAgICAgICAgICAgIHBhdGguYmFzZW5hbWUodGhpcy5lbnRyeXBvaW50LCBcIi5qc1wiKVxuICAgICAgICAgIClcbiAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIi9cIil9LmQudHNgO1xuICAgICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKFwidHlwZXNcIiwgZW50cnlwb2ludFR5cGVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21waWxlck9wdGlvbkRlZmF1bHRzOiBUeXBlU2NyaXB0Q29tcGlsZXJPcHRpb25zID0ge1xuICAgICAgYWx3YXlzU3RyaWN0OiB0cnVlLFxuICAgICAgZGVjbGFyYXRpb246IHRydWUsXG4gICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgaW5saW5lU291cmNlTWFwOiB0cnVlLFxuICAgICAgaW5saW5lU291cmNlczogdHJ1ZSxcbiAgICAgIGxpYjogW1wiZXMyMDE5XCJdLFxuICAgICAgbW9kdWxlOiBcIkNvbW1vbkpTXCIsXG4gICAgICBub0VtaXRPbkVycm9yOiBmYWxzZSxcbiAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICAgIG5vSW1wbGljaXRSZXR1cm5zOiB0cnVlLFxuICAgICAgbm9JbXBsaWNpdFRoaXM6IHRydWUsXG4gICAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICAgIG5vVW51c2VkUGFyYW1ldGVyczogdHJ1ZSxcbiAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICAgIHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb246IHRydWUsXG4gICAgICBzdHJpcEludGVybmFsOiB0cnVlLFxuICAgICAgdGFyZ2V0OiBcIkVTMjAxOVwiLFxuICAgIH07XG5cbiAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZVRzY29uZmlnKSB7XG4gICAgICB0aGlzLnRzY29uZmlnID0gbmV3IFR5cGVzY3JpcHRDb25maWcoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIG1lcmdlVHNjb25maWdPcHRpb25zKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluY2x1ZGU6IFtgJHt0aGlzLnNyY2Rpcn0vKiovKi50c2BdLFxuICAgICAgICAgICAgLy8gZXhjbHVkZTogWydub2RlX21vZHVsZXMnXSwgLy8gVE9ETzogc2hvdWxkbid0IHdlIGV4Y2x1ZGUgbm9kZV9tb2R1bGVzP1xuICAgICAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHJvb3REaXI6IHRoaXMuc3JjZGlyLFxuICAgICAgICAgICAgICBvdXREaXI6IHRoaXMubGliZGlyLFxuICAgICAgICAgICAgICAuLi5jb21waWxlck9wdGlvbkRlZmF1bHRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnMudHNjb25maWdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB0c2NvbmZpZ0RldkZpbGUgPSBvcHRpb25zLnRzY29uZmlnRGV2RmlsZSA/PyBcInRzY29uZmlnLmRldi5qc29uXCI7XG4gICAgdGhpcy50c2NvbmZpZ0RldiA9IG5ldyBUeXBlc2NyaXB0Q29uZmlnKFxuICAgICAgdGhpcyxcbiAgICAgIG1lcmdlVHNjb25maWdPcHRpb25zKFxuICAgICAgICB7XG4gICAgICAgICAgZmlsZU5hbWU6IHRzY29uZmlnRGV2RmlsZSxcbiAgICAgICAgICBpbmNsdWRlOiBbXG4gICAgICAgICAgICBQUk9KRU5fUkMsXG4gICAgICAgICAgICBgJHt0aGlzLnNyY2Rpcn0vKiovKi50c2AsXG4gICAgICAgICAgICBgJHt0aGlzLnRlc3RkaXJ9LyoqLyoudHNgLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgICAgIGNvbXBpbGVyT3B0aW9uczogY29tcGlsZXJPcHRpb25EZWZhdWx0cyxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucy50c2NvbmZpZyxcbiAgICAgICAgb3B0aW9ucy50c2NvbmZpZ0RldlxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5pbmNsdWRlKGAvJHt0aGlzLnNyY2Rpcn0vYCk7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke3RoaXMuc3JjZGlyfS9gKTtcblxuICAgIGlmICh0aGlzLnNyY2RpciAhPT0gdGhpcy5saWJkaXIpIHtcbiAgICAgIC8vIHNlcGFyYXRlZCwgY2FuIGlnbm9yZSB0aGUgZW50aXJlIGxpYmRpclxuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShgLyR7dGhpcy5saWJkaXJ9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbGxvY2F0ZWQsIGNhbiBvbmx5IGlnbm9yZSB0aGUgY29tcGlsZWQgb3V0cHV0XG4gICAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5qc2ApO1xuICAgICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShgLyR7dGhpcy5saWJkaXJ9LyoqLyouZC50c2ApO1xuICAgIH1cblxuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vYCk7XG5cbiAgICB0aGlzLm5wbWlnbm9yZT8uaW5jbHVkZShgLyR7dGhpcy5saWJkaXJ9LyoqLyouanNgKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uaW5jbHVkZShgLyR7dGhpcy5saWJkaXJ9LyoqLyouZC50c2ApO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuZXhjbHVkZShcIi9kaXN0L1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcImRpc3RcIik7IC8vIGpzaWktcGFjbWFrIGV4cGVjdHMgdGhpcyB0byBiZSBcImRpc3RcIiBhbmQgbm90IFwiL2Rpc3RcIi4gb3RoZXJ3aXNlIGl0IHdpbGwgdGFtcGVyIHdpdGggaXRcblxuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwiL3RzY29uZmlnLmpzb25cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLmdpdGh1Yi9cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLnZzY29kZS9cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLmlkZWEvXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwiLy5wcm9qZW5yYy5qc1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcInRzY29uZmlnLnRzYnVpbGRpbmZvXCIpO1xuXG4gICAgaWYgKHRoaXMuamVzdCkge1xuICAgICAgaWYgKGNvbXBpbGVkVGVzdHMpIHtcbiAgICAgICAgdGhpcy5hZGRKZXN0Q29tcGlsZWQodGhpcy5qZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkSmVzdE5vQ29tcGlsZSh0aGlzLmplc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb2plbnJjVHlwZVNjcmlwdCA9IG9wdGlvbnMucHJvamVucmNUcyA/PyBmYWxzZTtcbiAgICBpZiAocHJvamVucmNUeXBlU2NyaXB0KSB7XG4gICAgICBuZXcgUHJvamVucmNUcyh0aGlzLCBvcHRpb25zLnByb2plbnJjVHNPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9qZW5SY0ZpbGVuYW1lID0gcHJvamVucmNUeXBlU2NyaXB0XG4gICAgICA/IG9wdGlvbnMucHJvamVucmNUc09wdGlvbnM/LmZpbGVuYW1lID8/IFwiLnByb2plbnJjLnRzXCJcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG9wdGlvbnMuZXNsaW50ID8/IHRydWUpIHtcbiAgICAgIHRoaXMuZXNsaW50ID0gbmV3IEVzbGludCh0aGlzLCB7XG4gICAgICAgIHRzY29uZmlnUGF0aDogYC4vJHt0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lfWAsXG4gICAgICAgIGRpcnM6IFt0aGlzLnNyY2Rpcl0sXG4gICAgICAgIGRldmRpcnM6IFt0aGlzLnRlc3RkaXIsIFwiYnVpbGQtdG9vbHNcIl0sXG4gICAgICAgIGZpbGVFeHRlbnNpb25zOiBbXCIudHNcIiwgXCIudHN4XCJdLFxuICAgICAgICBsaW50UHJvamVuUmNGaWxlOiBwcm9qZW5SY0ZpbGVuYW1lLFxuICAgICAgICAuLi5vcHRpb25zLmVzbGludE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy50c2NvbmZpZ0VzbGludCA9IHRoaXMudHNjb25maWdEZXY7XG4gICAgfVxuXG4gICAgY29uc3QgdHN2ZXIgPSBvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9uXG4gICAgICA/IGBAJHtvcHRpb25zLnR5cGVzY3JpcHRWZXJzaW9ufWBcbiAgICAgIDogXCJcIjtcblxuICAgIHRoaXMuYWRkRGV2RGVwcyhcbiAgICAgIGB0eXBlc2NyaXB0JHt0c3Zlcn1gLFxuICAgICAgLy8gQHR5cGVzL25vZGUgdmVyc2lvbnMgbnVtYmVycyBtYXRjaCB0aGUgbm9kZSBydW50aW1lIHZlcnNpb25zJyBtYWpvci5taW5vciwgaG93ZXZlciwgbmV3XG4gICAgICAvLyByZWxlYXNlcyBhcmUgb25seSBjcmVhdGVkIHdoZW4gQVBJIGNoYW5nZXMgYXJlIGluY2x1ZGVkIGluIGEgbm9kZSByZWxlYXNlLi4uIFdlIG1pZ2h0IGZvclxuICAgICAgLy8gZXhhbXBsZSBoYXZlIGRlcGVuZGVuY2llcyB0aGF0IHJlcXVpcmUgYG5vZGUgPj0gMTIuMjJgLCBidXQgYXMgMTIuMjEgYW5kIDEyLjIyIGRpZCBub3RcbiAgICAgIC8vIGluY2x1ZGUgQVBJIGNoYW5nZXMsIGBAdHlwZXMvbm9kZUAxMi4yMC54YCBpcyB0aGUgXCJjb3JyZWN0XCIgdmVyc2lvbiB0byB1c2UuIEFzIGl0IGlzIG5vdFxuICAgICAgLy8gcG9zc2libGUgdG8gZWFzaWx5IGRldGVybWluZSB0aGUgY29ycmVjdCB2ZXJzaW9uIHRvIHVzZSwgd2UgcGljayB1cCB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICAvL1xuICAgICAgLy8gQWRkaXRpb25hbGx5LCB3ZSBkZWZhdWx0IHRvIHRyYWNraW5nIHRoZSAxMi54IGxpbmUsIGFzIHRoZSBjdXJyZW50IGVhcmxpZXN0IExUUyByZWxlYXNlIG9mXG4gICAgICAvLyBub2RlIGlzIDEyLngsIHNvIHRoaXMgaXMgd2hhdCBjb3JyZXNwb25kcyB0byB0aGUgYnJvYWRlc3QgY29tcGF0aWJpbGl0eSB3aXRoIHN1cHBvcnRlZCBub2RlXG4gICAgICAvLyBydW50aW1lcy5cbiAgICAgIGBAdHlwZXMvbm9kZUBeJHtzZW12ZXIubWFqb3IodGhpcy5wYWNrYWdlLm1pbk5vZGVWZXJzaW9uID8/IFwiMTQuMC4wXCIpfWBcbiAgICApO1xuXG4gICAgLy8gZ2VuZXJhdGUgc2FtcGxlIGNvZGUgaW4gYHNyY2AgYW5kIGBsaWJgIGlmIHRoZXNlIGRpcmVjdG9yaWVzIGFyZSBlbXB0eSBvciBub24tZXhpc3RlbnQuXG4gICAgaWYgKG9wdGlvbnMuc2FtcGxlQ29kZSA/PyB0cnVlKSB7XG4gICAgICBuZXcgU2FtcGxlQ29kZSh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb2NnZW4pIHtcbiAgICAgIG5ldyBUeXBlZG9jRG9jZ2VuKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBhcmUgY29tcGlsZWQgdG8gYGxpYi9URVNURElSYCwgc28gd2UgZG9uJ3QgbmVlZCBqZXN0IHRvIGNvbXBpbGUgdGhlbVxuICAgKiBmb3IgdXMuIGp1c3QgcnVuIHRoZW0gZGlyZWN0bHkgZnJvbSBqYXZhc2NyaXB0LlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRKZXN0Q29tcGlsZWQoamVzdDogSmVzdCkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhcIkB0eXBlcy9qZXN0XCIpO1xuXG4gICAgY29uc3QgdGVzdG91dCA9IHBhdGgucG9zaXgucmVsYXRpdmUodGhpcy5zcmNkaXIsIHRoaXMudGVzdGRpcik7XG4gICAgY29uc3QgbGlidGVzdCA9IHBhdGgucG9zaXguam9pbih0aGlzLmxpYmRpciwgdGVzdG91dCk7XG4gICAgY29uc3Qgc3JjdGVzdCA9IHRoaXMudGVzdGRpcjtcblxuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKGAvJHtsaWJ0ZXN0fS9gKTtcbiAgICBqZXN0LmFkZFRlc3RNYXRjaChgKiovJHtsaWJ0ZXN0fS8qKi8/KCouKSsoc3BlY3x0ZXN0KS5qcz8oeClgKTtcbiAgICBqZXN0LmFkZFdhdGNoSWdub3JlUGF0dGVybihgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuXG4gICAgY29uc3QgcmVzb2x2ZVNuYXBzaG90UGF0aCA9ICh0ZXN0OiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmdWxscGF0aCA9IHRlc3QucmVwbGFjZShsaWJ0ZXN0LCBzcmN0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oXG4gICAgICAgIHBhdGguZGlybmFtZShmdWxscGF0aCksXG4gICAgICAgIFwiX19zbmFwc2hvdHNfX1wiLFxuICAgICAgICBwYXRoLmJhc2VuYW1lKGZ1bGxwYXRoLCBcIi5qc1wiKSArIFwiLnRzXCIgKyBleHRcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVUZXN0UGF0aCA9IChzbmFwOiBzdHJpbmcsIGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoc25hcCwgXCIudHNcIiArIGV4dCkgKyBcIi5qc1wiO1xuICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguZGlybmFtZShzbmFwKSkucmVwbGFjZShzcmN0ZXN0LCBsaWJ0ZXN0KTtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFRleHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIHBhdGgucG9zaXguam9pbihQUk9KRU5fRElSLCBcImplc3Qtc25hcHNob3QtcmVzb2x2ZXIuanNcIilcbiAgICApO1xuICAgIGlmICghcmVzb2x2ZXIubWFya2VyKSB7XG4gICAgICByZXNvbHZlci5hZGRMaW5lKGAvLyAke3Jlc29sdmVyLm1hcmtlcn1gKTtcbiAgICB9XG4gICAgcmVzb2x2ZXIuYWRkTGluZSgnY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpOycpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoYGNvbnN0IGxpYnRlc3QgPSBcIiR7bGlidGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKGBjb25zdCBzcmN0ZXN0PSBcIiR7c3JjdGVzdH1cIjtgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKFwibW9kdWxlLmV4cG9ydHMgPSB7XCIpO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBgICByZXNvbHZlU25hcHNob3RQYXRoOiAke3Jlc29sdmVTbmFwc2hvdFBhdGgudG9TdHJpbmcoKX0sYFxuICAgICk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShgICByZXNvbHZlVGVzdFBhdGg6ICR7cmVzb2x2ZVRlc3RQYXRoLnRvU3RyaW5nKCl9LGApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXG4gICAgICBcIiAgdGVzdFBhdGhGb3JDb25zaXN0ZW5jeUNoZWNrOiBwYXRoLmpvaW4oJ3NvbWUnLCAnX190ZXN0c19fJywgJ2V4YW1wbGUudGVzdC5qcycpXCJcbiAgICApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXCJ9O1wiKTtcblxuICAgIGplc3QuYWRkU25hcHNob3RSZXNvbHZlcihgLi8ke3Jlc29sdmVyLnBhdGh9YCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEplc3ROb0NvbXBpbGUoamVzdDogSmVzdCkge1xuICAgIHRoaXMuYWRkRGV2RGVwcyhcIkB0eXBlcy9qZXN0XCIsIFwidHMtamVzdEBeMjdcIik7IC8vIHBpbm5pbmcgZm9yIG5vdyBiZWNhdXNlIG9mIGFuIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcHJvamVuL3Byb2plbi9pc3N1ZXMvMTgxM1xuXG4gICAgamVzdC5hZGRUZXN0TWF0Y2goYDxyb290RGlyPi8ke3RoaXMuc3JjZGlyfS8qKi9fX3Rlc3RzX18vKiovKi50cz8oeClgKTtcbiAgICBqZXN0LmFkZFRlc3RNYXRjaChcbiAgICAgIGA8cm9vdERpcj4vKCR7dGhpcy50ZXN0ZGlyfXwke3RoaXMuc3JjZGlyfSkvKiovPygqLikrKHNwZWN8dGVzdCkudHM/KHgpYFxuICAgICk7XG5cbiAgICAvLyBhZGQgcmVsZXZhbnQgZGVwc1xuICAgIGplc3QuY29uZmlnLnByZXNldCA9IFwidHMtamVzdFwiO1xuICAgIGplc3QuY29uZmlnLmdsb2JhbHMgPSB7XG4gICAgICBcInRzLWplc3RcIjoge1xuICAgICAgICB0c2NvbmZpZzogdGhpcy50c2NvbmZpZ0Rldi5maWxlTmFtZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBTYW1wbGVDb2RlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICBjb25zdCBzcmNDb2RlID0gW1xuICAgICAgXCJleHBvcnQgY2xhc3MgSGVsbG8ge1wiLFxuICAgICAgXCIgIHB1YmxpYyBzYXlIZWxsbygpIHtcIixcbiAgICAgIFwiICAgIHJldHVybiAnaGVsbG8sIHdvcmxkISc7XCIsXG4gICAgICBcIiAgfVwiLFxuICAgICAgXCJ9XCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuXG4gICAgY29uc3QgdGVzdENvZGUgPSBbXG4gICAgICBcImltcG9ydCB7IEhlbGxvIH0gZnJvbSAnLi4vc3JjJztcIixcbiAgICAgIFwiXCIsXG4gICAgICBcInRlc3QoJ2hlbGxvJywgKCkgPT4ge1wiLFxuICAgICAgXCIgIGV4cGVjdChuZXcgSGVsbG8oKS5zYXlIZWxsbygpKS50b0JlKCdoZWxsbywgd29ybGQhJyk7XCIsXG4gICAgICBcIn0pO1wiLFxuICAgIF0uam9pbihcIlxcblwiKTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgcHJvamVjdC5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwiaW5kZXgudHNcIjogc3JjQ29kZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHByb2plY3QsIHByb2plY3QudGVzdGRpciwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgXCJoZWxsby50ZXN0LnRzXCI6IHRlc3RDb2RlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFR5cGVTY3JpcHQgYXBwLlxuICpcbiAqIEBwamlkIHR5cGVzY3JpcHQtYXBwXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXBwUHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogVHlwZVNjcmlwdFByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgYWxsb3dMaWJyYXJ5RGVwZW5kZW5jaWVzOiBmYWxzZSxcbiAgICAgIHJlbGVhc2VXb3JrZmxvdzogZmFsc2UsXG4gICAgICBlbnRyeXBvaW50OiBcIlwiLCAvLyBcIm1haW5cIiBpcyBub3QgbmVlZGVkIGluIHR5cGVzY3JpcHQgYXBwc1xuICAgICAgcGFja2FnZTogZmFsc2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGBUeXBlU2NyaXB0UHJvamVjdGBcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRMaWJyYXJ5UHJvamVjdCBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0IHt9XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVTY3JpcHRMaWJyYXJ5UHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlVHNjb25maWdPcHRpb25zKFxuICAuLi5vcHRpb25zOiAoVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMgfCB1bmRlZmluZWQpW11cbik6IFR5cGVzY3JpcHRDb25maWdPcHRpb25zIHtcbiAgY29uc3QgZGVmaW5lZE9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihCb29sZWFuKSBhcyBUeXBlc2NyaXB0Q29uZmlnT3B0aW9uc1tdO1xuICByZXR1cm4gZGVmaW5lZE9wdGlvbnMucmVkdWNlPFR5cGVzY3JpcHRDb25maWdPcHRpb25zPihcbiAgICAocHJldmlvdXMsIGN1cnJlbnQpID0+ICh7XG4gICAgICAuLi5wcmV2aW91cyxcbiAgICAgIC4uLmN1cnJlbnQsXG4gICAgICBpbmNsdWRlOiBbLi4uKHByZXZpb3VzLmluY2x1ZGUgPz8gW10pLCAuLi4oY3VycmVudC5pbmNsdWRlID8/IFtdKV0sXG4gICAgICBleGNsdWRlOiBbLi4uKHByZXZpb3VzLmV4Y2x1ZGUgPz8gW10pLCAuLi4oY3VycmVudC5leGNsdWRlID8/IFtdKV0sXG4gICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgLi4ucHJldmlvdXMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICAuLi5jdXJyZW50LmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgeyBjb21waWxlck9wdGlvbnM6IHt9IH1cbiAgKTtcbn1cbiJdfQ==
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlc2NyaXB0L3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLHNDQUFrRDtBQUNsRCw0Q0FBeUM7QUFDekMsOENBU3VCO0FBQ3ZCLGdEQUEyQztBQUUzQywwQ0FBdUM7QUFDdkMsOENBSXVCO0FBc0h2Qjs7O0dBR0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHdCQUFXO0lBZ0NoRCxZQUFZLE9BQWlDO1FBQzNDLEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUVWLGdEQUFnRDtZQUNoRCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUUzRCxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxPQUFPLENBQUMsV0FBVztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxVQUFVO29CQUNsQyxTQUFTLEVBQUUsRUFBRTtpQkFDZDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDO1FBRXRELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDckMsV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRTdDLDRFQUE0RTtRQUM1RSwyREFBMkQ7UUFDM0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVFLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNyRCxNQUFNLGVBQWUsR0FDbkIsT0FBTyxDQUFDLGVBQWU7Z0JBQ3ZCLEdBQUcsSUFBSTtxQkFDSixJQUFJLENBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FDdEM7cUJBQ0EsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztTQUNqRDtRQUVELE1BQU0sc0JBQXNCLEdBQThCO1lBQ3hELFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLHNCQUFzQixFQUFFLElBQUk7WUFDNUIsZUFBZSxFQUFFLElBQUk7WUFDckIsYUFBYSxFQUFFLElBQUk7WUFDbkIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFVBQVU7WUFDbEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsMEJBQTBCLEVBQUUsSUFBSTtZQUNoQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGtCQUFrQixFQUFFLElBQUk7WUFDeEIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixNQUFNLEVBQUUsSUFBSTtZQUNaLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsNEJBQTRCLEVBQUUsSUFBSTtZQUNsQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDZCQUFnQixDQUNsQyxJQUFJLEVBQ0osb0JBQW9CLENBQ2xCO2dCQUNFLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sVUFBVSxDQUFDO2dCQUNuQyx5RUFBeUU7Z0JBQ3pFLGVBQWUsRUFBRTtvQkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsR0FBRyxzQkFBc0I7aUJBQzFCO2FBQ0YsRUFDRCxPQUFPLENBQUMsUUFBUSxDQUNqQixDQUNGLENBQUM7U0FDSDtRQUVELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksbUJBQW1CLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDZCQUFnQixDQUNyQyxJQUFJLEVBQ0osb0JBQW9CLENBQ2xCO1lBQ0UsUUFBUSxFQUFFLGVBQWU7WUFDekIsT0FBTyxFQUFFO2dCQUNQLGtCQUFTO2dCQUNULEdBQUcsSUFBSSxDQUFDLE1BQU0sVUFBVTtnQkFDeEIsR0FBRyxJQUFJLENBQUMsT0FBTyxVQUFVO2FBQzFCO1lBQ0QsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQ3pCLGVBQWUsRUFBRSxzQkFBc0I7U0FDeEMsRUFDRCxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsV0FBVyxDQUNwQixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDL0IsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sWUFBWSxDQUFDLENBQUM7U0FDckQ7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sVUFBVSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDBGQUEwRjtRQUUzSCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEM7U0FDRjtRQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFDdkQsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixJQUFJLHFCQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0I7WUFDekMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLElBQUksY0FBYztZQUN2RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksbUJBQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQzdCLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO2dCQUM5QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQztnQkFDdEMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDL0IsZ0JBQWdCLEVBQUUsZ0JBQWdCO2dCQUNsQyxHQUFHLE9BQU8sQ0FBQyxhQUFhO2FBQ3pCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN4QztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUI7WUFDckMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsVUFBVSxDQUNiLGFBQWEsS0FBSyxFQUFFO1FBQ3BCLDBGQUEwRjtRQUMxRiw0RkFBNEY7UUFDNUYseUZBQXlGO1FBQ3pGLDJGQUEyRjtRQUMzRiwwRkFBMEY7UUFDMUYsRUFBRTtRQUNGLDZGQUE2RjtRQUM3Riw4RkFBOEY7UUFDOUYsWUFBWTtRQUNaLGdCQUFnQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQ3hFLENBQUM7UUFFRiwwRkFBMEY7UUFDMUYsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUM5QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksMEJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxlQUFlLENBQUMsSUFBVTtRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLE9BQU8sOEJBQThCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUUvQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUN0QixlQUFlLEVBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FDN0MsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FDM0IsSUFBSSxFQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FDekQsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUMzQztRQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNsRCxRQUFRLENBQUMsT0FBTyxDQUFDLG9CQUFvQixPQUFPLElBQUksQ0FBQyxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDakQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxPQUFPLENBQ2QsMEJBQTBCLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQzVELENBQUM7UUFDRixRQUFRLENBQUMsT0FBTyxDQUFDLHNCQUFzQixlQUFlLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLFFBQVEsQ0FBQyxPQUFPLENBQ2Qsa0ZBQWtGLENBQ25GLENBQUM7UUFDRixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFVO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsb0ZBQW9GO1FBRW5JLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxJQUFJLENBQUMsTUFBTSwyQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxZQUFZLENBQ2YsY0FBYyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLCtCQUErQixDQUN6RSxDQUFDO1FBRUYsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRztZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUTthQUNwQztTQUNGLENBQUM7SUFDSixDQUFDOztBQXZTSCw4Q0F3U0M7OztBQUVELE1BQU0sVUFBVyxTQUFRLHFCQUFTO0lBQ2hDLFlBQVksT0FBMEI7UUFDcEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsTUFBTSxPQUFPLEdBQUc7WUFDZCxzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLDZCQUE2QjtZQUM3QixLQUFLO1lBQ0wsR0FBRztTQUNKLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWIsTUFBTSxRQUFRLEdBQUc7WUFDZixpQ0FBaUM7WUFDakMsRUFBRTtZQUNGLHVCQUF1QjtZQUN2Qix5REFBeUQ7WUFDekQsS0FBSztTQUNOLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWIsSUFBSSx1QkFBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsT0FBTzthQUNwQjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksdUJBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsZUFBZSxFQUFFLFFBQVE7YUFDMUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxpQkFBaUI7SUFDekQsWUFBWSxPQUFpQztRQUMzQyxLQUFLLENBQUM7WUFDSix3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsT0FBTyxFQUFFLEtBQUs7WUFDZCxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQVRILG9EQVVDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsaUJBQWlCOztBQUEvRCw0REFBa0U7OztBQVFsRTs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxHQUFHLE9BQWdEO0lBRW5ELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUE4QixDQUFDO0lBQzVFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FDMUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLEdBQUcsUUFBUTtRQUNYLEdBQUcsT0FBTztRQUNWLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLGVBQWUsRUFBRTtZQUNmLEdBQUcsUUFBUSxDQUFDLGVBQWU7WUFDM0IsR0FBRyxPQUFPLENBQUMsZUFBZTtTQUMzQjtLQUNGLENBQUMsRUFDRixFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsQ0FDeEIsQ0FBQztBQUNKLENBQUM7QUFqQkQsb0RBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IFBST0pFTl9ESVIsIFBST0pFTl9SQyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gIEVzbGludCxcbiAgRXNsaW50T3B0aW9ucyxcbiAgSmVzdCxcbiAgTm9kZVByb2plY3QsXG4gIE5vZGVQcm9qZWN0T3B0aW9ucyxcbiAgVHlwZVNjcmlwdENvbXBpbGVyT3B0aW9ucyxcbiAgVHlwZXNjcmlwdENvbmZpZyxcbiAgVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMsXG59IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBTYW1wbGVEaXIgfSBmcm9tIFwiLi4vc2FtcGxlLWZpbGVcIjtcbmltcG9ydCB7IFRhc2sgfSBmcm9tIFwiLi4vdGFza1wiO1xuaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tIFwiLi4vdGV4dGZpbGVcIjtcbmltcG9ydCB7XG4gIFByb2plbnJjIGFzIFByb2plbnJjVHMsXG4gIFByb2plbnJjT3B0aW9ucyBhcyBQcm9qZW5yY1RzT3B0aW9ucyxcbiAgVHlwZWRvY0RvY2dlbixcbn0gZnJvbSBcIi4uL3R5cGVzY3JpcHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBOb2RlUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogVHlwZXNjcmlwdCAgYXJ0aWZhY3RzIG91dHB1dCBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJsaWJcIlxuICAgKi9cbiAgcmVhZG9ubHkgbGliZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlc2NyaXB0IHNvdXJjZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInNyY1wiXG4gICAqL1xuICByZWFkb25seSBzcmNkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEplc3QgdGVzdHMgZGlyZWN0b3J5LiBUZXN0cyBmaWxlcyBzaG91bGQgYmUgbmFtZWQgYHh4eC50ZXN0LnRzYC5cbiAgICpcbiAgICogSWYgdGhpcyBkaXJlY3RvcnkgaXMgdW5kZXIgYHNyY2RpcmAgKGUuZy4gYHNyYy90ZXN0YCwgYHNyYy9fX3Rlc3RzX19gKSxcbiAgICogdGhlbiB0ZXN0cyBhcmUgZ29pbmcgdG8gYmUgY29tcGlsZWQgaW50byBgbGliL2AgYW5kIGV4ZWN1dGVkIGFzIGphdmFzY3JpcHQuXG4gICAqIElmIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyBvdXRzaWRlIG9mIGBzcmNgLCB0aGVuIHdlIGNvbmZpZ3VyZSBqZXN0IHRvXG4gICAqIGNvbXBpbGUgdGhlIGNvZGUgaW4tbWVtb3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0dXAgZXNsaW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlc2xpbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFc2xpbnQgb3B0aW9uc1xuICAgKiBAZGVmYXVsdCAtIG9waW5pb25hdGVkIGRlZmF1bHQgb3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZXNsaW50T3B0aW9ucz86IEVzbGludE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgdmVyc2lvbiB0byB1c2UuXG4gICAqXG4gICAqIE5PVEU6IFR5cGVzY3JpcHQgaXMgbm90IHNlbWFudGljYWxseSB2ZXJzaW9uZWQgYW5kIHNob3VsZCByZW1haW4gb24gdGhlXG4gICAqIHNhbWUgbWlub3IsIHNvIHdlIHJlY29tbWVuZCB1c2luZyBhIGB+YCBkZXBlbmRlbmN5IChlLmcuIGB+MS4yLjNgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJsYXRlc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZXNjcmlwdFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERvY2dlbiBieSBUeXBlZG9jXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkb2NnZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEb2NzIGRpcmVjdG9yeVxuICAgKlxuICAgKiBAZGVmYXVsdCBcImRvY3NcIlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIFRTQ29uZmlnXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IFR5cGVzY3JpcHRDb25maWdPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gdHNjb25maWcgb3B0aW9ucyBmb3IgdGhlIGRldmVsb3BtZW50IHRzY29uZmlnLmpzb24gZmlsZSAodXNlZCBmb3IgdGVzdGluZykuXG4gICAqIEBkZWZhdWx0IC0gdXNlIHRoZSBwcm9kdWN0aW9uIHRzY29uZmlnIG9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnRGV2PzogVHlwZXNjcmlwdENvbmZpZ09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkZXZlbG9wbWVudCB0c2NvbmZpZy5qc29uIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwidHNjb25maWcuZGV2Lmpzb25cIlxuICAgKi9cbiAgcmVhZG9ubHkgdHNjb25maWdEZXZGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZ2VuZXJhdGUgYSBgdHNjb25maWcuanNvbmAgZmlsZSAodXNlZCBieSBqc2lpIHByb2plY3RzIHNpbmNlXG4gICAqIHRzY29uZmlnLmpzb24gaXMgZ2VuZXJhdGVkIGJ5IHRoZSBqc2lpIGNvbXBpbGVyKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVUc2NvbmZpZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIG9uZS10aW1lIHNhbXBsZSBpbiBgc3JjL2AgYW5kIGB0ZXN0L2AgaWYgdGhlcmUgYXJlIG5vIGZpbGVzIHRoZXJlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIC5kLnRzIGZpbGUgdGhhdCBpbmNsdWRlcyB0aGUgdHlwZSBkZWNsYXJhdGlvbnMgZm9yIHRoaXMgbW9kdWxlLlxuICAgKiBAZGVmYXVsdCAtIC5kLnRzIGZpbGUgZGVyaXZlZCBmcm9tIHRoZSBwcm9qZWN0J3MgZW50cnlwb2ludCAodXN1YWxseSBsaWIvaW5kZXguZC50cylcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5cG9pbnRUeXBlcz86IHN0cmluZztcblxuICAvKipcbiAgICogVXNlIFR5cGVTY3JpcHQgZm9yIHlvdXIgcHJvamVucmMgZmlsZSAoYC5wcm9qZW5yYy50c2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNUcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIC5wcm9qZW5yYy50c1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVucmNUc09wdGlvbnM/OiBQcm9qZW5yY1RzT3B0aW9ucztcbn1cblxuLyoqXG4gKiBUeXBlU2NyaXB0IHByb2plY3RcbiAqIEBwamlkIHR5cGVzY3JpcHRcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgTm9kZVByb2plY3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jZ2VuPzogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGVzbGludD86IEVzbGludDtcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnRXNsaW50PzogVHlwZXNjcmlwdENvbmZpZztcbiAgcHVibGljIHJlYWRvbmx5IHRzY29uZmlnPzogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogQSB0eXBlc2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB3aGljaCBjb3ZlcnMgYWxsIGZpbGVzIChzb3VyY2VzLCB0ZXN0cywgcHJvamVuKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0c2NvbmZpZ0RldjogVHlwZXNjcmlwdENvbmZpZztcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgLnRzIHNvdXJjZXMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGNvbXBpbGVkIC5qcyBmaWxlcyByZXNpZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGliZGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGVzdHMgcmVzaWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlc3RkaXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFwid2F0Y2hcIiB0YXNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuXG4gICAgICAvLyBkaXNhYmxlIC5wcm9qZW5yYy5qcyBpZiB0eXBlc2NyaXB0IGlzIGVuYWJsZWRcbiAgICAgIHByb2plbnJjSnM6IG9wdGlvbnMucHJvamVucmNUcyA/IGZhbHNlIDogb3B0aW9ucy5wcm9qZW5yY0pzLFxuXG4gICAgICBqZXN0T3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmplc3RPcHRpb25zLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5qZXN0T3B0aW9ucz8uamVzdENvbmZpZyxcbiAgICAgICAgICB0ZXN0TWF0Y2g6IFtdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3JjZGlyID0gb3B0aW9ucy5zcmNkaXIgPz8gXCJzcmNcIjtcbiAgICB0aGlzLmxpYmRpciA9IG9wdGlvbnMubGliZGlyID8/IFwibGliXCI7XG5cbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuO1xuICAgIHRoaXMuZG9jc0RpcmVjdG9yeSA9IG9wdGlvbnMuZG9jc0RpcmVjdG9yeSA/PyBcImRvY3MvXCI7XG5cbiAgICB0aGlzLmNvbXBpbGVUYXNrLmV4ZWMoXCJ0c2MgLS1idWlsZFwiKTtcblxuICAgIHRoaXMud2F0Y2hUYXNrID0gdGhpcy5hZGRUYXNrKFwid2F0Y2hcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiV2F0Y2ggJiBjb21waWxlIGluIHRoZSBiYWNrZ3JvdW5kXCIsXG4gICAgICBleGVjOiBcInRzYyAtLWJ1aWxkIC13XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnRlc3RkaXIgPSBvcHRpb25zLnRlc3RkaXIgPz8gXCJ0ZXN0XCI7XG4gICAgdGhpcy5naXRpZ25vcmUuaW5jbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7dGhpcy50ZXN0ZGlyfS9gKTtcblxuICAgIC8vIGlmIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyB1bmRlciBgc3JjL2AsIHRoZW4gd2Ugd2lsbCBydW4gb3VyIHRlc3RzIGFnYWluc3RcbiAgICAvLyB0aGUgamF2YXNjcmlwdCBmaWxlcyBhbmQgbm90IGxldCBqZXN0IGNvbXBpbGUgaXQgZm9yIHVzLlxuICAgIGNvbnN0IGNvbXBpbGVkVGVzdHMgPSB0aGlzLnRlc3RkaXIuc3RhcnRzV2l0aCh0aGlzLnNyY2RpciArIHBhdGgucG9zaXguc2VwKTtcblxuICAgIGlmIChvcHRpb25zLmVudHJ5cG9pbnRUeXBlcyB8fCB0aGlzLmVudHJ5cG9pbnQgIT09IFwiXCIpIHtcbiAgICAgIGNvbnN0IGVudHJ5cG9pbnRUeXBlcyA9XG4gICAgICAgIG9wdGlvbnMuZW50cnlwb2ludFR5cGVzID8/XG4gICAgICAgIGAke3BhdGhcbiAgICAgICAgICAuam9pbihcbiAgICAgICAgICAgIHBhdGguZGlybmFtZSh0aGlzLmVudHJ5cG9pbnQpLFxuICAgICAgICAgICAgcGF0aC5iYXNlbmFtZSh0aGlzLmVudHJ5cG9pbnQsIFwiLmpzXCIpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKX0uZC50c2A7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoXCJ0eXBlc1wiLCBlbnRyeXBvaW50VHlwZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9uRGVmYXVsdHM6IFR5cGVTY3JpcHRDb21waWxlck9wdGlvbnMgPSB7XG4gICAgICBhbHdheXNTdHJpY3Q6IHRydWUsXG4gICAgICBkZWNsYXJhdGlvbjogdHJ1ZSxcbiAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgIGV4cGVyaW1lbnRhbERlY29yYXRvcnM6IHRydWUsXG4gICAgICBpbmxpbmVTb3VyY2VNYXA6IHRydWUsXG4gICAgICBpbmxpbmVTb3VyY2VzOiB0cnVlLFxuICAgICAgbGliOiBbXCJlczIwMTlcIl0sXG4gICAgICBtb2R1bGU6IFwiQ29tbW9uSlNcIixcbiAgICAgIG5vRW1pdE9uRXJyb3I6IGZhbHNlLFxuICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgICBub0ltcGxpY2l0QW55OiB0cnVlLFxuICAgICAgbm9JbXBsaWNpdFJldHVybnM6IHRydWUsXG4gICAgICBub0ltcGxpY2l0VGhpczogdHJ1ZSxcbiAgICAgIG5vVW51c2VkTG9jYWxzOiB0cnVlLFxuICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgcmVzb2x2ZUpzb25Nb2R1bGU6IHRydWUsXG4gICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgICAgc3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvbjogdHJ1ZSxcbiAgICAgIHN0cmlwSW50ZXJuYWw6IHRydWUsXG4gICAgICB0YXJnZXQ6IFwiRVMyMDE5XCIsXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlVHNjb25maWcpIHtcbiAgICAgIHRoaXMudHNjb25maWcgPSBuZXcgVHlwZXNjcmlwdENvbmZpZyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbWVyZ2VUc2NvbmZpZ09wdGlvbnMoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5jbHVkZTogW2Ake3RoaXMuc3JjZGlyfS8qKi8qLnRzYF0sXG4gICAgICAgICAgICAvLyBleGNsdWRlOiBbJ25vZGVfbW9kdWxlcyddLCAvLyBUT0RPOiBzaG91bGRuJ3Qgd2UgZXhjbHVkZSBub2RlX21vZHVsZXM/XG4gICAgICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcm9vdERpcjogdGhpcy5zcmNkaXIsXG4gICAgICAgICAgICAgIG91dERpcjogdGhpcy5saWJkaXIsXG4gICAgICAgICAgICAgIC4uLmNvbXBpbGVyT3B0aW9uRGVmYXVsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy50c2NvbmZpZ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRzY29uZmlnRGV2RmlsZSA9IG9wdGlvbnMudHNjb25maWdEZXZGaWxlID8/IFwidHNjb25maWcuZGV2Lmpzb25cIjtcbiAgICB0aGlzLnRzY29uZmlnRGV2ID0gbmV3IFR5cGVzY3JpcHRDb25maWcoXG4gICAgICB0aGlzLFxuICAgICAgbWVyZ2VUc2NvbmZpZ09wdGlvbnMoXG4gICAgICAgIHtcbiAgICAgICAgICBmaWxlTmFtZTogdHNjb25maWdEZXZGaWxlLFxuICAgICAgICAgIGluY2x1ZGU6IFtcbiAgICAgICAgICAgIFBST0pFTl9SQyxcbiAgICAgICAgICAgIGAke3RoaXMuc3JjZGlyfS8qKi8qLnRzYCxcbiAgICAgICAgICAgIGAke3RoaXMudGVzdGRpcn0vKiovKi50c2AsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBleGNsdWRlOiBbXCJub2RlX21vZHVsZXNcIl0sXG4gICAgICAgICAgY29tcGlsZXJPcHRpb25zOiBjb21waWxlck9wdGlvbkRlZmF1bHRzLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLnRzY29uZmlnLFxuICAgICAgICBvcHRpb25zLnRzY29uZmlnRGV2XG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZ2l0aWdub3JlLmluY2x1ZGUoYC8ke3RoaXMuc3JjZGlyfS9gKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShgLyR7dGhpcy5zcmNkaXJ9L2ApO1xuXG4gICAgaWYgKHRoaXMuc3JjZGlyICE9PSB0aGlzLmxpYmRpcikge1xuICAgICAgLy8gc2VwYXJhdGVkLCBjYW4gaWdub3JlIHRoZSBlbnRpcmUgbGliZGlyXG4gICAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKGAvJHt0aGlzLmxpYmRpcn1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29sbG9jYXRlZCwgY2FuIG9ubHkgaWdub3JlIHRoZSBjb21waWxlZCBvdXRwdXRcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmV4Y2x1ZGUoYC8ke3RoaXMubGliZGlyfS8qKi8qLmpzYCk7XG4gICAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5kLnRzYCk7XG4gICAgfVxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmluY2x1ZGUoYC8ke3RoaXMubGliZGlyfS9gKTtcblxuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5qc2ApO1xuICAgIHRoaXMubnBtaWdub3JlPy5pbmNsdWRlKGAvJHt0aGlzLmxpYmRpcn0vKiovKi5kLnRzYCk7XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5leGNsdWRlKFwiL2Rpc3QvXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwiZGlzdFwiKTsgLy8ganNpaS1wYWNtYWsgZXhwZWN0cyB0aGlzIHRvIGJlIFwiZGlzdFwiIGFuZCBub3QgXCIvZGlzdFwiLiBvdGhlcndpc2UgaXQgd2lsbCB0YW1wZXIgd2l0aCBpdFxuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvdHNjb25maWcuanNvblwiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uZ2l0aHViL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8udnNjb2RlL1wiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uZXhjbHVkZShcIi8uaWRlYS9cIik7XG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoXCIvLnByb2plbnJjLmpzXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5leGNsdWRlKFwidHNjb25maWcudHNidWlsZGluZm9cIik7XG5cbiAgICBpZiAodGhpcy5qZXN0KSB7XG4gICAgICBpZiAoY29tcGlsZWRUZXN0cykge1xuICAgICAgICB0aGlzLmFkZEplc3RDb21waWxlZCh0aGlzLmplc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRKZXN0Tm9Db21waWxlKHRoaXMuamVzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHJvamVucmNUeXBlU2NyaXB0ID0gb3B0aW9ucy5wcm9qZW5yY1RzID8/IGZhbHNlO1xuICAgIGlmIChwcm9qZW5yY1R5cGVTY3JpcHQpIHtcbiAgICAgIG5ldyBQcm9qZW5yY1RzKHRoaXMsIG9wdGlvbnMucHJvamVucmNUc09wdGlvbnMpO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2plblJjRmlsZW5hbWUgPSBwcm9qZW5yY1R5cGVTY3JpcHRcbiAgICAgID8gb3B0aW9ucy5wcm9qZW5yY1RzT3B0aW9ucz8uZmlsZW5hbWUgPz8gXCIucHJvamVucmMudHNcIlxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucy5lc2xpbnQgPz8gdHJ1ZSkge1xuICAgICAgdGhpcy5lc2xpbnQgPSBuZXcgRXNsaW50KHRoaXMsIHtcbiAgICAgICAgdHNjb25maWdQYXRoOiBgLi8ke3RoaXMudHNjb25maWdEZXYuZmlsZU5hbWV9YCxcbiAgICAgICAgZGlyczogW3RoaXMuc3JjZGlyXSxcbiAgICAgICAgZGV2ZGlyczogW3RoaXMudGVzdGRpciwgXCJidWlsZC10b29sc1wiXSxcbiAgICAgICAgZmlsZUV4dGVuc2lvbnM6IFtcIi50c1wiLCBcIi50c3hcIl0sXG4gICAgICAgIGxpbnRQcm9qZW5SY0ZpbGU6IHByb2plblJjRmlsZW5hbWUsXG4gICAgICAgIC4uLm9wdGlvbnMuZXNsaW50T3B0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRzY29uZmlnRXNsaW50ID0gdGhpcy50c2NvbmZpZ0RldjtcbiAgICB9XG5cbiAgICBjb25zdCB0c3ZlciA9IG9wdGlvbnMudHlwZXNjcmlwdFZlcnNpb25cbiAgICAgID8gYEAke29wdGlvbnMudHlwZXNjcmlwdFZlcnNpb259YFxuICAgICAgOiBcIlwiO1xuXG4gICAgdGhpcy5hZGREZXZEZXBzKFxuICAgICAgYHR5cGVzY3JpcHQke3RzdmVyfWAsXG4gICAgICAvLyBAdHlwZXMvbm9kZSB2ZXJzaW9ucyBudW1iZXJzIG1hdGNoIHRoZSBub2RlIHJ1bnRpbWUgdmVyc2lvbnMnIG1ham9yLm1pbm9yLCBob3dldmVyLCBuZXdcbiAgICAgIC8vIHJlbGVhc2VzIGFyZSBvbmx5IGNyZWF0ZWQgd2hlbiBBUEkgY2hhbmdlcyBhcmUgaW5jbHVkZWQgaW4gYSBub2RlIHJlbGVhc2UuLi4gV2UgbWlnaHQgZm9yXG4gICAgICAvLyBleGFtcGxlIGhhdmUgZGVwZW5kZW5jaWVzIHRoYXQgcmVxdWlyZSBgbm9kZSA+PSAxMi4yMmAsIGJ1dCBhcyAxMi4yMSBhbmQgMTIuMjIgZGlkIG5vdFxuICAgICAgLy8gaW5jbHVkZSBBUEkgY2hhbmdlcywgYEB0eXBlcy9ub2RlQDEyLjIwLnhgIGlzIHRoZSBcImNvcnJlY3RcIiB2ZXJzaW9uIHRvIHVzZS4gQXMgaXQgaXMgbm90XG4gICAgICAvLyBwb3NzaWJsZSB0byBlYXNpbHkgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlcnNpb24gdG8gdXNlLCB3ZSBwaWNrIHVwIHRoZSBsYXRlc3QgdmVyc2lvbi5cbiAgICAgIC8vXG4gICAgICAvLyBBZGRpdGlvbmFsbHksIHdlIGRlZmF1bHQgdG8gdHJhY2tpbmcgdGhlIDEyLnggbGluZSwgYXMgdGhlIGN1cnJlbnQgZWFybGllc3QgTFRTIHJlbGVhc2Ugb2ZcbiAgICAgIC8vIG5vZGUgaXMgMTIueCwgc28gdGhpcyBpcyB3aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBicm9hZGVzdCBjb21wYXRpYmlsaXR5IHdpdGggc3VwcG9ydGVkIG5vZGVcbiAgICAgIC8vIHJ1bnRpbWVzLlxuICAgICAgYEB0eXBlcy9ub2RlQF4ke3NlbXZlci5tYWpvcih0aGlzLnBhY2thZ2UubWluTm9kZVZlcnNpb24gPz8gXCIxNC4wLjBcIil9YFxuICAgICk7XG5cbiAgICAvLyBnZW5lcmF0ZSBzYW1wbGUgY29kZSBpbiBgc3JjYCBhbmQgYGxpYmAgaWYgdGhlc2UgZGlyZWN0b3JpZXMgYXJlIGVtcHR5IG9yIG5vbi1leGlzdGVudC5cbiAgICBpZiAob3B0aW9ucy5zYW1wbGVDb2RlID8/IHRydWUpIHtcbiAgICAgIG5ldyBTYW1wbGVDb2RlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRvY2dlbikge1xuICAgICAgbmV3IFR5cGVkb2NEb2NnZW4odGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGFyZSBjb21waWxlZCB0byBgbGliL1RFU1RESVJgLCBzbyB3ZSBkb24ndCBuZWVkIGplc3QgdG8gY29tcGlsZSB0aGVtXG4gICAqIGZvciB1cy4ganVzdCBydW4gdGhlbSBkaXJlY3RseSBmcm9tIGphdmFzY3JpcHQuXG4gICAqL1xuICBwcml2YXRlIGFkZEplc3RDb21waWxlZChqZXN0OiBKZXN0KSB7XG4gICAgdGhpcy5hZGREZXZEZXBzKFwiQHR5cGVzL2plc3RcIik7XG5cbiAgICBjb25zdCB0ZXN0b3V0ID0gcGF0aC5wb3NpeC5yZWxhdGl2ZSh0aGlzLnNyY2RpciwgdGhpcy50ZXN0ZGlyKTtcbiAgICBjb25zdCBsaWJ0ZXN0ID0gcGF0aC5wb3NpeC5qb2luKHRoaXMubGliZGlyLCB0ZXN0b3V0KTtcbiAgICBjb25zdCBzcmN0ZXN0ID0gdGhpcy50ZXN0ZGlyO1xuXG4gICAgdGhpcy5ucG1pZ25vcmU/LmV4Y2x1ZGUoYC8ke2xpYnRlc3R9L2ApO1xuICAgIGplc3QuYWRkVGVzdE1hdGNoKGAqKi8ke2xpYnRlc3R9LyoqLz8oKi4pKyhzcGVjfHRlc3QpLmpzPyh4KWApO1xuICAgIGplc3QuYWRkV2F0Y2hJZ25vcmVQYXR0ZXJuKGAvJHt0aGlzLnNyY2Rpcn0vYCk7XG5cbiAgICBjb25zdCByZXNvbHZlU25hcHNob3RQYXRoID0gKHRlc3Q6IHN0cmluZywgZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGZ1bGxwYXRoID0gdGVzdC5yZXBsYWNlKGxpYnRlc3QsIHNyY3Rlc3QpO1xuICAgICAgcmV0dXJuIHBhdGguam9pbihcbiAgICAgICAgcGF0aC5kaXJuYW1lKGZ1bGxwYXRoKSxcbiAgICAgICAgXCJfX3NuYXBzaG90c19fXCIsXG4gICAgICAgIHBhdGguYmFzZW5hbWUoZnVsbHBhdGgsIFwiLmpzXCIpICsgXCIudHNcIiArIGV4dFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzb2x2ZVRlc3RQYXRoID0gKHNuYXA6IHN0cmluZywgZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShzbmFwLCBcIi50c1wiICsgZXh0KSArIFwiLmpzXCI7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUocGF0aC5kaXJuYW1lKHNuYXApKS5yZXBsYWNlKHNyY3Rlc3QsIGxpYnRlc3QpO1xuICAgICAgcmV0dXJuIHBhdGguam9pbihkaXIsIGZpbGVuYW1lKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzb2x2ZXIgPSBuZXcgVGV4dEZpbGUoXG4gICAgICB0aGlzLFxuICAgICAgcGF0aC5wb3NpeC5qb2luKFBST0pFTl9ESVIsIFwiamVzdC1zbmFwc2hvdC1yZXNvbHZlci5qc1wiKVxuICAgICk7XG4gICAgaWYgKCFyZXNvbHZlci5tYXJrZXIpIHtcbiAgICAgIHJlc29sdmVyLmFkZExpbmUoYC8vICR7cmVzb2x2ZXIubWFya2VyfWApO1xuICAgIH1cbiAgICByZXNvbHZlci5hZGRMaW5lKCdjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7Jyk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShgY29uc3QgbGlidGVzdCA9IFwiJHtsaWJ0ZXN0fVwiO2ApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoYGNvbnN0IHNyY3Rlc3Q9IFwiJHtzcmN0ZXN0fVwiO2ApO1xuICAgIHJlc29sdmVyLmFkZExpbmUoXCJtb2R1bGUuZXhwb3J0cyA9IHtcIik7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShcbiAgICAgIGAgIHJlc29sdmVTbmFwc2hvdFBhdGg6ICR7cmVzb2x2ZVNuYXBzaG90UGF0aC50b1N0cmluZygpfSxgXG4gICAgKTtcbiAgICByZXNvbHZlci5hZGRMaW5lKGAgIHJlc29sdmVUZXN0UGF0aDogJHtyZXNvbHZlVGVzdFBhdGgudG9TdHJpbmcoKX0sYCk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShcbiAgICAgIFwiICB0ZXN0UGF0aEZvckNvbnNpc3RlbmN5Q2hlY2s6IHBhdGguam9pbignc29tZScsICdfX3Rlc3RzX18nLCAnZXhhbXBsZS50ZXN0LmpzJylcIlxuICAgICk7XG4gICAgcmVzb2x2ZXIuYWRkTGluZShcIn07XCIpO1xuXG4gICAgamVzdC5hZGRTbmFwc2hvdFJlc29sdmVyKGAuLyR7cmVzb2x2ZXIucGF0aH1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSmVzdE5vQ29tcGlsZShqZXN0OiBKZXN0KSB7XG4gICAgdGhpcy5hZGREZXZEZXBzKFwiQHR5cGVzL2plc3RcIiwgXCJ0cy1qZXN0QF4yN1wiKTsgLy8gcGlubmluZyBmb3Igbm93IGJlY2F1c2Ugb2YgYW4gaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL2lzc3Vlcy8xODEzXG5cbiAgICBqZXN0LmFkZFRlc3RNYXRjaChgPHJvb3REaXI+LyR7dGhpcy5zcmNkaXJ9LyoqL19fdGVzdHNfXy8qKi8qLnRzPyh4KWApO1xuICAgIGplc3QuYWRkVGVzdE1hdGNoKFxuICAgICAgYDxyb290RGlyPi8oJHt0aGlzLnRlc3RkaXJ9fCR7dGhpcy5zcmNkaXJ9KS8qKi8/KCouKSsoc3BlY3x0ZXN0KS50cz8oeClgXG4gICAgKTtcblxuICAgIC8vIGFkZCByZWxldmFudCBkZXBzXG4gICAgamVzdC5jb25maWcucHJlc2V0ID0gXCJ0cy1qZXN0XCI7XG4gICAgamVzdC5jb25maWcuZ2xvYmFscyA9IHtcbiAgICAgIFwidHMtamVzdFwiOiB7XG4gICAgICAgIHRzY29uZmlnOiB0aGlzLnRzY29uZmlnRGV2LmZpbGVOYW1lLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFNhbXBsZUNvZGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIGNvbnN0IHNyY0NvZGUgPSBbXG4gICAgICBcImV4cG9ydCBjbGFzcyBIZWxsbyB7XCIsXG4gICAgICBcIiAgcHVibGljIHNheUhlbGxvKCkge1wiLFxuICAgICAgXCIgICAgcmV0dXJuICdoZWxsbywgd29ybGQhJztcIixcbiAgICAgIFwiICB9XCIsXG4gICAgICBcIn1cIixcbiAgICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgICBjb25zdCB0ZXN0Q29kZSA9IFtcbiAgICAgIFwiaW1wb3J0IHsgSGVsbG8gfSBmcm9tICcuLi9zcmMnO1wiLFxuICAgICAgXCJcIixcbiAgICAgIFwidGVzdCgnaGVsbG8nLCAoKSA9PiB7XCIsXG4gICAgICBcIiAgZXhwZWN0KG5ldyBIZWxsbygpLnNheUhlbGxvKCkpLnRvQmUoJ2hlbGxvLCB3b3JsZCEnKTtcIixcbiAgICAgIFwifSk7XCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuXG4gICAgbmV3IFNhbXBsZURpcihwcm9qZWN0LCBwcm9qZWN0LnNyY2Rpciwge1xuICAgICAgZmlsZXM6IHtcbiAgICAgICAgXCJpbmRleC50c1wiOiBzcmNDb2RlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIG5ldyBTYW1wbGVEaXIocHJvamVjdCwgcHJvamVjdC50ZXN0ZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImhlbGxvLnRlc3QudHNcIjogdGVzdENvZGUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVHlwZVNjcmlwdCBhcHAuXG4gKlxuICogQHBqaWQgdHlwZXNjcmlwdC1hcHBcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRBcHBQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBhbGxvd0xpYnJhcnlEZXBlbmRlbmNpZXM6IGZhbHNlLFxuICAgICAgcmVsZWFzZVdvcmtmbG93OiBmYWxzZSxcbiAgICAgIGVudHJ5cG9pbnQ6IFwiXCIsIC8vIFwibWFpblwiIGlzIG5vdCBuZWVkZWQgaW4gdHlwZXNjcmlwdCBhcHBzXG4gICAgICBwYWNrYWdlOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgYFR5cGVTY3JpcHRQcm9qZWN0YFxuICovXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdExpYnJhcnlQcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3Qge31cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVNjcmlwdExpYnJhcnlQcm9qZWN0T3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB7fVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VUc2NvbmZpZ09wdGlvbnMoXG4gIC4uLm9wdGlvbnM6IChUeXBlc2NyaXB0Q29uZmlnT3B0aW9ucyB8IHVuZGVmaW5lZClbXVxuKTogVHlwZXNjcmlwdENvbmZpZ09wdGlvbnMge1xuICBjb25zdCBkZWZpbmVkT3B0aW9ucyA9IG9wdGlvbnMuZmlsdGVyKEJvb2xlYW4pIGFzIFR5cGVzY3JpcHRDb25maWdPcHRpb25zW107XG4gIHJldHVybiBkZWZpbmVkT3B0aW9ucy5yZWR1Y2U8VHlwZXNjcmlwdENvbmZpZ09wdGlvbnM+KFxuICAgIChwcmV2aW91cywgY3VycmVudCkgPT4gKHtcbiAgICAgIC4uLnByZXZpb3VzLFxuICAgICAgLi4uY3VycmVudCxcbiAgICAgIGluY2x1ZGU6IFsuLi4ocHJldmlvdXMuaW5jbHVkZSA/PyBbXSksIC4uLihjdXJyZW50LmluY2x1ZGUgPz8gW10pXSxcbiAgICAgIGV4Y2x1ZGU6IFsuLi4ocHJldmlvdXMuZXhjbHVkZSA/PyBbXSksIC4uLihjdXJyZW50LmV4Y2x1ZGUgPz8gW10pXSxcbiAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAuLi5wcmV2aW91cy5jb21waWxlck9wdGlvbnMsXG4gICAgICAgIC4uLmN1cnJlbnQuY29tcGlsZXJPcHRpb25zLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICB7IGNvbXBpbGVyT3B0aW9uczoge30gfVxuICApO1xufVxuIl19
@@ -41,4 +41,3 @@ export declare function toPythonVersionRange(semverRange: string): string;
41
41
  * @returns the version that should be serialized
42
42
  */
43
43
  export declare function toReleaseVersion(assemblyVersion: string, target: TargetName): string;
44
- //# sourceMappingURL=semver.d.ts.map
@@ -52,8 +52,7 @@ function toPythonVersionRange(semverRange) {
52
52
  return range.set
53
53
  .map((set) => set
54
54
  .map((comp) => {
55
- var _a, _b;
56
- const versionId = toReleaseVersion((_b = (_a = comp.semver.raw) === null || _a === void 0 ? void 0 : _a.replace(/-0$/, "")) !== null && _b !== void 0 ? _b : "0.0.0", TargetName.PYTHON);
55
+ const versionId = toReleaseVersion(comp.semver.raw?.replace(/-0$/, "") ?? "0.0.0", TargetName.PYTHON);
57
56
  switch (comp.operator) {
58
57
  case "":
59
58
  // With ^0.0.0, somehow we get a left entry with an empty operator and value, we'll fix this up
@@ -207,4 +206,4 @@ function toBracketNotation(semverRange, suffix, { semver = true, target = Target
207
206
  return suffix ? `${str}${suffix}` : toReleaseVersion(str, target);
208
207
  }
209
208
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvc2VtdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1R0FBdUc7OztBQUV2RywrQkFBK0I7QUFDL0IsbUNBQWtEO0FBRWxELElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQiwyQ0FBSSxDQUFBO0lBQ0osK0NBQU0sQ0FBQTtJQUNOLCtDQUFNLENBQUE7SUFDTix1Q0FBRSxDQUFBO0lBQ0YsdURBQVUsQ0FBQTtBQUNaLENBQUMsRUFOVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQU1yQjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsV0FBbUIsRUFDbkIsTUFBZTtJQUVmLE9BQU8saUJBQWlCLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRTtRQUM1QyxNQUFNLEVBQUUsS0FBSztRQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSTtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBUkQsa0RBUUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxXQUFtQjtJQUNyRCxPQUFPLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDL0MsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUxELGtEQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxXQUFtQjtJQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHO1NBQ2IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDWCxHQUFHO1NBQ0EsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1FBQ1osTUFBTSxTQUFTLEdBQUcsZ0JBQWdC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QUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdG9sZW4gZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9qc2lpL2Jsb2IvbWFpbi9wYWNrYWdlcy9qc2lpLXBhY21hay9saWIvdGFyZ2V0cy92ZXJzaW9uLXV0aWxzLnRzXG5cbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tIFwidXRpbFwiO1xuaW1wb3J0IHsgQ29tcGFyYXRvciwgUmFuZ2UsIHBhcnNlIH0gZnJvbSBcInNlbXZlclwiO1xuXG5leHBvcnQgZW51bSBUYXJnZXROYW1lIHtcbiAgSkFWQSxcbiAgRE9UTkVULFxuICBQWVRIT04sXG4gIEdPLFxuICBKQVZBU0NSSVBULFxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgU2VtVmVyIHJhbmdlIGV4cHJlc3Npb24gdG8gYSBNYXZlbiB2ZXJzaW9uIHJhbmdlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNlbXZlclJhbmdlIHRoZSBTZW1WZXIgcmFuZ2UgZXhwcmVzc2lvbiB0byBjb252ZXJ0LlxuICogQHBhcmFtIHN1ZmZpeCAgICAgIHRoZSBzdWZmaXggdG8gYWRkIHRvIHZlcnNpb25zIGluIHRoZSByYW5nZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvTUFWRU5PTEQvRGVwZW5kZW5jeStNZWRpYXRpb24rYW5kK0NvbmZsaWN0K1Jlc29sdXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWF2ZW5WZXJzaW9uUmFuZ2UoXG4gIHNlbXZlclJhbmdlOiBzdHJpbmcsXG4gIHN1ZmZpeD86IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRvQnJhY2tldE5vdGF0aW9uKHNlbXZlclJhbmdlLCBzdWZmaXgsIHtcbiAgICBzZW12ZXI6IGZhbHNlLFxuICAgIHRhcmdldDogVGFyZ2V0TmFtZS5KQVZBLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFNlbVZlciByYW5nZSBleHByZXNzaW9uIHRvIGEgTnVHZXQgdmVyc2lvbiByYW5nZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzZW12ZXJSYW5nZSB0aGUgU2VtVmVyIHJhbmdlIGV4cHJlc3Npb24gdG8gY29udmVydC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL251Z2V0L2NvbmNlcHRzL3BhY2thZ2UtdmVyc2lvbmluZyN2ZXJzaW9uLXJhbmdlcy1hbmQtd2lsZGNhcmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b051R2V0VmVyc2lvblJhbmdlKHNlbXZlclJhbmdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9CcmFja2V0Tm90YXRpb24oc2VtdmVyUmFuZ2UsIHVuZGVmaW5lZCwge1xuICAgIHNlbXZlcjogZmFsc2UsXG4gICAgdGFyZ2V0OiBUYXJnZXROYW1lLkRPVE5FVCxcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBTZW1WZXIgcmFuZ2UgZXhwcmVzc2lvbiB0byBhIFB5dGhvbiBzZXR1cHRvb2xzIGNvbXBhdGlibGUgdmVyc2lvblxuICogY29uc3RyYWludCBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBzZW12ZXJSYW5nZSB0aGUgU2VtVmVyIHJhbmdlIGV4cHJlc3Npb24gdG8gY29udmVydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHl0aG9uVmVyc2lvblJhbmdlKHNlbXZlclJhbmdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByYW5nZSA9IG5ldyBSYW5nZShzZW12ZXJSYW5nZSk7XG4gIHJldHVybiByYW5nZS5zZXRcbiAgICAubWFwKChzZXQpID0+XG4gICAgICBzZXRcbiAgICAgICAgLm1hcCgoY29tcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25JZCA9IHRvUmVsZWFzZVZlcnNpb24oXG4gICAgICAgICAgICBjb21wLnNlbXZlci5yYXc/LnJlcGxhY2UoLy0wJC8sIFwiXCIpID8/IFwiMC4wLjBcIixcbiAgICAgICAgICAgIFRhcmdldE5hbWUuUFlUSE9OXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzd2l0Y2ggKGNvbXAub3BlcmF0b3IpIHtcbiAgICAgICAgICAgIGNhc2UgXCJcIjpcbiAgICAgICAgICAgICAgLy8gV2l0aCBeMC4wLjAsIHNvbWVob3cgd2UgZ2V0IGEgbGVmdCBlbnRyeSB3aXRoIGFuIGVtcHR5IG9wZXJhdG9yIGFuZCB2YWx1ZSwgd2UnbGwgZml4IHRoaXMgdXBcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbXAudmFsdWUgPT09IFwiXCIgPyBcIj49MC4wLjBcIiA6IGA9PSR7dmVyc2lvbklkfWA7XG4gICAgICAgICAgICBjYXNlIFwiPVwiOlxuICAgICAgICAgICAgICByZXR1cm4gYD09JHt2ZXJzaW9uSWR9YDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIC8vID4sID49LCA8LCA8PSBhcmUgYWxsIHZhbGlkIGV4cHJlc3Npb25zXG4gICAgICAgICAgICAgIHJldHVybiBgJHtjb21wLm9wZXJhdG9yfSR7dmVyc2lvbklkfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIiwgXCIpXG4gICAgKVxuICAgIC5qb2luKFwiLCBcIik7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb3JpZ2luYWwgdmVyc2lvbiBudW1iZXIgZnJvbSB0aGUgTlBNIGNvbnZlbnRpb24gdG8gdGhlIHRhcmdldFxuICogbGFuZ3VhZ2UncyBjb252ZW50aW9uIGZvciBleHByZXNzaW5nIHRoZSBzYW1lLiBGb3IgdmVyc2lvbnMgdGhhdCBkbyBub3RcbiAqIGluY2x1ZGUgYSBwcmVyZWxlYXNlIGlkZW50aWZpZXIsIHRoaXMgYWx3YXlzIHJldHVybnMgdGhlIGFzc2VtYmx5IHZlcnNpb25cbiAqIHVubW9kaWZpZWQuXG4gKlxuICogQHBhcmFtIGFzc2VtYmx5VmVyc2lvbiB0aGUgYXNzZW1ibHkgdmVyc2lvbiBiZWluZyByZWxlYXNlZFxuICogQHBhcmFtIHRhcmdldCAgICAgICAgICB0aGUgdGFyZ2V0IGxhbmd1YWdlIGZvciB3aGljaCB0aGUgdmVyc2lvbiBpcyBkZXN0aW5lZFxuICpcbiAqIEByZXR1cm5zIHRoZSB2ZXJzaW9uIHRoYXQgc2hvdWxkIGJlIHNlcmlhbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUmVsZWFzZVZlcnNpb24oXG4gIGFzc2VtYmx5VmVyc2lvbjogc3RyaW5nLFxuICB0YXJnZXQ6IFRhcmdldE5hbWVcbik6IHN0cmluZyB7XG4gIGNvbnN0IHZlcnNpb24gPSBwYXJzZShhc3NlbWJseVZlcnNpb24sIHsgaW5jbHVkZVByZXJlbGVhc2U6IHRydWUgfSk7XG4gIGlmICh2ZXJzaW9uID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIHBhcnNlIHRoZSBwcm92aWRlZCBhc3NlbWJseSB2ZXJzaW9uOiBcIiR7YXNzZW1ibHlWZXJzaW9ufVwiYFxuICAgICk7XG4gIH1cbiAgaWYgKHZlcnNpb24ucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYXNzZW1ibHlWZXJzaW9uO1xuICB9XG4gIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgY2FzZSBUYXJnZXROYW1lLlBZVEhPTjpcbiAgICAgIC8vIFB5dGhvbiBzdXBwb3J0cyBhIGxpbWl0ZWQgc2V0IG9mIGlkZW50aWZpZXJzLi4uIEFuZCB3ZSBoYXZlIGEgbWFwcGluZyB0YWJsZS4uLlxuICAgICAgLy8gaHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9ndWlkZXMvZGlzdHJpYnV0aW5nLXBhY2thZ2VzLXVzaW5nLXNldHVwdG9vbHMvI3ByZS1yZWxlYXNlLXZlcnNpb25pbmdcbiAgICAgIGNvbnN0IFtsYWJlbCwgc2VxdWVuY2UsIC4uLnJlc3RdID0gdmVyc2lvbi5wcmVyZWxlYXNlO1xuICAgICAgaWYgKHJlc3QuZmlsdGVyKChlbHQpID0+IGVsdCAhPT0gMCkubGVuZ3RoID4gMCB8fCBzZXF1ZW5jZSA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5hYmxlIHRvIG1hcCBwcmVyZWxlYXNlIGlkZW50aWZpZXIgKGluOiAke2Fzc2VtYmx5VmVyc2lvbn0pIGNvbXBvbmVudHMgdG8gcHl0aG9uOiAke2luc3BlY3QoXG4gICAgICAgICAgICB2ZXJzaW9uLnByZXJlbGVhc2VcbiAgICAgICAgICApfS4gVGhlIGZvcm1hdCBzaG91bGQgYmUgJ1guWS5aLWxhYmVsLnNlcXVlbmNlJywgd2hlcmUgc2VxdWVuY2UgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBhbmQgbGFiZWwgaXMgXCJkZXZcIiwgXCJwcmVcIiwgXCJhbHBoYVwiLCBiZXRhXCIsIG9yIFwicmNcImBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzZXF1ZW5jZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbmFibGUgdG8gbWFwIHByZXJlbGVhc2UgaWRlbnRpZmllciAoaW46ICR7YXNzZW1ibHlWZXJzaW9ufSkgdG8gcHl0aG9uLCBhcyBzZXF1ZW5jZSAke2luc3BlY3QoXG4gICAgICAgICAgICBzZXF1ZW5jZVxuICAgICAgICAgICl9IGlzIG5vdCBhbiBpbnRlZ2VyYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgYmFzZVZlcnNpb24gPSBgJHt2ZXJzaW9uLm1ham9yfS4ke3ZlcnNpb24ubWlub3J9LiR7dmVyc2lvbi5wYXRjaH1gO1xuICAgICAgLy8gU2VlIFBFUCA0NDA6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NDAvI3ByZS1yZWxlYXNlc1xuICAgICAgc3dpdGNoIChsYWJlbCkge1xuICAgICAgICBjYXNlIFwiZGV2XCI6XG4gICAgICAgIGNhc2UgXCJwcmVcIjpcbiAgICAgICAgICByZXR1cm4gYCR7YmFzZVZlcnNpb259LmRldiR7c2VxdWVuY2V9YDtcbiAgICAgICAgY2FzZSBcImFscGhhXCI6XG4gICAgICAgICAgcmV0dXJuIGAke2Jhc2VWZXJzaW9ufS5hJHtzZXF1ZW5jZX1gO1xuICAgICAgICBjYXNlIFwiYmV0YVwiOlxuICAgICAgICAgIHJldHVybiBgJHtiYXNlVmVyc2lvbn0uYiR7c2VxdWVuY2V9YDtcbiAgICAgICAgY2FzZSBcInJjXCI6XG4gICAgICAgICAgcmV0dXJuIGAke2Jhc2VWZXJzaW9ufS5yYyR7c2VxdWVuY2V9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVW5hYmxlIHRvIG1hcCBwcmVyZWxlYXNlIGlkZW50aWZpZXIgKGluOiAke2Fzc2VtYmx5VmVyc2lvbn0pIHRvIHB5dGhvbiwgYXMgbGFiZWwgJHtpbnNwZWN0KFxuICAgICAgICAgICAgICBsYWJlbFxuICAgICAgICAgICAgKX0gaXMgbm90IG1hcHBlZCAob25seSBcImRldlwiLCBcInByZVwiLCBcImFscGhhXCIsIFwiYmV0YVwiIGFuZCBcInJjXCIgYXJlKWBcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIGNhc2UgVGFyZ2V0TmFtZS5ET1RORVQ6XG4gICAgY2FzZSBUYXJnZXROYW1lLkdPOlxuICAgIGNhc2UgVGFyZ2V0TmFtZS5KQVZBOlxuICAgIGNhc2UgVGFyZ2V0TmFtZS5KQVZBU0NSSVBUOlxuICAgICAgLy8gTm90IHRvdWNoaW5nIC0gdGhlIE5QTSB2ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgdXNhYmxlIGFzLWlzXG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gYXNzZW1ibHlWZXJzaW9uO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc2VtYW50aWMgdmVyc2lvbiByYW5nZSB0byB0aGUga2luZCBvZiBicmFja2V0IG5vdGF0aW9uIHVzZWQgYnlcbiAqIE1hdmVuIGFuZCBOdUdldC4gRm9yIGV4YW1wbGUsIHRoaXMgdHVybnMgYF4xLjIuM2AgaW50byBgWzEuMi4zLDIuMC4wKWAuXG4gKlxuICogQHBhcmFtIHNlbXZlclJhbmdlIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIHJhbmdlIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSBzdWZmaXggQSB2ZXJzaW9uIHN1ZmZpeCB0byBhcHBseSB0byB2ZXJzaW9ucyBpbiB0aGUgcmVzdWx0aW5nIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0gc2VtdmVyIFdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBmdWxsIHNlbWFudGljIHZlcnNpb25pbmcgKGluY2x1ZGluZ1xuICogICAgICAgICAgICAgICBgLTBgIGFzIHRoZSBsb3dlc3QgcG9zc2libGUgcHJlcmVsZWFzZSBpZGVudGlmaWVyKVxuICpcbiAqIEByZXR1cm5zIGEgYnJhY2tldC1ub3RhdGlvbiB2ZXJzaW9uIHJhbmdlLlxuICovXG5mdW5jdGlvbiB0b0JyYWNrZXROb3RhdGlvbihcbiAgc2VtdmVyUmFuZ2U6IHN0cmluZyxcbiAgc3VmZml4Pzogc3RyaW5nLFxuICB7XG4gICAgc2VtdmVyID0gdHJ1ZSxcbiAgICB0YXJnZXQgPSBUYXJnZXROYW1lLkpBVkFTQ1JJUFQsXG4gIH06IHsgc2VtdmVyPzogYm9vbGVhbjsgdGFyZ2V0PzogVGFyZ2V0TmFtZSB9ID0ge31cbik6IHN0cmluZyB7XG4gIGlmIChzZW12ZXJSYW5nZSA9PT0gXCIqXCIpIHtcbiAgICBzZW12ZXJSYW5nZSA9IFwiPj0wLjAuMFwiO1xuICB9XG5cbiAgY29uc3QgcmFuZ2UgPSBuZXcgUmFuZ2Uoc2VtdmVyUmFuZ2UpO1xuICBpZiAoc2VtdmVyUmFuZ2UgPT09IHJhbmdlLnJhbmdlKSB7XG4gICAgcmV0dXJuIHNlbXZlclJhbmdlO1xuICB9XG5cbiAgcmV0dXJuIHJhbmdlLnNldFxuICAgIC5tYXAoKHNldCkgPT4ge1xuICAgICAgaWYgKHNldC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHNldFswXS5zZW12ZXIucmF3O1xuICAgICAgICBpZiAoIXZlcnNpb24gJiYgcmFuZ2UucmF3ID09PSBcIj49MC4wLjBcIikge1xuICAgICAgICAgIC8vIENhc2Ugd2hlcmUgdmVyc2lvbiBpcyAnKidcbiAgICAgICAgICByZXR1cm4gXCJbMC4wLjAsKVwiO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoc2V0WzBdLm9wZXJhdG9yIHx8IFwiPVwiKSB7XG4gICAgICAgICAgLy8gXCJbdmVyc2lvbl1cIiA9PiBtZWFucyBleGFjdGx5IHZlcnNpb25cbiAgICAgICAgICBjYXNlIFwiPVwiOlxuICAgICAgICAgICAgcmV0dXJuIGBbJHthZGRTdWZmaXgodmVyc2lvbil9XWA7XG4gICAgICAgICAgLy8gXCIodmVyc2lvbixdXCIgPT4gbWVhbnMgZ3JlYXRlciB0aGFuIHZlcnNpb25cbiAgICAgICAgICBjYXNlIFwiPlwiOlxuICAgICAgICAgICAgcmV0dXJuIGAoJHthZGRTdWZmaXgodmVyc2lvbil9LClgO1xuICAgICAgICAgIC8vIFwiW3ZlcnNpb24sXVwiID0+IG1lYW5zIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGF0IHZlcnNpb25cbiAgICAgICAgICBjYXNlIFwiPj1cIjpcbiAgICAgICAgICAgIHJldHVybiBgWyR7YWRkU3VmZml4KHZlcnNpb24pfSwpYDtcbiAgICAgICAgICAvLyBcIlssdmVyc2lvbilcIiA9PiBtZWFucyBsZXNzIHRoYW4gdmVyc2lvblxuICAgICAgICAgIGNhc2UgXCI8XCI6XG4gICAgICAgICAgICByZXR1cm4gYCgsJHthZGRTdWZmaXgodmVyc2lvbiwgIXNlbXZlcil9KWA7XG4gICAgICAgICAgLy8gXCJbLHZlcnNpb25dXCIgPT4gbWVhbnMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHZlcnNpb25cbiAgICAgICAgICBjYXNlIFwiPD1cIjpcbiAgICAgICAgICAgIHJldHVybiBgKCwke2FkZFN1ZmZpeCh2ZXJzaW9uKX1dYDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzZXQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGNvbnN0IG51Z2V0UmFuZ2UgPSB0b0JyYWNrZXRSYW5nZShzZXRbMF0sIHNldFsxXSk7XG4gICAgICAgIGlmIChudWdldFJhbmdlKSB7XG4gICAgICAgICAgcmV0dXJuIG51Z2V0UmFuZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuc3VwcG9ydGVkIFNlbVZlciByYW5nZSBzZXQgaW4gJHtzZW12ZXJSYW5nZX06ICR7c2V0XG4gICAgICAgICAgLm1hcCgoY29tcCkgPT4gY29tcC52YWx1ZSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpfWBcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbihcIiwgXCIpO1xuXG4gIGZ1bmN0aW9uIHRvQnJhY2tldFJhbmdlKFxuICAgIGxlZnQ6IENvbXBhcmF0b3IsXG4gICAgcmlnaHQ6IENvbXBhcmF0b3JcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAobGVmdC5vcGVyYXRvci5zdGFydHNXaXRoKFwiPFwiKSAmJiByaWdodC5vcGVyYXRvci5zdGFydHNXaXRoKFwiPlwiKSkge1xuICAgICAgLy8gT3JkZXIgaXNuJ3QgaWRlYWwsIHN3YXAgYXJvdW5kLi5cbiAgICAgIFtsZWZ0LCByaWdodF0gPSBbcmlnaHQsIGxlZnRdO1xuICAgIH1cblxuICAgIC8vIFdpdGggXjAuMC4wLCBzb21laG93IHdlIGdldCBhIGxlZnQgZW50cnkgd2l0aCBhbiBlbXB0eSBvcGVyYXRvciBhbmQgdmFsdWUsIHdlJ2xsIGZpeCB0aGlzIHVwXG4gICAgaWYgKGxlZnQub3BlcmF0b3IgPT09IFwiXCIgJiYgbGVmdC52YWx1ZSA9PT0gXCJcIikge1xuICAgICAgbGVmdCA9IG5ldyBDb21wYXJhdG9yKFwiPj0wLjAuMFwiLCBsZWZ0Lm9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmICghbGVmdC5vcGVyYXRvci5zdGFydHNXaXRoKFwiPlwiKSB8fCAhcmlnaHQub3BlcmF0b3Iuc3RhcnRzV2l0aChcIjxcIikpIHtcbiAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCByYW5nZXMgZGVmaW5lZCBsaWtlIFwiPiAob3IgPj0pIGxlZnQsIDwgKG9yIDw9KSByaWdodFwiXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGxlZnRCcmFjZSA9IGxlZnQub3BlcmF0b3IuZW5kc1dpdGgoXCI9XCIpID8gXCJbXCIgOiBcIihcIjtcbiAgICBjb25zdCByaWdodEJyYWNlID0gcmlnaHQub3BlcmF0b3IuZW5kc1dpdGgoXCI9XCIpID8gXCJdXCIgOiBcIilcIjtcbiAgICByZXR1cm4gYCR7bGVmdEJyYWNlfSR7YWRkU3VmZml4KGxlZnQuc2VtdmVyLnJhdyl9LCR7YWRkU3VmZml4KFxuICAgICAgcmlnaHQuc2VtdmVyLnJhdyxcbiAgICAgIHJpZ2h0Lm9wZXJhdG9yID09PSBcIjxcIiAmJiAhc2VtdmVyXG4gICAgKX0ke3JpZ2h0QnJhY2V9YDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZFN1ZmZpeChzdHI6IHN0cmluZyB8IHVuZGVmaW5lZCwgdHJpbURhc2haZXJvID0gZmFsc2UpIHtcbiAgICBpZiAoIXN0cikge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGlmICh0cmltRGFzaFplcm8pIHtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8tMCQvLCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1ZmZpeCA/IGAke3N0cn0ke3N1ZmZpeH1gIDogdG9SZWxlYXNlVmVyc2lvbihzdHIsIHRhcmdldCk7XG4gIH1cbn1cbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvc2VtdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1R0FBdUc7OztBQUV2RywrQkFBK0I7QUFDL0IsbUNBQWtEO0FBRWxELElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQiwyQ0FBSSxDQUFBO0lBQ0osK0NBQU0sQ0FBQTtJQUNOLCtDQUFNLENBQUE7SUFDTix1Q0FBRSxDQUFBO0lBQ0YsdURBQVUsQ0FBQTtBQUNaLENBQUMsRUFOVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQU1yQjtBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsV0FBbUIsRUFDbkIsTUFBZTtJQUVmLE9BQU8saUJBQWlCLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRTtRQUM1QyxNQUFNLEVBQUUsS0FBSztRQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSTtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBUkQsa0RBUUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxXQUFtQjtJQUNyRCxPQUFPLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUU7UUFDL0MsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUxELGtEQUtDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxXQUFtQjtJQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxPQUFPLEtBQUssQ0FBQyxHQUFHO1NBQ2IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDWCxHQUFHO1NBQ0EsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixNQUFNLFNBQVMsR0FBRyxnQkFBZ0Is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Q0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHN0b2xlbiBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2pzaWkvYmxvYi9tYWluL3BhY2thZ2VzL2pzaWktcGFjbWFrL2xpYi90YXJnZXRzL3ZlcnNpb24tdXRpbHMudHNcblxuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gXCJ1dGlsXCI7XG5pbXBvcnQgeyBDb21wYXJhdG9yLCBSYW5nZSwgcGFyc2UgfSBmcm9tIFwic2VtdmVyXCI7XG5cbmV4cG9ydCBlbnVtIFRhcmdldE5hbWUge1xuICBKQVZBLFxuICBET1RORVQsXG4gIFBZVEhPTixcbiAgR08sXG4gIEpBVkFTQ1JJUFQsXG59XG5cbi8qKlxuICogQ29udmVydHMgYSBTZW1WZXIgcmFuZ2UgZXhwcmVzc2lvbiB0byBhIE1hdmVuIHZlcnNpb24gcmFuZ2UgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc2VtdmVyUmFuZ2UgdGhlIFNlbVZlciByYW5nZSBleHByZXNzaW9uIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gc3VmZml4ICAgICAgdGhlIHN1ZmZpeCB0byBhZGQgdG8gdmVyc2lvbnMgaW4gdGhlIHJhbmdlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9NQVZFTk9MRC9EZXBlbmRlbmN5K01lZGlhdGlvbithbmQrQ29uZmxpY3QrUmVzb2x1dGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9NYXZlblZlcnNpb25SYW5nZShcbiAgc2VtdmVyUmFuZ2U6IHN0cmluZyxcbiAgc3VmZml4Pzogc3RyaW5nXG4pOiBzdHJpbmcge1xuICByZXR1cm4gdG9CcmFja2V0Tm90YXRpb24oc2VtdmVyUmFuZ2UsIHN1ZmZpeCwge1xuICAgIHNlbXZlcjogZmFsc2UsXG4gICAgdGFyZ2V0OiBUYXJnZXROYW1lLkpBVkEsXG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgU2VtVmVyIHJhbmdlIGV4cHJlc3Npb24gdG8gYSBOdUdldCB2ZXJzaW9uIHJhbmdlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNlbXZlclJhbmdlIHRoZSBTZW1WZXIgcmFuZ2UgZXhwcmVzc2lvbiB0byBjb252ZXJ0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvbnVnZXQvY29uY2VwdHMvcGFja2FnZS12ZXJzaW9uaW5nI3ZlcnNpb24tcmFuZ2VzLWFuZC13aWxkY2FyZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTnVHZXRWZXJzaW9uUmFuZ2Uoc2VtdmVyUmFuZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b0JyYWNrZXROb3RhdGlvbihzZW12ZXJSYW5nZSwgdW5kZWZpbmVkLCB7XG4gICAgc2VtdmVyOiBmYWxzZSxcbiAgICB0YXJnZXQ6IFRhcmdldE5hbWUuRE9UTkVULFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFNlbVZlciByYW5nZSBleHByZXNzaW9uIHRvIGEgUHl0aG9uIHNldHVwdG9vbHMgY29tcGF0aWJsZSB2ZXJzaW9uXG4gKiBjb25zdHJhaW50IGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNlbXZlclJhbmdlIHRoZSBTZW1WZXIgcmFuZ2UgZXhwcmVzc2lvbiB0byBjb252ZXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QeXRob25WZXJzaW9uUmFuZ2Uoc2VtdmVyUmFuZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJhbmdlID0gbmV3IFJhbmdlKHNlbXZlclJhbmdlKTtcbiAgcmV0dXJuIHJhbmdlLnNldFxuICAgIC5tYXAoKHNldCkgPT5cbiAgICAgIHNldFxuICAgICAgICAubWFwKChjb21wKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmVyc2lvbklkID0gdG9SZWxlYXNlVmVyc2lvbihcbiAgICAgICAgICAgIGNvbXAuc2VtdmVyLnJhdz8ucmVwbGFjZSgvLTAkLywgXCJcIikgPz8gXCIwLjAuMFwiLFxuICAgICAgICAgICAgVGFyZ2V0TmFtZS5QWVRIT05cbiAgICAgICAgICApO1xuICAgICAgICAgIHN3aXRjaCAoY29tcC5vcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSBcIlwiOlxuICAgICAgICAgICAgICAvLyBXaXRoIF4wLjAuMCwgc29tZWhvdyB3ZSBnZXQgYSBsZWZ0IGVudHJ5IHdpdGggYW4gZW1wdHkgb3BlcmF0b3IgYW5kIHZhbHVlLCB3ZSdsbCBmaXggdGhpcyB1cFxuICAgICAgICAgICAgICByZXR1cm4gY29tcC52YWx1ZSA9PT0gXCJcIiA/IFwiPj0wLjAuMFwiIDogYD09JHt2ZXJzaW9uSWR9YDtcbiAgICAgICAgICAgIGNhc2UgXCI9XCI6XG4gICAgICAgICAgICAgIHJldHVybiBgPT0ke3ZlcnNpb25JZH1gO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgLy8gPiwgPj0sIDwsIDw9IGFyZSBhbGwgdmFsaWQgZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgcmV0dXJuIGAke2NvbXAub3BlcmF0b3J9JHt2ZXJzaW9uSWR9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiLCBcIilcbiAgICApXG4gICAgLmpvaW4oXCIsIFwiKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvcmlnaW5hbCB2ZXJzaW9uIG51bWJlciBmcm9tIHRoZSBOUE0gY29udmVudGlvbiB0byB0aGUgdGFyZ2V0XG4gKiBsYW5ndWFnZSdzIGNvbnZlbnRpb24gZm9yIGV4cHJlc3NpbmcgdGhlIHNhbWUuIEZvciB2ZXJzaW9ucyB0aGF0IGRvIG5vdFxuICogaW5jbHVkZSBhIHByZXJlbGVhc2UgaWRlbnRpZmllciwgdGhpcyBhbHdheXMgcmV0dXJucyB0aGUgYXNzZW1ibHkgdmVyc2lvblxuICogdW5tb2RpZmllZC5cbiAqXG4gKiBAcGFyYW0gYXNzZW1ibHlWZXJzaW9uIHRoZSBhc3NlbWJseSB2ZXJzaW9uIGJlaW5nIHJlbGVhc2VkXG4gKiBAcGFyYW0gdGFyZ2V0ICAgICAgICAgIHRoZSB0YXJnZXQgbGFuZ3VhZ2UgZm9yIHdoaWNoIHRoZSB2ZXJzaW9uIGlzIGRlc3RpbmVkXG4gKlxuICogQHJldHVybnMgdGhlIHZlcnNpb24gdGhhdCBzaG91bGQgYmUgc2VyaWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9SZWxlYXNlVmVyc2lvbihcbiAgYXNzZW1ibHlWZXJzaW9uOiBzdHJpbmcsXG4gIHRhcmdldDogVGFyZ2V0TmFtZVxuKTogc3RyaW5nIHtcbiAgY29uc3QgdmVyc2lvbiA9IHBhcnNlKGFzc2VtYmx5VmVyc2lvbiwgeyBpbmNsdWRlUHJlcmVsZWFzZTogdHJ1ZSB9KTtcbiAgaWYgKHZlcnNpb24gPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbmFibGUgdG8gcGFyc2UgdGhlIHByb3ZpZGVkIGFzc2VtYmx5IHZlcnNpb246IFwiJHthc3NlbWJseVZlcnNpb259XCJgXG4gICAgKTtcbiAgfVxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhc3NlbWJseVZlcnNpb247XG4gIH1cbiAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICBjYXNlIFRhcmdldE5hbWUuUFlUSE9OOlxuICAgICAgLy8gUHl0aG9uIHN1cHBvcnRzIGEgbGltaXRlZCBzZXQgb2YgaWRlbnRpZmllcnMuLi4gQW5kIHdlIGhhdmUgYSBtYXBwaW5nIHRhYmxlLi4uXG4gICAgICAvLyBodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2d1aWRlcy9kaXN0cmlidXRpbmctcGFja2FnZXMtdXNpbmctc2V0dXB0b29scy8jcHJlLXJlbGVhc2UtdmVyc2lvbmluZ1xuICAgICAgY29uc3QgW2xhYmVsLCBzZXF1ZW5jZSwgLi4ucmVzdF0gPSB2ZXJzaW9uLnByZXJlbGVhc2U7XG4gICAgICBpZiAocmVzdC5maWx0ZXIoKGVsdCkgPT4gZWx0ICE9PSAwKS5sZW5ndGggPiAwIHx8IHNlcXVlbmNlID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbmFibGUgdG8gbWFwIHByZXJlbGVhc2UgaWRlbnRpZmllciAoaW46ICR7YXNzZW1ibHlWZXJzaW9ufSkgY29tcG9uZW50cyB0byBweXRob246ICR7aW5zcGVjdChcbiAgICAgICAgICAgIHZlcnNpb24ucHJlcmVsZWFzZVxuICAgICAgICAgICl9LiBUaGUgZm9ybWF0IHNob3VsZCBiZSAnWC5ZLlotbGFiZWwuc2VxdWVuY2UnLCB3aGVyZSBzZXF1ZW5jZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGFuZCBsYWJlbCBpcyBcImRldlwiLCBcInByZVwiLCBcImFscGhhXCIsIGJldGFcIiwgb3IgXCJyY1wiYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHNlcXVlbmNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFVuYWJsZSB0byBtYXAgcHJlcmVsZWFzZSBpZGVudGlmaWVyIChpbjogJHthc3NlbWJseVZlcnNpb259KSB0byBweXRob24sIGFzIHNlcXVlbmNlICR7aW5zcGVjdChcbiAgICAgICAgICAgIHNlcXVlbmNlXG4gICAgICAgICAgKX0gaXMgbm90IGFuIGludGVnZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlVmVyc2lvbiA9IGAke3ZlcnNpb24ubWFqb3J9LiR7dmVyc2lvbi5taW5vcn0uJHt2ZXJzaW9uLnBhdGNofWA7XG4gICAgICAvLyBTZWUgUEVQIDQ0MDogaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ0MC8jcHJlLXJlbGVhc2VzXG4gICAgICBzd2l0Y2ggKGxhYmVsKSB7XG4gICAgICAgIGNhc2UgXCJkZXZcIjpcbiAgICAgICAgY2FzZSBcInByZVwiOlxuICAgICAgICAgIHJldHVybiBgJHtiYXNlVmVyc2lvbn0uZGV2JHtzZXF1ZW5jZX1gO1xuICAgICAgICBjYXNlIFwiYWxwaGFcIjpcbiAgICAgICAgICByZXR1cm4gYCR7YmFzZVZlcnNpb259LmEke3NlcXVlbmNlfWA7XG4gICAgICAgIGNhc2UgXCJiZXRhXCI6XG4gICAgICAgICAgcmV0dXJuIGAke2Jhc2VWZXJzaW9ufS5iJHtzZXF1ZW5jZX1gO1xuICAgICAgICBjYXNlIFwicmNcIjpcbiAgICAgICAgICByZXR1cm4gYCR7YmFzZVZlcnNpb259LnJjJHtzZXF1ZW5jZX1gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gbWFwIHByZXJlbGVhc2UgaWRlbnRpZmllciAoaW46ICR7YXNzZW1ibHlWZXJzaW9ufSkgdG8gcHl0aG9uLCBhcyBsYWJlbCAke2luc3BlY3QoXG4gICAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICApfSBpcyBub3QgbWFwcGVkIChvbmx5IFwiZGV2XCIsIFwicHJlXCIsIFwiYWxwaGFcIiwgXCJiZXRhXCIgYW5kIFwicmNcIiBhcmUpYFxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgY2FzZSBUYXJnZXROYW1lLkRPVE5FVDpcbiAgICBjYXNlIFRhcmdldE5hbWUuR086XG4gICAgY2FzZSBUYXJnZXROYW1lLkpBVkE6XG4gICAgY2FzZSBUYXJnZXROYW1lLkpBVkFTQ1JJUFQ6XG4gICAgICAvLyBOb3QgdG91Y2hpbmcgLSB0aGUgTlBNIHZlcnNpb24gbnVtYmVyIHNob3VsZCBiZSB1c2FibGUgYXMtaXNcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBhc3NlbWJseVZlcnNpb247XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzZW1hbnRpYyB2ZXJzaW9uIHJhbmdlIHRvIHRoZSBraW5kIG9mIGJyYWNrZXQgbm90YXRpb24gdXNlZCBieVxuICogTWF2ZW4gYW5kIE51R2V0LiBGb3IgZXhhbXBsZSwgdGhpcyB0dXJucyBgXjEuMi4zYCBpbnRvIGBbMS4yLjMsMi4wLjApYC5cbiAqXG4gKiBAcGFyYW0gc2VtdmVyUmFuZ2UgVGhlIHNlbWFudGljIHZlcnNpb24gcmFuZ2UgdG8gYmUgY29udmVydGVkLlxuICogQHBhcmFtIHN1ZmZpeCBBIHZlcnNpb24gc3VmZml4IHRvIGFwcGx5IHRvIHZlcnNpb25zIGluIHRoZSByZXN1bHRpbmcgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBzZW12ZXIgV2hldGhlciB0aGUgdGFyZ2V0IHN1cHBvcnRzIGZ1bGwgc2VtYW50aWMgdmVyc2lvbmluZyAoaW5jbHVkaW5nXG4gKiAgICAgICAgICAgICAgIGAtMGAgYXMgdGhlIGxvd2VzdCBwb3NzaWJsZSBwcmVyZWxlYXNlIGlkZW50aWZpZXIpXG4gKlxuICogQHJldHVybnMgYSBicmFja2V0LW5vdGF0aW9uIHZlcnNpb24gcmFuZ2UuXG4gKi9cbmZ1bmN0aW9uIHRvQnJhY2tldE5vdGF0aW9uKFxuICBzZW12ZXJSYW5nZTogc3RyaW5nLFxuICBzdWZmaXg/OiBzdHJpbmcsXG4gIHtcbiAgICBzZW12ZXIgPSB0cnVlLFxuICAgIHRhcmdldCA9IFRhcmdldE5hbWUuSkFWQVNDUklQVCxcbiAgfTogeyBzZW12ZXI/OiBib29sZWFuOyB0YXJnZXQ/OiBUYXJnZXROYW1lIH0gPSB7fVxuKTogc3RyaW5nIHtcbiAgaWYgKHNlbXZlclJhbmdlID09PSBcIipcIikge1xuICAgIHNlbXZlclJhbmdlID0gXCI+PTAuMC4wXCI7XG4gIH1cblxuICBjb25zdCByYW5nZSA9IG5ldyBSYW5nZShzZW12ZXJSYW5nZSk7XG4gIGlmIChzZW12ZXJSYW5nZSA9PT0gcmFuZ2UucmFuZ2UpIHtcbiAgICByZXR1cm4gc2VtdmVyUmFuZ2U7XG4gIH1cblxuICByZXR1cm4gcmFuZ2Uuc2V0XG4gICAgLm1hcCgoc2V0KSA9PiB7XG4gICAgICBpZiAoc2V0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gc2V0WzBdLnNlbXZlci5yYXc7XG4gICAgICAgIGlmICghdmVyc2lvbiAmJiByYW5nZS5yYXcgPT09IFwiPj0wLjAuMFwiKSB7XG4gICAgICAgICAgLy8gQ2FzZSB3aGVyZSB2ZXJzaW9uIGlzICcqJ1xuICAgICAgICAgIHJldHVybiBcIlswLjAuMCwpXCI7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChzZXRbMF0ub3BlcmF0b3IgfHwgXCI9XCIpIHtcbiAgICAgICAgICAvLyBcIlt2ZXJzaW9uXVwiID0+IG1lYW5zIGV4YWN0bHkgdmVyc2lvblxuICAgICAgICAgIGNhc2UgXCI9XCI6XG4gICAgICAgICAgICByZXR1cm4gYFske2FkZFN1ZmZpeCh2ZXJzaW9uKX1dYDtcbiAgICAgICAgICAvLyBcIih2ZXJzaW9uLF1cIiA9PiBtZWFucyBncmVhdGVyIHRoYW4gdmVyc2lvblxuICAgICAgICAgIGNhc2UgXCI+XCI6XG4gICAgICAgICAgICByZXR1cm4gYCgke2FkZFN1ZmZpeCh2ZXJzaW9uKX0sKWA7XG4gICAgICAgICAgLy8gXCJbdmVyc2lvbixdXCIgPT4gbWVhbnMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoYXQgdmVyc2lvblxuICAgICAgICAgIGNhc2UgXCI+PVwiOlxuICAgICAgICAgICAgcmV0dXJuIGBbJHthZGRTdWZmaXgodmVyc2lvbil9LClgO1xuICAgICAgICAgIC8vIFwiWyx2ZXJzaW9uKVwiID0+IG1lYW5zIGxlc3MgdGhhbiB2ZXJzaW9uXG4gICAgICAgICAgY2FzZSBcIjxcIjpcbiAgICAgICAgICAgIHJldHVybiBgKCwke2FkZFN1ZmZpeCh2ZXJzaW9uLCAhc2VtdmVyKX0pYDtcbiAgICAgICAgICAvLyBcIlssdmVyc2lvbl1cIiA9PiBtZWFucyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdmVyc2lvblxuICAgICAgICAgIGNhc2UgXCI8PVwiOlxuICAgICAgICAgICAgcmV0dXJuIGAoLCR7YWRkU3VmZml4KHZlcnNpb24pfV1gO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNldC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY29uc3QgbnVnZXRSYW5nZSA9IHRvQnJhY2tldFJhbmdlKHNldFswXSwgc2V0WzFdKTtcbiAgICAgICAgaWYgKG51Z2V0UmFuZ2UpIHtcbiAgICAgICAgICByZXR1cm4gbnVnZXRSYW5nZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgU2VtVmVyIHJhbmdlIHNldCBpbiAke3NlbXZlclJhbmdlfTogJHtzZXRcbiAgICAgICAgICAubWFwKChjb21wKSA9PiBjb21wLnZhbHVlKVxuICAgICAgICAgIC5qb2luKFwiLCBcIil9YFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5qb2luKFwiLCBcIik7XG5cbiAgZnVuY3Rpb24gdG9CcmFja2V0UmFuZ2UoXG4gICAgbGVmdDogQ29tcGFyYXRvcixcbiAgICByaWdodDogQ29tcGFyYXRvclxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChsZWZ0Lm9wZXJhdG9yLnN0YXJ0c1dpdGgoXCI8XCIpICYmIHJpZ2h0Lm9wZXJhdG9yLnN0YXJ0c1dpdGgoXCI+XCIpKSB7XG4gICAgICAvLyBPcmRlciBpc24ndCBpZGVhbCwgc3dhcCBhcm91bmQuLlxuICAgICAgW2xlZnQsIHJpZ2h0XSA9IFtyaWdodCwgbGVmdF07XG4gICAgfVxuXG4gICAgLy8gV2l0aCBeMC4wLjAsIHNvbWVob3cgd2UgZ2V0IGEgbGVmdCBlbnRyeSB3aXRoIGFuIGVtcHR5IG9wZXJhdG9yIGFuZCB2YWx1ZSwgd2UnbGwgZml4IHRoaXMgdXBcbiAgICBpZiAobGVmdC5vcGVyYXRvciA9PT0gXCJcIiAmJiBsZWZ0LnZhbHVlID09PSBcIlwiKSB7XG4gICAgICBsZWZ0ID0gbmV3IENvbXBhcmF0b3IoXCI+PTAuMC4wXCIsIGxlZnQub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKCFsZWZ0Lm9wZXJhdG9yLnN0YXJ0c1dpdGgoXCI+XCIpIHx8ICFyaWdodC5vcGVyYXRvci5zdGFydHNXaXRoKFwiPFwiKSkge1xuICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IHJhbmdlcyBkZWZpbmVkIGxpa2UgXCI+IChvciA+PSkgbGVmdCwgPCAob3IgPD0pIHJpZ2h0XCJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbGVmdEJyYWNlID0gbGVmdC5vcGVyYXRvci5lbmRzV2l0aChcIj1cIikgPyBcIltcIiA6IFwiKFwiO1xuICAgIGNvbnN0IHJpZ2h0QnJhY2UgPSByaWdodC5vcGVyYXRvci5lbmRzV2l0aChcIj1cIikgPyBcIl1cIiA6IFwiKVwiO1xuICAgIHJldHVybiBgJHtsZWZ0QnJhY2V9JHthZGRTdWZmaXgobGVmdC5zZW12ZXIucmF3KX0sJHthZGRTdWZmaXgoXG4gICAgICByaWdodC5zZW12ZXIucmF3LFxuICAgICAgcmlnaHQub3BlcmF0b3IgPT09IFwiPFwiICYmICFzZW12ZXJcbiAgICApfSR7cmlnaHRCcmFjZX1gO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkU3VmZml4KHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkLCB0cmltRGFzaFplcm8gPSBmYWxzZSkge1xuICAgIGlmICghc3RyKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgaWYgKHRyaW1EYXNoWmVybykge1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoLy0wJC8sIFwiXCIpO1xuICAgIH1cbiAgICByZXR1cm4gc3VmZml4ID8gYCR7c3RyfSR7c3VmZml4fWAgOiB0b1JlbGVhc2VWZXJzaW9uKHN0ciwgdGFyZ2V0KTtcbiAgfVxufVxuIl19
@@ -22,4 +22,3 @@ export interface DirectorySnapshotOptions {
22
22
  readonly onlyFileNames?: boolean;
23
23
  }
24
24
  export declare function directorySnapshot(root: string, options?: DirectorySnapshotOptions): SynthOutput;
25
- //# sourceMappingURL=synth.d.ts.map
package/lib/util/synth.js CHANGED
@@ -42,10 +42,9 @@ function synthSnapshot(project) {
42
42
  }
43
43
  exports.synthSnapshot = synthSnapshot;
44
44
  function directorySnapshot(root, options = {}) {
45
- var _a;
46
45
  const output = {};
47
46
  const files = glob_1.glob.sync("**", {
48
- ignore: [".git/**", ...((_a = options.excludeGlobs) !== null && _a !== void 0 ? _a : [])],
47
+ ignore: [".git/**", ...(options.excludeGlobs ?? [])],
49
48
  cwd: root,
50
49
  nodir: true,
51
50
  dot: true,
@@ -69,4 +68,4 @@ function directorySnapshot(root, options = {}) {
69
68
  return output;
70
69
  }
71
70
  exports.directorySnapshot = directorySnapshot;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9zeW50aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQiwrQkFBNEI7QUFPNUI7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE9BQWdCO0lBQzVDLHVFQUF1RTtJQUN2RSxJQUNFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQzVDO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FDYix3SEFBd0gsQ0FDekgsQ0FBQztLQUNIO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3RDO0lBRUEsT0FBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUVqQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7SUFDaEUsSUFBSTtRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0tBQ0o7WUFBUztRQUNSLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLDRFQUE0RTtRQUM1RSxJQUFJLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7U0FDeEM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUM7U0FDM0Q7S0FDRjtBQUNILENBQUM7QUFwQ0Qsc0NBb0NDO0FBa0JELFNBQWdCLGlCQUFpQixDQUMvQixJQUFZLEVBQ1osVUFBb0MsRUFBRTs7SUFFdEMsTUFBTSxNQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUUvQixNQUFNLEtBQUssR0FBRyxXQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUM1QixNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxPQUFDLE9BQU8sQ0FBQyxZQUFZLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELEdBQUcsRUFBRSxJQUFJO1FBQ1QsS0FBSyxFQUFFLElBQUk7UUFDWCxHQUFHLEVBQUUsSUFBSTtLQUNWLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtJQUV4RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2QyxJQUFJLE9BQU8sQ0FBQztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3RDLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUM5QztTQUNGO2FBQU07WUFDTCxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN4QjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUEvQkQsOENBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7IGdsb2IgfSBmcm9tIFwiZ2xvYlwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhPdXRwdXQge1xuICBbZmlsZVBhdGg6IHN0cmluZ106IGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc25hcHNob3Qgb2YgdGhlIGZpbGVzIGdlbmVyYXRlZCBieSBhIHByb2plY3QuIElnbm9yZXMgYW55IG5vbi10ZXh0XG4gKiBmaWxlcyBzbyB0aGF0IHRoZSBzbmFwc2hvdHMgYXJlIGh1bWFuIHJlYWRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ludGhTbmFwc2hvdChwcm9qZWN0OiBQcm9qZWN0KTogU3ludGhPdXRwdXQge1xuICAvLyBkZWZlbnNpdmU6IHZlcmlmeSB0aGF0IFwib3V0ZGlyXCIgaXMgYWN0dWFsbHkgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5XG4gIGlmIChcbiAgICAhcGF0aC5yZXNvbHZlKHByb2plY3Qub3V0ZGlyKS5zdGFydHNXaXRoKG9zLnRtcGRpcigpKSAmJlxuICAgICFwcm9qZWN0Lm91dGRpci5pbmNsdWRlcyhcInByb2plY3QtdGVtcC1kaXJcIilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUcnlpbmcgdG8gY2FwdHVyZSBhIHNuYXBzaG90IG9mIGEgcHJvamVjdCBvdXRzaWRlIG9mIHRtcGRpciwgd2hpY2ggaW1wbGllcyB0aGlzIHRlc3QgbWlnaHQgY29ycnVwdCBhbiBleGlzdGluZyBwcm9qZWN0XCJcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3ludGhlZCA9IFN5bWJvbC5mb3IoXCJzeW50aGVkXCIpO1xuICBpZiAoc3ludGhlZCBpbiBwcm9qZWN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZHVwbGljYXRlIHN5bnRoKClcIik7XG4gIH1cblxuICAocHJvamVjdCBhcyBhbnkpW3N5bnRoZWRdID0gdHJ1ZTtcblxuICBjb25zdCBFTlZfUFJPSkVOX0RJU0FCTEVfUE9TVCA9IHByb2Nlc3MuZW52LlBST0pFTl9ESVNBQkxFX1BPU1Q7XG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5lbnYuUFJPSkVOX0RJU0FCTEVfUE9TVCA9IFwidHJ1ZVwiO1xuICAgIHByb2plY3Quc3ludGgoKTtcbiAgICBjb25zdCBpZ25vcmVFeHRzID0gW1wicG5nXCIsIFwiaWNvXCJdO1xuICAgIHJldHVybiBkaXJlY3RvcnlTbmFwc2hvdChwcm9qZWN0Lm91dGRpciwge1xuICAgICAgZXhjbHVkZUdsb2JzOiBpZ25vcmVFeHRzLm1hcCgoZXh0KSA9PiBgKiovKi4ke2V4dH1gKSxcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcy5yZW1vdmVTeW5jKHByb2plY3Qub3V0ZGlyKTtcblxuICAgIC8vIHZhbHVlcyBhc3NpZ25lZCB0byBwcm9jZXNzLmVudi5YWVogYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHN0cmluZ3NcbiAgICBpZiAoRU5WX1BST0pFTl9ESVNBQkxFX1BPU1QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LlBST0pFTl9ESVNBQkxFX1BPU1Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52LlBST0pFTl9ESVNBQkxFX1BPU1QgPSBFTlZfUFJPSkVOX0RJU0FCTEVfUE9TVDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlTbmFwc2hvdE9wdGlvbnMge1xuICAvKipcbiAgICogR2xvYnMgb2YgZmlsZXMgdG8gZXhjbHVkZS5cbiAgICogQGRlZmF1bHQgW10gaW5jbHVkZSBhbGwgZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVHbG9icz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPbmx5IHNuYXBzaG90IHRoZSBuYW1lcyBvZiBmaWxlcyBhbmQgbm90IHRoZWlyIGNvbnRlbnRzLlxuICAgKiBUaGUgdmFsdWUgZm9yIGEgcGF0aCB3aWxsIGJlIGB0cnVlYCBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIGluY2x1ZGUgZmlsZSBjb250ZW50XG4gICAqL1xuICByZWFkb25seSBvbmx5RmlsZU5hbWVzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdG9yeVNuYXBzaG90KFxuICByb290OiBzdHJpbmcsXG4gIG9wdGlvbnM6IERpcmVjdG9yeVNuYXBzaG90T3B0aW9ucyA9IHt9XG4pIHtcbiAgY29uc3Qgb3V0cHV0OiBTeW50aE91dHB1dCA9IHt9O1xuXG4gIGNvbnN0IGZpbGVzID0gZ2xvYi5zeW5jKFwiKipcIiwge1xuICAgIGlnbm9yZTogW1wiLmdpdC8qKlwiLCAuLi4ob3B0aW9ucy5leGNsdWRlR2xvYnMgPz8gW10pXSxcbiAgICBjd2Q6IHJvb3QsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgZG90OiB0cnVlLFxuICB9KTsgLy8gcmV0dXJucyByZWxhdGl2ZSBmaWxlIHBhdGhzIHdpdGggUE9TSVggc2VwYXJhdG9yc1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3QsIGZpbGUpO1xuXG4gICAgbGV0IGNvbnRlbnQ7XG4gICAgaWYgKCFvcHRpb25zLm9ubHlGaWxlTmFtZXMpIHtcbiAgICAgIGlmIChwYXRoLmV4dG5hbWUoZmlsZVBhdGgpID09PSBcIi5qc29uXCIpIHtcbiAgICAgICAgY29udGVudCA9IGZzLnJlYWRKc29uU3luYyhmaWxlUGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvdXRwdXRbZmlsZV0gPSBjb250ZW50O1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9zeW50aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUMvQiwrQkFBNEI7QUFPNUI7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE9BQWdCO0lBQzVDLHVFQUF1RTtJQUN2RSxJQUNFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQzVDO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FDYix3SEFBd0gsQ0FDekgsQ0FBQztLQUNIO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3RDO0lBRUEsT0FBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUVqQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7SUFDaEUsSUFBSTtRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxPQUFPLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FDckQsQ0FBQyxDQUFDO0tBQ0o7WUFBUztRQUNSLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLDRFQUE0RTtRQUM1RSxJQUFJLHVCQUF1QixLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7U0FDeEM7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUM7U0FDM0Q7S0FDRjtBQUNILENBQUM7QUFwQ0Qsc0NBb0NDO0FBa0JELFNBQWdCLGlCQUFpQixDQUMvQixJQUFZLEVBQ1osVUFBb0MsRUFBRTtJQUV0QyxNQUFNLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO0lBRS9CLE1BQU0sS0FBSyxHQUFHLFdBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRCxHQUFHLEVBQUUsSUFBSTtRQUNULEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLElBQUk7S0FDVixDQUFDLENBQUMsQ0FBQyxvREFBb0Q7SUFFeEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxPQUFPLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssT0FBTyxFQUFFO2dCQUN0QyxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDOUM7U0FDRjthQUFNO1lBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBL0JELDhDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcImdsb2JcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoT3V0cHV0IHtcbiAgW2ZpbGVQYXRoOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNuYXBzaG90IG9mIHRoZSBmaWxlcyBnZW5lcmF0ZWQgYnkgYSBwcm9qZWN0LiBJZ25vcmVzIGFueSBub24tdGV4dFxuICogZmlsZXMgc28gdGhhdCB0aGUgc25hcHNob3RzIGFyZSBodW1hbiByZWFkYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bnRoU25hcHNob3QocHJvamVjdDogUHJvamVjdCk6IFN5bnRoT3V0cHV0IHtcbiAgLy8gZGVmZW5zaXZlOiB2ZXJpZnkgdGhhdCBcIm91dGRpclwiIGlzIGFjdHVhbGx5IGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeVxuICBpZiAoXG4gICAgIXBhdGgucmVzb2x2ZShwcm9qZWN0Lm91dGRpcikuc3RhcnRzV2l0aChvcy50bXBkaXIoKSkgJiZcbiAgICAhcHJvamVjdC5vdXRkaXIuaW5jbHVkZXMoXCJwcm9qZWN0LXRlbXAtZGlyXCIpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVHJ5aW5nIHRvIGNhcHR1cmUgYSBzbmFwc2hvdCBvZiBhIHByb2plY3Qgb3V0c2lkZSBvZiB0bXBkaXIsIHdoaWNoIGltcGxpZXMgdGhpcyB0ZXN0IG1pZ2h0IGNvcnJ1cHQgYW4gZXhpc3RpbmcgcHJvamVjdFwiXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHN5bnRoZWQgPSBTeW1ib2wuZm9yKFwic3ludGhlZFwiKTtcbiAgaWYgKHN5bnRoZWQgaW4gcHJvamVjdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImR1cGxpY2F0ZSBzeW50aCgpXCIpO1xuICB9XG5cbiAgKHByb2plY3QgYXMgYW55KVtzeW50aGVkXSA9IHRydWU7XG5cbiAgY29uc3QgRU5WX1BST0pFTl9ESVNBQkxFX1BPU1QgPSBwcm9jZXNzLmVudi5QUk9KRU5fRElTQUJMRV9QT1NUO1xuICB0cnkge1xuICAgIHByb2Nlc3MuZW52LlBST0pFTl9ESVNBQkxFX1BPU1QgPSBcInRydWVcIjtcbiAgICBwcm9qZWN0LnN5bnRoKCk7XG4gICAgY29uc3QgaWdub3JlRXh0cyA9IFtcInBuZ1wiLCBcImljb1wiXTtcbiAgICByZXR1cm4gZGlyZWN0b3J5U25hcHNob3QocHJvamVjdC5vdXRkaXIsIHtcbiAgICAgIGV4Y2x1ZGVHbG9iczogaWdub3JlRXh0cy5tYXAoKGV4dCkgPT4gYCoqLyouJHtleHR9YCksXG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgZnMucmVtb3ZlU3luYyhwcm9qZWN0Lm91dGRpcik7XG5cbiAgICAvLyB2YWx1ZXMgYXNzaWduZWQgdG8gcHJvY2Vzcy5lbnYuWFlaIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBzdHJpbmdzXG4gICAgaWYgKEVOVl9QUk9KRU5fRElTQUJMRV9QT1NUID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5QUk9KRU5fRElTQUJMRV9QT1NUO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5QUk9KRU5fRElTQUJMRV9QT1NUID0gRU5WX1BST0pFTl9ESVNBQkxFX1BPU1Q7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5U25hcHNob3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEdsb2JzIG9mIGZpbGVzIHRvIGV4Y2x1ZGUuXG4gICAqIEBkZWZhdWx0IFtdIGluY2x1ZGUgYWxsIGZpbGVzXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlR2xvYnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT25seSBzbmFwc2hvdCB0aGUgbmFtZXMgb2YgZmlsZXMgYW5kIG5vdCB0aGVpciBjb250ZW50cy5cbiAgICogVGhlIHZhbHVlIGZvciBhIHBhdGggd2lsbCBiZSBgdHJ1ZWAgaWYgaXQgZXhpc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZSBpbmNsdWRlIGZpbGUgY29udGVudFxuICAgKi9cbiAgcmVhZG9ubHkgb25seUZpbGVOYW1lcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3RvcnlTbmFwc2hvdChcbiAgcm9vdDogc3RyaW5nLFxuICBvcHRpb25zOiBEaXJlY3RvcnlTbmFwc2hvdE9wdGlvbnMgPSB7fVxuKSB7XG4gIGNvbnN0IG91dHB1dDogU3ludGhPdXRwdXQgPSB7fTtcblxuICBjb25zdCBmaWxlcyA9IGdsb2Iuc3luYyhcIioqXCIsIHtcbiAgICBpZ25vcmU6IFtcIi5naXQvKipcIiwgLi4uKG9wdGlvbnMuZXhjbHVkZUdsb2JzID8/IFtdKV0sXG4gICAgY3dkOiByb290LFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIGRvdDogdHJ1ZSxcbiAgfSk7IC8vIHJldHVybnMgcmVsYXRpdmUgZmlsZSBwYXRocyB3aXRoIFBPU0lYIHNlcGFyYXRvcnNcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihyb290LCBmaWxlKTtcblxuICAgIGxldCBjb250ZW50O1xuICAgIGlmICghb3B0aW9ucy5vbmx5RmlsZU5hbWVzKSB7XG4gICAgICBpZiAocGF0aC5leHRuYW1lKGZpbGVQYXRoKSA9PT0gXCIuanNvblwiKSB7XG4gICAgICAgIGNvbnRlbnQgPSBmcy5yZWFkSnNvblN5bmMoZmlsZVBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgb3V0cHV0W2ZpbGVdID0gY29udGVudDtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG4iXX0=
package/lib/util.d.ts CHANGED
@@ -110,4 +110,3 @@ export declare function isExecutable(file: string): boolean;
110
110
  export declare function getNodeMajorVersion(): number | undefined;
111
111
  export declare function anySelected(options: (boolean | undefined)[]): boolean;
112
112
  export declare function multipleSelected(options: (boolean | undefined)[]): boolean;
113
- //# sourceMappingURL=util.d.ts.map