@jjrawlins/cdk-ami-builder 0.0.18 → 0.0.20

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 (279) hide show
  1. package/.jsii +3 -3
  2. package/cdk-ami-builder/jsii/jsii.go +2 -2
  3. package/cdk-ami-builder/version +1 -1
  4. package/lib/ImagePipeline/ImagePipeline.js +1 -1
  5. package/lib/Lambdas/CheckStateMachineStatus/CheckStateMachineStatus-function.js +1 -1
  6. package/lib/Lambdas/StartStateMachine/StartStateMachine-function.js +1 -1
  7. package/node_modules/cdk-iam-floyd/.claude/settings.local.json +30 -0
  8. package/node_modules/cdk-iam-floyd/CLAUDE.md +147 -0
  9. package/node_modules/cdk-iam-floyd/README.md +4 -4
  10. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.d.ts +62 -14
  11. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/cdk-iam-floyd.js +124 -28
  12. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.d.ts +62 -14
  13. package/node_modules/cdk-iam-floyd/lib/generated/aws-managed-policies/iam-floyd.js +63 -15
  14. package/node_modules/cdk-iam-floyd/lib/generated/index.d.ts +8 -1
  15. package/node_modules/cdk-iam-floyd/lib/generated/index.js +26 -12
  16. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/aioperations.d.ts +25 -0
  17. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/aioperations.js +39 -8
  18. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/amplify.d.ts +0 -6
  19. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/amplify.js +1 -7
  20. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/apigatewaymanagement.d.ts +26 -0
  21. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/apigatewaymanagement.js +31 -1
  22. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/apigatewaymanagementv2.d.ts +169 -5
  23. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/apigatewaymanagementv2.js +203 -8
  24. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appintegrations.d.ts +60 -0
  25. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appintegrations.js +82 -1
  26. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/applicationmigrationservice.d.ts +12 -0
  27. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/applicationmigrationservice.js +13 -1
  28. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/applicationrecoverycontroller-zonalshift.d.ts +35 -0
  29. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/applicationrecoverycontroller-zonalshift.js +42 -1
  30. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appstream2-0.d.ts +15 -15
  31. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appstream2-0.js +22 -22
  32. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appsync.d.ts +1 -1
  33. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/appsync.js +5 -3
  34. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/arcregionswitch.d.ts +277 -0
  35. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/arcregionswitch.js +370 -0
  36. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/artifact.d.ts +10 -25
  37. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/artifact.js +11 -34
  38. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/auditmanager.d.ts +22 -5
  39. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/auditmanager.js +23 -6
  40. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/auroradsql.d.ts +96 -24
  41. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/auroradsql.js +121 -30
  42. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/backup.d.ts +62 -1
  43. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/backup.js +80 -2
  44. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/backupsearch.d.ts +4 -0
  45. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/backupsearch.js +5 -1
  46. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/batch.d.ts +106 -0
  47. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/batch.js +137 -3
  48. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/bedrock.d.ts +471 -0
  49. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/bedrock.js +595 -1
  50. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/bedrockagentcore.d.ts +912 -0
  51. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/bedrockagentcore.js +1203 -0
  52. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billing.d.ts +6 -0
  53. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billing.js +10 -1
  54. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billingandcostmanagementdashboards.d.ts +122 -0
  55. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billingandcostmanagementdashboards.js +165 -0
  56. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billingandcostmanagementrecommendedactions.d.ts +25 -0
  57. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/billingandcostmanagementrecommendedactions.js +36 -0
  58. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/braket.d.ts +6 -6
  59. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/braket.js +7 -10
  60. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/budgetservice.d.ts +6 -0
  61. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/budgetservice.js +7 -1
  62. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/certificatemanager.d.ts +30 -1
  63. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/certificatemanager.js +36 -2
  64. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/chatbot.d.ts +128 -1
  65. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/chatbot.js +134 -1
  66. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cleanrooms.d.ts +56 -0
  67. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cleanrooms.js +72 -1
  68. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cleanroomsml.d.ts +14 -0
  69. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cleanroomsml.js +18 -1
  70. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloud9.d.ts +6 -8
  71. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloud9.js +8 -13
  72. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudmap.d.ts +57 -0
  73. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudmap.js +69 -1
  74. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudtrail.d.ts +20 -0
  75. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudtrail.js +27 -1
  76. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatch.d.ts +8 -0
  77. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatch.js +12 -1
  78. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatchlogs.d.ts +8 -0
  79. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatchlogs.js +12 -1
  80. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatchobservabilityadminservice.d.ts +200 -9
  81. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cloudwatchobservabilityadminservice.js +258 -14
  82. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/codebuild.d.ts +1909 -4
  83. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/codebuild.js +2131 -6
  84. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/codepipeline.d.ts +8 -0
  85. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/codepipeline.js +12 -1
  86. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cognitouserpools.d.ts +8 -0
  87. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/cognitouserpools.js +12 -1
  88. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connect.d.ts +44 -0
  89. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connect.js +52 -1
  90. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectcases.d.ts +9 -1
  91. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectcases.js +13 -2
  92. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectcustomerprofiles.d.ts +106 -0
  93. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectcustomerprofiles.js +142 -1
  94. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectoutboundcampaigns.d.ts +16 -0
  95. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/connectoutboundcampaigns.js +23 -1
  96. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/controlcatalog.d.ts +8 -0
  97. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/controlcatalog.js +12 -1
  98. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/costandusagereport.d.ts +3 -0
  99. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/costandusagereport.js +4 -1
  100. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/costexplorerservice.d.ts +24 -0
  101. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/costexplorerservice.js +31 -1
  102. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/dataexchange.d.ts +16 -0
  103. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/dataexchange.js +17 -1
  104. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/datazone.d.ts +57 -3
  105. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/datazone.js +89 -8
  106. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/deadlinecloud.d.ts +17 -0
  107. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/deadlinecloud.js +18 -1
  108. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/directoryservice.d.ts +142 -0
  109. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/directoryservice.js +173 -1
  110. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/dynamodb.d.ts +16 -0
  111. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/dynamodb.js +23 -1
  112. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/ec2.d.ts +521 -17
  113. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/ec2.js +580 -29
  114. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/ec2imagebuilder.d.ts +147 -62
  115. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/ec2imagebuilder.js +155 -70
  116. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticblockstore.d.ts +2 -2
  117. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticblockstore.js +4 -4
  118. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticcontainerservice.d.ts +1 -30
  119. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticcontainerservice.js +2 -31
  120. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elastickubernetesservice.d.ts +47 -0
  121. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elastickubernetesservice.js +62 -1
  122. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticloadbalancing.d.ts +1 -1
  123. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticloadbalancing.js +2 -2
  124. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticmapreduce.d.ts +8 -0
  125. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elasticmapreduce.js +12 -1
  126. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elementalmediaconnect.d.ts +55 -55
  127. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elementalmediaconnect.js +56 -56
  128. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elementalmediaconvert.d.ts +8 -0
  129. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/elementalmediaconvert.js +12 -1
  130. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/emroneksemrcontainers.d.ts +2 -13
  131. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/emroneksemrcontainers.js +3 -16
  132. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/emrserverless.d.ts +8 -0
  133. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/emrserverless.js +12 -1
  134. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/endusermessagingsocial.d.ts +64 -0
  135. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/endusermessagingsocial.js +91 -3
  136. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/entityresolution.d.ts +8 -0
  137. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/entityresolution.js +12 -1
  138. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/eventbridge.d.ts +30 -0
  139. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/eventbridge.js +38 -1
  140. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/freetier.d.ts +32 -0
  141. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/freetier.js +48 -2
  142. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/fsx.d.ts +32 -0
  143. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/fsx.js +42 -1
  144. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/glue.d.ts +249 -0
  145. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/glue.js +264 -1
  146. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/gluedatabrew.d.ts +16 -0
  147. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/gluedatabrew.js +17 -1
  148. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/guardduty.d.ts +138 -0
  149. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/guardduty.js +175 -3
  150. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthimaging.d.ts +56 -0
  151. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/healthimaging.js +78 -1
  152. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iamidentitycenter.d.ts +24 -51
  153. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iamidentitycenter.js +31 -70
  154. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/identityandaccessmanagementiam.d.ts +40 -0
  155. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/identityandaccessmanagementiam.js +45 -1
  156. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/inspector2.d.ts +179 -0
  157. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/inspector2.js +232 -1
  158. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/interactivevideoservice.d.ts +30 -0
  159. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/interactivevideoservice.js +40 -1
  160. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iot.d.ts +32 -4
  161. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iot.js +46 -9
  162. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotfleetwise.d.ts +0 -32
  163. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotfleetwise.js +1 -39
  164. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotmanagedintegrations.d.ts +42 -0
  165. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotmanagedintegrations.js +47 -1
  166. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotsitewise.d.ts +133 -0
  167. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/iotsitewise.js +178 -1
  168. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/keymanagementservice.d.ts +1 -1
  169. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/keymanagementservice.js +2 -2
  170. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/keyspacesforapachecassandra.d.ts +51 -2
  171. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/keyspacesforapachecassandra.js +68 -3
  172. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/kinesisdatastreams.d.ts +4 -0
  173. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/kinesisdatastreams.js +5 -1
  174. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/lexv2.d.ts +16 -0
  175. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/lexv2.js +23 -1
  176. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/managedserviceforprometheus.d.ts +129 -45
  177. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/managedserviceforprometheus.js +151 -46
  178. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/marketplacecatalog.d.ts +0 -32
  179. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/marketplacecatalog.js +3 -47
  180. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/marketplacemeteringservice.d.ts +4 -4
  181. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/marketplacemeteringservice.js +5 -5
  182. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/memorydb.d.ts +12 -0
  183. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/memorydb.js +16 -1
  184. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/mq.d.ts +6 -0
  185. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/mq.js +10 -1
  186. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/multi-partyapproval.d.ts +6 -6
  187. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/multi-partyapproval.js +10 -10
  188. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/neptuneanalytics.d.ts +28 -0
  189. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/neptuneanalytics.js +35 -1
  190. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/networkfirewall.d.ts +123 -3
  191. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/networkfirewall.js +163 -5
  192. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/opensearchserverless.d.ts +38 -6
  193. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/opensearchserverless.js +51 -7
  194. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/organizations.d.ts +29 -5
  195. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/organizations.js +36 -6
  196. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/outposts.d.ts +14 -0
  197. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/outposts.js +18 -1
  198. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/parallelcomputingservice.d.ts +5 -5
  199. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/parallelcomputingservice.js +6 -6
  200. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/partnercentralselling.d.ts +18 -16
  201. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/partnercentralselling.js +19 -17
  202. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/qbusiness.d.ts +87 -52
  203. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/qbusiness.js +114 -73
  204. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/qbusinessqapps.d.ts +0 -50
  205. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/qbusinessqapps.js +1 -60
  206. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/quicksight.d.ts +25 -20
  207. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/quicksight.js +35 -23
  208. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/rds.d.ts +59 -1
  209. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/rds.js +65 -2
  210. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/redshift.d.ts +0 -4
  211. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/redshift.js +1 -5
  212. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/repostprivate.d.ts +48 -0
  213. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/repostprivate.js +67 -1
  214. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/resourceexplorer.d.ts +2 -2
  215. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/resourceexplorer.js +7 -5
  216. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3.d.ts +187 -175
  217. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3.js +202 -176
  218. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3express.d.ts +151 -2
  219. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3express.js +174 -4
  220. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3glacier.d.ts +2 -31
  221. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3glacier.js +3 -36
  222. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3vectors.d.ts +202 -0
  223. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/s3vectors.js +272 -0
  224. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/sagemaker.d.ts +197 -1
  225. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/sagemaker.js +241 -2
  226. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/sagemakerwithmlflow.d.ts +54 -0
  227. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/sagemakerwithmlflow.js +83 -2
  228. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/savingsplans.d.ts +1 -1
  229. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/savingsplans.js +2 -2
  230. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/secretsmanager.d.ts +22 -22
  231. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/secretsmanager.js +23 -23
  232. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securityhub.d.ts +295 -6
  233. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securityhub.js +375 -7
  234. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securityincidentresponse.d.ts +2 -1
  235. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securityincidentresponse.js +3 -2
  236. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securitylake.d.ts +4 -0
  237. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securitylake.js +5 -1
  238. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securitytokenservice.d.ts +10 -0
  239. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/securitytokenservice.js +13 -1
  240. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/service-oracledatabase-aws.d.ts +548 -0
  241. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/service-oracledatabase-aws.js +718 -0
  242. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/serviceformanagingawsconsoleuserexperiencecapabilities-.d.ts +41 -0
  243. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/serviceformanagingawsconsoleuserexperiencecapabilities-.js +60 -0
  244. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/servicequotas.d.ts +8 -0
  245. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/servicequotas.js +12 -1
  246. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/shield.d.ts +24 -0
  247. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/shield.js +34 -1
  248. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/shieldnetworksecuritydirector.d.ts +89 -0
  249. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/shieldnetworksecuritydirector.js +128 -0
  250. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/simpleemailservicev2.d.ts +211 -0
  251. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/simpleemailservicev2.js +256 -3
  252. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/snowdevicemanagement.d.ts +4 -0
  253. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/snowdevicemanagement.js +5 -1
  254. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/support.d.ts +24 -0
  255. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/support.js +35 -2
  256. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/systemsmanager.d.ts +27 -0
  257. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/systemsmanager.js +32 -1
  258. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/systemsmanagerforsap.d.ts +51 -3
  259. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/systemsmanagerforsap.js +76 -8
  260. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/transcribe.d.ts +27 -1
  261. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/transcribe.js +28 -2
  262. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/transform.d.ts +93 -8
  263. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/transform.js +117 -9
  264. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/usernotifications.d.ts +34 -2
  265. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/usernotifications.js +51 -5
  266. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/vpclattice.d.ts +6 -0
  267. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/vpclattice.js +10 -1
  268. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspaces.d.ts +83 -0
  269. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspaces.js +113 -1
  270. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspacessecurebrowser.d.ts +77 -0
  271. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspacessecurebrowser.js +101 -1
  272. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspacesthinclient.d.ts +1 -0
  273. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/workspacesthinclient.js +2 -1
  274. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/x-ray.d.ts +35 -1
  275. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/x-ray.js +40 -2
  276. package/node_modules/cdk-iam-floyd/package.json +10 -10
  277. package/package.json +2 -2
  278. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/supportrecommendations.d.ts +0 -33
  279. package/node_modules/cdk-iam-floyd/lib/generated/policy-statements/supportrecommendations.js +0 -47
@@ -0,0 +1,718 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Odb = void 0;
4
+ const shared_1 = require("../../shared");
5
+ /**
6
+ * Statement provider for service [odb](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservice-oracledatabase_aws.html).
7
+ *
8
+ * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
9
+ */
10
+ class Odb extends shared_1.PolicyStatement {
11
+ /**
12
+ * Grants permission to register the Amazon Web Services Marketplace token for your Amazon Web Services account to activate your Oracle Database@Amazon Web Services subscription
13
+ *
14
+ * Access Level: Write
15
+ *
16
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_AcceptMarketplaceRegistration.html
17
+ */
18
+ toAcceptMarketplaceRegistration() {
19
+ return this.to('AcceptMarketplaceRegistration');
20
+ }
21
+ /**
22
+ * Grants permission to create a new Autonomous VM cluster in the specified Exadata infrastructure
23
+ *
24
+ * Access Level: Write
25
+ *
26
+ * Possible conditions:
27
+ * - .ifAwsRequestTag()
28
+ * - .ifAwsTagKeys()
29
+ *
30
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudAutonomousVmCluster.html
31
+ */
32
+ toCreateCloudAutonomousVmCluster() {
33
+ return this.to('CreateCloudAutonomousVmCluster');
34
+ }
35
+ /**
36
+ * Grants permission to create an Exadata infrastructure
37
+ *
38
+ * Access Level: Write
39
+ *
40
+ * Possible conditions:
41
+ * - .ifAwsRequestTag()
42
+ * - .ifAwsTagKeys()
43
+ *
44
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudExadataInfrastructure.html
45
+ */
46
+ toCreateCloudExadataInfrastructure() {
47
+ return this.to('CreateCloudExadataInfrastructure');
48
+ }
49
+ /**
50
+ * Grants permission to create a VM cluster on the specified Exadata infrastructure
51
+ *
52
+ * Access Level: Write
53
+ *
54
+ * Possible conditions:
55
+ * - .ifAwsRequestTag()
56
+ * - .ifAwsTagKeys()
57
+ *
58
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateCloudVmCluster.html
59
+ */
60
+ toCreateCloudVmCluster() {
61
+ return this.to('CreateCloudVmCluster');
62
+ }
63
+ /**
64
+ * Grants permission to create a DB Node
65
+ *
66
+ * Access Level: Write
67
+ */
68
+ toCreateDbNode() {
69
+ return this.to('CreateDbNode');
70
+ }
71
+ /**
72
+ * Grants permission to create an ODB network
73
+ *
74
+ * Access Level: Write
75
+ *
76
+ * Possible conditions:
77
+ * - .ifAwsRequestTag()
78
+ * - .ifAwsTagKeys()
79
+ *
80
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateOdbNetwork.html
81
+ */
82
+ toCreateOdbNetwork() {
83
+ return this.to('CreateOdbNetwork');
84
+ }
85
+ /**
86
+ * Grants permission to create an ODB Peering Connection
87
+ *
88
+ * Access Level: Write
89
+ *
90
+ * Possible conditions:
91
+ * - .ifAwsRequestTag()
92
+ * - .ifAwsTagKeys()
93
+ *
94
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CreateOdbPeeringConnection.html
95
+ */
96
+ toCreateOdbPeeringConnection() {
97
+ return this.to('CreateOdbPeeringConnection');
98
+ }
99
+ /**
100
+ * Grants permission to create an Outbound Integration
101
+ *
102
+ * Access Level: Write
103
+ */
104
+ toCreateOutboundIntegration() {
105
+ return this.to('CreateOutboundIntegration');
106
+ }
107
+ /**
108
+ * Grants permission to Deletes an Autonomous VM cluster
109
+ *
110
+ * Access Level: Write
111
+ *
112
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudAutonomousVmCluster.html
113
+ */
114
+ toDeleteCloudAutonomousVmCluster() {
115
+ return this.to('DeleteCloudAutonomousVmCluster');
116
+ }
117
+ /**
118
+ * Grants permission to delete a specified Exadata infrastructure. Before you use this operation, make sure to delete all of the VM clusters that are hosted on this Exadata infrastructure
119
+ *
120
+ * Access Level: Write
121
+ *
122
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudExadataInfrastructure.html
123
+ */
124
+ toDeleteCloudExadataInfrastructure() {
125
+ return this.to('DeleteCloudExadataInfrastructure');
126
+ }
127
+ /**
128
+ * Grants permission to delete a specified VM cluster
129
+ *
130
+ * Access Level: Write
131
+ *
132
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteCloudVmCluster.html
133
+ */
134
+ toDeleteCloudVmCluster() {
135
+ return this.to('DeleteCloudVmCluster');
136
+ }
137
+ /**
138
+ * Grants permission to delete a DB Node
139
+ *
140
+ * Access Level: Write
141
+ */
142
+ toDeleteDbNode() {
143
+ return this.to('DeleteDbNode');
144
+ }
145
+ /**
146
+ * Grants permission to delete the specified ODB network
147
+ *
148
+ * Access Level: Write
149
+ *
150
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteOdbNetwork.html
151
+ */
152
+ toDeleteOdbNetwork() {
153
+ return this.to('DeleteOdbNetwork');
154
+ }
155
+ /**
156
+ * Grants permission to delete the specified ODB Peering Connection. When you delete an ODB peering connection, the underlying VPC peering connection is also deleted
157
+ *
158
+ * Access Level: Write
159
+ *
160
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DeleteOdbPeeringConnection.html
161
+ */
162
+ toDeleteOdbPeeringConnection() {
163
+ return this.to('DeleteOdbPeeringConnection');
164
+ }
165
+ /**
166
+ * Grants permission to delete a resource policy
167
+ *
168
+ * Access Level: Write
169
+ */
170
+ toDeleteResourcePolicy() {
171
+ return this.to('DeleteResourcePolicy');
172
+ }
173
+ /**
174
+ * Grants permission to get information about a specific Autonomous VM cluster
175
+ *
176
+ * Access Level: Read
177
+ *
178
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudAutonomousVmCluster.html
179
+ */
180
+ toGetCloudAutonomousVmCluster() {
181
+ return this.to('GetCloudAutonomousVmCluster');
182
+ }
183
+ /**
184
+ * Grants permission to get information about the specified Exadata infrastructure
185
+ *
186
+ * Access Level: Read
187
+ *
188
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudExadataInfrastructure.html
189
+ */
190
+ toGetCloudExadataInfrastructure() {
191
+ return this.to('GetCloudExadataInfrastructure');
192
+ }
193
+ /**
194
+ * Grants permission to retrieve information about unallocated resources in a specified Cloud Exadata Infrastructure
195
+ *
196
+ * Access Level: Read
197
+ *
198
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudExadataInfrastructureUnallocatedResources.html
199
+ */
200
+ toGetCloudExadataInfrastructureUnallocatedResources() {
201
+ return this.to('GetCloudExadataInfrastructureUnallocatedResources');
202
+ }
203
+ /**
204
+ * Grants permission to get information about the specified VM cluster
205
+ *
206
+ * Access Level: Read
207
+ *
208
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetCloudVmCluster.html
209
+ */
210
+ toGetCloudVmCluster() {
211
+ return this.to('GetCloudVmCluster');
212
+ }
213
+ /**
214
+ * Grants permission to get information about the specified DB node
215
+ *
216
+ * Access Level: Read
217
+ *
218
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetDbNode.html
219
+ */
220
+ toGetDbNode() {
221
+ return this.to('GetDbNode');
222
+ }
223
+ /**
224
+ * Grants permission to get information about the specified database server
225
+ *
226
+ * Access Level: Read
227
+ *
228
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetDbServer.html
229
+ */
230
+ toGetDbServer() {
231
+ return this.to('GetDbServer');
232
+ }
233
+ /**
234
+ * Grants permission to get the tenancy activation link and onboarding status for your Amazon Web Services account
235
+ *
236
+ * Access Level: Read
237
+ *
238
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOciOnboardingStatus.html
239
+ */
240
+ toGetOciOnboardingStatus() {
241
+ return this.to('GetOciOnboardingStatus');
242
+ }
243
+ /**
244
+ * Grants permission to get information about the specified ODB network
245
+ *
246
+ * Access Level: Read
247
+ *
248
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOdbNetwork.html
249
+ */
250
+ toGetOdbNetwork() {
251
+ return this.to('GetOdbNetwork');
252
+ }
253
+ /**
254
+ * Grants permission to get information about the specified ODB Peering connection
255
+ *
256
+ * Access Level: Read
257
+ *
258
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_GetOdbPeeringConnection.html
259
+ */
260
+ toGetOdbPeeringConnection() {
261
+ return this.to('GetOdbPeeringConnection');
262
+ }
263
+ /**
264
+ * Grants permission to get a resource policy
265
+ *
266
+ * Access Level: Read
267
+ */
268
+ toGetResourcePolicy() {
269
+ return this.to('GetResourcePolicy');
270
+ }
271
+ /**
272
+ * Grants permission to initialize the ODB service for the first time in an account
273
+ *
274
+ * Access Level: Write
275
+ *
276
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_InitializeService.html
277
+ */
278
+ toInitializeService() {
279
+ return this.to('InitializeService');
280
+ }
281
+ /**
282
+ * Grants permission to list all Autonomous VMs in an Autonomous VM cluster
283
+ *
284
+ * Access Level: Read
285
+ *
286
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListAutonomousVirtualMachines.html
287
+ */
288
+ toListAutonomousVirtualMachines() {
289
+ return this.to('ListAutonomousVirtualMachines');
290
+ }
291
+ /**
292
+ * Grants permission to list all Autonomous VM clusters in a specified Cloud Exadata infrastructure
293
+ *
294
+ * Access Level: List
295
+ *
296
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudAutonomousVmClusters.html
297
+ */
298
+ toListCloudAutonomousVmClusters() {
299
+ return this.to('ListCloudAutonomousVmClusters');
300
+ }
301
+ /**
302
+ * Grants permission to list information about the Exadata infrastructures owned by your Amazon Web Services account
303
+ *
304
+ * Access Level: List
305
+ *
306
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudExadataInfrastructures.html
307
+ */
308
+ toListCloudExadataInfrastructures() {
309
+ return this.to('ListCloudExadataInfrastructures');
310
+ }
311
+ /**
312
+ * Grants permission to list information about the VM clusters owned by your Amazon Web Services account or only the ones on the specified Exadata infrastructure
313
+ *
314
+ * Access Level: List
315
+ *
316
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListCloudVmClusters.html
317
+ */
318
+ toListCloudVmClusters() {
319
+ return this.to('ListCloudVmClusters');
320
+ }
321
+ /**
322
+ * Grants permission to list information about the DB nodes for the specified VM cluster
323
+ *
324
+ * Access Level: List
325
+ *
326
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbNodes.html
327
+ */
328
+ toListDbNodes() {
329
+ return this.to('ListDbNodes');
330
+ }
331
+ /**
332
+ * Grants permission to list information about the database servers that belong to the specified Exadata infrastructure
333
+ *
334
+ * Access Level: Read
335
+ *
336
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbServers.html
337
+ */
338
+ toListDbServers() {
339
+ return this.to('ListDbServers');
340
+ }
341
+ /**
342
+ * Grants permission to list information about the shapes that are available for an Exadata infrastructure
343
+ *
344
+ * Access Level: Read
345
+ *
346
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListDbSystemShapes.html
347
+ */
348
+ toListDbSystemShapes() {
349
+ return this.to('ListDbSystemShapes');
350
+ }
351
+ /**
352
+ * Grants permission to list information about Oracle Grid Infrastructure (GI) software versions that are available for a VM cluster for the specified shape
353
+ *
354
+ * Access Level: Read
355
+ *
356
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListGiVersions.html
357
+ */
358
+ toListGiVersions() {
359
+ return this.to('ListGiVersions');
360
+ }
361
+ /**
362
+ * Grants permission to list information about the ODB networks owned by your Amazon Web Services account
363
+ *
364
+ * Access Level: List
365
+ *
366
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListOdbNetworks.html
367
+ */
368
+ toListOdbNetworks() {
369
+ return this.to('ListOdbNetworks');
370
+ }
371
+ /**
372
+ * Grants permission to list all ODB peering connections or those associated with a specific ODB network
373
+ *
374
+ * Access Level: List
375
+ *
376
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListOdbPeeringConnections.html
377
+ */
378
+ toListOdbPeeringConnections() {
379
+ return this.to('ListOdbPeeringConnections');
380
+ }
381
+ /**
382
+ * Grants permission to list information about the system versions that are available for a VM cluster for the specified giVersion and shape
383
+ *
384
+ * Access Level: Read
385
+ *
386
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListSystemVersions.html
387
+ */
388
+ toListSystemVersions() {
389
+ return this.to('ListSystemVersions');
390
+ }
391
+ /**
392
+ * Grants permission to list information about the tags applied to this resource
393
+ *
394
+ * Access Level: Read
395
+ *
396
+ * Possible conditions:
397
+ * - .ifAwsResourceTag()
398
+ *
399
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_ListTagsForResource.html
400
+ */
401
+ toListTagsForResource() {
402
+ return this.to('ListTagsForResource');
403
+ }
404
+ /**
405
+ * Grants permission to update a resource policy
406
+ *
407
+ * Access Level: Write
408
+ */
409
+ toPutResourcePolicy() {
410
+ return this.to('PutResourcePolicy');
411
+ }
412
+ /**
413
+ * Grants permission to reboot the specified DB node in a VM cluster
414
+ *
415
+ * Access Level: Write
416
+ *
417
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_RebootDbNode.html
418
+ */
419
+ toRebootDbNode() {
420
+ return this.to('RebootDbNode');
421
+ }
422
+ /**
423
+ * Grants permission to start the specified DB node in a VM cluster
424
+ *
425
+ * Access Level: Write
426
+ *
427
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_StartDbNode.html
428
+ */
429
+ toStartDbNode() {
430
+ return this.to('StartDbNode');
431
+ }
432
+ /**
433
+ * Grants permission to stop the specified DB node in a VM cluster
434
+ *
435
+ * Access Level: Write
436
+ *
437
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_StopDbNode.html
438
+ */
439
+ toStopDbNode() {
440
+ return this.to('StopDbNode');
441
+ }
442
+ /**
443
+ * Grants permission to apply tags to the specified resource
444
+ *
445
+ * Access Level: Tagging
446
+ *
447
+ * Possible conditions:
448
+ * - .ifAwsRequestTag()
449
+ * - .ifAwsResourceTag()
450
+ * - .ifAwsTagKeys()
451
+ *
452
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_TagResource.html
453
+ */
454
+ toTagResource() {
455
+ return this.to('TagResource');
456
+ }
457
+ /**
458
+ * Grants permission to remove tags from the specified resource
459
+ *
460
+ * Access Level: Tagging
461
+ *
462
+ * Possible conditions:
463
+ * - .ifAwsResourceTag()
464
+ * - .ifAwsTagKeys()
465
+ *
466
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_UntagResource.html
467
+ */
468
+ toUntagResource() {
469
+ return this.to('UntagResource');
470
+ }
471
+ /**
472
+ * Grants permission to update the properties of an Exadata infrastructure resource
473
+ *
474
+ * Access Level: Write
475
+ *
476
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_UpdateCloudExadataInfrastructure.html
477
+ */
478
+ toUpdateCloudExadataInfrastructure() {
479
+ return this.to('UpdateCloudExadataInfrastructure');
480
+ }
481
+ /**
482
+ * Grants permission to update properties of a specified ODB network
483
+ *
484
+ * Access Level: Write
485
+ *
486
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_UpdateOdbNetwork.html
487
+ */
488
+ toUpdateOdbNetwork() {
489
+ return this.to('UpdateOdbNetwork');
490
+ }
491
+ /**
492
+ * Adds a resource of type cloud-autonomous-vm-cluster to the statement
493
+ *
494
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudAutonomousVmCluster.html
495
+ *
496
+ * @param cloudAutonomousVmClusterId - Identifier for the cloudAutonomousVmClusterId.
497
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
498
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
499
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
500
+ *
501
+ * Possible conditions:
502
+ * - .ifAwsResourceTag()
503
+ */
504
+ onCloudAutonomousVmCluster(cloudAutonomousVmClusterId, account, region, partition) {
505
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-autonomous-vm-cluster/${cloudAutonomousVmClusterId}`);
506
+ }
507
+ /**
508
+ * Adds a resource of type cloud-exadata-infrastructure to the statement
509
+ *
510
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudExadataInfrastructure.html
511
+ *
512
+ * @param cloudExadataInfrastructureId - Identifier for the cloudExadataInfrastructureId.
513
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
514
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
515
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
516
+ *
517
+ * Possible conditions:
518
+ * - .ifAwsResourceTag()
519
+ */
520
+ onCloudExadataInfrastructure(cloudExadataInfrastructureId, account, region, partition) {
521
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-exadata-infrastructure/${cloudExadataInfrastructureId}`);
522
+ }
523
+ /**
524
+ * Adds a resource of type cloud-vm-cluster to the statement
525
+ *
526
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_CloudVmCluster.html
527
+ *
528
+ * @param cloudVmClusterId - Identifier for the cloudVmClusterId.
529
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
530
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
531
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
532
+ *
533
+ * Possible conditions:
534
+ * - .ifAwsResourceTag()
535
+ */
536
+ onCloudVmCluster(cloudVmClusterId, account, region, partition) {
537
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:cloud-vm-cluster/${cloudVmClusterId}`);
538
+ }
539
+ /**
540
+ * Adds a resource of type db-node to the statement
541
+ *
542
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_DbNode.html
543
+ *
544
+ * @param dbNodeId - Identifier for the dbNodeId.
545
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
546
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
547
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
548
+ *
549
+ * Possible conditions:
550
+ * - .ifAwsResourceTag()
551
+ */
552
+ onDbNode(dbNodeId, account, region, partition) {
553
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:db-node/${dbNodeId}`);
554
+ }
555
+ /**
556
+ * Adds a resource of type odb-network to the statement
557
+ *
558
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_OdbNetwork.html
559
+ *
560
+ * @param odbNetworkId - Identifier for the odbNetworkId.
561
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
562
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
563
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
564
+ *
565
+ * Possible conditions:
566
+ * - .ifAwsResourceTag()
567
+ */
568
+ onOdbNetwork(odbNetworkId, account, region, partition) {
569
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:odb-network/${odbNetworkId}`);
570
+ }
571
+ /**
572
+ * Adds a resource of type odb-peering-connection to the statement
573
+ *
574
+ * https://docs.aws.amazon.com/odb/latest/APIReference/API_OdbPeeringConnection.html
575
+ *
576
+ * @param odbPeeringConnectionId - Identifier for the odbPeeringConnectionId.
577
+ * @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
578
+ * @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
579
+ * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
580
+ *
581
+ * Possible conditions:
582
+ * - .ifAwsResourceTag()
583
+ */
584
+ onOdbPeeringConnection(odbPeeringConnectionId, account, region, partition) {
585
+ return this.on(`arn:${partition ?? this.defaultPartition}:odb:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:odb-peering-connection/${odbPeeringConnectionId}`);
586
+ }
587
+ /**
588
+ * Filters access by a tag key and value pair that is allowed in the request
589
+ *
590
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
591
+ *
592
+ * Applies to actions:
593
+ * - .toCreateCloudAutonomousVmCluster()
594
+ * - .toCreateCloudExadataInfrastructure()
595
+ * - .toCreateCloudVmCluster()
596
+ * - .toCreateOdbNetwork()
597
+ * - .toCreateOdbPeeringConnection()
598
+ * - .toTagResource()
599
+ *
600
+ * @param tagKey The tag key to check
601
+ * @param value The value(s) to check
602
+ * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
603
+ */
604
+ ifAwsRequestTag(tagKey, value, operator) {
605
+ return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike');
606
+ }
607
+ /**
608
+ * Filters access by a tag key and value pair of a resource
609
+ *
610
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
611
+ *
612
+ * Applies to actions:
613
+ * - .toListTagsForResource()
614
+ * - .toTagResource()
615
+ * - .toUntagResource()
616
+ *
617
+ * Applies to resource types:
618
+ * - cloud-autonomous-vm-cluster
619
+ * - cloud-exadata-infrastructure
620
+ * - cloud-vm-cluster
621
+ * - db-node
622
+ * - odb-network
623
+ * - odb-peering-connection
624
+ *
625
+ * @param tagKey The tag key to check
626
+ * @param value The value(s) to check
627
+ * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
628
+ */
629
+ ifAwsResourceTag(tagKey, value, operator) {
630
+ return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike');
631
+ }
632
+ /**
633
+ * Filters access by a list of tag keys that are allowed in the request
634
+ *
635
+ * https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
636
+ *
637
+ * Applies to actions:
638
+ * - .toCreateCloudAutonomousVmCluster()
639
+ * - .toCreateCloudExadataInfrastructure()
640
+ * - .toCreateCloudVmCluster()
641
+ * - .toCreateOdbNetwork()
642
+ * - .toCreateOdbPeeringConnection()
643
+ * - .toTagResource()
644
+ * - .toUntagResource()
645
+ *
646
+ * @param value The value(s) to check
647
+ * @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
648
+ */
649
+ ifAwsTagKeys(value, operator) {
650
+ return this.if(`aws:TagKeys`, value, operator ?? 'StringLike');
651
+ }
652
+ /**
653
+ * Statement provider for service [odb](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsservice-oracledatabase_aws.html).
654
+ *
655
+ */
656
+ constructor(props) {
657
+ super(props);
658
+ this.servicePrefix = 'odb';
659
+ this.accessLevelList = {
660
+ Write: [
661
+ 'AcceptMarketplaceRegistration',
662
+ 'CreateCloudAutonomousVmCluster',
663
+ 'CreateCloudExadataInfrastructure',
664
+ 'CreateCloudVmCluster',
665
+ 'CreateDbNode',
666
+ 'CreateOdbNetwork',
667
+ 'CreateOdbPeeringConnection',
668
+ 'CreateOutboundIntegration',
669
+ 'DeleteCloudAutonomousVmCluster',
670
+ 'DeleteCloudExadataInfrastructure',
671
+ 'DeleteCloudVmCluster',
672
+ 'DeleteDbNode',
673
+ 'DeleteOdbNetwork',
674
+ 'DeleteOdbPeeringConnection',
675
+ 'DeleteResourcePolicy',
676
+ 'InitializeService',
677
+ 'PutResourcePolicy',
678
+ 'RebootDbNode',
679
+ 'StartDbNode',
680
+ 'StopDbNode',
681
+ 'UpdateCloudExadataInfrastructure',
682
+ 'UpdateOdbNetwork'
683
+ ],
684
+ Read: [
685
+ 'GetCloudAutonomousVmCluster',
686
+ 'GetCloudExadataInfrastructure',
687
+ 'GetCloudExadataInfrastructureUnallocatedResources',
688
+ 'GetCloudVmCluster',
689
+ 'GetDbNode',
690
+ 'GetDbServer',
691
+ 'GetOciOnboardingStatus',
692
+ 'GetOdbNetwork',
693
+ 'GetOdbPeeringConnection',
694
+ 'GetResourcePolicy',
695
+ 'ListAutonomousVirtualMachines',
696
+ 'ListDbServers',
697
+ 'ListDbSystemShapes',
698
+ 'ListGiVersions',
699
+ 'ListSystemVersions',
700
+ 'ListTagsForResource'
701
+ ],
702
+ List: [
703
+ 'ListCloudAutonomousVmClusters',
704
+ 'ListCloudExadataInfrastructures',
705
+ 'ListCloudVmClusters',
706
+ 'ListDbNodes',
707
+ 'ListOdbNetworks',
708
+ 'ListOdbPeeringConnections'
709
+ ],
710
+ Tagging: [
711
+ 'TagResource',
712
+ 'UntagResource'
713
+ ]
714
+ };
715
+ }
716
+ }
717
+ exports.Odb = Odb;
718
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1vcmFjbGVkYXRhYmFzZS1hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZXJ2aWNlLW9yYWNsZWRhdGFiYXNlLWF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFHekQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLHdCQUFlO0lBR3RDOzs7Ozs7T0FNRztJQUNJLCtCQUErQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGdDQUFnQztRQUNyQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLGtDQUFrQztRQUN2QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLHNCQUFzQjtRQUMzQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksNEJBQTRCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksMkJBQTJCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7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c0JBQXNCO2dCQUN0QixjQUFjO2dCQUNkLGtCQUFrQjtnQkFDbEIsNEJBQTRCO2dCQUM1QixzQkFBc0I7Z0JBQ3RCLG1CQUFtQjtnQkFDbkIsbUJBQW1CO2dCQUNuQixjQUFjO2dCQUNkLGFBQWE7Z0JBQ2IsWUFBWTtnQkFDWixrQ0FBa0M7Z0JBQ2xDLGtCQUFrQjthQUNuQjtZQUNELElBQUksRUFBRTtnQkFDSiw2QkFBNkI7Z0JBQzdCLCtCQUErQjtnQkFDL0IsbURBQW1EO2dCQUNuRCxtQkFBbUI7Z0JBQ25CLFdBQVc7Z0JBQ1gsYUFBYTtnQkFDYix3QkFBd0I7Z0JBQ3hCLGVBQWU7Z0JBQ2YseUJBQXlCO2dCQUN6QixtQkFBbUI7Z0JBQ25CLCtCQUErQjtnQkFDL0IsZUFBZTtnQkFDZixvQkFBb0I7Z0JBQ3BCLGdCQUFnQjtnQkFDaEIsb0JBQW9CO2dCQUNwQixxQkFBcUI7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osK0JBQStCO2dCQUMvQixpQ0FBaUM7Z0JBQ2pDLHFCQUFxQjtnQkFDckIsYUFBYTtnQkFDYixpQkFBaUI7Z0JBQ2pCLDJCQUEyQjthQUM1QjtZQUNELE9BQU8sRUFBRTtnQkFDUCxhQUFhO2dCQUNiLGVBQWU7YUFDaEI7U0FDRixDQUFDO0lBa0xGLENBQUM7Q0FDRjtBQTN2QkQsa0JBMnZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBhd3NfaWFtIGFzIGlhbSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbb2RiXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NzZXJ2aWNlLW9yYWNsZWRhdGFiYXNlX2F3cy5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIE9kYiBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ29kYic7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlZ2lzdGVyIHRoZSBBbWF6b24gV2ViIFNlcnZpY2VzIE1hcmtldHBsYWNlIHRva2VuIGZvciB5b3VyIEFtYXpvbiBXZWIgU2VydmljZXMgYWNjb3VudCB0byBhY3RpdmF0ZSB5b3VyIE9yYWNsZSBEYXRhYmFzZUBBbWF6b24gV2ViIFNlcnZpY2VzIHN1YnNjcmlwdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQWNjZXB0TWFya2V0cGxhY2VSZWdpc3RyYXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQWNjZXB0TWFya2V0cGxhY2VSZWdpc3RyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0FjY2VwdE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgbmV3IEF1dG9ub21vdXMgVk0gY2x1c3RlciBpbiB0aGUgc3BlY2lmaWVkIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUNsb3VkQXV0b25vbW91c1ZtQ2x1c3Rlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUNsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBFeGFkYXRhIGluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQ2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBWTSBjbHVzdGVyIG9uIHRoZSBzcGVjaWZpZWQgRXhhZGF0YSBpbmZyYXN0cnVjdHVyZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlQ2xvdWRWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQ2xvdWRWbUNsdXN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUNsb3VkVm1DbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgREIgTm9kZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVEYk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZURiTm9kZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBPREIgbmV0d29ya1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlT2RiTmV0d29yay5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVPZGJOZXR3b3JrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVPZGJOZXR3b3JrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIE9EQiBQZWVyaW5nIENvbm5lY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZU9kYlBlZXJpbmdDb25uZWN0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZU9kYlBlZXJpbmdDb25uZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVPZGJQZWVyaW5nQ29ubmVjdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBPdXRib3VuZCBJbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVPdXRib3VuZEludGVncmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVPdXRib3VuZEludGVncmF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gRGVsZXRlcyBhbiBBdXRvbm9tb3VzIFZNIGNsdXN0ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZUNsb3VkQXV0b25vbW91c1ZtQ2x1c3Rlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZUNsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIHNwZWNpZmllZCBFeGFkYXRhIGluZnJhc3RydWN0dXJlLiBCZWZvcmUgeW91IHVzZSB0aGlzIG9wZXJhdGlvbiwgbWFrZSBzdXJlIHRvIGRlbGV0ZSBhbGwgb2YgdGhlIFZNIGNsdXN0ZXJzIHRoYXQgYXJlIGhvc3RlZCBvbiB0aGlzIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIHNwZWNpZmllZCBWTSBjbHVzdGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9EZWxldGVDbG91ZFZtQ2x1c3Rlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZWxldGVDbG91ZFZtQ2x1c3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlQ2xvdWRWbUNsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBEQiBOb2RlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZURiTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlRGJOb2RlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIHRoZSBzcGVjaWZpZWQgT0RCIG5ldHdvcmtcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0RlbGV0ZU9kYk5ldHdvcmsuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlT2RiTmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVsZXRlT2RiTmV0d29yaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSB0aGUgc3BlY2lmaWVkIE9EQiBQZWVyaW5nIENvbm5lY3Rpb24uIFdoZW4geW91IGRlbGV0ZSBhbiBPREIgcGVlcmluZyBjb25uZWN0aW9uLCB0aGUgdW5kZXJseWluZyBWUEMgcGVlcmluZyBjb25uZWN0aW9uIGlzIGFsc28gZGVsZXRlZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVsZXRlT2RiUGVlcmluZ0Nvbm5lY3Rpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVsZXRlT2RiUGVlcmluZ0Nvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0RlbGV0ZU9kYlBlZXJpbmdDb25uZWN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVsZXRlIGEgcmVzb3VyY2UgcG9saWN5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICovXG4gIHB1YmxpYyB0b0RlbGV0ZVJlc291cmNlUG9saWN5KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZWxldGVSZXNvdXJjZVBvbGljeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIEF1dG9ub21vdXMgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0Q2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZCBFeGFkYXRhIGluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHVuYWxsb2NhdGVkIHJlc291cmNlcyBpbiBhIHNwZWNpZmllZCBDbG91ZCBFeGFkYXRhIEluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlVW5hbGxvY2F0ZWRSZXNvdXJjZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVVbmFsbG9jYXRlZFJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVVbmFsbG9jYXRlZFJlc291cmNlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIFZNIGNsdXN0ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0Q2xvdWRWbUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0Q2xvdWRWbUNsdXN0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldENsb3VkVm1DbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgREIgbm9kZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXREYk5vZGUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0RGJOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXREYk5vZGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZCBkYXRhYmFzZSBzZXJ2ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0RGJTZXJ2ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0RGJTZXJ2ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldERiU2VydmVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSB0ZW5hbmN5IGFjdGl2YXRpb24gbGluayBhbmQgb25ib2FyZGluZyBzdGF0dXMgZm9yIHlvdXIgQW1hem9uIFdlYiBTZXJ2aWNlcyBhY2NvdW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldE9jaU9uYm9hcmRpbmdTdGF0dXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0T2NpT25ib2FyZGluZ1N0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0T2NpT25ib2FyZGluZ1N0YXR1cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIE9EQiBuZXR3b3JrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldE9kYk5ldHdvcmsuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0T2RiTmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0T2RiTmV0d29yaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIE9EQiBQZWVyaW5nIGNvbm5lY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfR2V0T2RiUGVlcmluZ0Nvbm5lY3Rpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0T2RiUGVlcmluZ0Nvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldE9kYlBlZXJpbmdDb25uZWN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgcmVzb3VyY2UgcG9saWN5XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKi9cbiAgcHVibGljIHRvR2V0UmVzb3VyY2VQb2xpY3koKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFJlc291cmNlUG9saWN5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW5pdGlhbGl6ZSB0aGUgT0RCIHNlcnZpY2UgZm9yIHRoZSBmaXJzdCB0aW1lIGluIGFuIGFjY291bnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0luaXRpYWxpemVTZXJ2aWNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0luaXRpYWxpemVTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdJbml0aWFsaXplU2VydmljZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgYWxsIEF1dG9ub21vdXMgVk1zIGluIGFuIEF1dG9ub21vdXMgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0QXV0b25vbW91c1ZpcnR1YWxNYWNoaW5lcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0QXV0b25vbW91c1ZpcnR1YWxNYWNoaW5lcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEF1dG9ub21vdXNWaXJ0dWFsTWFjaGluZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IGFsbCBBdXRvbm9tb3VzIFZNIGNsdXN0ZXJzIGluIGEgc3BlY2lmaWVkIENsb3VkIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdENsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdENsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXJzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRXhhZGF0YSBpbmZyYXN0cnVjdHVyZXMgb3duZWQgYnkgeW91ciBBbWF6b24gV2ViIFNlcnZpY2VzIGFjY291bnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgVk0gY2x1c3RlcnMgb3duZWQgYnkgeW91ciBBbWF6b24gV2ViIFNlcnZpY2VzIGFjY291bnQgb3Igb25seSB0aGUgb25lcyBvbiB0aGUgc3BlY2lmaWVkIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdENsb3VkVm1DbHVzdGVycy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Q2xvdWRWbUNsdXN0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0Q2xvdWRWbUNsdXN0ZXJzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgREIgbm9kZXMgZm9yIHRoZSBzcGVjaWZpZWQgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0RGJOb2Rlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0RGJOb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdERiTm9kZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhYmFzZSBzZXJ2ZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgRXhhZGF0YSBpbmZyYXN0cnVjdHVyZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0RGJTZXJ2ZXJzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3REYlNlcnZlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3REYlNlcnZlcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaGFwZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBhbiBFeGFkYXRhIGluZnJhc3RydWN0dXJlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3REYlN5c3RlbVNoYXBlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0RGJTeXN0ZW1TaGFwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3REYlN5c3RlbVNoYXBlcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgaW5mb3JtYXRpb24gYWJvdXQgT3JhY2xlIEdyaWQgSW5mcmFzdHJ1Y3R1cmUgKEdJKSBzb2Z0d2FyZSB2ZXJzaW9ucyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGEgVk0gY2x1c3RlciBmb3IgdGhlIHNwZWNpZmllZCBzaGFwZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9MaXN0R2lWZXJzaW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0R2lWZXJzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEdpVmVyc2lvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBPREIgbmV0d29ya3Mgb3duZWQgYnkgeW91ciBBbWF6b24gV2ViIFNlcnZpY2VzIGFjY291bnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdE9kYk5ldHdvcmtzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RPZGJOZXR3b3JrcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdE9kYk5ldHdvcmtzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBhbGwgT0RCIHBlZXJpbmcgY29ubmVjdGlvbnMgb3IgdGhvc2UgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgT0RCIG5ldHdvcmtcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdE9kYlBlZXJpbmdDb25uZWN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0T2RiUGVlcmluZ0Nvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0T2RiUGVlcmluZ0Nvbm5lY3Rpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3lzdGVtIHZlcnNpb25zIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgYSBWTSBjbHVzdGVyIGZvciB0aGUgc3BlY2lmaWVkIGdpVmVyc2lvbiBhbmQgc2hhcGVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfTGlzdFN5c3RlbVZlcnNpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RTeXN0ZW1WZXJzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFN5c3RlbVZlcnNpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFncyBhcHBsaWVkIHRvIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0xpc3RUYWdzRm9yUmVzb3VyY2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdFRhZ3NGb3JSZXNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdFRhZ3NGb3JSZXNvdXJjZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSBhIHJlc291cmNlIHBvbGljeVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqL1xuICBwdWJsaWMgdG9QdXRSZXNvdXJjZVBvbGljeSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnUHV0UmVzb3VyY2VQb2xpY3knKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZWJvb3QgdGhlIHNwZWNpZmllZCBEQiBub2RlIGluIGEgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUmVib290RGJOb2RlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1JlYm9vdERiTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnUmVib290RGJOb2RlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RhcnQgdGhlIHNwZWNpZmllZCBEQiBub2RlIGluIGEgVk0gY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU3RhcnREYk5vZGUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvU3RhcnREYk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0YXJ0RGJOb2RlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc3RvcCB0aGUgc3BlY2lmaWVkIERCIG5vZGUgaW4gYSBWTSBjbHVzdGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdG9wRGJOb2RlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1N0b3BEYk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1N0b3BEYk5vZGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhcHBseSB0YWdzIHRvIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBUYWdnaW5nXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1RhZ1Jlc291cmNlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1RhZ1Jlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdUYWdSZXNvdXJjZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlbW92ZSB0YWdzIGZyb20gdGhlIHNwZWNpZmllZCByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFRhZ2dpbmdcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVW50YWdSZXNvdXJjZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VbnRhZ1Jlc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVbnRhZ1Jlc291cmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIEV4YWRhdGEgaW5mcmFzdHJ1Y3R1cmUgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1VwZGF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSBwcm9wZXJ0aWVzIG9mIGEgc3BlY2lmaWVkIE9EQiBuZXR3b3JrXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9VcGRhdGVPZGJOZXR3b3JrLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZU9kYk5ldHdvcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZU9kYk5ldHdvcmsnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhY2Nlc3NMZXZlbExpc3Q6IEFjY2Vzc0xldmVsTGlzdCA9IHtcbiAgICBXcml0ZTogW1xuICAgICAgJ0FjY2VwdE1hcmtldHBsYWNlUmVnaXN0cmF0aW9uJyxcbiAgICAgICdDcmVhdGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXInLFxuICAgICAgJ0NyZWF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlJyxcbiAgICAgICdDcmVhdGVDbG91ZFZtQ2x1c3RlcicsXG4gICAgICAnQ3JlYXRlRGJOb2RlJyxcbiAgICAgICdDcmVhdGVPZGJOZXR3b3JrJyxcbiAgICAgICdDcmVhdGVPZGJQZWVyaW5nQ29ubmVjdGlvbicsXG4gICAgICAnQ3JlYXRlT3V0Ym91bmRJbnRlZ3JhdGlvbicsXG4gICAgICAnRGVsZXRlQ2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyJyxcbiAgICAgICdEZWxldGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZScsXG4gICAgICAnRGVsZXRlQ2xvdWRWbUNsdXN0ZXInLFxuICAgICAgJ0RlbGV0ZURiTm9kZScsXG4gICAgICAnRGVsZXRlT2RiTmV0d29yaycsXG4gICAgICAnRGVsZXRlT2RiUGVlcmluZ0Nvbm5lY3Rpb24nLFxuICAgICAgJ0RlbGV0ZVJlc291cmNlUG9saWN5JyxcbiAgICAgICdJbml0aWFsaXplU2VydmljZScsXG4gICAgICAnUHV0UmVzb3VyY2VQb2xpY3knLFxuICAgICAgJ1JlYm9vdERiTm9kZScsXG4gICAgICAnU3RhcnREYk5vZGUnLFxuICAgICAgJ1N0b3BEYk5vZGUnLFxuICAgICAgJ1VwZGF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlJyxcbiAgICAgICdVcGRhdGVPZGJOZXR3b3JrJ1xuICAgIF0sXG4gICAgUmVhZDogW1xuICAgICAgJ0dldENsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcicsXG4gICAgICAnR2V0Q2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUnLFxuICAgICAgJ0dldENsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlVW5hbGxvY2F0ZWRSZXNvdXJjZXMnLFxuICAgICAgJ0dldENsb3VkVm1DbHVzdGVyJyxcbiAgICAgICdHZXREYk5vZGUnLFxuICAgICAgJ0dldERiU2VydmVyJyxcbiAgICAgICdHZXRPY2lPbmJvYXJkaW5nU3RhdHVzJyxcbiAgICAgICdHZXRPZGJOZXR3b3JrJyxcbiAgICAgICdHZXRPZGJQZWVyaW5nQ29ubmVjdGlvbicsXG4gICAgICAnR2V0UmVzb3VyY2VQb2xpY3knLFxuICAgICAgJ0xpc3RBdXRvbm9tb3VzVmlydHVhbE1hY2hpbmVzJyxcbiAgICAgICdMaXN0RGJTZXJ2ZXJzJyxcbiAgICAgICdMaXN0RGJTeXN0ZW1TaGFwZXMnLFxuICAgICAgJ0xpc3RHaVZlcnNpb25zJyxcbiAgICAgICdMaXN0U3lzdGVtVmVyc2lvbnMnLFxuICAgICAgJ0xpc3RUYWdzRm9yUmVzb3VyY2UnXG4gICAgXSxcbiAgICBMaXN0OiBbXG4gICAgICAnTGlzdENsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcnMnLFxuICAgICAgJ0xpc3RDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZXMnLFxuICAgICAgJ0xpc3RDbG91ZFZtQ2x1c3RlcnMnLFxuICAgICAgJ0xpc3REYk5vZGVzJyxcbiAgICAgICdMaXN0T2RiTmV0d29ya3MnLFxuICAgICAgJ0xpc3RPZGJQZWVyaW5nQ29ubmVjdGlvbnMnXG4gICAgXSxcbiAgICBUYWdnaW5nOiBbXG4gICAgICAnVGFnUmVzb3VyY2UnLFxuICAgICAgJ1VudGFnUmVzb3VyY2UnXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBjbG91ZC1hdXRvbm9tb3VzLXZtLWNsdXN0ZXIgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Nsb3VkQXV0b25vbW91c1ZtQ2x1c3Rlci5odG1sXG4gICAqXG4gICAqIEBwYXJhbSBjbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXJJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBjbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXJJZC5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uQ2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyKGNsb3VkQXV0b25vbW91c1ZtQ2x1c3RlcklkOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06b2RiOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTpjbG91ZC1hdXRvbm9tb3VzLXZtLWNsdXN0ZXIvJHsgY2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVySWQgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIGNsb3VkLWV4YWRhdGEtaW5mcmFzdHJ1Y3R1cmUgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Nsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlSWQgLSBJZGVudGlmaWVyIGZvciB0aGUgY2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVJZC5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uQ2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmUoY2xvdWRFeGFkYXRhSW5mcmFzdHJ1Y3R1cmVJZDogc3RyaW5nLCBhY2NvdW50Pzogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9Om9kYjokeyByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uIH06JHsgYWNjb3VudCA/PyB0aGlzLmRlZmF1bHRBY2NvdW50IH06Y2xvdWQtZXhhZGF0YS1pbmZyYXN0cnVjdHVyZS8keyBjbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZUlkIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBjbG91ZC12bS1jbHVzdGVyIHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DbG91ZFZtQ2x1c3Rlci5odG1sXG4gICAqXG4gICAqIEBwYXJhbSBjbG91ZFZtQ2x1c3RlcklkIC0gSWRlbnRpZmllciBmb3IgdGhlIGNsb3VkVm1DbHVzdGVySWQuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbkNsb3VkVm1DbHVzdGVyKGNsb3VkVm1DbHVzdGVySWQ6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTpvZGI6JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmNsb3VkLXZtLWNsdXN0ZXIvJHsgY2xvdWRWbUNsdXN0ZXJJZCB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgZGItbm9kZSB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGJOb2RlLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGRiTm9kZUlkIC0gSWRlbnRpZmllciBmb3IgdGhlIGRiTm9kZUlkLlxuICAgKiBAcGFyYW0gYWNjb3VudCAtIEFjY291bnQgb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIGFjY291bnQuXG4gICAqIEBwYXJhbSByZWdpb24gLSBSZWdpb24gb2YgdGhlIHJlc291cmNlOyBkZWZhdWx0cyB0byBgKmAsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHJlZ2lvbi5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXNvdXJjZVRhZygpXG4gICAqL1xuICBwdWJsaWMgb25EYk5vZGUoZGJOb2RlSWQ6IHN0cmluZywgYWNjb3VudD86IHN0cmluZywgcmVnaW9uPzogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTpvZGI6JHsgcmVnaW9uID8/IHRoaXMuZGVmYXVsdFJlZ2lvbiB9OiR7IGFjY291bnQgPz8gdGhpcy5kZWZhdWx0QWNjb3VudCB9OmRiLW5vZGUvJHsgZGJOb2RlSWQgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIG9kYi1uZXR3b3JrIHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL29kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9PZGJOZXR3b3JrLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIG9kYk5ldHdvcmtJZCAtIElkZW50aWZpZXIgZm9yIHRoZSBvZGJOZXR3b3JrSWQuXG4gICAqIEBwYXJhbSBhY2NvdW50IC0gQWNjb3VudCBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgYWNjb3VudC5cbiAgICogQHBhcmFtIHJlZ2lvbiAtIFJlZ2lvbiBvZiB0aGUgcmVzb3VyY2U7IGRlZmF1bHRzIHRvIGAqYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcmVnaW9uLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICovXG4gIHB1YmxpYyBvbk9kYk5ldHdvcmsob2RiTmV0d29ya0lkOiBzdHJpbmcsIGFjY291bnQ/OiBzdHJpbmcsIHJlZ2lvbj86IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06b2RiOiR7IHJlZ2lvbiA/PyB0aGlzLmRlZmF1bHRSZWdpb24gfTokeyBhY2NvdW50ID8/IHRoaXMuZGVmYXVsdEFjY291bnQgfTpvZGItbmV0d29yay8keyBvZGJOZXR3b3JrSWQgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIG9kYi1wZWVyaW5nLWNvbm5lY3Rpb24gdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb2RiL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX09kYlBlZXJpbmdDb25uZWN0aW9uLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIG9kYlBlZXJpbmdDb25uZWN0aW9uSWQgLSBJZGVudGlmaWVyIGZvciB0aGUgb2RiUGVlcmluZ0Nvbm5lY3Rpb25JZC5cbiAgICogQHBhcmFtIGFjY291bnQgLSBBY2NvdW50IG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBhY2NvdW50LlxuICAgKiBAcGFyYW0gcmVnaW9uIC0gUmVnaW9uIG9mIHRoZSByZXNvdXJjZTsgZGVmYXVsdHMgdG8gYCpgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyByZWdpb24uXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVzb3VyY2VUYWcoKVxuICAgKi9cbiAgcHVibGljIG9uT2RiUGVlcmluZ0Nvbm5lY3Rpb24ob2RiUGVlcmluZ0Nvbm5lY3Rpb25JZDogc3RyaW5nLCBhY2NvdW50Pzogc3RyaW5nLCByZWdpb24/OiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9Om9kYjokeyByZWdpb24gPz8gdGhpcy5kZWZhdWx0UmVnaW9uIH06JHsgYWNjb3VudCA/PyB0aGlzLmRlZmF1bHRBY2NvdW50IH06b2RiLXBlZXJpbmctY29ubmVjdGlvbi8keyBvZGJQZWVyaW5nQ29ubmVjdGlvbklkIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGFjY2VzcyBieSBhIHRhZyBrZXkgYW5kIHZhbHVlIHBhaXIgdGhhdCBpcyBhbGxvd2VkIGluIHRoZSByZXF1ZXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfY29uZGl0aW9uLWtleXMuaHRtbCNjb25kaXRpb24ta2V5cy1yZXF1ZXN0dGFnXG4gICAqXG4gICAqIEFwcGxpZXMgdG8gYWN0aW9uczpcbiAgICogLSAudG9DcmVhdGVDbG91ZEF1dG9ub21vdXNWbUNsdXN0ZXIoKVxuICAgKiAtIC50b0NyZWF0ZUNsb3VkRXhhZGF0YUluZnJhc3RydWN0dXJlKClcbiAgICogLSAudG9DcmVhdGVDbG91ZFZtQ2x1c3RlcigpXG4gICAqIC0gLnRvQ3JlYXRlT2RiTmV0d29yaygpXG4gICAqIC0gLnRvQ3JlYXRlT2RiUGVlcmluZ0Nvbm5lY3Rpb24oKVxuICAgKiAtIC50b1RhZ1Jlc291cmNlKClcbiAgICpcbiAgICogQHBhcmFtIHRhZ0tleSBUaGUgdGFnIGtleSB0byBjaGVja1xuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlKHMpIHRvIGNoZWNrXG4gICAqIEBwYXJhbSBvcGVyYXRvciBXb3JrcyB3aXRoIFtzdHJpbmcgb3BlcmF0b3JzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX2NvbmRpdGlvbl9vcGVyYXRvcnMuaHRtbCNDb25kaXRpb25zX1N0cmluZykuICoqRGVmYXVsdDoqKiBgU3RyaW5nTGlrZWBcbiAgICovXG4gIHB1YmxpYyBpZkF3c1JlcXVlc3RUYWcodGFnS2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3BlcmF0b3I/OiBPcGVyYXRvciB8IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlmKGBhd3M6UmVxdWVzdFRhZy8keyB0YWdLZXkgfWAsIHZhbHVlLCBvcGVyYXRvciA/PyAnU3RyaW5nTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IGEgdGFnIGtleSBhbmQgdmFsdWUgcGFpciBvZiBhIHJlc291cmNlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfY29uZGl0aW9uLWtleXMuaHRtbCNjb25kaXRpb24ta2V5cy1yZXNvdXJjZXRhZ1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvTGlzdFRhZ3NGb3JSZXNvdXJjZSgpXG4gICAqIC0gLnRvVGFnUmVzb3VyY2UoKVxuICAgKiAtIC50b1VudGFnUmVzb3VyY2UoKVxuICAgKlxuICAgKiBBcHBsaWVzIHRvIHJlc291cmNlIHR5cGVzOlxuICAgKiAtIGNsb3VkLWF1dG9ub21vdXMtdm0tY2x1c3RlclxuICAgKiAtIGNsb3VkLWV4YWRhdGEtaW5mcmFzdHJ1Y3R1cmVcbiAgICogLSBjbG91ZC12bS1jbHVzdGVyXG4gICAqIC0gZGItbm9kZVxuICAgKiAtIG9kYi1uZXR3b3JrXG4gICAqIC0gb2RiLXBlZXJpbmctY29ubmVjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gdGFnS2V5IFRoZSB0YWcga2V5IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUocykgdG8gY2hlY2tcbiAgICogQHBhcmFtIG9wZXJhdG9yIFdvcmtzIHdpdGggW3N0cmluZyBvcGVyYXRvcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfY29uZGl0aW9uX29wZXJhdG9ycy5odG1sI0NvbmRpdGlvbnNfU3RyaW5nKS4gKipEZWZhdWx0OioqIGBTdHJpbmdMaWtlYFxuICAgKi9cbiAgcHVibGljIGlmQXdzUmVzb3VyY2VUYWcodGFnS2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3BlcmF0b3I/OiBPcGVyYXRvciB8IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlmKGBhd3M6UmVzb3VyY2VUYWcvJHsgdGFnS2V5IH1gLCB2YWx1ZSwgb3BlcmF0b3IgPz8gJ1N0cmluZ0xpa2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIGFjY2VzcyBieSBhIGxpc3Qgb2YgdGFnIGtleXMgdGhhdCBhcmUgYWxsb3dlZCBpbiB0aGUgcmVxdWVzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2NvbmRpdGlvbi1rZXlzLmh0bWwjY29uZGl0aW9uLWtleXMtdGFna2V5c1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvQ3JlYXRlQ2xvdWRBdXRvbm9tb3VzVm1DbHVzdGVyKClcbiAgICogLSAudG9DcmVhdGVDbG91ZEV4YWRhdGFJbmZyYXN0cnVjdHVyZSgpXG4gICAqIC0gLnRvQ3JlYXRlQ2xvdWRWbUNsdXN0ZXIoKVxuICAgKiAtIC50b0NyZWF0ZU9kYk5ldHdvcmsoKVxuICAgKiAtIC50b0NyZWF0ZU9kYlBlZXJpbmdDb25uZWN0aW9uKClcbiAgICogLSAudG9UYWdSZXNvdXJjZSgpXG4gICAqIC0gLnRvVW50YWdSZXNvdXJjZSgpXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUocykgdG8gY2hlY2tcbiAgICogQHBhcmFtIG9wZXJhdG9yIFdvcmtzIHdpdGggW3N0cmluZyBvcGVyYXRvcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfY29uZGl0aW9uX29wZXJhdG9ycy5odG1sI0NvbmRpdGlvbnNfU3RyaW5nKS4gKipEZWZhdWx0OioqIGBTdHJpbmdMaWtlYFxuICAgKi9cbiAgcHVibGljIGlmQXdzVGFnS2V5cyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pZihgYXdzOlRhZ0tleXNgLCB2YWx1ZSwgb3BlcmF0b3IgPz8gJ1N0cmluZ0xpa2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW29kYl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYXdzc2VydmljZS1vcmFjbGVkYXRhYmFzZV9hd3MuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19