aws-cdk 2.31.2 → 2.33.0

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 (355) hide show
  1. package/CONTRIBUTING.md +29 -0
  2. package/README.md +7 -6
  3. package/THIRD_PARTY_LICENSES +9 -5
  4. package/build-info.json +2 -2
  5. package/lib/api/cloudformation-deployments.d.ts +1 -1
  6. package/lib/api/cloudformation-deployments.js +3 -3
  7. package/lib/api/nested-stack-helpers.d.ts +13 -13
  8. package/lib/api/nested-stack-helpers.js +7 -7
  9. package/lib/api/util/cloudformation.d.ts +3 -2
  10. package/lib/api/util/cloudformation.js +9 -5
  11. package/lib/bridge.js +25 -15
  12. package/lib/cdk-toolkit.d.ts +7 -0
  13. package/lib/cdk-toolkit.js +2 -2
  14. package/lib/cli.js +6 -3
  15. package/lib/commands/context.js +67 -7
  16. package/lib/index.js +13639 -5366
  17. package/lib/init-templates/{v1/app → app}/csharp/.template.gitignore +0 -0
  18. package/lib/init-templates/{v1/app → app}/csharp/README.md +0 -0
  19. package/lib/init-templates/app/csharp/add-project.hook.d.ts +2 -0
  20. package/lib/init-templates/{v2/app → app}/csharp/add-project.hook.js +1 -1
  21. package/lib/init-templates/{v1/app → app}/csharp/cdk.template.json +0 -0
  22. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  23. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  24. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  25. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  26. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  27. package/lib/init-templates/{v1/app → app}/fsharp/.template.gitignore +0 -0
  28. package/lib/init-templates/{v1/app → app}/fsharp/README.md +0 -0
  29. package/lib/init-templates/app/fsharp/add-project.hook.d.ts +2 -0
  30. package/lib/init-templates/{v1/app → app}/fsharp/add-project.hook.js +1 -1
  31. package/lib/init-templates/{v1/app → app}/fsharp/cdk.template.json +0 -0
  32. package/lib/init-templates/{v2/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  33. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -0
  34. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  35. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  36. package/lib/init-templates/{v2/app → app}/go/%name%.template.go +0 -0
  37. package/lib/init-templates/{v2/app → app}/go/%name%_test.template.go +0 -0
  38. package/lib/init-templates/{v1/app → app}/go/.template.gitignore +0 -0
  39. package/lib/init-templates/{v2/app → app}/go/README.md +1 -3
  40. package/lib/init-templates/{v1/app → app}/go/cdk.template.json +0 -0
  41. package/lib/init-templates/{v2/app → app}/go/go.template.mod +0 -0
  42. package/lib/init-templates/{v1/app → app}/info.json +0 -0
  43. package/lib/init-templates/{v1/app → app}/java/.template.gitignore +0 -0
  44. package/lib/init-templates/{v1/app → app}/java/README.md +0 -0
  45. package/lib/init-templates/{v1/app → app}/java/cdk.json +0 -0
  46. package/lib/init-templates/{v2/app → app}/java/pom.xml +0 -0
  47. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  48. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  49. package/lib/init-templates/{v2/app → app}/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -0
  50. package/lib/init-templates/app/java/sub-placeholders.hook.d.ts +2 -0
  51. package/lib/init-templates/{v1/app → app}/java/sub-placeholders.hook.js +1 -1
  52. package/lib/init-templates/{v1/app → app}/javascript/.template.gitignore +0 -0
  53. package/lib/init-templates/{v1/app → app}/javascript/.template.npmignore +0 -0
  54. package/lib/init-templates/{v1/app → app}/javascript/README.md +0 -0
  55. package/lib/init-templates/{v2/app → app}/javascript/bin/%name%.template.js +0 -0
  56. package/lib/init-templates/{v1/app → app}/javascript/cdk.template.json +0 -0
  57. package/lib/init-templates/{v1/sample-app → app}/javascript/jest.config.js +0 -0
  58. package/lib/init-templates/{v2/app → app}/javascript/lib/%name%-stack.template.js +0 -0
  59. package/lib/init-templates/{v2/app → app}/javascript/package.json +0 -0
  60. package/lib/init-templates/app/javascript/sub-placeholders.hook.d.ts +2 -0
  61. package/lib/init-templates/{v1/sample-app → app}/javascript/sub-placeholders.hook.js +1 -1
  62. package/lib/init-templates/{v2/app → app}/javascript/test/%name%.test.template.js +0 -0
  63. package/lib/init-templates/{v2/app → app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  64. package/lib/init-templates/{v1/app → app}/python/%name.PythonModule%/__init__.py +0 -0
  65. package/lib/init-templates/{v2/app → app}/python/.template.gitignore +0 -0
  66. package/lib/init-templates/{v1/app → app}/python/README.template.md +0 -0
  67. package/lib/init-templates/{v2/app → app}/python/app.template.py +0 -0
  68. package/lib/init-templates/{v1/app → app}/python/cdk.template.json +0 -0
  69. package/lib/init-templates/{v1/app → app}/python/requirements-dev.txt +0 -0
  70. package/lib/init-templates/{v2/app → app}/python/requirements.txt +0 -0
  71. package/lib/init-templates/{v1/app → app}/python/source.bat +0 -0
  72. package/lib/init-templates/app/python/sub-placeholders.hook.d.ts +2 -0
  73. package/lib/init-templates/{v1/sample-app → app}/python/sub-placeholders.hook.js +1 -1
  74. package/lib/init-templates/{v1/app → app}/python/tests/__init__.py +0 -0
  75. package/lib/init-templates/{v1/app → app}/python/tests/unit/__init__.py +0 -0
  76. package/lib/init-templates/{v2/app → app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  77. package/lib/init-templates/{v1/app → app}/typescript/.template.gitignore +0 -0
  78. package/lib/init-templates/{v1/app → app}/typescript/.template.npmignore +0 -0
  79. package/lib/init-templates/{v1/app → app}/typescript/README.md +0 -0
  80. package/lib/init-templates/{v2/app → app}/typescript/bin/%name%.template.ts +0 -0
  81. package/lib/init-templates/{v1/app → app}/typescript/cdk.template.json +0 -0
  82. package/lib/init-templates/{v1/app → app}/typescript/jest.config.js +0 -0
  83. package/lib/init-templates/{v2/app → app}/typescript/lib/%name%-stack.template.ts +0 -0
  84. package/lib/init-templates/{v2/app → app}/typescript/package.json +1 -1
  85. package/lib/init-templates/app/typescript/sub-placeholders.hook.d.ts +2 -0
  86. package/lib/init-templates/{v1/app/javascript → app/typescript}/sub-placeholders.hook.js +1 -1
  87. package/lib/init-templates/{v2/app → app}/typescript/test/%name%.test.template.ts +0 -0
  88. package/lib/init-templates/{v1/app → app}/typescript/tsconfig.json +0 -0
  89. package/lib/init-templates/{v1/lib → lib}/info.json +0 -0
  90. package/lib/init-templates/{v1/lib → lib}/typescript/.template.gitignore +0 -0
  91. package/lib/init-templates/{v1/lib → lib}/typescript/.template.npmignore +0 -0
  92. package/lib/init-templates/{v2/lib → lib}/typescript/README.template.md +0 -0
  93. package/lib/init-templates/{v1/lib → lib}/typescript/jest.config.js +0 -0
  94. package/lib/init-templates/{v2/lib → lib}/typescript/lib/index.template.ts +0 -0
  95. package/lib/init-templates/{v2/lib → lib}/typescript/package.json +0 -0
  96. package/lib/init-templates/lib/typescript/sub-placeholders.hook.d.ts +2 -0
  97. package/lib/init-templates/{v1/lib → lib}/typescript/sub-placeholders.hook.js +1 -1
  98. package/lib/init-templates/{v2/lib → lib}/typescript/test/%name%.test.template.ts +0 -0
  99. package/lib/init-templates/{v1/lib → lib}/typescript/tsconfig.json +0 -0
  100. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/.template.gitignore +0 -0
  101. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/README.template.md +0 -0
  102. package/lib/init-templates/sample-app/csharp/add-project.hook.d.ts +2 -0
  103. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/add-project.hook.js +1 -1
  104. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/cdk.template.json +0 -0
  105. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  106. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  107. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  108. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  109. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  110. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/.template.gitignore +0 -0
  111. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/README.template.md +0 -0
  112. package/lib/init-templates/sample-app/fsharp/add-project.hook.d.ts +2 -0
  113. package/lib/init-templates/{v2/app → sample-app}/fsharp/add-project.hook.js +1 -1
  114. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/cdk.template.json +0 -0
  115. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  116. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +1 -1
  117. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  118. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  119. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%.template.go +0 -0
  120. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%_test.template.go +0 -0
  121. package/lib/init-templates/{v1/sample-app → sample-app}/go/.template.gitignore +0 -0
  122. package/lib/init-templates/{v2/sample-app → sample-app}/go/README.md +1 -3
  123. package/lib/init-templates/{v1/sample-app → sample-app}/go/cdk.template.json +0 -0
  124. package/lib/init-templates/{v2/sample-app → sample-app}/go/go.template.mod +0 -0
  125. package/lib/init-templates/{v1/sample-app → sample-app}/info.json +0 -0
  126. package/lib/init-templates/{v1/sample-app → sample-app}/java/.template.gitignore +0 -0
  127. package/lib/init-templates/{v2/sample-app → sample-app}/java/README.template.md +0 -0
  128. package/lib/init-templates/{v1/sample-app → sample-app}/java/cdk.json +0 -0
  129. package/lib/init-templates/{v2/sample-app → sample-app}/java/pom.xml +0 -0
  130. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  131. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  132. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -0
  133. package/lib/init-templates/sample-app/java/sub-placeholders.hook.d.ts +2 -0
  134. package/lib/init-templates/{v1/sample-app → sample-app}/java/sub-placeholders.hook.js +1 -1
  135. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.gitignore +0 -0
  136. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.npmignore +0 -0
  137. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/README.template.md +0 -0
  138. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/bin/%name%.template.js +0 -0
  139. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/cdk.template.json +0 -0
  140. package/lib/init-templates/{v2/app → sample-app}/javascript/jest.config.js +0 -0
  141. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/lib/%name%-stack.template.js +0 -0
  142. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/package.json +0 -0
  143. package/lib/init-templates/sample-app/javascript/sub-placeholders.hook.d.ts +2 -0
  144. package/lib/init-templates/{v1/app/typescript → sample-app/javascript}/sub-placeholders.hook.js +1 -1
  145. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/test/%name%.test.template.js +0 -0
  146. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/tsconfig.json +0 -0
  147. package/lib/init-templates/{v2/sample-app → sample-app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  148. package/lib/init-templates/{v1/sample-app → sample-app}/python/%name.PythonModule%/__init__.py +0 -0
  149. package/lib/init-templates/{v1/sample-app → sample-app}/python/.template.gitignore +0 -0
  150. package/lib/init-templates/{v2/sample-app → sample-app}/python/README.template.md +0 -0
  151. package/lib/init-templates/{v2/sample-app → sample-app}/python/app.template.py +0 -0
  152. package/lib/init-templates/{v1/sample-app → sample-app}/python/cdk.template.json +0 -0
  153. package/lib/init-templates/{v1/sample-app → sample-app}/python/requirements-dev.txt +0 -0
  154. package/lib/init-templates/{v2/sample-app → sample-app}/python/requirements.txt +0 -0
  155. package/lib/init-templates/{v1/sample-app → sample-app}/python/source.bat +0 -0
  156. package/lib/init-templates/sample-app/python/sub-placeholders.hook.d.ts +2 -0
  157. package/lib/init-templates/{v2/app → sample-app}/python/sub-placeholders.hook.js +1 -1
  158. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/__init__.py +0 -0
  159. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/unit/__init__.py +0 -0
  160. package/lib/init-templates/{v2/sample-app → sample-app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  161. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.gitignore +0 -0
  162. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.npmignore +0 -0
  163. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/README.template.md +0 -0
  164. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/bin/%name%.template.ts +0 -0
  165. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/cdk.template.json +0 -0
  166. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/jest.config.js +0 -0
  167. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/lib/%name%-stack.template.ts +0 -0
  168. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/package.json +1 -1
  169. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.d.ts +2 -0
  170. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.js +9 -0
  171. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/test/%name%.test.template.ts +0 -0
  172. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/tsconfig.json +0 -0
  173. package/lib/init.js +3 -16
  174. package/lib/notices.js +9 -15
  175. package/lib/setup-sandbox.js +6 -3
  176. package/lib/util/directories.d.ts +11 -0
  177. package/lib/util/directories.js +19 -2
  178. package/package.json +14 -13
  179. package/test/api/deploy-stack.test.js +2 -2
  180. package/test/commands/context-command.test.js +186 -47
  181. package/test/init.test.js +50 -56
  182. package/test/integ/cli/cli.integtest.js +30 -1
  183. package/test/integ/cli/sam_cdk_integ_app/src/python/Function/requirements.txt +1 -1
  184. package/test/integ/cli/sam_cdk_integ_app/src/python/Layer/requirements.txt +1 -1
  185. package/test/util/cloudformation.test.js +31 -4
  186. package/lib/init-templates/v1/app/csharp/add-project.hook.d.ts +0 -2
  187. package/lib/init-templates/v1/app/csharp/add-project.hook.js +0 -31
  188. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -19
  189. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -12
  190. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs +0 -45
  191. package/lib/init-templates/v1/app/fsharp/add-project.hook.d.ts +0 -2
  192. package/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -24
  193. package/lib/init-templates/v1/app/go/%name%.template.go +0 -68
  194. package/lib/init-templates/v1/app/go/%name%_test.template.go +0 -26
  195. package/lib/init-templates/v1/app/go/README.md +0 -14
  196. package/lib/init-templates/v1/app/go/go.template.mod +0 -9
  197. package/lib/init-templates/v1/app/java/pom.xml +0 -60
  198. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -41
  199. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -24
  200. package/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -26
  201. package/lib/init-templates/v1/app/java/sub-placeholders.hook.d.ts +0 -2
  202. package/lib/init-templates/v1/app/javascript/bin/%name%.template.js +0 -21
  203. package/lib/init-templates/v1/app/javascript/jest.config.js +0 -3
  204. package/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js +0 -23
  205. package/lib/init-templates/v1/app/javascript/package.json +0 -20
  206. package/lib/init-templates/v1/app/javascript/sub-placeholders.hook.d.ts +0 -2
  207. package/lib/init-templates/v1/app/javascript/test/%name%.test.template.js +0 -18
  208. package/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  209. package/lib/init-templates/v1/app/python/.template.gitignore +0 -11
  210. package/lib/init-templates/v1/app/python/app.template.py +0 -34
  211. package/lib/init-templates/v1/app/python/requirements.txt +0 -2
  212. package/lib/init-templates/v1/app/python/sub-placeholders.hook.d.ts +0 -2
  213. package/lib/init-templates/v1/app/python/sub-placeholders.hook.js +0 -9
  214. package/lib/init-templates/v1/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -19
  215. package/lib/init-templates/v1/app/typescript/bin/%name%.template.ts +0 -21
  216. package/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts +0 -15
  217. package/lib/init-templates/v1/app/typescript/package.json +0 -28
  218. package/lib/init-templates/v1/app/typescript/sub-placeholders.hook.d.ts +0 -2
  219. package/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts +0 -17
  220. package/lib/init-templates/v1/lib/typescript/README.template.md +0 -12
  221. package/lib/init-templates/v1/lib/typescript/lib/index.template.ts +0 -20
  222. package/lib/init-templates/v1/lib/typescript/package.json +0 -26
  223. package/lib/init-templates/v1/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  224. package/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts +0 -18
  225. package/lib/init-templates/v1/sample-app/csharp/README.template.md +0 -22
  226. package/lib/init-templates/v1/sample-app/csharp/add-project.hook.d.ts +0 -2
  227. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -23
  228. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -23
  229. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.d.ts +0 -2
  230. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.js +0 -31
  231. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -27
  232. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -14
  233. package/lib/init-templates/v1/sample-app/go/%name%.template.go +0 -71
  234. package/lib/init-templates/v1/sample-app/go/%name%_test.template.go +0 -25
  235. package/lib/init-templates/v1/sample-app/go/README.md +0 -14
  236. package/lib/init-templates/v1/sample-app/go/go.template.mod +0 -9
  237. package/lib/init-templates/v1/sample-app/java/README.template.md +0 -23
  238. package/lib/init-templates/v1/sample-app/java/pom.xml +0 -72
  239. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -13
  240. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -29
  241. package/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -26
  242. package/lib/init-templates/v1/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  243. package/lib/init-templates/v1/sample-app/javascript/README.template.md +0 -17
  244. package/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js +0 -6
  245. package/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js +0 -25
  246. package/lib/init-templates/v1/sample-app/javascript/package.json +0 -23
  247. package/lib/init-templates/v1/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  248. package/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js +0 -25
  249. package/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  250. package/lib/init-templates/v1/sample-app/python/README.template.md +0 -68
  251. package/lib/init-templates/v1/sample-app/python/app.template.py +0 -11
  252. package/lib/init-templates/v1/sample-app/python/requirements.txt +0 -7
  253. package/lib/init-templates/v1/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  254. package/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -24
  255. package/lib/init-templates/v1/sample-app/typescript/README.template.md +0 -19
  256. package/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts +0 -6
  257. package/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts +0 -18
  258. package/lib/init-templates/v1/sample-app/typescript/package.json +0 -30
  259. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  260. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.js +0 -9
  261. package/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts +0 -25
  262. package/lib/init-templates/v2/app/csharp/.template.gitignore +0 -342
  263. package/lib/init-templates/v2/app/csharp/README.md +0 -14
  264. package/lib/init-templates/v2/app/csharp/add-project.hook.d.ts +0 -2
  265. package/lib/init-templates/v2/app/csharp/cdk.template.json +0 -15
  266. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  267. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln +0 -18
  268. package/lib/init-templates/v2/app/fsharp/.template.gitignore +0 -342
  269. package/lib/init-templates/v2/app/fsharp/README.md +0 -18
  270. package/lib/init-templates/v2/app/fsharp/add-project.hook.d.ts +0 -2
  271. package/lib/init-templates/v2/app/fsharp/cdk.template.json +0 -14
  272. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -8
  273. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  274. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  275. package/lib/init-templates/v2/app/go/.template.gitignore +0 -19
  276. package/lib/init-templates/v2/app/go/cdk.template.json +0 -13
  277. package/lib/init-templates/v2/app/info.json +0 -4
  278. package/lib/init-templates/v2/app/java/.template.gitignore +0 -13
  279. package/lib/init-templates/v2/app/java/README.md +0 -18
  280. package/lib/init-templates/v2/app/java/cdk.json +0 -13
  281. package/lib/init-templates/v2/app/java/sub-placeholders.hook.d.ts +0 -2
  282. package/lib/init-templates/v2/app/java/sub-placeholders.hook.js +0 -9
  283. package/lib/init-templates/v2/app/javascript/.template.gitignore +0 -5
  284. package/lib/init-templates/v2/app/javascript/.template.npmignore +0 -3
  285. package/lib/init-templates/v2/app/javascript/README.md +0 -12
  286. package/lib/init-templates/v2/app/javascript/cdk.template.json +0 -15
  287. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.d.ts +0 -2
  288. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.js +0 -9
  289. package/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py +0 -0
  290. package/lib/init-templates/v2/app/python/README.template.md +0 -58
  291. package/lib/init-templates/v2/app/python/cdk.template.json +0 -15
  292. package/lib/init-templates/v2/app/python/requirements-dev.txt +0 -1
  293. package/lib/init-templates/v2/app/python/source.bat +0 -13
  294. package/lib/init-templates/v2/app/python/sub-placeholders.hook.d.ts +0 -2
  295. package/lib/init-templates/v2/app/python/tests/__init__.py +0 -0
  296. package/lib/init-templates/v2/app/python/tests/unit/__init__.py +0 -0
  297. package/lib/init-templates/v2/app/typescript/.template.gitignore +0 -8
  298. package/lib/init-templates/v2/app/typescript/.template.npmignore +0 -6
  299. package/lib/init-templates/v2/app/typescript/README.md +0 -14
  300. package/lib/init-templates/v2/app/typescript/cdk.template.json +0 -17
  301. package/lib/init-templates/v2/app/typescript/jest.config.js +0 -8
  302. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.d.ts +0 -2
  303. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.js +0 -9
  304. package/lib/init-templates/v2/app/typescript/tsconfig.json +0 -30
  305. package/lib/init-templates/v2/lib/info.json +0 -4
  306. package/lib/init-templates/v2/lib/typescript/.template.gitignore +0 -8
  307. package/lib/init-templates/v2/lib/typescript/.template.npmignore +0 -6
  308. package/lib/init-templates/v2/lib/typescript/jest.config.js +0 -8
  309. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  310. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.js +0 -9
  311. package/lib/init-templates/v2/lib/typescript/tsconfig.json +0 -30
  312. package/lib/init-templates/v2/sample-app/csharp/.template.gitignore +0 -342
  313. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.d.ts +0 -2
  314. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.js +0 -31
  315. package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +0 -15
  316. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  317. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +0 -15
  318. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln +0 -18
  319. package/lib/init-templates/v2/sample-app/fsharp/.template.gitignore +0 -342
  320. package/lib/init-templates/v2/sample-app/fsharp/README.template.md +0 -20
  321. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.d.ts +0 -2
  322. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.js +0 -31
  323. package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +0 -14
  324. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  325. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  326. package/lib/init-templates/v2/sample-app/go/.template.gitignore +0 -19
  327. package/lib/init-templates/v2/sample-app/go/cdk.template.json +0 -13
  328. package/lib/init-templates/v2/sample-app/info.json +0 -4
  329. package/lib/init-templates/v2/sample-app/java/.template.gitignore +0 -13
  330. package/lib/init-templates/v2/sample-app/java/cdk.json +0 -13
  331. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  332. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.js +0 -9
  333. package/lib/init-templates/v2/sample-app/javascript/.template.gitignore +0 -5
  334. package/lib/init-templates/v2/sample-app/javascript/.template.npmignore +0 -3
  335. package/lib/init-templates/v2/sample-app/javascript/cdk.template.json +0 -15
  336. package/lib/init-templates/v2/sample-app/javascript/jest.config.js +0 -3
  337. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  338. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.js +0 -9
  339. package/lib/init-templates/v2/sample-app/javascript/tsconfig.json +0 -35
  340. package/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  341. package/lib/init-templates/v2/sample-app/python/.template.gitignore +0 -22
  342. package/lib/init-templates/v2/sample-app/python/cdk.template.json +0 -15
  343. package/lib/init-templates/v2/sample-app/python/requirements-dev.txt +0 -1
  344. package/lib/init-templates/v2/sample-app/python/source.bat +0 -13
  345. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  346. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.js +0 -9
  347. package/lib/init-templates/v2/sample-app/python/tests/__init__.py +0 -0
  348. package/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py +0 -0
  349. package/lib/init-templates/v2/sample-app/typescript/.template.gitignore +0 -8
  350. package/lib/init-templates/v2/sample-app/typescript/.template.npmignore +0 -6
  351. package/lib/init-templates/v2/sample-app/typescript/cdk.template.json +0 -17
  352. package/lib/init-templates/v2/sample-app/typescript/jest.config.js +0 -8
  353. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  354. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.js +0 -9
  355. package/lib/init-templates/v2/sample-app/typescript/tsconfig.json +0 -30
package/CONTRIBUTING.md CHANGED
@@ -201,3 +201,32 @@ These two sets of integration tests have 3 running modes:
201
201
  The integration test and canary modes are used in the CDK publishing pipeline
202
202
  and the CDK canaries, respectively. You wouldn't normally need to run
203
203
  them directly that way.
204
+
205
+ ## Bundling
206
+
207
+ Our CLI package is built and packaged using the [node-bundle](../../tools/%40aws-cdk/node-bundle/README.md) tool.
208
+
209
+ This has two affects one should be aware of:
210
+
211
+ ### Runtime Dependencies
212
+
213
+ All runtime dependencies are converted to `devDependencies`, as they are bundled inside
214
+ the package and don't require installation by consumers. This process happens on-demand during packaging,
215
+ this is why our [source code](./package.json) still contains those dependencies,
216
+ but the [npm](https://www.npmjs.com/package/aws-cdk) package does not.
217
+
218
+ ### Attributions
219
+
220
+ The bundler also creates an attributions document that lists out license information for the entire
221
+ dependency closure. This document is stored in the [THIRD_PARTY_LICENSES](./THIRD_PARTY_LICENSES) file.
222
+ Our build process validates that the file committed to source matches the expected auto-generated one.
223
+ We do this so that our source code always contains the up to date attributions document, and so that we can
224
+ backtrack/review changes to it using normal code review processes.
225
+
226
+ Whenever a dependency changes (be it direct or transitive, new package or new version), the attributions document
227
+ will change, and needs to be regenerated. For you, this means that:
228
+
229
+ 1. When you manually upgrade a dependency, you must also regenerate the document by running `yarn pkglint` inside the CLI package.
230
+ 2. When you build the CLI locally, you must ensure your dependencies are up to date by running `yarn install` inside the CLI package.
231
+ Otherwise, you might get an error like so: `aws-cdk: - [bundle/outdated-attributions] THIRD_PARTY_LICENSES is outdated (fixable)`.
232
+
package/README.md CHANGED
@@ -455,8 +455,9 @@ locally to your terminal. To disable this feature you can pass the `--no-logs` o
455
455
  $ cdk watch --no-logs
456
456
  ```
457
457
 
458
- **Note**: This command is considered experimental,
459
- and might have breaking changes in the future.
458
+ **Note**: This command is considered experimental, and might have breaking changes in the future.
459
+ The same limitations apply to to `watch` deployments as do to `--hotswap` deployments. See the
460
+ *Hotswap deployments for faster development* section for more information.
460
461
 
461
462
  ### `cdk import`
462
463
 
@@ -517,10 +518,10 @@ $ cdk destroy --app='node bin/main.js' MyStackName
517
518
 
518
519
  ### `cdk bootstrap`
519
520
 
520
- Deploys a `CDKToolkit` CloudFormation stack into the specified environment(s), that provides an S3 bucket
521
- and ECR reposity that `cdk deploy` will use to store synthesized templates and the related assets, before
522
- triggering a CloudFormation stack update. The name of the deployed stack can be configured using the
523
- `--toolkit-stack-name` argument. The S3 Bucket Public Access Block Configuration can be configured using
521
+ Deploys a `CDKToolkit` CloudFormation stack into the specified environment(s), that provides an S3 bucket
522
+ and ECR reposity that `cdk deploy` will use to store synthesized templates and the related assets, before
523
+ triggering a CloudFormation stack update. The name of the deployed stack can be configured using the
524
+ `--toolkit-stack-name` argument. The S3 Bucket Public Access Block Configuration can be configured using
524
525
  the `--public-access-block-configuration` argument. ECR uses immutable tags for images.
525
526
 
526
527
  ```console
@@ -1,6 +1,6 @@
1
1
  The aws-cdk package includes the following third-party software/licensing:
2
2
 
3
- ** @jsii/check-node@1.60.1 - https://www.npmjs.com/package/@jsii/check-node/v/1.60.1 | Apache-2.0
3
+ ** @jsii/check-node@1.62.0 - https://www.npmjs.com/package/@jsii/check-node/v/1.62.0 | Apache-2.0
4
4
  jsii
5
5
  Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
6
 
@@ -268,7 +268,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE
268
268
 
269
269
  ----------------
270
270
 
271
- ** aws-sdk@2.1151.0 - https://www.npmjs.com/package/aws-sdk/v/2.1151.0 | Apache-2.0
271
+ ** aws-sdk@2.1176.0 - https://www.npmjs.com/package/aws-sdk/v/2.1176.0 | Apache-2.0
272
272
  AWS SDK for JavaScript
273
273
  Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
274
274
 
@@ -1554,6 +1554,10 @@ PERFORMANCE OF THIS SOFTWARE.
1554
1554
 
1555
1555
  ----------------
1556
1556
 
1557
+ ** ip@2.0.0 - https://www.npmjs.com/package/ip/v/2.0.0 | MIT
1558
+
1559
+ ----------------
1560
+
1557
1561
  ** is-binary-path@2.1.0 - https://www.npmjs.com/package/is-binary-path/v/2.1.0 | MIT
1558
1562
  MIT License
1559
1563
 
@@ -2565,7 +2569,7 @@ IN THE SOFTWARE.
2565
2569
 
2566
2570
  ----------------
2567
2571
 
2568
- ** readdir-glob@1.1.1 - https://www.npmjs.com/package/readdir-glob/v/1.1.1 | Apache-2.0
2572
+ ** readdir-glob@1.1.2 - https://www.npmjs.com/package/readdir-glob/v/1.1.2 | Apache-2.0
2569
2573
  Apache License
2570
2574
  Version 2.0, January 2004
2571
2575
  http://www.apache.org/licenses/
@@ -3029,7 +3033,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
3029
3033
 
3030
3034
  ----------------
3031
3035
 
3032
- ** socks@2.6.2 - https://www.npmjs.com/package/socks/v/2.6.2 | MIT
3036
+ ** socks@2.7.0 - https://www.npmjs.com/package/socks/v/2.7.0 | MIT
3033
3037
  The MIT License (MIT)
3034
3038
 
3035
3039
  Copyright (c) 2013 Josh Glazebrook
@@ -3528,7 +3532,7 @@ OTHER DEALINGS IN THE SOFTWARE.
3528
3532
 
3529
3533
  ----------------
3530
3534
 
3531
- ** vm2@3.9.9 - https://www.npmjs.com/package/vm2/v/3.9.9 | MIT
3535
+ ** vm2@3.9.10 - https://www.npmjs.com/package/vm2/v/3.9.10 | MIT
3532
3536
 
3533
3537
  ----------------
3534
3538
 
package/build-info.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "comment": "Generated at 2022-07-13T21:35:39Z by generate.sh",
3
- "commit": "091f0d8"
2
+ "comment": "Generated at 2022-07-19T18:51:22Z by generate.sh",
3
+ "commit": "859272d"
4
4
  }
@@ -204,7 +204,7 @@ export interface PreparedSdkForEnvironment {
204
204
  export declare class CloudFormationDeployments {
205
205
  private readonly sdkProvider;
206
206
  constructor(props: ProvisionerProps);
207
- readCurrentTemplateWithNestedStacks(rootStackArtifact: cxapi.CloudFormationStackArtifact): Promise<Template>;
207
+ readCurrentTemplateWithNestedStacks(rootStackArtifact: cxapi.CloudFormationStackArtifact, retrieveProcessedTemplate?: boolean): Promise<Template>;
208
208
  readCurrentTemplate(stackArtifact: cxapi.CloudFormationStackArtifact): Promise<Template>;
209
209
  resourceIdentifierSummaries(stackArtifact: cxapi.CloudFormationStackArtifact, toolkitStackName?: string): Promise<ResourceIdentifierSummaries>;
210
210
  deployStack(options: DeployStackOptions): Promise<DeployStackResult>;
@@ -80,9 +80,9 @@ class CloudFormationDeployments {
80
80
  constructor(props) {
81
81
  this.sdkProvider = props.sdkProvider;
82
82
  }
83
- async readCurrentTemplateWithNestedStacks(rootStackArtifact) {
83
+ async readCurrentTemplateWithNestedStacks(rootStackArtifact, retrieveProcessedTemplate = false) {
84
84
  const sdk = (await this.prepareSdkWithLookupOrDeployRole(rootStackArtifact)).stackSdk;
85
- return (await nested_stack_helpers_1.loadCurrentTemplateWithNestedStacks(rootStackArtifact, sdk)).deployedTemplate;
85
+ return (await nested_stack_helpers_1.loadCurrentTemplateWithNestedStacks(rootStackArtifact, sdk, retrieveProcessedTemplate)).deployedTemplate;
86
86
  }
87
87
  async readCurrentTemplate(stackArtifact) {
88
88
  logging_1.debug(`Reading existing template for stack ${stackArtifact.displayName}.`);
@@ -230,4 +230,4 @@ class CloudFormationDeployments {
230
230
  }
231
231
  }
232
232
  exports.CloudFormationDeployments = CloudFormationDeployments;
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24tZGVwbG95bWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZvcm1hdGlvbi1kZXBsb3ltZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBeUM7QUFDekMsMkNBQTJDO0FBRTNDLHdDQUE0QztBQUM1QywrREFBeUQ7QUFDekQsd0RBQThDO0FBRzlDLGlEQUEwRztBQUMxRyxpRUFBa0c7QUFDbEcsaURBQTZDO0FBQzdDLDBEQUFzSDtBQUV0SCxzREFBNkQ7QUEyQjdEOzs7Ozs7Ozs7Ozs7Ozs7OztJQWlCSTtBQUNHLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsV0FBd0IsRUFDeEIsS0FBd0M7O0lBRXhDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLDZFQUE2RTtJQUM3RSxNQUFNLElBQUksR0FBRyxNQUFNLHFDQUFzQixDQUFDO1FBQ3hDLGFBQWEsUUFBRSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxHQUFHO0tBQ3JDLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckMsZ0NBQWdDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixJQUFJLENBQUMsYUFBYSxzQkFBc0IsQ0FBQztJQUNwRixNQUFNLGNBQWMsR0FBRyx1RUFBdUUsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSw2QkFBNkIsR0FBRyxDQUFDO0lBQ2pKLElBQUk7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsa0JBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEYsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLG9CQUFvQixRQUFFLEtBQUssQ0FBQyxVQUFVLDBDQUFFLG9CQUFvQjtTQUM3RCxDQUFDLENBQUM7UUFFSCxtR0FBbUc7UUFDbkcsSUFBSSxRQUFRLENB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S0FBSyxDQUFDLFNBQVMsRUFDZixhQUFhLENBQUMsNkJBQTZCLEVBQzNDLGFBQWEsQ0FBQyxpQ0FBaUMsRUFDL0MsV0FBVyxDQUFDLENBQUM7WUFFZixNQUFNLFFBQVEsR0FBRywwQkFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUQsTUFBTSxnQ0FBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLDZCQUE2QixDQUN6QyxTQUFpQixFQUNqQiw2QkFBaUQsRUFDakQsaUNBQXFELEVBQ3JELFdBQXdCO1FBRXhCLElBQUksNkJBQTZCLEtBQUssU0FBUyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBRTVELElBQUk7WUFDRixNQUFNLFdBQVcsQ0FBQyxlQUFlLENBQUMsNkJBQTZCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztTQUNyRztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFNBQVMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7Q0FDRjtBQXZNRCw4REF1TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHsgQXNzZXRNYW5pZmVzdCB9IGZyb20gJ2Nkay1hc3NldHMnO1xuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi4vY2RrLXRvb2xraXQnO1xuaW1wb3J0IHsgZGVidWcsIHdhcm5pbmcgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IHB1Ymxpc2hBc3NldHMgfSBmcm9tICcuLi91dGlsL2Fzc2V0LXB1Ymxpc2hpbmcnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4vYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgSVNESyB9IGZyb20gJy4vYXdzLWF1dGgvc2RrJztcbmltcG9ydCB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi9hd3MtYXV0aC9zZGstcHJvdmlkZXInO1xuaW1wb3J0IHsgZGVwbG95U3RhY2ssIERlcGxveVN0YWNrUmVzdWx0LCBkZXN0cm95U3RhY2ssIG1ha2VCb2R5UGFyYW1ldGVyQW5kVXBsb2FkIH0gZnJvbSAnLi9kZXBsb3ktc3RhY2snO1xuaW1wb3J0IHsgbG9hZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MsIGxvYWRDdXJyZW50VGVtcGxhdGUgfSBmcm9tICcuL25lc3RlZC1zdGFjay1oZWxwZXJzJztcbmltcG9ydCB7IFRvb2xraXRJbmZvIH0gZnJvbSAnLi90b29sa2l0LWluZm8nO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgVGVtcGxhdGUsIFJlc291cmNlc1RvSW1wb3J0LCBSZXNvdXJjZUlkZW50aWZpZXJTdW1tYXJpZXMgfSBmcm9tICcuL3V0aWwvY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgU3RhY2tBY3Rpdml0eVByb2dyZXNzIH0gZnJvbSAnLi91dGlsL2Nsb3VkZm9ybWF0aW9uL3N0YWNrLWFjdGl2aXR5LW1vbml0b3InO1xuaW1wb3J0IHsgcmVwbGFjZUVudlBsYWNlaG9sZGVycyB9IGZyb20gJy4vdXRpbC9wbGFjZWhvbGRlcnMnO1xuXG4vKipcbiAqIFNESyBvYnRhaW5lZCBieSBhc3N1bWluZyB0aGUgbG9va3VwIHJvbGVcbiAqIGZvciBhIGdpdmVuIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZWRTZGtXaXRoTG9va3VwUm9sZUZvckVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBTREsgZm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2RrOiBJU0RLO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgZW52aXJvbm1lbnQgZm9yIHRoZSBzdGFja1xuICAgKiAobm8gbW9yZSAndW5rbm93bi1hY2NvdW50L3Vua25vd24tcmVnaW9uJylcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkRW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgYXNzdW1lIHJvbGUgd2FzIHN1Y2Nlc3NmdWwuXG4gICAqIElmIHRoZSBhc3N1bWUgcm9sZSB3YXMgbm90IHN1Y2Nlc3NmdWwgKGZhbHNlKVxuICAgKiB0aGVuIHRoYXQgbWVhbnMgdGhhdCB0aGUgJ3NkaycgcmV0dXJuZWQgY29udGFpbnNcbiAgICogdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgKG5vdCB0aGUgYXNzdW1lIHJvbGUgY3JlZGVudGlhbHMpXG4gICAqL1xuICByZWFkb25seSBkaWRBc3N1bWVSb2xlOiBib29sZWFuO1xufVxuXG4vKipcbiAgKiBUcnkgdG8gdXNlIHRoZSBib290c3RyYXAgbG9va3VwUm9sZS4gVGhlcmUgYXJlIHR3byBzY2VuYXJpb3MgdGhhdCBhcmUgaGFuZGxlZCBoZXJlXG4gICogIDEuIFRoZSBsb29rdXAgcm9sZSBtYXkgbm90IGV4aXN0IChpdCB3YXMgYWRkZWQgaW4gYm9vdHN0cmFwIHN0YWNrIHZlcnNpb24gNylcbiAgKiAgMi4gVGhlIGxvb2t1cCByb2xlIG1heSBub3QgaGF2ZSB0aGUgY29ycmVjdCBwZXJtaXNzaW9ucyAoUmVhZE9ubHlBY2Nlc3Mgd2FzIGFkZGVkIGluXG4gICogICAgICBib290c3RyYXAgc3RhY2sgdmVyc2lvbiA4KVxuICAqXG4gICogSW4gdGhlIGNhc2Ugb2YgMSAobG9va3VwIHJvbGUgZG9lc24ndCBleGlzdCkgYGZvckVudmlyb25tZW50YCB3aWxsIGVpdGhlcjpcbiAgKiAgIDEuIFJldHVybiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBpZiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBhcmUgZm9yIHRoZSBzdGFjayBhY2NvdW50XG4gICogICAyLiBUaHJvdyBhbiBlcnJvciBpZiB0aGUgZGVmYXVsdCBjcmVkZW50aWFscyBhcmUgbm90IGZvciB0aGUgc3RhY2sgYWNjb3VudC5cbiAgKlxuICAqIElmIHdlIHN1Y2Nlc3NmdWxseSBhc3N1bWUgdGhlIGxvb2t1cCByb2xlIHdlIHRoZW4gcHJvY2VlZCB0byAyIGFuZCBjaGVjayB3aGV0aGVyIHRoZSBib290c3RyYXBcbiAgKiBzdGFjayB2ZXJzaW9uIGlzIHZhbGlkLiBJZiBpdCBpcyBub3Qgd2UgdGhyb3cgYW4gZXJyb3Igd2hpY2ggc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIGNhbGxpbmdcbiAgKiBmdW5jdGlvbiAoYW5kIGZhbGxiYWNrIHRvIHVzZSBhIGRpZmZlcmVudCByb2xlLCBldGMpXG4gICpcbiAgKiBJZiB3ZSBkbyBub3Qgc3VjY2Vzc2Z1bGx5IGFzc3VtZSB0aGUgbG9va3VwIHJvbGUsIGJ1dCBkbyBnZXQgYmFjayB0aGUgZGVmYXVsdCBjcmVkZW50aWFsc1xuICAqIHRoZW4gcmV0dXJuIHRob3NlIGFuZCBub3RlIHRoYXQgd2UgYXJlIHJldHVybmluZyB0aGUgZGVmYXVsdCBjcmVkZW50aWFscy4gVGhlIGNhbGxpbmdcbiAgKiBmdW5jdGlvbiBjYW4gdGhlbiBkZWNpZGUgdG8gdXNlIHRoZW0gb3IgZmFsbGJhY2sgdG8gYW5vdGhlciByb2xlLlxuICAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXBhcmVTZGtXaXRoTG9va3VwUm9sZUZvcihcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuKTogUHJvbWlzZTxQcmVwYXJlZFNka1dpdGhMb29rdXBSb2xlRm9yRW52aXJvbm1lbnQ+IHtcbiAgY29uc3QgcmVzb2x2ZWRFbnZpcm9ubWVudCA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG5cbiAgLy8gU3Vic3RpdHV0ZSBhbnkgcGxhY2Vob2xkZXJzIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnRcbiAgY29uc3QgYXJucyA9IGF3YWl0IHJlcGxhY2VFbnZQbGFjZWhvbGRlcnMoe1xuICAgIGxvb2t1cFJvbGVBcm46IHN0YWNrLmxvb2t1cFJvbGU/LmFybixcbiAgfSwgcmVzb2x2ZWRFbnZpcm9ubWVudCwgc2RrUHJvdmlkZXIpO1xuXG4gIC8vIHRyeSB0byBhc3N1bWUgdGhlIGxvb2t1cCByb2xlXG4gIGNvbnN0IHdhcm5pbmdNZXNzYWdlID0gYENvdWxkIG5vdCBhc3N1bWUgJHthcm5zLmxvb2t1cFJvbGVBcm59LCBwcm9jZWVkaW5nIGFueXdheS5gO1xuICBjb25zdCB1cGdyYWRlTWVzc2FnZSA9IGAoVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIHBsZWFzZSB1cGdyYWRlIHRvIGJvb3RzdHJhcCB2ZXJzaW9uID49ICR7c3RhY2subG9va3VwUm9sZT8ucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb259KWA7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhY2tTZGsgPSBhd2FpdCBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudChyZXNvbHZlZEVudmlyb25tZW50LCBNb2RlLkZvclJlYWRpbmcsIHtcbiAgICAgIGFzc3VtZVJvbGVBcm46IGFybnMubG9va3VwUm9sZUFybixcbiAgICAgIGFzc3VtZVJvbGVFeHRlcm5hbElkOiBzdGFjay5sb29rdXBSb2xlPy5hc3N1bWVSb2xlRXh0ZXJuYWxJZCxcbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIHN1Y2NlZWQgaW4gYXNzdW1pbmcgdGhlIGxvb2t1cCByb2xlLCBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgIGlmIChzdGFja1Nkay5kaWRBc3N1bWVSb2xlICYmIHN0YWNrLmxvb2t1cFJvbGU/LmJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlciAmJiBzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uKSB7XG4gICAgICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgVG9vbGtpdEluZm8udmVyc2lvbkZyb21Tc21QYXJhbWV0ZXIoc3RhY2tTZGsuc2RrLCBzdGFjay5sb29rdXBSb2xlLmJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcik7XG4gICAgICBpZiAodmVyc2lvbiA8IHN0YWNrLmxvb2t1cFJvbGUucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiAnJHtzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9ufScgaXMgcmVxdWlyZWQsIGZvdW5kIHZlcnNpb24gJyR7dmVyc2lvbn0nLmApO1xuICAgICAgfVxuICAgICAgLy8gd2UgbWF5IG5vdCBoYXZlIGFzc3VtZWQgdGhlIGxvb2t1cCByb2xlIGJlY2F1c2Ugb25lIHdhcyBub3QgcHJvdmlkZWRcbiAgICAgIC8vIGlmIHRoYXQgaXMgdGhlIGNhc2UgdGhlbiBkb24ndCBwcmludCB0aGUgdXBncmFkZSB3YXJuaW5nXG4gICAgfSBlbHNlIGlmICghc3RhY2tTZGsuZGlkQXNzdW1lUm9sZSAmJiBzdGFjay5sb29rdXBSb2xlPy5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbikge1xuICAgICAgd2FybmluZyh1cGdyYWRlTWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiB7IC4uLnN0YWNrU2RrLCByZXNvbHZlZEVudmlyb25tZW50IH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkZWJ1ZyhlKTtcbiAgICAvLyBvbmx5IHByaW50IG91dCB0aGUgd2FybmluZ3MgaWYgdGhlIGxvb2t1cFJvbGUgZXhpc3RzIEFORCB0aGVyZSBpcyBhIHJlcXVpcmVkXG4gICAgLy8gYm9vdHN0cmFwIHZlcnNpb24sIG90aGVyd2lzZSB0aGUgd2FybmluZ3Mgd2lsbCBwcmludCBgdW5kZWZpbmVkYFxuICAgIGlmIChzdGFjay5sb29rdXBSb2xlICYmIHN0YWNrLmxvb2t1cFJvbGUucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24pIHtcbiAgICAgIHdhcm5pbmcod2FybmluZ01lc3NhZ2UpO1xuICAgICAgd2FybmluZyh1cGdyYWRlTWVzc2FnZSk7XG4gICAgfVxuICAgIHRocm93IChlKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVN0YWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdGFjayB0byBkZXBsb3lcbiAgICovXG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGlvbiByb2xlIGZvciB0aGUgZGVwbG95bWVudCAocGFzcyB0aHJvdWdoIHRvIENsb3VkRm9ybWF0aW9uKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEN1cnJlbnQgcm9sZVxuICAgKi9cbiAgcm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVG9waWMgQVJOcyB0byBzZW5kIGEgbWVzc2FnZSB3aGVuIGRlcGxveW1lbnQgZmluaXNoZXMgKHBhc3MgdGhyb3VnaCB0byBDbG91ZEZvcm1hdGlvbilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBub3RpZmljYXRpb25zXG4gICAqL1xuICBub3RpZmljYXRpb25Bcm5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIG5hbWUgdW5kZXIgd2hpY2ggc3RhY2sgd2lsbCBiZSBkZXBsb3llZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFVzZSBhcnRpZmFjdCBkZWZhdWx0XG4gICAqL1xuICBkZXBsb3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb24ndCBzaG93IHN0YWNrIGRlcGxveW1lbnQgZXZlbnRzLCBqdXN0IHdhaXRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHF1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdG9vbGtpdCBzdGFjaywgaWYgbm90IHRoZSBkZWZhdWx0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgJ0NES1Rvb2xraXQnXG4gICAqL1xuICB0b29sa2l0U3RhY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFzc2V0IElEcyB3aGljaCBzaG91bGQgTk9UIGJlIGJ1aWx0IG9yIHVwbG9hZGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQnVpbGQgYWxsIGFzc2V0c1xuICAgKi9cbiAgcmV1c2VBc3NldHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3RhY2sgdGFncyAocGFzcyB0aHJvdWdoIHRvIENsb3VkRm9ybWF0aW9uKVxuICAgKi9cbiAgdGFncz86IFRhZ1tdO1xuXG4gIC8qKlxuICAgKiBTdGFnZSB0aGUgY2hhbmdlIHNldCBidXQgZG9uJ3QgZXhlY3V0ZSBpdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICBleGVjdXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgbmFtZSB0byB1c2UgZm9yIHRoZSBDbG91ZEZvcm1hdGlvbiBjaGFuZ2Ugc2V0LlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgY2hhbmdlU2V0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRm9yY2UgZGVwbG95bWVudCwgZXZlbiBpZiB0aGUgZGVwbG95ZWQgdGVtcGxhdGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgd2UgYXJlIGFib3V0IHRvIGRlcGxveS5cbiAgICogQGRlZmF1bHQgZmFsc2UgZGVwbG95bWVudCB3aWxsIGJlIHNraXBwZWQgaWYgdGhlIHRlbXBsYXRlIGlzIGlkZW50aWNhbFxuICAgKi9cbiAgZm9yY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFeHRyYSBwYXJhbWV0ZXJzIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgdGVtcGxhdGVcbiAgICovXG4gIHBhcmFtZXRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogVXNlIHByZXZpb3VzIHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBJZiBub3Qgc2V0LCBhbGwgcGFyYW1ldGVycyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgZXZlcnkgZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheSBtb2RlIGZvciBzdGFjayBkZXBsb3ltZW50IHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFN0YWNrQWN0aXZpdHlQcm9ncmVzcy5CYXIgLSBzdGFjayBldmVudHMgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yXG4gICAqICAgdGhlIHJlc291cmNlIGN1cnJlbnRseSBiZWluZyBkZXBsb3llZC5cbiAgICovXG4gIHByb2dyZXNzPzogU3RhY2tBY3Rpdml0eVByb2dyZXNzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIGFyZSBvbiBhIENJIHN5c3RlbVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSb2xsYmFjayBmYWlsZWQgZGVwbG95bWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qXG4gICAqIFdoZXRoZXIgdG8gcGVyZm9ybSBhICdob3Rzd2FwJyBkZXBsb3ltZW50LlxuICAgKiBBICdob3Rzd2FwJyBkZXBsb3ltZW50IHdpbGwgYXR0ZW1wdCB0byBzaG9ydC1jaXJjdWl0IENsb3VkRm9ybWF0aW9uXG4gICAqIGFuZCB1cGRhdGUgdGhlIGFmZmVjdGVkIHJlc291cmNlcyBsaWtlIExhbWJkYSBmdW5jdGlvbnMgZGlyZWN0bHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2UgZm9yIHJlZ3VsYXIgZGVwbG95bWVudHMsIHRydWUgZm9yICd3YXRjaCcgZGVwbG95bWVudHNcbiAgICovXG4gIHJlYWRvbmx5IGhvdHN3YXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgc3RyaW5nIHRvIGFwcGVuZCB0byB0aGUgVXNlci1BZ2VudCBoZWFkZXIgd2hlbiBwZXJmb3JtaW5nIEFXUyBTREsgY2FsbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90aGluZyBleHRyYSBpcyBhcHBlbmRlZCB0byB0aGUgVXNlci1BZ2VudCBoZWFkZXJcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhVXNlckFnZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGV4aXN0aW5nIHJlc291cmNlcyB0byBiZSBJTVBPUlRFRCBpbnRvIHRoZSBzdGFjaywgaW5zdGVhZCBvZiBiZWluZyBDUkVBVEVEXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXNUb0ltcG9ydD86IFJlc291cmNlc1RvSW1wb3J0O1xuXG4gIC8qKlxuICAgKiBJZiBwcmVzZW50LCB1c2UgdGhpcyBnaXZlbiB0ZW1wbGF0ZSBpbnN0ZWFkIG9mIHRoZSBzdG9yZWQgb25lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVXNlIHRoZSBzdG9yZWQgdGVtcGxhdGVcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlVGVtcGxhdGU/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJveVN0YWNrT3B0aW9ucyB7XG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG4gIGRlcGxveU5hbWU/OiBzdHJpbmc7XG4gIHJvbGVBcm4/OiBzdHJpbmc7XG4gIHF1aWV0PzogYm9vbGVhbjtcbiAgZm9yY2U/OiBib29sZWFuO1xuICBjaT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tFeGlzdHNPcHRpb25zIHtcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgZGVwbG95TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lclByb3BzIHtcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyO1xufVxuXG4vKipcbiAqIFNESyBvYnRhaW5lZCBieSBhc3N1bWluZyB0aGUgZGVwbG95IHJvbGVcbiAqIGZvciBhIGdpdmVuIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZWRTZGtGb3JFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgU0RLIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrU2RrOiBJU0RLO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgZW52aXJvbm1lbnQgZm9yIHRoZSBzdGFja1xuICAgKiAobm8gbW9yZSAndW5rbm93bi1hY2NvdW50L3Vua25vd24tcmVnaW9uJylcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkRW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50O1xuICAvKipcbiAgICogVGhlIEV4ZWN1dGlvbiBSb2xlIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGVjdXRpb24gcm9sZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblJvbGVBcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBDbG91ZEZvcm1hdGlvbiBkZXBsb3ltZW50c1xuICpcbiAqIExvb2tzIHVzIHRoZSByaWdodCBTREsgYW5kIEJvb3RzdHJhcCBzdGFjayB0byBkZXBsb3kgYSBnaXZlblxuICogc3RhY2sgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEZvcm1hdGlvbkRlcGxveW1lbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFByb3Zpc2lvbmVyUHJvcHMpIHtcbiAgICB0aGlzLnNka1Byb3ZpZGVyID0gcHJvcHMuc2RrUHJvdmlkZXI7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCk6IFByb21pc2U8VGVtcGxhdGU+IHtcbiAgICBjb25zdCBzZGsgPSAoYXdhaXQgdGhpcy5wcmVwYXJlU2RrV2l0aExvb2t1cE9yRGVwbG95Um9sZShyb290U3RhY2tBcnRpZmFjdCkpLnN0YWNrU2RrO1xuICAgIHJldHVybiAoYXdhaXQgbG9hZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrQXJ0aWZhY3QsIHNkaykpLmRlcGxveWVkVGVtcGxhdGU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVhZEN1cnJlbnRUZW1wbGF0ZShzdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPFRlbXBsYXRlPiB7XG4gICAgZGVidWcoYFJlYWRpbmcgZXhpc3RpbmcgdGVtcGxhdGUgZm9yIHN0YWNrICR7c3RhY2tBcnRpZmFjdC5kaXNwbGF5TmFtZX0uYCk7XG4gICAgY29uc3Qgc2RrID0gKGF3YWl0IHRoaXMucHJlcGFyZVNka1dpdGhMb29rdXBPckRlcGxveVJvbGUoc3RhY2tBcnRpZmFjdCkpLnN0YWNrU2RrO1xuICAgIHJldHVybiBsb2FkQ3VycmVudFRlbXBsYXRlKHN0YWNrQXJ0aWZhY3QsIHNkayk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVzb3VyY2VJZGVudGlmaWVyU3VtbWFyaWVzKFxuICAgIHN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgICB0b29sa2l0U3RhY2tOYW1lPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFJlc291cmNlSWRlbnRpZmllclN1bW1hcmllcz4ge1xuICAgIGRlYnVnKGBSZXRyaWV2aW5nIHRlbXBsYXRlIHN1bW1hcnkgZm9yIHN0YWNrICR7c3RhY2tBcnRpZmFjdC5kaXNwbGF5TmFtZX0uYCk7XG4gICAgLy8gQ3VycmVudGx5LCBuZWVkcyB0byB1c2UgYGRlcGxveS1yb2xlYCBzaW5jZSBpdCBtYXkgbmVlZCB0byByZWFkIHRlbXBsYXRlcyBpbiB0aGUgc3RhZ2luZ1xuICAgIC8vIGJ1Y2tldCB3aGljaCBoYXZlIGJlZW4gZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5IChhbmQgbG9va3VwLXJvbGUgbWF5IG5vdCByZWFkIGVuY3J5cHRlZCB0aGluZ3MpXG4gICAgY29uc3QgeyBzdGFja1NkaywgcmVzb2x2ZWRFbnZpcm9ubWVudCB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2RrRm9yKHN0YWNrQXJ0aWZhY3QsIHVuZGVmaW5lZCwgTW9kZS5Gb3JSZWFkaW5nKTtcbiAgICBjb25zdCBjZm4gPSBzdGFja1Nkay5jbG91ZEZvcm1hdGlvbigpO1xuXG4gICAgY29uc3QgdG9vbGtpdEluZm8gPSBhd2FpdCBUb29sa2l0SW5mby5sb29rdXAocmVzb2x2ZWRFbnZpcm9ubWVudCwgc3RhY2tTZGssIHRvb2xraXRTdGFja05hbWUpO1xuXG4gICAgLy8gVXBsb2FkIHRoZSB0ZW1wbGF0ZSwgaWYgbmVjZXNzYXJ5LCBiZWZvcmUgcGFzc2luZyBpdCB0byBDRk5cbiAgICBjb25zdCBjZm5QYXJhbSA9IGF3YWl0IG1ha2VCb2R5UGFyYW1ldGVyQW5kVXBsb2FkKFxuICAgICAgc3RhY2tBcnRpZmFjdCxcbiAgICAgIHJlc29sdmVkRW52aXJvbm1lbnQsXG4gICAgICB0b29sa2l0SW5mbyxcbiAgICAgIHRoaXMuc2RrUHJvdmlkZXIsXG4gICAgICBzdGFja1Nkayk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNmbi5nZXRUZW1wbGF0ZVN1bW1hcnkoY2ZuUGFyYW0pLnByb21pc2UoKTtcbiAgICBpZiAoIXJlc3BvbnNlLlJlc291cmNlSWRlbnRpZmllclN1bW1hcmllcykge1xuICAgICAgZGVidWcoJ0dldFRlbXBsYXRlU3VtbWFyeSBBUEkgY2FsbCBkaWQgbm90IHJldHVybiBcIlJlc291cmNlSWRlbnRpZmllclN1bW1hcmllc1wiJyk7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5SZXNvdXJjZUlkZW50aWZpZXJTdW1tYXJpZXMgPz8gW107XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwbG95U3RhY2sob3B0aW9uczogRGVwbG95U3RhY2tPcHRpb25zKTogUHJvbWlzZTxEZXBsb3lTdGFja1Jlc3VsdD4ge1xuICAgIGNvbnN0IHsgc3RhY2tTZGssIHJlc29sdmVkRW52aXJvbm1lbnQsIGNsb3VkRm9ybWF0aW9uUm9sZUFybiB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2RrRm9yKG9wdGlvbnMuc3RhY2ssIG9wdGlvbnMucm9sZUFybik7XG5cbiAgICBjb25zdCB0b29sa2l0SW5mbyA9IGF3YWl0IFRvb2xraXRJbmZvLmxvb2t1cChyZXNvbHZlZEVudmlyb25tZW50LCBzdGFja1Nkaywgb3B0aW9ucy50b29sa2l0U3RhY2tOYW1lKTtcblxuICAgIC8vIFB1Ymxpc2ggYW55IGFzc2V0cyBiZWZvcmUgZG9pbmcgdGhlIGFjdHVhbCBkZXBsb3kgKGRvIG5vdCBwdWJsaXNoIGFueSBhc3NldHMgb24gaW1wb3J0IG9wZXJhdGlvbilcbiAgICBpZiAob3B0aW9ucy5yZXNvdXJjZXNUb0ltcG9ydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnB1Ymxpc2hTdGFja0Fzc2V0cyhvcHRpb25zLnN0YWNrLCB0b29sa2l0SW5mbyk7XG4gICAgfVxuXG4gICAgLy8gRG8gYSB2ZXJpZmljYXRpb24gb2YgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uXG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbihcbiAgICAgIG9wdGlvbnMuc3RhY2suc3RhY2tOYW1lLFxuICAgICAgb3B0aW9ucy5zdGFjay5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbixcbiAgICAgIG9wdGlvbnMuc3RhY2suYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyLFxuICAgICAgdG9vbGtpdEluZm8pO1xuXG4gICAgcmV0dXJuIGRlcGxveVN0YWNrKHtcbiAgICAgIHN0YWNrOiBvcHRpb25zLnN0YWNrLFxuICAgICAgcmVzb2x2ZWRFbnZpcm9ubWVudCxcbiAgICAgIGRlcGxveU5hbWU6IG9wdGlvbnMuZGVwbG95TmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvbkFybnM6IG9wdGlvbnMubm90aWZpY2F0aW9uQXJucyxcbiAgICAgIHF1aWV0OiBvcHRpb25zLnF1aWV0LFxuICAgICAgc2RrOiBzdGFja1NkayxcbiAgICAgIHNka1Byb3ZpZGVyOiB0aGlzLnNka1Byb3ZpZGVyLFxuICAgICAgcm9sZUFybjogY2xvdWRGb3JtYXRpb25Sb2xlQXJuLFxuICAgICAgcmV1c2VBc3NldHM6IG9wdGlvbnMucmV1c2VBc3NldHMsXG4gICAgICB0b29sa2l0SW5mbyxcbiAgICAgIHRhZ3M6IG9wdGlvbnMudGFncyxcbiAgICAgIGV4ZWN1dGU6IG9wdGlvbnMuZXhlY3V0ZSxcbiAgICAgIGNoYW5nZVNldE5hbWU6IG9wdGlvbnMuY2hhbmdlU2V0TmFtZSxcbiAgICAgIGZvcmNlOiBvcHRpb25zLmZvcmNlLFxuICAgICAgcGFyYW1ldGVyczogb3B0aW9ucy5wYXJhbWV0ZXJzLFxuICAgICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiBvcHRpb25zLnVzZVByZXZpb3VzUGFyYW1ldGVycyxcbiAgICAgIHByb2dyZXNzOiBvcHRpb25zLnByb2dyZXNzLFxuICAgICAgY2k6IG9wdGlvbnMuY2ksXG4gICAgICByb2xsYmFjazogb3B0aW9ucy5yb2xsYmFjayxcbiAgICAgIGhvdHN3YXA6IG9wdGlvbnMuaG90c3dhcCxcbiAgICAgIGV4dHJhVXNlckFnZW50OiBvcHRpb25zLmV4dHJhVXNlckFnZW50LFxuICAgICAgcmVzb3VyY2VzVG9JbXBvcnQ6IG9wdGlvbnMucmVzb3VyY2VzVG9JbXBvcnQsXG4gICAgICBvdmVycmlkZVRlbXBsYXRlOiBvcHRpb25zLm92ZXJyaWRlVGVtcGxhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0YWNrKG9wdGlvbnM6IERlc3Ryb3lTdGFja09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHN0YWNrU2RrLCBjbG91ZEZvcm1hdGlvblJvbGVBcm46IHJvbGVBcm4gfSA9IGF3YWl0IHRoaXMucHJlcGFyZVNka0ZvcihvcHRpb25zLnN0YWNrLCBvcHRpb25zLnJvbGVBcm4pO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdGFjayh7XG4gICAgICBzZGs6IHN0YWNrU2RrLFxuICAgICAgcm9sZUFybixcbiAgICAgIHN0YWNrOiBvcHRpb25zLnN0YWNrLFxuICAgICAgZGVwbG95TmFtZTogb3B0aW9ucy5kZXBsb3lOYW1lLFxuICAgICAgcXVpZXQ6IG9wdGlvbnMucXVpZXQsXG4gICAgICBjaTogb3B0aW9ucy5jaSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFja0V4aXN0cyhvcHRpb25zOiBTdGFja0V4aXN0c09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHN0YWNrU2RrIH0gPSBhd2FpdCB0aGlzLnByZXBhcmVTZGtGb3Iob3B0aW9ucy5zdGFjaywgdW5kZWZpbmVkLCBNb2RlLkZvclJlYWRpbmcpO1xuICAgIGNvbnN0IHN0YWNrID0gYXdhaXQgQ2xvdWRGb3JtYXRpb25TdGFjay5sb29rdXAoc3RhY2tTZGsuY2xvdWRGb3JtYXRpb24oKSwgb3B0aW9ucy5kZXBsb3lOYW1lID8/IG9wdGlvbnMuc3RhY2suc3RhY2tOYW1lKTtcbiAgICByZXR1cm4gc3RhY2suZXhpc3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlU2RrV2l0aExvb2t1cE9yRGVwbG95Um9sZShzdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QpOiBQcm9taXNlPFByZXBhcmVkU2RrRm9yRW52aXJvbm1lbnQ+IHtcbiAgICAvLyB0cnkgdG8gYXNzdW1lIHRoZSBsb29rdXAgcm9sZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcmVwYXJlU2RrV2l0aExvb2t1cFJvbGVGb3IodGhpcy5zZGtQcm92aWRlciwgc3RhY2tBcnRpZmFjdCk7XG4gICAgICBpZiAocmVzdWx0LmRpZEFzc3VtZVJvbGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNvbHZlZEVudmlyb25tZW50OiByZXN1bHQucmVzb2x2ZWRFbnZpcm9ubWVudCxcbiAgICAgICAgICBzdGFja1NkazogcmVzdWx0LnNkayxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHsgfVxuICAgIC8vIGZhbGwgYmFjayB0byB0aGUgZGVwbG95IHJvbGVcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlU2RrRm9yKHN0YWNrQXJ0aWZhY3QsIHVuZGVmaW5lZCwgTW9kZS5Gb3JSZWFkaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVudmlyb25tZW50IG5lY2Vzc2FyeSBmb3IgdG91Y2hpbmcgdGhlIGdpdmVuIHN0YWNrXG4gICAqXG4gICAqIFJldHVybnMgdGhlIGZvbGxvd2luZzpcbiAgICpcbiAgICogLSBUaGUgcmVzb2x2ZWQgZW52aXJvbm1lbnQgZm9yIHRoZSBzdGFjayAobm8gbW9yZSAndW5rbm93bi1hY2NvdW50L3Vua25vd24tcmVnaW9uJylcbiAgICogLSBTREsgbG9hZGVkIHdpdGggdGhlIHJpZ2h0IGNyZWRlbnRpYWxzIGZvciBjYWxsaW5nIGBDcmVhdGVDaGFuZ2VTZXRgLlxuICAgKiAtIFRoZSBFeGVjdXRpb24gUm9sZSB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHByZXBhcmVTZGtGb3IoXG4gICAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgICByb2xlQXJuPzogc3RyaW5nLFxuICAgIG1vZGUgPSBNb2RlLkZvcldyaXRpbmcsXG4gICk6IFByb21pc2U8UHJlcGFyZWRTZGtGb3JFbnZpcm9ubWVudD4ge1xuICAgIGlmICghc3RhY2suZW52aXJvbm1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHN0YWNrICR7c3RhY2suZGlzcGxheU5hbWV9IGRvZXMgbm90IGhhdmUgYW4gZW52aXJvbm1lbnRgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZEVudmlyb25tZW50ID0gYXdhaXQgdGhpcy5zZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2suZW52aXJvbm1lbnQpO1xuXG4gICAgLy8gU3Vic3RpdHV0ZSBhbnkgcGxhY2Vob2xkZXJzIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnRcbiAgICBjb25zdCBhcm5zID0gYXdhaXQgcmVwbGFjZUVudlBsYWNlaG9sZGVycyh7XG4gICAgICBhc3N1bWVSb2xlQXJuOiBzdGFjay5hc3N1bWVSb2xlQXJuLFxuXG4gICAgICAvLyBVc2UgdGhlIG92ZXJyaWRlIGlmIGdpdmVuLCBvdGhlcndpc2UgdXNlIHRoZSBmaWVsZCBmcm9tIHRoZSBzdGFja1xuICAgICAgY2xvdWRGb3JtYXRpb25Sb2xlQXJuOiByb2xlQXJuID8/IHN0YWNrLmNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZUFybixcbiAgICB9LCByZXNvbHZlZEVudmlyb25tZW50LCB0aGlzLnNka1Byb3ZpZGVyKTtcblxuICAgIGNvbnN0IHN0YWNrU2RrID0gYXdhaXQgdGhpcy5zZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudChyZXNvbHZlZEVudmlyb25tZW50LCBtb2RlLCB7XG4gICAgICBhc3N1bWVSb2xlQXJuOiBhcm5zLmFzc3VtZVJvbGVBcm4sXG4gICAgICBhc3N1bWVSb2xlRXh0ZXJuYWxJZDogc3RhY2suYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhY2tTZGs6IHN0YWNrU2RrLnNkayxcbiAgICAgIHJlc29sdmVkRW52aXJvbm1lbnQsXG4gICAgICBjbG91ZEZvcm1hdGlvblJvbGVBcm46IGFybnMuY2xvdWRGb3JtYXRpb25Sb2xlQXJuLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCBhbGwgYXNzZXQgbWFuaWZlc3RzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIGdpdmVuIHN0YWNrXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHB1Ymxpc2hTdGFja0Fzc2V0cyhzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCB0b29sa2l0SW5mbzogVG9vbGtpdEluZm8pIHtcbiAgICBjb25zdCBzdGFja0VudiA9IGF3YWl0IHRoaXMuc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgICBjb25zdCBhc3NldEFydGlmYWN0cyA9IHN0YWNrLmRlcGVuZGVuY2llcy5maWx0ZXIoY3hhcGkuQXNzZXRNYW5pZmVzdEFydGlmYWN0LmlzQXNzZXRNYW5pZmVzdEFydGlmYWN0KTtcblxuICAgIGZvciAoY29uc3QgYXNzZXRBcnRpZmFjdCBvZiBhc3NldEFydGlmYWN0cykge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbihcbiAgICAgICAgc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICBhc3NldEFydGlmYWN0LnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uLFxuICAgICAgICBhc3NldEFydGlmYWN0LmJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcixcbiAgICAgICAgdG9vbGtpdEluZm8pO1xuXG4gICAgICBjb25zdCBtYW5pZmVzdCA9IEFzc2V0TWFuaWZlc3QuZnJvbUZpbGUoYXNzZXRBcnRpZmFjdC5maWxlKTtcbiAgICAgIGF3YWl0IHB1Ymxpc2hBc3NldHMobWFuaWZlc3QsIHRoaXMuc2RrUHJvdmlkZXIsIHN0YWNrRW52KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCB0aGUgYm9vdHN0cmFwIHN0YWNrIGhhcyB0aGUgcmlnaHQgdmVyc2lvbiBmb3IgdGhpcyBzdGFja1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbihcbiAgICBzdGFja05hbWU6IHN0cmluZyxcbiAgICByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mbykge1xuXG4gICAgaWYgKHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uID09PSB1bmRlZmluZWQpIHsgcmV0dXJuOyB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdG9vbGtpdEluZm8udmFsaWRhdGVWZXJzaW9uKHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uLCBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtzdGFja05hbWV9OiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24tZGVwbG95bWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZvcm1hdGlvbi1kZXBsb3ltZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBeUM7QUFDekMsMkNBQTJDO0FBRTNDLHdDQUE0QztBQUM1QywrREFBeUQ7QUFDekQsd0RBQThDO0FBRzlDLGlEQUEwRztBQUMxRyxpRUFBa0c7QUFDbEcsaURBQTZDO0FBQzdDLDBEQUFzSDtBQUV0SCxzREFBNkQ7QUEyQjdEOzs7Ozs7Ozs7Ozs7Ozs7OztJQWlCSTtBQUNHLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsV0FBd0IsRUFDeEIsS0FBd0M7O0lBRXhDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBGLDZFQUE2RTtJQUM3RSxNQUFNLElBQUksR0FBRyxNQUFNLHFDQUFzQixDQUFDO1FBQ3hDLGFBQWEsUUFBRSxLQUFLLENBQUMsVUFBVSwwQ0FBRSxHQUFHO0tBQ3JDLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFckMsZ0NBQWdDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixJQUFJLENBQUMsYUFBYSxzQkFBc0IsQ0FBQztJQUNwRixNQUFNLGNBQWMsR0FBRyx1RUFBdUUsTUFBQSxLQUFLLENBQUMsVUFBVSwwQ0FBRSw2QkFBNkIsR0FBRyxDQUFDO0lBQ2pKLElBQUk7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsa0JBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEYsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLG9CQUFvQixRQUFFLEtBQUssQ0FBQyxVQUFVLDBDQUFFLG9CQUFvQjtTQUM3RCxDQUFDLENBQUM7UUFFSCxtR0FBbUc7UUFDbkcsSUFBSSxRQUFRLENB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MUMsTUFBTSxJQUFJLENBQUMsNkJBQTZCLENBQ3RDLEtBQUssQ0FBQyxTQUFTLEVBQ2YsYUFBYSxDQUFDLDZCQUE2QixFQUMzQyxhQUFhLENBQUMsaUNBQWlDLEVBQy9DLFdBQVcsQ0FBQyxDQUFDO1lBRWYsTUFBTSxRQUFRLEdBQUcsMEJBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVELE1BQU0sZ0NBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyw2QkFBNkIsQ0FDekMsU0FBaUIsRUFDakIsNkJBQWlELEVBQ2pELGlDQUFxRCxFQUNyRCxXQUF3QjtRQUV4QixJQUFJLDZCQUE2QixLQUFLLFNBQVMsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUU1RCxJQUFJO1lBQ0YsTUFBTSxXQUFXLENBQUMsZUFBZSxDQUFDLDZCQUE2QixFQUFFLGlDQUFpQyxDQUFDLENBQUM7U0FDckc7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0NBQ0Y7QUExTUQsOERBME1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IEFzc2V0TWFuaWZlc3QgfSBmcm9tICdjZGstYXNzZXRzJztcbmltcG9ydCB7IFRhZyB9IGZyb20gJy4uL2Nkay10b29sa2l0JztcbmltcG9ydCB7IGRlYnVnLCB3YXJuaW5nIH0gZnJvbSAnLi4vbG9nZ2luZyc7XG5pbXBvcnQgeyBwdWJsaXNoQXNzZXRzIH0gZnJvbSAnLi4vdXRpbC9hc3NldC1wdWJsaXNoaW5nJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuL2F3cy1hdXRoL2NyZWRlbnRpYWxzJztcbmltcG9ydCB7IElTREsgfSBmcm9tICcuL2F3cy1hdXRoL3Nkayc7XG5pbXBvcnQgeyBTZGtQcm92aWRlciB9IGZyb20gJy4vYXdzLWF1dGgvc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IGRlcGxveVN0YWNrLCBEZXBsb3lTdGFja1Jlc3VsdCwgZGVzdHJveVN0YWNrLCBtYWtlQm9keVBhcmFtZXRlckFuZFVwbG9hZCB9IGZyb20gJy4vZGVwbG95LXN0YWNrJztcbmltcG9ydCB7IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzLCBsb2FkQ3VycmVudFRlbXBsYXRlIH0gZnJvbSAnLi9uZXN0ZWQtc3RhY2staGVscGVycyc7XG5pbXBvcnQgeyBUb29sa2l0SW5mbyB9IGZyb20gJy4vdG9vbGtpdC1pbmZvJztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uU3RhY2ssIFRlbXBsYXRlLCBSZXNvdXJjZXNUb0ltcG9ydCwgUmVzb3VyY2VJZGVudGlmaWVyU3VtbWFyaWVzIH0gZnJvbSAnLi91dGlsL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFN0YWNrQWN0aXZpdHlQcm9ncmVzcyB9IGZyb20gJy4vdXRpbC9jbG91ZGZvcm1hdGlvbi9zdGFjay1hY3Rpdml0eS1tb25pdG9yJztcbmltcG9ydCB7IHJlcGxhY2VFbnZQbGFjZWhvbGRlcnMgfSBmcm9tICcuL3V0aWwvcGxhY2Vob2xkZXJzJztcblxuLyoqXG4gKiBTREsgb2J0YWluZWQgYnkgYXNzdW1pbmcgdGhlIGxvb2t1cCByb2xlXG4gKiBmb3IgYSBnaXZlbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkU2RrV2l0aExvb2t1cFJvbGVGb3JFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgU0RLIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHNkazogSVNESztcblxuICAvKipcbiAgICogVGhlIHJlc29sdmVkIGVudmlyb25tZW50IGZvciB0aGUgc3RhY2tcbiAgICogKG5vIG1vcmUgJ3Vua25vd24tYWNjb3VudC91bmtub3duLXJlZ2lvbicpXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlZEVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudDtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGFzc3VtZSByb2xlIHdhcyBzdWNjZXNzZnVsLlxuICAgKiBJZiB0aGUgYXNzdW1lIHJvbGUgd2FzIG5vdCBzdWNjZXNzZnVsIChmYWxzZSlcbiAgICogdGhlbiB0aGF0IG1lYW5zIHRoYXQgdGhlICdzZGsnIHJldHVybmVkIGNvbnRhaW5zXG4gICAqIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzIChub3QgdGhlIGFzc3VtZSByb2xlIGNyZWRlbnRpYWxzKVxuICAgKi9cbiAgcmVhZG9ubHkgZGlkQXNzdW1lUm9sZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gICogVHJ5IHRvIHVzZSB0aGUgYm9vdHN0cmFwIGxvb2t1cFJvbGUuIFRoZXJlIGFyZSB0d28gc2NlbmFyaW9zIHRoYXQgYXJlIGhhbmRsZWQgaGVyZVxuICAqICAxLiBUaGUgbG9va3VwIHJvbGUgbWF5IG5vdCBleGlzdCAoaXQgd2FzIGFkZGVkIGluIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIDcpXG4gICogIDIuIFRoZSBsb29rdXAgcm9sZSBtYXkgbm90IGhhdmUgdGhlIGNvcnJlY3QgcGVybWlzc2lvbnMgKFJlYWRPbmx5QWNjZXNzIHdhcyBhZGRlZCBpblxuICAqICAgICAgYm9vdHN0cmFwIHN0YWNrIHZlcnNpb24gOClcbiAgKlxuICAqIEluIHRoZSBjYXNlIG9mIDEgKGxvb2t1cCByb2xlIGRvZXNuJ3QgZXhpc3QpIGBmb3JFbnZpcm9ubWVudGAgd2lsbCBlaXRoZXI6XG4gICogICAxLiBSZXR1cm4gdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgaWYgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgYXJlIGZvciB0aGUgc3RhY2sgYWNjb3VudFxuICAqICAgMi4gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMgYXJlIG5vdCBmb3IgdGhlIHN0YWNrIGFjY291bnQuXG4gICpcbiAgKiBJZiB3ZSBzdWNjZXNzZnVsbHkgYXNzdW1lIHRoZSBsb29rdXAgcm9sZSB3ZSB0aGVuIHByb2NlZWQgdG8gMiBhbmQgY2hlY2sgd2hldGhlciB0aGUgYm9vdHN0cmFwXG4gICogc3RhY2sgdmVyc2lvbiBpcyB2YWxpZC4gSWYgaXQgaXMgbm90IHdlIHRocm93IGFuIGVycm9yIHdoaWNoIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBjYWxsaW5nXG4gICogZnVuY3Rpb24gKGFuZCBmYWxsYmFjayB0byB1c2UgYSBkaWZmZXJlbnQgcm9sZSwgZXRjKVxuICAqXG4gICogSWYgd2UgZG8gbm90IHN1Y2Nlc3NmdWxseSBhc3N1bWUgdGhlIGxvb2t1cCByb2xlLCBidXQgZG8gZ2V0IGJhY2sgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHNcbiAgKiB0aGVuIHJldHVybiB0aG9zZSBhbmQgbm90ZSB0aGF0IHdlIGFyZSByZXR1cm5pbmcgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHMuIFRoZSBjYWxsaW5nXG4gICogZnVuY3Rpb24gY2FuIHRoZW4gZGVjaWRlIHRvIHVzZSB0aGVtIG9yIGZhbGxiYWNrIHRvIGFub3RoZXIgcm9sZS5cbiAgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlU2RrV2l0aExvb2t1cFJvbGVGb3IoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbik6IFByb21pc2U8UHJlcGFyZWRTZGtXaXRoTG9va3VwUm9sZUZvckVudmlyb25tZW50PiB7XG4gIGNvbnN0IHJlc29sdmVkRW52aXJvbm1lbnQgPSBhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2suZW52aXJvbm1lbnQpO1xuXG4gIC8vIFN1YnN0aXR1dGUgYW55IHBsYWNlaG9sZGVycyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGVudmlyb25tZW50XG4gIGNvbnN0IGFybnMgPSBhd2FpdCByZXBsYWNlRW52UGxhY2Vob2xkZXJzKHtcbiAgICBsb29rdXBSb2xlQXJuOiBzdGFjay5sb29rdXBSb2xlPy5hcm4sXG4gIH0sIHJlc29sdmVkRW52aXJvbm1lbnQsIHNka1Byb3ZpZGVyKTtcblxuICAvLyB0cnkgdG8gYXNzdW1lIHRoZSBsb29rdXAgcm9sZVxuICBjb25zdCB3YXJuaW5nTWVzc2FnZSA9IGBDb3VsZCBub3QgYXNzdW1lICR7YXJucy5sb29rdXBSb2xlQXJufSwgcHJvY2VlZGluZyBhbnl3YXkuYDtcbiAgY29uc3QgdXBncmFkZU1lc3NhZ2UgPSBgKFRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCBwbGVhc2UgdXBncmFkZSB0byBib290c3RyYXAgdmVyc2lvbiA+PSAke3N0YWNrLmxvb2t1cFJvbGU/LnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9ufSlgO1xuICB0cnkge1xuICAgIGNvbnN0IHN0YWNrU2RrID0gYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQocmVzb2x2ZWRFbnZpcm9ubWVudCwgTW9kZS5Gb3JSZWFkaW5nLCB7XG4gICAgICBhc3N1bWVSb2xlQXJuOiBhcm5zLmxvb2t1cFJvbGVBcm4sXG4gICAgICBhc3N1bWVSb2xlRXh0ZXJuYWxJZDogc3RhY2subG9va3VwUm9sZT8uYXNzdW1lUm9sZUV4dGVybmFsSWQsXG4gICAgfSk7XG5cbiAgICAvLyBpZiB3ZSBzdWNjZWVkIGluIGFzc3VtaW5nIHRoZSBsb29rdXAgcm9sZSwgbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgYm9vdHN0cmFwIHN0YWNrIHZlcnNpb25cbiAgICBpZiAoc3RhY2tTZGsuZGlkQXNzdW1lUm9sZSAmJiBzdGFjay5sb29rdXBSb2xlPy5ib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIgJiYgc3RhY2subG9va3VwUm9sZS5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbikge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IFRvb2xraXRJbmZvLnZlcnNpb25Gcm9tU3NtUGFyYW1ldGVyKHN0YWNrU2RrLnNkaywgc3RhY2subG9va3VwUm9sZS5ib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIpO1xuICAgICAgaWYgKHZlcnNpb24gPCBzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQm9vdHN0cmFwIHN0YWNrIHZlcnNpb24gJyR7c3RhY2subG9va3VwUm9sZS5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbn0nIGlzIHJlcXVpcmVkLCBmb3VuZCB2ZXJzaW9uICcke3ZlcnNpb259Jy5gKTtcbiAgICAgIH1cbiAgICAgIC8vIHdlIG1heSBub3QgaGF2ZSBhc3N1bWVkIHRoZSBsb29rdXAgcm9sZSBiZWNhdXNlIG9uZSB3YXMgbm90IHByb3ZpZGVkXG4gICAgICAvLyBpZiB0aGF0IGlzIHRoZSBjYXNlIHRoZW4gZG9uJ3QgcHJpbnQgdGhlIHVwZ3JhZGUgd2FybmluZ1xuICAgIH0gZWxzZSBpZiAoIXN0YWNrU2RrLmRpZEFzc3VtZVJvbGUgJiYgc3RhY2subG9va3VwUm9sZT8ucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24pIHtcbiAgICAgIHdhcm5pbmcodXBncmFkZU1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4geyAuLi5zdGFja1NkaywgcmVzb2x2ZWRFbnZpcm9ubWVudCB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoZSk7XG4gICAgLy8gb25seSBwcmludCBvdXQgdGhlIHdhcm5pbmdzIGlmIHRoZSBsb29rdXBSb2xlIGV4aXN0cyBBTkQgdGhlcmUgaXMgYSByZXF1aXJlZFxuICAgIC8vIGJvb3RzdHJhcCB2ZXJzaW9uLCBvdGhlcndpc2UgdGhlIHdhcm5pbmdzIHdpbGwgcHJpbnQgYHVuZGVmaW5lZGBcbiAgICBpZiAoc3RhY2subG9va3VwUm9sZSAmJiBzdGFjay5sb29rdXBSb2xlLnJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uKSB7XG4gICAgICB3YXJuaW5nKHdhcm5pbmdNZXNzYWdlKTtcbiAgICAgIHdhcm5pbmcodXBncmFkZU1lc3NhZ2UpO1xuICAgIH1cbiAgICB0aHJvdyAoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3lTdGFja09wdGlvbnMge1xuICAvKipcbiAgICogU3RhY2sgdG8gZGVwbG95XG4gICAqL1xuICBzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBFeGVjdXRpb24gcm9sZSBmb3IgdGhlIGRlcGxveW1lbnQgKHBhc3MgdGhyb3VnaCB0byBDbG91ZEZvcm1hdGlvbilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBDdXJyZW50IHJvbGVcbiAgICovXG4gIHJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvcGljIEFSTnMgdG8gc2VuZCBhIG1lc3NhZ2Ugd2hlbiBkZXBsb3ltZW50IGZpbmlzaGVzIChwYXNzIHRocm91Z2ggdG8gQ2xvdWRGb3JtYXRpb24pXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbm90aWZpY2F0aW9uc1xuICAgKi9cbiAgbm90aWZpY2F0aW9uQXJucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBuYW1lIHVuZGVyIHdoaWNoIHN0YWNrIHdpbGwgYmUgZGVwbG95ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2UgYXJ0aWZhY3QgZGVmYXVsdFxuICAgKi9cbiAgZGVwbG95TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRG9uJ3Qgc2hvdyBzdGFjayBkZXBsb3ltZW50IGV2ZW50cywganVzdCB3YWl0XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRvb2xraXQgc3RhY2ssIGlmIG5vdCB0aGUgZGVmYXVsdCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0ICdDREtUb29sa2l0J1xuICAgKi9cbiAgdG9vbGtpdFN0YWNrTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBhc3NldCBJRHMgd2hpY2ggc2hvdWxkIE5PVCBiZSBidWlsdCBvciB1cGxvYWRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJ1aWxkIGFsbCBhc3NldHNcbiAgICovXG4gIHJldXNlQXNzZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFN0YWNrIHRhZ3MgKHBhc3MgdGhyb3VnaCB0byBDbG91ZEZvcm1hdGlvbilcbiAgICovXG4gIHRhZ3M/OiBUYWdbXTtcblxuICAvKipcbiAgICogU3RhZ2UgdGhlIGNoYW5nZSBzZXQgYnV0IGRvbid0IGV4ZWN1dGUgaXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgZXhlY3V0ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgdG8gdXNlIGZvciB0aGUgQ2xvdWRGb3JtYXRpb24gY2hhbmdlIHNldC5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5hbWUgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIGNoYW5nZVNldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvcmNlIGRlcGxveW1lbnQsIGV2ZW4gaWYgdGhlIGRlcGxveWVkIHRlbXBsYXRlIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIHdlIGFyZSBhYm91dCB0byBkZXBsb3kuXG4gICAqIEBkZWZhdWx0IGZhbHNlIGRlcGxveW1lbnQgd2lsbCBiZSBza2lwcGVkIGlmIHRoZSB0ZW1wbGF0ZSBpcyBpZGVudGljYWxcbiAgICovXG4gIGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXh0cmEgcGFyYW1ldGVycyBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHRlbXBsYXRlXG4gICAqL1xuICBwYXJhbWV0ZXJzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH07XG5cbiAgLyoqXG4gICAqIFVzZSBwcmV2aW91cyB2YWx1ZXMgZm9yIHVuc3BlY2lmaWVkIHBhcmFtZXRlcnNcbiAgICpcbiAgICogSWYgbm90IHNldCwgYWxsIHBhcmFtZXRlcnMgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIGV2ZXJ5IGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHVzZVByZXZpb3VzUGFyYW1ldGVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpc3BsYXkgbW9kZSBmb3Igc3RhY2sgZGVwbG95bWVudCBwcm9ncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBTdGFja0FjdGl2aXR5UHJvZ3Jlc3MuQmFyIC0gc3RhY2sgZXZlbnRzIHdpbGwgYmUgZGlzcGxheWVkIGZvclxuICAgKiAgIHRoZSByZXNvdXJjZSBjdXJyZW50bHkgYmVpbmcgZGVwbG95ZWQuXG4gICAqL1xuICBwcm9ncmVzcz86IFN0YWNrQWN0aXZpdHlQcm9ncmVzcztcblxuICAvKipcbiAgICogV2hldGhlciB3ZSBhcmUgb24gYSBDSSBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUm9sbGJhY2sgZmFpbGVkIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGxiYWNrPzogYm9vbGVhbjtcblxuICAvKlxuICAgKiBXaGV0aGVyIHRvIHBlcmZvcm0gYSAnaG90c3dhcCcgZGVwbG95bWVudC5cbiAgICogQSAnaG90c3dhcCcgZGVwbG95bWVudCB3aWxsIGF0dGVtcHQgdG8gc2hvcnQtY2lyY3VpdCBDbG91ZEZvcm1hdGlvblxuICAgKiBhbmQgdXBkYXRlIHRoZSBhZmZlY3RlZCByZXNvdXJjZXMgbGlrZSBMYW1iZGEgZnVuY3Rpb25zIGRpcmVjdGx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlIGZvciByZWd1bGFyIGRlcGxveW1lbnRzLCB0cnVlIGZvciAnd2F0Y2gnIGRlcGxveW1lbnRzXG4gICAqL1xuICByZWFkb25seSBob3Rzd2FwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGV4dHJhIHN0cmluZyB0byBhcHBlbmQgdG8gdGhlIFVzZXItQWdlbnQgaGVhZGVyIHdoZW4gcGVyZm9ybWluZyBBV1MgU0RLIGNhbGxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgZXh0cmEgaXMgYXBwZW5kZWQgdG8gdGhlIFVzZXItQWdlbnQgaGVhZGVyXG4gICAqL1xuICByZWFkb25seSBleHRyYVVzZXJBZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBleGlzdGluZyByZXNvdXJjZXMgdG8gYmUgSU1QT1JURUQgaW50byB0aGUgc3RhY2ssIGluc3RlYWQgb2YgYmVpbmcgQ1JFQVRFRFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzVG9JbXBvcnQ/OiBSZXNvdXJjZXNUb0ltcG9ydDtcblxuICAvKipcbiAgICogSWYgcHJlc2VudCwgdXNlIHRoaXMgZ2l2ZW4gdGVtcGxhdGUgaW5zdGVhZCBvZiB0aGUgc3RvcmVkIG9uZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFVzZSB0aGUgc3RvcmVkIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBvdmVycmlkZVRlbXBsYXRlPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lTdGFja09wdGlvbnMge1xuICBzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuICBkZXBsb3lOYW1lPzogc3RyaW5nO1xuICByb2xlQXJuPzogc3RyaW5nO1xuICBxdWlldD86IGJvb2xlYW47XG4gIGZvcmNlPzogYm9vbGVhbjtcbiAgY2k/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrRXhpc3RzT3B0aW9ucyB7XG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG4gIGRlcGxveU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlzaW9uZXJQcm9wcyB7XG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBTREsgb2J0YWluZWQgYnkgYXNzdW1pbmcgdGhlIGRlcGxveSByb2xlXG4gKiBmb3IgYSBnaXZlbiBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkU2RrRm9yRW52aXJvbm1lbnQge1xuICAvKipcbiAgICogVGhlIFNESyBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50XG4gICAqL1xuICByZWFkb25seSBzdGFja1NkazogSVNESztcblxuICAvKipcbiAgICogVGhlIHJlc29sdmVkIGVudmlyb25tZW50IGZvciB0aGUgc3RhY2tcbiAgICogKG5vIG1vcmUgJ3Vua25vd24tYWNjb3VudC91bmtub3duLXJlZ2lvbicpXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlZEVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIFRoZSBFeGVjdXRpb24gUm9sZSB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhlY3V0aW9uIHJvbGUgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25Sb2xlQXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudHNcbiAqXG4gKiBMb29rcyB1cyB0aGUgcmlnaHQgU0RLIGFuZCBCb290c3RyYXAgc3RhY2sgdG8gZGVwbG95IGEgZ2l2ZW5cbiAqIHN0YWNrIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQ2xvdWRGb3JtYXRpb25EZXBsb3ltZW50cyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQcm92aXNpb25lclByb3BzKSB7XG4gICAgdGhpcy5zZGtQcm92aWRlciA9IHByb3BzLnNka1Byb3ZpZGVyO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKFxuICAgIHJvb3RTdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gICAgcmV0cmlldmVQcm9jZXNzZWRUZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlLFxuICApOiBQcm9taXNlPFRlbXBsYXRlPiB7XG4gICAgY29uc3Qgc2RrID0gKGF3YWl0IHRoaXMucHJlcGFyZVNka1dpdGhMb29rdXBPckRlcGxveVJvbGUocm9vdFN0YWNrQXJ0aWZhY3QpKS5zdGFja1NkaztcbiAgICByZXR1cm4gKGF3YWl0IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHJvb3RTdGFja0FydGlmYWN0LCBzZGssIHJldHJpZXZlUHJvY2Vzc2VkVGVtcGxhdGUpKS5kZXBsb3llZFRlbXBsYXRlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlYWRDdXJyZW50VGVtcGxhdGUoc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KTogUHJvbWlzZTxUZW1wbGF0ZT4ge1xuICAgIGRlYnVnKGBSZWFkaW5nIGV4aXN0aW5nIHRlbXBsYXRlIGZvciBzdGFjayAke3N0YWNrQXJ0aWZhY3QuZGlzcGxheU5hbWV9LmApO1xuICAgIGNvbnN0IHNkayA9IChhd2FpdCB0aGlzLnByZXBhcmVTZGtXaXRoTG9va3VwT3JEZXBsb3lSb2xlKHN0YWNrQXJ0aWZhY3QpKS5zdGFja1NkaztcbiAgICByZXR1cm4gbG9hZEN1cnJlbnRUZW1wbGF0ZShzdGFja0FydGlmYWN0LCBzZGspO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlc291cmNlSWRlbnRpZmllclN1bW1hcmllcyhcbiAgICBzdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gICAgdG9vbGtpdFN0YWNrTmFtZT86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxSZXNvdXJjZUlkZW50aWZpZXJTdW1tYXJpZXM+IHtcbiAgICBkZWJ1ZyhgUmV0cmlldmluZyB0ZW1wbGF0ZSBzdW1tYXJ5IGZvciBzdGFjayAke3N0YWNrQXJ0aWZhY3QuZGlzcGxheU5hbWV9LmApO1xuICAgIC8vIEN1cnJlbnRseSwgbmVlZHMgdG8gdXNlIGBkZXBsb3ktcm9sZWAgc2luY2UgaXQgbWF5IG5lZWQgdG8gcmVhZCB0ZW1wbGF0ZXMgaW4gdGhlIHN0YWdpbmdcbiAgICAvLyBidWNrZXQgd2hpY2ggaGF2ZSBiZWVuIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSAoYW5kIGxvb2t1cC1yb2xlIG1heSBub3QgcmVhZCBlbmNyeXB0ZWQgdGhpbmdzKVxuICAgIGNvbnN0IHsgc3RhY2tTZGssIHJlc29sdmVkRW52aXJvbm1lbnQgfSA9IGF3YWl0IHRoaXMucHJlcGFyZVNka0ZvcihzdGFja0FydGlmYWN0LCB1bmRlZmluZWQsIE1vZGUuRm9yUmVhZGluZyk7XG4gICAgY29uc3QgY2ZuID0gc3RhY2tTZGsuY2xvdWRGb3JtYXRpb24oKTtcblxuICAgIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgVG9vbGtpdEluZm8ubG9va3VwKHJlc29sdmVkRW52aXJvbm1lbnQsIHN0YWNrU2RrLCB0b29sa2l0U3RhY2tOYW1lKTtcblxuICAgIC8vIFVwbG9hZCB0aGUgdGVtcGxhdGUsIGlmIG5lY2Vzc2FyeSwgYmVmb3JlIHBhc3NpbmcgaXQgdG8gQ0ZOXG4gICAgY29uc3QgY2ZuUGFyYW0gPSBhd2FpdCBtYWtlQm9keVBhcmFtZXRlckFuZFVwbG9hZChcbiAgICAgIHN0YWNrQXJ0aWZhY3QsXG4gICAgICByZXNvbHZlZEVudmlyb25tZW50LFxuICAgICAgdG9vbGtpdEluZm8sXG4gICAgICB0aGlzLnNka1Byb3ZpZGVyLFxuICAgICAgc3RhY2tTZGspO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjZm4uZ2V0VGVtcGxhdGVTdW1tYXJ5KGNmblBhcmFtKS5wcm9taXNlKCk7XG4gICAgaWYgKCFyZXNwb25zZS5SZXNvdXJjZUlkZW50aWZpZXJTdW1tYXJpZXMpIHtcbiAgICAgIGRlYnVnKCdHZXRUZW1wbGF0ZVN1bW1hcnkgQVBJIGNhbGwgZGlkIG5vdCByZXR1cm4gXCJSZXNvdXJjZUlkZW50aWZpZXJTdW1tYXJpZXNcIicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuUmVzb3VyY2VJZGVudGlmaWVyU3VtbWFyaWVzID8/IFtdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlcGxveVN0YWNrKG9wdGlvbnM6IERlcGxveVN0YWNrT3B0aW9ucyk6IFByb21pc2U8RGVwbG95U3RhY2tSZXN1bHQ+IHtcbiAgICBjb25zdCB7IHN0YWNrU2RrLCByZXNvbHZlZEVudmlyb25tZW50LCBjbG91ZEZvcm1hdGlvblJvbGVBcm4gfSA9IGF3YWl0IHRoaXMucHJlcGFyZVNka0ZvcihvcHRpb25zLnN0YWNrLCBvcHRpb25zLnJvbGVBcm4pO1xuXG4gICAgY29uc3QgdG9vbGtpdEluZm8gPSBhd2FpdCBUb29sa2l0SW5mby5sb29rdXAocmVzb2x2ZWRFbnZpcm9ubWVudCwgc3RhY2tTZGssIG9wdGlvbnMudG9vbGtpdFN0YWNrTmFtZSk7XG5cbiAgICAvLyBQdWJsaXNoIGFueSBhc3NldHMgYmVmb3JlIGRvaW5nIHRoZSBhY3R1YWwgZGVwbG95IChkbyBub3QgcHVibGlzaCBhbnkgYXNzZXRzIG9uIGltcG9ydCBvcGVyYXRpb24pXG4gICAgaWYgKG9wdGlvbnMucmVzb3VyY2VzVG9JbXBvcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5wdWJsaXNoU3RhY2tBc3NldHMob3B0aW9ucy5zdGFjaywgdG9vbGtpdEluZm8pO1xuICAgIH1cblxuICAgIC8vIERvIGEgdmVyaWZpY2F0aW9uIG9mIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvblxuICAgIGF3YWl0IHRoaXMudmFsaWRhdGVCb290c3RyYXBTdGFja1ZlcnNpb24oXG4gICAgICBvcHRpb25zLnN0YWNrLnN0YWNrTmFtZSxcbiAgICAgIG9wdGlvbnMuc3RhY2sucmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24sXG4gICAgICBvcHRpb25zLnN0YWNrLmJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcixcbiAgICAgIHRvb2xraXRJbmZvKTtcblxuICAgIHJldHVybiBkZXBsb3lTdGFjayh7XG4gICAgICBzdGFjazogb3B0aW9ucy5zdGFjayxcbiAgICAgIHJlc29sdmVkRW52aXJvbm1lbnQsXG4gICAgICBkZXBsb3lOYW1lOiBvcHRpb25zLmRlcGxveU5hbWUsXG4gICAgICBub3RpZmljYXRpb25Bcm5zOiBvcHRpb25zLm5vdGlmaWNhdGlvbkFybnMsXG4gICAgICBxdWlldDogb3B0aW9ucy5xdWlldCxcbiAgICAgIHNkazogc3RhY2tTZGssXG4gICAgICBzZGtQcm92aWRlcjogdGhpcy5zZGtQcm92aWRlcixcbiAgICAgIHJvbGVBcm46IGNsb3VkRm9ybWF0aW9uUm9sZUFybixcbiAgICAgIHJldXNlQXNzZXRzOiBvcHRpb25zLnJldXNlQXNzZXRzLFxuICAgICAgdG9vbGtpdEluZm8sXG4gICAgICB0YWdzOiBvcHRpb25zLnRhZ3MsXG4gICAgICBleGVjdXRlOiBvcHRpb25zLmV4ZWN1dGUsXG4gICAgICBjaGFuZ2VTZXROYW1lOiBvcHRpb25zLmNoYW5nZVNldE5hbWUsXG4gICAgICBmb3JjZTogb3B0aW9ucy5mb3JjZSxcbiAgICAgIHBhcmFtZXRlcnM6IG9wdGlvbnMucGFyYW1ldGVycyxcbiAgICAgIHVzZVByZXZpb3VzUGFyYW1ldGVyczogb3B0aW9ucy51c2VQcmV2aW91c1BhcmFtZXRlcnMsXG4gICAgICBwcm9ncmVzczogb3B0aW9ucy5wcm9ncmVzcyxcbiAgICAgIGNpOiBvcHRpb25zLmNpLFxuICAgICAgcm9sbGJhY2s6IG9wdGlvbnMucm9sbGJhY2ssXG4gICAgICBob3Rzd2FwOiBvcHRpb25zLmhvdHN3YXAsXG4gICAgICBleHRyYVVzZXJBZ2VudDogb3B0aW9ucy5leHRyYVVzZXJBZ2VudCxcbiAgICAgIHJlc291cmNlc1RvSW1wb3J0OiBvcHRpb25zLnJlc291cmNlc1RvSW1wb3J0LFxuICAgICAgb3ZlcnJpZGVUZW1wbGF0ZTogb3B0aW9ucy5vdmVycmlkZVRlbXBsYXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3lTdGFjayhvcHRpb25zOiBEZXN0cm95U3RhY2tPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGFja1NkaywgY2xvdWRGb3JtYXRpb25Sb2xlQXJuOiByb2xlQXJuIH0gPSBhd2FpdCB0aGlzLnByZXBhcmVTZGtGb3Iob3B0aW9ucy5zdGFjaywgb3B0aW9ucy5yb2xlQXJuKTtcblxuICAgIHJldHVybiBkZXN0cm95U3RhY2soe1xuICAgICAgc2RrOiBzdGFja1NkayxcbiAgICAgIHJvbGVBcm4sXG4gICAgICBzdGFjazogb3B0aW9ucy5zdGFjayxcbiAgICAgIGRlcGxveU5hbWU6IG9wdGlvbnMuZGVwbG95TmFtZSxcbiAgICAgIHF1aWV0OiBvcHRpb25zLnF1aWV0LFxuICAgICAgY2k6IG9wdGlvbnMuY2ksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RhY2tFeGlzdHMob3B0aW9uczogU3RhY2tFeGlzdHNPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBzdGFja1NkayB9ID0gYXdhaXQgdGhpcy5wcmVwYXJlU2RrRm9yKG9wdGlvbnMuc3RhY2ssIHVuZGVmaW5lZCwgTW9kZS5Gb3JSZWFkaW5nKTtcbiAgICBjb25zdCBzdGFjayA9IGF3YWl0IENsb3VkRm9ybWF0aW9uU3RhY2subG9va3VwKHN0YWNrU2RrLmNsb3VkRm9ybWF0aW9uKCksIG9wdGlvbnMuZGVwbG95TmFtZSA/PyBvcHRpb25zLnN0YWNrLnN0YWNrTmFtZSk7XG4gICAgcmV0dXJuIHN0YWNrLmV4aXN0cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVNka1dpdGhMb29rdXBPckRlcGxveVJvbGUoc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0KTogUHJvbWlzZTxQcmVwYXJlZFNka0ZvckVudmlyb25tZW50PiB7XG4gICAgLy8gdHJ5IHRvIGFzc3VtZSB0aGUgbG9va3VwIHJvbGVcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJlcGFyZVNka1dpdGhMb29rdXBSb2xlRm9yKHRoaXMuc2RrUHJvdmlkZXIsIHN0YWNrQXJ0aWZhY3QpO1xuICAgICAgaWYgKHJlc3VsdC5kaWRBc3N1bWVSb2xlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzb2x2ZWRFbnZpcm9ubWVudDogcmVzdWx0LnJlc29sdmVkRW52aXJvbm1lbnQsXG4gICAgICAgICAgc3RhY2tTZGs6IHJlc3VsdC5zZGssXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBjYXRjaCB7IH1cbiAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGRlcGxveSByb2xlXG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZVNka0ZvcihzdGFja0FydGlmYWN0LCB1bmRlZmluZWQsIE1vZGUuRm9yUmVhZGluZyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnZpcm9ubWVudCBuZWNlc3NhcnkgZm9yIHRvdWNoaW5nIHRoZSBnaXZlbiBzdGFja1xuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBmb2xsb3dpbmc6XG4gICAqXG4gICAqIC0gVGhlIHJlc29sdmVkIGVudmlyb25tZW50IGZvciB0aGUgc3RhY2sgKG5vIG1vcmUgJ3Vua25vd24tYWNjb3VudC91bmtub3duLXJlZ2lvbicpXG4gICAqIC0gU0RLIGxvYWRlZCB3aXRoIHRoZSByaWdodCBjcmVkZW50aWFscyBmb3IgY2FsbGluZyBgQ3JlYXRlQ2hhbmdlU2V0YC5cbiAgICogLSBUaGUgRXhlY3V0aW9uIFJvbGUgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlU2RrRm9yKFxuICAgIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gICAgcm9sZUFybj86IHN0cmluZyxcbiAgICBtb2RlID0gTW9kZS5Gb3JXcml0aW5nLFxuICApOiBQcm9taXNlPFByZXBhcmVkU2RrRm9yRW52aXJvbm1lbnQ+IHtcbiAgICBpZiAoIXN0YWNrLmVudmlyb25tZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzdGFjayAke3N0YWNrLmRpc3BsYXlOYW1lfSBkb2VzIG5vdCBoYXZlIGFuIGVudmlyb25tZW50YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x2ZWRFbnZpcm9ubWVudCA9IGF3YWl0IHRoaXMuc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcblxuICAgIC8vIFN1YnN0aXR1dGUgYW55IHBsYWNlaG9sZGVycyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGVudmlyb25tZW50XG4gICAgY29uc3QgYXJucyA9IGF3YWl0IHJlcGxhY2VFbnZQbGFjZWhvbGRlcnMoe1xuICAgICAgYXNzdW1lUm9sZUFybjogc3RhY2suYXNzdW1lUm9sZUFybixcblxuICAgICAgLy8gVXNlIHRoZSBvdmVycmlkZSBpZiBnaXZlbiwgb3RoZXJ3aXNlIHVzZSB0aGUgZmllbGQgZnJvbSB0aGUgc3RhY2tcbiAgICAgIGNsb3VkRm9ybWF0aW9uUm9sZUFybjogcm9sZUFybiA/PyBzdGFjay5jbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4sXG4gICAgfSwgcmVzb2x2ZWRFbnZpcm9ubWVudCwgdGhpcy5zZGtQcm92aWRlcik7XG5cbiAgICBjb25zdCBzdGFja1NkayA9IGF3YWl0IHRoaXMuc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQocmVzb2x2ZWRFbnZpcm9ubWVudCwgbW9kZSwge1xuICAgICAgYXNzdW1lUm9sZUFybjogYXJucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgYXNzdW1lUm9sZUV4dGVybmFsSWQ6IHN0YWNrLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWNrU2RrOiBzdGFja1Nkay5zZGssXG4gICAgICByZXNvbHZlZEVudmlyb25tZW50LFxuICAgICAgY2xvdWRGb3JtYXRpb25Sb2xlQXJuOiBhcm5zLmNsb3VkRm9ybWF0aW9uUm9sZUFybixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggYWxsIGFzc2V0IG1hbmlmZXN0cyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBnaXZlbiBzdGFja1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwdWJsaXNoU3RhY2tBc3NldHMoc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvKSB7XG4gICAgY29uc3Qgc3RhY2tFbnYgPSBhd2FpdCB0aGlzLnNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgY29uc3QgYXNzZXRBcnRpZmFjdHMgPSBzdGFjay5kZXBlbmRlbmNpZXMuZmlsdGVyKGN4YXBpLkFzc2V0TWFuaWZlc3RBcnRpZmFjdC5pc0Fzc2V0TWFuaWZlc3RBcnRpZmFjdCk7XG5cbiAgICBmb3IgKGNvbnN0IGFzc2V0QXJ0aWZhY3Qgb2YgYXNzZXRBcnRpZmFjdHMpIHtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVCb290c3RyYXBTdGFja1ZlcnNpb24oXG4gICAgICAgIHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgICAgYXNzZXRBcnRpZmFjdC5yZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbixcbiAgICAgICAgYXNzZXRBcnRpZmFjdC5ib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXIsXG4gICAgICAgIHRvb2xraXRJbmZvKTtcblxuICAgICAgY29uc3QgbWFuaWZlc3QgPSBBc3NldE1hbmlmZXN0LmZyb21GaWxlKGFzc2V0QXJ0aWZhY3QuZmlsZSk7XG4gICAgICBhd2FpdCBwdWJsaXNoQXNzZXRzKG1hbmlmZXN0LCB0aGlzLnNka1Byb3ZpZGVyLCBzdGFja0Vudik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgdGhlIGJvb3RzdHJhcCBzdGFjayBoYXMgdGhlIHJpZ2h0IHZlcnNpb24gZm9yIHRoaXMgc3RhY2tcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVCb290c3RyYXBTdGFja1ZlcnNpb24oXG4gICAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gICAgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0b29sa2l0SW5mbzogVG9vbGtpdEluZm8pIHtcblxuICAgIGlmIChyZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybjsgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRvb2xraXRJbmZvLnZhbGlkYXRlVmVyc2lvbihyZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbiwgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7c3RhY2tOYW1lfTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,19 +1,6 @@
1
1
  import * as cxapi from '@aws-cdk/cx-api';
2
2
  import { ISDK } from './aws-auth';
3
3
  import { Template } from './util/cloudformation';
4
- /**
5
- * Reads the currently deployed template from CloudFormation and adds a
6
- * property, `NestedTemplate`, to any nested stacks that appear in either
7
- * the deployed template or the newly synthesized template. `NestedTemplate`
8
- * is populated with contents of the nested template by mutating the
9
- * `template` property of `rootStackArtifact`. This is done for all
10
- * nested stack resources to arbitrary depths.
11
- */
12
- export declare function loadCurrentTemplateWithNestedStacks(rootStackArtifact: cxapi.CloudFormationStackArtifact, sdk: ISDK): Promise<TemplateWithNestedStackNames>;
13
- /**
14
- * Returns the currently deployed template from CloudFormation that corresponds to `stackArtifact`.
15
- */
16
- export declare function loadCurrentTemplate(stackArtifact: cxapi.CloudFormationStackArtifact, sdk: ISDK): Promise<Template>;
17
4
  export interface TemplateWithNestedStackNames {
18
5
  readonly deployedTemplate: Template;
19
6
  readonly nestedStackNames: {
@@ -26,3 +13,16 @@ export interface NestedStackNames {
26
13
  [logicalId: string]: NestedStackNames;
27
14
  };
28
15
  }
16
+ /**
17
+ * Reads the currently deployed template from CloudFormation and adds a
18
+ * property, `NestedTemplate`, to any nested stacks that appear in either
19
+ * the deployed template or the newly synthesized template. `NestedTemplate`
20
+ * is populated with contents of the nested template by mutating the
21
+ * `template` property of `rootStackArtifact`. This is done for all
22
+ * nested stack resources to arbitrary depths.
23
+ */
24
+ export declare function loadCurrentTemplateWithNestedStacks(rootStackArtifact: cxapi.CloudFormationStackArtifact, sdk: ISDK, retrieveProcessedTemplate?: boolean): Promise<TemplateWithNestedStackNames>;
25
+ /**
26
+ * Returns the currently deployed template from CloudFormation that corresponds to `stackArtifact`.
27
+ */
28
+ export declare function loadCurrentTemplate(stackArtifact: cxapi.CloudFormationStackArtifact, sdk: ISDK, retrieveProcessedTemplate?: boolean): Promise<Template>;
@@ -13,8 +13,8 @@ const cloudformation_1 = require("./util/cloudformation");
13
13
  * `template` property of `rootStackArtifact`. This is done for all
14
14
  * nested stack resources to arbitrary depths.
15
15
  */
16
- async function loadCurrentTemplateWithNestedStacks(rootStackArtifact, sdk) {
17
- const deployedTemplate = await loadCurrentTemplate(rootStackArtifact, sdk);
16
+ async function loadCurrentTemplateWithNestedStacks(rootStackArtifact, sdk, retrieveProcessedTemplate = false) {
17
+ const deployedTemplate = await loadCurrentTemplate(rootStackArtifact, sdk, retrieveProcessedTemplate);
18
18
  const nestedStackNames = await addNestedTemplatesToGeneratedAndDeployedStacks(rootStackArtifact, sdk, {
19
19
  generatedTemplate: rootStackArtifact.template,
20
20
  deployedTemplate: deployedTemplate,
@@ -29,13 +29,13 @@ exports.loadCurrentTemplateWithNestedStacks = loadCurrentTemplateWithNestedStack
29
29
  /**
30
30
  * Returns the currently deployed template from CloudFormation that corresponds to `stackArtifact`.
31
31
  */
32
- async function loadCurrentTemplate(stackArtifact, sdk) {
33
- return loadCurrentStackTemplate(stackArtifact.stackName, sdk);
32
+ async function loadCurrentTemplate(stackArtifact, sdk, retrieveProcessedTemplate = false) {
33
+ return loadCurrentStackTemplate(stackArtifact.stackName, sdk, retrieveProcessedTemplate);
34
34
  }
35
35
  exports.loadCurrentTemplate = loadCurrentTemplate;
36
- async function loadCurrentStackTemplate(stackName, sdk) {
36
+ async function loadCurrentStackTemplate(stackName, sdk, retrieveProcessedTemplate = false) {
37
37
  const cfn = sdk.cloudFormation();
38
- const stack = await cloudformation_1.CloudFormationStack.lookup(cfn, stackName);
38
+ const stack = await cloudformation_1.CloudFormationStack.lookup(cfn, stackName, retrieveProcessedTemplate);
39
39
  return stack.template();
40
40
  }
41
41
  async function addNestedTemplatesToGeneratedAndDeployedStacks(rootStackArtifact, sdk, parentTemplates) {
@@ -94,4 +94,4 @@ async function getNestedStackArn(nestedStackLogicalId, listStackResources) {
94
94
  function isCdkManagedNestedStack(stackResource) {
95
95
  return stackResource.Type === 'AWS::CloudFormation::Stack' && stackResource.Metadata && stackResource.Metadata['aws:asset:path'];
96
96
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLXN0YWNrLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJuZXN0ZWQtc3RhY2staGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFFN0IsK0JBQStCO0FBRS9CLHlGQUFnRztBQUNoRywwREFBc0U7QUFFdEU7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxtQ0FBbUMsQ0FDdkQsaUJBQW9ELEVBQUUsR0FBUztJQUUvRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0UsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLDhDQUE4QyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUNwRyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1FBQzdDLGdCQUFnQixFQUFFLGdCQUFnQjtRQUNsQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTO0tBQy9DLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO0tBQ2pCLENBQUM7QUFDSixDQUFDO0FBZEQsa0ZBY0M7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxhQUFnRCxFQUFFLEdBQVM7SUFDbkcsT0FBTyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFGRCxrREFFQztBQUVELEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxTQUFpQixFQUFFLEdBQVM7SUFDbEUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sb0NBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsS0FBSyxV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QixDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQztZQUN4RCxDQUFDLENBQUMsRUFBRTtRQUNOLGlCQUFpQjtLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELEtBQUssVUFBVSxpQkFBaUIsQ0FDOUIsb0JBQTRCLEVBQUUsa0JBQXVDOztJQUVyRSxJQUFJO1FBQ0YsTUFBTSxjQUFjLEdBQUcsT0FBTSxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRSxrQkFBa0IsR0FBRSxDQUFDO1FBQ3RFLGFBQU8sY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsS0FBSyxvQkFBb0IsMkNBQUcsa0JBQWtCLENBQUM7S0FDdEc7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25GLE9BQU87U0FDUjtRQUNELE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxhQUFrQjtJQUNqRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEtBQUssNEJBQTRCLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDbkksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgSVNESyB9IGZyb20gJy4vYXdzLWF1dGgnO1xuaW1wb3J0IHsgTGF6eUxpc3RTdGFja1Jlc291cmNlcywgTGlzdFN0YWNrUmVzb3VyY2VzIH0gZnJvbSAnLi9ldmFsdWF0ZS1jbG91ZGZvcm1hdGlvbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblN0YWNrLCBUZW1wbGF0ZSB9IGZyb20gJy4vdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5cbi8qKlxuICogUmVhZHMgdGhlIGN1cnJlbnRseSBkZXBsb3llZCB0ZW1wbGF0ZSBmcm9tIENsb3VkRm9ybWF0aW9uIGFuZCBhZGRzIGFcbiAqIHByb3BlcnR5LCBgTmVzdGVkVGVtcGxhdGVgLCB0byBhbnkgbmVzdGVkIHN0YWNrcyB0aGF0IGFwcGVhciBpbiBlaXRoZXJcbiAqIHRoZSBkZXBsb3llZCB0ZW1wbGF0ZSBvciB0aGUgbmV3bHkgc3ludGhlc2l6ZWQgdGVtcGxhdGUuIGBOZXN0ZWRUZW1wbGF0ZWBcbiAqIGlzIHBvcHVsYXRlZCB3aXRoIGNvbnRlbnRzIG9mIHRoZSBuZXN0ZWQgdGVtcGxhdGUgYnkgbXV0YXRpbmcgdGhlXG4gKiBgdGVtcGxhdGVgIHByb3BlcnR5IG9mIGByb290U3RhY2tBcnRpZmFjdGAuIFRoaXMgaXMgZG9uZSBmb3IgYWxsXG4gKiBuZXN0ZWQgc3RhY2sgcmVzb3VyY2VzIHRvIGFyYml0cmFyeSBkZXB0aHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhcbiAgcm9vdFN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgc2RrOiBJU0RLLFxuKTogUHJvbWlzZTxUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja05hbWVzPiB7XG4gIGNvbnN0IGRlcGxveWVkVGVtcGxhdGUgPSBhd2FpdCBsb2FkQ3VycmVudFRlbXBsYXRlKHJvb3RTdGFja0FydGlmYWN0LCBzZGspO1xuICBjb25zdCBuZXN0ZWRTdGFja05hbWVzID0gYXdhaXQgYWRkTmVzdGVkVGVtcGxhdGVzVG9HZW5lcmF0ZWRBbmREZXBsb3llZFN0YWNrcyhyb290U3RhY2tBcnRpZmFjdCwgc2RrLCB7XG4gICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHJvb3RTdGFja0FydGlmYWN0LnRlbXBsYXRlLFxuICAgIGRlcGxveWVkVGVtcGxhdGU6IGRlcGxveWVkVGVtcGxhdGUsXG4gICAgZGVwbG95ZWRTdGFja05hbWU6IHJvb3RTdGFja0FydGlmYWN0LnN0YWNrTmFtZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkZXBsb3llZFRlbXBsYXRlLFxuICAgIG5lc3RlZFN0YWNrTmFtZXMsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudGx5IGRlcGxveWVkIHRlbXBsYXRlIGZyb20gQ2xvdWRGb3JtYXRpb24gdGhhdCBjb3JyZXNwb25kcyB0byBgc3RhY2tBcnRpZmFjdGAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ3VycmVudFRlbXBsYXRlKHN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgc2RrOiBJU0RLKTogUHJvbWlzZTxUZW1wbGF0ZT4ge1xuICByZXR1cm4gbG9hZEN1cnJlbnRTdGFja1RlbXBsYXRlKHN0YWNrQXJ0aWZhY3Quc3RhY2tOYW1lLCBzZGspO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ3VycmVudFN0YWNrVGVtcGxhdGUoc3RhY2tOYW1lOiBzdHJpbmcsIHNkazogSVNESykgOiBQcm9taXNlPFRlbXBsYXRlPiB7XG4gIGNvbnN0IGNmbiA9IHNkay5jbG91ZEZvcm1hdGlvbigpO1xuICBjb25zdCBzdGFjayA9IGF3YWl0IENsb3VkRm9ybWF0aW9uU3RhY2subG9va3VwKGNmbiwgc3RhY2tOYW1lKTtcbiAgcmV0dXJuIHN0YWNrLnRlbXBsYXRlKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFkZE5lc3RlZFRlbXBsYXRlc1RvR2VuZXJhdGVkQW5kRGVwbG95ZWRTdGFja3MoXG4gIHJvb3RTdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gIHNkazogSVNESyxcbiAgcGFyZW50VGVtcGxhdGVzOiBTdGFja1RlbXBsYXRlcyxcbik6IFByb21pc2U8eyBbbmVzdGVkU3RhY2tMb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrTmFtZXMgfT4ge1xuICBjb25zdCBsaXN0U3RhY2tSZXNvdXJjZXMgPSBwYXJlbnRUZW1wbGF0ZXMuZGVwbG95ZWRTdGFja05hbWUgPyBuZXcgTGF6eUxpc3RTdGFja1Jlc291cmNlcyhzZGssIHBhcmVudFRlbXBsYXRlcy5kZXBsb3llZFN0YWNrTmFtZSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG5lc3RlZFN0YWNrTmFtZXM6IHsgW25lc3RlZFN0YWNrTG9naWNhbElkOiBzdHJpbmddOiBOZXN0ZWRTdGFja05hbWVzIH0gPSB7fTtcbiAgZm9yIChjb25zdCBbbmVzdGVkU3RhY2tMb2dpY2FsSWQsIGdlbmVyYXRlZE5lc3RlZFN0YWNrUmVzb3VyY2VdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmVudFRlbXBsYXRlcy5nZW5lcmF0ZWRUZW1wbGF0ZS5SZXNvdXJjZXMgPz8ge30pKSB7XG4gICAgaWYgKCFpc0Nka01hbmFnZWROZXN0ZWRTdGFjayhnZW5lcmF0ZWROZXN0ZWRTdGFja1Jlc291cmNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRQYXRoID0gZ2VuZXJhdGVkTmVzdGVkU3RhY2tSZXNvdXJjZS5NZXRhZGF0YVsnYXdzOmFzc2V0OnBhdGgnXTtcbiAgICBjb25zdCBuZXN0ZWRTdGFja1RlbXBsYXRlcyA9IGF3YWl0IGdldE5lc3RlZFN0YWNrVGVtcGxhdGVzKHJvb3RTdGFja0FydGlmYWN0LCBhc3NldFBhdGgsIG5lc3RlZFN0YWNrTG9naWNhbElkLCBsaXN0U3RhY2tSZXNvdXJjZXMsIHNkayk7XG5cbiAgICBnZW5lcmF0ZWROZXN0ZWRTdGFja1Jlc291cmNlLlByb3BlcnRpZXMuTmVzdGVkVGVtcGxhdGUgPSBuZXN0ZWRTdGFja1RlbXBsYXRlcy5nZW5lcmF0ZWRUZW1wbGF0ZTtcblxuICAgIGNvbnN0IGRlcGxveWVkUGFyZW50VGVtcGxhdGUgPSBwYXJlbnRUZW1wbGF0ZXMuZGVwbG95ZWRUZW1wbGF0ZTtcbiAgICBkZXBsb3llZFBhcmVudFRlbXBsYXRlLlJlc291cmNlcyA9IGRlcGxveWVkUGFyZW50VGVtcGxhdGUuUmVzb3VyY2VzID8/IHt9O1xuICAgIGNvbnN0IGRlcGxveWVkTmVzdGVkU3RhY2tSZXNvdXJjZSA9IGRlcGxveWVkUGFyZW50VGVtcGxhdGUuUmVzb3VyY2VzW25lc3RlZFN0YWNrTG9naWNhbElkXSA/PyB7fTtcbiAgICBkZXBsb3llZFBhcmVudFRlbXBsYXRlLlJlc291cmNlc1tuZXN0ZWRTdGFja0xvZ2ljYWxJZF0gPSBkZXBsb3llZE5lc3RlZFN0YWNrUmVzb3VyY2U7XG4gICAgZGVwbG95ZWROZXN0ZWRTdGFja1Jlc291cmNlLlR5cGUgPSBkZXBsb3llZE5lc3RlZFN0YWNrUmVzb3VyY2UuVHlwZSA/PyAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snO1xuICAgIGRlcGxveWVkTmVzdGVkU3RhY2tSZXNvdXJjZS5Qcm9wZXJ0aWVzID0gZGVwbG95ZWROZXN0ZWRTdGFja1Jlc291cmNlLlByb3BlcnRpZXMgPz8ge307XG4gICAgZGVwbG95ZWROZXN0ZWRTdGFja1Jlc291cmNlLlByb3BlcnRpZXMuTmVzdGVkVGVtcGxhdGUgPSBuZXN0ZWRTdGFja1RlbXBsYXRlcy5kZXBsb3llZFRlbXBsYXRlO1xuXG4gICAgbmVzdGVkU3RhY2tOYW1lc1tuZXN0ZWRTdGFja0xvZ2ljYWxJZF0gPSB7XG4gICAgICBuZXN0ZWRTdGFja1BoeXNpY2FsTmFtZTogbmVzdGVkU3RhY2tUZW1wbGF0ZXMuZGVwbG95ZWRTdGFja05hbWUsXG4gICAgICBuZXN0ZWRDaGlsZFN0YWNrTmFtZXM6IGF3YWl0IGFkZE5lc3RlZFRlbXBsYXRlc1RvR2VuZXJhdGVkQW5kRGVwbG95ZWRTdGFja3MoXG4gICAgICAgIHJvb3RTdGFja0FydGlmYWN0LFxuICAgICAgICBzZGssXG4gICAgICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5lc3RlZFN0YWNrTmFtZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE5lc3RlZFN0YWNrVGVtcGxhdGVzKFxuICByb290U3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCBuZXN0ZWRUZW1wbGF0ZUFzc2V0UGF0aDogc3RyaW5nLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZDogc3RyaW5nLFxuICBsaXN0U3RhY2tSZXNvdXJjZXM6IExpc3RTdGFja1Jlc291cmNlcyB8IHVuZGVmaW5lZCwgc2RrOiBJU0RLLFxuKTogUHJvbWlzZTxTdGFja1RlbXBsYXRlcz4ge1xuICBjb25zdCBuZXN0ZWRUZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4ocm9vdFN0YWNrQXJ0aWZhY3QuYXNzZW1ibHkuZGlyZWN0b3J5LCBuZXN0ZWRUZW1wbGF0ZUFzc2V0UGF0aCk7XG5cbiAgLy8gQ0ZOIGdlbmVyYXRlcyB0aGUgbmVzdGVkIHN0YWNrIG5hbWUgaW4gdGhlIGZvcm0gYFBhcmVudFN0YWNrTmFtZS1OZXN0ZWRTdGFja0xvZ2ljYWxJRC1Tb21lSGFzaFdlQ2FuJ3RDb21wdXRlLFxuICAvLyB0aGUgYXJuIGlzIG9mIHRoZSBmb3JtOiBhcm46YXdzOmNsb3VkZm9ybWF0aW9uOnJlZ2lvbjoxMjM0NTY3ODkwMTI6c3RhY2svTmVzdGVkU3RhY2tOYW1lL0Fub3RoZXJIYXNoV2VEb24ndE5lZWRcbiAgLy8gc28gd2UgZ2V0IHRoZSBBUk4gYW5kIG1hbnVhbGx5IGV4dHJhY3QgdGhlIG5hbWUuXG4gIGNvbnN0IG5lc3RlZFN0YWNrQXJuID0gYXdhaXQgZ2V0TmVzdGVkU3RhY2tBcm4obmVzdGVkU3RhY2tMb2dpY2FsSWQsIGxpc3RTdGFja1Jlc291cmNlcyk7XG4gIGNvbnN0IGRlcGxveWVkU3RhY2tOYW1lID0gbmVzdGVkU3RhY2tBcm4/LnNsaWNlKG5lc3RlZFN0YWNrQXJuLmluZGV4T2YoJy8nKSArIDEsIG5lc3RlZFN0YWNrQXJuLmxhc3RJbmRleE9mKCcvJykpO1xuXG4gIHJldHVybiB7XG4gICAgZ2VuZXJhdGVkVGVtcGxhdGU6IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG5lc3RlZFRlbXBsYXRlUGF0aCwgJ3V0Zi04JykpLFxuICAgIGRlcGxveWVkVGVtcGxhdGU6IGRlcGxveWVkU3RhY2tOYW1lXG4gICAgICA/IGF3YWl0IGxvYWRDdXJyZW50U3RhY2tUZW1wbGF0ZShkZXBsb3llZFN0YWNrTmFtZSwgc2RrKVxuICAgICAgOiB7fSxcbiAgICBkZXBsb3llZFN0YWNrTmFtZSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TmVzdGVkU3RhY2tBcm4oXG4gIG5lc3RlZFN0YWNrTG9naWNhbElkOiBzdHJpbmcsIGxpc3RTdGFja1Jlc291cmNlcz86IExpc3RTdGFja1Jlc291cmNlcyxcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhY2tSZXNvdXJjZXMgPSBhd2FpdCBsaXN0U3RhY2tSZXNvdXJjZXM/Lmxpc3RTdGFja1Jlc291cmNlcygpO1xuICAgIHJldHVybiBzdGFja1Jlc291cmNlcz8uZmluZChzciA9PiBzci5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gbmVzdGVkU3RhY2tMb2dpY2FsSWQpPy5QaHlzaWNhbFJlc291cmNlSWQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ1N0YWNrIHdpdGggaWQgJykgJiYgZS5tZXNzYWdlLmVuZHNXaXRoKCcgZG9lcyBub3QgZXhpc3QnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2RrTWFuYWdlZE5lc3RlZFN0YWNrKHN0YWNrUmVzb3VyY2U6IGFueSk6IHN0YWNrUmVzb3VyY2UgaXMgTmVzdGVkU3RhY2tSZXNvdXJjZSB7XG4gIHJldHVybiBzdGFja1Jlc291cmNlLlR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgc3RhY2tSZXNvdXJjZS5NZXRhZGF0YSAmJiBzdGFja1Jlc291cmNlLk1ldGFkYXRhWydhd3M6YXNzZXQ6cGF0aCddO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrTmFtZXMge1xuICByZWFkb25seSBkZXBsb3llZFRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgcmVhZG9ubHkgbmVzdGVkU3RhY2tOYW1lczogeyBbbmVzdGVkU3RhY2tMb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrTmFtZXMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXN0ZWRTdGFja05hbWVzIHtcbiAgcmVhZG9ubHkgbmVzdGVkU3RhY2tQaHlzaWNhbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgbmVzdGVkQ2hpbGRTdGFja05hbWVzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrTmFtZXMgfTtcbn1cblxuaW50ZXJmYWNlIFN0YWNrVGVtcGxhdGVzIHtcbiAgcmVhZG9ubHkgZ2VuZXJhdGVkVGVtcGxhdGU6IGFueTtcbiAgcmVhZG9ubHkgZGVwbG95ZWRUZW1wbGF0ZTogYW55O1xuICByZWFkb25seSBkZXBsb3llZFN0YWNrTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgTmVzdGVkU3RhY2tSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IE1ldGFkYXRhOiB7ICdhd3M6YXNzZXQ6cGF0aCc6IHN0cmluZyB9O1xuICByZWFkb25seSBQcm9wZXJ0aWVzOiBhbnk7XG59XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLXN0YWNrLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJuZXN0ZWQtc3RhY2staGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFFN0IsK0JBQStCO0FBRS9CLHlGQUFnRztBQUNoRywwREFBc0U7QUFZdEU7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxtQ0FBbUMsQ0FDdkQsaUJBQW9ELEVBQUUsR0FBUyxFQUMvRCw0QkFBcUMsS0FBSztJQUUxQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDdEcsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLDhDQUE4QyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtRQUNwRyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1FBQzdDLGdCQUFnQixFQUFFLGdCQUFnQjtRQUNsQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTO0tBQy9DLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO0tBQ2pCLENBQUM7QUFDSixDQUFDO0FBZkQsa0ZBZUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsYUFBZ0QsRUFBRSxHQUFTLEVBQzNELDRCQUFxQyxLQUFLO0lBRTFDLE9BQU8sd0JBQXdCLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBTEQsa0RBS0M7QUFFRCxLQUFLLFVBQVUsd0JBQXdCLENBQ3JDLFNBQWlCLEVBQUUsR0FBUyxFQUFFLDRCQUFxQyxLQUFLO0lBRXhFLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxNQUFNLEtBQUssR0FBRyxNQUFNLG9DQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFH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QUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLGdCQUFnQixFQUFFLGlCQUFpQjtZQUNqQyxDQUFDLENBQUMsTUFBTSx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUM7WUFDeEQsQ0FBQyxDQUFDLEVBQUU7UUFDTixpQkFBaUI7S0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLG9CQUE0QixFQUFFLGtCQUF1Qzs7SUFFckUsSUFBSTtRQUNGLE1BQU0sY0FBYyxHQUFHLE9BQU0sa0JBQWtCLGFBQWxCLGtCQUFrQix1QkFBbEIsa0JBQWtCLENBQUUsa0JBQWtCLEdBQUUsQ0FBQztRQUN0RSxhQUFPLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEtBQUssb0JBQW9CLDJDQUFHLGtCQUFrQixDQUFDO0tBQ3RHO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNuRixPQUFPO1NBQ1I7UUFDRCxNQUFNLENBQUMsQ0FBQztLQUNUO0FBQ0gsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsYUFBa0I7SUFDakQsT0FBTyxhQUFhLENBQUMsSUFBSSxLQUFLLDRCQUE0QixJQUFJLGFBQWEsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ25JLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IElTREsgfSBmcm9tICcuL2F3cy1hdXRoJztcbmltcG9ydCB7IExhenlMaXN0U3RhY2tSZXNvdXJjZXMsIExpc3RTdGFja1Jlc291cmNlcyB9IGZyb20gJy4vZXZhbHVhdGUtY2xvdWRmb3JtYXRpb24tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgVGVtcGxhdGUgfSBmcm9tICcuL3V0aWwvY2xvdWRmb3JtYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrTmFtZXMge1xuICByZWFkb25seSBkZXBsb3llZFRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgcmVhZG9ubHkgbmVzdGVkU3RhY2tOYW1lczogeyBbbmVzdGVkU3RhY2tMb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrTmFtZXMgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXN0ZWRTdGFja05hbWVzIHtcbiAgcmVhZG9ubHkgbmVzdGVkU3RhY2tQaHlzaWNhbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgbmVzdGVkQ2hpbGRTdGFja05hbWVzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrTmFtZXMgfTtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgY3VycmVudGx5IGRlcGxveWVkIHRlbXBsYXRlIGZyb20gQ2xvdWRGb3JtYXRpb24gYW5kIGFkZHMgYVxuICogcHJvcGVydHksIGBOZXN0ZWRUZW1wbGF0ZWAsIHRvIGFueSBuZXN0ZWQgc3RhY2tzIHRoYXQgYXBwZWFyIGluIGVpdGhlclxuICogdGhlIGRlcGxveWVkIHRlbXBsYXRlIG9yIHRoZSBuZXdseSBzeW50aGVzaXplZCB0ZW1wbGF0ZS4gYE5lc3RlZFRlbXBsYXRlYFxuICogaXMgcG9wdWxhdGVkIHdpdGggY29udGVudHMgb2YgdGhlIG5lc3RlZCB0ZW1wbGF0ZSBieSBtdXRhdGluZyB0aGVcbiAqIGB0ZW1wbGF0ZWAgcHJvcGVydHkgb2YgYHJvb3RTdGFja0FydGlmYWN0YC4gVGhpcyBpcyBkb25lIGZvciBhbGxcbiAqIG5lc3RlZCBzdGFjayByZXNvdXJjZXMgdG8gYXJiaXRyYXJ5IGRlcHRocy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKFxuICByb290U3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCBzZGs6IElTREssXG4gIHJldHJpZXZlUHJvY2Vzc2VkVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZSxcbik6IFByb21pc2U8VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tOYW1lcz4ge1xuICBjb25zdCBkZXBsb3llZFRlbXBsYXRlID0gYXdhaXQgbG9hZEN1cnJlbnRUZW1wbGF0ZShyb290U3RhY2tBcnRpZmFjdCwgc2RrLCByZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlKTtcbiAgY29uc3QgbmVzdGVkU3RhY2tOYW1lcyA9IGF3YWl0IGFkZE5lc3RlZFRlbXBsYXRlc1RvR2VuZXJhdGVkQW5kRGVwbG95ZWRTdGFja3Mocm9vdFN0YWNrQXJ0aWZhY3QsIHNkaywge1xuICAgIGdlbmVyYXRlZFRlbXBsYXRlOiByb290U3RhY2tBcnRpZmFjdC50ZW1wbGF0ZSxcbiAgICBkZXBsb3llZFRlbXBsYXRlOiBkZXBsb3llZFRlbXBsYXRlLFxuICAgIGRlcGxveWVkU3RhY2tOYW1lOiByb290U3RhY2tBcnRpZmFjdC5zdGFja05hbWUsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja05hbWVzLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnRseSBkZXBsb3llZCB0ZW1wbGF0ZSBmcm9tIENsb3VkRm9ybWF0aW9uIHRoYXQgY29ycmVzcG9uZHMgdG8gYHN0YWNrQXJ0aWZhY3RgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEN1cnJlbnRUZW1wbGF0ZShcbiAgc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCBzZGs6IElTREssXG4gIHJldHJpZXZlUHJvY2Vzc2VkVGVtcGxhdGU6IGJvb2xlYW4gPSBmYWxzZSxcbik6IFByb21pc2U8VGVtcGxhdGU+IHtcbiAgcmV0dXJuIGxvYWRDdXJyZW50U3RhY2tUZW1wbGF0ZShzdGFja0FydGlmYWN0LnN0YWNrTmFtZSwgc2RrLCByZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZEN1cnJlbnRTdGFja1RlbXBsYXRlKFxuICBzdGFja05hbWU6IHN0cmluZywgc2RrOiBJU0RLLCByZXRyaWV2ZVByb2Nlc3NlZFRlbXBsYXRlOiBib29sZWFuID0gZmFsc2UsXG4pIDogUHJvbWlzZTxUZW1wbGF0ZT4ge1xuICBjb25zdCBjZm4gPSBzZGsuY2xvdWRGb3JtYXRpb24oKTtcbiAgY29uc3Qgc3RhY2sgPSBhd2FpdCBDbG91ZEZvcm1hdGlvblN0YWNrLmxvb2t1cChjZm4sIHN0YWNrTmFtZSwgcmV0cmlldmVQcm9jZXNzZWRUZW1wbGF0ZSk7XG4gIHJldHVybiBzdGFjay50ZW1wbGF0ZSgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBhZGROZXN0ZWRUZW1wbGF0ZXNUb0dlbmVyYXRlZEFuZERlcGxveWVkU3RhY2tzKFxuICByb290U3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICBzZGs6IElTREssXG4gIHBhcmVudFRlbXBsYXRlczogU3RhY2tUZW1wbGF0ZXMsXG4pOiBQcm9taXNlPHsgW25lc3RlZFN0YWNrTG9naWNhbElkOiBzdHJpbmddOiBOZXN0ZWRTdGFja05hbWVzIH0+IHtcbiAgY29uc3QgbGlzdFN0YWNrUmVzb3VyY2VzID0gcGFyZW50VGVtcGxhdGVzLmRlcGxveWVkU3RhY2tOYW1lID8gbmV3IExhenlMaXN0U3RhY2tSZXNvdXJjZXMoc2RrLCBwYXJlbnRUZW1wbGF0ZXMuZGVwbG95ZWRTdGFja05hbWUpIDogdW5kZWZpbmVkO1xuICBjb25zdCBuZXN0ZWRTdGFja05hbWVzOiB7IFtuZXN0ZWRTdGFja0xvZ2ljYWxJZDogc3RyaW5nXTogTmVzdGVkU3RhY2tOYW1lcyB9ID0ge307XG4gIGZvciAoY29uc3QgW25lc3RlZFN0YWNrTG9naWNhbElkLCBnZW5lcmF0ZWROZXN0ZWRTdGFja1Jlc291cmNlXSBvZiBPYmplY3QuZW50cmllcyhwYXJlbnRUZW1wbGF0ZXMuZ2VuZXJhdGVkVGVtcGxhdGUuUmVzb3VyY2VzID8/IHt9KSkge1xuICAgIGlmICghaXNDZGtNYW5hZ2VkTmVzdGVkU3RhY2soZ2VuZXJhdGVkTmVzdGVkU3RhY2tSZXNvdXJjZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0UGF0aCA9IGdlbmVyYXRlZE5lc3RlZFN0YWNrUmVzb3VyY2UuTWV0YWRhdGFbJ2F3czphc3NldDpwYXRoJ107XG4gICAgY29uc3QgbmVzdGVkU3RhY2tUZW1wbGF0ZXMgPSBhd2FpdCBnZXROZXN0ZWRTdGFja1RlbXBsYXRlcyhyb290U3RhY2tBcnRpZmFjdCwgYXNzZXRQYXRoLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZCwgbGlzdFN0YWNrUmVzb3VyY2VzLCBzZGspO1xuXG4gICAgZ2VuZXJhdGVkTmVzdGVkU3RhY2tSZXNvdXJjZS5Qcm9wZXJ0aWVzLk5lc3RlZFRlbXBsYXRlID0gbmVzdGVkU3RhY2tUZW1wbGF0ZXMuZ2VuZXJhdGVkVGVtcGxhdGU7XG5cbiAgICBjb25zdCBkZXBsb3llZFBhcmVudFRlbXBsYXRlID0gcGFyZW50VGVtcGxhdGVzLmRlcGxveWVkVGVtcGxhdGU7XG4gICAgZGVwbG95ZWRQYXJlbnRUZW1wbGF0ZS5SZXNvdXJjZXMgPSBkZXBsb3llZFBhcmVudFRlbXBsYXRlLlJlc291cmNlcyA/PyB7fTtcbiAgICBjb25zdCBkZXBsb3llZE5lc3RlZFN0YWNrUmVzb3VyY2UgPSBkZXBsb3llZFBhcmVudFRlbXBsYXRlLlJlc291cmNlc1tuZXN0ZWRTdGFja0xvZ2ljYWxJZF0gPz8ge307XG4gICAgZGVwbG95ZWRQYXJlbnRUZW1wbGF0ZS5SZXNvdXJjZXNbbmVzdGVkU3RhY2tMb2dpY2FsSWRdID0gZGVwbG95ZWROZXN0ZWRTdGFja1Jlc291cmNlO1xuICAgIGRlcGxveWVkTmVzdGVkU3RhY2tSZXNvdXJjZS5UeXBlID0gZGVwbG95ZWROZXN0ZWRTdGFja1Jlc291cmNlLlR5cGUgPz8gJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJztcbiAgICBkZXBsb3llZE5lc3RlZFN0YWNrUmVzb3VyY2UuUHJvcGVydGllcyA9IGRlcGxveWVkTmVzdGVkU3RhY2tSZXNvdXJjZS5Qcm9wZXJ0aWVzID8/IHt9O1xuICAgIGRlcGxveWVkTmVzdGVkU3RhY2tSZXNvdXJjZS5Qcm9wZXJ0aWVzLk5lc3RlZFRlbXBsYXRlID0gbmVzdGVkU3RhY2tUZW1wbGF0ZXMuZGVwbG95ZWRUZW1wbGF0ZTtcblxuICAgIG5lc3RlZFN0YWNrTmFtZXNbbmVzdGVkU3RhY2tMb2dpY2FsSWRdID0ge1xuICAgICAgbmVzdGVkU3RhY2tQaHlzaWNhbE5hbWU6IG5lc3RlZFN0YWNrVGVtcGxhdGVzLmRlcGxveWVkU3RhY2tOYW1lLFxuICAgICAgbmVzdGVkQ2hpbGRTdGFja05hbWVzOiBhd2FpdCBhZGROZXN0ZWRUZW1wbGF0ZXNUb0dlbmVyYXRlZEFuZERlcGxveWVkU3RhY2tzKFxuICAgICAgICByb290U3RhY2tBcnRpZmFjdCxcbiAgICAgICAgc2RrLFxuICAgICAgICBuZXN0ZWRTdGFja1RlbXBsYXRlcyxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXN0ZWRTdGFja05hbWVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXROZXN0ZWRTdGFja1RlbXBsYXRlcyhcbiAgcm9vdFN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgbmVzdGVkVGVtcGxhdGVBc3NldFBhdGg6IHN0cmluZywgbmVzdGVkU3RhY2tMb2dpY2FsSWQ6IHN0cmluZyxcbiAgbGlzdFN0YWNrUmVzb3VyY2VzOiBMaXN0U3RhY2tSZXNvdXJjZXMgfCB1bmRlZmluZWQsIHNkazogSVNESyxcbik6IFByb21pc2U8U3RhY2tUZW1wbGF0ZXM+IHtcbiAgY29uc3QgbmVzdGVkVGVtcGxhdGVQYXRoID0gcGF0aC5qb2luKHJvb3RTdGFja0FydGlmYWN0LmFzc2VtYmx5LmRpcmVjdG9yeSwgbmVzdGVkVGVtcGxhdGVBc3NldFBhdGgpO1xuXG4gIC8vIENGTiBnZW5lcmF0ZXMgdGhlIG5lc3RlZCBzdGFjayBuYW1lIGluIHRoZSBmb3JtIGBQYXJlbnRTdGFja05hbWUtTmVzdGVkU3RhY2tMb2dpY2FsSUQtU29tZUhhc2hXZUNhbid0Q29tcHV0ZSxcbiAgLy8gdGhlIGFybiBpcyBvZiB0aGUgZm9ybTogYXJuOmF3czpjbG91ZGZvcm1hdGlvbjpyZWdpb246MTIzNDU2Nzg5MDEyOnN0YWNrL05lc3RlZFN0YWNrTmFtZS9Bbm90aGVySGFzaFdlRG9uJ3ROZWVkXG4gIC8vIHNvIHdlIGdldCB0aGUgQVJOIGFuZCBtYW51YWxseSBleHRyYWN0IHRoZSBuYW1lLlxuICBjb25zdCBuZXN0ZWRTdGFja0FybiA9IGF3YWl0IGdldE5lc3RlZFN0YWNrQXJuKG5lc3RlZFN0YWNrTG9naWNhbElkLCBsaXN0U3RhY2tSZXNvdXJjZXMpO1xuICBjb25zdCBkZXBsb3llZFN0YWNrTmFtZSA9IG5lc3RlZFN0YWNrQXJuPy5zbGljZShuZXN0ZWRTdGFja0Fybi5pbmRleE9mKCcvJykgKyAxLCBuZXN0ZWRTdGFja0Fybi5sYXN0SW5kZXhPZignLycpKTtcblxuICByZXR1cm4ge1xuICAgIGdlbmVyYXRlZFRlbXBsYXRlOiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhuZXN0ZWRUZW1wbGF0ZVBhdGgsICd1dGYtOCcpKSxcbiAgICBkZXBsb3llZFRlbXBsYXRlOiBkZXBsb3llZFN0YWNrTmFtZVxuICAgICAgPyBhd2FpdCBsb2FkQ3VycmVudFN0YWNrVGVtcGxhdGUoZGVwbG95ZWRTdGFja05hbWUsIHNkaylcbiAgICAgIDoge30sXG4gICAgZGVwbG95ZWRTdGFja05hbWUsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE5lc3RlZFN0YWNrQXJuKFxuICBuZXN0ZWRTdGFja0xvZ2ljYWxJZDogc3RyaW5nLCBsaXN0U3RhY2tSZXNvdXJjZXM/OiBMaXN0U3RhY2tSZXNvdXJjZXMsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YWNrUmVzb3VyY2VzID0gYXdhaXQgbGlzdFN0YWNrUmVzb3VyY2VzPy5saXN0U3RhY2tSZXNvdXJjZXMoKTtcbiAgICByZXR1cm4gc3RhY2tSZXNvdXJjZXM/LmZpbmQoc3IgPT4gc3IuTG9naWNhbFJlc291cmNlSWQgPT09IG5lc3RlZFN0YWNrTG9naWNhbElkKT8uUGh5c2ljYWxSZXNvdXJjZUlkO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGUubWVzc2FnZS5zdGFydHNXaXRoKCdTdGFjayB3aXRoIGlkICcpICYmIGUubWVzc2FnZS5lbmRzV2l0aCgnIGRvZXMgbm90IGV4aXN0JykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0Nka01hbmFnZWROZXN0ZWRTdGFjayhzdGFja1Jlc291cmNlOiBhbnkpOiBzdGFja1Jlc291cmNlIGlzIE5lc3RlZFN0YWNrUmVzb3VyY2Uge1xuICByZXR1cm4gc3RhY2tSZXNvdXJjZS5UeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snICYmIHN0YWNrUmVzb3VyY2UuTWV0YWRhdGEgJiYgc3RhY2tSZXNvdXJjZS5NZXRhZGF0YVsnYXdzOmFzc2V0OnBhdGgnXTtcbn1cblxuaW50ZXJmYWNlIFN0YWNrVGVtcGxhdGVzIHtcbiAgcmVhZG9ubHkgZ2VuZXJhdGVkVGVtcGxhdGU6IGFueTtcbiAgcmVhZG9ubHkgZGVwbG95ZWRUZW1wbGF0ZTogYW55O1xuICByZWFkb25seSBkZXBsb3llZFN0YWNrTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgTmVzdGVkU3RhY2tSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IE1ldGFkYXRhOiB7ICdhd3M6YXNzZXQ6cGF0aCc6IHN0cmluZyB9O1xuICByZWFkb25seSBQcm9wZXJ0aWVzOiBhbnk7XG59XG4iXX0=
@@ -23,7 +23,8 @@ export declare class CloudFormationStack {
23
23
  private readonly cfn;
24
24
  readonly stackName: string;
25
25
  private readonly stack?;
26
- static lookup(cfn: CloudFormation, stackName: string): Promise<CloudFormationStack>;
26
+ private readonly retrieveProcessedTemplate;
27
+ static lookup(cfn: CloudFormation, stackName: string, retrieveProcessedTemplate?: boolean): Promise<CloudFormationStack>;
27
28
  /**
28
29
  * Return a copy of the given stack that does not exist
29
30
  *
@@ -35,7 +36,7 @@ export declare class CloudFormationStack {
35
36
  */
36
37
  static fromStaticInformation(cfn: CloudFormation, stackName: string, stack: CloudFormation.Stack): CloudFormationStack;
37
38
  private _template;
38
- protected constructor(cfn: CloudFormation, stackName: string, stack?: CloudFormation.Stack | undefined);
39
+ protected constructor(cfn: CloudFormation, stackName: string, stack?: CloudFormation.Stack | undefined, retrieveProcessedTemplate?: boolean);
39
40
  /**
40
41
  * Retrieve the stack's deployed template
41
42
  *