terraconstructs 0.0.25 → 0.1.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 (420) hide show
  1. package/.jsii +83665 -54911
  2. package/.mise.toml +1 -1
  3. package/.nvmrc +1 -1
  4. package/LICENSE +202 -674
  5. package/lib/asset-manager.d.ts +23 -0
  6. package/lib/asset-manager.js +3 -0
  7. package/lib/asset-staging.d.ts +178 -0
  8. package/lib/asset-staging.js +589 -0
  9. package/lib/assets.d.ts +359 -0
  10. package/lib/assets.js +55 -0
  11. package/lib/aws/arn.js +16 -15
  12. package/lib/aws/aws-asset-manager.d.ts +91 -0
  13. package/lib/aws/aws-asset-manager.js +244 -0
  14. package/lib/aws/aws-construct.js +1 -1
  15. package/lib/aws/aws-stack.d.ts +37 -0
  16. package/lib/aws/aws-stack.js +30 -9
  17. package/lib/aws/aws-tags.js +2 -2
  18. package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
  19. package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  21. package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
  22. package/lib/aws/cloudwatch/actions/index.js +4 -4
  23. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  24. package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
  25. package/lib/aws/cloudwatch/actions/sns.js +23 -0
  26. package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
  27. package/lib/aws/cloudwatch/actions/ssm.js +104 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  29. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  30. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  31. package/lib/aws/cloudwatch/alarm.js +1 -1
  32. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  33. package/lib/aws/cloudwatch/dashboard.js +1 -1
  34. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  35. package/lib/aws/cloudwatch/graph.js +8 -8
  36. package/lib/aws/cloudwatch/layout.js +3 -3
  37. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  38. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  39. package/lib/aws/cloudwatch/log-group.js +1 -1
  40. package/lib/aws/cloudwatch/log-query.js +1 -1
  41. package/lib/aws/cloudwatch/log-stream.js +1 -1
  42. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  43. package/lib/aws/cloudwatch/metric.js +2 -2
  44. package/lib/aws/cloudwatch/pattern.js +3 -3
  45. package/lib/aws/cloudwatch/policy.js +1 -1
  46. package/lib/aws/cloudwatch/query-definition.js +2 -2
  47. package/lib/aws/cloudwatch/stats.js +1 -1
  48. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  49. package/lib/aws/cloudwatch/text.js +1 -1
  50. package/lib/aws/cloudwatch/variable.js +3 -3
  51. package/lib/aws/cloudwatch/widget.js +1 -1
  52. package/lib/aws/compute/access-log.d.ts +478 -0
  53. package/lib/aws/compute/access-log.js +649 -0
  54. package/lib/aws/compute/activity.js +1 -1
  55. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  56. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  57. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  58. package/lib/aws/compute/alb/application-listener.js +1 -1
  59. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  60. package/lib/aws/compute/alb/application-target-group.js +1 -1
  61. package/lib/aws/compute/alb/conditions.js +1 -1
  62. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  63. package/lib/aws/compute/alb/trust-store.js +1 -1
  64. package/lib/aws/compute/api-definition.d.ts +106 -0
  65. package/lib/aws/compute/api-definition.js +200 -0
  66. package/lib/aws/compute/api-key.d.ts +184 -0
  67. package/lib/aws/compute/api-key.js +197 -0
  68. package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
  69. package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
  70. package/lib/aws/compute/apigateway-util.d.ts +31 -0
  71. package/lib/aws/compute/apigateway-util.js +152 -0
  72. package/lib/aws/compute/architecture.js +1 -1
  73. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  74. package/lib/aws/compute/authorizer.d.ts +35 -0
  75. package/lib/aws/compute/authorizer.js +28 -0
  76. package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
  77. package/lib/aws/compute/authorizers/identity-source.js +61 -0
  78. package/lib/aws/compute/authorizers/index.d.ts +2 -0
  79. package/lib/aws/compute/authorizers/index.js +20 -0
  80. package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
  81. package/lib/aws/compute/authorizers/lambda.js +208 -0
  82. package/lib/aws/compute/base-path-mapping.d.ts +49 -0
  83. package/lib/aws/compute/base-path-mapping.js +52 -0
  84. package/lib/aws/compute/base-scalable-attribute.js +3 -3
  85. package/lib/aws/compute/bastion-host.js +1 -1
  86. package/lib/aws/compute/chain.js +1 -1
  87. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  88. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  89. package/lib/aws/compute/client-vpn-route.js +2 -2
  90. package/lib/aws/compute/code.d.ts +415 -0
  91. package/lib/aws/compute/code.js +424 -0
  92. package/lib/aws/compute/condition.js +1 -1
  93. package/lib/aws/compute/connections.js +1 -1
  94. package/lib/aws/compute/cors.d.ts +102 -0
  95. package/lib/aws/compute/cors.js +33 -0
  96. package/lib/aws/compute/deployment.d.ts +83 -0
  97. package/lib/aws/compute/deployment.js +158 -0
  98. package/lib/aws/compute/domain-name.d.ts +153 -0
  99. package/lib/aws/compute/domain-name.js +158 -0
  100. package/lib/aws/compute/event-invoke-config.d.ts +2 -2
  101. package/lib/aws/compute/event-invoke-config.js +4 -4
  102. package/lib/aws/compute/event-source-filter.js +2 -2
  103. package/lib/aws/compute/event-source-mapping.d.ts +2 -2
  104. package/lib/aws/compute/event-source-mapping.js +9 -7
  105. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  106. package/lib/aws/compute/event-sources/s3.js +1 -1
  107. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  108. package/lib/aws/compute/event-sources/sqs.js +3 -2
  109. package/lib/aws/compute/fields.js +4 -4
  110. package/lib/aws/compute/function-alias.d.ts +1 -0
  111. package/lib/aws/compute/function-alias.js +8 -2
  112. package/lib/aws/compute/function-base.d.ts +15 -0
  113. package/lib/aws/compute/function-base.js +4 -4
  114. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  115. package/lib/aws/compute/function-destinations/function.js +1 -1
  116. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  117. package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
  118. package/lib/aws/compute/function-nodejs/bundling.js +405 -0
  119. package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
  120. package/lib/aws/compute/function-nodejs/function.js +175 -0
  121. package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
  122. package/lib/aws/compute/function-nodejs/index.js +19 -0
  123. package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
  124. package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
  125. package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
  126. package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
  127. package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
  128. package/lib/aws/compute/function-nodejs/types.js +81 -0
  129. package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
  130. package/lib/aws/compute/function-nodejs/util.js +202 -0
  131. package/lib/aws/compute/function-url.d.ts +2 -2
  132. package/lib/aws/compute/function-url.js +4 -4
  133. package/lib/aws/compute/function.d.ts +34 -4
  134. package/lib/aws/compute/function.js +91 -17
  135. package/lib/aws/compute/gateway-response.d.ts +157 -0
  136. package/lib/aws/compute/gateway-response.js +156 -0
  137. package/lib/aws/compute/handler.d.ts +10 -0
  138. package/lib/aws/compute/handler.js +20 -0
  139. package/lib/aws/compute/index.d.ts +27 -0
  140. package/lib/aws/compute/index.js +29 -1
  141. package/lib/aws/compute/instance-types.js +1 -1
  142. package/lib/aws/compute/instance.js +1 -1
  143. package/lib/aws/compute/integration.d.ts +311 -0
  144. package/lib/aws/compute/integration.js +165 -0
  145. package/lib/aws/compute/integrations/aws.d.ts +72 -0
  146. package/lib/aws/compute/integrations/aws.js +55 -0
  147. package/lib/aws/compute/integrations/http.d.ts +37 -0
  148. package/lib/aws/compute/integrations/http.js +35 -0
  149. package/lib/aws/compute/integrations/index.d.ts +6 -0
  150. package/lib/aws/compute/integrations/index.js +24 -0
  151. package/lib/aws/compute/integrations/lambda.d.ts +40 -0
  152. package/lib/aws/compute/integrations/lambda.js +73 -0
  153. package/lib/aws/compute/integrations/mock.d.ts +16 -0
  154. package/lib/aws/compute/integrations/mock.js +30 -0
  155. package/lib/aws/compute/integrations/request-context.d.ts +144 -0
  156. package/lib/aws/compute/integrations/request-context.js +3 -0
  157. package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
  158. package/lib/aws/compute/integrations/stepfunctions.js +268 -0
  159. package/lib/aws/compute/ip-addresses.js +2 -2
  160. package/lib/aws/compute/ipam.js +1 -1
  161. package/lib/aws/compute/json-schema.d.ts +75 -0
  162. package/lib/aws/compute/json-schema.js +23 -0
  163. package/lib/aws/compute/key-pair.js +1 -1
  164. package/lib/aws/compute/lambda-api.d.ts +46 -0
  165. package/lib/aws/compute/lambda-api.js +64 -0
  166. package/lib/aws/compute/launch-template.js +2 -2
  167. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  168. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  169. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  170. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  171. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  172. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  173. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  174. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  175. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  176. package/lib/aws/compute/load-balancer.js +3 -3
  177. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  178. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  179. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  180. package/lib/aws/compute/machine-image/common.js +1 -1
  181. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  182. package/lib/aws/compute/method.d.ts +219 -0
  183. package/lib/aws/compute/method.js +396 -0
  184. package/lib/aws/compute/methodresponse.d.ts +28 -0
  185. package/lib/aws/compute/methodresponse.js +3 -0
  186. package/lib/aws/compute/model.d.ts +143 -0
  187. package/lib/aws/compute/model.js +141 -0
  188. package/lib/aws/compute/nat.js +5 -5
  189. package/lib/aws/compute/network-acl-types.js +2 -2
  190. package/lib/aws/compute/network-acl.js +3 -3
  191. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  192. package/lib/aws/compute/nlb/network-listener.js +1 -1
  193. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  194. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  195. package/lib/aws/compute/peer.js +1 -1
  196. package/lib/aws/compute/placement-group.js +1 -1
  197. package/lib/aws/compute/port.js +1 -1
  198. package/lib/aws/compute/prefix-list.js +1 -1
  199. package/lib/aws/compute/requestvalidator.d.ts +50 -0
  200. package/lib/aws/compute/requestvalidator.js +59 -0
  201. package/lib/aws/compute/resource.d.ts +223 -0
  202. package/lib/aws/compute/resource.js +316 -0
  203. package/lib/aws/compute/restapi.d.ts +510 -0
  204. package/lib/aws/compute/restapi.js +626 -0
  205. package/lib/aws/compute/route.js +8 -8
  206. package/lib/aws/compute/runtime.d.ts +282 -0
  207. package/lib/aws/compute/runtime.js +337 -0
  208. package/lib/aws/compute/scalable-target.js +3 -3
  209. package/lib/aws/compute/schedule.js +3 -3
  210. package/lib/aws/compute/security-group.js +1 -1
  211. package/lib/aws/compute/stage.d.ts +350 -0
  212. package/lib/aws/compute/stage.js +304 -0
  213. package/lib/aws/compute/state-graph.js +1 -1
  214. package/lib/aws/compute/state-machine-fragment.js +1 -1
  215. package/lib/aws/compute/state-machine.js +4 -4
  216. package/lib/aws/compute/states/choice.js +1 -1
  217. package/lib/aws/compute/states/custom-state.js +1 -1
  218. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  219. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  220. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  221. package/lib/aws/compute/states/distributed-map.js +1 -1
  222. package/lib/aws/compute/states/fail.js +1 -1
  223. package/lib/aws/compute/states/map-base.js +1 -1
  224. package/lib/aws/compute/states/map.js +1 -1
  225. package/lib/aws/compute/states/parallel.js +1 -1
  226. package/lib/aws/compute/states/pass.js +2 -2
  227. package/lib/aws/compute/states/state.js +1 -1
  228. package/lib/aws/compute/states/succeed.js +1 -1
  229. package/lib/aws/compute/states/task-base.js +2 -2
  230. package/lib/aws/compute/states/task.js +1 -1
  231. package/lib/aws/compute/states/wait.js +2 -2
  232. package/lib/aws/compute/step-scaling-action.js +3 -3
  233. package/lib/aws/compute/step-scaling-policy.js +1 -1
  234. package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
  235. package/lib/aws/compute/stepfunctions-api.js +39 -0
  236. package/lib/aws/compute/subnet-v2.js +2 -2
  237. package/lib/aws/compute/subnet.js +1 -1
  238. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  239. package/lib/aws/compute/task-credentials.js +1 -1
  240. package/lib/aws/compute/task-input.js +1 -1
  241. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  242. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  243. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  244. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  245. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  246. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  247. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  248. package/lib/aws/compute/types.js +1 -1
  249. package/lib/aws/compute/usage-plan.d.ts +194 -0
  250. package/lib/aws/compute/usage-plan.js +174 -0
  251. package/lib/aws/compute/user-data.js +3 -3
  252. package/lib/aws/compute/volume.js +2 -2
  253. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  254. package/lib/aws/compute/vpc-endpoint.js +6 -6
  255. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  256. package/lib/aws/compute/vpc-link.d.ts +104 -0
  257. package/lib/aws/compute/vpc-link.js +137 -0
  258. package/lib/aws/compute/vpc-v2-base.js +1 -1
  259. package/lib/aws/compute/vpc-v2.js +2 -2
  260. package/lib/aws/compute/vpc.js +4 -4
  261. package/lib/aws/compute/vpn.js +3 -3
  262. package/lib/aws/edge/certificate.js +1 -1
  263. package/lib/aws/edge/distribution.js +3 -3
  264. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  265. package/lib/aws/edge/dns-record.js +13 -13
  266. package/lib/aws/edge/dns-zone.js +1 -1
  267. package/lib/aws/edge/function.js +2 -2
  268. package/lib/aws/edge/key-value-store.js +4 -4
  269. package/lib/aws/edge/origin.js +3 -3
  270. package/lib/aws/edge/response-headers-policy.js +1 -1
  271. package/lib/aws/encryption/alias.js +1 -1
  272. package/lib/aws/encryption/key.js +1 -1
  273. package/lib/aws/encryption/via-service-principal.js +1 -1
  274. package/lib/aws/iam/grant.js +2 -2
  275. package/lib/aws/iam/group.js +1 -1
  276. package/lib/aws/iam/instance-profile.js +1 -1
  277. package/lib/aws/iam/managed-policy.js +1 -1
  278. package/lib/aws/iam/oidc-provider.js +1 -1
  279. package/lib/aws/iam/policy-document.js +1 -1
  280. package/lib/aws/iam/policy-statement.js +1 -1
  281. package/lib/aws/iam/policy.js +1 -1
  282. package/lib/aws/iam/principals.js +20 -20
  283. package/lib/aws/iam/role.js +1 -1
  284. package/lib/aws/iam/saml-provider.js +2 -2
  285. package/lib/aws/iam/unknown-principal.js +1 -1
  286. package/lib/aws/iam/user.js +5 -5
  287. package/lib/aws/index.d.ts +1 -0
  288. package/lib/aws/index.js +4 -1
  289. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  290. package/lib/aws/network/subnet-group.js +3 -3
  291. package/lib/aws/network/subnet.js +4 -4
  292. package/lib/aws/notify/archive.js +1 -1
  293. package/lib/aws/notify/connection.js +3 -3
  294. package/lib/aws/notify/event-bus.js +3 -3
  295. package/lib/aws/notify/event-pattern.js +1 -1
  296. package/lib/aws/notify/input.js +2 -2
  297. package/lib/aws/notify/kinesis-stream.js +1 -1
  298. package/lib/aws/notify/notification-rule.d.ts +1 -1
  299. package/lib/aws/notify/notification-rule.js +5 -5
  300. package/lib/aws/notify/policy.js +1 -1
  301. package/lib/aws/notify/queue-policy.js +1 -1
  302. package/lib/aws/notify/queue.js +1 -1
  303. package/lib/aws/notify/resource-policy.js +1 -1
  304. package/lib/aws/notify/rule.js +1 -1
  305. package/lib/aws/notify/schedule.js +1 -1
  306. package/lib/aws/notify/subscription-filter.js +1 -1
  307. package/lib/aws/notify/subscription.js +4 -4
  308. package/lib/aws/notify/subscriptions/email.js +1 -1
  309. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  310. package/lib/aws/notify/subscriptions/sms.js +1 -1
  311. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  312. package/lib/aws/notify/subscriptions/url.js +1 -1
  313. package/lib/aws/notify/targets/event-bus.js +1 -1
  314. package/lib/aws/notify/targets/function.js +1 -1
  315. package/lib/aws/notify/targets/log-group.js +2 -2
  316. package/lib/aws/notify/targets/sqs.js +1 -1
  317. package/lib/aws/notify/targets/state-machine.js +1 -1
  318. package/lib/aws/notify/topic-base.js +1 -1
  319. package/lib/aws/notify/topic.js +6 -5
  320. package/lib/aws/partition.d.ts +21 -0
  321. package/lib/aws/partition.js +42 -0
  322. package/lib/aws/storage/assets/image-asset.d.ts +379 -0
  323. package/lib/aws/storage/assets/image-asset.js +247 -0
  324. package/lib/aws/storage/assets/index.d.ts +2 -0
  325. package/lib/aws/storage/assets/index.js +21 -0
  326. package/lib/aws/storage/assets/s3.d.ts +125 -0
  327. package/lib/aws/storage/assets/s3.js +80 -0
  328. package/lib/aws/storage/auth-token.d.ts +25 -0
  329. package/lib/aws/storage/auth-token.js +54 -0
  330. package/lib/aws/storage/billing.js +1 -1
  331. package/lib/aws/storage/bucket-notifications.js +1 -1
  332. package/lib/aws/storage/bucket-policy.js +1 -1
  333. package/lib/aws/storage/bucket-source.d.ts +1 -1
  334. package/lib/aws/storage/bucket-source.js +4 -4
  335. package/lib/aws/storage/bucket.d.ts +14 -6
  336. package/lib/aws/storage/bucket.js +48 -40
  337. package/lib/aws/storage/capacity.js +1 -1
  338. package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
  339. package/lib/aws/storage/ecr-lifecycle.js +23 -0
  340. package/lib/aws/storage/ecr-repository.d.ts +446 -0
  341. package/lib/aws/storage/ecr-repository.js +685 -0
  342. package/lib/aws/storage/encryption.js +1 -1
  343. package/lib/aws/storage/index.d.ts +5 -0
  344. package/lib/aws/storage/index.js +10 -3
  345. package/lib/aws/storage/location.d.ts +17 -0
  346. package/lib/aws/storage/location.js +4 -0
  347. package/lib/aws/storage/notification-targets/function.js +1 -1
  348. package/lib/aws/storage/notification-targets/queue.js +1 -1
  349. package/lib/aws/storage/origin-access-identity.js +1 -1
  350. package/lib/aws/storage/parameter.js +2 -2
  351. package/lib/aws/storage/table.js +3 -3
  352. package/lib/aws/storage/util.d.ts +8 -20
  353. package/lib/aws/storage/util.js +56 -34
  354. package/lib/aws/util.d.ts +1 -0
  355. package/lib/aws/util.js +6 -1
  356. package/lib/bundling.d.ts +434 -0
  357. package/lib/bundling.js +368 -0
  358. package/lib/construct-base.js +2 -2
  359. package/lib/duration.js +1 -1
  360. package/lib/expiration.js +1 -1
  361. package/lib/fs/copy.d.ts +2 -0
  362. package/lib/fs/copy.js +57 -0
  363. package/lib/fs/fingerprint.d.ts +21 -0
  364. package/lib/fs/fingerprint.js +165 -0
  365. package/lib/fs/ignore.d.ts +107 -0
  366. package/lib/fs/ignore.js +190 -0
  367. package/lib/fs/index.d.ts +47 -0
  368. package/lib/fs/index.js +88 -0
  369. package/lib/fs/options.d.ts +110 -0
  370. package/lib/fs/options.js +60 -0
  371. package/lib/fs/utils.d.ts +11 -0
  372. package/lib/fs/utils.js +34 -0
  373. package/lib/index.d.ts +5 -0
  374. package/lib/index.js +7 -1
  375. package/lib/private/asset-staging.d.ts +83 -0
  376. package/lib/private/asset-staging.js +205 -0
  377. package/lib/private/cache.d.ts +17 -0
  378. package/lib/private/cache.js +35 -0
  379. package/lib/private/jsii-deprecated.d.ts +2 -0
  380. package/lib/private/jsii-deprecated.js +19 -0
  381. package/lib/private/unique-resource-name.js +3 -2
  382. package/lib/size.js +1 -1
  383. package/lib/stack-base.js +1 -1
  384. package/lib/terra-func.js +2 -2
  385. package/lib/time-zone.js +1 -1
  386. package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
  387. package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
  388. package/node_modules/@balena/dockerignore/README.md +261 -0
  389. package/node_modules/@balena/dockerignore/ignore.js +363 -0
  390. package/node_modules/@balena/dockerignore/index.d.ts +45 -0
  391. package/node_modules/@balena/dockerignore/package.json +49 -0
  392. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  393. package/node_modules/balanced-match/LICENSE.md +21 -0
  394. package/node_modules/balanced-match/README.md +97 -0
  395. package/node_modules/balanced-match/index.js +62 -0
  396. package/node_modules/balanced-match/package.json +48 -0
  397. package/node_modules/concat-map/.travis.yml +4 -0
  398. package/node_modules/concat-map/LICENSE +18 -0
  399. package/node_modules/concat-map/README.markdown +62 -0
  400. package/node_modules/concat-map/example/map.js +6 -0
  401. package/node_modules/concat-map/index.js +13 -0
  402. package/node_modules/concat-map/package.json +43 -0
  403. package/node_modules/concat-map/test/map.js +39 -0
  404. package/node_modules/ignore/LICENSE-MIT +21 -0
  405. package/node_modules/ignore/README.md +412 -0
  406. package/node_modules/ignore/index.d.ts +61 -0
  407. package/node_modules/ignore/index.js +636 -0
  408. package/node_modules/ignore/legacy.js +559 -0
  409. package/node_modules/ignore/package.json +74 -0
  410. package/node_modules/minimatch/LICENSE +15 -0
  411. package/node_modules/minimatch/README.md +230 -0
  412. package/node_modules/minimatch/minimatch.js +947 -0
  413. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  414. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  415. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  416. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  417. package/node_modules/minimatch/package.json +33 -0
  418. package/package.json +14 -5
  419. package/lib/aws/compute/function-nodejs.d.ts +0 -55
  420. package/lib/aws/compute/function-nodejs.js +0 -70
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StepFunctionsIntegration = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+ const cdktf_1 = require("cdktf");
9
+ const sfn = require("..");
10
+ const aws_1 = require("./aws");
11
+ const iam = require("../../iam");
12
+ // import { ValidationError } from "../../../core/lib/errors";
13
+ const integration_1 = require("../integration");
14
+ const model_1 = require("../model");
15
+ /**
16
+ * Options to integrate with various StepFunction API
17
+ */
18
+ class StepFunctionsIntegration {
19
+ /**
20
+ * Integrates a Synchronous Express State Machine from AWS Step Functions to an API Gateway method.
21
+ *
22
+ * @example
23
+ *
24
+ * const stateMachine = new stepfunctions.StateMachine(this, 'MyStateMachine', {
25
+ * stateMachineType: stepfunctions.StateMachineType.EXPRESS,
26
+ * definition: stepfunctions.Chain.start(new stepfunctions.Pass(this, 'Pass')),
27
+ * });
28
+ *
29
+ * const api = new apigateway.RestApi(this, 'Api', {
30
+ * restApiName: 'MyApi',
31
+ * });
32
+ * api.root.addMethod('GET', apigateway.StepFunctionsIntegration.startExecution(stateMachine));
33
+ */
34
+ static startExecution(stateMachine, options) {
35
+ return new StepFunctionsExecutionIntegration(stateMachine, options);
36
+ }
37
+ }
38
+ exports.StepFunctionsIntegration = StepFunctionsIntegration;
39
+ _a = JSII_RTTI_SYMBOL_1;
40
+ StepFunctionsIntegration[_a] = { fqn: "terraconstructs.aws.compute.StepFunctionsIntegration", version: "0.1.0" };
41
+ class StepFunctionsExecutionIntegration extends aws_1.AwsIntegration {
42
+ constructor(stateMachine, options = {}) {
43
+ super({
44
+ service: "states",
45
+ action: "StartSyncExecution",
46
+ options: {
47
+ credentialsRole: options.credentialsRole,
48
+ integrationResponses: options.integrationResponses ?? integrationResponse(),
49
+ passthroughBehavior: integration_1.PassthroughBehavior.NEVER,
50
+ requestTemplates: requestTemplates(stateMachine, options),
51
+ ...options,
52
+ },
53
+ });
54
+ this.stateMachine = stateMachine;
55
+ this.useDefaultMethodResponses = options.useDefaultMethodResponses ?? true;
56
+ }
57
+ bind(method) {
58
+ const bindResult = super.bind(method);
59
+ const credentialsRole = bindResult.options?.credentialsRole ??
60
+ new iam.Role(method, "StartSyncExecutionRole", {
61
+ assumedBy: new iam.ServicePrincipal("apigateway.amazonaws.com"),
62
+ });
63
+ this.stateMachine.grantStartSyncExecution(credentialsRole);
64
+ let stateMachineName;
65
+ if (this.stateMachine instanceof sfn.StateMachine) {
66
+ const stateMachineType = this.stateMachine
67
+ .stateMachineType;
68
+ if (stateMachineType !== sfn.StateMachineType.EXPRESS) {
69
+ // throw new ValidationError(
70
+ throw new Error('State Machine must be of type "EXPRESS". Please use StateMachineType.EXPRESS as the stateMachineType');
71
+ }
72
+ // if not imported, extract the name from the CFN layer to reach the
73
+ // literal value if it is given (rather than a token)
74
+ stateMachineName = this.stateMachine.node.defaultChild.nameInput;
75
+ }
76
+ else {
77
+ // imported state machine
78
+ stateMachineName = `StateMachine-${this.stateMachine.stack.node.addr}`;
79
+ }
80
+ let deploymentToken;
81
+ if (stateMachineName !== undefined &&
82
+ !cdktf_1.Token.isUnresolved(stateMachineName)) {
83
+ deploymentToken = JSON.stringify({ stateMachineName });
84
+ }
85
+ if (this.useDefaultMethodResponses) {
86
+ for (const methodResponse of METHOD_RESPONSES) {
87
+ method.addMethodResponse(methodResponse);
88
+ }
89
+ }
90
+ return {
91
+ ...bindResult,
92
+ options: {
93
+ ...bindResult.options,
94
+ credentialsRole,
95
+ },
96
+ deploymentToken,
97
+ };
98
+ }
99
+ }
100
+ /**
101
+ * Defines the integration response that passes the result on success,
102
+ * or the error on failure, from the synchronous execution to the caller.
103
+ *
104
+ * @returns integrationResponse mapping
105
+ */
106
+ function integrationResponse() {
107
+ const errorResponse = [
108
+ {
109
+ /**
110
+ * Specifies the regular expression (regex) pattern used to choose
111
+ * an integration response based on the response from the back end.
112
+ * In this case it will match all '4XX' HTTP Errors
113
+ */
114
+ selectionPattern: "4\\d{2}",
115
+ statusCode: "400",
116
+ responseTemplates: {
117
+ "application/json": `{
118
+ "error": "Bad request!"
119
+ }`,
120
+ },
121
+ },
122
+ {
123
+ /**
124
+ * Match all '5XX' HTTP Errors
125
+ */
126
+ selectionPattern: "5\\d{2}",
127
+ statusCode: "500",
128
+ responseTemplates: {
129
+ "application/json": "\"error\": $input.path('$.error')",
130
+ },
131
+ },
132
+ ];
133
+ const integResponse = [
134
+ {
135
+ statusCode: "200",
136
+ responseTemplates: {
137
+ /* eslint-disable */
138
+ "application/json": [
139
+ "#set($inputRoot = $input.path('$'))",
140
+ "#if($input.path('$.status').toString().equals(\"FAILED\"))",
141
+ "#set($context.responseOverride.status = 500)",
142
+ "{",
143
+ '"error": "$input.path(\'$.error\')",',
144
+ '"cause": "$input.path(\'$.cause\')"',
145
+ "}",
146
+ "#else",
147
+ "$input.path('$.output')",
148
+ "#end",
149
+ /* eslint-enable */
150
+ ].join("\n"),
151
+ },
152
+ },
153
+ ...errorResponse,
154
+ ];
155
+ return integResponse;
156
+ }
157
+ /**
158
+ * Defines the request template that will be used for the integration
159
+ */
160
+ function requestTemplates(stateMachine, options) {
161
+ const templateStr = templateString(stateMachine, options);
162
+ const requestTemplate = {
163
+ "application/json": templateStr,
164
+ };
165
+ return requestTemplate;
166
+ }
167
+ /**
168
+ * Reads the VTL template and returns the template string to be used
169
+ * for the request template.
170
+ */
171
+ function templateString(stateMachine, options) {
172
+ let templateStr;
173
+ let requestContextStr = "";
174
+ const includeHeader = options.headers ?? false;
175
+ const includeQueryString = options.querystring ?? true;
176
+ const includePath = options.path ?? true;
177
+ const includeAuthorizer = options.authorizer ?? false;
178
+ if (options.requestContext &&
179
+ Object.keys(options.requestContext).length > 0) {
180
+ requestContextStr = requestContext(options.requestContext);
181
+ }
182
+ templateStr = fs.readFileSync(path.join(__dirname, "stepfunctions.vtl"), {
183
+ encoding: "utf-8",
184
+ });
185
+ templateStr = templateStr.replace("%STATEMACHINE%", stateMachine.stateMachineArn);
186
+ templateStr = templateStr.replace("%INCLUDE_HEADERS%", String(includeHeader));
187
+ templateStr = templateStr.replace("%INCLUDE_QUERYSTRING%", String(includeQueryString));
188
+ templateStr = templateStr.replace("%INCLUDE_PATH%", String(includePath));
189
+ templateStr = templateStr.replace("%INCLUDE_AUTHORIZER%", String(includeAuthorizer));
190
+ templateStr = templateStr.replace("%REQUESTCONTEXT%", requestContextStr);
191
+ return templateStr;
192
+ }
193
+ function requestContext(requestContextObj) {
194
+ const context = {
195
+ accountId: requestContextObj?.accountId
196
+ ? "$context.identity.accountId"
197
+ : undefined,
198
+ apiId: requestContextObj?.apiId ? "$context.apiId" : undefined,
199
+ apiKey: requestContextObj?.apiKey ? "$context.identity.apiKey" : undefined,
200
+ authorizerPrincipalId: requestContextObj?.authorizerPrincipalId
201
+ ? "$context.authorizer.principalId"
202
+ : undefined,
203
+ caller: requestContextObj?.caller ? "$context.identity.caller" : undefined,
204
+ cognitoAuthenticationProvider: requestContextObj?.cognitoAuthenticationProvider
205
+ ? "$context.identity.cognitoAuthenticationProvider"
206
+ : undefined,
207
+ cognitoAuthenticationType: requestContextObj?.cognitoAuthenticationType
208
+ ? "$context.identity.cognitoAuthenticationType"
209
+ : undefined,
210
+ cognitoIdentityId: requestContextObj?.cognitoIdentityId
211
+ ? "$context.identity.cognitoIdentityId"
212
+ : undefined,
213
+ cognitoIdentityPoolId: requestContextObj?.cognitoIdentityPoolId
214
+ ? "$context.identity.cognitoIdentityPoolId"
215
+ : undefined,
216
+ httpMethod: requestContextObj?.httpMethod
217
+ ? "$context.httpMethod"
218
+ : undefined,
219
+ stage: requestContextObj?.stage ? "$context.stage" : undefined,
220
+ sourceIp: requestContextObj?.sourceIp
221
+ ? "$context.identity.sourceIp"
222
+ : undefined,
223
+ user: requestContextObj?.user ? "$context.identity.user" : undefined,
224
+ userAgent: requestContextObj?.userAgent
225
+ ? "$context.identity.userAgent"
226
+ : undefined,
227
+ userArn: requestContextObj?.userArn
228
+ ? "$context.identity.userArn"
229
+ : undefined,
230
+ requestId: requestContextObj?.requestId ? "$context.requestId" : undefined,
231
+ resourceId: requestContextObj?.resourceId
232
+ ? "$context.resourceId"
233
+ : undefined,
234
+ resourcePath: requestContextObj?.resourcePath
235
+ ? "$context.resourcePath"
236
+ : undefined,
237
+ };
238
+ const contextAsString = JSON.stringify(context);
239
+ // The VTL Template conflicts with double-quotes (") for strings.
240
+ // Before sending to the template, we replace double-quotes (") with @@ and replace it back inside the .vtl file
241
+ const doublequotes = '"';
242
+ const replaceWith = "@@";
243
+ return contextAsString.split(doublequotes).join(replaceWith);
244
+ }
245
+ /**
246
+ * Method response model for each HTTP code response
247
+ */
248
+ const METHOD_RESPONSES = [
249
+ {
250
+ statusCode: "200",
251
+ responseModels: {
252
+ "application/json": model_1.Model.EMPTY_MODEL,
253
+ },
254
+ },
255
+ {
256
+ statusCode: "400",
257
+ responseModels: {
258
+ "application/json": model_1.Model.ERROR_MODEL,
259
+ },
260
+ },
261
+ {
262
+ statusCode: "500",
263
+ responseModels: {
264
+ "application/json": model_1.Model.ERROR_MODEL,
265
+ },
266
+ },
267
+ ];
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcGZ1bmN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9pbnRlZ3JhdGlvbnMvc3RlcGZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFFN0IsaUNBQThCO0FBRTlCLDBCQUEwQjtBQUMxQiwrQkFBdUM7QUFDdkMsaUNBQWlDO0FBQ2pDLDhEQUE4RDtBQUM5RCxnREFJd0I7QUFFeEIsb0NBQWlDO0FBc0ZqQzs7R0FFRztBQUNILE1BQWEsd0JBQXdCO0lBQ25DOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FDMUIsWUFBK0IsRUFDL0IsT0FBa0Q7UUFFbEQsT0FBTyxJQUFJLGlDQUFpQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDOztBQXJCSCw0REFzQkM7OztBQUVELE1BQU0saUNBQWtDLFNBQVEsb0JBQWM7SUFJNUQsWUFDRSxZQUErQixFQUMvQixVQUFvRCxFQUFFO1FBRXRELEtBQUssQ0FBQztZQUNKLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxvQkFBb0I7WUFDNUIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsb0JBQW9CLEVBQ2xCLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkQsbUJBQW1CLEVBQUUsaUNBQW1CLENBQUMsS0FBSztnQkFDOUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQztnQkFDekQsR0FBRyxPQUFPO2FBQ1g7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQztJQUM3RSxDQUFD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QUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWTtZQUMzQyxDQUFDLENBQUMsdUJBQXVCO1lBQ3pCLENBQUMsQ0FBQyxTQUFTO0tBQ2QsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFaEQsaUVBQWlFO0lBQ2pFLGdIQUFnSDtJQUNoSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7SUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QjtRQUNFLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGNBQWMsRUFBRTtZQUNkLGtCQUFrQixFQUFFLGFBQUssQ0FBQyxXQUFXO1NBQ3RDO0tBQ0Y7SUFDRDtRQUNFLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGNBQWMsRUFBRTtZQUNkLGtCQUFrQixFQUFFLGFBQUssQ0FBQyxXQUFXO1NBQ3RDO0tBQ0Y7SUFDRDtRQUNFLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGNBQWMsRUFBRTtZQUNkLGtCQUFrQixFQUFFLGFBQUssQ0FBQyxXQUFXO1NBQ3RDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBzZm5TdGF0ZU1hY2hpbmUgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCAqIGFzIHNmbiBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IEF3c0ludGVncmF0aW9uIH0gZnJvbSBcIi4vYXdzXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uLy4uL2lhbVwiO1xuLy8gaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvbGliL2Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgSW50ZWdyYXRpb25Db25maWcsXG4gIEludGVncmF0aW9uT3B0aW9ucyxcbiAgUGFzc3Rocm91Z2hCZWhhdmlvcixcbn0gZnJvbSBcIi4uL2ludGVncmF0aW9uXCI7XG5pbXBvcnQgeyBNZXRob2QgfSBmcm9tIFwiLi4vbWV0aG9kXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuLi9tb2RlbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgd2hlbiBjb25maWd1cmluZyBTdGVwIEZ1bmN0aW9ucyBzeW5jaHJvbm91cyBpbnRlZ3JhdGlvbiB3aXRoIFJlc3QgQVBJXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcEZ1bmN0aW9uc0V4ZWN1dGlvbkludGVncmF0aW9uT3B0aW9uc1xuICBleHRlbmRzIEludGVncmF0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGljaCBkZXRhaWxzIG9mIHRoZSBpbmNvbWluZyByZXF1ZXN0IG11c3QgYmUgcGFzc2VkIG9udG8gdGhlIHVuZGVybHlpbmcgc3RhdGUgbWFjaGluZSxcbiAgICogc3VjaCBhcywgYWNjb3VudCBpZCwgdXNlciBpZGVudGl0eSwgcmVxdWVzdCBpZCwgZXRjLiBUaGUgZXhlY3V0aW9uIGlucHV0IHdpbGwgaW5jbHVkZSBhIG5ldyBrZXkgYHJlcXVlc3RDb250ZXh0YDpcbiAgICpcbiAgICoge1xuICAgKiAgIFwiYm9keVwiOiB7fSxcbiAgICogICBcInJlcXVlc3RDb250ZXh0XCI6IHtcbiAgICogICAgICAgXCJrZXlcIjogXCJ2YWx1ZVwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIHBhcmFtZXRlcnMgd2l0aGluIHJlcXVlc3QgY29udGV4dCB3aWxsIGJlIHNldCBhcyBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dDtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgcXVlcnlzdHJpbmcgaXMgdG8gYmUgaW5jbHVkZWQgaW5zaWRlIHRoZSBleGVjdXRpb24gaW5wdXQuIFRoZSBleGVjdXRpb24gaW5wdXQgd2lsbCBpbmNsdWRlIGEgbmV3IGtleSBgcXVlcnlTdHJpbmdgOlxuICAgKlxuICAgKiB7XG4gICAqICAgXCJib2R5XCI6IHt9LFxuICAgKiAgIFwicXVlcnlzdHJpbmdcIjoge1xuICAgKiAgICAgXCJrZXlcIjogXCJ2YWx1ZVwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHF1ZXJ5c3RyaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgcGF0aCBpcyB0byBiZSBpbmNsdWRlZCBpbnNpZGUgdGhlIGV4ZWN1dGlvbiBpbnB1dC4gVGhlIGV4ZWN1dGlvbiBpbnB1dCB3aWxsIGluY2x1ZGUgYSBuZXcga2V5IGBwYXRoYDpcbiAgICpcbiAgICoge1xuICAgKiAgIFwiYm9keVwiOiB7fSxcbiAgICogICBcInBhdGhcIjoge1xuICAgKiAgICAgXCJyZXNvdXJjZU5hbWVcIjogXCJyZXNvdXJjZVZhbHVlXCJcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGhlYWRlciBpcyB0byBiZSBpbmNsdWRlZCBpbnNpZGUgdGhlIGV4ZWN1dGlvbiBpbnB1dC4gVGhlIGV4ZWN1dGlvbiBpbnB1dCB3aWxsIGluY2x1ZGUgYSBuZXcga2V5IGBoZWFkZXJzYDpcbiAgICpcbiAgICoge1xuICAgKiAgIFwiYm9keVwiOiB7fSxcbiAgICogICBcImhlYWRlcnNcIjoge1xuICAgKiAgICAgIFwiaGVhZGVyMVwiOiBcInZhbHVlXCIsXG4gICAqICAgICAgXCJoZWFkZXIyXCI6IFwidmFsdWVcIlxuICAgKiAgIH1cbiAgICogfVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoZSB3aG9sZSBhdXRob3JpemVyIG9iamVjdCwgaW5jbHVkaW5nIGN1c3RvbSBjb250ZXh0IHZhbHVlcyBzaG91bGQgYmUgaW4gdGhlIGV4ZWN1dGlvbiBpbnB1dC4gVGhlIGV4ZWN1dGlvbiBpbnB1dCB3aWxsIGluY2x1ZGUgYSBuZXcga2V5IGBhdXRob3JpemVyYDpcbiAgICpcbiAgICoge1xuICAgKiAgIFwiYm9keVwiOiB7fSxcbiAgICogICBcImF1dGhvcml6ZXJcIjoge1xuICAgKiAgICAgXCJrZXlcIjogXCJ2YWx1ZVwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhdXRob3JpemVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgZGVmYXVsdCByZXNwb25zZSBtb2RlbHMgd2l0aCAyMDAsIDQwMCwgYW5kIDUwMCBzdGF0dXMgY29kZXMgdG8gdGhlIG1ldGhvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlRGVmYXVsdE1ldGhvZFJlc3BvbnNlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBpbnRlZ3JhdGUgd2l0aCB2YXJpb3VzIFN0ZXBGdW5jdGlvbiBBUElcbiAqL1xuZXhwb3J0IGNsYXNzIFN0ZXBGdW5jdGlvbnNJbnRlZ3JhdGlvbiB7XG4gIC8qKlxuICAgKiBJbnRlZ3JhdGVzIGEgU3luY2hyb25vdXMgRXhwcmVzcyBTdGF0ZSBNYWNoaW5lIGZyb20gQVdTIFN0ZXAgRnVuY3Rpb25zIHRvIGFuIEFQSSBHYXRld2F5IG1ldGhvZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogICAgY29uc3Qgc3RhdGVNYWNoaW5lID0gbmV3IHN0ZXBmdW5jdGlvbnMuU3RhdGVNYWNoaW5lKHRoaXMsICdNeVN0YXRlTWFjaGluZScsIHtcbiAgICogICAgICAgc3RhdGVNYWNoaW5lVHlwZTogc3RlcGZ1bmN0aW9ucy5TdGF0ZU1hY2hpbmVUeXBlLkVYUFJFU1MsXG4gICAqICAgICAgIGRlZmluaXRpb246IHN0ZXBmdW5jdGlvbnMuQ2hhaW4uc3RhcnQobmV3IHN0ZXBmdW5jdGlvbnMuUGFzcyh0aGlzLCAnUGFzcycpKSxcbiAgICogICAgfSk7XG4gICAqXG4gICAqICAgIGNvbnN0IGFwaSA9IG5ldyBhcGlnYXRld2F5LlJlc3RBcGkodGhpcywgJ0FwaScsIHtcbiAgICogICAgICAgcmVzdEFwaU5hbWU6ICdNeUFwaScsXG4gICAqICAgIH0pO1xuICAgKiAgICBhcGkucm9vdC5hZGRNZXRob2QoJ0dFVCcsIGFwaWdhdGV3YXkuU3RlcEZ1bmN0aW9uc0ludGVncmF0aW9uLnN0YXJ0RXhlY3V0aW9uKHN0YXRlTWFjaGluZSkpO1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdGFydEV4ZWN1dGlvbihcbiAgICBzdGF0ZU1hY2hpbmU6IHNmbi5JU3RhdGVNYWNoaW5lLFxuICAgIG9wdGlvbnM/OiBTdGVwRnVuY3Rpb25zRXhlY3V0aW9uSW50ZWdyYXRpb25PcHRpb25zLFxuICApOiBBd3NJbnRlZ3JhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBTdGVwRnVuY3Rpb25zRXhlY3V0aW9uSW50ZWdyYXRpb24oc3RhdGVNYWNoaW5lLCBvcHRpb25zKTtcbiAgfVxufVxuXG5jbGFzcyBTdGVwRnVuY3Rpb25zRXhlY3V0aW9uSW50ZWdyYXRpb24gZXh0ZW5kcyBBd3NJbnRlZ3JhdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVNYWNoaW5lOiBzZm4uSVN0YXRlTWFjaGluZTtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2VEZWZhdWx0TWV0aG9kUmVzcG9uc2VzOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRlTWFjaGluZTogc2ZuLklTdGF0ZU1hY2hpbmUsXG4gICAgb3B0aW9uczogU3RlcEZ1bmN0aW9uc0V4ZWN1dGlvbkludGVncmF0aW9uT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcih7XG4gICAgICBzZXJ2aWNlOiBcInN0YXRlc1wiLFxuICAgICAgYWN0aW9uOiBcIlN0YXJ0U3luY0V4ZWN1dGlvblwiLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBjcmVkZW50aWFsc1JvbGU6IG9wdGlvbnMuY3JlZGVudGlhbHNSb2xlLFxuICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczpcbiAgICAgICAgICBvcHRpb25zLmludGVncmF0aW9uUmVzcG9uc2VzID8/IGludGVncmF0aW9uUmVzcG9uc2UoKSxcbiAgICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogUGFzc3Rocm91Z2hCZWhhdmlvci5ORVZFUixcbiAgICAgICAgcmVxdWVzdFRlbXBsYXRlczogcmVxdWVzdFRlbXBsYXRlcyhzdGF0ZU1hY2hpbmUsIG9wdGlvbnMpLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGVNYWNoaW5lID0gc3RhdGVNYWNoaW5lO1xuICAgIHRoaXMudXNlRGVmYXVsdE1ldGhvZFJlc3BvbnNlcyA9IG9wdGlvbnMudXNlRGVmYXVsdE1ldGhvZFJlc3BvbnNlcyA/PyB0cnVlO1xuICB9XG5cbiAgcHVibGljIGJpbmQobWV0aG9kOiBNZXRob2QpOiBJbnRlZ3JhdGlvbkNvbmZpZyB7XG4gICAgY29uc3QgYmluZFJlc3VsdCA9IHN1cGVyLmJpbmQobWV0aG9kKTtcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzUm9sZSA9XG4gICAgICBiaW5kUmVzdWx0Lm9wdGlvbnM/LmNyZWRlbnRpYWxzUm9sZSA/P1xuICAgICAgbmV3IGlhbS5Sb2xlKG1ldGhvZCwgXCJTdGFydFN5bmNFeGVjdXRpb25Sb2xlXCIsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJhcGlnYXRld2F5LmFtYXpvbmF3cy5jb21cIiksXG4gICAgICB9KTtcbiAgICB0aGlzLnN0YXRlTWFjaGluZS5ncmFudFN0YXJ0U3luY0V4ZWN1dGlvbihjcmVkZW50aWFsc1JvbGUpO1xuXG4gICAgbGV0IHN0YXRlTWFjaGluZU5hbWU7XG5cbiAgICBpZiAodGhpcy5zdGF0ZU1hY2hpbmUgaW5zdGFuY2VvZiBzZm4uU3RhdGVNYWNoaW5lKSB7XG4gICAgICBjb25zdCBzdGF0ZU1hY2hpbmVUeXBlID0gKHRoaXMuc3RhdGVNYWNoaW5lIGFzIHNmbi5TdGF0ZU1hY2hpbmUpXG4gICAgICAgIC5zdGF0ZU1hY2hpbmVUeXBlO1xuICAgICAgaWYgKHN0YXRlTWFjaGluZVR5cGUgIT09IHNmbi5TdGF0ZU1hY2hpbmVUeXBlLkVYUFJFU1MpIHtcbiAgICAgICAgLy8gdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdTdGF0ZSBNYWNoaW5lIG11c3QgYmUgb2YgdHlwZSBcIkVYUFJFU1NcIi4gUGxlYXNlIHVzZSBTdGF0ZU1hY2hpbmVUeXBlLkVYUFJFU1MgYXMgdGhlIHN0YXRlTWFjaGluZVR5cGUnLFxuICAgICAgICAgIC8vIG1ldGhvZCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbm90IGltcG9ydGVkLCBleHRyYWN0IHRoZSBuYW1lIGZyb20gdGhlIENGTiBsYXllciB0byByZWFjaCB0aGVcbiAgICAgIC8vIGxpdGVyYWwgdmFsdWUgaWYgaXQgaXMgZ2l2ZW4gKHJhdGhlciB0aGFuIGEgdG9rZW4pXG4gICAgICBzdGF0ZU1hY2hpbmVOYW1lID0gKFxuICAgICAgICB0aGlzLnN0YXRlTWFjaGluZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBzZm5TdGF0ZU1hY2hpbmUuU2ZuU3RhdGVNYWNoaW5lXG4gICAgICApLm5hbWVJbnB1dDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW1wb3J0ZWQgc3RhdGUgbWFjaGluZVxuICAgICAgc3RhdGVNYWNoaW5lTmFtZSA9IGBTdGF0ZU1hY2hpbmUtJHt0aGlzLnN0YXRlTWFjaGluZS5zdGFjay5ub2RlLmFkZHJ9YDtcbiAgICB9XG5cbiAgICBsZXQgZGVwbG95bWVudFRva2VuO1xuXG4gICAgaWYgKFxuICAgICAgc3RhdGVNYWNoaW5lTmFtZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHN0YXRlTWFjaGluZU5hbWUpXG4gICAgKSB7XG4gICAgICBkZXBsb3ltZW50VG9rZW4gPSBKU09OLnN0cmluZ2lmeSh7IHN0YXRlTWFjaGluZU5hbWUgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlRGVmYXVsdE1ldGhvZFJlc3BvbnNlcykge1xuICAgICAgZm9yIChjb25zdCBtZXRob2RSZXNwb25zZSBvZiBNRVRIT0RfUkVTUE9OU0VTKSB7XG4gICAgICAgIG1ldGhvZC5hZGRNZXRob2RSZXNwb25zZShtZXRob2RSZXNwb25zZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJpbmRSZXN1bHQsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC4uLmJpbmRSZXN1bHQub3B0aW9ucyxcbiAgICAgICAgY3JlZGVudGlhbHNSb2xlLFxuICAgICAgfSxcbiAgICAgIGRlcGxveW1lbnRUb2tlbixcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgaW50ZWdyYXRpb24gcmVzcG9uc2UgdGhhdCBwYXNzZXMgdGhlIHJlc3VsdCBvbiBzdWNjZXNzLFxuICogb3IgdGhlIGVycm9yIG9uIGZhaWx1cmUsIGZyb20gdGhlIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiB0byB0aGUgY2FsbGVyLlxuICpcbiAqIEByZXR1cm5zIGludGVncmF0aW9uUmVzcG9uc2UgbWFwcGluZ1xuICovXG5mdW5jdGlvbiBpbnRlZ3JhdGlvblJlc3BvbnNlKCkge1xuICBjb25zdCBlcnJvclJlc3BvbnNlID0gW1xuICAgIHtcbiAgICAgIC8qKlxuICAgICAgICogU3BlY2lmaWVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKHJlZ2V4KSBwYXR0ZXJuIHVzZWQgdG8gY2hvb3NlXG4gICAgICAgKiBhbiBpbnRlZ3JhdGlvbiByZXNwb25zZSBiYXNlZCBvbiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgYmFjayBlbmQuXG4gICAgICAgKiBJbiB0aGlzIGNhc2UgaXQgd2lsbCBtYXRjaCBhbGwgJzRYWCcgSFRUUCBFcnJvcnNcbiAgICAgICAqL1xuICAgICAgc2VsZWN0aW9uUGF0dGVybjogXCI0XFxcXGR7Mn1cIixcbiAgICAgIHN0YXR1c0NvZGU6IFwiNDAwXCIsXG4gICAgICByZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogYHtcbiAgICAgICAgICAgIFwiZXJyb3JcIjogXCJCYWQgcmVxdWVzdCFcIlxuICAgICAgICAgIH1gLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8qKlxuICAgICAgICogTWF0Y2ggYWxsICc1WFgnIEhUVFAgRXJyb3JzXG4gICAgICAgKi9cbiAgICAgIHNlbGVjdGlvblBhdHRlcm46IFwiNVxcXFxkezJ9XCIsXG4gICAgICBzdGF0dXNDb2RlOiBcIjUwMFwiLFxuICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IFwiXFxcImVycm9yXFxcIjogJGlucHV0LnBhdGgoJyQuZXJyb3InKVwiLFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IGludGVnUmVzcG9uc2UgPSBbXG4gICAge1xuICAgICAgc3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBbXG4gICAgICAgICAgXCIjc2V0KCRpbnB1dFJvb3QgPSAkaW5wdXQucGF0aCgnJCcpKVwiLFxuICAgICAgICAgIFwiI2lmKCRpbnB1dC5wYXRoKCckLnN0YXR1cycpLnRvU3RyaW5nKCkuZXF1YWxzKFxcXCJGQUlMRURcXFwiKSlcIixcbiAgICAgICAgICBcIiNzZXQoJGNvbnRleHQucmVzcG9uc2VPdmVycmlkZS5zdGF0dXMgPSA1MDApXCIsXG4gICAgICAgICAgXCJ7XCIsXG4gICAgICAgICAgJ1wiZXJyb3JcIjogXCIkaW5wdXQucGF0aChcXCckLmVycm9yXFwnKVwiLCcsXG4gICAgICAgICAgJ1wiY2F1c2VcIjogXCIkaW5wdXQucGF0aChcXCckLmNhdXNlXFwnKVwiJyxcbiAgICAgICAgICBcIn1cIixcbiAgICAgICAgICBcIiNlbHNlXCIsXG4gICAgICAgICAgXCIkaW5wdXQucGF0aCgnJC5vdXRwdXQnKVwiLFxuICAgICAgICAgIFwiI2VuZFwiLFxuICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIC4uLmVycm9yUmVzcG9uc2UsXG4gIF07XG5cbiAgcmV0dXJuIGludGVnUmVzcG9uc2U7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgcmVxdWVzdCB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGludGVncmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHJlcXVlc3RUZW1wbGF0ZXMoXG4gIHN0YXRlTWFjaGluZTogc2ZuLklTdGF0ZU1hY2hpbmUsXG4gIG9wdGlvbnM6IFN0ZXBGdW5jdGlvbnNFeGVjdXRpb25JbnRlZ3JhdGlvbk9wdGlvbnMsXG4pIHtcbiAgY29uc3QgdGVtcGxhdGVTdHIgPSB0ZW1wbGF0ZVN0cmluZyhzdGF0ZU1hY2hpbmUsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHJlcXVlc3RUZW1wbGF0ZTogeyBbY29udGVudFR5cGU6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIFwiYXBwbGljYXRpb24vanNvblwiOiB0ZW1wbGF0ZVN0cixcbiAgfTtcblxuICByZXR1cm4gcmVxdWVzdFRlbXBsYXRlO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBWVEwgdGVtcGxhdGUgYW5kIHJldHVybnMgdGhlIHRlbXBsYXRlIHN0cmluZyB0byBiZSB1c2VkXG4gKiBmb3IgdGhlIHJlcXVlc3QgdGVtcGxhdGUuXG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlU3RyaW5nKFxuICBzdGF0ZU1hY2hpbmU6IHNmbi5JU3RhdGVNYWNoaW5lLFxuICBvcHRpb25zOiBTdGVwRnVuY3Rpb25zRXhlY3V0aW9uSW50ZWdyYXRpb25PcHRpb25zLFxuKTogc3RyaW5nIHtcbiAgbGV0IHRlbXBsYXRlU3RyOiBzdHJpbmc7XG5cbiAgbGV0IHJlcXVlc3RDb250ZXh0U3RyID0gXCJcIjtcblxuICBjb25zdCBpbmNsdWRlSGVhZGVyID0gb3B0aW9ucy5oZWFkZXJzID8/IGZhbHNlO1xuICBjb25zdCBpbmNsdWRlUXVlcnlTdHJpbmcgPSBvcHRpb25zLnF1ZXJ5c3RyaW5nID8/IHRydWU7XG4gIGNvbnN0IGluY2x1ZGVQYXRoID0gb3B0aW9ucy5wYXRoID8/IHRydWU7XG4gIGNvbnN0IGluY2x1ZGVBdXRob3JpemVyID0gb3B0aW9ucy5hdXRob3JpemVyID8/IGZhbHNlO1xuXG4gIGlmIChcbiAgICBvcHRpb25zLnJlcXVlc3RDb250ZXh0ICYmXG4gICAgT2JqZWN0LmtleXMob3B0aW9ucy5yZXF1ZXN0Q29udGV4dCkubGVuZ3RoID4gMFxuICApIHtcbiAgICByZXF1ZXN0Q29udGV4dFN0ciA9IHJlcXVlc3RDb250ZXh0KG9wdGlvbnMucmVxdWVzdENvbnRleHQpO1xuICB9XG5cbiAgdGVtcGxhdGVTdHIgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgXCJzdGVwZnVuY3Rpb25zLnZ0bFwiKSwge1xuICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gIH0pO1xuICB0ZW1wbGF0ZVN0ciA9IHRlbXBsYXRlU3RyLnJlcGxhY2UoXG4gICAgXCIlU1RBVEVNQUNISU5FJVwiLFxuICAgIHN0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm4sXG4gICk7XG4gIHRlbXBsYXRlU3RyID0gdGVtcGxhdGVTdHIucmVwbGFjZShcIiVJTkNMVURFX0hFQURFUlMlXCIsIFN0cmluZyhpbmNsdWRlSGVhZGVyKSk7XG4gIHRlbXBsYXRlU3RyID0gdGVtcGxhdGVTdHIucmVwbGFjZShcbiAgICBcIiVJTkNMVURFX1FVRVJZU1RSSU5HJVwiLFxuICAgIFN0cmluZyhpbmNsdWRlUXVlcnlTdHJpbmcpLFxuICApO1xuICB0ZW1wbGF0ZVN0ciA9IHRlbXBsYXRlU3RyLnJlcGxhY2UoXCIlSU5DTFVERV9QQVRIJVwiLCBTdHJpbmcoaW5jbHVkZVBhdGgpKTtcbiAgdGVtcGxhdGVTdHIgPSB0ZW1wbGF0ZVN0ci5yZXBsYWNlKFxuICAgIFwiJUlOQ0xVREVfQVVUSE9SSVpFUiVcIixcbiAgICBTdHJpbmcoaW5jbHVkZUF1dGhvcml6ZXIpLFxuICApO1xuICB0ZW1wbGF0ZVN0ciA9IHRlbXBsYXRlU3RyLnJlcGxhY2UoXCIlUkVRVUVTVENPTlRFWFQlXCIsIHJlcXVlc3RDb250ZXh0U3RyKTtcblxuICByZXR1cm4gdGVtcGxhdGVTdHI7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RDb250ZXh0KHJlcXVlc3RDb250ZXh0T2JqOiBSZXF1ZXN0Q29udGV4dCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgYWNjb3VudElkOiByZXF1ZXN0Q29udGV4dE9iaj8uYWNjb3VudElkXG4gICAgICA/IFwiJGNvbnRleHQuaWRlbnRpdHkuYWNjb3VudElkXCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGFwaUlkOiByZXF1ZXN0Q29udGV4dE9iaj8uYXBpSWQgPyBcIiRjb250ZXh0LmFwaUlkXCIgOiB1bmRlZmluZWQsXG4gICAgYXBpS2V5OiByZXF1ZXN0Q29udGV4dE9iaj8uYXBpS2V5ID8gXCIkY29udGV4dC5pZGVudGl0eS5hcGlLZXlcIiA6IHVuZGVmaW5lZCxcbiAgICBhdXRob3JpemVyUHJpbmNpcGFsSWQ6IHJlcXVlc3RDb250ZXh0T2JqPy5hdXRob3JpemVyUHJpbmNpcGFsSWRcbiAgICAgID8gXCIkY29udGV4dC5hdXRob3JpemVyLnByaW5jaXBhbElkXCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGNhbGxlcjogcmVxdWVzdENvbnRleHRPYmo/LmNhbGxlciA/IFwiJGNvbnRleHQuaWRlbnRpdHkuY2FsbGVyXCIgOiB1bmRlZmluZWQsXG4gICAgY29nbml0b0F1dGhlbnRpY2F0aW9uUHJvdmlkZXI6XG4gICAgICByZXF1ZXN0Q29udGV4dE9iaj8uY29nbml0b0F1dGhlbnRpY2F0aW9uUHJvdmlkZXJcbiAgICAgICAgPyBcIiRjb250ZXh0LmlkZW50aXR5LmNvZ25pdG9BdXRoZW50aWNhdGlvblByb3ZpZGVyXCJcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgY29nbml0b0F1dGhlbnRpY2F0aW9uVHlwZTogcmVxdWVzdENvbnRleHRPYmo/LmNvZ25pdG9BdXRoZW50aWNhdGlvblR5cGVcbiAgICAgID8gXCIkY29udGV4dC5pZGVudGl0eS5jb2duaXRvQXV0aGVudGljYXRpb25UeXBlXCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGNvZ25pdG9JZGVudGl0eUlkOiByZXF1ZXN0Q29udGV4dE9iaj8uY29nbml0b0lkZW50aXR5SWRcbiAgICAgID8gXCIkY29udGV4dC5pZGVudGl0eS5jb2duaXRvSWRlbnRpdHlJZFwiXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBjb2duaXRvSWRlbnRpdHlQb29sSWQ6IHJlcXVlc3RDb250ZXh0T2JqPy5jb2duaXRvSWRlbnRpdHlQb29sSWRcbiAgICAgID8gXCIkY29udGV4dC5pZGVudGl0eS5jb2duaXRvSWRlbnRpdHlQb29sSWRcIlxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgaHR0cE1ldGhvZDogcmVxdWVzdENvbnRleHRPYmo/Lmh0dHBNZXRob2RcbiAgICAgID8gXCIkY29udGV4dC5odHRwTWV0aG9kXCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIHN0YWdlOiByZXF1ZXN0Q29udGV4dE9iaj8uc3RhZ2UgPyBcIiRjb250ZXh0LnN0YWdlXCIgOiB1bmRlZmluZWQsXG4gICAgc291cmNlSXA6IHJlcXVlc3RDb250ZXh0T2JqPy5zb3VyY2VJcFxuICAgICAgPyBcIiRjb250ZXh0LmlkZW50aXR5LnNvdXJjZUlwXCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIHVzZXI6IHJlcXVlc3RDb250ZXh0T2JqPy51c2VyID8gXCIkY29udGV4dC5pZGVudGl0eS51c2VyXCIgOiB1bmRlZmluZWQsXG4gICAgdXNlckFnZW50OiByZXF1ZXN0Q29udGV4dE9iaj8udXNlckFnZW50XG4gICAgICA/IFwiJGNvbnRleHQuaWRlbnRpdHkudXNlckFnZW50XCJcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIHVzZXJBcm46IHJlcXVlc3RDb250ZXh0T2JqPy51c2VyQXJuXG4gICAgICA/IFwiJGNvbnRleHQuaWRlbnRpdHkudXNlckFyblwiXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICByZXF1ZXN0SWQ6IHJlcXVlc3RDb250ZXh0T2JqPy5yZXF1ZXN0SWQgPyBcIiRjb250ZXh0LnJlcXVlc3RJZFwiIDogdW5kZWZpbmVkLFxuICAgIHJlc291cmNlSWQ6IHJlcXVlc3RDb250ZXh0T2JqPy5yZXNvdXJjZUlkXG4gICAgICA/IFwiJGNvbnRleHQucmVzb3VyY2VJZFwiXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVBhdGg6IHJlcXVlc3RDb250ZXh0T2JqPy5yZXNvdXJjZVBhdGhcbiAgICAgID8gXCIkY29udGV4dC5yZXNvdXJjZVBhdGhcIlxuICAgICAgOiB1bmRlZmluZWQsXG4gIH07XG5cbiAgY29uc3QgY29udGV4dEFzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29udGV4dCk7XG5cbiAgLy8gVGhlIFZUTCBUZW1wbGF0ZSBjb25mbGljdHMgd2l0aCBkb3VibGUtcXVvdGVzIChcIikgZm9yIHN0cmluZ3MuXG4gIC8vIEJlZm9yZSBzZW5kaW5nIHRvIHRoZSB0ZW1wbGF0ZSwgd2UgcmVwbGFjZSBkb3VibGUtcXVvdGVzIChcIikgd2l0aCBAQCBhbmQgcmVwbGFjZSBpdCBiYWNrIGluc2lkZSB0aGUgLnZ0bCBmaWxlXG4gIGNvbnN0IGRvdWJsZXF1b3RlcyA9ICdcIic7XG4gIGNvbnN0IHJlcGxhY2VXaXRoID0gXCJAQFwiO1xuICByZXR1cm4gY29udGV4dEFzU3RyaW5nLnNwbGl0KGRvdWJsZXF1b3Rlcykuam9pbihyZXBsYWNlV2l0aCk7XG59XG5cbi8qKlxuICogTWV0aG9kIHJlc3BvbnNlIG1vZGVsIGZvciBlYWNoIEhUVFAgY29kZSByZXNwb25zZVxuICovXG5jb25zdCBNRVRIT0RfUkVTUE9OU0VTID0gW1xuICB7XG4gICAgc3RhdHVzQ29kZTogXCIyMDBcIixcbiAgICByZXNwb25zZU1vZGVsczoge1xuICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IE1vZGVsLkVNUFRZX01PREVMLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBzdGF0dXNDb2RlOiBcIjQwMFwiLFxuICAgIHJlc3BvbnNlTW9kZWxzOiB7XG4gICAgICBcImFwcGxpY2F0aW9uL2pzb25cIjogTW9kZWwuRVJST1JfTU9ERUwsXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHN0YXR1c0NvZGU6IFwiNTAwXCIsXG4gICAgcmVzcG9uc2VNb2RlbHM6IHtcbiAgICAgIFwiYXBwbGljYXRpb24vanNvblwiOiBNb2RlbC5FUlJPUl9NT0RFTCxcbiAgICB9LFxuICB9LFxuXTtcbiJdfQ==
@@ -41,7 +41,7 @@ class IpAddresses {
41
41
  }
42
42
  exports.IpAddresses = IpAddresses;
43
43
  _a = JSII_RTTI_SYMBOL_1;
44
- IpAddresses[_a] = { fqn: "terraconstructs.aws.compute.IpAddresses", version: "0.0.25" };
44
+ IpAddresses[_a] = { fqn: "terraconstructs.aws.compute.IpAddresses", version: "0.1.0" };
45
45
  /**
46
46
  * Implements integration with Amazon VPC IP Address Manager (IPAM).
47
47
  *
@@ -180,7 +180,7 @@ class Ipv6Addresses {
180
180
  }
181
181
  exports.Ipv6Addresses = Ipv6Addresses;
182
182
  _b = JSII_RTTI_SYMBOL_1;
183
- Ipv6Addresses[_b] = { fqn: "terraconstructs.aws.compute.Ipv6Addresses", version: "0.0.25" };
183
+ Ipv6Addresses[_b] = { fqn: "terraconstructs.aws.compute.Ipv6Addresses", version: "0.1.0" };
184
184
  /**
185
185
  * Implements integration with Amazon provided IPv6 CIDRs.
186
186
  *
@@ -279,7 +279,7 @@ class Ipam extends aws_construct_1.AwsConstructBase {
279
279
  }
280
280
  exports.Ipam = Ipam;
281
281
  _a = JSII_RTTI_SYMBOL_1;
282
- Ipam[_a] = { fqn: "terraconstructs.aws.compute.alpha.Ipam", version: "0.0.25" };
282
+ Ipam[_a] = { fqn: "terraconstructs.aws.compute.alpha.Ipam", version: "0.1.0" };
283
283
  /**
284
284
  * Function to create IpamPool under scope
285
285
  * @internal
@@ -0,0 +1,75 @@
1
+ export declare enum JsonSchemaVersion {
2
+ /**
3
+ * In API Gateway models are defined using the JSON schema draft 4.
4
+ * @see https://tools.ietf.org/html/draft-zyp-json-schema-04
5
+ */
6
+ DRAFT4 = "http://json-schema.org/draft-04/schema#",
7
+ DRAFT7 = "http://json-schema.org/draft-07/schema#"
8
+ }
9
+ export declare enum JsonSchemaType {
10
+ NULL = "null",
11
+ BOOLEAN = "boolean",
12
+ OBJECT = "object",
13
+ ARRAY = "array",
14
+ NUMBER = "number",
15
+ INTEGER = "integer",
16
+ STRING = "string"
17
+ }
18
+ /**
19
+ * Represents a JSON schema definition of the structure of a
20
+ * REST API model. Copied from npm module jsonschema.
21
+ *
22
+ * @see http://json-schema.org/
23
+ * @see https://github.com/tdegrunt/jsonschema
24
+ */
25
+ export interface JsonSchema {
26
+ readonly schema?: JsonSchemaVersion;
27
+ readonly id?: string;
28
+ readonly ref?: string;
29
+ readonly type?: JsonSchemaType | JsonSchemaType[];
30
+ readonly title?: string;
31
+ readonly description?: string;
32
+ readonly enum?: any[];
33
+ /**
34
+ * The default value if you use an enum.
35
+ *
36
+ * @default - not set
37
+ */
38
+ readonly default?: any;
39
+ readonly format?: string;
40
+ readonly definitions?: {
41
+ [name: string]: JsonSchema;
42
+ };
43
+ readonly multipleOf?: number;
44
+ readonly maximum?: number;
45
+ readonly exclusiveMaximum?: boolean;
46
+ readonly minimum?: number;
47
+ readonly exclusiveMinimum?: boolean;
48
+ readonly maxLength?: number;
49
+ readonly minLength?: number;
50
+ readonly pattern?: string;
51
+ readonly items?: JsonSchema | JsonSchema[];
52
+ readonly additionalItems?: JsonSchema[];
53
+ readonly maxItems?: number;
54
+ readonly minItems?: number;
55
+ readonly uniqueItems?: boolean;
56
+ readonly contains?: JsonSchema | JsonSchema[];
57
+ readonly maxProperties?: number;
58
+ readonly minProperties?: number;
59
+ readonly required?: string[];
60
+ readonly properties?: {
61
+ [name: string]: JsonSchema;
62
+ };
63
+ readonly additionalProperties?: JsonSchema | boolean;
64
+ readonly patternProperties?: {
65
+ [name: string]: JsonSchema;
66
+ };
67
+ readonly dependencies?: {
68
+ [name: string]: JsonSchema | string[];
69
+ };
70
+ readonly propertyNames?: JsonSchema;
71
+ readonly allOf?: JsonSchema[];
72
+ readonly anyOf?: JsonSchema[];
73
+ readonly oneOf?: JsonSchema[];
74
+ readonly not?: JsonSchema;
75
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonSchemaType = exports.JsonSchemaVersion = void 0;
4
+ var JsonSchemaVersion;
5
+ (function (JsonSchemaVersion) {
6
+ /**
7
+ * In API Gateway models are defined using the JSON schema draft 4.
8
+ * @see https://tools.ietf.org/html/draft-zyp-json-schema-04
9
+ */
10
+ JsonSchemaVersion["DRAFT4"] = "http://json-schema.org/draft-04/schema#";
11
+ JsonSchemaVersion["DRAFT7"] = "http://json-schema.org/draft-07/schema#";
12
+ })(JsonSchemaVersion || (exports.JsonSchemaVersion = JsonSchemaVersion = {}));
13
+ var JsonSchemaType;
14
+ (function (JsonSchemaType) {
15
+ JsonSchemaType["NULL"] = "null";
16
+ JsonSchemaType["BOOLEAN"] = "boolean";
17
+ JsonSchemaType["OBJECT"] = "object";
18
+ JsonSchemaType["ARRAY"] = "array";
19
+ JsonSchemaType["NUMBER"] = "number";
20
+ JsonSchemaType["INTEGER"] = "integer";
21
+ JsonSchemaType["STRING"] = "string";
22
+ })(JsonSchemaType || (exports.JsonSchemaType = JsonSchemaType = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxpQkFPWDtBQVBELFdBQVksaUJBQWlCO0lBQzNCOzs7T0FHRztJQUNILHVFQUFrRCxDQUFBO0lBQ2xELHVFQUFrRCxDQUFBO0FBQ3BELENBQUMsRUFQVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQU81QjtBQUVELElBQVksY0FRWDtBQVJELFdBQVksY0FBYztJQUN4QiwrQkFBYSxDQUFBO0lBQ2IscUNBQW1CLENBQUE7SUFDbkIsbUNBQWlCLENBQUE7SUFDakIsaUNBQWUsQ0FBQTtJQUNmLG1DQUFpQixDQUFBO0lBQ2pCLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFSVyxjQUFjLDhCQUFkLGNBQWMsUUFRekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBKc29uU2NoZW1hVmVyc2lvbiB7XG4gIC8qKlxuICAgKiBJbiBBUEkgR2F0ZXdheSBtb2RlbHMgYXJlIGRlZmluZWQgdXNpbmcgdGhlIEpTT04gc2NoZW1hIGRyYWZ0IDQuXG4gICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXp5cC1qc29uLXNjaGVtYS0wNFxuICAgKi9cbiAgRFJBRlQ0ID0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSNcIixcbiAgRFJBRlQ3ID0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIixcbn1cblxuZXhwb3J0IGVudW0gSnNvblNjaGVtYVR5cGUge1xuICBOVUxMID0gXCJudWxsXCIsXG4gIEJPT0xFQU4gPSBcImJvb2xlYW5cIixcbiAgT0JKRUNUID0gXCJvYmplY3RcIixcbiAgQVJSQVkgPSBcImFycmF5XCIsXG4gIE5VTUJFUiA9IFwibnVtYmVyXCIsXG4gIElOVEVHRVIgPSBcImludGVnZXJcIixcbiAgU1RSSU5HID0gXCJzdHJpbmdcIixcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgSlNPTiBzY2hlbWEgZGVmaW5pdGlvbiBvZiB0aGUgc3RydWN0dXJlIG9mIGFcbiAqIFJFU1QgQVBJIG1vZGVsLiBDb3BpZWQgZnJvbSBucG0gbW9kdWxlIGpzb25zY2hlbWEuXG4gKlxuICogQHNlZSBodHRwOi8vanNvbi1zY2hlbWEub3JnL1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGRlZ3J1bnQvanNvbnNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25TY2hlbWEge1xuICAvLyBTcGVjaWFsIGtleXdvcmRzXG4gIHJlYWRvbmx5IHNjaGVtYT86IEpzb25TY2hlbWFWZXJzaW9uO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVmPzogc3RyaW5nO1xuXG4gIC8vIENvbW1vbiBwcm9wZXJ0aWVzXG4gIHJlYWRvbmx5IHR5cGU/OiBKc29uU2NoZW1hVHlwZSB8IEpzb25TY2hlbWFUeXBlW107XG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgZW51bT86IGFueVtdO1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgaWYgeW91IHVzZSBhbiBlbnVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdCBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHQ/OiBhbnk7XG4gIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcbiAgcmVhZG9ubHkgZGVmaW5pdGlvbnM/OiB7IFtuYW1lOiBzdHJpbmddOiBKc29uU2NoZW1hIH07XG5cbiAgLy8gTnVtYmVyIG9yIEludGVnZXJcbiAgcmVhZG9ubHkgbXVsdGlwbGVPZj86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4aW11bT86IG51bWJlcjtcbiAgcmVhZG9ubHkgZXhjbHVzaXZlTWF4aW11bT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG1pbmltdW0/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGV4Y2x1c2l2ZU1pbmltdW0/OiBib29sZWFuO1xuXG4gIC8vIFN0cmluZ1xuICByZWFkb25seSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1pbkxlbmd0aD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcblxuICAvLyBBcnJheVxuICByZWFkb25seSBpdGVtcz86IEpzb25TY2hlbWEgfCBKc29uU2NoZW1hW107XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxJdGVtcz86IEpzb25TY2hlbWFbXTtcbiAgcmVhZG9ubHkgbWF4SXRlbXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1pbkl0ZW1zPzogbnVtYmVyO1xuICByZWFkb25seSB1bmlxdWVJdGVtcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNvbnRhaW5zPzogSnNvblNjaGVtYSB8IEpzb25TY2hlbWFbXTtcblxuICAvLyBPYmplY3RcbiAgcmVhZG9ubHkgbWF4UHJvcGVydGllcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWluUHJvcGVydGllcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmVxdWlyZWQ/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IHsgW25hbWU6IHN0cmluZ106IEpzb25TY2hlbWEgfTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbFByb3BlcnRpZXM/OiBKc29uU2NoZW1hIHwgYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGF0dGVyblByb3BlcnRpZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBKc29uU2NoZW1hIH07XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IHsgW25hbWU6IHN0cmluZ106IEpzb25TY2hlbWEgfCBzdHJpbmdbXSB9O1xuICByZWFkb25seSBwcm9wZXJ0eU5hbWVzPzogSnNvblNjaGVtYTtcblxuICAvLyBDb25kaXRpb25hbFxuICByZWFkb25seSBhbGxPZj86IEpzb25TY2hlbWFbXTtcbiAgcmVhZG9ubHkgYW55T2Y/OiBKc29uU2NoZW1hW107XG4gIHJlYWRvbmx5IG9uZU9mPzogSnNvblNjaGVtYVtdO1xuICByZWFkb25seSBub3Q/OiBKc29uU2NoZW1hO1xufVxuIl19
@@ -190,5 +190,5 @@ class KeyPair extends aws_construct_1.AwsConstructBase {
190
190
  }
191
191
  exports.KeyPair = KeyPair;
192
192
  _a = JSII_RTTI_SYMBOL_1;
193
- KeyPair[_a] = { fqn: "terraconstructs.aws.compute.KeyPair", version: "0.0.25" };
193
+ KeyPair[_a] = { fqn: "terraconstructs.aws.compute.KeyPair", version: "0.1.0" };
194
194
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXBhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUva2V5LXBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RkFBNEY7QUFFNUYsc0RBQTJEO0FBQzNELHNEQUFpRDtBQUNqRCxpQ0FBMkI7QUFFM0IsbURBQXNEO0FBQ3RELG9EQUkwQjtBQUMxQixvREFJOEI7QUFFOUIsTUFBTTtBQUNOLGdDQUFnQztBQUNoQyxNQUFNO0FBQ04sOEJBQThCO0FBQzlCLFFBQVE7QUFDUiw4Q0FBOEM7QUFDOUMsUUFBUTtBQUNSLGlCQUFpQjtBQUVqQixRQUFRO0FBQ1IsbUJBQW1CO0FBQ25CLFFBQVE7QUFDUixpQkFBaUI7QUFDakIsSUFBSTtBQUVKOztHQUVHO0FBQ0gsSUFBWSxXQVlYO0FBWkQsV0FBWSxXQUFXO0lBQ3JCOztPQUVHO0lBQ0gsMEJBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCxrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBWlcsV0FBVywyQkFBWCxXQUFXLFFBWXRCO0FBc0hEOzs7O0dBSUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxnQ0FBZ0I7SUFDM0M7O09BRUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUMzQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsV0FBbUI7UUFFbkIsT0FBTyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUNqQyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBd0I7UUFFeEIsTUFBTSxNQUFPLFNBQVEsZ0NBQWdCO1lBR25DLElBQVcsY0FBYztnQkFDdkIsT0FBTztvQkFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEIsQ0FBQztZ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Q0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxNQUEyQjtRQUNoRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLFdBQVcsQ0FBQyxPQUFPO2dCQUN0QixPQUFPLE1BQU0sS0FBSyxtQ0FBbUIsQ0FBQyxPQUFPLENBQUM7WUFDaEQsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDbEIsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzs7QUFwTkgsMEJBcU5DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjMi9saWIva2V5LXBhaXIudHNcblxuaW1wb3J0IHsga2V5UGFpciBhcyB0ZktleVBhaXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgcHJpdmF0ZUtleSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItdGxzXCI7XG5pbXBvcnQgeyBGbiB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE9wZXJhdGluZ1N5c3RlbVR5cGUgfSBmcm9tIFwiLi9tYWNoaW5lLWltYWdlXCI7XG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgSUF3c0NvbnN0cnVjdCxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7XG4gIFN0cmluZ1BhcmFtZXRlcixcbiAgSVN0cmluZ1BhcmFtZXRlcixcbiAgUGFyYW1ldGVyVHlwZSxcbn0gZnJvbSBcIi4uL3N0b3JhZ2UvcGFyYW1ldGVyXCI7XG5cbi8vIC8qKlxuLy8gICogVGhlIGZvcm1hdCBvZiB0aGUgS2V5IFBhaXJcbi8vICAqL1xuLy8gZXhwb3J0IGVudW0gS2V5UGFpckZvcm1hdCB7XG4vLyAgIC8qKlxuLy8gICAgKiBBIFBQSyBmaWxlLCB0eXBpY2FsbHkgdXNlZCB3aXRoIFB1VFRZLlxuLy8gICAgKi9cbi8vICAgUFBLID0gXCJwcGtcIixcblxuLy8gICAvKipcbi8vICAgICogQSBQRU0gZmlsZS5cbi8vICAgICovXG4vLyAgIFBFTSA9IFwicGVtXCIsXG4vLyB9XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGtleSBwYWlyLlxuICovXG5leHBvcnQgZW51bSBLZXlQYWlyVHlwZSB7XG4gIC8qKlxuICAgKiBBbiBSU0Ega2V5LlxuICAgKi9cbiAgUlNBID0gXCJyc2FcIixcblxuICAvKipcbiAgICogQW4gRUQyNTUxOSBrZXkuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBFRDI1NTE5IGtleXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIFdpbmRvd3MgaW5zdGFuY2VzLlxuICAgKi9cbiAgRUQyNTUxOSA9IFwiZWQyNTUxOVwiLFxufVxuXG4vKipcbiAqIFRoZSBwcm9wZXJ0aWVzIG9mIGEgS2V5IFBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlQYWlyUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBuYW1lIGZvciB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGtleVBhaXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5pcXVlIG5hbWUgYmVnaW5uaW5nIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXguXG4gICAqXG4gICAqIENvbmZsaWN0cyB3aXRoIGBrZXlQYWlyTmFtZWAuIElmIG5laXRoZXIgYGtleVBhaXJOYW1lYCBub3IgYGtleVBhaXJOYW1lUHJlZml4YCBpcyBwcm92aWRlZCxcbiAgICogVGVycmFDb25zdHJ1Y3RzIHdpbGwgY3JlYXRlIGEgdW5pcXVlIGtleSBuYW1lIHVzaW5nIHRoZSBgZ3JpZFVVSURgIGFzIHByZWZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgQSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkga2V5UGFpck5hbWVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLy8gLyoqXG4gIC8vICAqIFRoZSBmb3JtYXQgb2YgdGhlIGtleSBwYWlyLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCBQRU1cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGZvcm1hdD86IEtleVBhaXJGb3JtYXQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGtleSBwYWlyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSU0EgKGlnbm9yZWQgaWYga2V5TWF0ZXJpYWwgaXMgcHJvdmlkZWQpXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogS2V5UGFpclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwdWJsaWMga2V5IG1hdGVyaWFsLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHByb3ZpZGVkIHRoZSBrZXkgaXMgY29uc2lkZXJlZCBcImltcG9ydGVkXCIuIEZvciBpbXBvcnRlZFxuICAgKiBrZXlzLCBpdCBpcyBhc3N1bWVkIHRoYXQgeW91IGFscmVhZHkgaGF2ZSB0aGUgcHJpdmF0ZSBrZXkgbWF0ZXJpYWxcbiAgICogc28gdGhlIHByaXZhdGUga2V5IG1hdGVyaWFsIHdpbGwgbm90IGJlIHJldHVybmVkIG9yIHN0b3JlZCBpblxuICAgKiBBV1MgU3lzdGVtcyBNYW5hZ2VyIFBhcmFtZXRlciBTdG9yZS5cbiAgICpcbiAgICogVGhlIHByaXZhdGUga2V5IGdlbmVyYXRlZCBieSB0aGlzIHJlc291cmNlIHdpbGwgYmUgc3RvcmVkIHVuZW5jcnlwdGVkXG4gICAqIGluIHlvdXIgVGVycmFmb3JtIHN0YXRlIGZpbGUuXG4gICAqXG4gICAqIE9taXR0aW5nIHRoZSBwdWJsaWNLZXlNYXRlcmlhbCBmb3IgcHJvZHVjdGlvbiBkZXBsb3ltZW50cyBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAqIEluc3RlYWQsIGdlbmVyYXRlIGEgcHJpdmF0ZSBrZXkgZmlsZSBvdXRzaWRlIG9mIFRlcnJhZm9ybSBhbmQgZGlzdHJpYnV0ZSBpdFxuICAgKiBzZWN1cmVseSB0byB0aGUgc3lzdGVtIHdoZXJlIFRlcnJhZm9ybSB3aWxsIGJlIHJ1bi5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBwdWJsaWMgYW5kIHByaXZhdGUga2V5IHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNLZXlNYXRlcmlhbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXJPdXRwdXRzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUga2V5IHBhaXIuXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHR5cGUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogS2V5UGFpclR5cGU7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBvZiBhIEtleSBQYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUga2V5IHBhaXIuXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHR5cGUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogS2V5UGFpclR5cGU7XG59XG5cbi8qKlxuICogQW4gRUMyIEtleSBQYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElLZXlQYWlyIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IGtleVBhaXJPdXRwdXRzOiBLZXlQYWlyT3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGtleSBwYWlyLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUga2V5IHBhaXIuXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogS2V5UGFpclR5cGU7XG5cbiAgLyoqXG4gICAqIFVzZWQgaW50ZXJuYWxseSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUga2V5IHBhaXIgaXMgY29tcGF0aWJsZSB3aXRoIGFuIE9TIHR5cGUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzT3NDb21wYXRpYmxlKG9zVHlwZTogT3BlcmF0aW5nU3lzdGVtVHlwZSk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW4gRUMyIEtleSBQYWlyLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6S2V5UGFpclxuICovXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJS2V5UGFpciB7XG4gIC8qKlxuICAgKiBJbXBvcnRzIGEga2V5IHBhaXIgYmFzZWQgb24gdGhlIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21LZXlQYWlyTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAga2V5UGFpck5hbWU6IHN0cmluZyxcbiAgKTogSUtleVBhaXIge1xuICAgIHJldHVybiBLZXlQYWlyLmZyb21LZXlQYWlyQXR0cmlidXRlcyhzY29wZSwgaWQsIHsga2V5UGFpck5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBhIGtleSBwYWlyIHdpdGggYSBuYW1lIGFuZCBvcHRpb25hbCB0eXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tS2V5UGFpckF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBLZXlQYWlyQXR0cmlidXRlcyxcbiAgKTogSUtleVBhaXIge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJS2V5UGFpciB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga2V5UGFpck5hbWU6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSB0eXBlPzogS2V5UGFpclR5cGU7XG4gICAgICBwdWJsaWMgZ2V0IGtleVBhaXJPdXRwdXRzKCk6IEtleVBhaXJPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBrZXlQYWlyTmFtZTogdGhpcy5rZXlQYWlyTmFtZSxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleVBhaXJPdXRwdXRzO1xuICAgICAgfVxuXG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAgICAgdGhpcy5rZXlQYWlyTmFtZSA9IGF0dHJzLmtleVBhaXJOYW1lO1xuICAgICAgICB0aGlzLnR5cGUgPSBhdHRycy50eXBlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgaW50ZXJuYWxseSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUga2V5IHBhaXIgaXMgY29tcGF0aWJsZSB3aXRoIGFuIE9TIHR5cGUuXG4gICAgICAgKlxuICAgICAgICogQGludGVybmFsXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBfaXNPc0NvbXBhdGlibGUob3NUeXBlOiBPcGVyYXRpbmdTeXN0ZW1UeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgY2FzZSBLZXlQYWlyVHlwZS5FRDI1NTE5OlxuICAgICAgICAgICAgcmV0dXJuIG9zVHlwZSAhPT0gT3BlcmF0aW5nU3lzdGVtVHlwZS5XSU5ET1dTO1xuICAgICAgICAgIGNhc2UgS2V5UGFpclR5cGUuUlNBOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleVBhaXJPdXRwdXRzKCk6IEtleVBhaXJPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAga2V5UGFpck5hbWU6IHRoaXMua2V5UGFpck5hbWUsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpck91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBuYW1lIG9mIHRoZSBrZXkgcGFpci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGtleVBhaXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmaW5nZXJwcmludCBvZiB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBrZXlQYWlyRmluZ2VycHJpbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBJRCBvZiB0aGUga2V5IHBhaXIuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBrZXlQYWlySWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGtleSBwYWlyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHR5cGU/OiBLZXlQYWlyVHlwZTtcblxuICAvLyBub3Qgc3VwcG9ydGVkIGluIFRlcnJhZm9ybVxuICAvLyAvKipcbiAgLy8gICogVGhlIGZvcm1hdCBvZiB0aGUga2V5IHBhaXIuXG4gIC8vICAqL1xuICAvLyBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0OiBLZXlQYWlyRm9ybWF0O1xuXG4gIHByaXZhdGUgX3ByaXZhdGVLZXk/OiBwcml2YXRlS2V5LlByaXZhdGVLZXk7XG4gIHByaXZhdGUgX3ByaXZhdGVLZXlTc20/OiBJU3RyaW5nUGFyYW1ldGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ltcG9ydDogYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IHRmS2V5UGFpci5LZXlQYWlyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogS2V5UGFpclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHM/LmtleVBhaXJOYW1lICYmIHByb3BzPy5rZXlQYWlyTmFtZVByZWZpeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGJvdGggJ2tleVBhaXJOYW1lJyBhbmQgJ2tleVBhaXJOYW1lUHJlZml4J1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlQYWlyTmFtZVByZWZpeCA9XG4gICAgICBwcm9wcz8ua2V5UGFpck5hbWVQcmVmaXggfHxcbiAgICAgIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgcHJlZml4OiB0aGlzLmdyaWRVVUlELFxuICAgICAgICBtYXhMZW5ndGg6IDI1NSxcbiAgICAgIH0pO1xuXG4gICAgLy8gTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgLy8gICBwcm9kdWNlOiAoKSA9PiBBd3NTdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDI1NSB9KSxcbiAgICAvLyB9KTtcblxuICAgIGlmIChwcm9wcz8ucHVibGljS2V5TWF0ZXJpYWwgJiYgcHJvcHM/LnR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBzcGVjaWZ5ICd0eXBlJyBmb3Iga2V5cyB3aXRoIGltcG9ydGVkIG1hdGVyaWFsXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2lzSW1wb3J0ID0gISFwcm9wcz8ucHVibGljS2V5TWF0ZXJpYWw7XG5cbiAgICBjb25zdCBrZXlUeXBlID0gcHJvcHM/LnR5cGUgPz8gS2V5UGFpclR5cGUuUlNBO1xuICAgIGxldCBwdWJsaWNLZXkgPSBwcm9wcz8ucHVibGljS2V5TWF0ZXJpYWw7XG4gICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgIGxldCBhbGdvcml0aG06IFwiUlNBXCIgfCBcIkVDRFNBXCIgfCBcIkVEMjU1MTlcIjtcbiAgICAgIHN3aXRjaCAoa2V5VHlwZSkge1xuICAgICAgICBjYXNlIEtleVBhaXJUeXBlLkVEMjU1MTk6XG4gICAgICAgICAgYWxnb3JpdGhtID0gXCJFRDI1NTE5XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgS2V5UGFpclR5cGUuUlNBOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGFsZ29yaXRobSA9IFwiUlNBXCI7XG4gICAgICB9XG4gICAgICB0aGlzLl9wcml2YXRlS2V5ID0gbmV3IHByaXZhdGVLZXkuUHJpdmF0ZUtleSh0aGlzLCBcIlByaXZhdGVLZXlcIiwge1xuICAgICAgICBhbGdvcml0aG0sXG4gICAgICB9KTtcbiAgICAgIHB1YmxpY0tleSA9IEZuLnRyaW1zcGFjZSh0aGlzLl9wcml2YXRlS2V5LnB1YmxpY0tleU9wZW5zc2gpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgdGZLZXlQYWlyLktleVBhaXIodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBrZXlOYW1lOiBwcm9wcz8ua2V5UGFpck5hbWUsXG4gICAgICBrZXlOYW1lUHJlZml4OiBrZXlQYWlyTmFtZVByZWZpeCxcbiAgICAgIC8vIGtleUZvcm1hdDogcHJvcHM/LmZvcm1hdCA/PyBLZXlQYWlyRm9ybWF0LlBFTSxcbiAgICAgIHB1YmxpY0tleSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9wcml2YXRlS2V5KSB7XG4gICAgICAvLyBpZiBwcml2YXRlS2V5IHdhcyBnZW5lcmF0ZWQsIG1pbWljIENGTiBiZWhhdmlvciB3aXRoIFNTTVxuICAgICAgdGhpcy5fcHJpdmF0ZUtleVNzbSA9IG5ldyBTdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJQcml2YXRlS2V5UGFyYW1ldGVyXCIsIHtcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogYC9lYzIva2V5cGFpci8ke3RoaXMucmVzb3VyY2UuaWR9YCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBQcml2YXRlIGtleSBmb3IgJHt0aGlzLnJlc291cmNlLmtleU5hbWV9YCxcbiAgICAgICAgdHlwZTogUGFyYW1ldGVyVHlwZS5TRUNVUkVfU1RSSU5HLFxuICAgICAgICBzZW5zaXRpdmVTdHJpbmdWYWx1ZTogdGhpcy5fcHJpdmF0ZUtleS5wcml2YXRlS2V5UGVtLFxuICAgICAgICBzaW1wbGVOYW1lOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMua2V5UGFpck5hbWUgPSB0aGlzLnJlc291cmNlLmtleU5hbWU7XG4gICAgdGhpcy5rZXlQYWlyRmluZ2VycHJpbnQgPSB0aGlzLnJlc291cmNlLmZpbmdlcnByaW50O1xuICAgIHRoaXMua2V5UGFpcklkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLnR5cGUgPSBrZXlUeXBlO1xuICAgIC8vIHRoaXMuZm9ybWF0ID0ga2V5Rm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGtleSBtYXRlcmlhbCB3YXMgaW1wb3J0ZWQuXG4gICAqXG4gICAqIEtleXMgd2l0aCBpbXBvcnRlZCBtYXRlcmlhbCBkbyBub3QgaGF2ZSB0aGVpciBwcml2YXRlIGtleSBtYXRlcmlhbCBzdG9yZWRcbiAgICogb3IgcmV0dXJuZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzSW1wb3J0ZWRNYXRlcmlhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNJbXBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIFN5c3RlbXMgTWFuYWdlciBQYXJhbWV0ZXIgU3RvcmUgcGFyYW1ldGVyIHdpdGggdGhlIHBhaXIncyBwcml2YXRlIGtleSBtYXRlcmlhbC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcHJpdmF0ZUtleSgpOiBJU3RyaW5nUGFyYW1ldGVyIHtcbiAgICBpZiAodGhpcy5faXNJbXBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBbiBTU00gcGFyYW1ldGVyIHdpdGggcHJpdmF0ZSBrZXkgbWF0ZXJpYWwgaXMgbm90IGNyZWF0ZWQgZm9yIGltcG9ydGVkIGtleXNcIixcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGVsc2UsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBzZXRcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZUtleVNzbSE7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBpbnRlcm5hbGx5IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBrZXkgcGFpciBpcyBjb21wYXRpYmxlIHdpdGggYW4gT1MgdHlwZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2lzT3NDb21wYXRpYmxlKG9zVHlwZTogT3BlcmF0aW5nU3lzdGVtVHlwZSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIEtleVBhaXJUeXBlLkVEMjU1MTk6XG4gICAgICAgIHJldHVybiBvc1R5cGUgIT09IE9wZXJhdGluZ1N5c3RlbVR5cGUuV0lORE9XUztcbiAgICAgIGNhc2UgS2V5UGFpclR5cGUuUlNBOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ import { Construct } from "constructs";
2
+ import * as lambda from ".";
3
+ import { LambdaIntegrationOptions } from "./integrations";
4
+ import { RestApi, RestApiProps } from "./restapi";
5
+ export interface LambdaRestApiProps extends RestApiProps {
6
+ /**
7
+ * The default Lambda function that handles all requests from this API.
8
+ *
9
+ * This handler will be used as a the default integration for all methods in
10
+ * this API, unless specified otherwise in `addMethod`.
11
+ */
12
+ readonly handler: lambda.IFunction;
13
+ /**
14
+ * Specific Lambda integration options.
15
+ *
16
+ * @default see defaults defined in `LambdaIntegrationOptions`.
17
+ */
18
+ readonly integrationOptions?: LambdaIntegrationOptions;
19
+ /**
20
+ * If true, route all requests to the Lambda Function
21
+ *
22
+ * If set to false, you will need to explicitly define the API model using
23
+ * `addResource` and `addMethod` (or `addProxy`).
24
+ *
25
+ * @default true
26
+ */
27
+ readonly proxy?: boolean;
28
+ /**
29
+ * @deprecated the `LambdaRestApiProps` now extends `RestApiProps`, so all
30
+ * options are just available here. Note that the options specified in
31
+ * `options` will be overridden by any props specified at the root level.
32
+ *
33
+ * @default - no options.
34
+ */
35
+ readonly options?: RestApiProps;
36
+ }
37
+ /**
38
+ * Defines an API Gateway REST API with AWS Lambda proxy integration.
39
+ *
40
+ * Use the `proxy` property to define a greedy proxy ("{proxy+}") and "ANY"
41
+ * method from the specified path. If not defined, you will need to explicity
42
+ * add resources and methods to the API.
43
+ */
44
+ export declare class LambdaRestApi extends RestApi {
45
+ constructor(scope: Construct, id: string, props: LambdaRestApiProps);
46
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LambdaRestApi = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const integrations_1 = require("./integrations");
7
+ const restapi_1 = require("./restapi");
8
+ /**
9
+ * Defines an API Gateway REST API with AWS Lambda proxy integration.
10
+ *
11
+ * Use the `proxy` property to define a greedy proxy ("{proxy+}") and "ANY"
12
+ * method from the specified path. If not defined, you will need to explicity
13
+ * add resources and methods to the API.
14
+ */
15
+ class LambdaRestApi extends restapi_1.RestApi {
16
+ constructor(scope, id, props) {
17
+ if (props.options?.defaultIntegration || props.defaultIntegration) {
18
+ // throw new ValidationError(
19
+ throw new Error('Cannot specify "defaultIntegration" since Lambda integration is automatically defined');
20
+ }
21
+ super(scope, id, {
22
+ defaultIntegration: new integrations_1.LambdaIntegration(props.handler, props.integrationOptions),
23
+ ...props.options, // deprecated, but we still support
24
+ ...props,
25
+ });
26
+ if (props.proxy !== false) {
27
+ this.root.addProxy();
28
+ // Make sure users cannot call any other resource adding function
29
+ this.root.addResource = addResourceThrows;
30
+ this.root.addMethod = addMethodThrows;
31
+ this.root.addProxy = addProxyThrows;
32
+ }
33
+ this.node.addValidation({
34
+ validate() {
35
+ for (const value of Object.values(props.deployOptions?.variables ?? {})) {
36
+ // Checks that variable Stage values match regex
37
+ const regexp = /[A-Za-z0-9-._~:/?#&=,]+/;
38
+ if (value.match(regexp) === null) {
39
+ return [
40
+ "Stage variable value " + value + " does not match the regex.",
41
+ ];
42
+ }
43
+ }
44
+ return [];
45
+ },
46
+ });
47
+ }
48
+ }
49
+ exports.LambdaRestApi = LambdaRestApi;
50
+ _a = JSII_RTTI_SYMBOL_1;
51
+ LambdaRestApi[_a] = { fqn: "terraconstructs.aws.compute.LambdaRestApi", version: "0.1.0" };
52
+ function addResourceThrows() {
53
+ // throw new UnscopedValidationError(
54
+ throw new Error("Cannot call 'addResource' on a proxying LambdaRestApi; set 'proxy' to false");
55
+ }
56
+ function addMethodThrows() {
57
+ // throw new UnscopedValidationError(
58
+ throw new Error("Cannot call 'addMethod' on a proxying LambdaRestApi; set 'proxy' to false");
59
+ }
60
+ function addProxyThrows() {
61
+ // throw new UnscopedValidationError(
62
+ throw new Error("Cannot call 'addProxy' on a proxying LambdaRestApi; set 'proxy' to false");
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9sYW1iZGEtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsaURBQTZFO0FBRzdFLHVDQUFrRDtBQTBDbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxhQUFjLFNBQVEsaUJBQU87SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbEUsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUZBQXVGLENBRXhGLENBQUM7UUFDSixDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixrQkFBa0IsRUFBRSxJQUFJLGdDQUFpQixDQUN2QyxLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxrQkFBa0IsQ0FDekI7WUFDRCxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsbUNBQW1DO1lBQ3JELEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXJCLGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRO2dCQUNOLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FDL0IsS0FBSyxDQUFDLGFBQWEsRUFBRSxTQUFTLElBQUksRUFBRSxDQUNyQyxFQUFFLENBQUM7b0JBQ0YsZ0RBQWdEO29CQUNoRCxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQztvQkFDekMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUNqQyxPQUFPOzRCQUNMLHVCQUF1QixHQUFHLEtBQUssR0FBRyw0QkFBNEI7eUJBQy9ELENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBNUNILHNDQTZDQzs7O0FBRUQsU0FBUyxpQkFBaUI7SUFDeEIscUNBQXFDO0lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkVBQTZFLENBQzlFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxlQUFlO0lBQ3RCLHFDQUFxQztJQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLDJFQUEyRSxDQUM1RSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYztJQUNyQixxQ0FBcUM7SUFDckMsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRUFBMEUsQ0FDM0UsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBjZGsgZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuXCI7XG5pbXBvcnQgeyBMYW1iZGFJbnRlZ3JhdGlvbiwgTGFtYmRhSW50ZWdyYXRpb25PcHRpb25zIH0gZnJvbSBcIi4vaW50ZWdyYXRpb25zXCI7XG5pbXBvcnQgeyBNZXRob2QgfSBmcm9tIFwiLi9tZXRob2RcIjtcbmltcG9ydCB7IFByb3h5UmVzb3VyY2UsIFJlc291cmNlIH0gZnJvbSBcIi4vcmVzb3VyY2VcIjtcbmltcG9ydCB7IFJlc3RBcGksIFJlc3RBcGlQcm9wcyB9IGZyb20gXCIuL3Jlc3RhcGlcIjtcbi8vIGltcG9ydCB7XG4vLyAgIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLFxuLy8gICBWYWxpZGF0aW9uRXJyb3IsXG4vLyB9IGZyb20gXCIuLi8uLi9jb3JlL2xpYi9lcnJvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFSZXN0QXBpUHJvcHMgZXh0ZW5kcyBSZXN0QXBpUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBhbGwgcmVxdWVzdHMgZnJvbSB0aGlzIEFQSS5cbiAgICpcbiAgICogVGhpcyBoYW5kbGVyIHdpbGwgYmUgdXNlZCBhcyBhIHRoZSBkZWZhdWx0IGludGVncmF0aW9uIGZvciBhbGwgbWV0aG9kcyBpblxuICAgKiB0aGlzIEFQSSwgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UgaW4gYGFkZE1ldGhvZGAuXG4gICAqL1xuICByZWFkb25seSBoYW5kbGVyOiBsYW1iZGEuSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpYyBMYW1iZGEgaW50ZWdyYXRpb24gb3B0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgc2VlIGRlZmF1bHRzIGRlZmluZWQgaW4gYExhbWJkYUludGVncmF0aW9uT3B0aW9uc2AuXG4gICAqL1xuICByZWFkb25seSBpbnRlZ3JhdGlvbk9wdGlvbnM/OiBMYW1iZGFJbnRlZ3JhdGlvbk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJvdXRlIGFsbCByZXF1ZXN0cyB0byB0aGUgTGFtYmRhIEZ1bmN0aW9uXG4gICAqXG4gICAqIElmIHNldCB0byBmYWxzZSwgeW91IHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IGRlZmluZSB0aGUgQVBJIG1vZGVsIHVzaW5nXG4gICAqIGBhZGRSZXNvdXJjZWAgYW5kIGBhZGRNZXRob2RgIChvciBgYWRkUHJveHlgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB0aGUgYExhbWJkYVJlc3RBcGlQcm9wc2Agbm93IGV4dGVuZHMgYFJlc3RBcGlQcm9wc2AsIHNvIGFsbFxuICAgKiBvcHRpb25zIGFyZSBqdXN0IGF2YWlsYWJsZSBoZXJlLiBOb3RlIHRoYXQgdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGluXG4gICAqIGBvcHRpb25zYCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgYW55IHByb3BzIHNwZWNpZmllZCBhdCB0aGUgcm9vdCBsZXZlbC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9ucz86IFJlc3RBcGlQcm9wcztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuIEFQSSBHYXRld2F5IFJFU1QgQVBJIHdpdGggQVdTIExhbWJkYSBwcm94eSBpbnRlZ3JhdGlvbi5cbiAqXG4gKiBVc2UgdGhlIGBwcm94eWAgcHJvcGVydHkgdG8gZGVmaW5lIGEgZ3JlZWR5IHByb3h5IChcIntwcm94eSt9XCIpIGFuZCBcIkFOWVwiXG4gKiBtZXRob2QgZnJvbSB0aGUgc3BlY2lmaWVkIHBhdGguIElmIG5vdCBkZWZpbmVkLCB5b3Ugd2lsbCBuZWVkIHRvIGV4cGxpY2l0eVxuICogYWRkIHJlc291cmNlcyBhbmQgbWV0aG9kcyB0byB0aGUgQVBJLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhUmVzdEFwaSBleHRlbmRzIFJlc3RBcGkge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGFtYmRhUmVzdEFwaVByb3BzKSB7XG4gICAgaWYgKHByb3BzLm9wdGlvbnM/LmRlZmF1bHRJbnRlZ3JhdGlvbiB8fCBwcm9wcy5kZWZhdWx0SW50ZWdyYXRpb24pIHtcbiAgICAgIC8vIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3Qgc3BlY2lmeSBcImRlZmF1bHRJbnRlZ3JhdGlvblwiIHNpbmNlIExhbWJkYSBpbnRlZ3JhdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGRlZmluZWQnLFxuICAgICAgICAvLyBzY29wZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZWZhdWx0SW50ZWdyYXRpb246IG5ldyBMYW1iZGFJbnRlZ3JhdGlvbihcbiAgICAgICAgcHJvcHMuaGFuZGxlcixcbiAgICAgICAgcHJvcHMuaW50ZWdyYXRpb25PcHRpb25zLFxuICAgICAgKSxcbiAgICAgIC4uLnByb3BzLm9wdGlvbnMsIC8vIGRlcHJlY2F0ZWQsIGJ1dCB3ZSBzdGlsbCBzdXBwb3J0XG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5wcm94eSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMucm9vdC5hZGRQcm94eSgpO1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdXNlcnMgY2Fubm90IGNhbGwgYW55IG90aGVyIHJlc291cmNlIGFkZGluZyBmdW5jdGlvblxuICAgICAgdGhpcy5yb290LmFkZFJlc291cmNlID0gYWRkUmVzb3VyY2VUaHJvd3M7XG4gICAgICB0aGlzLnJvb3QuYWRkTWV0aG9kID0gYWRkTWV0aG9kVGhyb3dzO1xuICAgICAgdGhpcy5yb290LmFkZFByb3h5ID0gYWRkUHJveHlUaHJvd3M7XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24oe1xuICAgICAgdmFsaWRhdGUoKSB7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICBwcm9wcy5kZXBsb3lPcHRpb25zPy52YXJpYWJsZXMgPz8ge30sXG4gICAgICAgICkpIHtcbiAgICAgICAgICAvLyBDaGVja3MgdGhhdCB2YXJpYWJsZSBTdGFnZSB2YWx1ZXMgbWF0Y2ggcmVnZXhcbiAgICAgICAgICBjb25zdCByZWdleHAgPSAvW0EtWmEtejAtOS0uX346Lz8jJj0sXSsvO1xuICAgICAgICAgIGlmICh2YWx1ZS5tYXRjaChyZWdleHApID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBcIlN0YWdlIHZhcmlhYmxlIHZhbHVlIFwiICsgdmFsdWUgKyBcIiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXguXCIsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFJlc291cmNlVGhyb3dzKCk6IFJlc291cmNlIHtcbiAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgXCJDYW5ub3QgY2FsbCAnYWRkUmVzb3VyY2UnIG9uIGEgcHJveHlpbmcgTGFtYmRhUmVzdEFwaTsgc2V0ICdwcm94eScgdG8gZmFsc2VcIixcbiAgKTtcbn1cblxuZnVuY3Rpb24gYWRkTWV0aG9kVGhyb3dzKCk6IE1ldGhvZCB7XG4gIC8vIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIFwiQ2Fubm90IGNhbGwgJ2FkZE1ldGhvZCcgb24gYSBwcm94eWluZyBMYW1iZGFSZXN0QXBpOyBzZXQgJ3Byb3h5JyB0byBmYWxzZVwiLFxuICApO1xufVxuXG5mdW5jdGlvbiBhZGRQcm94eVRocm93cygpOiBQcm94eVJlc291cmNlIHtcbiAgLy8gdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgXCJDYW5ub3QgY2FsbCAnYWRkUHJveHknIG9uIGEgcHJveHlpbmcgTGFtYmRhUmVzdEFwaTsgc2V0ICdwcm94eScgdG8gZmFsc2VcIixcbiAgKTtcbn1cbiJdfQ==