@microsoft/terraform-cdk-constructs 1.9.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/.jsii +38110 -28389
  2. package/API.md +40683 -30877
  3. package/lib/azure-actiongroup/lib/action-group.d.ts +3 -3
  4. package/lib/azure-actiongroup/lib/action-group.js +5 -5
  5. package/lib/azure-actiongroup/test/action-group.integ.d.ts +1 -1
  6. package/lib/azure-actiongroup/test/action-group.integ.js +5 -5
  7. package/lib/azure-actiongroup/test/action-group.spec.js +9 -9
  8. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +3 -3
  9. package/lib/azure-activitylogalert/lib/activity-log-alert.js +5 -5
  10. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +1 -1
  11. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +6 -6
  12. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +9 -9
  13. package/lib/azure-aks/lib/aks-cluster.d.ts +6 -6
  14. package/lib/azure-aks/lib/aks-cluster.js +8 -8
  15. package/lib/azure-aks/test/aks-cluster.integ.d.ts +1 -1
  16. package/lib/azure-aks/test/aks-cluster.integ.js +5 -5
  17. package/lib/azure-aks/test/aks-cluster.spec.js +12 -12
  18. package/lib/azure-containerapps/index.d.ts +1 -0
  19. package/lib/azure-containerapps/index.js +18 -0
  20. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
  22. package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
  23. package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
  26. package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
  27. package/lib/azure-containerapps/lib/container-app.js +320 -0
  28. package/lib/azure-containerapps/lib/index.d.ts +4 -0
  29. package/lib/azure-containerapps/lib/index.js +21 -0
  30. package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
  31. package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
  32. package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
  33. package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
  34. package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
  35. package/lib/azure-containerapps/test/container-app.integ.js +119 -0
  36. package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
  37. package/lib/azure-containerapps/test/container-app.spec.js +839 -0
  38. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +3 -3
  39. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +5 -5
  40. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +9 -9
  41. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +7 -7
  42. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +9 -9
  43. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +4 -4
  44. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +6 -6
  45. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +4 -4
  46. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +6 -6
  47. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +1 -1
  48. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +5 -5
  49. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +11 -11
  50. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +14 -14
  51. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +12 -12
  52. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +8 -8
  53. package/lib/azure-dnsresolver/lib/dns-resolver.js +10 -10
  54. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +6 -6
  55. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +8 -8
  56. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +7 -7
  57. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +9 -9
  58. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +1 -1
  59. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +5 -5
  60. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +11 -11
  61. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +1 -1
  62. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +5 -5
  63. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +12 -12
  64. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +1 -1
  65. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +5 -5
  66. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +9 -9
  67. package/lib/azure-dnszone/lib/dns-zone.d.ts +6 -6
  68. package/lib/azure-dnszone/lib/dns-zone.js +8 -8
  69. package/lib/azure-dnszone/lib/records/dns-records.d.ts +31 -31
  70. package/lib/azure-dnszone/lib/records/dns-records.js +42 -42
  71. package/lib/azure-dnszone/test/dns-records.integ.d.ts +1 -1
  72. package/lib/azure-dnszone/test/dns-records.integ.js +5 -5
  73. package/lib/azure-dnszone/test/dns-records.spec.js +57 -57
  74. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +1 -1
  75. package/lib/azure-dnszone/test/dns-zone.integ.js +5 -5
  76. package/lib/azure-dnszone/test/dns-zone.spec.js +11 -11
  77. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +1 -1
  78. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +3 -3
  79. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +1 -1
  80. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +6 -6
  81. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +6 -6
  82. package/lib/azure-metricalert/lib/metric-alert.d.ts +3 -3
  83. package/lib/azure-metricalert/lib/metric-alert.js +5 -5
  84. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +1 -1
  85. package/lib/azure-metricalert/test/metric-alert.integ.js +5 -5
  86. package/lib/azure-metricalert/test/metric-alert.spec.js +9 -9
  87. package/lib/azure-networkinterface/lib/network-interface.d.ts +5 -5
  88. package/lib/azure-networkinterface/lib/network-interface.js +7 -7
  89. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +1 -1
  90. package/lib/azure-networkinterface/test/network-interface.integ.js +5 -5
  91. package/lib/azure-networkinterface/test/network-interface.spec.js +11 -11
  92. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +6 -6
  93. package/lib/azure-networksecuritygroup/lib/network-security-group.js +8 -8
  94. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +1 -1
  95. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +5 -5
  96. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +12 -12
  97. package/lib/azure-networkwatcher/lib/network-watcher.d.ts +1 -1
  98. package/lib/azure-networkwatcher/lib/network-watcher.js +3 -3
  99. package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +1 -1
  100. package/lib/azure-networkwatcher/test/network-watcher.integ.js +6 -6
  101. package/lib/azure-networkwatcher/test/network-watcher.spec.js +6 -6
  102. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +3 -3
  103. package/lib/azure-policyassignment/lib/policy-assignment.js +5 -5
  104. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +1 -1
  105. package/lib/azure-policyassignment/test/policy-assignment.integ.js +5 -5
  106. package/lib/azure-policyassignment/test/policy-assignment.spec.js +12 -12
  107. package/lib/azure-policydefinition/lib/policy-definition.d.ts +3 -3
  108. package/lib/azure-policydefinition/lib/policy-definition.js +5 -5
  109. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +1 -1
  110. package/lib/azure-policydefinition/test/policy-definition.integ.js +5 -5
  111. package/lib/azure-policydefinition/test/policy-definition.spec.js +19 -19
  112. package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +1 -1
  113. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +3 -3
  114. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +1 -1
  115. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +6 -6
  116. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +6 -6
  117. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +10 -10
  118. package/lib/azure-privatednszone/lib/private-dns-zone.js +12 -12
  119. package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +25 -25
  120. package/lib/azure-privatednszone/lib/records/private-dns-records.js +34 -34
  121. package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +1 -1
  122. package/lib/azure-privatednszone/test/private-dns-records.integ.js +5 -5
  123. package/lib/azure-privatednszone/test/private-dns-records.spec.js +49 -49
  124. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +1 -1
  125. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +5 -5
  126. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +12 -12
  127. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +6 -6
  128. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +8 -8
  129. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +1 -1
  130. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +5 -5
  131. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +12 -12
  132. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +5 -5
  133. package/lib/azure-publicipaddress/lib/public-ip-address.js +7 -7
  134. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +1 -1
  135. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +6 -6
  136. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +11 -11
  137. package/lib/azure-resourcegroup/lib/resource-group.d.ts +5 -5
  138. package/lib/azure-resourcegroup/lib/resource-group.js +7 -7
  139. package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +1 -1
  140. package/lib/azure-resourcegroup/test/resource-group.integ.js +5 -5
  141. package/lib/azure-resourcegroup/test/resource-group.spec.js +14 -14
  142. package/lib/azure-roleassignment/lib/role-assignment.d.ts +3 -3
  143. package/lib/azure-roleassignment/lib/role-assignment.js +5 -5
  144. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +1 -1
  145. package/lib/azure-roleassignment/test/role-assignment.integ.js +5 -5
  146. package/lib/azure-roleassignment/test/role-assignment.spec.js +12 -12
  147. package/lib/azure-roledefinition/lib/role-definition.d.ts +3 -3
  148. package/lib/azure-roledefinition/lib/role-definition.js +5 -5
  149. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +1 -1
  150. package/lib/azure-roledefinition/test/role-definition.integ.js +5 -5
  151. package/lib/azure-roledefinition/test/role-definition.spec.js +12 -12
  152. package/lib/azure-storageaccount/lib/storage-account.d.ts +6 -6
  153. package/lib/azure-storageaccount/lib/storage-account.js +8 -8
  154. package/lib/azure-storageaccount/test/storage-account.integ.d.ts +1 -1
  155. package/lib/azure-storageaccount/test/storage-account.integ.js +5 -5
  156. package/lib/azure-storageaccount/test/storage-account.spec.js +11 -11
  157. package/lib/azure-subnet/lib/subnet.d.ts +3 -3
  158. package/lib/azure-subnet/lib/subnet.js +5 -5
  159. package/lib/azure-subnet/test/subnet.integ.d.ts +1 -1
  160. package/lib/azure-subnet/test/subnet.integ.js +5 -5
  161. package/lib/azure-subnet/test/subnet.spec.js +9 -9
  162. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +6 -6
  163. package/lib/azure-virtualmachine/lib/virtual-machine.js +8 -8
  164. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +1 -1
  165. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +5 -5
  166. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +17 -17
  167. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +6 -6
  168. package/lib/azure-virtualnetwork/lib/virtual-network.js +8 -8
  169. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +1 -1
  170. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +5 -5
  171. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +12 -12
  172. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +5 -5
  173. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +7 -7
  174. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +1 -1
  175. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +5 -5
  176. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +13 -13
  177. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +5 -5
  178. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +7 -7
  179. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +1 -1
  180. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +5 -5
  181. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +20 -20
  182. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +4 -4
  183. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +6 -6
  184. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +4 -4
  185. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +6 -6
  186. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +4 -4
  187. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +6 -6
  188. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +4 -4
  189. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +6 -6
  190. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +4 -4
  191. package/lib/azure-virtualnetworkmanager/lib/network-group.js +6 -6
  192. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +4 -4
  193. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +6 -6
  194. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +4 -4
  195. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +6 -6
  196. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +4 -4
  197. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +6 -6
  198. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +7 -7
  199. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +9 -9
  200. package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +17 -17
  201. package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +15 -15
  202. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +1 -1
  203. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +5 -5
  204. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +57 -57
  205. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +6 -6
  206. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +8 -8
  207. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +1 -1
  208. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +5 -5
  209. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +12 -12
  210. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +6 -6
  211. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +7 -7
  212. package/lib/core-azure/lib/azapi/azapi-resource.js +6 -6
  213. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +7 -7
  214. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +12 -12
  215. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +15 -15
  216. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +35 -35
  217. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +58 -58
  218. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +25 -25
  219. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +49 -49
  220. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +13 -13
  221. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +22 -22
  222. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +24 -24
  223. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +40 -40
  224. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +44 -44
  225. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +72 -72
  226. package/lib/core-azure/lib/azapi/providers-azapi/index.js +2 -2
  227. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +2 -2
  228. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +54 -54
  229. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +86 -86
  230. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +65 -65
  231. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +102 -102
  232. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +25 -25
  233. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +62 -62
  234. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +36 -36
  235. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +69 -69
  236. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  237. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  238. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  239. package/lib/index.d.ts +3 -0
  240. package/lib/index.js +5 -2
  241. package/lib/testing/index.d.ts +1 -1
  242. package/lib/testing/index.js +8 -8
  243. package/lib/testing/lib/cleanup.js +1 -1
  244. package/lib/testing/lib/metadata.js +1 -1
  245. package/package.json +10 -22
  246. package/setup.js +2 -2
@@ -0,0 +1,50 @@
1
+ /**
2
+ * API schemas for Azure Container App Managed Environment across all supported versions
3
+ *
4
+ * This file defines the complete API schemas for Microsoft.App/managedEnvironments
5
+ * across all supported API versions. The schemas are used by the AzapiResource
6
+ * framework for validation, transformation, and version management.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2024-03-01 (Active)
10
+ * - 2025-02-02-preview (Active, Latest azapi-compatible)
11
+ * - 2025-07-01 (Active, Latest)
12
+ */
13
+ import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
14
+ /**
15
+ * API Schema for Container App Environment version 2024-03-01
16
+ */
17
+ export declare const CONTAINER_APP_ENVIRONMENT_SCHEMA_2024_03_01: ApiSchema;
18
+ /**
19
+ * API Schema for Container App Environment version 2025-02-02-preview
20
+ *
21
+ * This is the latest version supported by the azapi provider ~> 2.7.0.
22
+ * It includes the same properties as 2024-03-01 plus preview features
23
+ * like peer authentication, peer traffic encryption, ingress configuration,
24
+ * and public network access controls.
25
+ */
26
+ export declare const CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_02_02_PREVIEW: ApiSchema;
27
+ /**
28
+ * API Schema for Container App Environment version 2025-07-01
29
+ */
30
+ export declare const CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_07_01: ApiSchema;
31
+ /**
32
+ * Version configuration for Container App Environment 2024-03-01
33
+ */
34
+ export declare const CONTAINER_APP_ENVIRONMENT_VERSION_2024_03_01: VersionConfig;
35
+ /**
36
+ * Version configuration for Container App Environment 2025-02-02-preview
37
+ */
38
+ export declare const CONTAINER_APP_ENVIRONMENT_VERSION_2025_02_02_PREVIEW: VersionConfig;
39
+ /**
40
+ * Version configuration for Container App Environment 2025-07-01
41
+ */
42
+ export declare const CONTAINER_APP_ENVIRONMENT_VERSION_2025_07_01: VersionConfig;
43
+ /**
44
+ * All supported Container App Environment versions for registration
45
+ */
46
+ export declare const ALL_CONTAINER_APP_ENVIRONMENT_VERSIONS: VersionConfig[];
47
+ /**
48
+ * Resource type constant
49
+ */
50
+ export declare const CONTAINER_APP_ENVIRONMENT_TYPE = "Microsoft.App/managedEnvironments";
@@ -0,0 +1,522 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Container App Managed Environment across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.App/managedEnvironments
6
+ * across all supported API versions. The schemas are used by the AzapiResource
7
+ * framework for validation, transformation, and version management.
8
+ *
9
+ * Supported API Versions:
10
+ * - 2024-03-01 (Active)
11
+ * - 2025-02-02-preview (Active, Latest azapi-compatible)
12
+ * - 2025-07-01 (Active, Latest)
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CONTAINER_APP_ENVIRONMENT_TYPE = exports.ALL_CONTAINER_APP_ENVIRONMENT_VERSIONS = exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_07_01 = exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_02_02_PREVIEW = exports.CONTAINER_APP_ENVIRONMENT_VERSION_2024_03_01 = exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_07_01 = exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_02_02_PREVIEW = exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2024_03_01 = void 0;
16
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
17
+ // =============================================================================
18
+ // COMMON PROPERTY DEFINITIONS
19
+ // =============================================================================
20
+ /**
21
+ * Common property definitions shared across all Container App Environment versions
22
+ */
23
+ const COMMON_PROPERTIES = {
24
+ location: {
25
+ dataType: version_interfaces_1.PropertyType.STRING,
26
+ required: true,
27
+ description: "The Azure region where the Container App Environment will be created.",
28
+ validation: [
29
+ {
30
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
31
+ message: "Location is required for Container App Environments",
32
+ },
33
+ ],
34
+ },
35
+ tags: {
36
+ dataType: version_interfaces_1.PropertyType.OBJECT,
37
+ required: false,
38
+ defaultValue: {},
39
+ description: "A dictionary of tags to apply to the Container App Environment.",
40
+ validation: [
41
+ {
42
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
43
+ value: version_interfaces_1.PropertyType.OBJECT,
44
+ message: "Tags must be an object with string key-value pairs",
45
+ },
46
+ ],
47
+ },
48
+ name: {
49
+ dataType: version_interfaces_1.PropertyType.STRING,
50
+ required: true,
51
+ description: "The name of the Container App Environment. Must be unique within the resource group.",
52
+ validation: [
53
+ {
54
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
55
+ message: "Container App Environment name is required",
56
+ },
57
+ {
58
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
59
+ value: "^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$",
60
+ message: "Container App Environment name must start and end with alphanumeric characters and can contain hyphens",
61
+ },
62
+ {
63
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
64
+ value: { minLength: 1, maxLength: 60 },
65
+ message: "Container App Environment name must be between 1 and 60 characters",
66
+ },
67
+ ],
68
+ },
69
+ appLogsConfiguration: {
70
+ dataType: version_interfaces_1.PropertyType.OBJECT,
71
+ required: false,
72
+ description: "Cluster configuration which enables the log daemon to export app logs to a configured destination.",
73
+ validation: [
74
+ {
75
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
76
+ value: version_interfaces_1.PropertyType.OBJECT,
77
+ message: "appLogsConfiguration must be an object",
78
+ },
79
+ ],
80
+ },
81
+ vnetConfiguration: {
82
+ dataType: version_interfaces_1.PropertyType.OBJECT,
83
+ required: false,
84
+ description: "VNet configuration for the environment.",
85
+ validation: [
86
+ {
87
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
88
+ value: version_interfaces_1.PropertyType.OBJECT,
89
+ message: "vnetConfiguration must be an object",
90
+ },
91
+ ],
92
+ },
93
+ workloadProfiles: {
94
+ dataType: version_interfaces_1.PropertyType.ARRAY,
95
+ required: false,
96
+ description: "Workload profiles configured for the Managed Environment.",
97
+ validation: [
98
+ {
99
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
100
+ value: version_interfaces_1.PropertyType.ARRAY,
101
+ message: "workloadProfiles must be an array",
102
+ },
103
+ ],
104
+ },
105
+ zoneRedundant: {
106
+ dataType: version_interfaces_1.PropertyType.BOOLEAN,
107
+ required: false,
108
+ defaultValue: false,
109
+ description: "Whether or not this Managed Environment is zone-redundant.",
110
+ validation: [
111
+ {
112
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
113
+ value: version_interfaces_1.PropertyType.BOOLEAN,
114
+ message: "zoneRedundant must be a boolean",
115
+ },
116
+ ],
117
+ },
118
+ daprAIInstrumentationKey: {
119
+ dataType: version_interfaces_1.PropertyType.STRING,
120
+ required: false,
121
+ description: "Azure Monitor instrumentation key used by Dapr to export Service to Service communication telemetry.",
122
+ validation: [
123
+ {
124
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
125
+ value: version_interfaces_1.PropertyType.STRING,
126
+ message: "daprAIInstrumentationKey must be a string",
127
+ },
128
+ ],
129
+ },
130
+ daprAIConnectionString: {
131
+ dataType: version_interfaces_1.PropertyType.STRING,
132
+ required: false,
133
+ description: "Application Insights connection string used by Dapr to export Service to Service communication telemetry.",
134
+ validation: [
135
+ {
136
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
137
+ value: version_interfaces_1.PropertyType.STRING,
138
+ message: "daprAIConnectionString must be a string",
139
+ },
140
+ ],
141
+ },
142
+ customDomainConfiguration: {
143
+ dataType: version_interfaces_1.PropertyType.OBJECT,
144
+ required: false,
145
+ description: "Custom domain configuration for the environment.",
146
+ validation: [
147
+ {
148
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
149
+ value: version_interfaces_1.PropertyType.OBJECT,
150
+ message: "customDomainConfiguration must be an object",
151
+ },
152
+ ],
153
+ },
154
+ infrastructureResourceGroup: {
155
+ dataType: version_interfaces_1.PropertyType.STRING,
156
+ required: false,
157
+ description: "Name of the platform-managed resource group created for the Managed Environment to host infrastructure resources.",
158
+ validation: [
159
+ {
160
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
161
+ value: version_interfaces_1.PropertyType.STRING,
162
+ message: "infrastructureResourceGroup must be a string",
163
+ },
164
+ ],
165
+ },
166
+ ignoreChanges: {
167
+ dataType: version_interfaces_1.PropertyType.ARRAY,
168
+ required: false,
169
+ description: "Array of property names to ignore during updates.",
170
+ validation: [
171
+ {
172
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
173
+ value: version_interfaces_1.PropertyType.ARRAY,
174
+ message: "IgnoreChanges must be an array of strings",
175
+ },
176
+ ],
177
+ },
178
+ };
179
+ // =============================================================================
180
+ // READ-ONLY PROPERTY DEFINITIONS
181
+ // =============================================================================
182
+ /**
183
+ * Read-only properties that are populated by Azure after creation
184
+ */
185
+ const READ_ONLY_PROPERTIES = {
186
+ provisioningState: {
187
+ dataType: version_interfaces_1.PropertyType.STRING,
188
+ required: false,
189
+ description: "The provisioning state of the Container App Environment (read-only).",
190
+ validation: [
191
+ {
192
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
193
+ value: version_interfaces_1.PropertyType.STRING,
194
+ message: "provisioningState must be a string",
195
+ },
196
+ ],
197
+ },
198
+ defaultDomain: {
199
+ dataType: version_interfaces_1.PropertyType.STRING,
200
+ required: false,
201
+ description: "Default domain of the Container App Environment (read-only).",
202
+ validation: [
203
+ {
204
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
205
+ value: version_interfaces_1.PropertyType.STRING,
206
+ message: "defaultDomain must be a string",
207
+ },
208
+ ],
209
+ },
210
+ staticIp: {
211
+ dataType: version_interfaces_1.PropertyType.STRING,
212
+ required: false,
213
+ description: "Static IP of the Container App Environment (read-only).",
214
+ validation: [
215
+ {
216
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
217
+ value: version_interfaces_1.PropertyType.STRING,
218
+ message: "staticIp must be a string",
219
+ },
220
+ ],
221
+ },
222
+ deploymentErrors: {
223
+ dataType: version_interfaces_1.PropertyType.STRING,
224
+ required: false,
225
+ description: "Any errors that occurred during deployment (read-only).",
226
+ validation: [
227
+ {
228
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
229
+ value: version_interfaces_1.PropertyType.STRING,
230
+ message: "deploymentErrors must be a string",
231
+ },
232
+ ],
233
+ },
234
+ };
235
+ // =============================================================================
236
+ // VERSION 2025-07-01 ADDITIONAL PROPERTIES
237
+ // =============================================================================
238
+ /**
239
+ * Properties added in API version 2025-07-01
240
+ */
241
+ const V2025_07_01_PROPERTIES = {
242
+ peerAuthentication: {
243
+ dataType: version_interfaces_1.PropertyType.OBJECT,
244
+ required: false,
245
+ description: "Peer authentication settings for the Managed Environment (mTLS).",
246
+ validation: [
247
+ {
248
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
249
+ value: version_interfaces_1.PropertyType.OBJECT,
250
+ message: "peerAuthentication must be an object",
251
+ },
252
+ ],
253
+ },
254
+ peerTrafficConfiguration: {
255
+ dataType: version_interfaces_1.PropertyType.OBJECT,
256
+ required: false,
257
+ description: "Peer traffic settings for the Managed Environment (encryption).",
258
+ validation: [
259
+ {
260
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
261
+ value: version_interfaces_1.PropertyType.OBJECT,
262
+ message: "peerTrafficConfiguration must be an object",
263
+ },
264
+ ],
265
+ },
266
+ ingressConfiguration: {
267
+ dataType: version_interfaces_1.PropertyType.OBJECT,
268
+ required: false,
269
+ description: "Ingress configuration for the Managed Environment including workload profile, termination grace period, and connection settings.",
270
+ validation: [
271
+ {
272
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
273
+ value: version_interfaces_1.PropertyType.OBJECT,
274
+ message: "ingressConfiguration must be an object",
275
+ },
276
+ ],
277
+ },
278
+ publicNetworkAccess: {
279
+ dataType: version_interfaces_1.PropertyType.STRING,
280
+ required: false,
281
+ description: "Property to allow or block all public traffic. Allowed Values: 'Enabled', 'Disabled'.",
282
+ validation: [
283
+ {
284
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
285
+ value: version_interfaces_1.PropertyType.STRING,
286
+ message: "publicNetworkAccess must be a string",
287
+ },
288
+ ],
289
+ },
290
+ };
291
+ // =============================================================================
292
+ // VERSION-SPECIFIC SCHEMAS
293
+ // =============================================================================
294
+ /**
295
+ * API Schema for Container App Environment version 2024-03-01
296
+ */
297
+ exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2024_03_01 = {
298
+ resourceType: "Microsoft.App/managedEnvironments",
299
+ version: "2024-03-01",
300
+ properties: {
301
+ ...COMMON_PROPERTIES,
302
+ ...READ_ONLY_PROPERTIES,
303
+ },
304
+ required: ["location", "name"],
305
+ optional: [
306
+ "tags",
307
+ "appLogsConfiguration",
308
+ "vnetConfiguration",
309
+ "workloadProfiles",
310
+ "zoneRedundant",
311
+ "daprAIInstrumentationKey",
312
+ "daprAIConnectionString",
313
+ "customDomainConfiguration",
314
+ "infrastructureResourceGroup",
315
+ "ignoreChanges",
316
+ ],
317
+ deprecated: [],
318
+ transformationRules: {},
319
+ validationRules: [
320
+ {
321
+ property: "location",
322
+ rules: [
323
+ {
324
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
325
+ message: "Location is required for Container App Environments",
326
+ },
327
+ ],
328
+ },
329
+ {
330
+ property: "name",
331
+ rules: [
332
+ {
333
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
334
+ message: "Name is required for Container App Environments",
335
+ },
336
+ ],
337
+ },
338
+ ],
339
+ };
340
+ /**
341
+ * API Schema for Container App Environment version 2025-02-02-preview
342
+ *
343
+ * This is the latest version supported by the azapi provider ~> 2.7.0.
344
+ * It includes the same properties as 2024-03-01 plus preview features
345
+ * like peer authentication, peer traffic encryption, ingress configuration,
346
+ * and public network access controls.
347
+ */
348
+ exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_02_02_PREVIEW = {
349
+ resourceType: "Microsoft.App/managedEnvironments",
350
+ version: "2025-02-02-preview",
351
+ properties: {
352
+ ...COMMON_PROPERTIES,
353
+ ...READ_ONLY_PROPERTIES,
354
+ ...V2025_07_01_PROPERTIES,
355
+ },
356
+ required: ["location", "name"],
357
+ optional: [
358
+ "tags",
359
+ "appLogsConfiguration",
360
+ "vnetConfiguration",
361
+ "workloadProfiles",
362
+ "zoneRedundant",
363
+ "daprAIInstrumentationKey",
364
+ "daprAIConnectionString",
365
+ "customDomainConfiguration",
366
+ "infrastructureResourceGroup",
367
+ "peerAuthentication",
368
+ "peerTrafficConfiguration",
369
+ "ingressConfiguration",
370
+ "publicNetworkAccess",
371
+ "ignoreChanges",
372
+ ],
373
+ deprecated: [],
374
+ transformationRules: {},
375
+ validationRules: [
376
+ {
377
+ property: "location",
378
+ rules: [
379
+ {
380
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
381
+ message: "Location is required for Container App Environments",
382
+ },
383
+ ],
384
+ },
385
+ {
386
+ property: "name",
387
+ rules: [
388
+ {
389
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
390
+ message: "Name is required for Container App Environments",
391
+ },
392
+ ],
393
+ },
394
+ ],
395
+ };
396
+ /**
397
+ * API Schema for Container App Environment version 2025-07-01
398
+ */
399
+ exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_07_01 = {
400
+ resourceType: "Microsoft.App/managedEnvironments",
401
+ version: "2025-07-01",
402
+ properties: {
403
+ ...COMMON_PROPERTIES,
404
+ ...READ_ONLY_PROPERTIES,
405
+ ...V2025_07_01_PROPERTIES,
406
+ },
407
+ required: ["location", "name"],
408
+ optional: [
409
+ "tags",
410
+ "appLogsConfiguration",
411
+ "vnetConfiguration",
412
+ "workloadProfiles",
413
+ "zoneRedundant",
414
+ "daprAIInstrumentationKey",
415
+ "daprAIConnectionString",
416
+ "customDomainConfiguration",
417
+ "infrastructureResourceGroup",
418
+ "peerAuthentication",
419
+ "peerTrafficConfiguration",
420
+ "ingressConfiguration",
421
+ "publicNetworkAccess",
422
+ "ignoreChanges",
423
+ ],
424
+ deprecated: [],
425
+ transformationRules: {},
426
+ validationRules: [
427
+ {
428
+ property: "location",
429
+ rules: [
430
+ {
431
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
432
+ message: "Location is required for Container App Environments",
433
+ },
434
+ ],
435
+ },
436
+ {
437
+ property: "name",
438
+ rules: [
439
+ {
440
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
441
+ message: "Name is required for Container App Environments",
442
+ },
443
+ ],
444
+ },
445
+ ],
446
+ };
447
+ // =============================================================================
448
+ // VERSION CONFIGURATIONS
449
+ // =============================================================================
450
+ /**
451
+ * Version configuration for Container App Environment 2024-03-01
452
+ */
453
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2024_03_01 = {
454
+ version: "2024-03-01",
455
+ schema: exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2024_03_01,
456
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
457
+ releaseDate: "2024-03-01",
458
+ deprecationDate: undefined,
459
+ sunsetDate: undefined,
460
+ breakingChanges: [],
461
+ migrationGuide: "/docs/container-app-environment/migration-2024-03-01",
462
+ changeLog: [
463
+ {
464
+ changeType: "added",
465
+ description: "Stable release of Container App Environment API with workload profiles, VNet integration, and Dapr support",
466
+ breaking: false,
467
+ },
468
+ ],
469
+ };
470
+ /**
471
+ * Version configuration for Container App Environment 2025-02-02-preview
472
+ */
473
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_02_02_PREVIEW = {
474
+ version: "2025-02-02-preview",
475
+ schema: exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_02_02_PREVIEW,
476
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
477
+ releaseDate: "2025-02-02",
478
+ deprecationDate: undefined,
479
+ sunsetDate: undefined,
480
+ breakingChanges: [],
481
+ migrationGuide: "/docs/container-app-environment/migration-2025-02-02-preview",
482
+ changeLog: [
483
+ {
484
+ changeType: "added",
485
+ description: "Preview release adding peer authentication (mTLS), peer traffic encryption, ingress configuration, and public network access controls",
486
+ breaking: false,
487
+ },
488
+ ],
489
+ };
490
+ /**
491
+ * Version configuration for Container App Environment 2025-07-01
492
+ */
493
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_07_01 = {
494
+ version: "2025-07-01",
495
+ schema: exports.CONTAINER_APP_ENVIRONMENT_SCHEMA_2025_07_01,
496
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
497
+ releaseDate: "2025-07-01",
498
+ deprecationDate: undefined,
499
+ sunsetDate: undefined,
500
+ breakingChanges: [],
501
+ migrationGuide: "/docs/container-app-environment/migration-2025-07-01",
502
+ changeLog: [
503
+ {
504
+ changeType: "added",
505
+ description: "Added peer authentication (mTLS), peer traffic encryption, ingress configuration, and public network access controls",
506
+ breaking: false,
507
+ },
508
+ ],
509
+ };
510
+ /**
511
+ * All supported Container App Environment versions for registration
512
+ */
513
+ exports.ALL_CONTAINER_APP_ENVIRONMENT_VERSIONS = [
514
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2024_03_01,
515
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_02_02_PREVIEW,
516
+ exports.CONTAINER_APP_ENVIRONMENT_VERSION_2025_07_01,
517
+ ];
518
+ /**
519
+ * Resource type constant
520
+ */
521
+ exports.CONTAINER_APP_ENVIRONMENT_TYPE = "Microsoft.App/managedEnvironments";
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWFwcC1lbnZpcm9ubWVudC1zY2hlbWFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWNvbnRhaW5lcmFwcHMvbGliL2NvbnRhaW5lci1hcHAtZW52aXJvbm1lbnQtc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1QsdUVBQXVFO1FBQ3pFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUscURBQXFEO2FBQy9EO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixZQUFZLEVBQUUsRUFBRTtRQUNoQixXQUFXLEVBQ1QsaUVBQWlFO1FBQ25FLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsb0RBQW9EO2FBQzlEO1NBQ0Y7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLElBQUk7UUFDZCxXQUFXLEVBQ1Qsc0ZBQXNGO1FBQ3hGLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO2dCQUNyQyxPQUFPLEVBQUUsNENBQTRDO2FBQ3REO1lBQ0Q7Z0JBQ0Us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QUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLHNDQUFzQyxHQUFvQjtJQUNyRSxvREFBNEM7SUFDNUMsNERBQW9EO0lBQ3BELG9EQUE0QztDQUM3QyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDhCQUE4QixHQUN6QyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQVBJIHNjaGVtYXMgZm9yIEF6dXJlIENvbnRhaW5lciBBcHAgTWFuYWdlZCBFbnZpcm9ubWVudCBhY3Jvc3MgYWxsIHN1cHBvcnRlZCB2ZXJzaW9uc1xuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBjb21wbGV0ZSBBUEkgc2NoZW1hcyBmb3IgTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzXG4gKiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuIFRoZSBzY2hlbWFzIGFyZSB1c2VkIGJ5IHRoZSBBemFwaVJlc291cmNlXG4gKiBmcmFtZXdvcmsgZm9yIHZhbGlkYXRpb24sIHRyYW5zZm9ybWF0aW9uLCBhbmQgdmVyc2lvbiBtYW5hZ2VtZW50LlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMjQtMDMtMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNS0wMi0wMi1wcmV2aWV3IChBY3RpdmUsIExhdGVzdCBhemFwaS1jb21wYXRpYmxlKVxuICogLSAyMDI1LTA3LTAxIChBY3RpdmUsIExhdGVzdClcbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTU1PTiBQUk9QRVJUWSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydHkgZGVmaW5pdGlvbnMgc2hhcmVkIGFjcm9zcyBhbGwgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCB2ZXJzaW9uc1xuICovXG5jb25zdCBDT01NT05fUFJPUEVSVElFUzogeyBba2V5OiBzdHJpbmddOiBQcm9wZXJ0eURlZmluaXRpb24gfSA9IHtcbiAgbG9jYXRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIEF6dXJlIHJlZ2lvbiB3aGVyZSB0aGUgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCB3aWxsIGJlIGNyZWF0ZWQuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgQXBwIEVudmlyb25tZW50c1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB0YWdzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHRWYWx1ZToge30sXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkEgZGljdGlvbmFyeSBvZiB0YWdzIHRvIGFwcGx5IHRvIHRoZSBDb250YWluZXIgQXBwIEVudmlyb25tZW50LlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJUYWdzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggc3RyaW5nIGtleS12YWx1ZSBwYWlyc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBuYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBuYW1lIG9mIHRoZSBDb250YWluZXIgQXBwIEVudmlyb25tZW50LiBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHJlc291cmNlIGdyb3VwLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgbWVzc2FnZTogXCJDb250YWluZXIgQXBwIEVudmlyb25tZW50IG5hbWUgaXMgcmVxdWlyZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXlthLXpBLVowLTldKFthLXpBLVowLTktXSpbYS16QS1aMC05XSk/JFwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCBuYW1lIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCBjYW4gY29udGFpbiBoeXBoZW5zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDEsIG1heExlbmd0aDogNjAgfSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIkNvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgbmFtZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgNjAgY2hhcmFjdGVyc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBhcHBMb2dzQ29uZmlndXJhdGlvbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiQ2x1c3RlciBjb25maWd1cmF0aW9uIHdoaWNoIGVuYWJsZXMgdGhlIGxvZyBkYWVtb24gdG8gZXhwb3J0IGFwcCBsb2dzIHRvIGEgY29uZmlndXJlZCBkZXN0aW5hdGlvbi5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgICAgIG1lc3NhZ2U6IFwiYXBwTG9nc0NvbmZpZ3VyYXRpb24gbXVzdCBiZSBhbiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgdm5ldENvbmZpZ3VyYXRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiVk5ldCBjb25maWd1cmF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcInZuZXRDb25maWd1cmF0aW9uIG11c3QgYmUgYW4gb2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHdvcmtsb2FkUHJvZmlsZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJXb3JrbG9hZCBwcm9maWxlcyBjb25maWd1cmVkIGZvciB0aGUgTWFuYWdlZCBFbnZpcm9ubWVudC5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTogXCJ3b3JrbG9hZFByb2ZpbGVzIG11c3QgYmUgYW4gYXJyYXlcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgem9uZVJlZHVuZGFudDoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQk9PTEVBTixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJXaGV0aGVyIG9yIG5vdCB0aGlzIE1hbmFnZWQgRW52aXJvbm1lbnQgaXMgem9uZS1yZWR1bmRhbnQuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQk9PTEVBTixcbiAgICAgICAgbWVzc2FnZTogXCJ6b25lUmVkdW5kYW50IG11c3QgYmUgYSBib29sZWFuXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGRhcHJBSUluc3RydW1lbnRhdGlvbktleToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiQXp1cmUgTW9uaXRvciBpbnN0cnVtZW50YXRpb24ga2V5IHVzZWQgYnkgRGFwciB0byBleHBvcnQgU2VydmljZSB0byBTZXJ2aWNlIGNvbW11bmljYXRpb24gdGVsZW1ldHJ5LlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAgICAgbWVzc2FnZTogXCJkYXByQUlJbnN0cnVtZW50YXRpb25LZXkgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBkYXByQUlDb25uZWN0aW9uU3RyaW5nOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBcHBsaWNhdGlvbiBJbnNpZ2h0cyBjb25uZWN0aW9uIHN0cmluZyB1c2VkIGJ5IERhcHIgdG8gZXhwb3J0IFNlcnZpY2UgdG8gU2VydmljZSBjb21tdW5pY2F0aW9uIHRlbGVtZXRyeS5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiZGFwckFJQ29ubmVjdGlvblN0cmluZyBtdXN0IGJlIGEgc3RyaW5nXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGN1c3RvbURvbWFpbkNvbmZpZ3VyYXRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiQ3VzdG9tIGRvbWFpbiBjb25maWd1cmF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcImN1c3RvbURvbWFpbkNvbmZpZ3VyYXRpb24gbXVzdCBiZSBhbiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaW5mcmFzdHJ1Y3R1cmVSZXNvdXJjZUdyb3VwOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJOYW1lIG9mIHRoZSBwbGF0Zm9ybS1tYW5hZ2VkIHJlc291cmNlIGdyb3VwIGNyZWF0ZWQgZm9yIHRoZSBNYW5hZ2VkIEVudmlyb25tZW50IHRvIGhvc3QgaW5mcmFzdHJ1Y3R1cmUgcmVzb3VyY2VzLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICAgICAgbWVzc2FnZTogXCJpbmZyYXN0cnVjdHVyZVJlc291cmNlR3JvdXAgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBpZ25vcmVDaGFuZ2VzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiQXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgdG8gaWdub3JlIGR1cmluZyB1cGRhdGVzLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOiBcIklnbm9yZUNoYW5nZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVBRC1PTkxZIFBST1BFUlRZIERFRklOSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlYWQtb25seSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHBvcHVsYXRlZCBieSBBenVyZSBhZnRlciBjcmVhdGlvblxuICovXG5jb25zdCBSRUFEX09OTFlfUFJPUEVSVElFUzogeyBba2V5OiBzdHJpbmddOiBQcm9wZXJ0eURlZmluaXRpb24gfSA9IHtcbiAgcHJvdmlzaW9uaW5nU3RhdGU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBwcm92aXNpb25pbmcgc3RhdGUgb2YgdGhlIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgKHJlYWQtb25seSkuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcInByb3Zpc2lvbmluZ1N0YXRlIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVmYXVsdERvbWFpbjoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJEZWZhdWx0IGRvbWFpbiBvZiB0aGUgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCAocmVhZC1vbmx5KS5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiZGVmYXVsdERvbWFpbiBtdXN0IGJlIGEgc3RyaW5nXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHN0YXRpY0lwOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIlN0YXRpYyBJUCBvZiB0aGUgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCAocmVhZC1vbmx5KS5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwic3RhdGljSXAgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBkZXBsb3ltZW50RXJyb3JzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFueSBlcnJvcnMgdGhhdCBvY2N1cnJlZCBkdXJpbmcgZGVwbG95bWVudCAocmVhZC1vbmx5KS5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiZGVwbG95bWVudEVycm9ycyBtdXN0IGJlIGEgc3RyaW5nXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTiAyMDI1LTA3LTAxIEFERElUSU9OQUwgUFJPUEVSVElFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGFkZGVkIGluIEFQSSB2ZXJzaW9uIDIwMjUtMDctMDFcbiAqL1xuY29uc3QgVjIwMjVfMDdfMDFfUFJPUEVSVElFUzogeyBba2V5OiBzdHJpbmddOiBQcm9wZXJ0eURlZmluaXRpb24gfSA9IHtcbiAgcGVlckF1dGhlbnRpY2F0aW9uOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJQZWVyIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzIGZvciB0aGUgTWFuYWdlZCBFbnZpcm9ubWVudCAobVRMUykuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcInBlZXJBdXRoZW50aWNhdGlvbiBtdXN0IGJlIGFuIG9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBwZWVyVHJhZmZpY0NvbmZpZ3VyYXRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlBlZXIgdHJhZmZpYyBzZXR0aW5ncyBmb3IgdGhlIE1hbmFnZWQgRW52aXJvbm1lbnQgKGVuY3J5cHRpb24pLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJwZWVyVHJhZmZpY0NvbmZpZ3VyYXRpb24gbXVzdCBiZSBhbiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaW5ncmVzc0NvbmZpZ3VyYXRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkluZ3Jlc3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1hbmFnZWQgRW52aXJvbm1lbnQgaW5jbHVkaW5nIHdvcmtsb2FkIHByb2ZpbGUsIHRlcm1pbmF0aW9uIGdyYWNlIHBlcmlvZCwgYW5kIGNvbm5lY3Rpb24gc2V0dGluZ3MuXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcImluZ3Jlc3NDb25maWd1cmF0aW9uIG11c3QgYmUgYW4gb2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHB1YmxpY05ldHdvcmtBY2Nlc3M6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlByb3BlcnR5IHRvIGFsbG93IG9yIGJsb2NrIGFsbCBwdWJsaWMgdHJhZmZpYy4gQWxsb3dlZCBWYWx1ZXM6ICdFbmFibGVkJywgJ0Rpc2FibGVkJy5cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwicHVibGljTmV0d29ya0FjY2VzcyBtdXN0IGJlIGEgc3RyaW5nXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkVSU0lPTi1TUEVDSUZJQyBTQ0hFTUFTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgdmVyc2lvbiAyMDI0LTAzLTAxXG4gKi9cbmV4cG9ydCBjb25zdCBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1NDSEVNQV8yMDI0XzAzXzAxOiBBcGlTY2hlbWEgPSB7XG4gIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuQXBwL21hbmFnZWRFbnZpcm9ubWVudHNcIixcbiAgdmVyc2lvbjogXCIyMDI0LTAzLTAxXCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgICAuLi5SRUFEX09OTFlfUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcImxvY2F0aW9uXCIsIFwibmFtZVwiXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcInRhZ3NcIixcbiAgICBcImFwcExvZ3NDb25maWd1cmF0aW9uXCIsXG4gICAgXCJ2bmV0Q29uZmlndXJhdGlvblwiLFxuICAgIFwid29ya2xvYWRQcm9maWxlc1wiLFxuICAgIFwiem9uZVJlZHVuZGFudFwiLFxuICAgIFwiZGFwckFJSW5zdHJ1bWVudGF0aW9uS2V5XCIsXG4gICAgXCJkYXByQUlDb25uZWN0aW9uU3RyaW5nXCIsXG4gICAgXCJjdXN0b21Eb21haW5Db25maWd1cmF0aW9uXCIsXG4gICAgXCJpbmZyYXN0cnVjdHVyZVJlc291cmNlR3JvdXBcIixcbiAgICBcImlnbm9yZUNoYW5nZXNcIixcbiAgXSxcbiAgZGVwcmVjYXRlZDogW10sXG4gIHRyYW5zZm9ybWF0aW9uUnVsZXM6IHt9LFxuICB2YWxpZGF0aW9uUnVsZXM6IFtcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJsb2NhdGlvblwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJMb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudHNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJuYW1lXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIk5hbWUgaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIEFQSSBTY2hlbWEgZm9yIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgdmVyc2lvbiAyMDI1LTAyLTAyLXByZXZpZXdcbiAqXG4gKiBUaGlzIGlzIHRoZSBsYXRlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhlIGF6YXBpIHByb3ZpZGVyIH4+IDIuNy4wLlxuICogSXQgaW5jbHVkZXMgdGhlIHNhbWUgcHJvcGVydGllcyBhcyAyMDI0LTAzLTAxIHBsdXMgcHJldmlldyBmZWF0dXJlc1xuICogbGlrZSBwZWVyIGF1dGhlbnRpY2F0aW9uLCBwZWVyIHRyYWZmaWMgZW5jcnlwdGlvbiwgaW5ncmVzcyBjb25maWd1cmF0aW9uLFxuICogYW5kIHB1YmxpYyBuZXR3b3JrIGFjY2VzcyBjb250cm9scy5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRBSU5FUl9BUFBfRU5WSVJPTk1FTlRfU0NIRU1BXzIwMjVfMDJfMDJfUFJFVklFVzogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzXCIsXG4gIHZlcnNpb246IFwiMjAyNS0wMi0wMi1wcmV2aWV3XCIsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5DT01NT05fUFJPUEVSVElFUyxcbiAgICAuLi5SRUFEX09OTFlfUFJPUEVSVElFUyxcbiAgICAuLi5WMjAyNV8wN18wMV9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wibG9jYXRpb25cIiwgXCJuYW1lXCJdLFxuICBvcHRpb25hbDogW1xuICAgIFwidGFnc1wiLFxuICAgIFwiYXBwTG9nc0NvbmZpZ3VyYXRpb25cIixcbiAgICBcInZuZXRDb25maWd1cmF0aW9uXCIsXG4gICAgXCJ3b3JrbG9hZFByb2ZpbGVzXCIsXG4gICAgXCJ6b25lUmVkdW5kYW50XCIsXG4gICAgXCJkYXByQUlJbnN0cnVtZW50YXRpb25LZXlcIixcbiAgICBcImRhcHJBSUNvbm5lY3Rpb25TdHJpbmdcIixcbiAgICBcImN1c3RvbURvbWFpbkNvbmZpZ3VyYXRpb25cIixcbiAgICBcImluZnJhc3RydWN0dXJlUmVzb3VyY2VHcm91cFwiLFxuICAgIFwicGVlckF1dGhlbnRpY2F0aW9uXCIsXG4gICAgXCJwZWVyVHJhZmZpY0NvbmZpZ3VyYXRpb25cIixcbiAgICBcImluZ3Jlc3NDb25maWd1cmF0aW9uXCIsXG4gICAgXCJwdWJsaWNOZXR3b3JrQWNjZXNzXCIsXG4gICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gIF0sXG4gIGRlcHJlY2F0ZWQ6IFtdLFxuICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7fSxcbiAgdmFsaWRhdGlvblJ1bGVzOiBbXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwibG9jYXRpb25cIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiTG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwibmFtZVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJOYW1lIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgQXBwIEVudmlyb25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBUEkgU2NoZW1hIGZvciBDb250YWluZXIgQXBwIEVudmlyb25tZW50IHZlcnNpb24gMjAyNS0wNy0wMVxuICovXG5leHBvcnQgY29uc3QgQ09OVEFJTkVSX0FQUF9FTlZJUk9OTUVOVF9TQ0hFTUFfMjAyNV8wN18wMTogQXBpU2NoZW1hID0ge1xuICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0LkFwcC9tYW5hZ2VkRW52aXJvbm1lbnRzXCIsXG4gIHZlcnNpb246IFwiMjAyNS0wNy0wMVwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgLi4uQ09NTU9OX1BST1BFUlRJRVMsXG4gICAgLi4uUkVBRF9PTkxZX1BST1BFUlRJRVMsXG4gICAgLi4uVjIwMjVfMDdfMDFfUFJPUEVSVElFUyxcbiAgfSxcbiAgcmVxdWlyZWQ6IFtcImxvY2F0aW9uXCIsIFwibmFtZVwiXSxcbiAgb3B0aW9uYWw6IFtcbiAgICBcInRhZ3NcIixcbiAgICBcImFwcExvZ3NDb25maWd1cmF0aW9uXCIsXG4gICAgXCJ2bmV0Q29uZmlndXJhdGlvblwiLFxuICAgIFwid29ya2xvYWRQcm9maWxlc1wiLFxuICAgIFwiem9uZVJlZHVuZGFudFwiLFxuICAgIFwiZGFwckFJSW5zdHJ1bWVudGF0aW9uS2V5XCIsXG4gICAgXCJkYXByQUlDb25uZWN0aW9uU3RyaW5nXCIsXG4gICAgXCJjdXN0b21Eb21haW5Db25maWd1cmF0aW9uXCIsXG4gICAgXCJpbmZyYXN0cnVjdHVyZVJlc291cmNlR3JvdXBcIixcbiAgICBcInBlZXJBdXRoZW50aWNhdGlvblwiLFxuICAgIFwicGVlclRyYWZmaWNDb25maWd1cmF0aW9uXCIsXG4gICAgXCJpbmdyZXNzQ29uZmlndXJhdGlvblwiLFxuICAgIFwicHVibGljTmV0d29ya0FjY2Vzc1wiLFxuICAgIFwiaWdub3JlQ2hhbmdlc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcImxvY2F0aW9uXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIkxvY2F0aW9uIGlzIHJlcXVpcmVkIGZvciBDb250YWluZXIgQXBwIEVudmlyb25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcIm5hbWVcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiTmFtZSBpcyByZXF1aXJlZCBmb3IgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudHNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OIENPTkZJR1VSQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFZlcnNpb24gY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIEFwcCBFbnZpcm9ubWVudCAyMDI0LTAzLTAxXG4gKi9cbmV4cG9ydCBjb25zdCBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1ZFUlNJT05fMjAyNF8wM18wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDI0LTAzLTAxXCIsXG4gIHNjaGVtYTogQ09OVEFJTkVSX0FQUF9FTlZJUk9OTUVOVF9TQ0hFTUFfMjAyNF8wM18wMSxcbiAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgcmVsZWFzZURhdGU6IFwiMjAyNC0wMy0wMVwiLFxuICBkZXByZWNhdGlvbkRhdGU6IHVuZGVmaW5lZCxcbiAgc3Vuc2V0RGF0ZTogdW5kZWZpbmVkLFxuICBicmVha2luZ0NoYW5nZXM6IFtdLFxuICBtaWdyYXRpb25HdWlkZTogXCIvZG9jcy9jb250YWluZXItYXBwLWVudmlyb25tZW50L21pZ3JhdGlvbi0yMDI0LTAzLTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgQVBJIHdpdGggd29ya2xvYWQgcHJvZmlsZXMsIFZOZXQgaW50ZWdyYXRpb24sIGFuZCBEYXByIHN1cHBvcnRcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBWZXJzaW9uIGNvbmZpZ3VyYXRpb24gZm9yIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgMjAyNS0wMi0wMi1wcmV2aWV3XG4gKi9cbmV4cG9ydCBjb25zdCBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1ZFUlNJT05fMjAyNV8wMl8wMl9QUkVWSUVXOiBWZXJzaW9uQ29uZmlnID1cbiAge1xuICAgIHZlcnNpb246IFwiMjAyNS0wMi0wMi1wcmV2aWV3XCIsXG4gICAgc2NoZW1hOiBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1NDSEVNQV8yMDI1XzAyXzAyX1BSRVZJRVcsXG4gICAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgICByZWxlYXNlRGF0ZTogXCIyMDI1LTAyLTAyXCIsXG4gICAgZGVwcmVjYXRpb25EYXRlOiB1bmRlZmluZWQsXG4gICAgc3Vuc2V0RGF0ZTogdW5kZWZpbmVkLFxuICAgIGJyZWFraW5nQ2hhbmdlczogW10sXG4gICAgbWlncmF0aW9uR3VpZGU6XG4gICAgICBcIi9kb2NzL2NvbnRhaW5lci1hcHAtZW52aXJvbm1lbnQvbWlncmF0aW9uLTIwMjUtMDItMDItcHJldmlld1wiLFxuICAgIGNoYW5nZUxvZzogW1xuICAgICAge1xuICAgICAgICBjaGFuZ2VUeXBlOiBcImFkZGVkXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiUHJldmlldyByZWxlYXNlIGFkZGluZyBwZWVyIGF1dGhlbnRpY2F0aW9uIChtVExTKSwgcGVlciB0cmFmZmljIGVuY3J5cHRpb24sIGluZ3Jlc3MgY29uZmlndXJhdGlvbiwgYW5kIHB1YmxpYyBuZXR3b3JrIGFjY2VzcyBjb250cm9sc1wiLFxuICAgICAgICBicmVha2luZzogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgQXBwIEVudmlyb25tZW50IDIwMjUtMDctMDFcbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRBSU5FUl9BUFBfRU5WSVJPTk1FTlRfVkVSU0lPTl8yMDI1XzA3XzAxOiBWZXJzaW9uQ29uZmlnID0ge1xuICB2ZXJzaW9uOiBcIjIwMjUtMDctMDFcIixcbiAgc2NoZW1hOiBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1NDSEVNQV8yMDI1XzA3XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICByZWxlYXNlRGF0ZTogXCIyMDI1LTA3LTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL2NvbnRhaW5lci1hcHAtZW52aXJvbm1lbnQvbWlncmF0aW9uLTIwMjUtMDctMDFcIixcbiAgY2hhbmdlTG9nOiBbXG4gICAge1xuICAgICAgY2hhbmdlVHlwZTogXCJhZGRlZFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQWRkZWQgcGVlciBhdXRoZW50aWNhdGlvbiAobVRMUyksIHBlZXIgdHJhZmZpYyBlbmNyeXB0aW9uLCBpbmdyZXNzIGNvbmZpZ3VyYXRpb24sIGFuZCBwdWJsaWMgbmV0d29yayBhY2Nlc3MgY29udHJvbHNcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBbGwgc3VwcG9ydGVkIENvbnRhaW5lciBBcHAgRW52aXJvbm1lbnQgdmVyc2lvbnMgZm9yIHJlZ2lzdHJhdGlvblxuICovXG5leHBvcnQgY29uc3QgQUxMX0NPTlRBSU5FUl9BUFBfRU5WSVJPTk1FTlRfVkVSU0lPTlM6IFZlcnNpb25Db25maWdbXSA9IFtcbiAgQ09OVEFJTkVSX0FQUF9FTlZJUk9OTUVOVF9WRVJTSU9OXzIwMjRfMDNfMDEsXG4gIENPTlRBSU5FUl9BUFBfRU5WSVJPTk1FTlRfVkVSU0lPTl8yMDI1XzAyXzAyX1BSRVZJRVcsXG4gIENPTlRBSU5FUl9BUFBfRU5WSVJPTk1FTlRfVkVSU0lPTl8yMDI1XzA3XzAxLFxuXTtcblxuLyoqXG4gKiBSZXNvdXJjZSB0eXBlIGNvbnN0YW50XG4gKi9cbmV4cG9ydCBjb25zdCBDT05UQUlORVJfQVBQX0VOVklST05NRU5UX1RZUEUgPVxuICBcIk1pY3Jvc29mdC5BcHAvbWFuYWdlZEVudmlyb25tZW50c1wiO1xuIl19