@gemeentenijmegen/webapp 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (728) hide show
  1. package/.jsii +12 -12
  2. package/assets/webapp/auth/auth.lambda/index.js +54 -33
  3. package/assets/webapp/login/login.lambda/index.js +54 -33
  4. package/assets/webapp/logout/logout.lambda/index.js +53 -32
  5. package/lib/webapp/Criticality.js +1 -1
  6. package/lib/webapp/Webapp.js +1 -1
  7. package/lib/webapp/Webpage.js +1 -1
  8. package/lib/webapp/util/Files.js +1 -1
  9. package/node_modules/@aws-sdk/client-dynamodb/README.md +1 -1
  10. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/index.js +35 -30
  11. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/runtimeConfig.browser.js +1 -1
  12. package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/runtimeConfig.js +2 -1
  13. package/node_modules/@aws-sdk/client-dynamodb/dist-es/DynamoDBClient.js +12 -10
  14. package/node_modules/@aws-sdk/client-dynamodb/dist-es/models/models_0.js +15 -15
  15. package/node_modules/@aws-sdk/client-dynamodb/dist-es/protocols/Aws_json1_0.js +3 -0
  16. package/node_modules/@aws-sdk/client-dynamodb/dist-es/runtimeConfig.browser.js +2 -2
  17. package/node_modules/@aws-sdk/client-dynamodb/dist-es/runtimeConfig.js +3 -2
  18. package/node_modules/@aws-sdk/client-dynamodb/dist-types/DynamoDBClient.d.ts +3 -3
  19. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateGlobalTableCommand.d.ts +10 -0
  20. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateTableCommand.d.ts +28 -0
  21. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteTableCommand.d.ts +20 -0
  22. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeGlobalTableCommand.d.ts +10 -0
  23. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeImportCommand.d.ts +4 -0
  24. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeTableCommand.d.ts +20 -0
  25. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ImportTableCommand.d.ts +8 -0
  26. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableFromBackupCommand.d.ts +24 -0
  27. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableToPointInTimeCommand.d.ts +24 -0
  28. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateGlobalTableCommand.d.ts +10 -0
  29. package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateTableCommand.d.ts +32 -0
  30. package/node_modules/@aws-sdk/client-dynamodb/dist-types/models/models_0.d.ts +758 -655
  31. package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.browser.d.ts +2 -1
  32. package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.d.ts +2 -1
  33. package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.native.d.ts +2 -1
  34. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/DynamoDBClient.d.ts +7 -1
  35. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/models/models_0.d.ts +744 -641
  36. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  37. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  38. package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  39. package/node_modules/@aws-sdk/client-dynamodb/package.json +38 -38
  40. package/node_modules/@aws-sdk/client-s3/README.md +1 -1
  41. package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +240 -179
  42. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js +1 -1
  43. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js +2 -1
  44. package/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectsCommand.js +0 -1
  45. package/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js +0 -1
  46. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAccelerateConfigurationCommand.js +0 -1
  47. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAclCommand.js +0 -1
  48. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketCorsCommand.js +0 -1
  49. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketEncryptionCommand.js +0 -1
  50. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLifecycleConfigurationCommand.js +2 -1
  51. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLoggingCommand.js +0 -1
  52. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketOwnershipControlsCommand.js +0 -1
  53. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketPolicyCommand.js +0 -1
  54. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketReplicationCommand.js +0 -1
  55. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketRequestPaymentCommand.js +0 -1
  56. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketTaggingCommand.js +0 -1
  57. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketVersioningCommand.js +0 -1
  58. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketWebsiteCommand.js +0 -1
  59. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAclCommand.js +0 -1
  60. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js +0 -1
  61. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLegalHoldCommand.js +0 -1
  62. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLockConfigurationCommand.js +0 -1
  63. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectRetentionCommand.js +0 -1
  64. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectTaggingCommand.js +0 -1
  65. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutPublicAccessBlockCommand.js +0 -1
  66. package/node_modules/@aws-sdk/client-s3/dist-es/commands/RestoreObjectCommand.js +0 -1
  67. package/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCommand.js +0 -1
  68. package/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js +4 -28
  69. package/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js +48 -0
  70. package/node_modules/@aws-sdk/client-s3/dist-es/protocols/Aws_restXml.js +131 -100
  71. package/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js +2 -2
  72. package/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js +3 -2
  73. package/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts +16 -13
  74. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts +47 -42
  75. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts +77 -57
  76. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts +60 -45
  77. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts +92 -66
  78. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts +31 -17
  79. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts +1 -1
  80. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts +10 -3
  81. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts +1 -1
  82. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts +18 -10
  83. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
  84. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts +1 -1
  85. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts +52 -9
  86. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts +1 -1
  87. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts +1 -1
  88. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts +25 -21
  89. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts +1 -1
  90. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts +1 -1
  91. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts +1 -1
  92. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts +44 -50
  93. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts +1 -1
  94. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts +63 -49
  95. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts +1 -1
  96. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts +1 -1
  97. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts +1 -1
  98. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts +1 -1
  99. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts +1 -1
  100. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts +18 -10
  101. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
  102. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts +1 -1
  103. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts +63 -18
  104. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts +1 -1
  105. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts +1 -1
  106. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts +1 -1
  107. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts +1 -1
  108. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts +1 -1
  109. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts +30 -21
  110. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts +1 -1
  111. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts +2 -2
  112. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts +1 -1
  113. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts +1 -1
  114. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts +1 -1
  115. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts +1 -1
  116. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts +1 -1
  117. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts +62 -44
  118. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts +81 -62
  119. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts +1 -1
  120. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts +1 -1
  121. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts +1 -1
  122. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts +20 -20
  123. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts +1 -1
  124. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts +1 -1
  125. package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts +32 -16
  126. package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts +61 -39
  127. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts +1 -1
  128. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts +1 -1
  129. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts +1 -1
  130. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts +1 -1
  131. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts +14 -3
  132. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts +13 -3
  133. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts +82 -65
  134. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts +1 -1
  135. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts +1 -1
  136. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts +23 -14
  137. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts +22 -17
  138. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts +1 -1
  139. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts +1 -1
  140. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts +1 -1
  141. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts +1 -1
  142. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts +48 -33
  143. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
  144. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -1
  145. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts +93 -53
  146. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts +1 -1
  147. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts +1 -1
  148. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts +2 -2
  149. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts +2 -2
  150. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts +30 -21
  151. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts +4 -5
  152. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts +1 -1
  153. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts +1 -1
  154. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts +3 -6
  155. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts +1 -1
  156. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts +1 -1
  157. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts +123 -75
  158. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts +1 -1
  159. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts +3 -3
  160. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts +2 -2
  161. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts +1 -1
  162. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts +1 -1
  163. package/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts +1 -5
  164. package/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts +1 -5
  165. package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts +52 -41
  166. package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts +66 -52
  167. package/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts +1 -1
  168. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts +1835 -1569
  169. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts +613 -459
  170. package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.browser.d.ts +2 -1
  171. package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.d.ts +2 -1
  172. package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.native.d.ts +2 -1
  173. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts +7 -3
  174. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts +1 -1
  175. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts +1 -1
  176. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts +812 -882
  177. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts +313 -275
  178. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  179. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.d.ts +8 -3
  180. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  181. package/node_modules/@aws-sdk/client-s3/package.json +58 -59
  182. package/node_modules/@aws-sdk/client-secrets-manager/README.md +1 -1
  183. package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/runtimeConfig.browser.js +1 -1
  184. package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/runtimeConfig.js +2 -1
  185. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/runtimeConfig.browser.js +2 -2
  186. package/node_modules/@aws-sdk/client-secrets-manager/dist-es/runtimeConfig.js +3 -2
  187. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/models/models_0.d.ts +184 -184
  188. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.browser.d.ts +2 -1
  189. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.d.ts +2 -1
  190. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.native.d.ts +2 -1
  191. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/models/models_0.d.ts +184 -184
  192. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  193. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  194. package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  195. package/node_modules/@aws-sdk/client-secrets-manager/package.json +36 -36
  196. package/node_modules/@aws-sdk/client-ssm/README.md +40 -8
  197. package/node_modules/@aws-sdk/client-ssm/dist-cjs/index.js +834 -437
  198. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.browser.js +1 -1
  199. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.js +2 -1
  200. package/node_modules/@aws-sdk/client-ssm/dist-es/SSM.js +8 -0
  201. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/GetExecutionPreviewCommand.js +22 -0
  202. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/ListNodesCommand.js +23 -0
  203. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/ListNodesSummaryCommand.js +22 -0
  204. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/SendCommandCommand.js +1 -1
  205. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/StartExecutionPreviewCommand.js +22 -0
  206. package/node_modules/@aws-sdk/client-ssm/dist-es/commands/index.js +4 -0
  207. package/node_modules/@aws-sdk/client-ssm/dist-es/models/models_1.js +99 -144
  208. package/node_modules/@aws-sdk/client-ssm/dist-es/models/models_2.js +167 -1
  209. package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/ListNodesPaginator.js +4 -0
  210. package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/ListNodesSummaryPaginator.js +4 -0
  211. package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/index.js +2 -0
  212. package/node_modules/@aws-sdk/client-ssm/dist-es/protocols/Aws_json1_1.js +159 -3
  213. package/node_modules/@aws-sdk/client-ssm/dist-es/runtimeConfig.browser.js +2 -2
  214. package/node_modules/@aws-sdk/client-ssm/dist-es/runtimeConfig.js +3 -2
  215. package/node_modules/@aws-sdk/client-ssm/dist-types/SSM.d.ts +29 -0
  216. package/node_modules/@aws-sdk/client-ssm/dist-types/SSMClient.d.ts +6 -2
  217. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateResourceDataSyncCommand.d.ts +1 -1
  218. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteActivationCommand.d.ts +1 -1
  219. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeActivationsCommand.d.ts +1 -1
  220. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchStatesForPatchGroupCommand.d.ts +1 -1
  221. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchesCommand.d.ts +1 -1
  222. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePropertiesCommand.d.ts +1 -1
  223. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetExecutionPreviewCommand.d.ts +98 -0
  224. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetInventoryCommand.d.ts +3 -4
  225. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetOpsSummaryCommand.d.ts +3 -4
  226. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceItemsCommand.d.ts +1 -1
  227. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceSummariesCommand.d.ts +1 -1
  228. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListInventoryEntriesCommand.d.ts +1 -1
  229. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesCommand.d.ts +123 -0
  230. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesSummaryCommand.d.ts +123 -0
  231. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListResourceComplianceSummariesCommand.d.ts +1 -1
  232. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResetServiceSettingCommand.d.ts +2 -1
  233. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResumeSessionCommand.d.ts +1 -1
  234. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendAutomationSignalCommand.d.ts +1 -1
  235. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendCommandCommand.d.ts +1 -1
  236. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAssociationsOnceCommand.d.ts +1 -1
  237. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAutomationExecutionCommand.d.ts +1 -1
  238. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartExecutionPreviewCommand.d.ts +141 -0
  239. package/node_modules/@aws-sdk/client-ssm/dist-types/commands/index.d.ts +4 -0
  240. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_0.d.ts +711 -706
  241. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_1.d.ts +2303 -2337
  242. package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_2.d.ts +961 -196
  243. package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/ListNodesPaginator.d.ts +7 -0
  244. package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/ListNodesSummaryPaginator.d.ts +7 -0
  245. package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/index.d.ts +2 -0
  246. package/node_modules/@aws-sdk/client-ssm/dist-types/protocols/Aws_json1_1.d.ts +36 -0
  247. package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.browser.d.ts +2 -1
  248. package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.d.ts +2 -1
  249. package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.native.d.ts +2 -1
  250. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/SSM.d.ts +69 -0
  251. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/SSMClient.d.ts +24 -0
  252. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/GetExecutionPreviewCommand.d.ts +51 -0
  253. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ListNodesCommand.d.ts +47 -0
  254. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ListNodesSummaryCommand.d.ts +48 -0
  255. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ResetServiceSettingCommand.d.ts +2 -4
  256. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ResumeSessionCommand.d.ts +1 -1
  257. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/SendAutomationSignalCommand.d.ts +1 -1
  258. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/SendCommandCommand.d.ts +1 -1
  259. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartAssociationsOnceCommand.d.ts +1 -1
  260. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartAutomationExecutionCommand.d.ts +1 -1
  261. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartExecutionPreviewCommand.d.ts +51 -0
  262. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/index.d.ts +4 -0
  263. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_0.d.ts +706 -702
  264. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_1.d.ts +1010 -1004
  265. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_2.d.ts +436 -198
  266. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/ListNodesPaginator.d.ts +11 -0
  267. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/ListNodesSummaryPaginator.d.ts +11 -0
  268. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/index.d.ts +2 -0
  269. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/protocols/Aws_json1_1.d.ts +48 -0
  270. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  271. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  272. package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  273. package/node_modules/@aws-sdk/client-ssm/package.json +37 -37
  274. package/node_modules/@aws-sdk/client-sso/README.md +1 -1
  275. package/node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.browser.js +1 -1
  276. package/node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js +2 -1
  277. package/node_modules/@aws-sdk/client-sso/dist-es/runtimeConfig.browser.js +2 -2
  278. package/node_modules/@aws-sdk/client-sso/dist-es/runtimeConfig.js +3 -2
  279. package/node_modules/@aws-sdk/client-sso/dist-types/models/models_0.d.ts +18 -18
  280. package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.browser.d.ts +2 -1
  281. package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.d.ts +2 -1
  282. package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.native.d.ts +2 -1
  283. package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/models/models_0.d.ts +18 -18
  284. package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  285. package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  286. package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  287. package/node_modules/@aws-sdk/client-sso/package.json +32 -32
  288. package/node_modules/@aws-sdk/client-sso-oidc/README.md +1 -1
  289. package/node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.browser.js +1 -1
  290. package/node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js +2 -1
  291. package/node_modules/@aws-sdk/client-sso-oidc/dist-es/runtimeConfig.browser.js +2 -2
  292. package/node_modules/@aws-sdk/client-sso-oidc/dist-es/runtimeConfig.js +3 -2
  293. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/models/models_0.d.ts +74 -74
  294. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.browser.d.ts +2 -1
  295. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.d.ts +2 -1
  296. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.native.d.ts +2 -1
  297. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/models/models_0.d.ts +74 -74
  298. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  299. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  300. package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  301. package/node_modules/@aws-sdk/client-sso-oidc/package.json +34 -34
  302. package/node_modules/@aws-sdk/client-sts/README.md +9 -1
  303. package/node_modules/@aws-sdk/client-sts/dist-cjs/index.js +99 -14
  304. package/node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.browser.js +1 -1
  305. package/node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js +2 -1
  306. package/node_modules/@aws-sdk/client-sts/dist-es/STS.js +2 -0
  307. package/node_modules/@aws-sdk/client-sts/dist-es/commands/AssumeRootCommand.js +23 -0
  308. package/node_modules/@aws-sdk/client-sts/dist-es/commands/index.js +1 -0
  309. package/node_modules/@aws-sdk/client-sts/dist-es/defaultStsRoleAssumers.js +10 -2
  310. package/node_modules/@aws-sdk/client-sts/dist-es/models/models_0.js +4 -0
  311. package/node_modules/@aws-sdk/client-sts/dist-es/protocols/Aws_query.js +53 -0
  312. package/node_modules/@aws-sdk/client-sts/dist-es/runtimeConfig.browser.js +2 -2
  313. package/node_modules/@aws-sdk/client-sts/dist-es/runtimeConfig.js +3 -2
  314. package/node_modules/@aws-sdk/client-sts/dist-types/STS.d.ts +7 -0
  315. package/node_modules/@aws-sdk/client-sts/dist-types/STSClient.d.ts +3 -2
  316. package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleCommand.d.ts +13 -13
  317. package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithSAMLCommand.d.ts +8 -8
  318. package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithWebIdentityCommand.d.ts +15 -30
  319. package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRootCommand.d.ts +129 -0
  320. package/node_modules/@aws-sdk/client-sts/dist-types/commands/DecodeAuthorizationMessageCommand.d.ts +2 -2
  321. package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetFederationTokenCommand.d.ts +8 -8
  322. package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetSessionTokenCommand.d.ts +6 -6
  323. package/node_modules/@aws-sdk/client-sts/dist-types/commands/index.d.ts +1 -0
  324. package/node_modules/@aws-sdk/client-sts/dist-types/models/models_0.d.ts +202 -88
  325. package/node_modules/@aws-sdk/client-sts/dist-types/protocols/Aws_query.d.ts +9 -0
  326. package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.browser.d.ts +2 -1
  327. package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.d.ts +2 -1
  328. package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.native.d.ts +2 -1
  329. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STS.d.ts +17 -0
  330. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STSClient.d.ts +6 -0
  331. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/AssumeRootCommand.d.ts +47 -0
  332. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/index.d.ts +1 -0
  333. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/models/models_0.d.ts +68 -56
  334. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/protocols/Aws_query.d.ts +12 -0
  335. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
  336. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
  337. package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
  338. package/node_modules/@aws-sdk/client-sts/package.json +36 -36
  339. package/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +3 -3
  340. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +36 -5
  341. package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +6 -1
  342. package/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +1 -1
  343. package/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +5 -3
  344. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +2 -0
  345. package/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js +7 -0
  346. package/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +11 -0
  347. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +6 -1
  348. package/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts +3 -0
  349. package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +2 -0
  350. package/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts +7 -0
  351. package/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts +12 -0
  352. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +3 -0
  353. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +2 -0
  354. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +11 -0
  355. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts +6 -0
  356. package/node_modules/@aws-sdk/core/package.json +14 -11
  357. package/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +4 -1
  358. package/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js +4 -1
  359. package/node_modules/@aws-sdk/credential-provider-env/package.json +7 -5
  360. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +2 -1
  361. package/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js +2 -1
  362. package/node_modules/@aws-sdk/credential-provider-http/package.json +12 -10
  363. package/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +29 -13
  364. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js +3 -2
  365. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js +5 -3
  366. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js +2 -1
  367. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js +1 -1
  368. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js +10 -2
  369. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js +5 -3
  370. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js +2 -1
  371. package/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts +2 -2
  372. package/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts +2 -2
  373. package/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts +2 -2
  374. package/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts +3 -2
  375. package/node_modules/@aws-sdk/credential-provider-ini/package.json +15 -13
  376. package/node_modules/@aws-sdk/credential-provider-node/package.json +15 -14
  377. package/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +4 -1
  378. package/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js +4 -1
  379. package/node_modules/@aws-sdk/credential-provider-process/package.json +8 -6
  380. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +8 -1
  381. package/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js +9 -1
  382. package/node_modules/@aws-sdk/credential-provider-sso/package.json +10 -8
  383. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +6 -1
  384. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js +6 -1
  385. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +10 -8
  386. package/node_modules/@aws-sdk/endpoint-cache/package.json +3 -2
  387. package/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json +8 -7
  388. package/node_modules/@aws-sdk/middleware-endpoint-discovery/package.json +10 -8
  389. package/node_modules/@aws-sdk/middleware-expect-continue/package.json +8 -6
  390. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.browser.js +6 -0
  391. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.js +28 -0
  392. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js +35 -10
  393. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js +18 -2
  394. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js +1 -5
  395. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.browser.js +2 -0
  396. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js +23 -0
  397. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js +2 -2
  398. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js +14 -2
  399. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts +0 -3
  400. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksum.d.ts +2 -3
  401. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.browser.d.ts +2 -0
  402. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.d.ts +10 -0
  403. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsMiddleware.d.ts +0 -1
  404. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksum.d.ts +2 -8
  405. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.browser.d.ts +2 -0
  406. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.d.ts +12 -0
  407. package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +17 -9
  408. package/node_modules/@aws-sdk/middleware-host-header/package.json +8 -6
  409. package/node_modules/@aws-sdk/middleware-location-constraint/package.json +7 -5
  410. package/node_modules/@aws-sdk/middleware-logger/package.json +7 -5
  411. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +8 -6
  412. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js +18 -15
  413. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js +13 -13
  414. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js +2 -0
  415. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +20 -16
  416. package/node_modules/@aws-sdk/middleware-ssec/package.json +7 -5
  417. package/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +112 -4
  418. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js +49 -0
  419. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js +22 -0
  420. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js +18 -0
  421. package/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js +11 -1
  422. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts +18 -0
  423. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts +14 -1
  424. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts +5 -0
  425. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts +20 -0
  426. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts +5 -1
  427. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts +2 -0
  428. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts +2 -1
  429. package/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts +2 -1
  430. package/node_modules/@aws-sdk/middleware-user-agent/package.json +12 -8
  431. package/node_modules/@aws-sdk/region-config-resolver/package.json +7 -6
  432. package/node_modules/@aws-sdk/s3-request-presigner/README.md +23 -41
  433. package/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js +24 -6
  434. package/node_modules/@aws-sdk/s3-request-presigner/dist-es/presigner.js +8 -4
  435. package/node_modules/@aws-sdk/s3-request-presigner/dist-types/presigner.d.ts +2 -2
  436. package/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/presigner.d.ts +2 -0
  437. package/node_modules/@aws-sdk/s3-request-presigner/package.json +12 -11
  438. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +8 -7
  439. package/node_modules/@aws-sdk/token-providers/package.json +8 -7
  440. package/node_modules/@aws-sdk/types/dist-es/feature-ids.js +1 -0
  441. package/node_modules/@aws-sdk/types/dist-es/index.js +1 -0
  442. package/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts +59 -0
  443. package/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts +5 -0
  444. package/node_modules/@aws-sdk/types/dist-types/index.d.ts +1 -0
  445. package/node_modules/@aws-sdk/types/dist-types/middleware.d.ts +12 -0
  446. package/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts +54 -0
  447. package/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts +5 -0
  448. package/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts +1 -0
  449. package/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts +7 -0
  450. package/node_modules/@aws-sdk/types/package.json +2 -2
  451. package/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js +1 -0
  452. package/node_modules/@aws-sdk/util-arn-parser/package.json +3 -2
  453. package/node_modules/@aws-sdk/util-endpoints/package.json +8 -6
  454. package/node_modules/@aws-sdk/util-format-url/package.json +6 -5
  455. package/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js +1 -0
  456. package/node_modules/@aws-sdk/util-locate-window/package.json +3 -2
  457. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +9 -4
  458. package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +9 -4
  459. package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js +7 -2
  460. package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js +7 -2
  461. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts +9 -1
  462. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts +9 -1
  463. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts +12 -1
  464. package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts +12 -1
  465. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +5 -4
  466. package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +46 -39
  467. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js +29 -0
  468. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +2 -39
  469. package/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js +8 -0
  470. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts +23 -0
  471. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +2 -20
  472. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts +13 -0
  473. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts +21 -0
  474. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +2 -12
  475. package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts +6 -0
  476. package/node_modules/@aws-sdk/util-user-agent-node/package.json +7 -5
  477. package/node_modules/@aws-sdk/xml-builder/package.json +4 -3
  478. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/.jsii +5 -5
  479. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/lib/index.js +1 -1
  480. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/.jsii +2 -2
  481. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/.jsii.tabl.json.gz +0 -0
  482. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/api-call-base.js +1 -1
  483. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/assertions.js +1 -1
  484. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/common.js +2 -2
  485. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/http-call.js +1 -1
  486. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/match.js +1 -1
  487. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/providers/provider.js +1 -1
  488. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/sdk.js +2 -2
  489. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/waiter-state-machine.js +1 -1
  490. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/test-case.js +3 -3
  491. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/package.json +7 -7
  492. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/.jsii +325 -18
  493. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/index.d.ts +2 -0
  494. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/index.js +3 -1
  495. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-defaults.js +2 -2
  496. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cloudfront-distribution-helper.js +2 -2
  497. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-defaults.js +2 -2
  498. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-helper.js +2 -2
  499. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-defaults.d.ts +15 -0
  500. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-defaults.js +33 -0
  501. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-helper.d.ts +56 -0
  502. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-helper.js +197 -0
  503. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-helper.d.ts +2 -1
  504. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-helper.js +10 -4
  505. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.d.ts +9 -0
  506. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.js +28 -2
  507. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/package.json +4 -4
  508. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/pipes-helper.test.d.ts +13 -0
  509. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/pipes-helper.test.js +695 -0
  510. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/step-function-helper.test.js +35 -1
  511. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/test-helper.d.ts +1 -0
  512. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/test-helper.js +8 -3
  513. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/utils.test.js +16 -1
  514. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/.jsii +85 -45
  515. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/API.md +841 -255
  516. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/Dockerfile +2 -2
  517. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/README.md +5 -1
  518. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/construct.d.ts +20 -3
  519. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/construct.js +36 -30
  520. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/dependency.d.ts +0 -4
  521. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/dependency.js +5 -9
  522. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/private/stack-trace.js +1 -1
  523. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/private/uniqueid.js +1 -1
  524. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/package.json +35 -31
  525. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/package.json +6 -6
  526. package/node_modules/@gemeentenijmegen/apiclient/package.json +8 -8
  527. package/node_modules/@gemeentenijmegen/apigateway-http/package.json +5 -5
  528. package/node_modules/@gemeentenijmegen/session/package.json +6 -6
  529. package/node_modules/@gemeentenijmegen/utils/package.json +8 -8
  530. package/node_modules/@smithy/abort-controller/package.json +4 -3
  531. package/node_modules/@smithy/chunked-blob-reader/dist-cjs/index.js +8 -23
  532. package/node_modules/@smithy/chunked-blob-reader/dist-es/index.js +8 -22
  533. package/node_modules/@smithy/chunked-blob-reader/dist-types/index.d.ts +1 -0
  534. package/node_modules/@smithy/chunked-blob-reader/dist-types/ts3.4/index.d.ts +1 -0
  535. package/node_modules/@smithy/chunked-blob-reader/package.json +2 -2
  536. package/node_modules/@smithy/chunked-blob-reader-native/package.json +2 -2
  537. package/node_modules/@smithy/config-resolver/package.json +7 -6
  538. package/node_modules/@smithy/core/dist-cjs/index.js +79 -158
  539. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +34 -9
  540. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +164 -0
  541. package/node_modules/@smithy/core/dist-es/index.js +4 -3
  542. package/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +1 -2
  543. package/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js +1 -2
  544. package/node_modules/@smithy/core/dist-es/protocols/requestBuilder.js +1 -67
  545. package/node_modules/@smithy/core/dist-es/setFeature.js +11 -0
  546. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +2 -2
  547. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +11 -1
  548. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js +5 -0
  549. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +8 -2
  550. package/node_modules/@smithy/core/dist-es/submodules/cbor/index.js +1 -0
  551. package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +4 -3
  552. package/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js +11 -0
  553. package/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js +5 -0
  554. package/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +4 -0
  555. package/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +67 -0
  556. package/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +19 -0
  557. package/node_modules/@smithy/core/dist-types/index.d.ts +4 -3
  558. package/node_modules/@smithy/core/dist-types/protocols/requestBuilder.d.ts +2 -48
  559. package/node_modules/@smithy/core/dist-types/setFeature.d.ts +12 -0
  560. package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts +23 -0
  561. package/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts +1 -0
  562. package/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts +4 -2
  563. package/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts +10 -0
  564. package/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  565. package/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +4 -0
  566. package/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts +51 -0
  567. package/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts +4 -0
  568. package/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts +4 -3
  569. package/node_modules/@smithy/core/dist-types/ts3.4/protocols/requestBuilder.d.ts +2 -48
  570. package/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts +12 -0
  571. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts +23 -0
  572. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts +1 -0
  573. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts +4 -2
  574. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts +10 -0
  575. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
  576. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts +4 -0
  577. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts +51 -0
  578. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts +4 -0
  579. package/node_modules/@smithy/core/package.json +19 -11
  580. package/node_modules/@smithy/core/protocols.d.ts +7 -0
  581. package/node_modules/@smithy/core/protocols.js +6 -0
  582. package/node_modules/@smithy/credential-provider-imds/package.json +7 -7
  583. package/node_modules/@smithy/eventstream-codec/package.json +4 -3
  584. package/node_modules/@smithy/eventstream-serde-browser/package.json +3 -3
  585. package/node_modules/@smithy/eventstream-serde-config-resolver/package.json +5 -4
  586. package/node_modules/@smithy/eventstream-serde-node/package.json +3 -3
  587. package/node_modules/@smithy/eventstream-serde-universal/package.json +5 -4
  588. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +12 -30
  589. package/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js +3 -0
  590. package/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +3 -2
  591. package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +3 -26
  592. package/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts +6 -0
  593. package/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts +6 -0
  594. package/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts +6 -0
  595. package/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts +6 -0
  596. package/node_modules/@smithy/fetch-http-handler/package.json +9 -6
  597. package/node_modules/@smithy/hash-blob-browser/package.json +6 -5
  598. package/node_modules/@smithy/hash-node/package.json +4 -3
  599. package/node_modules/@smithy/hash-stream-node/package.json +4 -3
  600. package/node_modules/@smithy/invalid-dependency/package.json +4 -3
  601. package/node_modules/@smithy/md5-js/package.json +4 -3
  602. package/node_modules/@smithy/middleware-content-length/package.json +5 -4
  603. package/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +4 -0
  604. package/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js +4 -0
  605. package/node_modules/@smithy/middleware-endpoint/package.json +11 -9
  606. package/node_modules/@smithy/middleware-retry/package.json +12 -10
  607. package/node_modules/@smithy/middleware-serde/package.json +6 -4
  608. package/node_modules/@smithy/middleware-stack/package.json +4 -3
  609. package/node_modules/@smithy/node-config-provider/package.json +6 -5
  610. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +20 -14
  611. package/node_modules/@smithy/node-http-handler/dist-cjs/timing.js +1 -0
  612. package/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +5 -4
  613. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +1 -1
  614. package/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +9 -2
  615. package/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +5 -4
  616. package/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +2 -1
  617. package/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +2 -1
  618. package/node_modules/@smithy/node-http-handler/dist-es/timing.js +4 -0
  619. package/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +4 -3
  620. package/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +8 -0
  621. package/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +8 -0
  622. package/node_modules/@smithy/node-http-handler/package.json +7 -6
  623. package/node_modules/@smithy/property-provider/package.json +4 -3
  624. package/node_modules/@smithy/protocol-http/package.json +4 -3
  625. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  626. package/node_modules/@smithy/querystring-parser/package.json +4 -3
  627. package/node_modules/@smithy/service-error-classification/package.json +4 -3
  628. package/node_modules/@smithy/shared-ini-file-loader/package.json +4 -3
  629. package/node_modules/@smithy/signature-v4/package.json +6 -5
  630. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +59 -36
  631. package/node_modules/@smithy/smithy-client/dist-cjs/quote-header.js +1 -0
  632. package/node_modules/@smithy/smithy-client/dist-cjs/split-header.js +1 -0
  633. package/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js +1 -11
  634. package/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js +1 -5
  635. package/node_modules/@smithy/smithy-client/dist-es/index.js +2 -0
  636. package/node_modules/@smithy/smithy-client/dist-es/quote-header.js +6 -0
  637. package/node_modules/@smithy/smithy-client/dist-es/resolve-path.js +1 -19
  638. package/node_modules/@smithy/smithy-client/dist-es/split-header.js +37 -0
  639. package/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts +2 -7
  640. package/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts +2 -4
  641. package/node_modules/@smithy/smithy-client/dist-types/index.d.ts +2 -0
  642. package/node_modules/@smithy/smithy-client/dist-types/quote-header.d.ts +6 -0
  643. package/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts +2 -1
  644. package/node_modules/@smithy/smithy-client/dist-types/split-header.d.ts +5 -0
  645. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts +2 -7
  646. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts +2 -4
  647. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts +2 -0
  648. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/quote-header.d.ts +6 -0
  649. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts +2 -1
  650. package/node_modules/@smithy/smithy-client/dist-types/ts3.4/split-header.d.ts +5 -0
  651. package/node_modules/@smithy/smithy-client/package.json +9 -7
  652. package/node_modules/@smithy/types/dist-cjs/feature-ids.js +1 -0
  653. package/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  654. package/node_modules/@smithy/types/dist-es/index.js +1 -0
  655. package/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  656. package/node_modules/@smithy/types/dist-types/http.d.ts +1 -0
  657. package/node_modules/@smithy/types/dist-types/index.d.ts +1 -0
  658. package/node_modules/@smithy/types/dist-types/middleware.d.ts +30 -6
  659. package/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +3 -2
  660. package/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  661. package/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +1 -0
  662. package/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +1 -0
  663. package/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +26 -2
  664. package/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +3 -2
  665. package/node_modules/@smithy/types/package.json +1 -1
  666. package/node_modules/@smithy/url-parser/package.json +5 -4
  667. package/node_modules/@smithy/util-defaults-mode-browser/package.json +6 -5
  668. package/node_modules/@smithy/util-defaults-mode-node/package.json +9 -8
  669. package/node_modules/@smithy/util-endpoints/package.json +7 -5
  670. package/node_modules/@smithy/util-middleware/package.json +4 -3
  671. package/node_modules/@smithy/util-retry/dist-cjs/index.js +5 -1
  672. package/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js +2 -1
  673. package/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts +4 -0
  674. package/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts +4 -0
  675. package/node_modules/@smithy/util-retry/package.json +5 -4
  676. package/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js +7 -0
  677. package/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js +49 -0
  678. package/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js +40 -0
  679. package/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js +13 -0
  680. package/node_modules/@smithy/util-stream/dist-cjs/index.js +6 -1
  681. package/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js +1 -2
  682. package/node_modules/@smithy/util-stream/dist-cjs/splitStream.js +1 -1
  683. package/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js +6 -1
  684. package/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js +3 -0
  685. package/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js +44 -0
  686. package/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js +35 -0
  687. package/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js +9 -0
  688. package/node_modules/@smithy/util-stream/dist-es/index.js +2 -0
  689. package/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js +0 -1
  690. package/node_modules/@smithy/util-stream/dist-es/splitStream.js +2 -2
  691. package/node_modules/@smithy/util-stream/dist-es/stream-type-check.js +3 -0
  692. package/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts +37 -0
  693. package/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts +61 -0
  694. package/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts +15 -0
  695. package/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts +12 -0
  696. package/node_modules/@smithy/util-stream/dist-types/index.d.ts +2 -0
  697. package/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts +4 -0
  698. package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts +37 -0
  699. package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts +60 -0
  700. package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts +15 -0
  701. package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts +12 -0
  702. package/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts +2 -0
  703. package/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts +4 -0
  704. package/node_modules/@smithy/util-stream/package.json +16 -6
  705. package/node_modules/@smithy/util-waiter/package.json +5 -4
  706. package/node_modules/@types/uuid/LICENSE +21 -0
  707. package/node_modules/@types/uuid/README.md +15 -0
  708. package/node_modules/@types/uuid/index.d.mts +12 -0
  709. package/node_modules/@types/uuid/index.d.ts +86 -0
  710. package/node_modules/@types/uuid/package.json +54 -0
  711. package/node_modules/cookie/index.js +118 -57
  712. package/node_modules/cookie/package.json +3 -3
  713. package/node_modules/form-data/Readme.md +4 -4
  714. package/node_modules/form-data/lib/form_data.js +1 -1
  715. package/node_modules/form-data/package.json +9 -6
  716. package/node_modules/tslib/modules/index.d.ts +1 -0
  717. package/node_modules/tslib/modules/index.js +2 -0
  718. package/node_modules/tslib/package.json +1 -1
  719. package/node_modules/tslib/tslib.d.ts +7 -0
  720. package/node_modules/tslib/tslib.es6.js +24 -1
  721. package/node_modules/tslib/tslib.es6.mjs +24 -1
  722. package/node_modules/tslib/tslib.js +56 -1
  723. package/package.json +18 -18
  724. package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/.gitattributes +0 -28
  725. package/node_modules/cookie/HISTORY.md +0 -147
  726. package/node_modules/form-data/README.md.bak +0 -358
  727. /package/node_modules/{@aws-sdk/endpoint-cache/dist-cjs/Endpoint.js → @smithy/core/dist-cjs/setFeature.js} +0 -0
  728. /package/node_modules/{@aws-sdk/endpoint-cache/dist-cjs/EndpointCache.js → @smithy/fetch-http-handler/dist-cjs/create-request.js} +0 -0
@@ -0,0 +1,695 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const sqs_helper_1 = require("../lib/sqs-helper");
16
+ const step_function_helper_1 = require("../lib/step-function-helper");
17
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
18
+ const defaults = require("../");
19
+ const lambda = require("aws-cdk-lib/aws-lambda");
20
+ const s3 = require("aws-cdk-lib/aws-s3");
21
+ const assertions_1 = require("aws-cdk-lib/assertions");
22
+ const aws_logs_1 = require("aws-cdk-lib/aws-logs");
23
+ // =================================
24
+ // Test sources and targets generation
25
+ // =================================
26
+ test('Create a default SQS Source', () => {
27
+ // Stack
28
+ const stack = new aws_cdk_lib_1.Stack();
29
+ const buildQueueResponse = (0, sqs_helper_1.buildQueue)(stack, 'test-queue', {});
30
+ const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue);
31
+ expect(sqsSource.sourceArn).toEqual(buildQueueResponse.queue.queueArn);
32
+ expect(Object.keys(sqsSource.sourceParameters).length).toEqual(0);
33
+ // best we can do here, confirm values when we instantiate the actual pipe
34
+ expect(sqsSource.sourcePolicy.statementCount).toEqual(1);
35
+ assertions_1.Template.fromStack(stack);
36
+ });
37
+ test('Create an SQS Source with overrides', () => {
38
+ // Stack
39
+ const stack = new aws_cdk_lib_1.Stack();
40
+ const buildQueueResponse = (0, sqs_helper_1.buildQueue)(stack, 'test-queue', {});
41
+ const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue, {
42
+ sqsQueueParameters: {
43
+ batchSize: 123,
44
+ },
45
+ });
46
+ expect(sqsSource.sourceArn).toEqual(buildQueueResponse.queue.queueArn);
47
+ // Because sqsQueueParameters type include 'IResolvable |', we need to extract the property this way
48
+ const batchSizeProp = sqsSource.sourceParameters.sqsQueueParameters.batchSize;
49
+ expect(batchSizeProp).toEqual(123);
50
+ // best we can do here, confirm values when we instantiate the actual pipe
51
+ expect(sqsSource.sourcePolicy.statementCount).toEqual(1);
52
+ });
53
+ test('Create a default Step Functions Target', () => {
54
+ // Stack
55
+ const stack = new aws_cdk_lib_1.Stack();
56
+ const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(stack, 'test-state-machine', {
57
+ stateMachineProps: {
58
+ definitionBody: defaults.CreateTestStateMachineDefinitionBody(stack, 'stub-state-machine')
59
+ }
60
+ });
61
+ const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine);
62
+ expect(stateMachineTarget.targetArn).toEqual(buildStateMachineResponse.stateMachine.stateMachineArn);
63
+ expect(stateMachineTarget.targetParameters.stepFunctionStateMachineParameters).toBeDefined();
64
+ const invocationType = stateMachineTarget.targetParameters.stepFunctionStateMachineParameters.invocationType;
65
+ expect(invocationType).toEqual('FIRE_AND_FORGET');
66
+ expect(Object.keys(stateMachineTarget.targetParameters).length).toEqual(1);
67
+ // best we can do here, confirm values when we instantiate the actual pipe
68
+ expect(stateMachineTarget.targetPolicy.statementCount).toEqual(1);
69
+ assertions_1.Template.fromStack(stack);
70
+ });
71
+ test('Create a Step Functions Target with overrides', () => {
72
+ // Stack
73
+ const stack = new aws_cdk_lib_1.Stack();
74
+ const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(stack, 'test-state-machine', {
75
+ stateMachineProps: {
76
+ definitionBody: defaults.CreateTestStateMachineDefinitionBody(stack, 'stub-state-machine')
77
+ }
78
+ });
79
+ const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine, {
80
+ stepFunctionStateMachineParameters: {
81
+ invocationType: 'REQUEST_RESPONSE'
82
+ }
83
+ });
84
+ expect(stateMachineTarget.targetArn).toEqual(buildStateMachineResponse.stateMachine.stateMachineArn);
85
+ expect(stateMachineTarget.targetParameters.stepFunctionStateMachineParameters).toBeDefined();
86
+ const invocationType = stateMachineTarget.targetParameters.stepFunctionStateMachineParameters.invocationType;
87
+ expect(invocationType).toEqual('REQUEST_RESPONSE');
88
+ expect(Object.keys(stateMachineTarget.targetParameters).length).toEqual(1);
89
+ // best we can do here, confirm values when we instantiate the actual pipe
90
+ expect(stateMachineTarget.targetPolicy.statementCount).toEqual(1);
91
+ });
92
+ // =================================
93
+ // Test pipe creation
94
+ // =================================
95
+ test('Create a default pipe', () => {
96
+ const prerequisiteId = 'alldefault';
97
+ const pipeId = 'defaultpipe';
98
+ // Stack
99
+ const stack = new aws_cdk_lib_1.Stack();
100
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
101
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
102
+ source: prerequisites.source,
103
+ target: prerequisites.target,
104
+ clientProps: {}
105
+ });
106
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
107
+ const template = assertions_1.Template.fromStack(stack);
108
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
109
+ CheckPipeResource(template, pipeId, prerequisiteId);
110
+ CheckPipeRole(template, prerequisiteId);
111
+ CheckLogGroup(template);
112
+ });
113
+ test('Create a pipe with overrides', () => {
114
+ const prerequisiteId = 'overridestest';
115
+ const pipeId = 'overridespipe';
116
+ // Stack
117
+ const stack = new aws_cdk_lib_1.Stack();
118
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
119
+ const testDescription = 'test-description';
120
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
121
+ source: prerequisites.source,
122
+ target: prerequisites.target,
123
+ clientProps: {
124
+ description: testDescription
125
+ }
126
+ });
127
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
128
+ const template = assertions_1.Template.fromStack(stack);
129
+ CheckPipeResource(template, pipeId, prerequisiteId);
130
+ CheckPipeRole(template, prerequisiteId);
131
+ CheckLogGroup(template);
132
+ // The description is unique to this test, so check it here
133
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
134
+ Description: testDescription
135
+ });
136
+ });
137
+ test('Create a pipe with a filter', () => {
138
+ const prerequisiteId = 'filtertest';
139
+ const pipeId = 'filterpipe';
140
+ // Stack
141
+ const stack = new aws_cdk_lib_1.Stack();
142
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
143
+ const testFilterPattern = `{
144
+ "body": {
145
+ "state": ["open"]
146
+ }
147
+ }`;
148
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
149
+ source: prerequisites.source,
150
+ target: prerequisites.target,
151
+ clientProps: {
152
+ sourceParameters: {
153
+ filterCriteria: {
154
+ filters: [{ pattern: testFilterPattern }],
155
+ },
156
+ }
157
+ },
158
+ });
159
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
160
+ const template = assertions_1.Template.fromStack(stack);
161
+ CheckPipeResource(template, pipeId, prerequisiteId);
162
+ CheckPipeRole(template, prerequisiteId);
163
+ CheckLogGroup(template);
164
+ // SourceParameters is unique to this test, so check it here
165
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
166
+ SourceParameters: {
167
+ FilterCriteria: {
168
+ Filters: [
169
+ {
170
+ Pattern: testFilterPattern
171
+ }
172
+ ]
173
+ }
174
+ }
175
+ });
176
+ });
177
+ test('Create a pipe with Lambda function enrichment', () => {
178
+ const prerequisiteId = 'lambdaenrichtest';
179
+ const pipeId = 'lambdaenrichpipe';
180
+ // Stack
181
+ const stack = new aws_cdk_lib_1.Stack();
182
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
183
+ const enrichmentFunction = new lambda.Function(stack, 'enrichment-function', {
184
+ code: lambda.Code.fromAsset(`${__dirname}/lambda-test`),
185
+ handler: "index.handler",
186
+ runtime: lambda.Runtime.NODEJS_20_X,
187
+ });
188
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
189
+ source: prerequisites.source,
190
+ target: prerequisites.target,
191
+ enrichmentFunction
192
+ });
193
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
194
+ const template = assertions_1.Template.fromStack(stack);
195
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
196
+ CheckPipeResource(template, pipeId, prerequisiteId);
197
+ CheckLogGroup(template);
198
+ // Enrichment is unique to this test so check it here
199
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
200
+ Enrichment: {
201
+ "Fn::GetAtt": [
202
+ assertions_1.Match.stringLikeRegexp('enrichmentfunction.*'),
203
+ "Arn"
204
+ ]
205
+ },
206
+ });
207
+ // This checks for everything but enrichment
208
+ CheckPipeRole(template, prerequisiteId);
209
+ // This checks for enrichment permissions
210
+ template.hasResourceProperties('AWS::IAM::Policy', {
211
+ PolicyDocument: {
212
+ Statement: [
213
+ {
214
+ Action: "lambda:InvokeFunction",
215
+ Effect: "Allow",
216
+ Resource: {
217
+ "Fn::GetAtt": [
218
+ assertions_1.Match.stringLikeRegexp('enrichmentfunction.*'),
219
+ "Arn"
220
+ ]
221
+ }
222
+ }
223
+ ],
224
+ Version: "2012-10-17"
225
+ },
226
+ PolicyName: assertions_1.Match.stringLikeRegexp(`enrichmentpolicy${pipeId}.*`),
227
+ Roles: [
228
+ {
229
+ Ref: assertions_1.Match.stringLikeRegexp(`PipeRole${pipeId}.*`)
230
+ }
231
+ ]
232
+ });
233
+ });
234
+ test('Create a pipe with state machine enrichment', () => {
235
+ const prerequisiteId = 'smenrichtest';
236
+ const pipeId = 'smenrichpipe';
237
+ // Stack
238
+ const stack = new aws_cdk_lib_1.Stack();
239
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
240
+ const enrichmentStateMachine = defaults.CreateTestStateMachine(stack, 'state-machine-enrichment');
241
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
242
+ source: prerequisites.source,
243
+ target: prerequisites.target,
244
+ enrichmentStateMachine
245
+ });
246
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
247
+ const template = assertions_1.Template.fromStack(stack);
248
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
249
+ CheckPipeResource(template, pipeId, prerequisiteId);
250
+ CheckPipeRole(template, prerequisiteId);
251
+ CheckLogGroup(template);
252
+ // Look for additional enrichment permision
253
+ template.hasResourceProperties('AWS::IAM::Policy', {
254
+ PolicyDocument: {
255
+ Statement: [
256
+ {
257
+ // This won't run if we actually launched it as the enrichmentStateMachine is not EXPRESS
258
+ Action: "states:StartSyncExecution",
259
+ Effect: "Allow",
260
+ Resource: {
261
+ Ref: assertions_1.Match.stringLikeRegexp('statemachineenrichment.*'),
262
+ }
263
+ }
264
+ ],
265
+ Version: "2012-10-17"
266
+ },
267
+ PolicyName: assertions_1.Match.stringLikeRegexp(`enrichmentpolicy${pipeId}.*`),
268
+ Roles: [
269
+ {
270
+ Ref: assertions_1.Match.stringLikeRegexp(`PipeRole${pipeId}.*`)
271
+ }
272
+ ]
273
+ });
274
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
275
+ Enrichment: {
276
+ Ref: assertions_1.Match.stringLikeRegexp("statemachineenrichment.*")
277
+ },
278
+ });
279
+ });
280
+ test('Provide replacement LogConfiguration', () => {
281
+ const prerequisiteId = 'logconfigtest';
282
+ const pipeId = 'logconfigpipe';
283
+ // Stack
284
+ const stack = new aws_cdk_lib_1.Stack();
285
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
286
+ const customLogConfiguration = {
287
+ s3LogDestination: {
288
+ bucketName: new s3.Bucket(stack, 'test').bucketName,
289
+ },
290
+ level: defaults.PipesLogLevel.ERROR
291
+ };
292
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
293
+ source: prerequisites.source,
294
+ target: prerequisites.target,
295
+ clientProps: {
296
+ logConfiguration: customLogConfiguration
297
+ }
298
+ });
299
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
300
+ const template = assertions_1.Template.fromStack(stack);
301
+ CheckPipeSourceAndTarget(template, prerequisiteId);
302
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
303
+ LogConfiguration: {
304
+ Level: "ERROR",
305
+ S3LogDestination: {
306
+ BucketName: {
307
+ Ref: assertions_1.Match.stringLikeRegexp("test.*")
308
+ }
309
+ }
310
+ }
311
+ });
312
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
313
+ CheckPipeRole(template, prerequisiteId);
314
+ });
315
+ test('Override the default log level', () => {
316
+ const prerequisiteId = 'loglevelttest';
317
+ const pipeId = 'loglevelpipe';
318
+ // Stack
319
+ const stack = new aws_cdk_lib_1.Stack();
320
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
321
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
322
+ source: prerequisites.source,
323
+ target: prerequisites.target,
324
+ logLevel: defaults.PipesLogLevel.ERROR
325
+ });
326
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
327
+ const template = assertions_1.Template.fromStack(stack);
328
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
329
+ CheckPipeResource(template, pipeId, prerequisiteId);
330
+ CheckPipeRole(template, prerequisiteId);
331
+ CheckLogGroup(template);
332
+ // Level is unique to this test
333
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
334
+ LogConfiguration: {
335
+ Level: defaults.PipesLogLevel.ERROR,
336
+ }
337
+ });
338
+ });
339
+ test('Test no logging', () => {
340
+ const prerequisiteId = 'nologs';
341
+ const pipeId = 'testpipe';
342
+ // Stack
343
+ const stack = new aws_cdk_lib_1.Stack();
344
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
345
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
346
+ source: prerequisites.source,
347
+ target: prerequisites.target,
348
+ logLevel: defaults.PipesLogLevel.OFF
349
+ });
350
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
351
+ const template = assertions_1.Template.fromStack(stack);
352
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
353
+ CheckPipeSourceAndTarget(template, prerequisiteId);
354
+ CheckPipeRole(template, prerequisiteId);
355
+ // One log group for the state machine, none for the pipe
356
+ template.resourceCountIs('AWS::Logs::LogGroup', 1);
357
+ });
358
+ test('Override a subset of SQS source paramters', () => {
359
+ const prerequisiteId = 'srcparamtest';
360
+ const pipeId = 'srcparampipe';
361
+ const testBatchSize = 7;
362
+ // Stack
363
+ const stack = new aws_cdk_lib_1.Stack();
364
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
365
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
366
+ source: prerequisites.source,
367
+ target: prerequisites.target,
368
+ clientProps: {
369
+ sourceParameters: {
370
+ sqsQueueParameters: {
371
+ batchSize: testBatchSize,
372
+ }
373
+ }
374
+ }
375
+ });
376
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
377
+ const template = assertions_1.Template.fromStack(stack);
378
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
379
+ CheckPipeResource(template, pipeId, prerequisiteId);
380
+ CheckPipeRole(template, prerequisiteId);
381
+ CheckLogGroup(template);
382
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
383
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
384
+ SourceParameters: {
385
+ SqsQueueParameters: {
386
+ BatchSize: testBatchSize
387
+ }
388
+ },
389
+ });
390
+ });
391
+ test('Provide pipeLogProps', () => {
392
+ const prerequisiteId = 'pipelogpropstest';
393
+ const pipeId = 'pipelogpropspipe';
394
+ // While this is an enum we need to use, in the template
395
+ // it is converted to days, in this case 120
396
+ const testRetention = aws_logs_1.RetentionDays.FOUR_MONTHS;
397
+ // Stack
398
+ const stack = new aws_cdk_lib_1.Stack();
399
+ const prerequisites = CreatePrerequisites(stack, prerequisiteId);
400
+ const pipeResponse = defaults.BuildPipe(stack, pipeId, {
401
+ source: prerequisites.source,
402
+ target: prerequisites.target,
403
+ pipeLogProps: {
404
+ retention: testRetention
405
+ }
406
+ });
407
+ CheckPipeResponseProperties(pipeResponse, prerequisites);
408
+ const template = assertions_1.Template.fromStack(stack);
409
+ template.resourceCountIs('AWS::Pipes::Pipe', 1);
410
+ CheckPipeResource(template, pipeId, prerequisiteId);
411
+ CheckPipeRole(template, prerequisiteId);
412
+ CheckLogGroup(template);
413
+ CheckPipeLogConfiguration(template, pipeId);
414
+ // Look for additional property we passed in pipeLogProps
415
+ template.hasResourceProperties('AWS::Logs::LogGroup', {
416
+ RetentionInDays: 120,
417
+ });
418
+ });
419
+ test('Check for error when providing source in CfnProps', () => {
420
+ // Stack
421
+ const stack = new aws_cdk_lib_1.Stack();
422
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
423
+ const app = () => {
424
+ defaults.BuildPipe(stack, 'test-pipe', {
425
+ source: prerequisites.source,
426
+ target: prerequisites.target,
427
+ clientProps: {
428
+ source: prerequisites.source.sourceArn
429
+ }
430
+ });
431
+ };
432
+ // Assertion
433
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
434
+ });
435
+ test('Check for error when providing target in CfnProps', () => {
436
+ // Stack
437
+ const stack = new aws_cdk_lib_1.Stack();
438
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
439
+ const app = () => {
440
+ defaults.BuildPipe(stack, 'test-pipe', {
441
+ source: prerequisites.source,
442
+ target: prerequisites.target,
443
+ clientProps: {
444
+ target: prerequisites.target.targetArn,
445
+ }
446
+ });
447
+ };
448
+ // Assertion
449
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
450
+ });
451
+ test('Check for error when providing a roleArn', () => {
452
+ // Stack
453
+ const stack = new aws_cdk_lib_1.Stack();
454
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
455
+ const app = () => {
456
+ defaults.BuildPipe(stack, 'test-pipe', {
457
+ source: prerequisites.source,
458
+ target: prerequisites.target,
459
+ clientProps: {
460
+ roleArn: "some-arn",
461
+ }
462
+ });
463
+ };
464
+ // Assertion
465
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
466
+ });
467
+ test('Check for error when providing enrichment', () => {
468
+ // Stack
469
+ const stack = new aws_cdk_lib_1.Stack();
470
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
471
+ const app = () => {
472
+ defaults.BuildPipe(stack, 'test-pipe', {
473
+ source: prerequisites.source,
474
+ target: prerequisites.target,
475
+ clientProps: {
476
+ enrichment: "functionArn",
477
+ }
478
+ });
479
+ };
480
+ // Assertion
481
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
482
+ });
483
+ test('Check for error when log level and log configuration are both provided', () => {
484
+ // Stack
485
+ const stack = new aws_cdk_lib_1.Stack();
486
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
487
+ const app = () => {
488
+ defaults.BuildPipe(stack, 'test-pipe', {
489
+ source: prerequisites.source,
490
+ target: prerequisites.target,
491
+ logLevel: defaults.PipesLogLevel.ERROR,
492
+ clientProps: {
493
+ logConfiguration: { some: "object" },
494
+ }
495
+ });
496
+ };
497
+ // Assertion
498
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify logLevel and logConfiguration');
499
+ });
500
+ test('Check for error when pipeLogProps and log configuration are both provided', () => {
501
+ // Stack
502
+ const stack = new aws_cdk_lib_1.Stack();
503
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
504
+ const app = () => {
505
+ defaults.BuildPipe(stack, 'test-pipe', {
506
+ source: prerequisites.source,
507
+ target: prerequisites.target,
508
+ pipeLogProps: { logGroupName: "anyvalue" },
509
+ clientProps: {
510
+ logConfiguration: { some: "object" },
511
+ }
512
+ });
513
+ };
514
+ // Assertion
515
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify pipeLogProps and logConfiguration');
516
+ });
517
+ test('Check for error when enrichmentFunction and enrichmentStateMachine are both provided', () => {
518
+ // Stack
519
+ const stack = new aws_cdk_lib_1.Stack();
520
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
521
+ const app = () => {
522
+ defaults.BuildPipe(stack, 'test-pipe', {
523
+ source: prerequisites.source,
524
+ target: prerequisites.target,
525
+ enrichmentFunction: { place: "holder" },
526
+ enrichmentStateMachine: { place: "holder" }
527
+ });
528
+ };
529
+ // Assertion
530
+ expect(app).toThrowError('ERROR - Only one of enrichmentFunction or enrichmentStateMachine can be provided');
531
+ });
532
+ test('Check for error when pipeLogProps and log level is set to OFF', () => {
533
+ // Stack
534
+ const stack = new aws_cdk_lib_1.Stack();
535
+ const prerequisites = CreatePrerequisites(stack, 'log-level-test');
536
+ const app = () => {
537
+ defaults.BuildPipe(stack, 'test-pipe', {
538
+ source: prerequisites.source,
539
+ target: prerequisites.target,
540
+ logLevel: defaults.PipesLogLevel.OFF,
541
+ pipeLogProps: { logGroupName: "anyvalue" },
542
+ });
543
+ };
544
+ // Assertion
545
+ expect(app).toThrowError('ERROR - BuildPipeProps cannot specify pipeLogProps and log level OFF');
546
+ });
547
+ test('Test all of CheckPipesProps', () => {
548
+ const app = () => {
549
+ defaults.CheckPipesProps({
550
+ pipesProps: { source: "value" },
551
+ });
552
+ };
553
+ // Assertion
554
+ expect(app).toThrowError('Do not set source in pipesProps. It is set by the construct.\n');
555
+ const appTwo = () => {
556
+ defaults.CheckPipesProps({
557
+ pipesProps: { target: "value" },
558
+ });
559
+ };
560
+ // Assertion
561
+ expect(appTwo).toThrowError('Do not set target in pipesProps. It is set by the construct.\n');
562
+ });
563
+ function CreatePrerequisites(scope, id) {
564
+ const buildQueueResponse = (0, sqs_helper_1.buildQueue)(scope, `${id}-source-queue`, {});
565
+ const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue);
566
+ const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(scope, `${id}-target-state-machine`, {
567
+ stateMachineProps: {
568
+ definitionBody: defaults.CreateTestStateMachineDefinitionBody(scope, `${id}-steps`)
569
+ }
570
+ });
571
+ const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine, {
572
+ stepFunctionStateMachineParameters: {
573
+ invocationType: 'REQUEST_RESPONSE'
574
+ }
575
+ });
576
+ return {
577
+ source: sqsSource,
578
+ target: stateMachineTarget
579
+ };
580
+ }
581
+ // ==============================
582
+ // Shared functions that check default settings
583
+ // ==============================
584
+ function CheckPipeResponseProperties(pipeResponse, prerequisites) {
585
+ expect(pipeResponse.pipe).toBeDefined();
586
+ expect(pipeResponse.pipe.source).toEqual(prerequisites.source.sourceArn);
587
+ expect(pipeResponse.pipe.target).toEqual(prerequisites.target.targetArn);
588
+ expect(pipeResponse.pipeRole).toBeDefined();
589
+ expect(pipeResponse.pipeRole.node).toBeDefined();
590
+ }
591
+ function CheckPipeResource(template, pipeId, prerequisiteId) {
592
+ CheckPipeSourceAndTarget(template, prerequisiteId);
593
+ CheckPipeLogConfiguration(template, pipeId);
594
+ }
595
+ function CheckPipeSourceAndTarget(template, prerequisiteId) {
596
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
597
+ Source: {
598
+ "Fn::GetAtt": [
599
+ assertions_1.Match.stringLikeRegexp(`${prerequisiteId}sourcequeue.*`),
600
+ "Arn"
601
+ ]
602
+ },
603
+ Target: {
604
+ Ref: assertions_1.Match.stringLikeRegexp(`StateMachine${prerequisiteId}targetstatemachine.*`),
605
+ },
606
+ });
607
+ }
608
+ function CheckPipeLogConfiguration(template, pipeId) {
609
+ template.hasResourceProperties('AWS::Pipes::Pipe', {
610
+ LogConfiguration: {
611
+ CloudwatchLogsLogDestination: {
612
+ LogGroupArn: {
613
+ "Fn::GetAtt": [
614
+ assertions_1.Match.stringLikeRegexp(`LogGroup${pipeId}.*`),
615
+ "Arn"
616
+ ]
617
+ }
618
+ }
619
+ }
620
+ });
621
+ }
622
+ function CheckPipeRole(template, prerequisiteId) {
623
+ template.hasResourceProperties('AWS::IAM::Role', {
624
+ AssumeRolePolicyDocument: {
625
+ Statement: [
626
+ {
627
+ Action: "sts:AssumeRole",
628
+ Effect: "Allow",
629
+ Principal: {
630
+ Service: "pipes.amazonaws.com"
631
+ }
632
+ }
633
+ ],
634
+ Version: "2012-10-17"
635
+ },
636
+ Policies: [
637
+ {
638
+ PolicyDocument: {
639
+ Statement: [
640
+ {
641
+ Action: [
642
+ "sqs:ReceiveMessage",
643
+ "sqs:DeleteMessage",
644
+ "sqs:GetQueueAttributes"
645
+ ],
646
+ Effect: "Allow",
647
+ Resource: {
648
+ "Fn::GetAtt": [
649
+ assertions_1.Match.stringLikeRegexp(`${prerequisiteId}sourcequeue.*`),
650
+ "Arn"
651
+ ]
652
+ }
653
+ }
654
+ ],
655
+ Version: "2012-10-17"
656
+ },
657
+ PolicyName: "sourcePolicy"
658
+ },
659
+ {
660
+ PolicyDocument: {
661
+ Statement: [
662
+ {
663
+ Action: "states:StartExecution",
664
+ Effect: "Allow",
665
+ Resource: {
666
+ Ref: assertions_1.Match.stringLikeRegexp(`StateMachine${prerequisiteId}targetstatemachine.*`)
667
+ }
668
+ }
669
+ ],
670
+ Version: "2012-10-17"
671
+ },
672
+ PolicyName: "targetPolicy"
673
+ }
674
+ ]
675
+ });
676
+ }
677
+ function CheckLogGroup(template) {
678
+ template.hasResourceProperties('AWS::Logs::LogGroup', {
679
+ LogGroupName: {
680
+ "Fn::Join": [
681
+ "",
682
+ [
683
+ assertions_1.Match.stringLikeRegexp('\/aws\/vendedlogs\/pipes\/constructs'),
684
+ {
685
+ "Fn::Select": [
686
+ 2,
687
+ assertions_1.Match.anyValue()
688
+ ]
689
+ }
690
+ ]
691
+ ]
692
+ },
693
+ });
694
+ }
695
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsa0RBQStDO0FBQy9DLHNFQUFnRTtBQUNoRSw2Q0FBb0M7QUFDcEMsZ0NBQWdDO0FBRWhDLGlEQUFpRDtBQUVqRCx5Q0FBeUM7QUFDekMsdURBQXlEO0FBQ3pELG1EQUFxRDtBQUVyRCxvQ0FBb0M7QUFDcEMsc0NBQXNDO0FBQ3RDLG9DQUFvQztBQUVwQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLGtCQUFrQixHQUFHLElBQUEsdUJBQVUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSwwRUFBMEU7SUFDMUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxR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cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IGJ1aWxkUXVldWUgfSBmcm9tIFwiLi4vbGliL3Nxcy1oZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkU3RhdGVNYWNoaW5lIH0gZnJvbSBcIi4uL2xpYi9zdGVwLWZ1bmN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uLyc7XG5pbXBvcnQgKiBhcyBwaXBlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcGlwZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRlc3Qgc291cmNlcyBhbmQgdGFyZ2V0cyBnZW5lcmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTUVMgU291cmNlJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc3RhY2ssICd0ZXN0LXF1ZXVlJywge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlKTtcblxuICBleHBlY3Qoc3FzU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm4pO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3FzU291cmNlLnNvdXJjZVBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgwKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGFuIFNRUyBTb3VyY2Ugd2l0aCBvdmVycmlkZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRRdWV1ZVJlc3BvbnNlID0gYnVpbGRRdWV1ZShzdGFjaywgJ3Rlc3QtcXVldWUnLCB7fSk7XG4gIGNvbnN0IHNxc1NvdXJjZSA9IGRlZmF1bHRzLkNyZWF0ZVNxc1NvdXJjZShidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUsIHtcbiAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgIGJhdGNoU2l6ZTogMTIzLFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlQXJuKS50b0VxdWFsKGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZS5xdWV1ZUFybik7XG4gIC8vIEJlY2F1c2Ugc3FzUXVldWVQYXJhbWV0ZXJzIHR5cGUgaW5jbHVkZSAnSVJlc29sdmFibGUgfCcsIHdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgcHJvcGVydHkgdGhpcyB3YXlcbiAgY29uc3QgYmF0Y2hTaXplUHJvcCA9XG4gICAgKHNxc1NvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzLnNxc1F1ZXVlUGFyYW1ldGVycyBhcyBwaXBlcy5DZm5QaXBlLlBpcGVTb3VyY2VTcXNRdWV1ZVBhcmFtZXRlcnNQcm9wZXJ0eSkhLmJhdGNoU2l6ZTtcbiAgZXhwZWN0KGJhdGNoU2l6ZVByb3ApLnRvRXF1YWwoMTIzKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTdGVwIEZ1bmN0aW9ucyBUYXJnZXQnLCAoKSA9PiB7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssICd0ZXN0LXN0YXRlLW1hY2hpbmUnLCB7XG4gICAgc3RhdGVNYWNoaW5lUHJvcHM6IHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBkZWZhdWx0cy5DcmVhdGVUZXN0U3RhdGVNYWNoaW5lRGVmaW5pdGlvbkJvZHkoc3RhY2ssICdzdHViLXN0YXRlLW1hY2hpbmUnKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnRklSRV9BTkRfRk9SR0VUJyk7XG4gIGV4cGVjdChPYmplY3Qua2V5cyhzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAvLyBiZXN0IHdlIGNhbiBkbyBoZXJlLCBjb25maXJtIHZhbHVlcyB3aGVuIHdlIGluc3RhbnRpYXRlIHRoZSBhY3R1YWwgcGlwZVxuICBleHBlY3Qoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgxKTtcbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIFN0ZXAgRnVuY3Rpb25zIFRhcmdldCB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzdGFjaywgJ3Rlc3Qtc3RhdGUtbWFjaGluZScsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzdGFjaywgJ3N0dWItc3RhdGUtbWFjaGluZScpXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RhdGVNYWNoaW5lVGFyZ2V0ID0gZGVmYXVsdHMuQ3JlYXRlU3RhdGVNYWNoaW5lVGFyZ2V0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lLCB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnUkVRVUVTVF9SRVNQT05TRScpO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUZXN0IHBpcGUgY3JlYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50ZXN0KCdDcmVhdGUgYSBkZWZhdWx0IHBpcGUnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2FsbGRlZmF1bHQnO1xuICBjb25zdCBwaXBlSWQgPSAnZGVmYXVsdHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHt9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcbn0pO1xuXG50ZXN0KCdDcmVhdGUgYSBwaXBlIHdpdGggb3ZlcnJpZGVzJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdvdmVycmlkZXN0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ292ZXJyaWRlc3BpcGUnO1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHRlc3REZXNjcmlwdGlvbiA9ICd0ZXN0LWRlc2NyaXB0aW9uJztcbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB0ZXN0RGVzY3JpcHRpb25cbiAgICB9XG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBUaGUgZGVzY3JpcHRpb24gaXMgdW5pcXVlIHRvIHRoaXMgdGVzdCwgc28gY2hlY2sgaXQgaGVyZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgRGVzY3JpcHRpb246IHRlc3REZXNjcmlwdGlvblxuICB9KTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBhIGZpbHRlcicsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnZmlsdGVydGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdmaWx0ZXJwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHRlc3RGaWx0ZXJQYXR0ZXJuID0gYHtcbiAgICBcImJvZHlcIjoge1xuICAgICAgXCJzdGF0ZVwiOiBbXCJvcGVuXCJdXG4gICAgfVxuICB9YDtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgc291cmNlUGFyYW1ldGVyczoge1xuICAgICAgICBmaWx0ZXJDcml0ZXJpYToge1xuICAgICAgICAgIGZpbHRlcnM6IFt7IHBhdHRlcm46IHRlc3RGaWx0ZXJQYXR0ZXJuIH1dLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBTb3VyY2VQYXJhbWV0ZXJzIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3QsIHNvIGNoZWNrIGl0IGhlcmVcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgIEZpbHRlckNyaXRlcmlhOiB7XG4gICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBQYXR0ZXJuOiB0ZXN0RmlsdGVyUGF0dGVyblxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIExhbWJkYSBmdW5jdGlvbiBlbnJpY2htZW50JywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdsYW1iZGFlbnJpY2h0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ2xhbWJkYWVucmljaHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgZW5yaWNobWVudEZ1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbihzdGFjaywgJ2VucmljaG1lbnQtZnVuY3Rpb24nLCB7XG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhLXRlc3RgKSxcbiAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgfSk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgZW5yaWNobWVudEZ1bmN0aW9uXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuXG4gIC8vIEVucmljaG1lbnQgaXMgdW5pcXVlIHRvIHRoaXMgdGVzdCBzbyBjaGVjayBpdCBoZXJlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBFbnJpY2htZW50OiB7XG4gICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdlbnJpY2htZW50ZnVuY3Rpb24uKicpLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfSxcbiAgfSk7XG4gIC8vIFRoaXMgY2hlY2tzIGZvciBldmVyeXRoaW5nIGJ1dCBlbnJpY2htZW50XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgLy8gVGhpcyBjaGVja3MgZm9yIGVucmljaG1lbnQgcGVybWlzc2lvbnNcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6UG9saWN5Jywge1xuICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJsYW1iZGE6SW52b2tlRnVuY3Rpb25cIixcbiAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnZW5yaWNobWVudGZ1bmN0aW9uLionKSxcbiAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY3lOYW1lOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBlbnJpY2htZW50cG9saWN5JHtwaXBlSWR9LipgKSxcbiAgICBSb2xlczogW1xuICAgICAge1xuICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFBpcGVSb2xlJHtwaXBlSWR9LipgKVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIHN0YXRlIG1hY2hpbmUgZW5yaWNobWVudCcsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnc21lbnJpY2h0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ3NtZW5yaWNocGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBlbnJpY2htZW50U3RhdGVNYWNoaW5lID0gZGVmYXVsdHMuQ3JlYXRlVGVzdFN0YXRlTWFjaGluZShzdGFjaywgJ3N0YXRlLW1hY2hpbmUtZW5yaWNobWVudCcpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGVucmljaG1lbnRTdGF0ZU1hY2hpbmVcbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBMb29rIGZvciBhZGRpdGlvbmFsIGVucmljaG1lbnQgcGVybWlzaW9uXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIHdvbid0IHJ1biBpZiB3ZSBhY3R1YWxseSBsYXVuY2hlZCBpdCBhcyB0aGUgZW5yaWNobWVudFN0YXRlTWFjaGluZSBpcyBub3QgRVhQUkVTU1xuICAgICAgICAgIEFjdGlvbjogXCJzdGF0ZXM6U3RhcnRTeW5jRXhlY3V0aW9uXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnc3RhdGVtYWNoaW5lZW5yaWNobWVudC4qJyksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICB9LFxuICAgIFBvbGljeU5hbWU6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYGVucmljaG1lbnRwb2xpY3kke3BpcGVJZH0uKmApLFxuICAgIFJvbGVzOiBbXG4gICAgICB7XG4gICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgUGlwZVJvbGUke3BpcGVJZH0uKmApXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIEVucmljaG1lbnQ6IHtcbiAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChcInN0YXRlbWFjaGluZWVucmljaG1lbnQuKlwiKVxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Byb3ZpZGUgcmVwbGFjZW1lbnQgTG9nQ29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnbG9nY29uZmlndGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdsb2djb25maWdwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IGN1c3RvbUxvZ0NvbmZpZ3VyYXRpb246IHBpcGVzLkNmblBpcGUuUGlwZUxvZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICBzM0xvZ0Rlc3RpbmF0aW9uOiB7XG4gICAgICBidWNrZXROYW1lOiBuZXcgczMuQnVja2V0KHN0YWNrLCAndGVzdCcpLmJ1Y2tldE5hbWUsXG4gICAgfSxcbiAgICBsZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUlxuICB9O1xuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgbG9nQ29uZmlndXJhdGlvbjogY3VzdG9tTG9nQ29uZmlndXJhdGlvblxuICAgIH1cbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgQ2hlY2tQaXBlU291cmNlQW5kVGFyZ2V0KHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIExldmVsOiBcIkVSUk9SXCIsXG4gICAgICBTM0xvZ0Rlc3RpbmF0aW9uOiB7XG4gICAgICAgIEJ1Y2tldE5hbWU6IHtcbiAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoXCJ0ZXN0LipcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbn0pO1xuXG50ZXN0KCdPdmVycmlkZSB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2xvZ2xldmVsdHRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnbG9nbGV2ZWxwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gTGV2ZWwgaXMgdW5pcXVlIHRvIHRoaXMgdGVzdFxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuRVJST1IsXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IG5vIGxvZ2dpbmcnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ25vbG9ncyc7XG4gIGNvbnN0IHBpcGVJZCA9ICd0ZXN0cGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5PRkZcbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgLy8gT25lIGxvZyBncm91cCBmb3IgdGhlIHN0YXRlIG1hY2hpbmUsIG5vbmUgZm9yIHRoZSBwaXBlXG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpMb2dzOjpMb2dHcm91cCcsIDEpO1xufSk7XG5cbnRlc3QoJ092ZXJyaWRlIGEgc3Vic2V0IG9mIFNRUyBzb3VyY2UgcGFyYW10ZXJzJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdzcmNwYXJhbXRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnc3JjcGFyYW1waXBlJztcbiAgY29uc3QgdGVzdEJhdGNoU2l6ZSA9IDc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgc291cmNlUGFyYW1ldGVyczoge1xuICAgICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBiYXRjaFNpemU6IHRlc3RCYXRjaFNpemUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgIFNxc1F1ZXVlUGFyYW1ldGVyczoge1xuICAgICAgICBCYXRjaFNpemU6IHRlc3RCYXRjaFNpemVcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdQcm92aWRlIHBpcGVMb2dQcm9wcycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAncGlwZWxvZ3Byb3BzdGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdwaXBlbG9ncHJvcHNwaXBlJztcbiAgLy8gV2hpbGUgdGhpcyBpcyBhbiBlbnVtIHdlIG5lZWQgdG8gdXNlLCBpbiB0aGUgdGVtcGxhdGVcbiAgLy8gaXQgaXMgY29udmVydGVkIHRvIGRheXMsIGluIHRoaXMgY2FzZSAxMjBcbiAgY29uc3QgdGVzdFJldGVudGlvbiA9IFJldGVudGlvbkRheXMuRk9VUl9NT05USFM7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBwaXBlTG9nUHJvcHM6IHtcbiAgICAgIHJldGVudGlvbjogdGVzdFJldGVudGlvblxuICAgIH1cbiAgfSk7XG5cbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuICBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlLCBwaXBlSWQpO1xuXG4gIC8vIExvb2sgZm9yIGFkZGl0aW9uYWwgcHJvcGVydHkgd2UgcGFzc2VkIGluIHBpcGVMb2dQcm9wc1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCB7XG4gICAgUmV0ZW50aW9uSW5EYXlzOiAxMjAsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBzb3VyY2UgaW4gQ2ZuUHJvcHMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLnNvdXJjZUFyblxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcHJvdmlkaW5nIHRhcmdldCBpbiBDZm5Qcm9wcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQudGFyZ2V0QXJuLFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcHJvdmlkaW5nIGEgcm9sZUFybicsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIHJvbGVBcm46IFwic29tZS1hcm5cIixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBlbnJpY2htZW50JywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgZW5yaWNobWVudDogXCJmdW5jdGlvbkFyblwiLFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gbG9nIGxldmVsIGFuZCBsb2cgY29uZmlndXJhdGlvbiBhcmUgYm90aCBwcm92aWRlZCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SLFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbjogeyBzb21lOiBcIm9iamVjdFwiIH0sXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgbG9nTGV2ZWwgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwaXBlTG9nUHJvcHMgYW5kIGxvZyBjb25maWd1cmF0aW9uIGFyZSBib3RoIHByb3ZpZGVkJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgcGlwZUxvZ1Byb3BzOiB7IGxvZ0dyb3VwTmFtZTogXCJhbnl2YWx1ZVwiIH0sXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBsb2dDb25maWd1cmF0aW9uOiB7IHNvbWU6IFwib2JqZWN0XCIgfSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBwaXBlTG9nUHJvcHMgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBlbnJpY2htZW50RnVuY3Rpb24gYW5kIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgYXJlIGJvdGggcHJvdmlkZWQnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBlbnJpY2htZW50RnVuY3Rpb246IHsgcGxhY2U6IFwiaG9sZGVyXCIgfSBhcyB1bmtub3duIGFzIGxhbWJkYS5GdW5jdGlvbixcbiAgICAgIGVucmljaG1lbnRTdGF0ZU1hY2hpbmU6IHsgcGxhY2U6IFwiaG9sZGVyXCIgfSBhcyB1bmtub3duIGFzIHNmbi5TdGF0ZU1hY2hpbmVcbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBPbmx5IG9uZSBvZiBlbnJpY2htZW50RnVuY3Rpb24gb3IgZW5yaWNobWVudFN0YXRlTWFjaGluZSBjYW4gYmUgcHJvdmlkZWQnKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwaXBlTG9nUHJvcHMgYW5kIGxvZyBsZXZlbCBpcyBzZXQgdG8gT0ZGJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgbG9nTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuT0ZGLFxuICAgICAgcGlwZUxvZ1Byb3BzOiB7IGxvZ0dyb3VwTmFtZTogXCJhbnl2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgcGlwZUxvZ1Byb3BzIGFuZCBsb2cgbGV2ZWwgT0ZGJyk7XG59KTtcblxudGVzdCgnVGVzdCBhbGwgb2YgQ2hlY2tQaXBlc1Byb3BzJywgKCkgPT4ge1xuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQ2hlY2tQaXBlc1Byb3BzKHtcbiAgICAgIHBpcGVzUHJvcHM6IHsgc291cmNlOiBcInZhbHVlXCIgfSxcbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRG8gbm90IHNldCBzb3VyY2UgaW4gcGlwZXNQcm9wcy4gSXQgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3QuXFxuJyk7XG5cbiAgY29uc3QgYXBwVHdvID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrUGlwZXNQcm9wcyh7XG4gICAgICBwaXBlc1Byb3BzOiB7IHRhcmdldDogXCJ2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwVHdvKS50b1Rocm93RXJyb3IoJ0RvIG5vdCBzZXQgdGFyZ2V0IGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0LlxcbicpO1xuXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTaGFyZWQgc2V0dXAgZnVuY3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5pbnRlcmZhY2UgUHJlcmVxdWlzaXRlcyB7XG4gIHNvdXJjZTogZGVmYXVsdHMuQ3JlYXRlU291cmNlUmVzcG9uc2UsXG4gIHRhcmdldDogZGVmYXVsdHMuQ3JlYXRlVGFyZ2V0UmVzcG9uc2UsXG59XG5cbmZ1bmN0aW9uIENyZWF0ZVByZXJlcXVpc2l0ZXMoc2NvcGU6IFN0YWNrLCBpZDogc3RyaW5nKTogUHJlcmVxdWlzaXRlcyB7XG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc2NvcGUsIGAke2lkfS1zb3VyY2UtcXVldWVgLCB7fSk7XG4gIGNvbnN0IHNxc1NvdXJjZSA9IGRlZmF1bHRzLkNyZWF0ZVNxc1NvdXJjZShidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzY29wZSwgYCR7aWR9LXRhcmdldC1zdGF0ZS1tYWNoaW5lYCwge1xuICAgIHN0YXRlTWFjaGluZVByb3BzOiB7XG4gICAgICBkZWZpbml0aW9uQm9keTogZGVmYXVsdHMuQ3JlYXRlVGVzdFN0YXRlTWFjaGluZURlZmluaXRpb25Cb2R5KHNjb3BlLCBgJHtpZH0tc3RlcHNgKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSwge1xuICAgIHN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnM6IHtcbiAgICAgIGludm9jYXRpb25UeXBlOiAnUkVRVUVTVF9SRVNQT05TRSdcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHNvdXJjZTogc3FzU291cmNlLFxuICAgIHRhcmdldDogc3RhdGVNYWNoaW5lVGFyZ2V0XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIGZ1bmN0aW9ucyB0aGF0IGNoZWNrIGRlZmF1bHQgc2V0dGluZ3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlOiBkZWZhdWx0cy5CdWlsZFBpcGVzUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXM6IFByZXJlcXVpc2l0ZXMpIHtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QocGlwZVJlc3BvbnNlLnBpcGUuc291cmNlKS50b0VxdWFsKHByZXJlcXVpc2l0ZXMuc291cmNlLnNvdXJjZUFybik7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZS50YXJnZXQpLnRvRXF1YWwocHJlcmVxdWlzaXRlcy50YXJnZXQudGFyZ2V0QXJuKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlUm9sZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlUm9sZS5ub2RlKS50b0JlRGVmaW5lZCgpO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZTogVGVtcGxhdGUsXG4gIHBpcGVJZDogc3RyaW5nLFxuICBwcmVyZXF1aXNpdGVJZDogc3RyaW5nXG4pIHtcbiAgQ2hlY2tQaXBlU291cmNlQW5kVGFyZ2V0KHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZUxvZ0NvbmZpZ3VyYXRpb24odGVtcGxhdGUsIHBpcGVJZCk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZTogVGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZToge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgJHtwcmVyZXF1aXNpdGVJZH1zb3VyY2VxdWV1ZS4qYCksXG4gICAgICAgIFwiQXJuXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIFRhcmdldDoge1xuICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBTdGF0ZU1hY2hpbmUke3ByZXJlcXVpc2l0ZUlkfXRhcmdldHN0YXRlbWFjaGluZS4qYCksXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZUxvZ0NvbmZpZ3VyYXRpb24odGVtcGxhdGU6IFRlbXBsYXRlLCBwaXBlSWQ6IHN0cmluZykge1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgQ2xvdWR3YXRjaExvZ3NMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICBMb2dHcm91cEFybjoge1xuICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBMb2dHcm91cCR7cGlwZUlkfS4qYCksXG4gICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZTogVGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7XG4gICAgICAgICAgICBTZXJ2aWNlOiBcInBpcGVzLmFtYXpvbmF3cy5jb21cIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY2llczogW1xuICAgICAge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICBcInNxczpSZWNlaXZlTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIFwic3FzOkRlbGV0ZU1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcInNxczpHZXRRdWV1ZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgJHtwcmVyZXF1aXNpdGVJZH1zb3VyY2VxdWV1ZS4qYCksXG4gICAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInNvdXJjZVBvbGljeVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFwic3RhdGVzOlN0YXJ0RXhlY3V0aW9uXCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgU3RhdGVNYWNoaW5lJHtwcmVyZXF1aXNpdGVJZH10YXJnZXRzdGF0ZW1hY2hpbmUuKmApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgICAgIH0sXG4gICAgICAgIFBvbGljeU5hbWU6IFwidGFyZ2V0UG9saWN5XCJcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCB7XG4gICAgTG9nR3JvdXBOYW1lOiB7XG4gICAgICBcIkZuOjpKb2luXCI6IFtcbiAgICAgICAgXCJcIixcbiAgICAgICAgW1xuICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ1xcL2F3c1xcL3ZlbmRlZGxvZ3NcXC9waXBlc1xcL2NvbnN0cnVjdHMnKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkZuOjpTZWxlY3RcIjogW1xuICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICBNYXRjaC5hbnlWYWx1ZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdXG4gICAgfSxcbiAgfSk7XG59Il19