cdktn 0.23.1 → 0.23.3

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 (432) hide show
  1. package/.jsii +1592 -1591
  2. package/.spec.swcrc +22 -0
  3. package/README.md +1 -1
  4. package/jest.config.js +18 -15
  5. package/lib/_tokens.js +1 -1
  6. package/lib/annotations.js +2 -2
  7. package/lib/app.js +2 -2
  8. package/lib/aspect.js +2 -2
  9. package/lib/backends/azurerm-backend.js +3 -3
  10. package/lib/backends/cloud-backend.js +5 -5
  11. package/lib/backends/consul-backend.js +3 -3
  12. package/lib/backends/cos-backend.js +3 -3
  13. package/lib/backends/gcs-backend.js +3 -3
  14. package/lib/backends/http-backend.js +3 -3
  15. package/lib/backends/index.js +1 -1
  16. package/lib/backends/local-backend.js +3 -3
  17. package/lib/backends/oss-backend.js +3 -3
  18. package/lib/backends/pg-backend.js +3 -3
  19. package/lib/backends/remote-backend.js +5 -5
  20. package/lib/backends/s3-backend.js +3 -3
  21. package/lib/backends/swift-backend.js +3 -3
  22. package/lib/complex-computed-list.js +25 -25
  23. package/lib/errors.d.ts +1 -2
  24. package/lib/errors.js +11 -8
  25. package/lib/features.js +1 -1
  26. package/lib/functions/helpers.js +1 -1
  27. package/lib/functions/terraform-functions.generated.js +2 -2
  28. package/lib/hcl/render.js +1 -1
  29. package/lib/importable-resource.js +2 -2
  30. package/lib/index.js +1 -1
  31. package/lib/manifest.js +4 -5
  32. package/lib/private/fs.d.ts +20 -5
  33. package/lib/private/fs.js +43 -69
  34. package/lib/private/unique.js +1 -1
  35. package/lib/resource.js +2 -2
  36. package/lib/runtime.js +1 -1
  37. package/lib/synthesize/index.js +1 -1
  38. package/lib/synthesize/synthesizer.js +4 -5
  39. package/lib/synthesize/types.js +1 -1
  40. package/lib/terraform-addressable.js +1 -1
  41. package/lib/terraform-asset.js +2 -2
  42. package/lib/terraform-backend.js +2 -2
  43. package/lib/terraform-conditions.js +1 -1
  44. package/lib/terraform-count.js +2 -2
  45. package/lib/terraform-data-resource.js +2 -2
  46. package/lib/terraform-data-source.js +2 -2
  47. package/lib/terraform-dependable.js +1 -1
  48. package/lib/terraform-dynamic-block.js +2 -2
  49. package/lib/terraform-dynamic-expression.js +2 -2
  50. package/lib/terraform-element.js +2 -2
  51. package/lib/terraform-functions.js +2 -2
  52. package/lib/terraform-hcl-module.js +2 -2
  53. package/lib/terraform-iterator.js +6 -6
  54. package/lib/terraform-local.js +2 -2
  55. package/lib/terraform-module-asset.js +1 -1
  56. package/lib/terraform-module.js +2 -2
  57. package/lib/terraform-operators.js +2 -2
  58. package/lib/terraform-output.js +2 -2
  59. package/lib/terraform-provider.js +2 -2
  60. package/lib/terraform-provisioner.js +2 -2
  61. package/lib/terraform-remote-state.js +2 -2
  62. package/lib/terraform-resource-targets.js +2 -2
  63. package/lib/terraform-resource.js +2 -2
  64. package/lib/terraform-stack.js +2 -2
  65. package/lib/terraform-variable.js +3 -3
  66. package/lib/testing/adapters/jest.js +1 -1
  67. package/lib/testing/index.js +7 -8
  68. package/lib/testing/matchers.js +2 -2
  69. package/lib/tfExpression.js +1 -1
  70. package/lib/tokens/index.js +1 -1
  71. package/lib/tokens/lazy.js +4 -4
  72. package/lib/tokens/private/dependency.js +1 -1
  73. package/lib/tokens/private/encoding.js +1 -1
  74. package/lib/tokens/private/intrinsic.d.ts +0 -5
  75. package/lib/tokens/private/intrinsic.js +2 -9
  76. package/lib/tokens/private/resolve.js +1 -1
  77. package/lib/tokens/private/stack-trace.d.ts +6 -0
  78. package/lib/tokens/private/stack-trace.js +14 -1
  79. package/lib/tokens/private/token-map.js +1 -1
  80. package/lib/tokens/private/uniqueid.js +1 -1
  81. package/lib/tokens/resolvable.js +4 -4
  82. package/lib/tokens/string-fragments.js +2 -2
  83. package/lib/tokens/token.js +3 -3
  84. package/lib/tsconfig.tsbuildinfo +1 -0
  85. package/lib/upgrade-id-aspect.js +2 -2
  86. package/lib/util.js +1 -1
  87. package/lib/validateEnvironment.js +1 -1
  88. package/lib/validations/index.js +1 -1
  89. package/lib/validations/validate-binary-version.js +1 -1
  90. package/lib/validations/validate-provider-presence.js +1 -1
  91. package/lib/validations/validate-terraform-version.js +1 -1
  92. package/node_modules/fflate/CHANGELOG.md +115 -0
  93. package/node_modules/{has-property-descriptors → fflate}/LICENSE +2 -2
  94. package/node_modules/fflate/README.md +558 -0
  95. package/node_modules/fflate/esm/browser.d.ts +1501 -0
  96. package/node_modules/fflate/esm/browser.js +2665 -0
  97. package/node_modules/fflate/esm/index.d.mts +1501 -0
  98. package/node_modules/fflate/esm/index.mjs +2679 -0
  99. package/node_modules/fflate/lib/browser.cjs +2688 -0
  100. package/node_modules/fflate/lib/browser.d.cts +1501 -0
  101. package/node_modules/fflate/lib/index.cjs +2668 -0
  102. package/node_modules/fflate/lib/index.d.ts +1501 -0
  103. package/node_modules/fflate/lib/node-worker.cjs +32 -0
  104. package/node_modules/fflate/lib/node.cjs +2700 -0
  105. package/node_modules/fflate/lib/node.d.cts +1501 -0
  106. package/node_modules/fflate/lib/worker.cjs +20 -0
  107. package/node_modules/fflate/package.json +127 -0
  108. package/node_modules/fflate/umd/index.js +1 -0
  109. package/node_modules/{yazl → safe-stable-stringify}/LICENSE +1 -1
  110. package/node_modules/safe-stable-stringify/esm/package.json +4 -0
  111. package/node_modules/safe-stable-stringify/esm/wrapper.d.ts +4 -0
  112. package/node_modules/safe-stable-stringify/esm/wrapper.js +6 -0
  113. package/node_modules/safe-stable-stringify/index.d.ts +22 -0
  114. package/node_modules/safe-stable-stringify/index.js +625 -0
  115. package/node_modules/safe-stable-stringify/package.json +65 -0
  116. package/node_modules/safe-stable-stringify/readme.md +179 -0
  117. package/package.json +21 -15
  118. package/tsconfig.json +6 -3
  119. package/tsconfig.test.json +12 -0
  120. package/lib/testing/__tests__/matchers.test.d.ts +0 -1
  121. package/lib/testing/__tests__/matchers.test.js +0 -205
  122. package/lib/testing/adapters/__tests__/index.test.d.ts +0 -1
  123. package/lib/testing/adapters/__tests__/index.test.js +0 -67
  124. package/lib/testing/adapters/__tests__/jest.test.d.ts +0 -1
  125. package/lib/testing/adapters/__tests__/jest.test.js +0 -41
  126. package/node_modules/buffer-crc32/LICENSE +0 -19
  127. package/node_modules/buffer-crc32/README.md +0 -55
  128. package/node_modules/buffer-crc32/dist/index.cjs +0 -306
  129. package/node_modules/buffer-crc32/dist/index.d.cts +0 -35
  130. package/node_modules/buffer-crc32/dist/index.d.mts +0 -35
  131. package/node_modules/buffer-crc32/dist/index.mjs +0 -304
  132. package/node_modules/buffer-crc32/index.d.ts +0 -35
  133. package/node_modules/buffer-crc32/package.json +0 -54
  134. package/node_modules/call-bind/.eslintignore +0 -1
  135. package/node_modules/call-bind/.eslintrc +0 -16
  136. package/node_modules/call-bind/.github/FUNDING.yml +0 -12
  137. package/node_modules/call-bind/.nycrc +0 -9
  138. package/node_modules/call-bind/CHANGELOG.md +0 -106
  139. package/node_modules/call-bind/LICENSE +0 -21
  140. package/node_modules/call-bind/README.md +0 -64
  141. package/node_modules/call-bind/callBound.js +0 -15
  142. package/node_modules/call-bind/index.js +0 -24
  143. package/node_modules/call-bind/package.json +0 -93
  144. package/node_modules/call-bind/test/callBound.js +0 -54
  145. package/node_modules/call-bind/test/index.js +0 -74
  146. package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  147. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  148. package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  149. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  150. package/node_modules/call-bind-apply-helpers/LICENSE +0 -21
  151. package/node_modules/call-bind-apply-helpers/README.md +0 -62
  152. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  153. package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  154. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  155. package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  156. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  157. package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  158. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  159. package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  160. package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  161. package/node_modules/call-bind-apply-helpers/index.js +0 -15
  162. package/node_modules/call-bind-apply-helpers/package.json +0 -85
  163. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  164. package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  165. package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  166. package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  167. package/node_modules/call-bound/.eslintrc +0 -13
  168. package/node_modules/call-bound/.github/FUNDING.yml +0 -12
  169. package/node_modules/call-bound/.nycrc +0 -9
  170. package/node_modules/call-bound/CHANGELOG.md +0 -42
  171. package/node_modules/call-bound/LICENSE +0 -21
  172. package/node_modules/call-bound/README.md +0 -53
  173. package/node_modules/call-bound/index.d.ts +0 -94
  174. package/node_modules/call-bound/index.js +0 -19
  175. package/node_modules/call-bound/package.json +0 -99
  176. package/node_modules/call-bound/test/index.js +0 -61
  177. package/node_modules/call-bound/tsconfig.json +0 -10
  178. package/node_modules/define-data-property/.eslintrc +0 -24
  179. package/node_modules/define-data-property/.github/FUNDING.yml +0 -12
  180. package/node_modules/define-data-property/.nycrc +0 -13
  181. package/node_modules/define-data-property/CHANGELOG.md +0 -70
  182. package/node_modules/define-data-property/LICENSE +0 -21
  183. package/node_modules/define-data-property/README.md +0 -67
  184. package/node_modules/define-data-property/index.d.ts +0 -12
  185. package/node_modules/define-data-property/index.js +0 -56
  186. package/node_modules/define-data-property/package.json +0 -106
  187. package/node_modules/define-data-property/test/index.js +0 -392
  188. package/node_modules/define-data-property/tsconfig.json +0 -59
  189. package/node_modules/dunder-proto/.eslintrc +0 -5
  190. package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  191. package/node_modules/dunder-proto/.nycrc +0 -13
  192. package/node_modules/dunder-proto/CHANGELOG.md +0 -24
  193. package/node_modules/dunder-proto/LICENSE +0 -21
  194. package/node_modules/dunder-proto/README.md +0 -54
  195. package/node_modules/dunder-proto/get.d.ts +0 -5
  196. package/node_modules/dunder-proto/get.js +0 -30
  197. package/node_modules/dunder-proto/package.json +0 -76
  198. package/node_modules/dunder-proto/set.d.ts +0 -5
  199. package/node_modules/dunder-proto/set.js +0 -35
  200. package/node_modules/dunder-proto/test/get.js +0 -34
  201. package/node_modules/dunder-proto/test/index.js +0 -4
  202. package/node_modules/dunder-proto/test/set.js +0 -50
  203. package/node_modules/dunder-proto/tsconfig.json +0 -9
  204. package/node_modules/es-define-property/.eslintrc +0 -13
  205. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  206. package/node_modules/es-define-property/.nycrc +0 -9
  207. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  208. package/node_modules/es-define-property/LICENSE +0 -21
  209. package/node_modules/es-define-property/README.md +0 -49
  210. package/node_modules/es-define-property/index.d.ts +0 -3
  211. package/node_modules/es-define-property/index.js +0 -14
  212. package/node_modules/es-define-property/package.json +0 -81
  213. package/node_modules/es-define-property/test/index.js +0 -56
  214. package/node_modules/es-define-property/tsconfig.json +0 -10
  215. package/node_modules/es-errors/.eslintrc +0 -5
  216. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  217. package/node_modules/es-errors/CHANGELOG.md +0 -40
  218. package/node_modules/es-errors/LICENSE +0 -21
  219. package/node_modules/es-errors/README.md +0 -55
  220. package/node_modules/es-errors/eval.d.ts +0 -3
  221. package/node_modules/es-errors/eval.js +0 -4
  222. package/node_modules/es-errors/index.d.ts +0 -3
  223. package/node_modules/es-errors/index.js +0 -4
  224. package/node_modules/es-errors/package.json +0 -80
  225. package/node_modules/es-errors/range.d.ts +0 -3
  226. package/node_modules/es-errors/range.js +0 -4
  227. package/node_modules/es-errors/ref.d.ts +0 -3
  228. package/node_modules/es-errors/ref.js +0 -4
  229. package/node_modules/es-errors/syntax.d.ts +0 -3
  230. package/node_modules/es-errors/syntax.js +0 -4
  231. package/node_modules/es-errors/test/index.js +0 -19
  232. package/node_modules/es-errors/tsconfig.json +0 -49
  233. package/node_modules/es-errors/type.d.ts +0 -3
  234. package/node_modules/es-errors/type.js +0 -4
  235. package/node_modules/es-errors/uri.d.ts +0 -3
  236. package/node_modules/es-errors/uri.js +0 -4
  237. package/node_modules/es-object-atoms/.eslintrc +0 -16
  238. package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  239. package/node_modules/es-object-atoms/CHANGELOG.md +0 -37
  240. package/node_modules/es-object-atoms/LICENSE +0 -21
  241. package/node_modules/es-object-atoms/README.md +0 -63
  242. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  243. package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  244. package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  245. package/node_modules/es-object-atoms/ToObject.js +0 -10
  246. package/node_modules/es-object-atoms/index.d.ts +0 -3
  247. package/node_modules/es-object-atoms/index.js +0 -4
  248. package/node_modules/es-object-atoms/isObject.d.ts +0 -3
  249. package/node_modules/es-object-atoms/isObject.js +0 -6
  250. package/node_modules/es-object-atoms/package.json +0 -80
  251. package/node_modules/es-object-atoms/test/index.js +0 -38
  252. package/node_modules/es-object-atoms/tsconfig.json +0 -6
  253. package/node_modules/function-bind/.eslintrc +0 -21
  254. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  255. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  256. package/node_modules/function-bind/.nycrc +0 -13
  257. package/node_modules/function-bind/CHANGELOG.md +0 -136
  258. package/node_modules/function-bind/LICENSE +0 -20
  259. package/node_modules/function-bind/README.md +0 -46
  260. package/node_modules/function-bind/implementation.js +0 -84
  261. package/node_modules/function-bind/index.js +0 -5
  262. package/node_modules/function-bind/package.json +0 -87
  263. package/node_modules/function-bind/test/.eslintrc +0 -9
  264. package/node_modules/function-bind/test/index.js +0 -252
  265. package/node_modules/get-intrinsic/.eslintrc +0 -42
  266. package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  267. package/node_modules/get-intrinsic/.nycrc +0 -9
  268. package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  269. package/node_modules/get-intrinsic/LICENSE +0 -21
  270. package/node_modules/get-intrinsic/README.md +0 -71
  271. package/node_modules/get-intrinsic/index.js +0 -378
  272. package/node_modules/get-intrinsic/package.json +0 -97
  273. package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  274. package/node_modules/get-proto/.eslintrc +0 -10
  275. package/node_modules/get-proto/.github/FUNDING.yml +0 -12
  276. package/node_modules/get-proto/.nycrc +0 -9
  277. package/node_modules/get-proto/CHANGELOG.md +0 -21
  278. package/node_modules/get-proto/LICENSE +0 -21
  279. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  280. package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  281. package/node_modules/get-proto/README.md +0 -50
  282. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  283. package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  284. package/node_modules/get-proto/index.d.ts +0 -5
  285. package/node_modules/get-proto/index.js +0 -27
  286. package/node_modules/get-proto/package.json +0 -81
  287. package/node_modules/get-proto/test/index.js +0 -68
  288. package/node_modules/get-proto/tsconfig.json +0 -9
  289. package/node_modules/gopd/.eslintrc +0 -16
  290. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  291. package/node_modules/gopd/CHANGELOG.md +0 -45
  292. package/node_modules/gopd/LICENSE +0 -21
  293. package/node_modules/gopd/README.md +0 -40
  294. package/node_modules/gopd/gOPD.d.ts +0 -1
  295. package/node_modules/gopd/gOPD.js +0 -4
  296. package/node_modules/gopd/index.d.ts +0 -5
  297. package/node_modules/gopd/index.js +0 -15
  298. package/node_modules/gopd/package.json +0 -77
  299. package/node_modules/gopd/test/index.js +0 -36
  300. package/node_modules/gopd/tsconfig.json +0 -9
  301. package/node_modules/has-property-descriptors/.eslintrc +0 -13
  302. package/node_modules/has-property-descriptors/.github/FUNDING.yml +0 -12
  303. package/node_modules/has-property-descriptors/.nycrc +0 -9
  304. package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
  305. package/node_modules/has-property-descriptors/README.md +0 -43
  306. package/node_modules/has-property-descriptors/index.js +0 -22
  307. package/node_modules/has-property-descriptors/package.json +0 -77
  308. package/node_modules/has-property-descriptors/test/index.js +0 -57
  309. package/node_modules/has-symbols/.eslintrc +0 -11
  310. package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  311. package/node_modules/has-symbols/.nycrc +0 -9
  312. package/node_modules/has-symbols/CHANGELOG.md +0 -91
  313. package/node_modules/has-symbols/LICENSE +0 -21
  314. package/node_modules/has-symbols/README.md +0 -46
  315. package/node_modules/has-symbols/index.d.ts +0 -3
  316. package/node_modules/has-symbols/index.js +0 -14
  317. package/node_modules/has-symbols/package.json +0 -111
  318. package/node_modules/has-symbols/shams.d.ts +0 -3
  319. package/node_modules/has-symbols/shams.js +0 -45
  320. package/node_modules/has-symbols/test/index.js +0 -22
  321. package/node_modules/has-symbols/test/shams/core-js.js +0 -29
  322. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  323. package/node_modules/has-symbols/test/tests.js +0 -58
  324. package/node_modules/has-symbols/tsconfig.json +0 -10
  325. package/node_modules/hasown/.eslintrc +0 -5
  326. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  327. package/node_modules/hasown/.nycrc +0 -13
  328. package/node_modules/hasown/CHANGELOG.md +0 -40
  329. package/node_modules/hasown/LICENSE +0 -21
  330. package/node_modules/hasown/README.md +0 -40
  331. package/node_modules/hasown/index.d.ts +0 -3
  332. package/node_modules/hasown/index.js +0 -8
  333. package/node_modules/hasown/package.json +0 -92
  334. package/node_modules/hasown/tsconfig.json +0 -6
  335. package/node_modules/isarray/LICENSE +0 -21
  336. package/node_modules/isarray/README.md +0 -38
  337. package/node_modules/isarray/index.js +0 -5
  338. package/node_modules/isarray/package.json +0 -48
  339. package/node_modules/json-stable-stringify/.eslintrc +0 -31
  340. package/node_modules/json-stable-stringify/.github/FUNDING.yml +0 -12
  341. package/node_modules/json-stable-stringify/CHANGELOG.md +0 -160
  342. package/node_modules/json-stable-stringify/LICENSE +0 -21
  343. package/node_modules/json-stable-stringify/README.md +0 -157
  344. package/node_modules/json-stable-stringify/example/key_cmp.js +0 -9
  345. package/node_modules/json-stable-stringify/example/nested.js +0 -7
  346. package/node_modules/json-stable-stringify/example/str.js +0 -7
  347. package/node_modules/json-stable-stringify/example/value_cmp.js +0 -12
  348. package/node_modules/json-stable-stringify/index.d.ts +0 -25
  349. package/node_modules/json-stable-stringify/index.js +0 -124
  350. package/node_modules/json-stable-stringify/package.json +0 -88
  351. package/node_modules/json-stable-stringify/test/cmp.js +0 -33
  352. package/node_modules/json-stable-stringify/test/nested.js +0 -48
  353. package/node_modules/json-stable-stringify/test/replacer.js +0 -81
  354. package/node_modules/json-stable-stringify/test/space.js +0 -127
  355. package/node_modules/json-stable-stringify/test/str.js +0 -46
  356. package/node_modules/json-stable-stringify/test/to-json.js +0 -22
  357. package/node_modules/json-stable-stringify/tsconfig.json +0 -10
  358. package/node_modules/jsonify/.eslintrc +0 -21
  359. package/node_modules/jsonify/.github/FUNDING.yml +0 -12
  360. package/node_modules/jsonify/CHANGELOG.md +0 -48
  361. package/node_modules/jsonify/README.md +0 -66
  362. package/node_modules/jsonify/index.js +0 -4
  363. package/node_modules/jsonify/lib/parse.js +0 -261
  364. package/node_modules/jsonify/lib/stringify.js +0 -151
  365. package/node_modules/jsonify/package.json +0 -62
  366. package/node_modules/jsonify/test/parse.js +0 -20
  367. package/node_modules/jsonify/test/stringify.js +0 -18
  368. package/node_modules/math-intrinsics/.eslintrc +0 -16
  369. package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  370. package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  371. package/node_modules/math-intrinsics/LICENSE +0 -21
  372. package/node_modules/math-intrinsics/README.md +0 -50
  373. package/node_modules/math-intrinsics/abs.d.ts +0 -1
  374. package/node_modules/math-intrinsics/abs.js +0 -4
  375. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  376. package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  377. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  378. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  379. package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  380. package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  381. package/node_modules/math-intrinsics/floor.d.ts +0 -1
  382. package/node_modules/math-intrinsics/floor.js +0 -4
  383. package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  384. package/node_modules/math-intrinsics/isFinite.js +0 -12
  385. package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  386. package/node_modules/math-intrinsics/isInteger.js +0 -16
  387. package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  388. package/node_modules/math-intrinsics/isNaN.js +0 -6
  389. package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  390. package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  391. package/node_modules/math-intrinsics/max.d.ts +0 -1
  392. package/node_modules/math-intrinsics/max.js +0 -4
  393. package/node_modules/math-intrinsics/min.d.ts +0 -1
  394. package/node_modules/math-intrinsics/min.js +0 -4
  395. package/node_modules/math-intrinsics/mod.d.ts +0 -3
  396. package/node_modules/math-intrinsics/mod.js +0 -9
  397. package/node_modules/math-intrinsics/package.json +0 -86
  398. package/node_modules/math-intrinsics/pow.d.ts +0 -1
  399. package/node_modules/math-intrinsics/pow.js +0 -4
  400. package/node_modules/math-intrinsics/round.d.ts +0 -1
  401. package/node_modules/math-intrinsics/round.js +0 -4
  402. package/node_modules/math-intrinsics/sign.d.ts +0 -3
  403. package/node_modules/math-intrinsics/sign.js +0 -11
  404. package/node_modules/math-intrinsics/test/index.js +0 -192
  405. package/node_modules/math-intrinsics/tsconfig.json +0 -3
  406. package/node_modules/object-keys/.editorconfig +0 -13
  407. package/node_modules/object-keys/.eslintrc +0 -17
  408. package/node_modules/object-keys/.travis.yml +0 -277
  409. package/node_modules/object-keys/CHANGELOG.md +0 -232
  410. package/node_modules/object-keys/LICENSE +0 -21
  411. package/node_modules/object-keys/README.md +0 -76
  412. package/node_modules/object-keys/implementation.js +0 -122
  413. package/node_modules/object-keys/index.js +0 -32
  414. package/node_modules/object-keys/isArguments.js +0 -17
  415. package/node_modules/object-keys/package.json +0 -88
  416. package/node_modules/object-keys/test/index.js +0 -5
  417. package/node_modules/set-function-length/.eslintrc +0 -27
  418. package/node_modules/set-function-length/.github/FUNDING.yml +0 -12
  419. package/node_modules/set-function-length/.nycrc +0 -13
  420. package/node_modules/set-function-length/CHANGELOG.md +0 -70
  421. package/node_modules/set-function-length/LICENSE +0 -21
  422. package/node_modules/set-function-length/README.md +0 -56
  423. package/node_modules/set-function-length/env.d.ts +0 -9
  424. package/node_modules/set-function-length/env.js +0 -25
  425. package/node_modules/set-function-length/index.d.ts +0 -7
  426. package/node_modules/set-function-length/index.js +0 -42
  427. package/node_modules/set-function-length/package.json +0 -102
  428. package/node_modules/set-function-length/tsconfig.json +0 -9
  429. package/node_modules/yazl/README.md +0 -457
  430. package/node_modules/yazl/index.js +0 -826
  431. package/node_modules/yazl/package.json +0 -34
  432. package/tsconfig.tsbuildinfo +0 -1
package/lib/hcl/render.js CHANGED
@@ -622,4 +622,4 @@ ${name} = ${renderFuzzyJsonExpression(value)}
622
622
  .filter((v) => v !== undefined)
623
623
  .join("\n");
624
624
  }
625
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0RBLDRDQTZDQztBQUtELGdDQWdEQztBQUtELDBDQVNDO0FBS0QsOEJBY0M7QUFLRCx3Q0FzQkM7QUFLRCx3Q0FxQ0M7QUFLRCw0Q0EyQkM7QUFLRCx3REF5QkM7QUFLRCxrREFxQkM7QUFLRCx3Q0FtQkM7QUFLRCxvQ0FnQkM7QUFLRCxvQ0FPQztBQUtELG9DQW9CQztBQUtELHdDQU9DO0FBS0Qsa0NBUUM7QUFLRCxvQ0FRQztBQUtELDBDQTBCQztBQUtELGtDQUlDO0FBeUVELHdEQVdDO0FBSUQsNENBc0hDO0FBbHNCRDs7O0dBR0c7QUFDSCwyQ0FBK0M7QUFFL0M7O0dBRUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxHQUFXO0lBQy9CLG1EQUFtRDtJQUNuRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsOEJBQThCLENBQUMsR0FBVztJQUNqRCxPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxD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QztnQkFDdEQsT0FBTyxHQUFHLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUM5QixDQUFDO1lBRUQsb0VBQW9FO1lBQ3BFLHNFQUFzRTtZQUN0RSxtRUFBbUU7WUFDbkUsOERBQThEO1lBQzlELFNBQVM7WUFDVCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixPQUFPOzs7Ozs7Ozs7RUFTZixJQUFJLE1BQU0seUJBQXlCLENBQUMsS0FBSyxDQUFDO0NBQzNDLENBQUM7WUFDTSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxJQUFJLE1BQU0seUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxHQUFHLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7U0FDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5pbXBvcnQgeyBUb2tlbml6YXRpb24gfSBmcm9tIFwiLi4vdG9rZW5zL3Rva2VuXCI7XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUXVvdGVzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gRG9uJ3QgYXR0ZW1wdCB0byBlc2NhcGUgaWYgd2UgaGF2ZSBhbiBleHByZXNzaW9uXG4gIGlmIChzdHIubWF0Y2goL1xcJFxcey8pKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gc3RyLnJlcGxhY2UoLyg/PCFcXFxcKVwiL2csICdcXFxcXCInKTtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiB3cmFwSWRlbnRpZmllckluUXVvdGVzSWZOZWVkZWQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gLyheXFxkKXxbXkEtWmEtejAtOV8tXS8udGVzdChrZXkpID8gYFwiJHtrZXl9XCJgIDoga2V5O1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdHIgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gYFwiXCJgO1xuICB9XG5cbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHIgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlVuYWJsZSB0byBwcm9jZXNzIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBoYXZlIGJlZW4gYSBzdHJpbmcsIGJ1dCBpc24ndFwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBsaW5lcyA9IHN0ci5zcGxpdCgvXFxyXFxufFtcXG5cXHJdLyk7XG5cbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGBcIiR7ZXNjYXBlUXVvdGVzKHN0cil9XCJgO1xuXG4gIHJldHVybiBgPDxFT0ZcXG4ke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuRU9GYDtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5Gb3JNZXRhZGF0YShibG9jazogYW55KTogYW55IHtcbiAgY29uc3QgcmVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGlmICh0eXBlb2YgYmxvY2sgIT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoYmxvY2spKSB7XG4gICAgcmV0dXJuIGJsb2NrO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoYmxvY2spKSB7XG4gICAgcmV0dXJuIGJsb2NrLm1hcCgoaSkgPT4gY2xlYW5Gb3JNZXRhZGF0YShpKSk7XG4gIH1cblxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYmxvY2spO1xuXG4gIGlmIChrZXlzLmluY2x1ZGVzKFwidmFsdWVcIikpIHtcbiAgICByZXR1cm4gY2xlYW5Gb3JNZXRhZGF0YShibG9jay52YWx1ZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBibG9ja1trZXldO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHJlc29sdmFibGUgd2UgZG9uJ3Qgd2FudCB0byByZWN1cnNlIGludG8gaXRcbiAgICAgIGlmIChUb2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgICAgICByZXNba2V5XSA9IHt9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcmVzW2tleV0gPSBjbGVhbkZvck1ldGFkYXRhKHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIHZhbHVlICE9IG51bGwgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNba2V5XSkpIHtcbiAgICAgICAgcmVzW2tleV0gPSBbLi4ucmVzW2tleV0sIC4uLnZhbHVlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgcmVzW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckxpc3QodjogYW55LCBuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgeyBpc0Jsb2NrLCBpc19ibG9jaywgdmFsdWUsIHN0b3JhZ2VfY2xhc3NfdHlwZSwgc3RvcmFnZUNsYXNzVHlwZSB9ID0gdjtcbiAgY29uc3QgYmxvY2sgPSBpc0Jsb2NrIHx8IGlzX2Jsb2NrO1xuICBjb25zdCBjbGFzc1R5cGUgPSBzdG9yYWdlQ2xhc3NUeXBlIHx8IHN0b3JhZ2VfY2xhc3NfdHlwZTtcblxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIC8vIHRoaXMgY291bGQgYmUgYW4gZXhwcmVzc2lvbiwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlXG4gICAgcmV0dXJuIHJlbmRlclN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBpZiAobmFtZSkge1xuICAgIGlmIChibG9jaykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0ge2AgKyBgXFxuJHtyZW5kZXJBdHRyaWJ1dGVzKHZhbHVlKX1cXG59YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgIC5tYXAoKHY6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtuYW1lfSB7YCArIGBcXG4ke3JlbmRlckF0dHJpYnV0ZXModil9XFxufWA7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyTGlzdFZhbHVlKHZhbHVlLCBjbGFzc1R5cGUpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke25hbWV9ID0gW1xuJHt2YWx1ZS5tYXAoKHY6IGFueSkgPT4gcmVuZGVyTGlzdFZhbHVlKHYsIGNsYXNzVHlwZSkpLmpvaW4oXCIsXFxuXCIpfVxuXWA7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgLy8gQSBsaXN0IHR5cGUgb2Ygb25seSBhIHNpbmdsZSBpdGVtXG4gICAgcmV0dXJuIHJlbmRlckxpc3RWYWx1ZSh2YWx1ZSwgY2xhc3NUeXBlKTtcbiAgfVxuXG4gIGlmIChibG9jaykge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoKHY6IGFueSkgPT4gcmVuZGVyTGlzdFZhbHVlKHYsIGNsYXNzVHlwZSkpLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gYFtcbiR7dmFsdWUubWFwKCh2OiBhbnkpID0+IHJlbmRlckxpc3RWYWx1ZSh2LCBjbGFzc1R5cGUpKS5qb2luKFwiLFxcblwiKX1cbl1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJMaXN0VmFsdWUodmFsdWU6IGFueSwgc3RvcmFnZUNsYXNzVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN0b3JhZ2VDbGFzc1R5cGUgPT09IFwic3RyaW5nTGlzdFwiKSB7XG4gICAgcmV0dXJuIHJlbmRlclN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgaWYgKHN0b3JhZ2VDbGFzc1R5cGUgPT09IFwibnVtYmVyTGlzdFwiIHx8IHN0b3JhZ2VDbGFzc1R5cGUgPT09IFwiYm9vbGVhbkxpc3RcIikge1xuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlckJsb2NrKHZhbHVlLCBzdG9yYWdlQ2xhc3NUeXBlKTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTWFwKG1hcDogYW55KTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBtYXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICAvLyB0aGlzIGNvdWxkIGJlIGFuIGV4cHJlc3Npb24sIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZVxuICAgIHJldHVybiBgXCIke2VzY2FwZVF1b3RlcyhtYXApfVwiYDtcbiAgfVxuICByZXR1cm4gYHtcbiR7T2JqZWN0LmVudHJpZXMobWFwKVxuICAubWFwKChbaywgdl0pID0+IHtcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gd3JhcElkZW50aWZpZXJJblF1b3Rlc0lmTmVlZGVkKGspO1xuXG4gICAgcmV0dXJuIGAke3dyYXBwZWRLZXl9ID0gJHtyZW5kZXJNYXBWYWx1ZSh2KX1gO1xuICB9KVxuICAuam9pbihcIlxcblwiKX1cbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNYXBWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiByZW5kZXJTdHJpbmcodmFsdWUpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHJlbmRlckxpc3RWYWx1ZSh2YWx1ZSwgXCJ1bmtub3duU3RvcmFnZUNsYXNzXCIpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICB9XG4gICAgcmV0dXJuIHJlbmRlck1hcCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gYCR7dmFsdWV9YDtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUmVzb3VyY2UocmVzb3VyY2U6IGFueSkge1xuICBjb25zdCByZXNvdXJjZVR5cGUgPSBPYmplY3Qua2V5cyhyZXNvdXJjZSlbMF07XG4gIGNvbnN0IHJlc291cmNlc1dpdGhUeXBlID0gcmVzb3VyY2VbcmVzb3VyY2VUeXBlXTtcbiAgY29uc3QgcmVzb3VyY2VOYW1lID0gT2JqZWN0LmtleXMocmVzb3VyY2VzV2l0aFR5cGUpWzBdO1xuICBjb25zdCByZXNvdXJjZUF0dHJpYnV0ZXMgPSByZXNvdXJjZXNXaXRoVHlwZVtyZXNvdXJjZU5hbWVdO1xuXG4gIGlmIChyZXNvdXJjZUF0dHJpYnV0ZXMuY29ubmVjdGlvbikge1xuICAgIHJlc291cmNlQXR0cmlidXRlcy5jb25uZWN0aW9uID0ge1xuICAgICAgdmFsdWU6IHJlc291cmNlQXR0cmlidXRlcy5jb25uZWN0aW9uLFxuICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgeyBwcm92aXNpb25lciwgZHluYW1pYywgLi4ub3RoZXJBdHRycyB9ID0gcmVzb3VyY2VBdHRyaWJ1dGVzO1xuXG4gIGNvbnN0IGhjbCA9IFtgcmVzb3VyY2UgXCIke3Jlc291cmNlVHlwZX1cIiBcIiR7cmVzb3VyY2VOYW1lfVwiIHtgXTtcblxuICBjb25zdCBhdHRycyA9IHJlbmRlckF0dHJpYnV0ZXMob3RoZXJBdHRycyk7XG5cbiAgaWYgKGF0dHJzKSBoY2wucHVzaChhdHRycyk7XG4gIGlmIChwcm92aXNpb25lcikgaGNsLnB1c2gocmVuZGVyUHJvdmlzaW9uZXJCbG9jayhwcm92aXNpb25lcikpO1xuICBpZiAoZHluYW1pYykgaGNsLnB1c2goLi4ucmVuZGVyRHluYW1pY0Jsb2NrcyhkeW5hbWljKSk7XG5cbiAgaGNsLnB1c2goXCJ9XCIpO1xuXG4gIHJldHVybiB7XG4gICAgaGNsOiBoY2wuam9pbihcIlxcblwiKSxcbiAgICBtZXRhZGF0YToge1xuICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgW3Jlc291cmNlVHlwZV06IHtcbiAgICAgICAgICBbcmVzb3VyY2VOYW1lXToge1xuICAgICAgICAgICAgXCIvL1wiOiByZXNvdXJjZUF0dHJpYnV0ZXNbXCIvL1wiXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEYXRhc291cmNlKGRhdGFTb3VyY2U6IGFueSkge1xuICBjb25zdCBkYXRhU291cmNlVHlwZSA9IE9iamVjdC5rZXlzKGRhdGFTb3VyY2UpWzBdO1xuICBjb25zdCBkYXRhU291cmNlc1dpdGhUeXBlID0gZGF0YVNvdXJjZVtkYXRhU291cmNlVHlwZV07XG4gIGNvbnN0IGRhdGFTb3VyY2VOYW1lID0gT2JqZWN0LmtleXMoZGF0YVNvdXJjZXNXaXRoVHlwZSlbMF07XG4gIGNvbnN0IGRhdGFTb3VyY2VBdHRyaWJ1dGVzID0gZGF0YVNvdXJjZXNXaXRoVHlwZVtkYXRhU291cmNlTmFtZV07XG5cbiAgY29uc3QgeyBkeW5hbWljLCAuLi5vdGhlckF0dHJzIH0gPSBkYXRhU291cmNlQXR0cmlidXRlcztcblxuICBjb25zdCBoY2wgPSBbYGRhdGEgXCIke2RhdGFTb3VyY2VUeXBlfVwiIFwiJHtkYXRhU291cmNlTmFtZX1cIiB7YF07XG5cbiAgY29uc3QgYXR0cnMgPSByZW5kZXJBdHRyaWJ1dGVzKG90aGVyQXR0cnMpO1xuICBpZiAoYXR0cnMpIGhjbC5wdXNoKGF0dHJzKTtcbiAgaWYgKGR5bmFtaWMpIGhjbC5wdXNoKC4uLnJlbmRlckR5bmFtaWNCbG9ja3MoZHluYW1pYykpO1xuICBoY2wucHVzaChcIn1cIik7XG5cbiAgcmV0dXJuIHtcbiAgICBoY2w6IGhjbC5qb2luKFwiXFxuXCIpLFxuICAgIG1ldGFkYXRhOiB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtkYXRhU291cmNlVHlwZV06IHtcbiAgICAgICAgICBbZGF0YVNvdXJjZU5hbWVdOiB7XG4gICAgICAgICAgICBcIi8vXCI6IGRhdGFTb3VyY2VBdHRyaWJ1dGVzW1wiLy9cIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUHJvdmlzaW9uZXJCbG9jayhwcm92aXNpb25lcnM6IGFueSkge1xuICByZXR1cm4gcHJvdmlzaW9uZXJzXG4gICAgLm1hcCgocHJvdmlzaW9uZXI6IGFueSkgPT4ge1xuICAgICAgY29uc3QgcHJvdmlzaW9uZXJUeXBlID0gT2JqZWN0LmtleXMocHJvdmlzaW9uZXIpWzBdO1xuICAgICAgY29uc3QgcHJvdmlzaW9uZXJBdHRycyA9IHByb3Zpc2lvbmVyW3Byb3Zpc2lvbmVyVHlwZV07XG5cbiAgICAgIGlmIChwcm92aXNpb25lckF0dHJzLmNvbm5lY3Rpb24pIHtcbiAgICAgICAgcHJvdmlzaW9uZXJBdHRycy5jb25uZWN0aW9uID0ge1xuICAgICAgICAgIHZhbHVlOiBwcm92aXNpb25lckF0dHJzLmNvbm5lY3Rpb24sXG4gICAgICAgICAgaXNCbG9jazogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBkeW5hbWljLCAuLi5vdGhlckF0dHJzIH0gPSBwcm92aXNpb25lckF0dHJzO1xuXG4gICAgICBjb25zdCBoY2wgPSBbYHByb3Zpc2lvbmVyIFwiJHtwcm92aXNpb25lclR5cGV9XCIge2BdO1xuXG4gICAgICBjb25zdCBhdHRycyA9IHJlbmRlckF0dHJpYnV0ZXMob3RoZXJBdHRycy52YWx1ZSB8fCBvdGhlckF0dHJzKTtcbiAgICAgIGlmIChhdHRycykgaGNsLnB1c2goYXR0cnMpO1xuICAgICAgaWYgKGR5bmFtaWMpIGhjbC5wdXNoKC4uLnJlbmRlckR5bmFtaWNCbG9ja3MoZHluYW1pYykpO1xuICAgICAgaGNsLnB1c2goXCJ9XCIpO1xuXG4gICAgICByZXR1cm4gaGNsLmpvaW4oXCJcXG5cIik7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblxcblwiKTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRHluYW1pY0Jsb2NrcyhkeW5hbWljOiBhbnkpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGR5bmFtaWMpLm1hcChcbiAgICAoW2R5bmFtaWNOYW1lLCBkeW5hbWljQXR0cnNdOiBbc3RyaW5nLCBhbnldKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBbYGR5bmFtaWMgXCIke2R5bmFtaWNOYW1lfVwiIHtgXTtcbiAgICAgIHJlcy5wdXNoKFxuICAgICAgICBgZm9yX2VhY2ggPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24oZHluYW1pY0F0dHJzPy5mb3JfZWFjaCl9YCxcbiAgICAgICk7XG4gICAgICBpZiAoZHluYW1pY0F0dHJzPy5pdGVyYXRvcikge1xuICAgICAgICByZXMucHVzaChgaXRlcmF0b3IgPSAke2R5bmFtaWNBdHRycz8uaXRlcmF0b3J9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZHluYW1pY0F0dHJzPy5sYWJlbHMpIHtcbiAgICAgICAgcmVzLnB1c2goYGxhYmVscyA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbihkeW5hbWljQXR0cnM/LmxhYmVscyl9YCk7XG4gICAgICB9XG4gICAgICByZXMucHVzaChgY29udGVudCB7XG4gICR7cmVuZGVyQXR0cmlidXRlcyhkeW5hbWljQXR0cnMuY29udGVudCl9XG4gIH1gKTtcbiAgICAgIHJlcy5wdXNoKGB9YCk7XG5cbiAgICAgIHJldHVybiByZXMuam9pbihcIlxcblwiKTtcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQcm92aWRlcihwcm92aWRlcjogYW55KSB7XG4gIGNvbnN0IHByb3ZpZGVyTmFtZSA9IE9iamVjdC5rZXlzKHByb3ZpZGVyKVswXTtcbiAgY29uc3QgcHJvdmlkZXJBdHRyaWJ1dGVzID0gcHJvdmlkZXJbcHJvdmlkZXJOYW1lXTtcblxuICByZXR1cm4gcHJvdmlkZXJBdHRyaWJ1dGVzXG4gICAgLm1hcCgocHJvdmlkZXJJbnN0YW5jZTogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGR5bmFtaWMsIC4uLm90aGVyQXR0cnMgfSA9IHByb3ZpZGVySW5zdGFuY2U7XG5cbiAgICAgIGNvbnN0IGhjbCA9IFtgcHJvdmlkZXIgXCIke3Byb3ZpZGVyTmFtZX1cIiB7YF07XG5cbiAgICAgIGNvbnN0IGF0dHJzID0gcmVuZGVyQXR0cmlidXRlcyhvdGhlckF0dHJzKTtcbiAgICAgIGlmIChhdHRycykgaGNsLnB1c2goYXR0cnMpO1xuICAgICAgaWYgKGR5bmFtaWMpIGhjbC5wdXNoKC4uLnJlbmRlckR5bmFtaWNCbG9ja3MoZHluYW1pYykpO1xuXG4gICAgICBoY2wucHVzaChcIn1cIik7XG5cbiAgICAgIHJldHVybiBoY2wuam9pbihcIlxcblwiKTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXFxuXCIpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNb2R1bGUobW9kdWxlOiBhbnkpIHtcbiAgY29uc3QgbW9kdWxlTmFtZSA9IE9iamVjdC5rZXlzKG1vZHVsZSlbMF07XG4gIGNvbnN0IG1vZHVsZUF0dHJpYnV0ZXMgPSBtb2R1bGVbbW9kdWxlTmFtZV07XG5cbiAgcmV0dXJuIHtcbiAgICBoY2w6IGBtb2R1bGUgXCIke21vZHVsZU5hbWV9XCIge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKG1vZHVsZUF0dHJpYnV0ZXMpfVxufWAsXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIG1vZHVsZToge1xuICAgICAgICBbbW9kdWxlTmFtZV06IHtcbiAgICAgICAgICBcIi8vXCI6IG1vZHVsZUF0dHJpYnV0ZXNbXCIvL1wiXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyT3V0cHV0KG91dHB1dDogYW55KSB7XG4gIGNvbnN0IG91dHB1dE5hbWUgPSBPYmplY3Qua2V5cyhvdXRwdXQpWzBdO1xuICBjb25zdCBvdXRwdXRBdHRyaWJ1dGVzID0gb3V0cHV0W291dHB1dE5hbWVdO1xuXG4gIHJldHVybiBgb3V0cHV0IFwiJHtvdXRwdXROYW1lfVwiIHtcbiR7cmVuZGVyQXR0cmlidXRlcyhvdXRwdXRBdHRyaWJ1dGVzKX1cbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJMb2NhbHMobG9jYWxzOiBhbnkpIHtcbiAgaWYgKCFsb2NhbHMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsTmFtZXMgPSBPYmplY3Qua2V5cyhsb2NhbHMpO1xuXG4gIGlmIChsb2NhbE5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIGBsb2NhbHMge1xuICAgICR7bG9jYWxOYW1lc1xuICAgICAgLmZpbHRlcigobmFtZSkgPT4gISFsb2NhbHNbbmFtZV0udmFsdWUpXG4gICAgICAubWFwKChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKGxvY2Fsc1tuYW1lXS52YWx1ZSk7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7dmFsdWV9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbihcIlxcblwiKX1cbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJWYXJpYWJsZSh2YXJpYWJsZTogYW55KSB7XG4gIGNvbnN0IHZhcmlhYmxlTmFtZSA9IE9iamVjdC5rZXlzKHZhcmlhYmxlKVswXTtcbiAgY29uc3QgdmFyaWFibGVBdHRyaWJ1dGVzID0gdmFyaWFibGVbdmFyaWFibGVOYW1lXTtcblxuICByZXR1cm4gYHZhcmlhYmxlIFwiJHt2YXJpYWJsZU5hbWV9XCIge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKHZhcmlhYmxlQXR0cmlidXRlcyl9XG59YDtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTW92ZWQobW92ZTogYW55KSB7XG4gIGNvbnN0IG1vdmVkQmxvY2tzID0gbW92ZS5tYXAoKG1vdmVCbG9jazogYW55KSA9PiB7XG4gICAgcmV0dXJuIGBtb3ZlZCB7XG4ke3JlbmRlckF0dHJpYnV0ZXMobW92ZUJsb2NrKX1cbn1gO1xuICB9KTtcblxuICByZXR1cm4gbW92ZWRCbG9ja3Muam9pbihcIlxcblwiKTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVySW1wb3J0KGltcG9ydHM6IGFueSkge1xuICBjb25zdCBpbXBvcnRCbG9ja3MgPSBpbXBvcnRzLm1hcCgoaW1wb3J0QmxvY2s6IGFueSkgPT4ge1xuICAgIHJldHVybiBgaW1wb3J0IHtcbiR7cmVuZGVyQXR0cmlidXRlcyhpbXBvcnRCbG9jayl9XG59YDtcbiAgfSk7XG5cbiAgcmV0dXJuIGltcG9ydEJsb2Nrcy5qb2luKFwiXFxuXCIpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJUZXJyYWZvcm0odGVycmFmb3JtOiBhbnkpIHtcbiAgY29uc3QgYmxvY2tBdHRyaWJ1dGVzID0gW1wicmVxdWlyZWRfcHJvdmlkZXJzXCIsIFwiYmFja2VuZFwiLCBcImNsb3VkXCJdO1xuICBjb25zdCByZXF1aXJlZFByb3ZpZGVycyA9IGByZXF1aXJlZF9wcm92aWRlcnMge1xuJHtyZW5kZXJTaW1wbGVBdHRyaWJ1dGVzKHRlcnJhZm9ybS5yZXF1aXJlZF9wcm92aWRlcnMpfVxufWA7XG5cbiAgY29uc3QgYmFja2VuZHMgPSBPYmplY3Qua2V5cyh0ZXJyYWZvcm0uYmFja2VuZCB8fCB7fSkubWFwKChiYWNrZW5kTmFtZSkgPT4ge1xuICAgIHJldHVybiBgYmFja2VuZCBcIiR7YmFja2VuZE5hbWV9XCIge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKHRlcnJhZm9ybS5iYWNrZW5kW2JhY2tlbmROYW1lXSl9XG59YDtcbiAgfSk7XG5cbiAgY29uc3QgY2xvdWRCYWNrZW5kID0gdGVycmFmb3JtLmNsb3VkXG4gICAgPyBgY2xvdWQge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKHRlcnJhZm9ybS5jbG91ZCl9XG59YFxuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IG90aGVyQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKHRlcnJhZm9ybSkuZmlsdGVyKFxuICAgIChrZXkpID0+ICFibG9ja0F0dHJpYnV0ZXMuaW5jbHVkZXMoa2V5KSxcbiAgKTtcbiAgcmV0dXJuIGB0ZXJyYWZvcm0ge1xuJHtyZXF1aXJlZFByb3ZpZGVyc31cbiR7Wy4uLmJhY2tlbmRzLCBjbG91ZEJhY2tlbmRdLmpvaW4oXCJcXG5cIil9XG4ke3JlbmRlclNpbXBsZUF0dHJpYnV0ZXMob3RoZXJBdHRyaWJ1dGVzKX1cbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCbG9jayhibG9jazogYW55LCBfc3RvcmFnZUNsYXNzVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGB7XG4ke3JlbmRlckF0dHJpYnV0ZXMoYmxvY2spfVxufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVuZGVyRnV6enlKc29uT2JqZWN0KGpzb25PYmplY3Q6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBbXG4gICAgXCJ7XCIsXG4gICAgLi4uT2JqZWN0LmVudHJpZXMoanNvbk9iamVjdCkubWFwKChbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCB3cmFwcGVkS2V5ID0gd3JhcElkZW50aWZpZXJJblF1b3Rlc0lmTmVlZGVkKG5hbWUpO1xuICAgICAgcmV0dXJuIGAke3dyYXBwZWRLZXl9ID0gJHtyZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKHZhbHVlKX1gO1xuICAgIH0pLFxuICAgIFwifVwiLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24oanNvbkV4cHJlc3Npb246IGFueSk6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KGpzb25FeHByZXNzaW9uKSkge1xuICAgIHJldHVybiBbXG4gICAgICBcIltcIixcbiAgICAgIC4uLmpzb25FeHByZXNzaW9uLm1hcCgodmFsdWUpID0+IGAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odmFsdWUpfSxgKSxcbiAgICAgIFwiXVwiLFxuICAgIF0uam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YganNvbkV4cHJlc3Npb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gcmVuZGVyRnV6enlKc29uT2JqZWN0KGpzb25FeHByZXNzaW9uKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YganNvbkV4cHJlc3Npb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAoanNvbkV4cHJlc3Npb24gPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBgXCJcImA7XG4gICAgfVxuXG4gICAgaWYgKGpzb25FeHByZXNzaW9uLmluY2x1ZGVzKFwiJHtcIikpIHtcbiAgICAgIHJldHVybiBgXCIke2pzb25FeHByZXNzaW9ufVwiYDtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VJbnQoanNvbkV4cHJlc3Npb24sIDEwKS50b1N0cmluZygpID09PSBqc29uRXhwcmVzc2lvbikge1xuICAgICAgcmV0dXJuIGpzb25FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGlmIChqc29uRXhwcmVzc2lvbi5zdGFydHNXaXRoKFwiW1wiKSkge1xuICAgICAgcmV0dXJuIGpzb25FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGlmIChqc29uRXhwcmVzc2lvbi5zdGFydHNXaXRoKFwie1wiKSkge1xuICAgICAgcmV0dXJuIGpzb25FeHByZXNzaW9uO1xuICAgIH1cblxuICAgIGlmIChqc29uRXhwcmVzc2lvbi5zdGFydHNXaXRoKCdcIicpKSB7XG4gICAgICByZXR1cm4ganNvbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGBcIiR7ZXNjYXBlUXVvdGVzKGpzb25FeHByZXNzaW9uKX1cImA7XG4gIH1cblxuICBpZiAoanNvbkV4cHJlc3Npb24gPT09IFwidHJ1ZVwiIHx8IGpzb25FeHByZXNzaW9uID09PSBcImZhbHNlXCIpIHtcbiAgICByZXR1cm4ganNvbkV4cHJlc3Npb24gYXMgc3RyaW5nO1xuICB9XG5cbiAgaWYgKGpzb25FeHByZXNzaW9uID09PSBcIm51bGxcIikge1xuICAgIHJldHVybiBqc29uRXhwcmVzc2lvbjtcbiAgfVxuXG4gIHJldHVybiBgJHtqc29uRXhwcmVzc2lvbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJTaW1wbGVBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IHN0cmluZyB7XG4gIGlmIChhdHRyaWJ1dGVzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKVxuICAgIC5tYXAoXG4gICAgICAoW25hbWUsIHZhbHVlXSkgPT5cbiAgICAgICAgYCAgJHtuYW1lfSA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2YWx1ZSBhcyBhbnkpfWAsXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoYXR0cmlidXRlcyA9PT0gdW5kZWZpbmVkIHx8IGF0dHJpYnV0ZXMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcylcbiAgICAubWFwKChbbmFtZSwgdl0pID0+IHtcbiAgICAgIGlmIChuYW1lID09PSBcIi8vXCIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1ldGFCbG9ja3MgPSBbXCJsaWZlY3ljbGVcIiwgXCJwcm92aXNpb25lclwiXTtcblxuICAgICAgLy9cbiAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgc29tZSBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2ZSB0eXBlIGluZm9ybWF0aW9uXG4gICAgICAvLyBqdXN0IHRyeSB0byBndWVzcyB0aGVtXG4gICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHtyZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKHYpfWA7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3Z9YDtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odil9YDtcbiAgICAgIH0gZWxzZSBpZiAodiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSBudWxsYDtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgIXYuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKSAmJlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgICF2Lmhhc093blByb3BlcnR5KFwiZHluYW1pY1wiKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChtZXRhQmxvY2tzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAke25hbWV9IHtcbiR7cmVuZGVyU2ltcGxlQXR0cmlidXRlcyh2KX1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2KX1gO1xuICAgICAgfSBlbHNlIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVmZXJlbmNpbmcgYm90aCBpc0Jsb2NrIGFuZCBpc19ibG9jaywgYmVjYXVzZSBzb21ldGltZXMgd2UgcGFzcyB0aHJvdWdoIGEgc25ha2UgY2FzZSBmaWx0ZXJcbiAgICAgIC8vIHdpdGhpbiBhdHRyaWJ1dGVzLlxuICAgICAgY29uc3Qge1xuICAgICAgICBkeW5hbWljLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaXNCbG9jayxcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZSxcbiAgICAgICAgaXNfYmxvY2ssXG4gICAgICAgIHN0b3JhZ2VfY2xhc3NfdHlwZSxcbiAgICAgIH0gPSB2IGFzIGFueTtcbiAgICAgIGNvbnN0IGJsb2NrID0gaXNCbG9jayB8fCBpc19ibG9jayB8fCBtZXRhQmxvY2tzLmluY2x1ZGVzKG5hbWUpO1xuICAgICAgY29uc3QgY2xhc3NUeXBlID0gc3RvcmFnZUNsYXNzVHlwZSB8fCBzdG9yYWdlX2NsYXNzX3R5cGU7XG5cbiAgICAgIGlmIChkeW5hbWljKSB7XG4gICAgICAgIHJldHVybiByZW5kZXJEeW5hbWljQmxvY2tzKHtcbiAgICAgICAgICBbbmFtZV06IGR5bmFtaWMudmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gU2hvcnQgY2lyY3VpdCB0eXBlIGNoZWNraW5nIGlmIHZhbHVlIGlzIGFuIGV4cHJlc3Npb25cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUuaW5jbHVkZXMoXCIke1wiKSkge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlclN0cmluZyh2YWx1ZSl9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKGJsb2NrICYmIHR5cGUgIT09IFwibGlzdFwiICYmIHR5cGUgIT09IFwic2V0XCIpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IHtcbiR7cmVuZGVyQXR0cmlidXRlcyh2YWx1ZSl9XG59YDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSBcImxpc3RcIiB8fCB0eXBlID09PSBcInNldFwiKSB7XG4gICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgIHJldHVybiByZW5kZXJMaXN0KHYsIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyTGlzdCh2KX1gO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwibWFwXCIpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHtyZW5kZXJNYXAodmFsdWUpfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcInNpbXBsZVwiKSB7XG4gICAgICAgIGlmIChjbGFzc1R5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlclN0cmluZyh2YWx1ZSl9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xhc3NUeXBlID09PSBcIm51bWJlclwiIHx8IGNsYXNzVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3ZhbHVlfWA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3Qgc3VyZSB3aHkgd2UncmUgaGVyZSwgYnV0IHRoZXJlJ3MgZWl0aGVyIGEgYnVnIGluIHRoZSBwcm92aWRlclxuICAgICAgICAvLyBvciB3ZSBoYXZlIHNraXBwZWQgdGhlIGF0dHJpYnV0ZSB0byByZWR1Y2UgdGhlIHNpemUgb2Ygb3VyIHByb3ZpZGVyXG4gICAgICAgIC8vIEluIGVpdGhlciBjYXNlLCB3ZSBzaG91bGQgdHJ5IHRvIG5vdCBvdXRwdXQgW29iamVjdCBPYmplY3RdIGhlcmVcbiAgICAgICAgLy8gYW5kIHRyeSBhIGJlc3QgYXBwcm94aW1hdGlvbi4gVGhvdWdoLCBpdCB3b3VsZCBub3Qgd29yayBmb3JcbiAgICAgICAgLy8gYmxvY2tzXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICByZXR1cm4gYFxuIyBXYXJuaW5nOiBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZSBpcyBvZiBhbiB1bmV4cGVjdGVkIHR5cGUuIEVpdGhlciB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRoZSBwcm92aWRlclxuIyBvciBDREtUTiBoYXMgY2hvc2VuIHRvIHNraXAgZ2VuZXJhdGluZyBhIGRldGFpbGVkIHR5cGUgZm9yIHRoaXMgYmVjYXVzZSBpdCBpbmNyZWFzZXMgdGhlIHNpemUgb2YgdGhlIHByb3ZpZGVyIGxpYnJhcnkgc2lnbmlmaWNhbnRseS4gXG4jIFBsZWFzZSBjaGVjayBpZiB0aGlzIHJlc291cmNlIGlzIGluY2x1ZGVkIGluIG91ciBza2lwIGxpc3Q6IFxuIyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi8xZmI4NTg4MDk1YTU1ZDQ3NWRjNGJlMjg4ODJlYzRmNDIwMDZlYzhkL3BhY2thZ2VzLyU0MGNka3RmL3Byb3ZpZGVyLWdlbmVyYXRvci9saWIvZ2V0L2dlbmVyYXRvci9za2lwcGVkLWF0dHJpYnV0ZXMudHNcbiMgYW5kIGlmIG5vdCwgcGxlYXNlIGNoZWNrIHdpdGggdGhlIHByb3ZpZGVyIGF1dGhvcnMgdG8gc2VlIGlmIHRoZSBwcm92aWRlciBzY2hlbWEgaXMgYWNjdXJhdGUuXG4jIFxuIyBXZSB1bmRlcnN0YW5kIHRoaXMgaXMgbm90IGlkZWFsLCBzbyB3ZSBzdWdnZXN0IHVzaW5nIEpTT04gc3ludGhlc2lzIGluc3RlYWQgb2YgSENMIHN5bnRoZXNpcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNhc2UuXG5cbiR7bmFtZX0gPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odmFsdWUpfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gXCJhbnlcIikge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odmFsdWUpfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcInJlZmVyZW5jZVwiKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHt2YWx1ZX1gO1xuICAgIH0pXG4gICAgLmZpbHRlcigodikgPT4gdiAhPT0gdW5kZWZpbmVkKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuIl19
625
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hjbC9yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvREEsNENBNkNDO0FBS0QsZ0NBZ0RDO0FBS0QsMENBU0M7QUFLRCw4QkFjQztBQUtELHdDQXNCQztBQUtELHdDQXFDQztBQUtELDRDQTJCQztBQUtELHdEQXlCQztBQUtELGtEQXFCQztBQUtELHdDQW1CQztBQUtELG9DQWdCQztBQUtELG9DQU9DO0FBS0Qsb0NBb0JDO0FBS0Qsd0NBT0M7QUFLRCxrQ0FRQztBQUtELG9DQVFDO0FBS0QsMENBMEJDO0FBS0Qsa0NBSUM7QUF5RUQsd0RBV0M7QUFJRCw0Q0FzSEM7QUFsc0JEOzs7R0FHRztBQUNILDJDQUErQztBQUUvQzs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsbURBQW1EO0lBQ25ELElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyw4QkFBOEIsQ0FBQyxHQUFXO0lBQ2pELE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsR0FBVztJQUMvQixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTyxHQUFHLEtB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LFNBQVMsRUFBRSxDQUFDO2dCQUN0RCxPQUFPLEdBQUcsSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFFRCxvRUFBb0U7WUFDcEUsc0VBQXNFO1lBQ3RFLG1FQUFtRTtZQUNuRSw4REFBOEQ7WUFDOUQsU0FBUztZQUNULElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzlCLE9BQU87Ozs7Ozs7OztFQVNmLElBQUksTUFBTSx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7Q0FDM0MsQ0FBQztZQUNNLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxHQUFHLElBQUksTUFBTSx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN6QixPQUFPLEdBQUcsSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQztTQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cbmltcG9ydCB7IFRva2VuaXphdGlvbiB9IGZyb20gXCIuLi90b2tlbnMvdG9rZW5cIjtcblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBlc2NhcGVRdW90ZXMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBEb24ndCBhdHRlbXB0IHRvIGVzY2FwZSBpZiB3ZSBoYXZlIGFuIGV4cHJlc3Npb25cbiAgaWYgKHN0ci5tYXRjaCgvXFwkXFx7LykpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKD88IVxcXFwpXCIvZywgJ1xcXFxcIicpO1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIHdyYXBJZGVudGlmaWVySW5RdW90ZXNJZk5lZWRlZChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiAvKF5cXGQpfFteQS1aYS16MC05Xy1dLy50ZXN0KGtleSkgPyBgXCIke2tleX1cImAgOiBrZXk7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN0ciA9PT0gXCJcIikge1xuICAgIHJldHVybiBgXCJcImA7XG4gIH1cblxuICBpZiAoIXN0cikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIHByb2Nlc3MgYXR0cmlidXRlIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBhIHN0cmluZywgYnV0IGlzbid0XCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGxpbmVzID0gc3RyLnNwbGl0KC9cXHJcXG58W1xcblxccl0vKTtcblxuICBpZiAobGluZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYFwiJHtlc2NhcGVRdW90ZXMoc3RyKX1cImA7XG5cbiAgcmV0dXJuIGA8PEVPRlxcbiR7bGluZXMuam9pbihcIlxcblwiKX1cXG5FT0ZgO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkZvck1ldGFkYXRhKGJsb2NrOiBhbnkpOiBhbnkge1xuICBjb25zdCByZXM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgaWYgKHR5cGVvZiBibG9jayAhPT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShibG9jaykpIHtcbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShibG9jaykpIHtcbiAgICByZXR1cm4gYmxvY2subWFwKChpKSA9PiBjbGVhbkZvck1ldGFkYXRhKGkpKTtcbiAgfVxuXG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhibG9jayk7XG5cbiAgaWYgKGtleXMuaW5jbHVkZXMoXCJ2YWx1ZVwiKSkge1xuICAgIHJldHVybiBjbGVhbkZvck1ldGFkYXRhKGJsb2NrLnZhbHVlKTtcbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGJsb2NrW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGEgcmVzb2x2YWJsZSB3ZSBkb24ndCB3YW50IHRvIHJlY3Vyc2UgaW50byBpdFxuICAgICAgaWYgKFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICAgIHJlc1trZXldID0ge307XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICByZXNba2V5XSA9IGNsZWFuRm9yTWV0YWRhdGEodmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgdmFsdWUgIT0gbnVsbCAmJlxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICApIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc1trZXldKSkge1xuICAgICAgICByZXNba2V5XSA9IFsuLi5yZXNba2V5XSwgLi4udmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSByZXNba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTGlzdCh2OiBhbnksIG5hbWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB7IGlzQmxvY2ssIGlzX2Jsb2NrLCB2YWx1ZSwgc3RvcmFnZV9jbGFzc190eXBlLCBzdG9yYWdlQ2xhc3NUeXBlIH0gPSB2O1xuICBjb25zdCBibG9jayA9IGlzQmxvY2sgfHwgaXNfYmxvY2s7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IHN0b3JhZ2VDbGFzc1R5cGUgfHwgc3RvcmFnZV9jbGFzc190eXBlO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gdGhpcyBjb3VsZCBiZSBhbiBleHByZXNzaW9uLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmVcbiAgICByZXR1cm4gcmVuZGVyU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChuYW1lKSB7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSB7YCArIGBcXG4ke3JlbmRlckF0dHJpYnV0ZXModmFsdWUpfVxcbn1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgLm1hcCgodjogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke25hbWV9IHtgICsgYFxcbiR7cmVuZGVyQXR0cmlidXRlcyh2KX1cXG59YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHtyZW5kZXJMaXN0VmFsdWUodmFsdWUsIGNsYXNzVHlwZSl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7bmFtZX0gPSBbXG4ke3ZhbHVlLm1hcCgodjogYW55KSA9PiByZW5kZXJMaXN0VmFsdWUodiwgY2xhc3NUeXBlKSkuam9pbihcIixcXG5cIil9XG5dYDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBBIGxpc3QgdHlwZSBvZiBvbmx5IGEgc2luZ2xlIGl0ZW1cbiAgICByZXR1cm4gcmVuZGVyTGlzdFZhbHVlKHZhbHVlLCBjbGFzc1R5cGUpO1xuICB9XG5cbiAgaWYgKGJsb2NrKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgodjogYW55KSA9PiByZW5kZXJMaXN0VmFsdWUodiwgY2xhc3NUeXBlKSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBgW1xuJHt2YWx1ZS5tYXAoKHY6IGFueSkgPT4gcmVuZGVyTGlzdFZhbHVlKHYsIGNsYXNzVHlwZSkpLmpvaW4oXCIsXFxuXCIpfVxuXWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckxpc3RWYWx1ZSh2YWx1ZTogYW55LCBzdG9yYWdlQ2xhc3NUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3RvcmFnZUNsYXNzVHlwZSA9PT0gXCJzdHJpbmdMaXN0XCIpIHtcbiAgICByZXR1cm4gcmVuZGVyU3RyaW5nKHZhbHVlKTtcbiAgfVxuICBpZiAoc3RvcmFnZUNsYXNzVHlwZSA9PT0gXCJudW1iZXJMaXN0XCIgfHwgc3RvcmFnZUNsYXNzVHlwZSA9PT0gXCJib29sZWFuTGlzdFwiKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIH1cblxuICByZXR1cm4gcmVuZGVyQmxvY2sodmFsdWUsIHN0b3JhZ2VDbGFzc1R5cGUpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNYXAobWFwOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIG1hcCA9PT0gXCJzdHJpbmdcIikge1xuICAgIC8vIHRoaXMgY291bGQgYmUgYW4gZXhwcmVzc2lvbiwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlXG4gICAgcmV0dXJuIGBcIiR7ZXNjYXBlUXVvdGVzKG1hcCl9XCJgO1xuICB9XG4gIHJldHVybiBge1xuJHtPYmplY3QuZW50cmllcyhtYXApXG4gIC5tYXAoKFtrLCB2XSkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSB3cmFwSWRlbnRpZmllckluUXVvdGVzSWZOZWVkZWQoayk7XG5cbiAgICByZXR1cm4gYCR7d3JhcHBlZEtleX0gPSAke3JlbmRlck1hcFZhbHVlKHYpfWA7XG4gIH0pXG4gIC5qb2luKFwiXFxuXCIpfVxufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1hcFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHJlbmRlclN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gcmVuZGVyTGlzdFZhbHVlKHZhbHVlLCBcInVua25vd25TdG9yYWdlQ2xhc3NcIik7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgIH1cbiAgICByZXR1cm4gcmVuZGVyTWFwKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBgJHt2YWx1ZX1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJSZXNvdXJjZShyZXNvdXJjZTogYW55KSB7XG4gIGNvbnN0IHJlc291cmNlVHlwZSA9IE9iamVjdC5rZXlzKHJlc291cmNlKVswXTtcbiAgY29uc3QgcmVzb3VyY2VzV2l0aFR5cGUgPSByZXNvdXJjZVtyZXNvdXJjZVR5cGVdO1xuICBjb25zdCByZXNvdXJjZU5hbWUgPSBPYmplY3Qua2V5cyhyZXNvdXJjZXNXaXRoVHlwZSlbMF07XG4gIGNvbnN0IHJlc291cmNlQXR0cmlidXRlcyA9IHJlc291cmNlc1dpdGhUeXBlW3Jlc291cmNlTmFtZV07XG5cbiAgaWYgKHJlc291cmNlQXR0cmlidXRlcy5jb25uZWN0aW9uKSB7XG4gICAgcmVzb3VyY2VBdHRyaWJ1dGVzLmNvbm5lY3Rpb24gPSB7XG4gICAgICB2YWx1ZTogcmVzb3VyY2VBdHRyaWJ1dGVzLmNvbm5lY3Rpb24sXG4gICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB7IHByb3Zpc2lvbmVyLCBkeW5hbWljLCAuLi5vdGhlckF0dHJzIH0gPSByZXNvdXJjZUF0dHJpYnV0ZXM7XG5cbiAgY29uc3QgaGNsID0gW2ByZXNvdXJjZSBcIiR7cmVzb3VyY2VUeXBlfVwiIFwiJHtyZXNvdXJjZU5hbWV9XCIge2BdO1xuXG4gIGNvbnN0IGF0dHJzID0gcmVuZGVyQXR0cmlidXRlcyhvdGhlckF0dHJzKTtcblxuICBpZiAoYXR0cnMpIGhjbC5wdXNoKGF0dHJzKTtcbiAgaWYgKHByb3Zpc2lvbmVyKSBoY2wucHVzaChyZW5kZXJQcm92aXNpb25lckJsb2NrKHByb3Zpc2lvbmVyKSk7XG4gIGlmIChkeW5hbWljKSBoY2wucHVzaCguLi5yZW5kZXJEeW5hbWljQmxvY2tzKGR5bmFtaWMpKTtcblxuICBoY2wucHVzaChcIn1cIik7XG5cbiAgcmV0dXJuIHtcbiAgICBoY2w6IGhjbC5qb2luKFwiXFxuXCIpLFxuICAgIG1ldGFkYXRhOiB7XG4gICAgICByZXNvdXJjZToge1xuICAgICAgICBbcmVzb3VyY2VUeXBlXToge1xuICAgICAgICAgIFtyZXNvdXJjZU5hbWVdOiB7XG4gICAgICAgICAgICBcIi8vXCI6IHJlc291cmNlQXR0cmlidXRlc1tcIi8vXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRhdGFzb3VyY2UoZGF0YVNvdXJjZTogYW55KSB7XG4gIGNvbnN0IGRhdGFTb3VyY2VUeXBlID0gT2JqZWN0LmtleXMoZGF0YVNvdXJjZSlbMF07XG4gIGNvbnN0IGRhdGFTb3VyY2VzV2l0aFR5cGUgPSBkYXRhU291cmNlW2RhdGFTb3VyY2VUeXBlXTtcbiAgY29uc3QgZGF0YVNvdXJjZU5hbWUgPSBPYmplY3Qua2V5cyhkYXRhU291cmNlc1dpdGhUeXBlKVswXTtcbiAgY29uc3QgZGF0YVNvdXJjZUF0dHJpYnV0ZXMgPSBkYXRhU291cmNlc1dpdGhUeXBlW2RhdGFTb3VyY2VOYW1lXTtcblxuICBjb25zdCB7IGR5bmFtaWMsIC4uLm90aGVyQXR0cnMgfSA9IGRhdGFTb3VyY2VBdHRyaWJ1dGVzO1xuXG4gIGNvbnN0IGhjbCA9IFtgZGF0YSBcIiR7ZGF0YVNvdXJjZVR5cGV9XCIgXCIke2RhdGFTb3VyY2VOYW1lfVwiIHtgXTtcblxuICBjb25zdCBhdHRycyA9IHJlbmRlckF0dHJpYnV0ZXMob3RoZXJBdHRycyk7XG4gIGlmIChhdHRycykgaGNsLnB1c2goYXR0cnMpO1xuICBpZiAoZHluYW1pYykgaGNsLnB1c2goLi4ucmVuZGVyRHluYW1pY0Jsb2NrcyhkeW5hbWljKSk7XG4gIGhjbC5wdXNoKFwifVwiKTtcblxuICByZXR1cm4ge1xuICAgIGhjbDogaGNsLmpvaW4oXCJcXG5cIiksXG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2RhdGFTb3VyY2VUeXBlXToge1xuICAgICAgICAgIFtkYXRhU291cmNlTmFtZV06IHtcbiAgICAgICAgICAgIFwiLy9cIjogZGF0YVNvdXJjZUF0dHJpYnV0ZXNbXCIvL1wiXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQcm92aXNpb25lckJsb2NrKHByb3Zpc2lvbmVyczogYW55KSB7XG4gIHJldHVybiBwcm92aXNpb25lcnNcbiAgICAubWFwKChwcm92aXNpb25lcjogYW55KSA9PiB7XG4gICAgICBjb25zdCBwcm92aXNpb25lclR5cGUgPSBPYmplY3Qua2V5cyhwcm92aXNpb25lcilbMF07XG4gICAgICBjb25zdCBwcm92aXNpb25lckF0dHJzID0gcHJvdmlzaW9uZXJbcHJvdmlzaW9uZXJUeXBlXTtcblxuICAgICAgaWYgKHByb3Zpc2lvbmVyQXR0cnMuY29ubmVjdGlvbikge1xuICAgICAgICBwcm92aXNpb25lckF0dHJzLmNvbm5lY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IHByb3Zpc2lvbmVyQXR0cnMuY29ubmVjdGlvbixcbiAgICAgICAgICBpc0Jsb2NrOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGR5bmFtaWMsIC4uLm90aGVyQXR0cnMgfSA9IHByb3Zpc2lvbmVyQXR0cnM7XG5cbiAgICAgIGNvbnN0IGhjbCA9IFtgcHJvdmlzaW9uZXIgXCIke3Byb3Zpc2lvbmVyVHlwZX1cIiB7YF07XG5cbiAgICAgIGNvbnN0IGF0dHJzID0gcmVuZGVyQXR0cmlidXRlcyhvdGhlckF0dHJzLnZhbHVlIHx8IG90aGVyQXR0cnMpO1xuICAgICAgaWYgKGF0dHJzKSBoY2wucHVzaChhdHRycyk7XG4gICAgICBpZiAoZHluYW1pYykgaGNsLnB1c2goLi4ucmVuZGVyRHluYW1pY0Jsb2NrcyhkeW5hbWljKSk7XG4gICAgICBoY2wucHVzaChcIn1cIik7XG5cbiAgICAgIHJldHVybiBoY2wuam9pbihcIlxcblwiKTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXFxuXCIpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEeW5hbWljQmxvY2tzKGR5bmFtaWM6IGFueSkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZHluYW1pYykubWFwKFxuICAgIChbZHluYW1pY05hbWUsIGR5bmFtaWNBdHRyc106IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IFtgZHluYW1pYyBcIiR7ZHluYW1pY05hbWV9XCIge2BdO1xuICAgICAgcmVzLnB1c2goXG4gICAgICAgIGBmb3JfZWFjaCA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbihkeW5hbWljQXR0cnM/LmZvcl9lYWNoKX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChkeW5hbWljQXR0cnM/Lml0ZXJhdG9yKSB7XG4gICAgICAgIHJlcy5wdXNoKGBpdGVyYXRvciA9ICR7ZHluYW1pY0F0dHJzPy5pdGVyYXRvcn1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChkeW5hbWljQXR0cnM/LmxhYmVscykge1xuICAgICAgICByZXMucHVzaChgbGFiZWxzID0gJHtyZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKGR5bmFtaWNBdHRycz8ubGFiZWxzKX1gKTtcbiAgICAgIH1cbiAgICAgIHJlcy5wdXNoKGBjb250ZW50IHtcbiAgJHtyZW5kZXJBdHRyaWJ1dGVzKGR5bmFtaWNBdHRycy5jb250ZW50KX1cbiAgfWApO1xuICAgICAgcmVzLnB1c2goYH1gKTtcblxuICAgICAgcmV0dXJuIHJlcy5qb2luKFwiXFxuXCIpO1xuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclByb3ZpZGVyKHByb3ZpZGVyOiBhbnkpIHtcbiAgY29uc3QgcHJvdmlkZXJOYW1lID0gT2JqZWN0LmtleXMocHJvdmlkZXIpWzBdO1xuICBjb25zdCBwcm92aWRlckF0dHJpYnV0ZXMgPSBwcm92aWRlcltwcm92aWRlck5hbWVdO1xuXG4gIHJldHVybiBwcm92aWRlckF0dHJpYnV0ZXNcbiAgICAubWFwKChwcm92aWRlckluc3RhbmNlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgZHluYW1pYywgLi4ub3RoZXJBdHRycyB9ID0gcHJvdmlkZXJJbnN0YW5jZTtcblxuICAgICAgY29uc3QgaGNsID0gW2Bwcm92aWRlciBcIiR7cHJvdmlkZXJOYW1lfVwiIHtgXTtcblxuICAgICAgY29uc3QgYXR0cnMgPSByZW5kZXJBdHRyaWJ1dGVzKG90aGVyQXR0cnMpO1xuICAgICAgaWYgKGF0dHJzKSBoY2wucHVzaChhdHRycyk7XG4gICAgICBpZiAoZHluYW1pYykgaGNsLnB1c2goLi4ucmVuZGVyRHluYW1pY0Jsb2NrcyhkeW5hbWljKSk7XG5cbiAgICAgIGhjbC5wdXNoKFwifVwiKTtcblxuICAgICAgcmV0dXJuIGhjbC5qb2luKFwiXFxuXCIpO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcXG5cXG5cIik7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShtb2R1bGU6IGFueSkge1xuICBjb25zdCBtb2R1bGVOYW1lID0gT2JqZWN0LmtleXMobW9kdWxlKVswXTtcbiAgY29uc3QgbW9kdWxlQXR0cmlidXRlcyA9IG1vZHVsZVttb2R1bGVOYW1lXTtcblxuICByZXR1cm4ge1xuICAgIGhjbDogYG1vZHVsZSBcIiR7bW9kdWxlTmFtZX1cIiB7XG4ke3JlbmRlckF0dHJpYnV0ZXMobW9kdWxlQXR0cmlidXRlcyl9XG59YCxcbiAgICBtZXRhZGF0YToge1xuICAgICAgbW9kdWxlOiB7XG4gICAgICAgIFttb2R1bGVOYW1lXToge1xuICAgICAgICAgIFwiLy9cIjogbW9kdWxlQXR0cmlidXRlc1tcIi8vXCJdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJPdXRwdXQob3V0cHV0OiBhbnkpIHtcbiAgY29uc3Qgb3V0cHV0TmFtZSA9IE9iamVjdC5rZXlzKG91dHB1dClbMF07XG4gIGNvbnN0IG91dHB1dEF0dHJpYnV0ZXMgPSBvdXRwdXRbb3V0cHV0TmFtZV07XG5cbiAgcmV0dXJuIGBvdXRwdXQgXCIke291dHB1dE5hbWV9XCIge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKG91dHB1dEF0dHJpYnV0ZXMpfVxufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckxvY2Fscyhsb2NhbHM6IGFueSkge1xuICBpZiAoIWxvY2Fscykge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbG9jYWxOYW1lcyA9IE9iamVjdC5rZXlzKGxvY2Fscyk7XG5cbiAgaWYgKGxvY2FsTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICByZXR1cm4gYGxvY2FscyB7XG4gICAgJHtsb2NhbE5hbWVzXG4gICAgICAuZmlsdGVyKChuYW1lKSA9PiAhIWxvY2Fsc1tuYW1lXS52YWx1ZSlcbiAgICAgIC5tYXAoKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24obG9jYWxzW25hbWVdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHt2YWx1ZX1gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKFwiXFxuXCIpfVxufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclZhcmlhYmxlKHZhcmlhYmxlOiBhbnkpIHtcbiAgY29uc3QgdmFyaWFibGVOYW1lID0gT2JqZWN0LmtleXModmFyaWFibGUpWzBdO1xuICBjb25zdCB2YXJpYWJsZUF0dHJpYnV0ZXMgPSB2YXJpYWJsZVt2YXJpYWJsZU5hbWVdO1xuXG4gIHJldHVybiBgdmFyaWFibGUgXCIke3ZhcmlhYmxlTmFtZX1cIiB7XG4ke3JlbmRlckF0dHJpYnV0ZXModmFyaWFibGVBdHRyaWJ1dGVzKX1cbn1gO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNb3ZlZChtb3ZlOiBhbnkpIHtcbiAgY29uc3QgbW92ZWRCbG9ja3MgPSBtb3ZlLm1hcCgobW92ZUJsb2NrOiBhbnkpID0+IHtcbiAgICByZXR1cm4gYG1vdmVkIHtcbiR7cmVuZGVyQXR0cmlidXRlcyhtb3ZlQmxvY2spfVxufWA7XG4gIH0pO1xuXG4gIHJldHVybiBtb3ZlZEJsb2Nrcy5qb2luKFwiXFxuXCIpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbXBvcnQoaW1wb3J0czogYW55KSB7XG4gIGNvbnN0IGltcG9ydEJsb2NrcyA9IGltcG9ydHMubWFwKChpbXBvcnRCbG9jazogYW55KSA9PiB7XG4gICAgcmV0dXJuIGBpbXBvcnQge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKGltcG9ydEJsb2NrKX1cbn1gO1xuICB9KTtcblxuICByZXR1cm4gaW1wb3J0QmxvY2tzLmpvaW4oXCJcXG5cIik7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRlcnJhZm9ybSh0ZXJyYWZvcm06IGFueSkge1xuICBjb25zdCBibG9ja0F0dHJpYnV0ZXMgPSBbXCJyZXF1aXJlZF9wcm92aWRlcnNcIiwgXCJiYWNrZW5kXCIsIFwiY2xvdWRcIl07XG4gIGNvbnN0IHJlcXVpcmVkUHJvdmlkZXJzID0gYHJlcXVpcmVkX3Byb3ZpZGVycyB7XG4ke3JlbmRlclNpbXBsZUF0dHJpYnV0ZXModGVycmFmb3JtLnJlcXVpcmVkX3Byb3ZpZGVycyl9XG59YDtcblxuICBjb25zdCBiYWNrZW5kcyA9IE9iamVjdC5rZXlzKHRlcnJhZm9ybS5iYWNrZW5kIHx8IHt9KS5tYXAoKGJhY2tlbmROYW1lKSA9PiB7XG4gICAgcmV0dXJuIGBiYWNrZW5kIFwiJHtiYWNrZW5kTmFtZX1cIiB7XG4ke3JlbmRlckF0dHJpYnV0ZXModGVycmFmb3JtLmJhY2tlbmRbYmFja2VuZE5hbWVdKX1cbn1gO1xuICB9KTtcblxuICBjb25zdCBjbG91ZEJhY2tlbmQgPSB0ZXJyYWZvcm0uY2xvdWRcbiAgICA/IGBjbG91ZCB7XG4ke3JlbmRlckF0dHJpYnV0ZXModGVycmFmb3JtLmNsb3VkKX1cbn1gXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3Qgb3RoZXJBdHRyaWJ1dGVzID0gT2JqZWN0LmtleXModGVycmFmb3JtKS5maWx0ZXIoXG4gICAgKGtleSkgPT4gIWJsb2NrQXR0cmlidXRlcy5pbmNsdWRlcyhrZXkpLFxuICApO1xuICByZXR1cm4gYHRlcnJhZm9ybSB7XG4ke3JlcXVpcmVkUHJvdmlkZXJzfVxuJHtbLi4uYmFja2VuZHMsIGNsb3VkQmFja2VuZF0uam9pbihcIlxcblwiKX1cbiR7cmVuZGVyU2ltcGxlQXR0cmlidXRlcyhvdGhlckF0dHJpYnV0ZXMpfVxufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckJsb2NrKGJsb2NrOiBhbnksIF9zdG9yYWdlQ2xhc3NUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYHtcbiR7cmVuZGVyQXR0cmlidXRlcyhibG9jayl9XG59YDtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiByZW5kZXJGdXp6eUpzb25PYmplY3QoanNvbk9iamVjdDogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBcIntcIixcbiAgICAuLi5PYmplY3QuZW50cmllcyhqc29uT2JqZWN0KS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZWRLZXkgPSB3cmFwSWRlbnRpZmllckluUXVvdGVzSWZOZWVkZWQobmFtZSk7XG4gICAgICByZXR1cm4gYCR7d3JhcHBlZEtleX0gPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odmFsdWUpfWA7XG4gICAgfSksXG4gICAgXCJ9XCIsXG4gIF0uam9pbihcIlxcblwiKTtcbn1cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbihqc29uRXhwcmVzc2lvbjogYW55KTogc3RyaW5nIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoanNvbkV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiW1wiLFxuICAgICAgLi4uanNvbkV4cHJlc3Npb24ubWFwKCh2YWx1ZSkgPT4gYCR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2YWx1ZSl9LGApLFxuICAgICAgXCJdXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBqc29uRXhwcmVzc2lvbiA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiByZW5kZXJGdXp6eUpzb25PYmplY3QoanNvbkV4cHJlc3Npb24pO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBqc29uRXhwcmVzc2lvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChqc29uRXhwcmVzc2lvbiA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIGBcIlwiYDtcbiAgICB9XG5cbiAgICBpZiAoanNvbkV4cHJlc3Npb24uaW5jbHVkZXMoXCIke1wiKSkge1xuICAgICAgcmV0dXJuIGBcIiR7anNvbkV4cHJlc3Npb259XCJgO1xuICAgIH1cblxuICAgIGlmIChwYXJzZUludChqc29uRXhwcmVzc2lvbiwgMTApLnRvU3RyaW5nKCkgPT09IGpzb25FeHByZXNzaW9uKSB7XG4gICAgICByZXR1cm4ganNvbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKGpzb25FeHByZXNzaW9uLnN0YXJ0c1dpdGgoXCJbXCIpKSB7XG4gICAgICByZXR1cm4ganNvbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKGpzb25FeHByZXNzaW9uLnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG4gICAgICByZXR1cm4ganNvbkV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKGpzb25FeHByZXNzaW9uLnN0YXJ0c1dpdGgoJ1wiJykpIHtcbiAgICAgIHJldHVybiBqc29uRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gYFwiJHtlc2NhcGVRdW90ZXMoanNvbkV4cHJlc3Npb24pfVwiYDtcbiAgfVxuXG4gIGlmIChqc29uRXhwcmVzc2lvbiA9PT0gXCJ0cnVlXCIgfHwganNvbkV4cHJlc3Npb24gPT09IFwiZmFsc2VcIikge1xuICAgIHJldHVybiBqc29uRXhwcmVzc2lvbiBhcyBzdHJpbmc7XG4gIH1cblxuICBpZiAoanNvbkV4cHJlc3Npb24gPT09IFwibnVsbFwiKSB7XG4gICAgcmV0dXJuIGpzb25FeHByZXNzaW9uO1xuICB9XG5cbiAgcmV0dXJuIGAke2pzb25FeHByZXNzaW9ufWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNpbXBsZUF0dHJpYnV0ZXMoYXR0cmlidXRlczogYW55KTogc3RyaW5nIHtcbiAgaWYgKGF0dHJpYnV0ZXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpXG4gICAgLm1hcChcbiAgICAgIChbbmFtZSwgdmFsdWVdKSA9PlxuICAgICAgICBgICAke25hbWV9ID0gJHtyZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKHZhbHVlIGFzIGFueSl9YCxcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG59XG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IGFueSk6IHN0cmluZyB7XG4gIGlmIChhdHRyaWJ1dGVzID09PSB1bmRlZmluZWQgfHwgYXR0cmlidXRlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKVxuICAgIC5tYXAoKFtuYW1lLCB2XSkgPT4ge1xuICAgICAgaWYgKG5hbWUgPT09IFwiLy9cIikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgbWV0YUJsb2NrcyA9IFtcImxpZmVjeWNsZVwiLCBcInByb3Zpc2lvbmVyXCJdO1xuXG4gICAgICAvL1xuICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBzb21lIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBoYXZlIHR5cGUgaW5mb3JtYXRpb25cbiAgICAgIC8vIGp1c3QgdHJ5IHRvIGd1ZXNzIHRoZW1cbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlckZ1enp5SnNvbkV4cHJlc3Npb24odil9YDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7dn1gO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2KX1gO1xuICAgICAgfSBlbHNlIGlmICh2ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9IG51bGxgO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAhdi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpICYmXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgICAgIXYuaGFzT3duUHJvcGVydHkoXCJkeW5hbWljXCIpXG4gICAgICApIHtcbiAgICAgICAgaWYgKG1ldGFCbG9ja3MuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYCR7bmFtZX0ge1xuJHtyZW5kZXJTaW1wbGVBdHRyaWJ1dGVzKHYpfVxufWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHtyZW5kZXJGdXp6eUpzb25FeHByZXNzaW9uKHYpfWA7XG4gICAgICB9IGVsc2UgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWZlcmVuY2luZyBib3RoIGlzQmxvY2sgYW5kIGlzX2Jsb2NrLCBiZWNhdXNlIHNvbWV0aW1lcyB3ZSBwYXNzIHRocm91Z2ggYSBzbmFrZSBjYXNlIGZpbHRlclxuICAgICAgLy8gd2l0aGluIGF0dHJpYnV0ZXMuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGR5bmFtaWMsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0eXBlLFxuICAgICAgICBpc0Jsb2NrLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlLFxuICAgICAgICBpc19ibG9jayxcbiAgICAgICAgc3RvcmFnZV9jbGFzc190eXBlLFxuICAgICAgfSA9IHYgYXMgYW55O1xuICAgICAgY29uc3QgYmxvY2sgPSBpc0Jsb2NrIHx8IGlzX2Jsb2NrIHx8IG1ldGFCbG9ja3MuaW5jbHVkZXMobmFtZSk7XG4gICAgICBjb25zdCBjbGFzc1R5cGUgPSBzdG9yYWdlQ2xhc3NUeXBlIHx8IHN0b3JhZ2VfY2xhc3NfdHlwZTtcblxuICAgICAgaWYgKGR5bmFtaWMpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlckR5bmFtaWNCbG9ja3Moe1xuICAgICAgICAgIFtuYW1lXTogZHluYW1pYy52YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBTaG9ydCBjaXJjdWl0IHR5cGUgY2hlY2tpbmcgaWYgdmFsdWUgaXMgYW4gZXhwcmVzc2lvblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5pbmNsdWRlcyhcIiR7XCIpKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyU3RyaW5nKHZhbHVlKX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAoYmxvY2sgJiYgdHlwZSAhPT0gXCJsaXN0XCIgJiYgdHlwZSAhPT0gXCJzZXRcIikge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0ge1xuJHtyZW5kZXJBdHRyaWJ1dGVzKHZhbHVlKX1cbn1gO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09IFwibGlzdFwiIHx8IHR5cGUgPT09IFwic2V0XCIpIHtcbiAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbmRlckxpc3QodiwgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHtyZW5kZXJMaXN0KHYpfWA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gXCJtYXBcIikge1xuICAgICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3JlbmRlck1hcCh2YWx1ZSl9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09IFwic2ltcGxlXCIpIHtcbiAgICAgICAgaWYgKGNsYXNzVHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyU3RyaW5nKHZhbHVlKX1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjbGFzc1R5cGUgPT09IFwibnVtYmVyXCIgfHwgY2xhc3NUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7dmFsdWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdCBzdXJlIHdoeSB3ZSdyZSBoZXJlLCBidXQgdGhlcmUncyBlaXRoZXIgYSBidWcgaW4gdGhlIHByb3ZpZGVyXG4gICAgICAgIC8vIG9yIHdlIGhhdmUgc2tpcHBlZCB0aGUgYXR0cmlidXRlIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiBvdXIgcHJvdmlkZXJcbiAgICAgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIHNob3VsZCB0cnkgdG8gbm90IG91dHB1dCBbb2JqZWN0IE9iamVjdF0gaGVyZVxuICAgICAgICAvLyBhbmQgdHJ5IGEgYmVzdCBhcHByb3hpbWF0aW9uLiBUaG91Z2gsIGl0IHdvdWxkIG5vdCB3b3JrIGZvclxuICAgICAgICAvLyBibG9ja3NcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIHJldHVybiBgXG4jIFdhcm5pbmc6IFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlIGlzIG9mIGFuIHVuZXhwZWN0ZWQgdHlwZS4gRWl0aGVyIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggdGhlIHByb3ZpZGVyXG4jIG9yIENES1ROIGhhcyBjaG9zZW4gdG8gc2tpcCBnZW5lcmF0aW5nIGEgZGV0YWlsZWQgdHlwZSBmb3IgdGhpcyBiZWNhdXNlIGl0IGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUgcHJvdmlkZXIgbGlicmFyeSBzaWduaWZpY2FudGx5LiBcbiMgUGxlYXNlIGNoZWNrIGlmIHRoaXMgcmVzb3VyY2UgaXMgaW5jbHVkZWQgaW4gb3VyIHNraXAgbGlzdDogXG4jIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iLzFmYjg1ODgwOTVhNTVkNDc1ZGM0YmUyODg4MmVjNGY0MjAwNmVjOGQvcGFja2FnZXMvJTQwY2RrdGYvcHJvdmlkZXItZ2VuZXJhdG9yL2xpYi9nZXQvZ2VuZXJhdG9yL3NraXBwZWQtYXR0cmlidXRlcy50c1xuIyBhbmQgaWYgbm90LCBwbGVhc2UgY2hlY2sgd2l0aCB0aGUgcHJvdmlkZXIgYXV0aG9ycyB0byBzZWUgaWYgdGhlIHByb3ZpZGVyIHNjaGVtYSBpcyBhY2N1cmF0ZS5cbiMgXG4jIFdlIHVuZGVyc3RhbmQgdGhpcyBpcyBub3QgaWRlYWwsIHNvIHdlIHN1Z2dlc3QgdXNpbmcgSlNPTiBzeW50aGVzaXMgaW5zdGVhZCBvZiBIQ0wgc3ludGhlc2lzIGZvciB0aGlzIHBhcnRpY3VsYXIgY2FzZS5cblxuJHtuYW1lfSA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2YWx1ZSl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcImFueVwiKSB7XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSA9ICR7cmVuZGVyRnV6enlKc29uRXhwcmVzc2lvbih2YWx1ZSl9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09IFwicmVmZXJlbmNlXCIpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWV9ID0gJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7bmFtZX0gPSAke3ZhbHVlfWA7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpXG4gICAgLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
@@ -60,5 +60,5 @@ class ImportableResource extends terraform_element_1.TerraformElement {
60
60
  }
61
61
  exports.ImportableResource = ImportableResource;
62
62
  _a = JSII_RTTI_SYMBOL_1;
63
- ImportableResource[_a] = { fqn: "cdktn.ImportableResource", version: "0.23.1" };
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YWJsZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImltcG9ydGFibGUtcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFNQSwyREFBdUQ7QUFFdkQseUZBQW9GO0FBUXBGOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxvQ0FBZ0I7SUFDdEQsWUFDRSxLQUFnQixFQUNoQixJQUFZLEVBQ0ssTUFBeUI7UUFFMUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFGaEMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFHMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQ3JCLElBQUkscURBQXdCLENBQzFCLE9BQU8sRUFDUCw4RkFBOEYsQ0FDL0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDaEcsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxFQUFFLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLHVCQUF1Qjt3QkFDOUIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZ0JBQWdCLEVBQUUsV0FBVztxQkFDOUI7b0JBQ0QsRUFBRSxFQUFFO3dCQUNGLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7d0JBQzNCLElBQUksRUFBRSxRQUFRO3dCQUNkLGdCQUFnQixFQUFFLFFBQVE7cUJBQzNCO29CQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7d0JBQzVCLENBQUMsQ0FBQzs0QkFDRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRzs0QkFDL0IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsZ0JBQWdCLEVBQUUsV0FBVzt5QkFDOUI7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7aUJBQ2Q7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sV0FBVztRQUNoQixNQUFNLHVCQUF1QixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNoRyxPQUFPO1lBQ0wsTUFBTSxFQUFFO2dCQUNOO29CQUNFLEVBQUUsRUFBRSx1QkFBdUI7b0JBQzNCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7b0JBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN0RTthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLDhCQUE4QixFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ3hELENBQUM7SUFDSixDQUFDOztBQTNESCxnREE0REMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1FbGVtZW50IH0gZnJvbSBcIi4vdGVycmFmb3JtLWVsZW1lbnRcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyIH0gZnJvbSBcIi4vdGVycmFmb3JtLXByb3ZpZGVyXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZVRlcnJhZm9ybVZlcnNpb24gfSBmcm9tIFwiLi92YWxpZGF0aW9ucy92YWxpZGF0ZS10ZXJyYWZvcm0tdmVyc2lvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElJbXBvcnRhYmxlQ29uZmlnIHtcbiAgdGVycmFmb3JtUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIGltcG9ydElkOiBzdHJpbmc7XG4gIHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG59XG5cbi8qKlxuICogQ2xhc3MgdXNlZCB0byByZXByZXNlbnQgYW4gaW1wb3J0YWJsZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydGFibGVSZXNvdXJjZSBleHRlbmRzIFRlcnJhZm9ybUVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUltcG9ydGFibGVDb25maWcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBjb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBWYWxpZGF0ZVRlcnJhZm9ybVZlcnNpb24oXG4gICAgICAgIFwiPj0xLjVcIixcbiAgICAgICAgYEltcG9ydCBibG9ja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUZXJyYWZvcm0gPj0xLjUuIFBsZWFzZSB1cGdyYWRlIHlvdXIgVGVycmFmb3JtIHZlcnNpb24uYCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0hjbFRlcnJhZm9ybSgpOiBhbnkge1xuICAgIGNvbnN0IGV4cGVjdGVkUmVzb3VyY2VBZGRyZXNzID0gYCR7dGhpcy5jb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gO1xuICAgIHJldHVybiB7XG4gICAgICBpbXBvcnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRvOiB7XG4gICAgICAgICAgICB2YWx1ZTogZXhwZWN0ZWRSZXNvdXJjZUFkZHJlc3MsXG4gICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJyZWZlcmVuY2VcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5jb25maWcuaW1wb3J0SWQsXG4gICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLmNvbmZpZy5wcm92aWRlclxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnLnByb3ZpZGVyLmZxbixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwicmVmZXJlbmNlXCIsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgY29uc3QgZXhwZWN0ZWRSZXNvdXJjZUFkZHJlc3MgPSBgJHt0aGlzLmNvbmZpZy50ZXJyYWZvcm1SZXNvdXJjZVR5cGV9LiR7dGhpcy5mcmllbmRseVVuaXF1ZUlkfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltcG9ydDogW1xuICAgICAgICB7XG4gICAgICAgICAgdG86IGV4cGVjdGVkUmVzb3VyY2VBZGRyZXNzLFxuICAgICAgICAgIGlkOiB0aGlzLmNvbmZpZy5pbXBvcnRJZCxcbiAgICAgICAgICBwcm92aWRlcjogdGhpcy5jb25maWcucHJvdmlkZXIgPyB0aGlzLmNvbmZpZy5wcm92aWRlci5mcW4gOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9NZXRhZGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpbXBvcnRzR2VuZXJhdGluZ0NvbmZpZ3VyYXRpb246IFt0aGlzLmZyaWVuZGx5VW5pcXVlSWRdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
63
+ ImportableResource[_a] = { fqn: "cdktn.ImportableResource", version: "0.23.3" };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YWJsZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnRhYmxlLXJlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsMkRBQXVEO0FBRXZELHlGQUFvRjtBQVFwRjs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsb0NBQWdCO0lBQ3RELFlBQ0UsS0FBZ0IsRUFDaEIsSUFBWSxFQUNLLE1BQXlCO1FBRTFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRmhDLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBRzFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUNyQixJQUFJLHFEQUF3QixDQUMxQixPQUFPLEVBQ1AsOEZBQThGLENBQy9GLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hHLE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsRUFBRSxFQUFFO3dCQUNGLEtBQUssRUFBRSx1QkFBdUI7d0JBQzlCLElBQUksRUFBRSxRQUFRO3dCQUNkLGdCQUFnQixFQUFFLFdBQVc7cUJBQzlCO29CQUNELEVBQUUsRUFBRTt3QkFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUMzQixJQUFJLEVBQUUsUUFBUTt3QkFDZCxnQkFBZ0IsRUFBRSxRQUFRO3FCQUMzQjtvQkFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUM1QixDQUFDLENBQUM7NEJBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUc7NEJBQy9CLElBQUksRUFBRSxRQUFROzRCQUNkLGdCQUFnQixFQUFFLFdBQVc7eUJBQzlCO3dCQUNILENBQUMsQ0FBQyxTQUFTO2lCQUNkO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVc7UUFDaEIsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDaEcsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTjtvQkFDRSxFQUFFLEVBQUUsdUJBQXVCO29CQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDdEU7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCw4QkFBOEIsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUN4RCxDQUFDO0lBQ0osQ0FBQzs7QUEzREgsZ0RBNERDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtRWxlbWVudCB9IGZyb20gXCIuL3RlcnJhZm9ybS1lbGVtZW50XCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1Qcm92aWRlciB9IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aWRlclwiO1xuaW1wb3J0IHsgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uIH0gZnJvbSBcIi4vdmFsaWRhdGlvbnMvdmFsaWRhdGUtdGVycmFmb3JtLXZlcnNpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBJSW1wb3J0YWJsZUNvbmZpZyB7XG4gIHRlcnJhZm9ybVJlc291cmNlVHlwZTogc3RyaW5nO1xuICBpbXBvcnRJZDogc3RyaW5nO1xuICBwcm92aWRlcj86IFRlcnJhZm9ybVByb3ZpZGVyO1xufVxuXG4vKipcbiAqIENsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGFuIGltcG9ydGFibGUgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbXBvcnRhYmxlUmVzb3VyY2UgZXh0ZW5kcyBUZXJyYWZvcm1FbGVtZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IElJbXBvcnRhYmxlQ29uZmlnLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgbmFtZSwgY29uZmlnLnRlcnJhZm9ybVJlc291cmNlVHlwZSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oXG4gICAgICBuZXcgVmFsaWRhdGVUZXJyYWZvcm1WZXJzaW9uKFxuICAgICAgICBcIj49MS41XCIsXG4gICAgICAgIGBJbXBvcnQgYmxvY2tzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVGVycmFmb3JtID49MS41LiBQbGVhc2UgdXBncmFkZSB5b3VyIFRlcnJhZm9ybSB2ZXJzaW9uLmAsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdG9IY2xUZXJyYWZvcm0oKTogYW55IHtcbiAgICBjb25zdCBleHBlY3RlZFJlc291cmNlQWRkcmVzcyA9IGAke3RoaXMuY29uZmlnLnRlcnJhZm9ybVJlc291cmNlVHlwZX0uJHt0aGlzLmZyaWVuZGx5VW5pcXVlSWR9YDtcbiAgICByZXR1cm4ge1xuICAgICAgaW1wb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0bzoge1xuICAgICAgICAgICAgdmFsdWU6IGV4cGVjdGVkUmVzb3VyY2VBZGRyZXNzLFxuICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwicmVmZXJlbmNlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnLmltcG9ydElkLFxuICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm92aWRlcjogdGhpcy5jb25maWcucHJvdmlkZXJcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNvbmZpZy5wcm92aWRlci5mcW4sXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIGNvbnN0IGV4cGVjdGVkUmVzb3VyY2VBZGRyZXNzID0gYCR7dGhpcy5jb25maWcudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke3RoaXMuZnJpZW5kbHlVbmlxdWVJZH1gO1xuICAgIHJldHVybiB7XG4gICAgICBpbXBvcnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBleHBlY3RlZFJlc291cmNlQWRkcmVzcyxcbiAgICAgICAgICBpZDogdGhpcy5jb25maWcuaW1wb3J0SWQsXG4gICAgICAgICAgcHJvdmlkZXI6IHRoaXMuY29uZmlnLnByb3ZpZGVyID8gdGhpcy5jb25maWcucHJvdmlkZXIuZnFuIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWV0YWRhdGEoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1wb3J0c0dlbmVyYXRpbmdDb25maWd1cmF0aW9uOiBbdGhpcy5mcmllbmRseVVuaXF1ZUlkXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
package/lib/index.js CHANGED
@@ -59,4 +59,4 @@ __exportStar(require("./upgrade-id-aspect"), exports);
59
59
  __exportStar(require("./terraform-data-resource"), exports);
60
60
  // required for JSII because Fn extends from it
61
61
  __exportStar(require("./functions/terraform-functions.generated"), exports);
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsK0RBQTREO0FBQzVELElBQUEseUNBQW1CLEdBQUUsQ0FBQztBQUV0QiwyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLHNEQUFvQztBQUNwQyxxREFBbUM7QUFDbkMsdURBQXFDO0FBQ3JDLHVEQUFxQztBQUNyQywwREFBd0M7QUFDeEMscURBQW1DO0FBQ25DLDBEQUF3QztBQUN4Qyw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLHdEQUFzRDtBQUN0RCx3Q0FBc0I7QUFDdEIsc0RBQW9DO0FBQ3BDLDZDQUEyQjtBQUMzQiwyREFBeUM7QUFDekMsb0RBQWtDO0FBQ2xDLHVEQUFxQztBQUNyQyx5REFBdUM7QUFDdkMsNENBQTBCO0FBQzFCLHlEQUF1QztBQUN2Qyw2Q0FBMkI7QUFDM0Isb0RBQWtDO0FBQ2xDLCtDQUE2QjtBQUM3QixnREFBOEI7QUFDOUIsMkNBQXlCO0FBQ3pCLHdEQUFzQztBQUN0Qyx3REFBc0M7QUFDdEMsaURBQStCO0FBQy9CLDBEQUF3QztBQUN4Qyx1REFBcUM7QUFDckMsMERBQXdDO0FBQ3hDLHlEQUF1QztBQUN2QyxvREFBa0M7QUFDbEMsd0RBQXNDO0FBQ3RDLCtEQUE2QztBQUM3QyxzREFBb0M7QUFDcEMsNERBQTBDO0FBQzFDLCtDQUErQztBQUMvQyw0RUFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgdmFsaWRhdGVFbnZpcm9ubWVudCB9IGZyb20gXCIuL3ZhbGlkYXRlRW52aXJvbm1lbnRcIjtcbnZhbGlkYXRlRW52aXJvbm1lbnQoKTtcblxuZXhwb3J0ICogZnJvbSBcIi4vdG9rZW5zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tc3RhY2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1lbGVtZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tbW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWRhdGEtc291cmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tb3V0cHV0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21wbGV4LWNvbXB1dGVkLWxpc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXN0aW5nXCI7XG5leHBvcnQgKiBhcyB0ZXN0aW5nTWF0Y2hlcnMgZnJvbSBcIi4vdGVzdGluZy9tYXRjaGVyc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXBwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tYmFja2VuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFja2VuZHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1yZW1vdGUtc3RhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1sb2NhbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLXZhcmlhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0taGNsLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcnVudGltZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWRlcGVuZGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hbmlmZXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tYXNzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N5bnRoZXNpemVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Fubm90YXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hc3BlY3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1mdW5jdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1vcGVyYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RmRXhwcmVzc2lvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWFkZHJlc3NhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0taXRlcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aXNpb25lclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWNvbmRpdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1jb3VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW1wb3J0YWJsZS1yZXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLXJlc291cmNlLXRhcmdldHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VwZ3JhZGUtaWQtYXNwZWN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tZGF0YS1yZXNvdXJjZVwiO1xuLy8gcmVxdWlyZWQgZm9yIEpTSUkgYmVjYXVzZSBGbiBleHRlbmRzIGZyb20gaXRcbmV4cG9ydCAqIGZyb20gXCIuL2Z1bmN0aW9ucy90ZXJyYWZvcm0tZnVuY3Rpb25zLmdlbmVyYXRlZFwiO1xuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLCtEQUE0RDtBQUM1RCxJQUFBLHlDQUFtQixHQUFFLENBQUM7QUFFdEIsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxzREFBb0M7QUFDcEMscURBQW1DO0FBQ25DLHVEQUFxQztBQUNyQyx1REFBcUM7QUFDckMsMERBQXdDO0FBQ3hDLHFEQUFtQztBQUNuQywwREFBd0M7QUFDeEMsNkNBQTJCO0FBQzNCLDRDQUEwQjtBQUMxQix3REFBc0Q7QUFDdEQsd0NBQXNCO0FBQ3RCLHNEQUFvQztBQUNwQyw2Q0FBMkI7QUFDM0IsMkRBQXlDO0FBQ3pDLG9EQUFrQztBQUNsQyx1REFBcUM7QUFDckMseURBQXVDO0FBQ3ZDLDRDQUEwQjtBQUMxQix5REFBdUM7QUFDdkMsNkNBQTJCO0FBQzNCLG9EQUFrQztBQUNsQywrQ0FBNkI7QUFDN0IsZ0RBQThCO0FBQzlCLDJDQUF5QjtBQUN6Qix3REFBc0M7QUFDdEMsd0RBQXNDO0FBQ3RDLGlEQUErQjtBQUMvQiwwREFBd0M7QUFDeEMsdURBQXFDO0FBQ3JDLDBEQUF3QztBQUN4Qyx5REFBdUM7QUFDdkMsb0RBQWtDO0FBQ2xDLHdEQUFzQztBQUN0QywrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDREQUEwQztBQUMxQywrQ0FBK0M7QUFDL0MsNEVBQTBEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IHZhbGlkYXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi92YWxpZGF0ZUVudmlyb25tZW50XCI7XG52YWxpZGF0ZUVudmlyb25tZW50KCk7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3Rva2Vuc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tZWxlbWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLW1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLXByb3ZpZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tcmVzb3VyY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1kYXRhLXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLW91dHB1dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcGxleC1jb21wdXRlZC1saXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVzdGluZ1wiO1xuZXhwb3J0ICogYXMgdGVzdGluZ01hdGNoZXJzIGZyb20gXCIuL3Rlc3RpbmcvbWF0Y2hlcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FwcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWJhY2tlbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2JhY2tlbmRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tcmVtb3RlLXN0YXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tbG9jYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS12YXJpYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWhjbC1tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3J1bnRpbWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1kZXBlbmRhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWFzc2V0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeW50aGVzaXplXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXNwZWN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tZnVuY3Rpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tb3BlcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZkV4cHJlc3Npb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1hZGRyZXNzYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWl0ZXJhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tcHJvdmlzaW9uZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1jb25kaXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXJyYWZvcm0tY291bnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ltcG9ydGFibGUtcmVzb3VyY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybS1yZXNvdXJjZS10YXJnZXRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91cGdyYWRlLWlkLWFzcGVjdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVycmFmb3JtLWRhdGEtcmVzb3VyY2VcIjtcbi8vIHJlcXVpcmVkIGZvciBKU0lJIGJlY2F1c2UgRm4gZXh0ZW5kcyBmcm9tIGl0XG5leHBvcnQgKiBmcm9tIFwiLi9mdW5jdGlvbnMvdGVycmFmb3JtLWZ1bmN0aW9ucy5nZW5lcmF0ZWRcIjtcbiJdfQ==
package/lib/manifest.js CHANGED
@@ -7,8 +7,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
7
  // SPDX-License-Identifier: MPL-2.0
8
8
  const path = require("path");
9
9
  const fs = require("fs");
10
- // eslint-disable-next-line @typescript-eslint/no-require-imports
11
- const stringify = require("json-stable-stringify");
10
+ const safe_stable_stringify_1 = require("safe-stable-stringify");
12
11
  // eslint-disable-next-line jsdoc/require-jsdoc
13
12
  class Manifest {
14
13
  constructor(version, outdir, hclOutput) {
@@ -46,13 +45,13 @@ class Manifest {
46
45
  };
47
46
  }
48
47
  writeToFile() {
49
- fs.writeFileSync(path.join(this.outdir, Manifest.fileName), stringify(this.buildManifest(), { space: 2 }));
48
+ fs.writeFileSync(path.join(this.outdir, Manifest.fileName), (0, safe_stable_stringify_1.default)(this.buildManifest(), null, 2));
50
49
  }
51
50
  }
52
51
  exports.Manifest = Manifest;
53
52
  _a = JSII_RTTI_SYMBOL_1;
54
- Manifest[_a] = { fqn: "cdktn.Manifest", version: "0.23.1" };
53
+ Manifest[_a] = { fqn: "cdktn.Manifest", version: "0.23.3" };
55
54
  Manifest.fileName = "manifest.json";
56
55
  Manifest.stacksFolder = "stacks";
57
56
  Manifest.stackMetadataPath = "metadata.json";
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUd6QixpRUFBaUU7QUFDakUsbURBQW9EO0FBd0JwRCwrQ0FBK0M7QUFDL0MsTUFBYSxRQUFRO0lBUW5CLFlBQ2tCLE9BQWUsRUFDZixNQUFjLEVBQ2QsU0FBa0I7UUFGbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBTnBCLFdBQU0sR0FBaUQsRUFBRSxDQUFDO1FBUXhFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDNUQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFxQjtRQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBa0I7WUFDOUIsSUFBSTtZQUNKLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN4QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUM3QixRQUFRLENBQUMsWUFBWSxFQUNyQixJQUFJLENBQUMsRUFBRSxFQUNQLElBQUksQ0FBQyxhQUFhLENBQ25CO1lBQ0QsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FDMUIsUUFBUSxDQUFDLFlBQVksRUFDckIsSUFBSSxDQUFDLEVBQUUsRUFDUCxRQUFRLENBQUMsaUJBQWlCLENBQzNCO1lBQ0QsV0FBVyxFQUFFLEVBQUUsRUFBRSwrQ0FBK0M7WUFDaEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFN0IsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBVyxDQUN4RCxDQUFDO0lBQ0osQ0FBQzs7QUE3REgsNEJBOERDOzs7QUE3RHdCLGlCQUFRLEdBQUcsZUFBZSxBQUFsQixDQUFtQjtBQUMzQixxQkFBWSxHQUFHLFFBQVEsQUFBWCxDQUFZO0FBQ3hCLDBCQUFpQixHQUFHLGVBQWUsQUFBbEIsQ0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlIH0gZnJvbSBcIi4vYW5ub3RhdGlvbnNcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgc3RyaW5naWZ5ID0gcmVxdWlyZShcImpzb24tc3RhYmxlLXN0cmluZ2lmeVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0Fubm90YXRpb24ge1xuICByZWFkb25seSBjb25zdHJ1Y3RQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxldmVsOiBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGU7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhY2t0cmFjZT86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBTdGFja01hbmlmZXN0IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBjb25zdHJ1Y3RQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN5bnRoZXNpemVkU3RhY2tQYXRoOiBzdHJpbmc7XG4gIC8vIE9ubHkgdmFsaWQgZm9yIEhDTCBzeW50aGVzaXMsIGZvciBKU09OIHRoZSBtZXRhZGF0YSBpcyB3aXRoaW4gdGhlIHN5bnRoZXNpemVkIG91dHB1dFxuICByZWFkb25seSBzdGFja01ldGFkYXRhUGF0aDogc3RyaW5nO1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFubm90YXRpb25zOiBTdGFja0Fubm90YXRpb25bXTtcbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTWFuaWZlc3Qge1xuICByZWFkb25seSBzdGFja3M6IFJlY29yZDxTdGFja01hbmlmZXN0W1wibmFtZVwiXSwgU3RhY2tNYW5pZmVzdD47XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBjbGFzcyBNYW5pZmVzdCBpbXBsZW1lbnRzIElNYW5pZmVzdCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZmlsZU5hbWUgPSBcIm1hbmlmZXN0Lmpzb25cIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzdGFja3NGb2xkZXIgPSBcInN0YWNrc1wiO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHN0YWNrTWV0YWRhdGFQYXRoID0gXCJtZXRhZGF0YS5qc29uXCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrczogUmVjb3JkPFN0YWNrTWFuaWZlc3RbXCJuYW1lXCJdLCBTdGFja01hbmlmZXN0PiA9IHt9O1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhY2tGaWxlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBoY2xPdXRwdXQ6IGJvb2xlYW4sXG4gICkge1xuICAgIGNvbnN0IHN0YWNrc1BhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRkaXIsIE1hbmlmZXN0LnN0YWNrc0ZvbGRlcik7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHN0YWNrc1BhdGgpKSBmcy5ta2RpclN5bmMoc3RhY2tzUGF0aCk7XG5cbiAgICB0aGlzLnN0YWNrRmlsZU5hbWUgPSBoY2xPdXRwdXQgPyBcImNkay50ZlwiIDogXCJjZGsudGYuanNvblwiO1xuICB9XG5cbiAgcHVibGljIGZvclN0YWNrKHN0YWNrOiBUZXJyYWZvcm1TdGFjayk6IFN0YWNrTWFuaWZlc3Qge1xuICAgIGNvbnN0IG5vZGUgPSBzdGFjay5ub2RlO1xuICAgIGNvbnN0IG5hbWUgPSBub2RlLmlkO1xuXG4gICAgaWYgKHRoaXMuc3RhY2tzW25hbWVdKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFja3NbbmFtZV07XG4gICAgfVxuXG4gICAgY29uc3QgbWFuaWZlc3Q6IFN0YWNrTWFuaWZlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgY29uc3RydWN0UGF0aDogbm9kZS5wYXRoLFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTogcGF0aC5qb2luKE1hbmlmZXN0LnN0YWNrc0ZvbGRlciwgbm9kZS5pZCksXG4gICAgICBzeW50aGVzaXplZFN0YWNrUGF0aDogcGF0aC5qb2luKFxuICAgICAgICBNYW5pZmVzdC5zdGFja3NGb2xkZXIsXG4gICAgICAgIG5vZGUuaWQsXG4gICAgICAgIHRoaXMuc3RhY2tGaWxlTmFtZSxcbiAgICAgICksXG4gICAgICBzdGFja01ldGFkYXRhUGF0aDogcGF0aC5qb2luKFxuICAgICAgICBNYW5pZmVzdC5zdGFja3NGb2xkZXIsXG4gICAgICAgIG5vZGUuaWQsXG4gICAgICAgIE1hbmlmZXN0LnN0YWNrTWV0YWRhdGFQYXRoLFxuICAgICAgKSxcbiAgICAgIGFubm90YXRpb25zOiBbXSwgLy8gd2lsbCBiZSByZXBsYWNlZCBsYXRlciB3aGVuIHByb2Nlc3NlZCBpbiBBcHBcbiAgICAgIGRlcGVuZGVuY2llczogc3RhY2suZGVwZW5kZW5jaWVzLm1hcCgoaXRlbSkgPT4gaXRlbS5ub2RlLnBhdGgpLFxuICAgIH07XG4gICAgdGhpcy5zdGFja3NbbmFtZV0gPSBtYW5pZmVzdDtcblxuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZE1hbmlmZXN0KCk6IElNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgIHN0YWNrczogdGhpcy5zdGFja3MsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVRvRmlsZSgpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKHRoaXMub3V0ZGlyLCBNYW5pZmVzdC5maWxlTmFtZSksXG4gICAgICBzdHJpbmdpZnkodGhpcy5idWlsZE1hbmlmZXN0KCksIHsgc3BhY2U6IDIgfSkgYXMgc3RyaW5nLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFHekIsaUVBQThDO0FBd0I5QywrQ0FBK0M7QUFDL0MsTUFBYSxRQUFRO0lBUW5CLFlBQ2tCLE9BQWUsRUFDZixNQUFjLEVBQ2QsU0FBa0I7UUFGbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFTO1FBTnBCLFdBQU0sR0FBaUQsRUFBRSxDQUFDO1FBUXhFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDNUQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFxQjtRQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBa0I7WUFDOUIsSUFBSTtZQUNKLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN4QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUM3QixRQUFRLENBQUMsWUFBWSxFQUNyQixJQUFJLENBQUMsRUFBRSxFQUNQLElBQUksQ0FBQyxhQUFhLENBQ25CO1lBQ0QsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FDMUIsUUFBUSxDQUFDLFlBQVksRUFDckIsSUFBSSxDQUFDLEVBQUUsRUFDUCxRQUFRLENBQUMsaUJBQWlCLENBQzNCO1lBQ0QsV0FBVyxFQUFFLEVBQUUsRUFBRSwrQ0FBK0M7WUFDaEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFN0IsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLEVBQUUsQ0FBQyxhQUFhLENBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDekMsSUFBQSwrQkFBUyxFQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFXLENBQ25ELENBQUM7SUFDSixDQUFDOztBQTdESCw0QkE4REM7OztBQTdEd0IsaUJBQVEsR0FBRyxlQUFlLEFBQWxCLENBQW1CO0FBQzNCLHFCQUFZLEdBQUcsUUFBUSxBQUFYLENBQVk7QUFDeEIsMEJBQWlCLEdBQUcsZUFBZSxBQUFsQixDQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5pbXBvcnQgeyBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tIFwic2FmZS1zdGFibGUtc3RyaW5naWZ5XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tBbm5vdGF0aW9uIHtcbiAgcmVhZG9ubHkgY29uc3RydWN0UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBsZXZlbDogQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWNrdHJhY2U/OiBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tNYW5pZmVzdCB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29uc3RydWN0UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBzeW50aGVzaXplZFN0YWNrUGF0aDogc3RyaW5nO1xuICAvLyBPbmx5IHZhbGlkIGZvciBIQ0wgc3ludGhlc2lzLCBmb3IgSlNPTiB0aGUgbWV0YWRhdGEgaXMgd2l0aGluIHRoZSBzeW50aGVzaXplZCBvdXRwdXRcbiAgcmVhZG9ubHkgc3RhY2tNZXRhZGF0YVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBhbm5vdGF0aW9uczogU3RhY2tBbm5vdGF0aW9uW107XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hbmlmZXN0IHtcbiAgcmVhZG9ubHkgc3RhY2tzOiBSZWNvcmQ8U3RhY2tNYW5pZmVzdFtcIm5hbWVcIl0sIFN0YWNrTWFuaWZlc3Q+O1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgY2xhc3MgTWFuaWZlc3QgaW1wbGVtZW50cyBJTWFuaWZlc3Qge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGZpbGVOYW1lID0gXCJtYW5pZmVzdC5qc29uXCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgc3RhY2tzRm9sZGVyID0gXCJzdGFja3NcIjtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBzdGFja01ldGFkYXRhUGF0aCA9IFwibWV0YWRhdGEuanNvblwiO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGFja3M6IFJlY29yZDxTdGFja01hbmlmZXN0W1wibmFtZVwiXSwgU3RhY2tNYW5pZmVzdD4gPSB7fTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YWNrRmlsZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBvdXRkaXI6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGNsT3V0cHV0OiBib29sZWFuLFxuICApIHtcbiAgICBjb25zdCBzdGFja3NQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0ZGlyLCBNYW5pZmVzdC5zdGFja3NGb2xkZXIpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhzdGFja3NQYXRoKSkgZnMubWtkaXJTeW5jKHN0YWNrc1BhdGgpO1xuXG4gICAgdGhpcy5zdGFja0ZpbGVOYW1lID0gaGNsT3V0cHV0ID8gXCJjZGsudGZcIiA6IFwiY2RrLnRmLmpzb25cIjtcbiAgfVxuXG4gIHB1YmxpYyBmb3JTdGFjayhzdGFjazogVGVycmFmb3JtU3RhY2spOiBTdGFja01hbmlmZXN0IHtcbiAgICBjb25zdCBub2RlID0gc3RhY2subm9kZTtcbiAgICBjb25zdCBuYW1lID0gbm9kZS5pZDtcblxuICAgIGlmICh0aGlzLnN0YWNrc1tuYW1lXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhY2tzW25hbWVdO1xuICAgIH1cblxuICAgIGNvbnN0IG1hbmlmZXN0OiBTdGFja01hbmlmZXN0ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIGNvbnN0cnVjdFBhdGg6IG5vZGUucGF0aCxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHBhdGguam9pbihNYW5pZmVzdC5zdGFja3NGb2xkZXIsIG5vZGUuaWQpLFxuICAgICAgc3ludGhlc2l6ZWRTdGFja1BhdGg6IHBhdGguam9pbihcbiAgICAgICAgTWFuaWZlc3Quc3RhY2tzRm9sZGVyLFxuICAgICAgICBub2RlLmlkLFxuICAgICAgICB0aGlzLnN0YWNrRmlsZU5hbWUsXG4gICAgICApLFxuICAgICAgc3RhY2tNZXRhZGF0YVBhdGg6IHBhdGguam9pbihcbiAgICAgICAgTWFuaWZlc3Quc3RhY2tzRm9sZGVyLFxuICAgICAgICBub2RlLmlkLFxuICAgICAgICBNYW5pZmVzdC5zdGFja01ldGFkYXRhUGF0aCxcbiAgICAgICksXG4gICAgICBhbm5vdGF0aW9uczogW10sIC8vIHdpbGwgYmUgcmVwbGFjZWQgbGF0ZXIgd2hlbiBwcm9jZXNzZWQgaW4gQXBwXG4gICAgICBkZXBlbmRlbmNpZXM6IHN0YWNrLmRlcGVuZGVuY2llcy5tYXAoKGl0ZW0pID0+IGl0ZW0ubm9kZS5wYXRoKSxcbiAgICB9O1xuICAgIHRoaXMuc3RhY2tzW25hbWVdID0gbWFuaWZlc3Q7XG5cbiAgICByZXR1cm4gbWFuaWZlc3Q7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRNYW5pZmVzdCgpOiBJTWFuaWZlc3Qge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBzdGFja3M6IHRoaXMuc3RhY2tzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgd3JpdGVUb0ZpbGUoKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbih0aGlzLm91dGRpciwgTWFuaWZlc3QuZmlsZU5hbWUpLFxuICAgICAgc3RyaW5naWZ5KHRoaXMuYnVpbGRNYW5pZmVzdCgpLCBudWxsLCAyKSBhcyBzdHJpbmcsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,14 +1,29 @@
1
1
  /**
2
2
  * Copy a file or directory. The directory can have contents and subfolders.
3
- * @param {string} src
4
- * @param {string} dest
3
+ * @param src - source path
4
+ * @param dest - destination path
5
5
  */
6
6
  export declare function copySync(src: string, dest: string): void;
7
7
  /**
8
- * Zips contents at src and places zip archive at dest
9
- * @param {string} src
10
- * @param {string} dest
8
+ * Zips contents at src and places zip archive at dest.
9
+ * @param src - directory to archive
10
+ * @param dest - path to write the resulting zip to
11
11
  */
12
12
  export declare function archiveSync(src: string, dest: string): void;
13
+ /**
14
+ * Compute a stable MD5 hash of a file or directory's contents.
15
+ * Directories are hashed by recursively folding each file's contents into
16
+ * the same digest, in directory-listing order.
17
+ * @param src - path to a file or directory to hash
18
+ * @returns uppercased hex digest, truncated to HASH_LEN characters
19
+ */
13
20
  export declare function hashPath(src: string): string;
21
+ /**
22
+ * Walk upward from `rootPath` looking for a file with the given name.
23
+ * Returns the absolute path of the first match, or `null` if the search
24
+ * reaches the filesystem root without finding it.
25
+ * @param file - filename to search for
26
+ * @param rootPath - directory to start the search from (defaults to cwd)
27
+ * @returns absolute path to the file, or null if not found
28
+ */
14
29
  export declare function findFileAboveCwd(file: string, rootPath?: string): string | null;
package/lib/private/fs.js CHANGED
@@ -9,19 +9,19 @@ exports.findFileAboveCwd = findFileAboveCwd;
9
9
  const fs = require("fs");
10
10
  const path = require("path");
11
11
  const crypto = require("crypto");
12
+ const fflate_1 = require("fflate");
12
13
  const errors_1 = require("../errors");
13
- const child_process_1 = require("child_process");
14
14
  const HASH_LEN = 32;
15
15
  // Full implementation at https://github.com/jprichardson/node-fs-extra/blob/master/lib/copy/copy-sync.js
16
16
  /**
17
17
  * Copy a file or directory. The directory can have contents and subfolders.
18
- * @param {string} src
19
- * @param {string} dest
18
+ * @param src - source path
19
+ * @param dest - destination path
20
20
  */
21
21
  function copySync(src, dest) {
22
22
  /**
23
- * Copies file if present otherwise walks subfolder
24
- * @param {string} p
23
+ * Copies file if present otherwise walks subfolder.
24
+ * @param p - path relative to src/dest
25
25
  */
26
26
  function copyItem(p) {
27
27
  const sourcePath = path.resolve(src, p);
@@ -34,8 +34,8 @@ function copySync(src, dest) {
34
34
  }
35
35
  }
36
36
  /**
37
- * Copies contents of subfolder
38
- * @param {string} p
37
+ * Copies contents of subfolder.
38
+ * @param p - path relative to src/dest
39
39
  */
40
40
  function walkSubfolder(p) {
41
41
  const sourceDir = path.resolve(src, p);
@@ -45,78 +45,45 @@ function copySync(src, dest) {
45
45
  walkSubfolder(".");
46
46
  }
47
47
  /**
48
- * Zips contents at src and places zip archive at dest
49
- * @param {string} src
50
- * @param {string} dest
48
+ * Zips contents at src and places zip archive at dest.
49
+ * @param src - directory to archive
50
+ * @param dest - path to write the resulting zip to
51
51
  */
52
52
  function archiveSync(src, dest) {
53
- // Run this module as a CLI to get around the synchronous limitation
54
53
  try {
55
- (0, child_process_1.execSync)(`node ${__filename} ${src} ${dest}`, { encoding: "utf-8" });
54
+ const files = {};
55
+ const walk = (dir, prefix) => {
56
+ for (const entry of fs.readdirSync(dir)) {
57
+ const full = path.join(dir, entry);
58
+ const zipPath = prefix ? `${prefix}/${entry}` : entry;
59
+ if (fs.statSync(full).isDirectory()) {
60
+ walk(full, zipPath);
61
+ }
62
+ else {
63
+ files[zipPath] = fs.readFileSync(full);
64
+ }
65
+ }
66
+ };
67
+ walk(src, "");
68
+ fs.writeFileSync(dest, (0, fflate_1.zipSync)(files, { level: 9 }));
56
69
  }
57
70
  catch (err) {
58
71
  throw (0, errors_1.assetCanNotCreateZipArchive)(src, dest, err);
59
72
  }
60
73
  }
61
74
  /**
62
- * Recursively adds all files under dir to the zip, preserving
63
- * relative paths
64
- * @param zip - the instance to add entries to
65
- * @param dir - absolute path of the directory to walk
66
- * @param prefix - the path prefix for entries within the zip (empty string for root)
75
+ * Compute a stable MD5 hash of a file or directory's contents.
76
+ * Directories are hashed by recursively folding each file's contents into
77
+ * the same digest, in directory-listing order.
78
+ * @param src - path to a file or directory to hash
79
+ * @returns uppercased hex digest, truncated to HASH_LEN characters
67
80
  */
68
- function addDirectory(zip, dir, prefix) {
69
- for (const entry of fs.readdirSync(dir)) {
70
- const fullPath = path.join(dir, entry);
71
- const zipPath = prefix ? `${prefix}/${entry}` : entry;
72
- if (fs.statSync(fullPath).isDirectory()) {
73
- addDirectory(zip, fullPath, zipPath);
74
- }
75
- else {
76
- zip.addFile(fullPath, zipPath, { compress: true, compressionLevel: 9 });
77
- }
78
- }
79
- }
80
- /**
81
- *
82
- * @param src
83
- * @param dest
84
- */
85
- async function runArchive(src, dest) {
86
- // eslint-disable-next-line @typescript-eslint/no-require-imports
87
- const { ZipFile } = require("yazl");
88
- const zip = new ZipFile();
89
- addDirectory(zip, src, "");
90
- zip.end();
91
- return new Promise((resolve, reject) => {
92
- const output = fs.createWriteStream(dest);
93
- zip.outputStream.pipe(output);
94
- output.on("close", resolve);
95
- output.on("error", reject);
96
- zip.outputStream.on("error", reject);
97
- });
98
- }
99
- // If this file is executed as a CLI we run archive directly
100
- // It's a bit of a hack due to us being restricted to synchronous functions
101
- // when there is no sync way to create a zip archive.
102
- // We get around this by using execSync and invoking this file as the CLI.
103
- // This only works for one function, but we only have this use-case once.
104
- if (require.main === module) {
105
- const src = process.argv[2];
106
- const dest = process.argv[3];
107
- runArchive(src, dest)
108
- .then(() => {
109
- process.exit(0);
110
- })
111
- .catch((err) => {
112
- console.error(err);
113
- process.exit(1);
114
- });
115
- }
116
- // eslint-disable-next-line jsdoc/require-jsdoc
117
81
  function hashPath(src) {
118
82
  const hash = crypto.createHash("md5");
119
- // eslint-disable-next-line jsdoc/require-jsdoc
83
+ /**
84
+ * Walk `p`, feeding any file contents into the enclosing hash accumulator.
85
+ * @param p - path to walk
86
+ */
120
87
  function hashRecursion(p) {
121
88
  const stat = fs.statSync(p);
122
89
  if (stat.isFile()) {
@@ -129,7 +96,14 @@ function hashPath(src) {
129
96
  hashRecursion(src);
130
97
  return hash.digest("hex").slice(0, HASH_LEN).toUpperCase();
131
98
  }
132
- // eslint-disable-next-line jsdoc/require-jsdoc
99
+ /**
100
+ * Walk upward from `rootPath` looking for a file with the given name.
101
+ * Returns the absolute path of the first match, or `null` if the search
102
+ * reaches the filesystem root without finding it.
103
+ * @param file - filename to search for
104
+ * @param rootPath - directory to start the search from (defaults to cwd)
105
+ * @returns absolute path to the file, or null if not found
106
+ */
133
107
  function findFileAboveCwd(file, rootPath = process.cwd()) {
134
108
  const fullPath = path.resolve(rootPath, file);
135
109
  if (fs.existsSync(fullPath)) {
@@ -141,4 +115,4 @@ function findFileAboveCwd(file, rootPath = process.cwd()) {
141
115
  }
142
116
  return null;
143
117
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSw0QkE0QkM7QUFPRCxrQ0FPQztBQThERCw0QkFpQkM7QUFHRCw0Q0FlQztBQTNKRCwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLHNDQUF3RDtBQUN4RCxpREFBeUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBRXBCLHlHQUF5RztBQUN6Rzs7OztHQUlHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ2hEOzs7T0FHRztJQUNILFNBQVMsUUFBUSxDQUFDLENBQVM7UUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsU0FBUyxhQUFhLENBQUMsQ0FBUztRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUNqRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDbkQsb0VBQW9FO0lBQ3BFLElBQUksQ0FBQztRQUNILElBQUEsd0JBQVEsRUFBQyxRQUFRLFVBQVUsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUEsb0NBQTJCLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsWUFBWSxDQUFDLEdBQVEsRUFBRSxHQUFXLEVBQUUsTUFBYztJQUN6RCxLQUFLLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEMsWUFBWSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSxVQUFVLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDakQsaUVBQWlFO0lBQ2pFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUxQixZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFVixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQixHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsNERBQTREO0FBQzVELDJFQUEyRTtBQUMzRSxxREFBcUQ7QUFDckQsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1NBQ2xCLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztTQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELCtDQUErQztBQUMvQyxTQUFnQixRQUFRLENBQUMsR0FBVztJQUNsQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXRDLCtDQUErQztJQUMvQyxTQUFTLGFBQWEsQ0FBQyxDQUFTO1FBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM5QixFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ3JDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUN6QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0QsQ0FBQztBQUVELCtDQUErQztBQUMvQyxTQUFnQixnQkFBZ0IsQ0FDOUIsSUFBWSxFQUNaLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBRXhCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgYXNzZXRDYW5Ob3RDcmVhdGVaaXBBcmNoaXZlIH0gZnJvbSBcIi4uL2Vycm9yc1wiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG5jb25zdCBIQVNIX0xFTiA9IDMyO1xuXG4vLyBGdWxsIGltcGxlbWVudGF0aW9uIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRyYS9ibG9iL21hc3Rlci9saWIvY29weS9jb3B5LXN5bmMuanNcbi8qKlxuICogQ29weSBhIGZpbGUgb3IgZGlyZWN0b3J5LiBUaGUgZGlyZWN0b3J5IGNhbiBoYXZlIGNvbnRlbnRzIGFuZCBzdWJmb2xkZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNyY1xuICogQHBhcmFtIHtzdHJpbmd9IGRlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlTeW5jKHNyYzogc3RyaW5nLCBkZXN0OiBzdHJpbmcpIHtcbiAgLyoqXG4gICAqIENvcGllcyBmaWxlIGlmIHByZXNlbnQgb3RoZXJ3aXNlIHdhbGtzIHN1YmZvbGRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcFxuICAgKi9cbiAgZnVuY3Rpb24gY29weUl0ZW0ocDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IHBhdGgucmVzb2x2ZShzcmMsIHApO1xuICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhzb3VyY2VQYXRoKTtcbiAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgZnMuY29weUZpbGVTeW5jKHNvdXJjZVBhdGgsIHBhdGgucmVzb2x2ZShkZXN0LCBwKSk7XG4gICAgfVxuICAgIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHdhbGtTdWJmb2xkZXIocCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBDb3BpZXMgY29udGVudHMgb2Ygc3ViZm9sZGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwXG4gICAqL1xuICBmdW5jdGlvbiB3YWxrU3ViZm9sZGVyKHA6IHN0cmluZykge1xuICAgIGNvbnN0IHNvdXJjZURpciA9IHBhdGgucmVzb2x2ZShzcmMsIHApO1xuICAgIGZzLm1rZGlyU3luYyhwYXRoLnJlc29sdmUoZGVzdCwgcCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLnJlYWRkaXJTeW5jKHNvdXJjZURpcikuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PlxuICAgICAgY29weUl0ZW0ocGF0aC5qb2luKHAsIGl0ZW0pKSxcbiAgICApO1xuICB9XG5cbiAgd2Fsa1N1YmZvbGRlcihcIi5cIik7XG59XG5cbi8qKlxuICogWmlwcyBjb250ZW50cyBhdCBzcmMgYW5kIHBsYWNlcyB6aXAgYXJjaGl2ZSBhdCBkZXN0XG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJjaGl2ZVN5bmMoc3JjOiBzdHJpbmcsIGRlc3Q6IHN0cmluZykge1xuICAvLyBSdW4gdGhpcyBtb2R1bGUgYXMgYSBDTEkgdG8gZ2V0IGFyb3VuZCB0aGUgc3luY2hyb25vdXMgbGltaXRhdGlvblxuICB0cnkge1xuICAgIGV4ZWNTeW5jKGBub2RlICR7X19maWxlbmFtZX0gJHtzcmN9ICR7ZGVzdH1gLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSk7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgdGhyb3cgYXNzZXRDYW5Ob3RDcmVhdGVaaXBBcmNoaXZlKHNyYywgZGVzdCwgZXJyKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGFkZHMgYWxsIGZpbGVzIHVuZGVyIGRpciB0byB0aGUgemlwLCBwcmVzZXJ2aW5nXG4gKiByZWxhdGl2ZSBwYXRoc1xuICogQHBhcmFtIHppcCAtIHRoZSBpbnN0YW5jZSB0byBhZGQgZW50cmllcyB0b1xuICogQHBhcmFtIGRpciAtIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB0byB3YWxrXG4gKiBAcGFyYW0gcHJlZml4IC0gdGhlIHBhdGggcHJlZml4IGZvciBlbnRyaWVzIHdpdGhpbiB0aGUgemlwIChlbXB0eSBzdHJpbmcgZm9yIHJvb3QpXG4gKi9cbmZ1bmN0aW9uIGFkZERpcmVjdG9yeSh6aXA6IGFueSwgZGlyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZnMucmVhZGRpclN5bmMoZGlyKSkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgZW50cnkpO1xuICAgIGNvbnN0IHppcFBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LyR7ZW50cnl9YCA6IGVudHJ5O1xuICAgIGlmIChmcy5zdGF0U3luYyhmdWxsUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgYWRkRGlyZWN0b3J5KHppcCwgZnVsbFBhdGgsIHppcFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB6aXAuYWRkRmlsZShmdWxsUGF0aCwgemlwUGF0aCwgeyBjb21wcmVzczogdHJ1ZSwgY29tcHJlc3Npb25MZXZlbDogOSB9KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHNyY1xuICogQHBhcmFtIGRlc3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuQXJjaGl2ZShzcmM6IHN0cmluZywgZGVzdDogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHsgWmlwRmlsZSB9ID0gcmVxdWlyZShcInlhemxcIik7XG4gIGNvbnN0IHppcCA9IG5ldyBaaXBGaWxlKCk7XG5cbiAgYWRkRGlyZWN0b3J5KHppcCwgc3JjLCBcIlwiKTtcbiAgemlwLmVuZCgpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0oZGVzdCk7XG4gICAgemlwLm91dHB1dFN0cmVhbS5waXBlKG91dHB1dCk7XG4gICAgb3V0cHV0Lm9uKFwiY2xvc2VcIiwgcmVzb2x2ZSk7XG4gICAgb3V0cHV0Lm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICB6aXAub3V0cHV0U3RyZWFtLm9uKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgfSk7XG59XG5cbi8vIElmIHRoaXMgZmlsZSBpcyBleGVjdXRlZCBhcyBhIENMSSB3ZSBydW4gYXJjaGl2ZSBkaXJlY3RseVxuLy8gSXQncyBhIGJpdCBvZiBhIGhhY2sgZHVlIHRvIHVzIGJlaW5nIHJlc3RyaWN0ZWQgdG8gc3luY2hyb25vdXMgZnVuY3Rpb25zXG4vLyB3aGVuIHRoZXJlIGlzIG5vIHN5bmMgd2F5IHRvIGNyZWF0ZSBhIHppcCBhcmNoaXZlLlxuLy8gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5IHVzaW5nIGV4ZWNTeW5jIGFuZCBpbnZva2luZyB0aGlzIGZpbGUgYXMgdGhlIENMSS5cbi8vIFRoaXMgb25seSB3b3JrcyBmb3Igb25lIGZ1bmN0aW9uLCBidXQgd2Ugb25seSBoYXZlIHRoaXMgdXNlLWNhc2Ugb25jZS5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBjb25zdCBzcmMgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IGRlc3QgPSBwcm9jZXNzLmFyZ3ZbM107XG4gIHJ1bkFyY2hpdmUoc3JjLCBkZXN0KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gaGFzaFBhdGgoc3JjOiBzdHJpbmcpIHtcbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKFwibWQ1XCIpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gIGZ1bmN0aW9uIGhhc2hSZWN1cnNpb24ocDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHApO1xuICAgIGlmIChzdGF0LmlzRmlsZSgpKSB7XG4gICAgICBoYXNoLnVwZGF0ZShmcy5yZWFkRmlsZVN5bmMocCkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBmcy5yZWFkZGlyU3luYyhwKS5mb3JFYWNoKChmaWxlbmFtZSkgPT5cbiAgICAgICAgaGFzaFJlY3Vyc2lvbihwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFzaFJlY3Vyc2lvbihzcmMpO1xuICByZXR1cm4gaGFzaC5kaWdlc3QoXCJoZXhcIikuc2xpY2UoMCwgSEFTSF9MRU4pLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpbGVBYm92ZUN3ZChcbiAgZmlsZTogc3RyaW5nLFxuICByb290UGF0aCA9IHByb2Nlc3MuY3dkKCksXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIGZpbGUpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhmdWxsUGF0aCkpIHtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cblxuICBjb25zdCBwYXJlbnREaXIgPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIFwiLi5cIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHBhcmVudERpcikgJiYgcGFyZW50RGlyICE9PSByb290UGF0aCkge1xuICAgIHJldHVybiBmaW5kRmlsZUFib3ZlQ3dkKGZpbGUsIHBhcmVudERpcik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZS9mcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSw0QkE0QkM7QUFPRCxrQ0FtQkM7QUFTRCw0QkFvQkM7QUFVRCw0Q0FlQztBQTVIRCwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQWlDO0FBQ2pDLG1DQUFpQztBQUNqQyxzQ0FBd0Q7QUFFeEQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBRXBCLHlHQUF5RztBQUN6Rzs7OztHQUlHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ2hEOzs7T0FHRztJQUNILFNBQVMsUUFBUSxDQUFDLENBQVM7UUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsU0FBUyxhQUFhLENBQUMsQ0FBUztRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxF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V0FBbUIsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN2RCxPQUFPLGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IHppcFN5bmMgfSBmcm9tIFwiZmZsYXRlXCI7XG5pbXBvcnQgeyBhc3NldENhbk5vdENyZWF0ZVppcEFyY2hpdmUgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmNvbnN0IEhBU0hfTEVOID0gMzI7XG5cbi8vIEZ1bGwgaW1wbGVtZW50YXRpb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFyZHNvbi9ub2RlLWZzLWV4dHJhL2Jsb2IvbWFzdGVyL2xpYi9jb3B5L2NvcHktc3luYy5qc1xuLyoqXG4gKiBDb3B5IGEgZmlsZSBvciBkaXJlY3RvcnkuIFRoZSBkaXJlY3RvcnkgY2FuIGhhdmUgY29udGVudHMgYW5kIHN1YmZvbGRlcnMuXG4gKiBAcGFyYW0gc3JjIC0gc291cmNlIHBhdGhcbiAqIEBwYXJhbSBkZXN0IC0gZGVzdGluYXRpb24gcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVN5bmMoc3JjOiBzdHJpbmcsIGRlc3Q6IHN0cmluZykge1xuICAvKipcbiAgICogQ29waWVzIGZpbGUgaWYgcHJlc2VudCBvdGhlcndpc2Ugd2Fsa3Mgc3ViZm9sZGVyLlxuICAgKiBAcGFyYW0gcCAtIHBhdGggcmVsYXRpdmUgdG8gc3JjL2Rlc3RcbiAgICovXG4gIGZ1bmN0aW9uIGNvcHlJdGVtKHA6IHN0cmluZykge1xuICAgIGNvbnN0IHNvdXJjZVBhdGggPSBwYXRoLnJlc29sdmUoc3JjLCBwKTtcbiAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoc291cmNlUGF0aCk7XG4gICAgaWYgKHN0YXQuaXNGaWxlKCkpIHtcbiAgICAgIGZzLmNvcHlGaWxlU3luYyhzb3VyY2VQYXRoLCBwYXRoLnJlc29sdmUoZGVzdCwgcCkpO1xuICAgIH1cbiAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB3YWxrU3ViZm9sZGVyKHApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ29waWVzIGNvbnRlbnRzIG9mIHN1YmZvbGRlci5cbiAgICogQHBhcmFtIHAgLSBwYXRoIHJlbGF0aXZlIHRvIHNyYy9kZXN0XG4gICAqL1xuICBmdW5jdGlvbiB3YWxrU3ViZm9sZGVyKHA6IHN0cmluZykge1xuICAgIGNvbnN0IHNvdXJjZURpciA9IHBhdGgucmVzb2x2ZShzcmMsIHApO1xuICAgIGZzLm1rZGlyU3luYyhwYXRoLnJlc29sdmUoZGVzdCwgcCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZzLnJlYWRkaXJTeW5jKHNvdXJjZURpcikuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PlxuICAgICAgY29weUl0ZW0ocGF0aC5qb2luKHAsIGl0ZW0pKSxcbiAgICApO1xuICB9XG5cbiAgd2Fsa1N1YmZvbGRlcihcIi5cIik7XG59XG5cbi8qKlxuICogWmlwcyBjb250ZW50cyBhdCBzcmMgYW5kIHBsYWNlcyB6aXAgYXJjaGl2ZSBhdCBkZXN0LlxuICogQHBhcmFtIHNyYyAtIGRpcmVjdG9yeSB0byBhcmNoaXZlXG4gKiBAcGFyYW0gZGVzdCAtIHBhdGggdG8gd3JpdGUgdGhlIHJlc3VsdGluZyB6aXAgdG9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyY2hpdmVTeW5jKHNyYzogc3RyaW5nLCBkZXN0OiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlczogUmVjb3JkPHN0cmluZywgVWludDhBcnJheT4gPSB7fTtcbiAgICBjb25zdCB3YWxrID0gKGRpcjogc3RyaW5nLCBwcmVmaXg6IHN0cmluZykgPT4ge1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBmcy5yZWFkZGlyU3luYyhkaXIpKSB7XG4gICAgICAgIGNvbnN0IGZ1bGwgPSBwYXRoLmpvaW4oZGlyLCBlbnRyeSk7XG4gICAgICAgIGNvbnN0IHppcFBhdGggPSBwcmVmaXggPyBgJHtwcmVmaXh9LyR7ZW50cnl9YCA6IGVudHJ5O1xuICAgICAgICBpZiAoZnMuc3RhdFN5bmMoZnVsbCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIHdhbGsoZnVsbCwgemlwUGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZXNbemlwUGF0aF0gPSBmcy5yZWFkRmlsZVN5bmMoZnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsoc3JjLCBcIlwiKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGRlc3QsIHppcFN5bmMoZmlsZXMsIHsgbGV2ZWw6IDkgfSkpO1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIHRocm93IGFzc2V0Q2FuTm90Q3JlYXRlWmlwQXJjaGl2ZShzcmMsIGRlc3QsIGVycik7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wdXRlIGEgc3RhYmxlIE1ENSBoYXNoIG9mIGEgZmlsZSBvciBkaXJlY3RvcnkncyBjb250ZW50cy5cbiAqIERpcmVjdG9yaWVzIGFyZSBoYXNoZWQgYnkgcmVjdXJzaXZlbHkgZm9sZGluZyBlYWNoIGZpbGUncyBjb250ZW50cyBpbnRvXG4gKiB0aGUgc2FtZSBkaWdlc3QsIGluIGRpcmVjdG9yeS1saXN0aW5nIG9yZGVyLlxuICogQHBhcmFtIHNyYyAtIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBoYXNoXG4gKiBAcmV0dXJucyB1cHBlcmNhc2VkIGhleCBkaWdlc3QsIHRydW5jYXRlZCB0byBIQVNIX0xFTiBjaGFyYWN0ZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoUGF0aChzcmM6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaChcIm1kNVwiKTtcblxuICAvKipcbiAgICogV2FsayBgcGAsIGZlZWRpbmcgYW55IGZpbGUgY29udGVudHMgaW50byB0aGUgZW5jbG9zaW5nIGhhc2ggYWNjdW11bGF0b3IuXG4gICAqIEBwYXJhbSBwIC0gcGF0aCB0byB3YWxrXG4gICAqL1xuICBmdW5jdGlvbiBoYXNoUmVjdXJzaW9uKHA6IHN0cmluZykge1xuICAgIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhwKTtcbiAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgICAgaGFzaC51cGRhdGUoZnMucmVhZEZpbGVTeW5jKHApKTtcbiAgICB9IGVsc2UgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgZnMucmVhZGRpclN5bmMocCkuZm9yRWFjaCgoZmlsZW5hbWUpID0+XG4gICAgICAgIGhhc2hSZWN1cnNpb24ocGF0aC5yZXNvbHZlKHAsIGZpbGVuYW1lKSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhhc2hSZWN1cnNpb24oc3JjKTtcbiAgcmV0dXJuIGhhc2guZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIEhBU0hfTEVOKS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFdhbGsgdXB3YXJkIGZyb20gYHJvb3RQYXRoYCBsb29raW5nIGZvciBhIGZpbGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cbiAqIFJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGZpcnN0IG1hdGNoLCBvciBgbnVsbGAgaWYgdGhlIHNlYXJjaFxuICogcmVhY2hlcyB0aGUgZmlsZXN5c3RlbSByb290IHdpdGhvdXQgZmluZGluZyBpdC5cbiAqIEBwYXJhbSBmaWxlIC0gZmlsZW5hbWUgdG8gc2VhcmNoIGZvclxuICogQHBhcmFtIHJvb3RQYXRoIC0gZGlyZWN0b3J5IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbSAoZGVmYXVsdHMgdG8gY3dkKVxuICogQHJldHVybnMgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSwgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWxlQWJvdmVDd2QoXG4gIGZpbGU6IHN0cmluZyxcbiAgcm9vdFBhdGg6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCksXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIGZpbGUpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhmdWxsUGF0aCkpIHtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cblxuICBjb25zdCBwYXJlbnREaXIgPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIFwiLi5cIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHBhcmVudERpcikgJiYgcGFyZW50RGlyICE9PSByb290UGF0aCkge1xuICAgIHJldHVybiBmaW5kRmlsZUFib3ZlQ3dkKGZpbGUsIHBhcmVudERpcik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
@@ -95,4 +95,4 @@ function removeDupes(path) {
95
95
  }
96
96
  return ret;
97
97
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidW5pcXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUNBLG9DQWlDQztBQXBFRCwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsc0NBQWdFO0FBRWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFFNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsb0JBQW9CO0FBQy9DLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUV2Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUFvQjtJQUMvQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBRXZELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUEsNENBQW1DLEdBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSxnQ0FBZ0M7SUFDaEMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLHFFQUFxRTtRQUNyRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSw2Q0FBNkM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUQsMEVBQTBFO1FBQzFFLG1CQUFtQjtRQUNuQixJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNsQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxvQkFBb0IsQ0FBQztTQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDaEIsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUUzQixPQUFPLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ25DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxRQUFRLENBQUMsSUFBYztJQUM5QixNQUFNLEdBQUcsR0FBRyxNQUFNO1NBQ2YsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLFNBQVMsMEJBQTBCLENBQUMsQ0FBUztJQUMzQyxPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBUyx3QkFBd0IsQ0FBQyxDQUFTO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFjO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFFaEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDakUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdmFyLXJlcXVpcmVzXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgY2Fubm90Q2FsY0lkRm9yRW1wdHlTZXRPZkNvbXBvbmVudHMgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbi8qKlxuICogUmVzb3VyY2VzIHdpdGggdGhpcyBJRCBhcmUgaGlkZGVuIGZyb20gaHVtYW5zXG4gKlxuICogVGhleSBkbyBub3QgYXBwZWFyIGluIHRoZSBodW1hbi1yZWFkYWJsZSBwYXJ0IG9mIHRoZSBsb2dpY2FsIElELFxuICogYnV0IHRoZXkgYXJlIGluY2x1ZGVkIGluIHRoZSBoYXNoIGNhbGN1bGF0aW9uLlxuICovXG5jb25zdCBISURERU5fRlJPTV9IVU1BTl9JRCA9IFwiUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBSZXNvdXJjZXMgd2l0aCB0aGlzIElEIGFyZSBjb21wbGV0ZSBoaWRkZW4gZnJvbSB0aGUgbG9naWNhbCBJRCBjYWxjdWxhdGlvbi5cbiAqL1xuY29uc3QgSElEREVOX0lEID0gXCJEZWZhdWx0XCI7XG5cbmNvbnN0IFBBVEhfU0VQID0gXCIvXCI7XG5jb25zdCBVTklRVUVfU0VQID0gXCJfXCI7XG5cbmNvbnN0IEhBU0hfTEVOID0gODtcbmNvbnN0IE1BWF9IVU1BTl9MRU4gPSAyNDA7IC8vIG1heCBJRCBsZW4gaXMgMjU1XG5jb25zdCBNQVhfSURfTEVOID0gMjU1O1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgYSB1bmlxdWUgSUQgZm9yIGEgc2V0IG9mIHRleHR1YWwgY29tcG9uZW50cy5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgY2FsY3VsYXRpbmcgYSBoYXNoIG9uIHRoZSBmdWxsIHBhdGggYW5kIHVzaW5nIGl0IGFzIGEgc3VmZml4XG4gKiBvZiBhIGxlbmd0aC1saW1pdGVkIFwiaHVtYW5cIiByZW5kaXRpb24gb2YgdGhlIHBhdGggY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50cyBUaGUgcGF0aCBjb21wb25lbnRzXG4gKiBAcmV0dXJucyBhIHVuaXF1ZSBhbHBoYS1udW1lcmljIGlkZW50aWZpZXIgd2l0aCBhIG1heGltdW0gbGVuZ3RoIG9mIDI1NVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVuaXF1ZUlkKGNvbXBvbmVudHM6IHN0cmluZ1tdKSB7XG4gIGNvbXBvbmVudHMgPSBjb21wb25lbnRzLmZpbHRlcigoeCkgPT4geCAhPT0gSElEREVOX0lEKTtcblxuICBpZiAoY29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBjYW5ub3RDYWxjSWRGb3JFbXB0eVNldE9mQ29tcG9uZW50cygpO1xuICB9XG5cbiAgLy8gdG9wLWxldmVsIHJlc291cmNlcyB3aWxsIHNpbXBseSB1c2UgdGhlIGBuYW1lYCBhcy1pcyBpbiBvcmRlciB0byBzdXBwb3J0XG4gIC8vIHRyYW5zcGFyZW50IG1pZ3JhdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZXMgdG8gdGhlIENESyB3aXRob3V0IHRoZVxuICAvLyBuZWVkIHRvIHJlbmFtZSBhbGwgcmVzb3VyY2VzLlxuICBpZiAoY29tcG9uZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyB3ZSBmaWx0ZXIgb3V0IG5vbi1hbHBoYSBjaGFyYWN0ZXJzIGJ1dCB0aGF0IGlzIGFjdHVhbGx5IGEgYmFkIGlkZWFcbiAgICAvLyBiZWNhdXNlIGl0IGNvdWxkIGNyZWF0ZSBjb25mbGljdHMgKFwiQS1CXCIgYW5kIFwiQUJcIiB3aWxsIHJlbmRlciB0aGUgc2FtZVxuICAgIC8vIGxvZ2ljYWwgSUQpLiBzYWRseSwgY2hhbmdpbmcgaXQgaW4gdGhlIDEueCB2ZXJzaW9uIGxpbmUgaXMgaW1wb3NzaWJsZVxuICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJyZWFraW5nIGNoYW5nZS4gd2Ugc2hvdWxkIGNvbnNpZGVyIGZvciB2Mi4wLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvNjQyMVxuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHJlbW92ZURpc2FsbG93ZWRDaGFyYWN0ZXJzKGNvbXBvbmVudHNbMF0pO1xuXG4gICAgLy8gaWYgb3VyIGNhbmRpZGF0ZSBpcyBzaG9ydCBlbm91Z2gsIHVzZSBpdCBhcyBpcy4gb3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG9cbiAgICAvLyB0aGUgbm9ybWFsIG1vZGUuXG4gICAgaWYgKGNhbmRpZGF0ZS5sZW5ndGggPD0gTUFYX0lEX0xFTikge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYXNoID0gcGF0aEhhc2goY29tcG9uZW50cyk7XG4gIGNvbnN0IGh1bWFuID0gcmVtb3ZlRHVwZXMoY29tcG9uZW50cylcbiAgICAuZmlsdGVyKCh4KSA9PiB4ICE9PSBISURERU5fRlJPTV9IVU1BTl9JRClcbiAgICAubWFwKChzKSA9PiByZW1vdmVEaXNhbGxvd2VkQ2hhcmFjdGVycyhzKSlcbiAgICAuam9pbihVTklRVUVfU0VQKVxuICAgIC5zbGljZSgwLCBNQVhfSFVNQU5fTEVOKTtcblxuICByZXR1cm4gaHVtYW4gKyBVTklRVUVfU0VQICsgaGFzaDtcbn1cblxuLyoqXG4gKiBUYWtlIGEgaGFzaCBvZiB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBUaGUgaGFzaCBpcyBsaW1pdGVkIGluIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHBhdGhIYXNoKHBhdGg6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgbWQ1ID0gY3J5cHRvXG4gICAgLmNyZWF0ZUhhc2goXCJtZDVcIilcbiAgICAudXBkYXRlKHBhdGguam9pbihQQVRIX1NFUCkpXG4gICAgLmRpZ2VzdChcImhleFwiKTtcbiAgcmV0dXJuIG1kNS5zbGljZSgwLCBIQVNIX0xFTikudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmZ1bmN0aW9uIHJlbW92ZURpc2FsbG93ZWRDaGFyYWN0ZXJzKHM6IHN0cmluZykge1xuICByZXR1cm4gcmVtb3ZlTm9uQWxwaGFudW1lcmljU2VwKHMpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gcmVtb3ZlTm9uQWxwaGFudW1lcmljU2VwKHM6IHN0cmluZykge1xuICByZXR1cm4gcy5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXS9nLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgZHVwbGljYXRlIFwidGVybXNcIiBmcm9tIHRoZSBwYXRoIGxpc3RcbiAqXG4gKiBJZiB0aGUgcHJldmlvdXMgcGF0aCBjb21wb25lbnQgbmFtZSBlbmRzIHdpdGggdGhpcyBjb21wb25lbnQgbmFtZSwgc2tpcCB0aGVcbiAqIGN1cnJlbnQgY29tcG9uZW50LlxuICovXG5mdW5jdGlvbiByZW1vdmVEdXBlcyhwYXRoOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBwYXRoKSB7XG4gICAgaWYgKHJldC5sZW5ndGggPT09IDAgfHwgIXJldFtyZXQubGVuZ3RoIC0gMV0uZW5kc1dpdGgoY29tcG9uZW50KSkge1xuICAgICAgcmV0LnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvdW5pcXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUNBLG9DQWlDQztBQXBFRCwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsc0NBQWdFO0FBRWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFFNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUV2QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsb0JBQW9CO0FBQy9DLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUV2Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLFlBQVksQ0FBQyxVQUFvQjtJQUMvQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBRXZELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUEsNENBQW1DLEdBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsMkVBQTJFO0lBQzNFLDJFQUEyRTtJQUMzRSxnQ0FBZ0M7SUFDaEMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLHFFQUFxRTtRQUNyRSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLHFFQUFxRTtRQUNyRSw2Q0FBNkM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUQsMEVBQTBFO1FBQzFFLG1CQUFtQjtRQUNuQixJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNsQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxvQkFBb0IsQ0FBQztTQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDaEIsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUUzQixPQUFPLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ25DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxRQUFRLENBQUMsSUFBYztJQUM5QixNQUFNLEdBQUcsR0FBRyxNQUFNO1NBQ2YsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLFNBQVMsMEJBQTBCLENBQUMsQ0FBUztJQUMzQyxPQUFPLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBUyx3QkFBd0IsQ0FBQyxDQUFTO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFjO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFFaEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDakUsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdmFyLXJlcXVpcmVzXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgY2Fubm90Q2FsY0lkRm9yRW1wdHlTZXRPZkNvbXBvbmVudHMgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbi8qKlxuICogUmVzb3VyY2VzIHdpdGggdGhpcyBJRCBhcmUgaGlkZGVuIGZyb20gaHVtYW5zXG4gKlxuICogVGhleSBkbyBub3QgYXBwZWFyIGluIHRoZSBodW1hbi1yZWFkYWJsZSBwYXJ0IG9mIHRoZSBsb2dpY2FsIElELFxuICogYnV0IHRoZXkgYXJlIGluY2x1ZGVkIGluIHRoZSBoYXNoIGNhbGN1bGF0aW9uLlxuICovXG5jb25zdCBISURERU5fRlJPTV9IVU1BTl9JRCA9IFwiUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBSZXNvdXJjZXMgd2l0aCB0aGlzIElEIGFyZSBjb21wbGV0ZSBoaWRkZW4gZnJvbSB0aGUgbG9naWNhbCBJRCBjYWxjdWxhdGlvbi5cbiAqL1xuY29uc3QgSElEREVOX0lEID0gXCJEZWZhdWx0XCI7XG5cbmNvbnN0IFBBVEhfU0VQID0gXCIvXCI7XG5jb25zdCBVTklRVUVfU0VQID0gXCJfXCI7XG5cbmNvbnN0IEhBU0hfTEVOID0gODtcbmNvbnN0IE1BWF9IVU1BTl9MRU4gPSAyNDA7IC8vIG1heCBJRCBsZW4gaXMgMjU1XG5jb25zdCBNQVhfSURfTEVOID0gMjU1O1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgYSB1bmlxdWUgSUQgZm9yIGEgc2V0IG9mIHRleHR1YWwgY29tcG9uZW50cy5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgY2FsY3VsYXRpbmcgYSBoYXNoIG9uIHRoZSBmdWxsIHBhdGggYW5kIHVzaW5nIGl0IGFzIGEgc3VmZml4XG4gKiBvZiBhIGxlbmd0aC1saW1pdGVkIFwiaHVtYW5cIiByZW5kaXRpb24gb2YgdGhlIHBhdGggY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50cyBUaGUgcGF0aCBjb21wb25lbnRzXG4gKiBAcmV0dXJucyBhIHVuaXF1ZSBhbHBoYS1udW1lcmljIGlkZW50aWZpZXIgd2l0aCBhIG1heGltdW0gbGVuZ3RoIG9mIDI1NVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVVuaXF1ZUlkKGNvbXBvbmVudHM6IHN0cmluZ1tdKSB7XG4gIGNvbXBvbmVudHMgPSBjb21wb25lbnRzLmZpbHRlcigoeCkgPT4geCAhPT0gSElEREVOX0lEKTtcblxuICBpZiAoY29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBjYW5ub3RDYWxjSWRGb3JFbXB0eVNldE9mQ29tcG9uZW50cygpO1xuICB9XG5cbiAgLy8gdG9wLWxldmVsIHJlc291cmNlcyB3aWxsIHNpbXBseSB1c2UgdGhlIGBuYW1lYCBhcy1pcyBpbiBvcmRlciB0byBzdXBwb3J0XG4gIC8vIHRyYW5zcGFyZW50IG1pZ3JhdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZXMgdG8gdGhlIENESyB3aXRob3V0IHRoZVxuICAvLyBuZWVkIHRvIHJlbmFtZSBhbGwgcmVzb3VyY2VzLlxuICBpZiAoY29tcG9uZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyB3ZSBmaWx0ZXIgb3V0IG5vbi1hbHBoYSBjaGFyYWN0ZXJzIGJ1dCB0aGF0IGlzIGFjdHVhbGx5IGEgYmFkIGlkZWFcbiAgICAvLyBiZWNhdXNlIGl0IGNvdWxkIGNyZWF0ZSBjb25mbGljdHMgKFwiQS1CXCIgYW5kIFwiQUJcIiB3aWxsIHJlbmRlciB0aGUgc2FtZVxuICAgIC8vIGxvZ2ljYWwgSUQpLiBzYWRseSwgY2hhbmdpbmcgaXQgaW4gdGhlIDEueCB2ZXJzaW9uIGxpbmUgaXMgaW1wb3NzaWJsZVxuICAgIC8vIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJyZWFraW5nIGNoYW5nZS4gd2Ugc2hvdWxkIGNvbnNpZGVyIGZvciB2Mi4wLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvNjQyMVxuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHJlbW92ZURpc2FsbG93ZWRDaGFyYWN0ZXJzKGNvbXBvbmVudHNbMF0pO1xuXG4gICAgLy8gaWYgb3VyIGNhbmRpZGF0ZSBpcyBzaG9ydCBlbm91Z2gsIHVzZSBpdCBhcyBpcy4gb3RoZXJ3aXNlLCBmYWxsIGJhY2sgdG9cbiAgICAvLyB0aGUgbm9ybWFsIG1vZGUuXG4gICAgaWYgKGNhbmRpZGF0ZS5sZW5ndGggPD0gTUFYX0lEX0xFTikge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYXNoID0gcGF0aEhhc2goY29tcG9uZW50cyk7XG4gIGNvbnN0IGh1bWFuID0gcmVtb3ZlRHVwZXMoY29tcG9uZW50cylcbiAgICAuZmlsdGVyKCh4KSA9PiB4ICE9PSBISURERU5fRlJPTV9IVU1BTl9JRClcbiAgICAubWFwKChzKSA9PiByZW1vdmVEaXNhbGxvd2VkQ2hhcmFjdGVycyhzKSlcbiAgICAuam9pbihVTklRVUVfU0VQKVxuICAgIC5zbGljZSgwLCBNQVhfSFVNQU5fTEVOKTtcblxuICByZXR1cm4gaHVtYW4gKyBVTklRVUVfU0VQICsgaGFzaDtcbn1cblxuLyoqXG4gKiBUYWtlIGEgaGFzaCBvZiB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBUaGUgaGFzaCBpcyBsaW1pdGVkIGluIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHBhdGhIYXNoKHBhdGg6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgbWQ1ID0gY3J5cHRvXG4gICAgLmNyZWF0ZUhhc2goXCJtZDVcIilcbiAgICAudXBkYXRlKHBhdGguam9pbihQQVRIX1NFUCkpXG4gICAgLmRpZ2VzdChcImhleFwiKTtcbiAgcmV0dXJuIG1kNS5zbGljZSgwLCBIQVNIX0xFTikudG9VcHBlckNhc2UoKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmZ1bmN0aW9uIHJlbW92ZURpc2FsbG93ZWRDaGFyYWN0ZXJzKHM6IHN0cmluZykge1xuICByZXR1cm4gcmVtb3ZlTm9uQWxwaGFudW1lcmljU2VwKHMpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZnVuY3Rpb24gcmVtb3ZlTm9uQWxwaGFudW1lcmljU2VwKHM6IHN0cmluZykge1xuICByZXR1cm4gcy5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXS9nLCBcIlwiKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgZHVwbGljYXRlIFwidGVybXNcIiBmcm9tIHRoZSBwYXRoIGxpc3RcbiAqXG4gKiBJZiB0aGUgcHJldmlvdXMgcGF0aCBjb21wb25lbnQgbmFtZSBlbmRzIHdpdGggdGhpcyBjb21wb25lbnQgbmFtZSwgc2tpcCB0aGVcbiAqIGN1cnJlbnQgY29tcG9uZW50LlxuICovXG5mdW5jdGlvbiByZW1vdmVEdXBlcyhwYXRoOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBwYXRoKSB7XG4gICAgaWYgKHJldC5sZW5ndGggPT09IDAgfHwgIXJldFtyZXQubGVuZ3RoIC0gMV0uZW5kc1dpdGgoY29tcG9uZW50KSkge1xuICAgICAgcmV0LnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuIl19