@decaf-ts/integrations 0.4.1-2 → 0.5.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 (1035) hide show
  1. package/dist/integrations.cjs +2 -2087
  2. package/dist/integrations.cjs.map +1 -0
  3. package/dist/integrations.js +2 -2356
  4. package/dist/integrations.js.map +1 -0
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -0
  7. package/lib/cjs/blob/azure/index.cjs +2 -2
  8. package/lib/cjs/blob/azure/index.cjs.map +1 -0
  9. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobErrors.cjs.map +1 -0
  11. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobKey.cjs.map +1 -0
  13. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  14. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +1 -0
  15. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  16. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -0
  17. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  18. package/lib/cjs/blob/core/BlobTypes.cjs.map +1 -0
  19. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  20. package/lib/cjs/blob/core/BlobValue.cjs.map +1 -0
  21. package/lib/cjs/blob/core/index.cjs +2 -2
  22. package/lib/cjs/blob/core/index.cjs.map +1 -0
  23. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -0
  25. package/lib/cjs/blob/gcp/index.cjs +2 -2
  26. package/lib/cjs/blob/gcp/index.cjs.map +1 -0
  27. package/lib/cjs/blob/index.cjs +2 -2
  28. package/lib/cjs/blob/index.cjs.map +1 -0
  29. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs +2 -2
  30. package/lib/cjs/blob/ipfs/IpfsBlobStoreService.cjs.map +1 -0
  31. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs +2 -2
  32. package/lib/cjs/blob/ipfs/IpfsKeyIndex.cjs.map +1 -0
  33. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs +2 -2
  34. package/lib/cjs/blob/ipfs/LocalJsonIpfsKeyIndex.cjs.map +1 -0
  35. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs +2 -2
  36. package/lib/cjs/blob/ipfs/MemoryIpfsKeyIndex.cjs.map +1 -0
  37. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs +2 -2
  38. package/lib/cjs/blob/ipfs/PostgresIpfsKeyIndex.cjs.map +1 -0
  39. package/lib/cjs/blob/ipfs/index.cjs +2 -2
  40. package/lib/cjs/blob/ipfs/index.cjs.map +1 -0
  41. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  42. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +1 -0
  43. package/lib/cjs/blob/local/index.cjs +2 -2
  44. package/lib/cjs/blob/local/index.cjs.map +1 -0
  45. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  46. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +1 -0
  47. package/lib/cjs/blob/memory/index.cjs +2 -2
  48. package/lib/cjs/blob/memory/index.cjs.map +1 -0
  49. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  50. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +1 -0
  51. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  52. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +1 -0
  53. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  54. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -0
  55. package/lib/cjs/blob/s3/index.cjs +2 -2
  56. package/lib/cjs/blob/s3/index.cjs.map +1 -0
  57. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  58. package/lib/cjs/docker/DockerComposeService.cjs.map +1 -0
  59. package/lib/cjs/docker/index.cjs +2 -2
  60. package/lib/cjs/docker/index.cjs.map +1 -0
  61. package/lib/cjs/feature-flags/constants.cjs +2 -2
  62. package/lib/cjs/feature-flags/constants.cjs.map +1 -0
  63. package/lib/cjs/feature-flags/decorators.cjs +2 -2
  64. package/lib/cjs/feature-flags/decorators.cjs.map +1 -0
  65. package/lib/cjs/feature-flags/environment.cjs +2 -2
  66. package/lib/cjs/feature-flags/environment.cjs.map +1 -0
  67. package/lib/cjs/feature-flags/index.cjs +2 -2
  68. package/lib/cjs/feature-flags/index.cjs.map +1 -0
  69. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
  70. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -0
  71. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
  72. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -0
  73. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
  74. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +1 -0
  75. package/lib/cjs/feature-flags/readers/index.cjs +2 -2
  76. package/lib/cjs/feature-flags/readers/index.cjs.map +1 -0
  77. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +13 -5
  78. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +1 -0
  79. package/lib/cjs/feature-flags/types.cjs +2 -2
  80. package/lib/cjs/feature-flags/types.cjs.map +1 -0
  81. package/lib/cjs/feature-flags/utils.cjs +2 -2
  82. package/lib/cjs/feature-flags/utils.cjs.map +1 -0
  83. package/lib/cjs/graph/engine/constants.cjs +2 -2
  84. package/lib/cjs/graph/engine/constants.cjs.map +1 -0
  85. package/lib/cjs/graph/engine/decorators.cjs +2 -2
  86. package/lib/cjs/graph/engine/decorators.cjs.map +1 -0
  87. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs +2 -2
  88. package/lib/cjs/graph/engine/errors/GraphCycleError.cjs.map +1 -0
  89. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs +2 -2
  90. package/lib/cjs/graph/engine/errors/GraphExecutionError.cjs.map +1 -0
  91. package/lib/cjs/graph/engine/errors/GraphInputError.cjs +2 -2
  92. package/lib/cjs/graph/engine/errors/GraphInputError.cjs.map +1 -0
  93. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs +2 -2
  94. package/lib/cjs/graph/engine/errors/GraphLoopLimitError.cjs.map +1 -0
  95. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs +2 -2
  96. package/lib/cjs/graph/engine/errors/GraphPinningError.cjs.map +1 -0
  97. package/lib/cjs/graph/engine/errors/GraphPortError.cjs +2 -2
  98. package/lib/cjs/graph/engine/errors/GraphPortError.cjs.map +1 -0
  99. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs +2 -2
  100. package/lib/cjs/graph/engine/errors/GraphStoreError.cjs.map +1 -0
  101. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs +2 -2
  102. package/lib/cjs/graph/engine/errors/GraphTopologyError.cjs.map +1 -0
  103. package/lib/cjs/graph/engine/errors/index.cjs +2 -2
  104. package/lib/cjs/graph/engine/errors/index.cjs.map +1 -0
  105. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs +2 -2
  106. package/lib/cjs/graph/engine/events/GraphExecutionEvent.cjs.map +1 -0
  107. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs +2 -2
  108. package/lib/cjs/graph/engine/events/GraphExecutionEventEmitter.cjs.map +1 -0
  109. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs +2 -2
  110. package/lib/cjs/graph/engine/events/GraphExecutionEventFactory.cjs.map +1 -0
  111. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs +2 -2
  112. package/lib/cjs/graph/engine/events/GraphExecutionObserver.cjs.map +1 -0
  113. package/lib/cjs/graph/engine/events/index.cjs +2 -2
  114. package/lib/cjs/graph/engine/events/index.cjs.map +1 -0
  115. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs +2 -2
  116. package/lib/cjs/graph/engine/execution/CodeGraphNodeExecutor.cjs.map +1 -0
  117. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs +2 -2
  118. package/lib/cjs/graph/engine/execution/CodeSandboxEvaluator.cjs.map +1 -0
  119. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs +2 -2
  120. package/lib/cjs/graph/engine/execution/GraphExecutionContext.cjs.map +1 -0
  121. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs +2 -2
  122. package/lib/cjs/graph/engine/execution/GraphExecutionEngine.cjs.map +1 -0
  123. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs +2 -2
  124. package/lib/cjs/graph/engine/execution/GraphExecutionFrame.cjs.map +1 -0
  125. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs +2 -2
  126. package/lib/cjs/graph/engine/execution/GraphExecutionResult.cjs.map +1 -0
  127. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs +2 -2
  128. package/lib/cjs/graph/engine/execution/GraphNodeExecutor.cjs.map +1 -0
  129. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs +2 -2
  130. package/lib/cjs/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.cjs.map +1 -0
  131. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs +2 -2
  132. package/lib/cjs/graph/engine/execution/LogGraphNodeExecutor.cjs.map +1 -0
  133. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs +2 -2
  134. package/lib/cjs/graph/engine/execution/SwitchGraphNodeExecutor.cjs.map +1 -0
  135. package/lib/cjs/graph/engine/execution/index.cjs +2 -2
  136. package/lib/cjs/graph/engine/execution/index.cjs.map +1 -0
  137. package/lib/cjs/graph/engine/index.cjs +2 -2
  138. package/lib/cjs/graph/engine/index.cjs.map +1 -0
  139. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs +2 -2
  140. package/lib/cjs/graph/engine/loops/ConditionExpressionEvaluator.cjs.map +1 -0
  141. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs +2 -2
  142. package/lib/cjs/graph/engine/loops/ForeachGraphNodeExecutor.cjs.map +1 -0
  143. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs +2 -2
  144. package/lib/cjs/graph/engine/loops/GraphConditionEvaluator.cjs.map +1 -0
  145. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs +2 -2
  146. package/lib/cjs/graph/engine/loops/GraphLoopExecutionContext.cjs.map +1 -0
  147. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs +2 -2
  148. package/lib/cjs/graph/engine/loops/UntilGraphNodeExecutor.cjs.map +1 -0
  149. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs +2 -2
  150. package/lib/cjs/graph/engine/loops/WhileGraphNodeExecutor.cjs.map +1 -0
  151. package/lib/cjs/graph/engine/loops/index.cjs +2 -2
  152. package/lib/cjs/graph/engine/loops/index.cjs.map +1 -0
  153. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs +2 -2
  154. package/lib/cjs/graph/engine/pinning/GraphPinningDependencyResolver.cjs.map +1 -0
  155. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs +2 -2
  156. package/lib/cjs/graph/engine/pinning/GraphPinningMetadata.cjs.map +1 -0
  157. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs +2 -2
  158. package/lib/cjs/graph/engine/pinning/GraphPinningPolicy.cjs.map +1 -0
  159. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs +2 -2
  160. package/lib/cjs/graph/engine/pinning/GraphPinningService.cjs.map +1 -0
  161. package/lib/cjs/graph/engine/pinning/index.cjs +2 -2
  162. package/lib/cjs/graph/engine/pinning/index.cjs.map +1 -0
  163. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs +2 -2
  164. package/lib/cjs/graph/engine/planning/GraphExecutionPlan.cjs.map +1 -0
  165. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs +2 -2
  166. package/lib/cjs/graph/engine/planning/GraphExecutionPlanEdge.cjs.map +1 -0
  167. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs +2 -2
  168. package/lib/cjs/graph/engine/planning/GraphExecutionPlanLayer.cjs.map +1 -0
  169. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs +2 -2
  170. package/lib/cjs/graph/engine/planning/GraphExecutionPlanNode.cjs.map +1 -0
  171. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs +2 -2
  172. package/lib/cjs/graph/engine/planning/GraphExecutionPlanner.cjs.map +1 -0
  173. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs +2 -2
  174. package/lib/cjs/graph/engine/planning/GraphRelationResolver.cjs.map +1 -0
  175. package/lib/cjs/graph/engine/planning/GraphTopology.cjs +2 -2
  176. package/lib/cjs/graph/engine/planning/GraphTopology.cjs.map +1 -0
  177. package/lib/cjs/graph/engine/planning/index.cjs +2 -2
  178. package/lib/cjs/graph/engine/planning/index.cjs.map +1 -0
  179. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs +2 -2
  180. package/lib/cjs/graph/engine/registry/GraphNodeExecutorRegistry.cjs.map +1 -0
  181. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs +2 -2
  182. package/lib/cjs/graph/engine/registry/GraphNodeExecutorResolver.cjs.map +1 -0
  183. package/lib/cjs/graph/engine/registry/index.cjs +2 -2
  184. package/lib/cjs/graph/engine/registry/index.cjs.map +1 -0
  185. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs +2 -2
  186. package/lib/cjs/graph/engine/snapshots/GraphExecutionSnapshotMapper.cjs.map +1 -0
  187. package/lib/cjs/graph/engine/snapshots/index.cjs +2 -2
  188. package/lib/cjs/graph/engine/snapshots/index.cjs.map +1 -0
  189. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs +2 -2
  190. package/lib/cjs/graph/engine/store/GraphCachedValue.cjs.map +1 -0
  191. package/lib/cjs/graph/engine/store/GraphValueKey.cjs +2 -2
  192. package/lib/cjs/graph/engine/store/GraphValueKey.cjs.map +1 -0
  193. package/lib/cjs/graph/engine/store/GraphValueStore.cjs +2 -2
  194. package/lib/cjs/graph/engine/store/GraphValueStore.cjs.map +1 -0
  195. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs +2 -2
  196. package/lib/cjs/graph/engine/store/GraphValueStoreAdapter.cjs.map +1 -0
  197. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs +2 -2
  198. package/lib/cjs/graph/engine/store/InMemoryGraphValueStoreAdapter.cjs.map +1 -0
  199. package/lib/cjs/graph/engine/store/index.cjs +2 -2
  200. package/lib/cjs/graph/engine/store/index.cjs.map +1 -0
  201. package/lib/cjs/graph/engine/types.cjs +2 -2
  202. package/lib/cjs/graph/engine/types.cjs.map +1 -0
  203. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs +2 -2
  204. package/lib/cjs/graph/engine/validation/GraphDefinitionValidator.cjs.map +1 -0
  205. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs +2 -2
  206. package/lib/cjs/graph/engine/validation/GraphPortSchemaResolver.cjs.map +1 -0
  207. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs +2 -2
  208. package/lib/cjs/graph/engine/validation/GraphValueValidator.cjs.map +1 -0
  209. package/lib/cjs/graph/engine/validation/index.cjs +2 -2
  210. package/lib/cjs/graph/engine/validation/index.cjs.map +1 -0
  211. package/lib/cjs/graph/index.cjs +2 -2
  212. package/lib/cjs/graph/index.cjs.map +1 -0
  213. package/lib/cjs/graph/shared/constants.cjs +2 -2
  214. package/lib/cjs/graph/shared/constants.cjs.map +1 -0
  215. package/lib/cjs/graph/shared/index.cjs +2 -2
  216. package/lib/cjs/graph/shared/index.cjs.map +1 -0
  217. package/lib/cjs/graph/shared/nodes/agent.cjs +2 -2
  218. package/lib/cjs/graph/shared/nodes/agent.cjs.map +1 -0
  219. package/lib/cjs/graph/shared/nodes/base.cjs +2 -2
  220. package/lib/cjs/graph/shared/nodes/base.cjs.map +1 -0
  221. package/lib/cjs/graph/shared/nodes/category-styles.cjs +2 -2
  222. package/lib/cjs/graph/shared/nodes/category-styles.cjs.map +1 -0
  223. package/lib/cjs/graph/shared/nodes/flow-control.cjs +2 -2
  224. package/lib/cjs/graph/shared/nodes/flow-control.cjs.map +1 -0
  225. package/lib/cjs/graph/shared/nodes/index.cjs +2 -2
  226. package/lib/cjs/graph/shared/nodes/index.cjs.map +1 -0
  227. package/lib/cjs/graph/shared/nodes/triggers.cjs +2 -2
  228. package/lib/cjs/graph/shared/nodes/triggers.cjs.map +1 -0
  229. package/lib/cjs/graph/shared/types.cjs +2 -2
  230. package/lib/cjs/graph/shared/types.cjs.map +1 -0
  231. package/lib/cjs/index.cjs +5 -5
  232. package/lib/cjs/index.cjs.map +1 -0
  233. package/lib/cjs/keycloak/index.cjs +2 -2
  234. package/lib/cjs/keycloak/index.cjs.map +1 -0
  235. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  236. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +1 -0
  237. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  238. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +1 -0
  239. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  240. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +1 -0
  241. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  242. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +1 -0
  243. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  244. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -0
  245. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  246. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -0
  247. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  248. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +1 -0
  249. package/lib/cjs/keycloak/services/index.cjs +2 -2
  250. package/lib/cjs/keycloak/services/index.cjs.map +1 -0
  251. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  252. package/lib/cjs/keycloak/services/runtime.cjs.map +1 -0
  253. package/lib/cjs/keycloak/types.cjs +2 -2
  254. package/lib/cjs/keycloak/types.cjs.map +1 -0
  255. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
  256. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +1 -0
  257. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
  258. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +1 -0
  259. package/lib/cjs/kibana/builders/index.cjs +2 -2
  260. package/lib/cjs/kibana/builders/index.cjs.map +1 -0
  261. package/lib/cjs/kibana/helpers.cjs +2 -2
  262. package/lib/cjs/kibana/helpers.cjs.map +1 -0
  263. package/lib/cjs/kibana/index.cjs +2 -2
  264. package/lib/cjs/kibana/index.cjs.map +1 -0
  265. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  266. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +1 -0
  267. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  268. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +1 -0
  269. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  270. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +1 -0
  271. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  272. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +1 -0
  273. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  274. package/lib/cjs/kibana/services/KibanaService.cjs.map +1 -0
  275. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  276. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +1 -0
  277. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  278. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +1 -0
  279. package/lib/cjs/kibana/services/index.cjs +2 -2
  280. package/lib/cjs/kibana/services/index.cjs.map +1 -0
  281. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  282. package/lib/cjs/kibana/services/runtime.cjs.map +1 -0
  283. package/lib/cjs/kibana/types.cjs +2 -2
  284. package/lib/cjs/kibana/types.cjs.map +1 -0
  285. package/lib/cjs/loader/ObjectLoader.cjs +2 -2
  286. package/lib/cjs/loader/ObjectLoader.cjs.map +1 -0
  287. package/lib/cjs/loader/families.cjs +2 -2
  288. package/lib/cjs/loader/families.cjs.map +1 -0
  289. package/lib/cjs/loader/index.cjs +2 -2
  290. package/lib/cjs/loader/index.cjs.map +1 -0
  291. package/lib/cjs/loader/types.cjs +2 -2
  292. package/lib/cjs/loader/types.cjs.map +1 -0
  293. package/lib/cjs/namespaces/index.cjs +2 -2
  294. package/lib/cjs/namespaces/index.cjs.map +1 -0
  295. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  296. package/lib/cjs/namespaces/models/authorization-model.cjs.map +1 -0
  297. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  298. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -0
  299. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  300. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -0
  301. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  302. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -0
  303. package/lib/cjs/namespaces/models/index.cjs +2 -2
  304. package/lib/cjs/namespaces/models/index.cjs.map +1 -0
  305. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  306. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -0
  307. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  308. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -0
  309. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  310. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -0
  311. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  312. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -0
  313. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  314. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -0
  315. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  316. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -0
  317. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  318. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -0
  319. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  320. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -0
  321. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  322. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -0
  323. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  324. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -0
  325. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  326. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -0
  327. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  328. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -0
  329. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  330. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -0
  331. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  332. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -0
  333. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  334. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -0
  335. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  336. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -0
  337. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  338. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -0
  339. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  340. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +1 -0
  341. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  342. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +1 -0
  343. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  344. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +1 -0
  345. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  346. package/lib/cjs/namespaces/services/authz.service.cjs.map +1 -0
  347. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  348. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +1 -0
  349. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  350. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +1 -0
  351. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  352. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +1 -0
  353. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  354. package/lib/cjs/namespaces/services/group.service.cjs.map +1 -0
  355. package/lib/cjs/namespaces/services/index.cjs +2 -2
  356. package/lib/cjs/namespaces/services/index.cjs.map +1 -0
  357. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  358. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +1 -0
  359. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  360. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +1 -0
  361. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  362. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +1 -0
  363. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  364. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +1 -0
  365. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  366. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +1 -0
  367. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  368. package/lib/cjs/namespaces/services/permission.service.cjs.map +1 -0
  369. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  370. package/lib/cjs/namespaces/services/principal.service.cjs.map +1 -0
  371. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  372. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +1 -0
  373. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  374. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +1 -0
  375. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  376. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +1 -0
  377. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  378. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +1 -0
  379. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  380. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +1 -0
  381. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  382. package/lib/cjs/namespaces/services/role.service.cjs.map +1 -0
  383. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  384. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +1 -0
  385. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  386. package/lib/cjs/namespaces/services/system-management.service.cjs.map +1 -0
  387. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  388. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +1 -0
  389. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  390. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +1 -0
  391. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  392. package/lib/cjs/namespaces/services/tenant.service.cjs.map +1 -0
  393. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  394. package/lib/cjs/namespaces/services/user.service.cjs.map +1 -0
  395. package/lib/cjs/namespaces/types.cjs +2 -2
  396. package/lib/cjs/namespaces/types.cjs.map +1 -0
  397. package/lib/cjs/namespaces/utils.cjs +2 -2
  398. package/lib/cjs/namespaces/utils.cjs.map +1 -0
  399. package/lib/cjs/nest/decorators.cjs +2 -2
  400. package/lib/cjs/nest/decorators.cjs.map +1 -0
  401. package/lib/cjs/nest/graph/GraphExecutionController.cjs +2 -2
  402. package/lib/cjs/nest/graph/GraphExecutionController.cjs.map +1 -0
  403. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +2 -2
  404. package/lib/cjs/nest/graph/GraphExecutionModule.cjs.map +1 -0
  405. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +2 -2
  406. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs.map +1 -0
  407. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +2 -2
  408. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs.map +1 -0
  409. package/lib/cjs/nest/graph/GraphResultService.cjs +2 -2
  410. package/lib/cjs/nest/graph/GraphResultService.cjs.map +1 -0
  411. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs +2 -2
  412. package/lib/cjs/nest/graph/GraphWorkflowModel.cjs.map +1 -0
  413. package/lib/cjs/nest/graph/GraphWorkflowService.cjs +2 -2
  414. package/lib/cjs/nest/graph/GraphWorkflowService.cjs.map +1 -0
  415. package/lib/cjs/nest/graph/index.cjs +2 -2
  416. package/lib/cjs/nest/graph/index.cjs.map +1 -0
  417. package/lib/cjs/nest/graph/main.cjs +2 -2
  418. package/lib/cjs/nest/graph/main.cjs.map +1 -0
  419. package/lib/cjs/nest/index.cjs +2 -2
  420. package/lib/cjs/nest/index.cjs.map +1 -0
  421. package/lib/cjs/nest/keycloakAuthHandler.cjs +5 -3
  422. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -0
  423. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  424. package/lib/cjs/nest/keycloakModule.cjs.map +1 -0
  425. package/lib/cjs/nest/logging.cjs +2 -2
  426. package/lib/cjs/nest/logging.cjs.map +1 -0
  427. package/lib/cjs/nest/types.cjs +2 -2
  428. package/lib/cjs/nest/types.cjs.map +1 -0
  429. package/lib/cjs/nest/utils.cjs +15 -4
  430. package/lib/cjs/nest/utils.cjs.map +1 -0
  431. package/lib/cjs/plugins/contract.cjs +2 -2
  432. package/lib/cjs/plugins/contract.cjs.map +1 -0
  433. package/lib/cjs/plugins/index.cjs +2 -2
  434. package/lib/cjs/plugins/index.cjs.map +1 -0
  435. package/lib/cjs/plugins/kibana/host.cjs +2 -2
  436. package/lib/cjs/plugins/kibana/host.cjs.map +1 -0
  437. package/lib/cjs/plugins/kibana/index.cjs +2 -2
  438. package/lib/cjs/plugins/kibana/index.cjs.map +1 -0
  439. package/lib/cjs/plugins/kibana/installer.cjs +2 -2
  440. package/lib/cjs/plugins/kibana/installer.cjs.map +1 -0
  441. package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
  442. package/lib/cjs/plugins/kibana/manifest.cjs.map +1 -0
  443. package/lib/cjs/plugins/kibana/templates.cjs +2 -2
  444. package/lib/cjs/plugins/kibana/templates.cjs.map +1 -0
  445. package/lib/cjs/plugins/kibana/types.cjs +2 -2
  446. package/lib/cjs/plugins/kibana/types.cjs.map +1 -0
  447. package/lib/cjs/plugins/superset/host.cjs +2 -2
  448. package/lib/cjs/plugins/superset/host.cjs.map +1 -0
  449. package/lib/cjs/plugins/superset/index.cjs +2 -2
  450. package/lib/cjs/plugins/superset/index.cjs.map +1 -0
  451. package/lib/cjs/plugins/superset/installer.cjs +2 -2
  452. package/lib/cjs/plugins/superset/installer.cjs.map +1 -0
  453. package/lib/cjs/plugins/superset/manifest.cjs +2 -2
  454. package/lib/cjs/plugins/superset/manifest.cjs.map +1 -0
  455. package/lib/cjs/plugins/superset/templates.cjs +2 -2
  456. package/lib/cjs/plugins/superset/templates.cjs.map +1 -0
  457. package/lib/cjs/plugins/superset/types.cjs +2 -2
  458. package/lib/cjs/plugins/superset/types.cjs.map +1 -0
  459. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  460. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -0
  461. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  462. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +1 -0
  463. package/lib/cjs/secrets/aws/index.cjs +2 -2
  464. package/lib/cjs/secrets/aws/index.cjs.map +1 -0
  465. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  466. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -0
  467. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  468. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +1 -0
  469. package/lib/cjs/secrets/azure/index.cjs +2 -2
  470. package/lib/cjs/secrets/azure/index.cjs.map +1 -0
  471. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  472. package/lib/cjs/secrets/core/SecretErrors.cjs.map +1 -0
  473. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  474. package/lib/cjs/secrets/core/SecretName.cjs.map +1 -0
  475. package/lib/cjs/secrets/core/SecretReference.cjs +2 -2
  476. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -0
  477. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  478. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +1 -0
  479. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  480. package/lib/cjs/secrets/core/SecretService.cjs.map +1 -0
  481. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  482. package/lib/cjs/secrets/core/SecretTypes.cjs.map +1 -0
  483. package/lib/cjs/secrets/core/index.cjs +2 -2
  484. package/lib/cjs/secrets/core/index.cjs.map +1 -0
  485. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  486. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -0
  487. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  488. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +1 -0
  489. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  490. package/lib/cjs/secrets/gcp/index.cjs.map +1 -0
  491. package/lib/cjs/secrets/index.cjs +2 -2
  492. package/lib/cjs/secrets/index.cjs.map +1 -0
  493. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  494. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +1 -0
  495. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  496. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -0
  497. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  498. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +1 -0
  499. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  500. package/lib/cjs/secrets/model/Secret.cjs.map +1 -0
  501. package/lib/cjs/secrets/model/index.cjs +2 -2
  502. package/lib/cjs/secrets/model/index.cjs.map +1 -0
  503. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  504. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -0
  505. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  506. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +1 -0
  507. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  508. package/lib/cjs/secrets/onepassword/index.cjs.map +1 -0
  509. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  510. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -0
  511. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  512. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +1 -0
  513. package/lib/cjs/secrets/vault/index.cjs +2 -2
  514. package/lib/cjs/secrets/vault/index.cjs.map +1 -0
  515. package/lib/cjs/shared/runtime.cjs +2 -2
  516. package/lib/cjs/shared/runtime.cjs.map +1 -0
  517. package/lib/cjs/utils.cjs +2 -2
  518. package/lib/cjs/utils.cjs.map +1 -0
  519. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  520. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -0
  521. package/lib/esm/blob/azure/index.js +1 -1
  522. package/lib/esm/blob/azure/index.js.map +1 -0
  523. package/lib/esm/blob/core/BlobErrors.js +1 -1
  524. package/lib/esm/blob/core/BlobErrors.js.map +1 -0
  525. package/lib/esm/blob/core/BlobKey.js +1 -1
  526. package/lib/esm/blob/core/BlobKey.js.map +1 -0
  527. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  528. package/lib/esm/blob/core/BlobStoreFactory.js.map +1 -0
  529. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  530. package/lib/esm/blob/core/BlobStoreService.js.map +1 -0
  531. package/lib/esm/blob/core/BlobTypes.js +1 -1
  532. package/lib/esm/blob/core/BlobTypes.js.map +1 -0
  533. package/lib/esm/blob/core/BlobValue.js +1 -1
  534. package/lib/esm/blob/core/BlobValue.js.map +1 -0
  535. package/lib/esm/blob/core/index.js +1 -1
  536. package/lib/esm/blob/core/index.js.map +1 -0
  537. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  538. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -0
  539. package/lib/esm/blob/gcp/index.js +1 -1
  540. package/lib/esm/blob/gcp/index.js.map +1 -0
  541. package/lib/esm/blob/index.js +1 -1
  542. package/lib/esm/blob/index.js.map +1 -0
  543. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js +1 -1
  544. package/lib/esm/blob/ipfs/IpfsBlobStoreService.js.map +1 -0
  545. package/lib/esm/blob/ipfs/IpfsKeyIndex.js +1 -1
  546. package/lib/esm/blob/ipfs/IpfsKeyIndex.js.map +1 -0
  547. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js +1 -1
  548. package/lib/esm/blob/ipfs/LocalJsonIpfsKeyIndex.js.map +1 -0
  549. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js +1 -1
  550. package/lib/esm/blob/ipfs/MemoryIpfsKeyIndex.js.map +1 -0
  551. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js +1 -1
  552. package/lib/esm/blob/ipfs/PostgresIpfsKeyIndex.js.map +1 -0
  553. package/lib/esm/blob/ipfs/index.js +1 -1
  554. package/lib/esm/blob/ipfs/index.js.map +1 -0
  555. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  556. package/lib/esm/blob/local/LocalBlobStoreService.js.map +1 -0
  557. package/lib/esm/blob/local/index.js +1 -1
  558. package/lib/esm/blob/local/index.js.map +1 -0
  559. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  560. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +1 -0
  561. package/lib/esm/blob/memory/index.js +1 -1
  562. package/lib/esm/blob/memory/index.js.map +1 -0
  563. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  564. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +1 -0
  565. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  566. package/lib/esm/blob/s3/R2BlobStoreService.js.map +1 -0
  567. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  568. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -0
  569. package/lib/esm/blob/s3/index.js +1 -1
  570. package/lib/esm/blob/s3/index.js.map +1 -0
  571. package/lib/esm/docker/DockerComposeService.js +1 -1
  572. package/lib/esm/docker/DockerComposeService.js.map +1 -0
  573. package/lib/esm/docker/index.js +1 -1
  574. package/lib/esm/docker/index.js.map +1 -0
  575. package/lib/esm/feature-flags/constants.js +1 -1
  576. package/lib/esm/feature-flags/constants.js.map +1 -0
  577. package/lib/esm/feature-flags/decorators.js +1 -1
  578. package/lib/esm/feature-flags/decorators.js.map +1 -0
  579. package/lib/esm/feature-flags/environment.js +1 -1
  580. package/lib/esm/feature-flags/environment.js.map +1 -0
  581. package/lib/esm/feature-flags/index.js +1 -1
  582. package/lib/esm/feature-flags/index.js.map +1 -0
  583. package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
  584. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -0
  585. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
  586. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -0
  587. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
  588. package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +1 -0
  589. package/lib/esm/feature-flags/readers/index.js +1 -1
  590. package/lib/esm/feature-flags/readers/index.js.map +1 -0
  591. package/lib/esm/feature-flags/services/FeatureFlag.service.js +13 -5
  592. package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +1 -0
  593. package/lib/esm/feature-flags/types.js +1 -1
  594. package/lib/esm/feature-flags/types.js.map +1 -0
  595. package/lib/esm/feature-flags/utils.js +1 -1
  596. package/lib/esm/feature-flags/utils.js.map +1 -0
  597. package/lib/esm/graph/engine/constants.js +1 -1
  598. package/lib/esm/graph/engine/constants.js.map +1 -0
  599. package/lib/esm/graph/engine/decorators.js +1 -1
  600. package/lib/esm/graph/engine/decorators.js.map +1 -0
  601. package/lib/esm/graph/engine/errors/GraphCycleError.js +1 -1
  602. package/lib/esm/graph/engine/errors/GraphCycleError.js.map +1 -0
  603. package/lib/esm/graph/engine/errors/GraphExecutionError.js +1 -1
  604. package/lib/esm/graph/engine/errors/GraphExecutionError.js.map +1 -0
  605. package/lib/esm/graph/engine/errors/GraphInputError.js +1 -1
  606. package/lib/esm/graph/engine/errors/GraphInputError.js.map +1 -0
  607. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js +1 -1
  608. package/lib/esm/graph/engine/errors/GraphLoopLimitError.js.map +1 -0
  609. package/lib/esm/graph/engine/errors/GraphPinningError.js +1 -1
  610. package/lib/esm/graph/engine/errors/GraphPinningError.js.map +1 -0
  611. package/lib/esm/graph/engine/errors/GraphPortError.js +1 -1
  612. package/lib/esm/graph/engine/errors/GraphPortError.js.map +1 -0
  613. package/lib/esm/graph/engine/errors/GraphStoreError.js +1 -1
  614. package/lib/esm/graph/engine/errors/GraphStoreError.js.map +1 -0
  615. package/lib/esm/graph/engine/errors/GraphTopologyError.js +1 -1
  616. package/lib/esm/graph/engine/errors/GraphTopologyError.js.map +1 -0
  617. package/lib/esm/graph/engine/errors/index.js +1 -1
  618. package/lib/esm/graph/engine/errors/index.js.map +1 -0
  619. package/lib/esm/graph/engine/events/GraphExecutionEvent.js +1 -1
  620. package/lib/esm/graph/engine/events/GraphExecutionEvent.js.map +1 -0
  621. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js +1 -1
  622. package/lib/esm/graph/engine/events/GraphExecutionEventEmitter.js.map +1 -0
  623. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js +1 -1
  624. package/lib/esm/graph/engine/events/GraphExecutionEventFactory.js.map +1 -0
  625. package/lib/esm/graph/engine/events/GraphExecutionObserver.js +1 -1
  626. package/lib/esm/graph/engine/events/GraphExecutionObserver.js.map +1 -0
  627. package/lib/esm/graph/engine/events/index.js +1 -1
  628. package/lib/esm/graph/engine/events/index.js.map +1 -0
  629. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js +1 -1
  630. package/lib/esm/graph/engine/execution/CodeGraphNodeExecutor.js.map +1 -0
  631. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js +1 -1
  632. package/lib/esm/graph/engine/execution/CodeSandboxEvaluator.js.map +1 -0
  633. package/lib/esm/graph/engine/execution/GraphExecutionContext.js +1 -1
  634. package/lib/esm/graph/engine/execution/GraphExecutionContext.js.map +1 -0
  635. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js +1 -1
  636. package/lib/esm/graph/engine/execution/GraphExecutionEngine.js.map +1 -0
  637. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js +1 -1
  638. package/lib/esm/graph/engine/execution/GraphExecutionFrame.js.map +1 -0
  639. package/lib/esm/graph/engine/execution/GraphExecutionResult.js +1 -1
  640. package/lib/esm/graph/engine/execution/GraphExecutionResult.js.map +1 -0
  641. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js +1 -1
  642. package/lib/esm/graph/engine/execution/GraphNodeExecutor.js.map +1 -0
  643. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js +1 -1
  644. package/lib/esm/graph/engine/execution/IsolatedVmCodeSandboxEvaluator.js.map +1 -0
  645. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js +1 -1
  646. package/lib/esm/graph/engine/execution/LogGraphNodeExecutor.js.map +1 -0
  647. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js +1 -1
  648. package/lib/esm/graph/engine/execution/SwitchGraphNodeExecutor.js.map +1 -0
  649. package/lib/esm/graph/engine/execution/index.js +1 -1
  650. package/lib/esm/graph/engine/execution/index.js.map +1 -0
  651. package/lib/esm/graph/engine/index.js +1 -1
  652. package/lib/esm/graph/engine/index.js.map +1 -0
  653. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js +1 -1
  654. package/lib/esm/graph/engine/loops/ConditionExpressionEvaluator.js.map +1 -0
  655. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js +1 -1
  656. package/lib/esm/graph/engine/loops/ForeachGraphNodeExecutor.js.map +1 -0
  657. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js +1 -1
  658. package/lib/esm/graph/engine/loops/GraphConditionEvaluator.js.map +1 -0
  659. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js +1 -1
  660. package/lib/esm/graph/engine/loops/GraphLoopExecutionContext.js.map +1 -0
  661. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js +1 -1
  662. package/lib/esm/graph/engine/loops/UntilGraphNodeExecutor.js.map +1 -0
  663. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js +1 -1
  664. package/lib/esm/graph/engine/loops/WhileGraphNodeExecutor.js.map +1 -0
  665. package/lib/esm/graph/engine/loops/index.js +1 -1
  666. package/lib/esm/graph/engine/loops/index.js.map +1 -0
  667. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js +1 -1
  668. package/lib/esm/graph/engine/pinning/GraphPinningDependencyResolver.js.map +1 -0
  669. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js +1 -1
  670. package/lib/esm/graph/engine/pinning/GraphPinningMetadata.js.map +1 -0
  671. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js +1 -1
  672. package/lib/esm/graph/engine/pinning/GraphPinningPolicy.js.map +1 -0
  673. package/lib/esm/graph/engine/pinning/GraphPinningService.js +1 -1
  674. package/lib/esm/graph/engine/pinning/GraphPinningService.js.map +1 -0
  675. package/lib/esm/graph/engine/pinning/index.js +1 -1
  676. package/lib/esm/graph/engine/pinning/index.js.map +1 -0
  677. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js +1 -1
  678. package/lib/esm/graph/engine/planning/GraphExecutionPlan.js.map +1 -0
  679. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js +1 -1
  680. package/lib/esm/graph/engine/planning/GraphExecutionPlanEdge.js.map +1 -0
  681. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js +1 -1
  682. package/lib/esm/graph/engine/planning/GraphExecutionPlanLayer.js.map +1 -0
  683. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js +1 -1
  684. package/lib/esm/graph/engine/planning/GraphExecutionPlanNode.js.map +1 -0
  685. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js +1 -1
  686. package/lib/esm/graph/engine/planning/GraphExecutionPlanner.js.map +1 -0
  687. package/lib/esm/graph/engine/planning/GraphRelationResolver.js +1 -1
  688. package/lib/esm/graph/engine/planning/GraphRelationResolver.js.map +1 -0
  689. package/lib/esm/graph/engine/planning/GraphTopology.js +1 -1
  690. package/lib/esm/graph/engine/planning/GraphTopology.js.map +1 -0
  691. package/lib/esm/graph/engine/planning/index.js +1 -1
  692. package/lib/esm/graph/engine/planning/index.js.map +1 -0
  693. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js +1 -1
  694. package/lib/esm/graph/engine/registry/GraphNodeExecutorRegistry.js.map +1 -0
  695. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js +1 -1
  696. package/lib/esm/graph/engine/registry/GraphNodeExecutorResolver.js.map +1 -0
  697. package/lib/esm/graph/engine/registry/index.js +1 -1
  698. package/lib/esm/graph/engine/registry/index.js.map +1 -0
  699. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js +1 -1
  700. package/lib/esm/graph/engine/snapshots/GraphExecutionSnapshotMapper.js.map +1 -0
  701. package/lib/esm/graph/engine/snapshots/index.js +1 -1
  702. package/lib/esm/graph/engine/snapshots/index.js.map +1 -0
  703. package/lib/esm/graph/engine/store/GraphCachedValue.js +1 -1
  704. package/lib/esm/graph/engine/store/GraphCachedValue.js.map +1 -0
  705. package/lib/esm/graph/engine/store/GraphValueKey.js +1 -1
  706. package/lib/esm/graph/engine/store/GraphValueKey.js.map +1 -0
  707. package/lib/esm/graph/engine/store/GraphValueStore.js +1 -1
  708. package/lib/esm/graph/engine/store/GraphValueStore.js.map +1 -0
  709. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js +1 -1
  710. package/lib/esm/graph/engine/store/GraphValueStoreAdapter.js.map +1 -0
  711. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js +1 -1
  712. package/lib/esm/graph/engine/store/InMemoryGraphValueStoreAdapter.js.map +1 -0
  713. package/lib/esm/graph/engine/store/index.js +1 -1
  714. package/lib/esm/graph/engine/store/index.js.map +1 -0
  715. package/lib/esm/graph/engine/types.js +1 -1
  716. package/lib/esm/graph/engine/types.js.map +1 -0
  717. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js +1 -1
  718. package/lib/esm/graph/engine/validation/GraphDefinitionValidator.js.map +1 -0
  719. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js +1 -1
  720. package/lib/esm/graph/engine/validation/GraphPortSchemaResolver.js.map +1 -0
  721. package/lib/esm/graph/engine/validation/GraphValueValidator.js +1 -1
  722. package/lib/esm/graph/engine/validation/GraphValueValidator.js.map +1 -0
  723. package/lib/esm/graph/engine/validation/index.js +1 -1
  724. package/lib/esm/graph/engine/validation/index.js.map +1 -0
  725. package/lib/esm/graph/index.js +1 -1
  726. package/lib/esm/graph/index.js.map +1 -0
  727. package/lib/esm/graph/shared/constants.js +1 -1
  728. package/lib/esm/graph/shared/constants.js.map +1 -0
  729. package/lib/esm/graph/shared/index.js +1 -1
  730. package/lib/esm/graph/shared/index.js.map +1 -0
  731. package/lib/esm/graph/shared/nodes/agent.js +1 -1
  732. package/lib/esm/graph/shared/nodes/agent.js.map +1 -0
  733. package/lib/esm/graph/shared/nodes/base.js +1 -1
  734. package/lib/esm/graph/shared/nodes/base.js.map +1 -0
  735. package/lib/esm/graph/shared/nodes/category-styles.js +1 -1
  736. package/lib/esm/graph/shared/nodes/category-styles.js.map +1 -0
  737. package/lib/esm/graph/shared/nodes/flow-control.js +1 -1
  738. package/lib/esm/graph/shared/nodes/flow-control.js.map +1 -0
  739. package/lib/esm/graph/shared/nodes/index.js +1 -1
  740. package/lib/esm/graph/shared/nodes/index.js.map +1 -0
  741. package/lib/esm/graph/shared/nodes/triggers.js +1 -1
  742. package/lib/esm/graph/shared/nodes/triggers.js.map +1 -0
  743. package/lib/esm/graph/shared/types.js +1 -1
  744. package/lib/esm/graph/shared/types.js.map +1 -0
  745. package/lib/esm/index.js +4 -4
  746. package/lib/esm/index.js.map +1 -0
  747. package/lib/esm/keycloak/index.js +1 -1
  748. package/lib/esm/keycloak/index.js.map +1 -0
  749. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  750. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +1 -0
  751. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  752. package/lib/esm/keycloak/services/KeycloakClientService.js.map +1 -0
  753. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  754. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +1 -0
  755. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  756. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +1 -0
  757. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  758. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -0
  759. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  760. package/lib/esm/keycloak/services/KeycloakService.js.map +1 -0
  761. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  762. package/lib/esm/keycloak/services/KeycloakUserService.js.map +1 -0
  763. package/lib/esm/keycloak/services/index.js +1 -1
  764. package/lib/esm/keycloak/services/index.js.map +1 -0
  765. package/lib/esm/keycloak/services/runtime.js +1 -1
  766. package/lib/esm/keycloak/services/runtime.js.map +1 -0
  767. package/lib/esm/keycloak/types.js +1 -1
  768. package/lib/esm/keycloak/types.js.map +1 -0
  769. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
  770. package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +1 -0
  771. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
  772. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +1 -0
  773. package/lib/esm/kibana/builders/index.js +1 -1
  774. package/lib/esm/kibana/builders/index.js.map +1 -0
  775. package/lib/esm/kibana/helpers.js +1 -1
  776. package/lib/esm/kibana/helpers.js.map +1 -0
  777. package/lib/esm/kibana/index.js +1 -1
  778. package/lib/esm/kibana/index.js.map +1 -0
  779. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  780. package/lib/esm/kibana/services/KibanaAuthService.js.map +1 -0
  781. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  782. package/lib/esm/kibana/services/KibanaDashboardService.js.map +1 -0
  783. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  784. package/lib/esm/kibana/services/KibanaDataViewService.js.map +1 -0
  785. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  786. package/lib/esm/kibana/services/KibanaRoleService.js.map +1 -0
  787. package/lib/esm/kibana/services/KibanaService.js +1 -1
  788. package/lib/esm/kibana/services/KibanaService.js.map +1 -0
  789. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  790. package/lib/esm/kibana/services/KibanaSpaceService.js.map +1 -0
  791. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  792. package/lib/esm/kibana/services/KibanaUserService.js.map +1 -0
  793. package/lib/esm/kibana/services/index.js +1 -1
  794. package/lib/esm/kibana/services/index.js.map +1 -0
  795. package/lib/esm/kibana/services/runtime.js +1 -1
  796. package/lib/esm/kibana/services/runtime.js.map +1 -0
  797. package/lib/esm/kibana/types.js +1 -1
  798. package/lib/esm/kibana/types.js.map +1 -0
  799. package/lib/esm/loader/ObjectLoader.js +1 -1
  800. package/lib/esm/loader/ObjectLoader.js.map +1 -0
  801. package/lib/esm/loader/families.js +1 -1
  802. package/lib/esm/loader/families.js.map +1 -0
  803. package/lib/esm/loader/index.js +1 -1
  804. package/lib/esm/loader/index.js.map +1 -0
  805. package/lib/esm/loader/types.js +1 -1
  806. package/lib/esm/loader/types.js.map +1 -0
  807. package/lib/esm/namespaces/index.js +1 -1
  808. package/lib/esm/namespaces/index.js.map +1 -0
  809. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  810. package/lib/esm/namespaces/models/authorization-model.js.map +1 -0
  811. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  812. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -0
  813. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  814. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -0
  815. package/lib/esm/namespaces/models/group.model.js +1 -1
  816. package/lib/esm/namespaces/models/group.model.js.map +1 -0
  817. package/lib/esm/namespaces/models/index.js +1 -1
  818. package/lib/esm/namespaces/models/index.js.map +1 -0
  819. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  820. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -0
  821. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  822. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -0
  823. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  824. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -0
  825. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  826. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -0
  827. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  828. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -0
  829. package/lib/esm/namespaces/models/permission.model.js +1 -1
  830. package/lib/esm/namespaces/models/permission.model.js.map +1 -0
  831. package/lib/esm/namespaces/models/principal.model.js +1 -1
  832. package/lib/esm/namespaces/models/principal.model.js.map +1 -0
  833. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  834. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -0
  835. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  836. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -0
  837. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  838. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -0
  839. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  840. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -0
  841. package/lib/esm/namespaces/models/role.model.js +1 -1
  842. package/lib/esm/namespaces/models/role.model.js.map +1 -0
  843. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  844. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -0
  845. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  846. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -0
  847. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  848. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -0
  849. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  850. package/lib/esm/namespaces/models/tenant.model.js.map +1 -0
  851. package/lib/esm/namespaces/models/user.model.js +1 -1
  852. package/lib/esm/namespaces/models/user.model.js.map +1 -0
  853. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  854. package/lib/esm/namespaces/org-based-authorization-system.js.map +1 -0
  855. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  856. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +1 -0
  857. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  858. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +1 -0
  859. package/lib/esm/namespaces/services/authz.service.js +1 -1
  860. package/lib/esm/namespaces/services/authz.service.js.map +1 -0
  861. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  862. package/lib/esm/namespaces/services/bootstrap.service.js.map +1 -0
  863. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  864. package/lib/esm/namespaces/services/effective-permission.service.js.map +1 -0
  865. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  866. package/lib/esm/namespaces/services/group-membership.service.js.map +1 -0
  867. package/lib/esm/namespaces/services/group.service.js +1 -1
  868. package/lib/esm/namespaces/services/group.service.js.map +1 -0
  869. package/lib/esm/namespaces/services/index.js +1 -1
  870. package/lib/esm/namespaces/services/index.js.map +1 -0
  871. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  872. package/lib/esm/namespaces/services/inheritance-block.service.js.map +1 -0
  873. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  874. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +1 -0
  875. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  876. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +1 -0
  877. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  878. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +1 -0
  879. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  880. package/lib/esm/namespaces/services/org-unit.service.js.map +1 -0
  881. package/lib/esm/namespaces/services/permission.service.js +1 -1
  882. package/lib/esm/namespaces/services/permission.service.js.map +1 -0
  883. package/lib/esm/namespaces/services/principal.service.js +1 -1
  884. package/lib/esm/namespaces/services/principal.service.js.map +1 -0
  885. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  886. package/lib/esm/namespaces/services/protected-resource.service.js.map +1 -0
  887. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  888. package/lib/esm/namespaces/services/resource-grant.service.js.map +1 -0
  889. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  890. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +1 -0
  891. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  892. package/lib/esm/namespaces/services/role-assignment.service.js.map +1 -0
  893. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  894. package/lib/esm/namespaces/services/role-permission.service.js.map +1 -0
  895. package/lib/esm/namespaces/services/role.service.js +1 -1
  896. package/lib/esm/namespaces/services/role.service.js.map +1 -0
  897. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  898. package/lib/esm/namespaces/services/storage-binding.service.js.map +1 -0
  899. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  900. package/lib/esm/namespaces/services/system-management.service.js.map +1 -0
  901. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  902. package/lib/esm/namespaces/services/tenant-membership.service.js.map +1 -0
  903. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  904. package/lib/esm/namespaces/services/tenant-profile.service.js.map +1 -0
  905. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  906. package/lib/esm/namespaces/services/tenant.service.js.map +1 -0
  907. package/lib/esm/namespaces/services/user.service.js +1 -1
  908. package/lib/esm/namespaces/services/user.service.js.map +1 -0
  909. package/lib/esm/namespaces/types.js +1 -1
  910. package/lib/esm/namespaces/types.js.map +1 -0
  911. package/lib/esm/namespaces/utils.js +1 -1
  912. package/lib/esm/namespaces/utils.js.map +1 -0
  913. package/lib/esm/nest/decorators.js +1 -1
  914. package/lib/esm/nest/decorators.js.map +1 -0
  915. package/lib/esm/nest/graph/GraphExecutionController.js +1 -1
  916. package/lib/esm/nest/graph/GraphExecutionController.js.map +1 -0
  917. package/lib/esm/nest/graph/GraphExecutionModule.js +1 -1
  918. package/lib/esm/nest/graph/GraphExecutionModule.js.map +1 -0
  919. package/lib/esm/nest/graph/GraphExecutionResultModel.js +1 -1
  920. package/lib/esm/nest/graph/GraphExecutionResultModel.js.map +1 -0
  921. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +1 -1
  922. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js.map +1 -0
  923. package/lib/esm/nest/graph/GraphResultService.js +1 -1
  924. package/lib/esm/nest/graph/GraphResultService.js.map +1 -0
  925. package/lib/esm/nest/graph/GraphWorkflowModel.js +1 -1
  926. package/lib/esm/nest/graph/GraphWorkflowModel.js.map +1 -0
  927. package/lib/esm/nest/graph/GraphWorkflowService.js +1 -1
  928. package/lib/esm/nest/graph/GraphWorkflowService.js.map +1 -0
  929. package/lib/esm/nest/graph/index.js +1 -1
  930. package/lib/esm/nest/graph/index.js.map +1 -0
  931. package/lib/esm/nest/graph/main.js +1 -1
  932. package/lib/esm/nest/graph/main.js.map +1 -0
  933. package/lib/esm/nest/index.js +1 -1
  934. package/lib/esm/nest/index.js.map +1 -0
  935. package/lib/esm/nest/keycloakAuthHandler.js +4 -2
  936. package/lib/esm/nest/keycloakAuthHandler.js.map +1 -0
  937. package/lib/esm/nest/keycloakModule.js +1 -1
  938. package/lib/esm/nest/keycloakModule.js.map +1 -0
  939. package/lib/esm/nest/logging.js +1 -1
  940. package/lib/esm/nest/logging.js.map +1 -0
  941. package/lib/esm/nest/types.js +1 -1
  942. package/lib/esm/nest/types.js.map +1 -0
  943. package/lib/esm/nest/utils.js +14 -3
  944. package/lib/esm/nest/utils.js.map +1 -0
  945. package/lib/esm/plugins/contract.js +1 -1
  946. package/lib/esm/plugins/contract.js.map +1 -0
  947. package/lib/esm/plugins/index.js +1 -1
  948. package/lib/esm/plugins/index.js.map +1 -0
  949. package/lib/esm/plugins/kibana/host.js +1 -1
  950. package/lib/esm/plugins/kibana/host.js.map +1 -0
  951. package/lib/esm/plugins/kibana/index.js +1 -1
  952. package/lib/esm/plugins/kibana/index.js.map +1 -0
  953. package/lib/esm/plugins/kibana/installer.js +1 -1
  954. package/lib/esm/plugins/kibana/installer.js.map +1 -0
  955. package/lib/esm/plugins/kibana/manifest.js +1 -1
  956. package/lib/esm/plugins/kibana/manifest.js.map +1 -0
  957. package/lib/esm/plugins/kibana/templates.js +1 -1
  958. package/lib/esm/plugins/kibana/templates.js.map +1 -0
  959. package/lib/esm/plugins/kibana/types.js +1 -1
  960. package/lib/esm/plugins/kibana/types.js.map +1 -0
  961. package/lib/esm/plugins/superset/host.js +1 -1
  962. package/lib/esm/plugins/superset/host.js.map +1 -0
  963. package/lib/esm/plugins/superset/index.js +1 -1
  964. package/lib/esm/plugins/superset/index.js.map +1 -0
  965. package/lib/esm/plugins/superset/installer.js +1 -1
  966. package/lib/esm/plugins/superset/installer.js.map +1 -0
  967. package/lib/esm/plugins/superset/manifest.js +1 -1
  968. package/lib/esm/plugins/superset/manifest.js.map +1 -0
  969. package/lib/esm/plugins/superset/templates.js +1 -1
  970. package/lib/esm/plugins/superset/templates.js.map +1 -0
  971. package/lib/esm/plugins/superset/types.js +1 -1
  972. package/lib/esm/plugins/superset/types.js.map +1 -0
  973. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  974. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -0
  975. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  976. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +1 -0
  977. package/lib/esm/secrets/aws/index.js +1 -1
  978. package/lib/esm/secrets/aws/index.js.map +1 -0
  979. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  980. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -0
  981. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  982. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +1 -0
  983. package/lib/esm/secrets/azure/index.js +1 -1
  984. package/lib/esm/secrets/azure/index.js.map +1 -0
  985. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  986. package/lib/esm/secrets/core/SecretErrors.js.map +1 -0
  987. package/lib/esm/secrets/core/SecretName.js +1 -1
  988. package/lib/esm/secrets/core/SecretName.js.map +1 -0
  989. package/lib/esm/secrets/core/SecretReference.js +1 -1
  990. package/lib/esm/secrets/core/SecretReference.js.map +1 -0
  991. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  992. package/lib/esm/secrets/core/SecretSerialization.js.map +1 -0
  993. package/lib/esm/secrets/core/SecretService.js +1 -1
  994. package/lib/esm/secrets/core/SecretService.js.map +1 -0
  995. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  996. package/lib/esm/secrets/core/SecretTypes.js.map +1 -0
  997. package/lib/esm/secrets/core/index.js +1 -1
  998. package/lib/esm/secrets/core/index.js.map +1 -0
  999. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  1000. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -0
  1001. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  1002. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +1 -0
  1003. package/lib/esm/secrets/gcp/index.js +1 -1
  1004. package/lib/esm/secrets/gcp/index.js.map +1 -0
  1005. package/lib/esm/secrets/index.js +1 -1
  1006. package/lib/esm/secrets/index.js.map +1 -0
  1007. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  1008. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +1 -0
  1009. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  1010. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -0
  1011. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  1012. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +1 -0
  1013. package/lib/esm/secrets/model/Secret.js +1 -1
  1014. package/lib/esm/secrets/model/Secret.js.map +1 -0
  1015. package/lib/esm/secrets/model/index.js +1 -1
  1016. package/lib/esm/secrets/model/index.js.map +1 -0
  1017. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  1018. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -0
  1019. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  1020. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +1 -0
  1021. package/lib/esm/secrets/onepassword/index.js +1 -1
  1022. package/lib/esm/secrets/onepassword/index.js.map +1 -0
  1023. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  1024. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -0
  1025. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  1026. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +1 -0
  1027. package/lib/esm/secrets/vault/index.js +1 -1
  1028. package/lib/esm/secrets/vault/index.js.map +1 -0
  1029. package/lib/esm/shared/runtime.js +1 -1
  1030. package/lib/esm/shared/runtime.js.map +1 -0
  1031. package/lib/esm/utils.js +1 -1
  1032. package/lib/esm/utils.js.map +1 -0
  1033. package/lib/types/index.d.cts +2 -2
  1034. package/lib/types/index.d.mts +2 -2
  1035. package/package.json +3 -3
@@ -286,4 +286,4 @@ export class AuthzService {
286
286
  }
287
287
  }
288
288
  export { transactional };
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsT0FBTyxFQUNQLFlBQVksRUFFWixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3ZCLGtDQUFpQixDQUFBO0lBQ2pCLGtDQUFpQixDQUFBO0lBQ2pCLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLDJDQUF1QixDQUFBO0lBQ3ZCLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFNWDtBQU5ELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLG1EQUFrQyxDQUFBO0lBQ2xDLGdDQUFlLENBQUE7SUFDZixtQ0FBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTlcsYUFBYSxLQUFiLGFBQWEsUUFNeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDhCQUFpQixDQUFBO0lBQ2pCLGlDQUFvQixDQUFBO0lBQ3BCLGtDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUVELE1BQU0sQ0FBTixJQUFZLGtCQWFYO0FBYkQsV0FBWSxrQkFBa0I7SUFDNUIscUNBQWUsQ0FBQTtJQUNmLGtEQUE0QixDQUFBO0lB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LENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDO2FBQ3hELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8saUJBQWlCLENBQUM7WUFDdkIsUUFBUTtZQUNSLFdBQVc7WUFDWCxhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGtCQUFrQjtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRob3JpemF0aW9uRXJyb3IsXG4gIENhc2NhZGUsXG4gIE1vZGVsU2VydmljZSxcbiAgUmVwb3NpdG9yeSxcbiAgdHJhbnNhY3Rpb25hbCxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGVudW0gSXNvbGF0aW9uVGllciB7XG4gIFBvb2xlZCA9IFwicG9vbGVkXCIsXG4gIEJyaWRnZSA9IFwiYnJpZGdlXCIsXG4gIFNpbG8gPSBcInNpbG9cIixcbn1cblxuZXhwb3J0IGVudW0gTWVtYmVyc2hpcFN0YXR1cyB7XG4gIEludml0ZWQgPSBcImludml0ZWRcIixcbiAgQWN0aXZlID0gXCJhY3RpdmVcIixcbiAgU3VzcGVuZGVkID0gXCJzdXNwZW5kZWRcIixcbiAgUmVtb3ZlZCA9IFwicmVtb3ZlZFwiLFxufVxuXG5leHBvcnQgZW51bSBQcmluY2lwYWxLaW5kIHtcbiAgVXNlciA9IFwidXNlclwiLFxuICBHcm91cCA9IFwiZ3JvdXBcIixcbiAgU2VydmljZUFjY291bnQgPSBcInNlcnZpY2VfYWNjb3VudFwiLFxuICBBZ2VudCA9IFwiYWdlbnRcIixcbiAgQXBpS2V5ID0gXCJhcGlfa2V5XCIsXG59XG5cbmV4cG9ydCBlbnVtIFNjb3BlS2luZCB7XG4gIFRlbmFudCA9IFwidGVuYW50XCIsXG4gIE9yZ1VuaXQgPSBcIm9yZ191bml0XCIsXG4gIFJlc291cmNlID0gXCJyZXNvdXJjZVwiLFxufVxuXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uQ2F0ZWdvcnkge1xuICBBZG1pbiA9IFwiYWRtaW5cIixcbiAgQ29udGVudFJlYWQgPSBcImNvbnRlbnRfcmVhZFwiLFxuICBDb250ZW50V3JpdGUgPSBcImNvbnRlbnRfd3JpdGVcIixcbiAgTWVtb3J5ID0gXCJtZW1vcnlcIixcbiAgR3JhcGggPSBcImdyYXBoXCIsXG4gIFZlY3RvciA9IFwidmVjdG9yXCIsXG4gIEV4cG9ydCA9IFwiZXhwb3J0XCIsXG4gIEJpbGxpbmcgPSBcImJpbGxpbmdcIixcbiAgQXVkaXQgPSBcImF1ZGl0XCIsXG4gIFNlY3VyaXR5ID0gXCJzZWN1cml0eVwiLFxuICBEYXRhID0gXCJkYXRhXCIsXG4gIEF1dG9tYXRpb24gPSBcImF1dG9tYXRpb25cIixcbn1cblxuZXhwb3J0IGVudW0gUmVzb3VyY2VWaXNpYmlsaXR5IHtcbiAgUHJpdmF0ZSA9IFwicHJpdmF0ZVwiLFxuICBSZXNvdXJjZUFjbCA9IFwicmVzb3VyY2VfYWNsXCIsXG4gIE9yZ1VuaXQgPSBcIm9yZ191bml0XCIsXG4gIE9yZ1N1YnRyZWUgPSBcIm9yZ19zdWJ0cmVlXCIsXG4gIFRlbmFudCA9IFwidGVuYW50XCIsXG59XG5cbmV4cG9ydCBlbnVtIFN0b3JhZ2VLaW5kIHtcbiAgUG9zdGdyZXMgPSBcInBvc3RncmVzXCIsXG4gIEFyYW5nbyA9IFwiYXJhbmdvXCIsXG4gIFFkcmFudCA9IFwicWRyYW50XCIsXG4gIE9iamVjdFN0b3JhZ2UgPSBcIm9iamVjdF9zdG9yYWdlXCIsXG59XG5cbmV4cG9ydCBlbnVtIFN0b3JhZ2VCaW5kaW5nS2luZCB7XG4gIFNoYXJlZCA9IFwic2hhcmVkXCIsXG4gIERlZGljYXRlZCA9IFwiZGVkaWNhdGVkXCIsXG59XG5cbmV4cG9ydCBjb25zdCBJc29sYXRpb25UaWVyT3B0aW9ucyA9IE9iamVjdC52YWx1ZXMoSXNvbGF0aW9uVGllcik7XG5leHBvcnQgY29uc3QgTWVtYmVyc2hpcFN0YXR1c09wdGlvbnMgPSBPYmplY3QudmFsdWVzKE1lbWJlcnNoaXBTdGF0dXMpO1xuZXhwb3J0IGNvbnN0IFByaW5jaXBhbEtpbmRPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhQcmluY2lwYWxLaW5kKTtcbmV4cG9ydCBjb25zdCBTY29wZUtpbmRPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhTY29wZUtpbmQpO1xuZXhwb3J0IGNvbnN0IFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMgPSBPYmplY3QudmFsdWVzKFBlcm1pc3Npb25DYXRlZ29yeSk7XG5leHBvcnQgY29uc3QgUmVzb3VyY2VWaXNpYmlsaXR5T3B0aW9ucyA9IE9iamVjdC52YWx1ZXMoUmVzb3VyY2VWaXNpYmlsaXR5KTtcbmV4cG9ydCBjb25zdCBTdG9yYWdlS2luZE9wdGlvbnMgPSBPYmplY3QudmFsdWVzKFN0b3JhZ2VLaW5kKTtcbmV4cG9ydCBjb25zdCBTdG9yYWdlQmluZGluZ0tpbmRPcHRpb25zID0gT2JqZWN0LnZhbHVlcyhTdG9yYWdlQmluZGluZ0tpbmQpO1xuXG5leHBvcnQgY29uc3QgUkVMX1JFU1RSSUNUID0ge1xuICB1cGRhdGU6IENhc2NhZGUuTk9ORSxcbiAgZGVsZXRlOiBDYXNjYWRlLk5PTkUsXG4gIG51bGxhYmxlOiBmYWxzZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRUxfTlVMTElGWSA9IHtcbiAgdXBkYXRlOiBDYXNjYWRlLk5PTkUsXG4gIGRlbGV0ZTogQ2FzY2FkZS5OT05FLFxuICBudWxsYWJsZTogdHJ1ZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQgPSB7XG4gIHVwZGF0ZTogQ2FzY2FkZS5DQVNDQURFLFxuICBkZWxldGU6IENhc2NhZGUuQ0FTQ0FERSxcbiAgbnVsbGFibGU6IGZhbHNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFJFTF9DQVNDQURFX0lOU0VSVF9VUERBVEUgPSB7XG4gIHVwZGF0ZTogQ2FzY2FkZS5DQVNDQURFLFxuICBkZWxldGU6IENhc2NhZGUuTk9ORSxcbiAgbnVsbGFibGU6IGZhbHNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVHhBcmdzID0gYW55W107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlVGVuYW50SW5wdXQge1xuICBzbHVnOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNvbGF0aW9uVGllcj86IElzb2xhdGlvblRpZXI7XG4gIHByb2ZpbGVLZXk/OiBzdHJpbmc7XG4gIHByb2ZpbGVNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVVzZXJJbnB1dCB7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVPcmdVbml0SW5wdXQge1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICBwYXJlbnRPcmdVbml0SWQ/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcHJvZmlsZUtleT86IHN0cmluZztcbiAgcHJvZmlsZU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9sZUlucHV0IHtcbiAgdGVuYW50SWQ/OiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVBlcm1pc3Npb25JbnB1dCB7XG4gIGtleTogc3RyaW5nO1xuICBjYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBc3NpZ25Sb2xlSW5wdXQge1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICBwcmluY2lwYWxJZDogc3RyaW5nO1xuICByb2xlSWQ6IHN0cmluZztcbiAgc2NvcGVLaW5kOiBTY29wZUtpbmQ7XG4gIHNjb3BlSWQ6IHN0cmluZztcbiAgaW5oZXJpdERvd24/OiBib29sZWFuO1xuICBzdGFydHNBdD86IERhdGU7XG4gIGV4cGlyZXNBdD86IERhdGU7XG4gIGNvbmRpdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclJlc291cmNlSW5wdXQge1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICBvcmdVbml0SWQ6IHN0cmluZztcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlc291cmNlSWQ6IHN0cmluZztcbiAgdmlzaWJpbGl0eTogUmVzb3VyY2VWaXNpYmlsaXR5O1xuICBvd25lclByaW5jaXBhbElkPzogc3RyaW5nO1xuICBzZW5zaXRpdml0eT86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmFudFJlc291cmNlSW5wdXQge1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICByZXNvdXJjZUlkOiBzdHJpbmc7XG4gIHByaW5jaXBhbElkOiBzdHJpbmc7XG4gIHBlcm1pc3Npb25LZXk6IHN0cmluZztcbiAgc3RhcnRzQXQ/OiBEYXRlO1xuICBleHBpcmVzQXQ/OiBEYXRlO1xuICBjb25kaXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNyZWF0ZWRCeVByaW5jaXBhbElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbkFjY2Vzc0lucHV0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgcGVybWlzc2lvbktleTogc3RyaW5nO1xuICByZXNvdXJjZVByb3RlY3RlZElkPzogc3RyaW5nO1xuICBzY29wZUtpbmQ/OiBTY29wZUtpbmQ7XG4gIHNjb3BlSWQ/OiBzdHJpbmc7XG4gIGF0PzogRGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NDb250ZXh0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgcGVybWlzc2lvbnNCeVNjb3BlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gIGFsbG93ZWRPcmdVbml0SWRzQnlQZXJtaXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gIHJlc291cmNlR3JhbnRzOiBBcnJheTx7IHJlc291cmNlSWQ6IHN0cmluZzsgcGVybWlzc2lvbktleTogc3RyaW5nIH0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFyYW5nb0F1dGhDb250ZXh0IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgcGVybWlzc2lvbktleTogc3RyaW5nO1xuICBhbGxvd2VkT3JnVW5pdElkczogc3RyaW5nW107XG4gIGFsbG93ZWRSZXNvdXJjZUlkczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUWRyYW50QXV0aEZpbHRlciB7XG4gIG11c3Q6IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgbXVzdF9ub3Q/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU3RvcmFnZUJpbmRpbmdJbnB1dCB7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHN0b3JhZ2VLaW5kOiBTdG9yYWdlS2luZDtcbiAgYmluZGluZ0tpbmQ6IFN0b3JhZ2VCaW5kaW5nS2luZDtcbiAgYmluZGluZ0tleTogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgY29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwUGVybWlzc2lvbiB7XG4gIGtleTogc3RyaW5nO1xuICBjYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBSb2xlIHtcbiAga2V5OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25LZXlzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcmdVbml0IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9maWxlS2V5Pzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjaGlsZHJlbj86IEJvb3RzdHJhcE9yZ1VuaXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBUZW1wbGF0ZSB7XG4gIHRlbmFudDogQ3JlYXRlVGVuYW50SW5wdXQ7XG4gIHJvb3RPcmdVbml0OiBCb290c3RyYXBPcmdVbml0O1xuICBwZXJtaXNzaW9uczogQm9vdHN0cmFwUGVybWlzc2lvbltdO1xuICByb2xlczogQm9vdHN0cmFwUm9sZVtdO1xuICBvd25lclVzZXI6IENyZWF0ZVVzZXJJbnB1dDtcbiAgb3duZXJSb2xlS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VTbmFwc2hvdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIG9yZ1VuaXRJZDogc3RyaW5nO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVzb3VyY2VJZDogc3RyaW5nO1xuICB2aXNpYmlsaXR5OiBSZXNvdXJjZVZpc2liaWxpdHk7XG4gIG93bmVyUHJpbmNpcGFsSWQ/OiBzdHJpbmc7XG4gIHNlbnNpdGl2aXR5Pzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50U25hcHNob3Qge1xuICBpZDogc3RyaW5nO1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICByZXNvdXJjZUlkOiBzdHJpbmc7XG4gIHByaW5jaXBhbElkOiBzdHJpbmc7XG4gIHBlcm1pc3Npb25LZXk6IHN0cmluZztcbiAgc3RhcnRzQXQ/OiBEYXRlO1xuICBleHBpcmVzQXQ/OiBEYXRlO1xuICBjb25kaXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNyZWF0ZWRCeVByaW5jaXBhbElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdGl2ZVBlcm1pc3Npb25TbmFwc2hvdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlbmFudElkOiBzdHJpbmc7XG4gIHByaW5jaXBhbElkOiBzdHJpbmc7XG4gIHBlcm1pc3Npb25LZXk6IHN0cmluZztcbiAgc2NvcGVLaW5kOiBTY29wZUtpbmQ7XG4gIHNjb3BlSWQ6IHN0cmluZztcbiAgc291cmNlS2luZDogc3RyaW5nO1xuICBzb3VyY2VJZDogc3RyaW5nO1xuICBzdGFydHNBdD86IERhdGU7XG4gIGV4cGlyZXNBdD86IERhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aHpEYXRhU291cmNlcyB7XG4gIGxvYWRSZXNvdXJjZT86IChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZ1xuICApID0+IFByb21pc2U8UmVzb3VyY2VTbmFwc2hvdCB8IHVuZGVmaW5lZD47XG4gIGxpc3RSZXNvdXJjZUdyYW50cz86IChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZ1xuICApID0+IFByb21pc2U8R3JhbnRTbmFwc2hvdFtdPjtcbiAgbGlzdFByaW5jaXBhbEdyYW50cz86IChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPEdyYW50U25hcHNob3RbXT47XG4gIGxpc3RFZmZlY3RpdmVQZXJtaXNzaW9ucz86IChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25TbmFwc2hvdFtdPjtcbiAgbGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zRm9yU2NvcGU/OiAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25TbmFwc2hvdFtdPjtcbn1cblxuZnVuY3Rpb24gaXNUaW1lVmFsaWQoXG4gIGF0OiBEYXRlIHwgdW5kZWZpbmVkLFxuICBzdGFydHNBdD86IERhdGUsXG4gIGV4cGlyZXNBdD86IERhdGVcbik6IGJvb2xlYW4ge1xuICBjb25zdCBpbnN0YW50ID0gYXQgPz8gbmV3IERhdGUoKTtcbiAgaWYgKHN0YXJ0c0F0ICYmIGluc3RhbnQgPCBzdGFydHNBdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoZXhwaXJlc0F0ICYmIGluc3RhbnQgPiBleHBpcmVzQXQpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHNjb3BlS2V5KHNjb3BlS2luZDogU2NvcGVLaW5kLCBzY29wZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2NvcGVLaW5kfToke3Njb3BlSWR9YDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheTxUPih2YWx1ZTogVFtdIHwgdW5kZWZpbmVkKTogVFtdIHtcbiAgcmV0dXJuIHZhbHVlID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBcmFuZ29Db250ZXh0KG9wdGlvbnM6IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgcGVybWlzc2lvbktleTogc3RyaW5nO1xuICBhbGxvd2VkT3JnVW5pdElkczogc3RyaW5nW107XG4gIGFsbG93ZWRSZXNvdXJjZUlkczogc3RyaW5nW107XG59KTogQXJhbmdvQXV0aENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHRlbmFudElkOiBvcHRpb25zLnRlbmFudElkLFxuICAgIHByaW5jaXBhbElkOiBvcHRpb25zLnByaW5jaXBhbElkLFxuICAgIHBlcm1pc3Npb25LZXk6IG9wdGlvbnMucGVybWlzc2lvbktleSxcbiAgICBhbGxvd2VkT3JnVW5pdElkczogWy4uLm9wdGlvbnMuYWxsb3dlZE9yZ1VuaXRJZHNdLFxuICAgIGFsbG93ZWRSZXNvdXJjZUlkczogWy4uLm9wdGlvbnMuYWxsb3dlZFJlc291cmNlSWRzXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUWRyYW50RmlsdGVyKG9wdGlvbnM6IHtcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgcHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgcGVybWlzc2lvbktleTogc3RyaW5nO1xuICBhbGxvd2VkT3JnVW5pdElkczogc3RyaW5nW107XG4gIGFsbG93ZWRSZXNvdXJjZUlkczogc3RyaW5nW107XG59KTogUWRyYW50QXV0aEZpbHRlciB7XG4gIHJldHVybiB7XG4gICAgbXVzdDogW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVuYW50X2lkXCIsXG4gICAgICAgIG1hdGNoOiB7IHZhbHVlOiBvcHRpb25zLnRlbmFudElkIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaG91bGQ6IFtcbiAgICAgICAgICB7IGtleTogXCJvcmdfdW5pdF9pZFwiLCBtYXRjaDogeyBhbnk6IG9wdGlvbnMuYWxsb3dlZE9yZ1VuaXRJZHMgfSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogXCJwcm90ZWN0ZWRfcmVzb3VyY2VfaWRcIixcbiAgICAgICAgICAgIG1hdGNoOiB7IGFueTogb3B0aW9ucy5hbGxvd2VkUmVzb3VyY2VJZHMgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsga2V5OiBcIm93bmVyX3ByaW5jaXBhbF9pZFwiLCBtYXRjaDogeyB2YWx1ZTogb3B0aW9ucy5wcmluY2lwYWxJZCB9IH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEFjY2Vzc0NvbnRleHQob3B0aW9uczoge1xuICB0ZW5hbnRJZDogc3RyaW5nO1xuICBwcmluY2lwYWxJZDogc3RyaW5nO1xuICBwZXJtaXNzaW9uczogRWZmZWN0aXZlUGVybWlzc2lvblNuYXBzaG90W107XG4gIGdyYW50czogR3JhbnRTbmFwc2hvdFtdO1xufSk6IEFjY2Vzc0NvbnRleHQge1xuICBjb25zdCBwZXJtaXNzaW9uc0J5U2NvcGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICBjb25zdCBhbGxvd2VkT3JnVW5pdElkc0J5UGVybWlzc2lvbjogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG5cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIG9wdGlvbnMucGVybWlzc2lvbnMpIHtcbiAgICBjb25zdCBrZXkgPSBzY29wZUtleShwZXJtaXNzaW9uLnNjb3BlS2luZCwgcGVybWlzc2lvbi5zY29wZUlkKTtcbiAgICBwZXJtaXNzaW9uc0J5U2NvcGVba2V5XSA9IHBlcm1pc3Npb25zQnlTY29wZVtrZXldID8/IFtdO1xuICAgIHBlcm1pc3Npb25zQnlTY29wZVtrZXldLnB1c2gocGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5KTtcbiAgICBpZiAocGVybWlzc2lvbi5zY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0KSB7XG4gICAgICBhbGxvd2VkT3JnVW5pdElkc0J5UGVybWlzc2lvbltwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXldID1cbiAgICAgICAgYWxsb3dlZE9yZ1VuaXRJZHNCeVBlcm1pc3Npb25bcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5XSA/PyBbXTtcbiAgICAgIGFsbG93ZWRPcmdVbml0SWRzQnlQZXJtaXNzaW9uW3Blcm1pc3Npb24ucGVybWlzc2lvbktleV0ucHVzaChcbiAgICAgICAgcGVybWlzc2lvbi5zY29wZUlkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGVuYW50SWQ6IG9wdGlvbnMudGVuYW50SWQsXG4gICAgcHJpbmNpcGFsSWQ6IG9wdGlvbnMucHJpbmNpcGFsSWQsXG4gICAgcGVybWlzc2lvbnNCeVNjb3BlLFxuICAgIGFsbG93ZWRPcmdVbml0SWRzQnlQZXJtaXNzaW9uLFxuICAgIHJlc291cmNlR3JhbnRzOiBvcHRpb25zLmdyYW50cy5tYXAoKGdyYW50KSA9PiAoe1xuICAgICAgcmVzb3VyY2VJZDogZ3JhbnQucmVzb3VyY2VJZCxcbiAgICAgIHBlcm1pc3Npb25LZXk6IGdyYW50LnBlcm1pc3Npb25LZXksXG4gICAgfSkpLFxuICB9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU1vZGVsU2VydmljZTxcbiAgTSBleHRlbmRzIE1vZGVsPGJvb2xlYW4+ICYgeyBpZDogc3RyaW5nIH0sXG4+IGV4dGVuZHMgTW9kZWxTZXJ2aWNlPE0sIFJlcG9zaXRvcnk8TSwgYW55Pj4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoY2xheno6IG5ldyAoKSA9PiBNKSB7XG4gICAgc3VwZXIoY2xhenopO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5ld01vZGVsPFQ+KGNsYXp6OiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBjbGF6eigpIGFzIG9iamVjdCwgZGF0YSBhcyBvYmplY3QpIGFzIFQ7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPbmUoZGF0YTogUGFydGlhbDxNPiwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmNyZWF0ZShPYmplY3QuYXNzaWduKHt9IGFzIE0sIGRhdGEgYXMgb2JqZWN0KSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5yZWFkKGlkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU9uZShpZDogc3RyaW5nLCBwYXRjaDogUGFydGlhbDxNPiwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMucmVwby5yZWFkKGlkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnVwZGF0ZShPYmplY3QuYXNzaWduKGV4aXN0aW5nLCBwYXRjaCksIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlQnlJZChpZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVwby5kZWxldGUoaWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZUJ5PEsgZXh0ZW5kcyBrZXlvZiBNICYgc3RyaW5nPihcbiAgICBrZXk6IEssXG4gICAgdmFsdWU6IE1bS10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kT25lQnkoa2V5LCB2YWx1ZSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBmaW5kTWFueUJ5PEsgZXh0ZW5kcyBrZXlvZiBNICYgc3RyaW5nPihcbiAgICBrZXk6IEssXG4gICAgdmFsdWU6IE1bS10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNW10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvXG4gICAgICAuc2VsZWN0KClcbiAgICAgIC53aGVyZSh7IFtrZXldOiB2YWx1ZSB9IGFzIGFueSlcbiAgICAgIC5leGVjdXRlKC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFsbCguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zZWxlY3QoKS5leGVjdXRlKC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZCgpOiBzdHJpbmcge1xuICByZXR1cm4gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aW9uSWQodmFsdWU6IHN0cmluZyB8IHsgaWQ6IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUuaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoelNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTb3VyY2VzOiBBdXRoekRhdGFTb3VyY2VzO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2VzOiBBdXRoekRhdGFTb3VyY2VzID0ge30pIHtcbiAgICB0aGlzLmRhdGFTb3VyY2VzID0gZGF0YVNvdXJjZXM7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGFzeW5jIGNhbkFjY2VzcyhpbnB1dDogQ2FuQWNjZXNzSW5wdXQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXQgPSBpbnB1dC5hdCA/PyBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKGlucHV0LnNjb3BlS2luZCAmJiBpbnB1dC5zY29wZUlkKSB7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zRm9yU2NvcGU/LihcbiAgICAgICAgICBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgICBpbnB1dC5zY29wZUtpbmQsXG4gICAgICAgICAgaW5wdXQuc2NvcGVJZFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHRvQXJyYXkocGVybWlzc2lvbnMpLnNvbWUoXG4gICAgICAgIChwZXJtaXNzaW9uKSA9PlxuICAgICAgICAgIHBlcm1pc3Npb24ucGVybWlzc2lvbktleSA9PT0gaW5wdXQucGVybWlzc2lvbktleSAmJlxuICAgICAgICAgIGlzVGltZVZhbGlkKGF0LCBwZXJtaXNzaW9uLnN0YXJ0c0F0LCBwZXJtaXNzaW9uLmV4cGlyZXNBdClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFpbnB1dC5yZXNvdXJjZVByb3RlY3RlZElkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubG9hZFJlc291cmNlPy4oXG4gICAgICBpbnB1dC50ZW5hbnRJZCxcbiAgICAgIGlucHV0LnJlc291cmNlUHJvdGVjdGVkSWRcbiAgICApO1xuICAgIGlmICghcmVzb3VyY2UpIHJldHVybiBmYWxzZTtcbiAgICBpZiAocmVzb3VyY2UudGVuYW50SWQgIT09IGlucHV0LnRlbmFudElkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAocmVzb3VyY2Uub3duZXJQcmluY2lwYWxJZCA9PT0gaW5wdXQucHJpbmNpcGFsSWQpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgZ3JhbnRzID0gdG9BcnJheShcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZXMubGlzdFJlc291cmNlR3JhbnRzPy4oXG4gICAgICAgIGlucHV0LnRlbmFudElkLFxuICAgICAgICBpbnB1dC5yZXNvdXJjZVByb3RlY3RlZElkXG4gICAgICApXG4gICAgKS5maWx0ZXIoXG4gICAgICAoZ3JhbnQpID0+XG4gICAgICAgIGdyYW50LnByaW5jaXBhbElkID09PSBpbnB1dC5wcmluY2lwYWxJZCAmJlxuICAgICAgICBncmFudC5wZXJtaXNzaW9uS2V5ID09PSBpbnB1dC5wZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgIGlzVGltZVZhbGlkKGF0LCBncmFudC5zdGFydHNBdCwgZ3JhbnQuZXhwaXJlc0F0KVxuICAgICk7XG4gICAgaWYgKGdyYW50cy5sZW5ndGggPiAwKSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IHZpc2liaWxpdHkgPSByZXNvdXJjZS52aXNpYmlsaXR5O1xuICAgIGlmIChcbiAgICAgIHZpc2liaWxpdHkgPT09IFJlc291cmNlVmlzaWJpbGl0eS5Qcml2YXRlIHx8XG4gICAgICB2aXNpYmlsaXR5ID09PSBSZXNvdXJjZVZpc2liaWxpdHkuUmVzb3VyY2VBY2xcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB2aXNpYmlsaXR5ID09PSBSZXNvdXJjZVZpc2liaWxpdHkuT3JnVW5pdCB8fFxuICAgICAgdmlzaWJpbGl0eSA9PT0gUmVzb3VyY2VWaXNpYmlsaXR5Lk9yZ1N1YnRyZWVcbiAgICApIHtcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVBlcm1pc3Npb25zID0gdG9BcnJheShcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhU291cmNlcy5saXN0RWZmZWN0aXZlUGVybWlzc2lvbnNGb3JTY29wZT8uKFxuICAgICAgICAgIGlucHV0LnRlbmFudElkLFxuICAgICAgICAgIFNjb3BlS2luZC5PcmdVbml0LFxuICAgICAgICAgIHJlc291cmNlLm9yZ1VuaXRJZFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuIGVmZmVjdGl2ZVBlcm1pc3Npb25zLnNvbWUoXG4gICAgICAgIChwZXJtaXNzaW9uKSA9PlxuICAgICAgICAgIHBlcm1pc3Npb24ucGVybWlzc2lvbktleSA9PT0gaW5wdXQucGVybWlzc2lvbktleSAmJlxuICAgICAgICAgIGlzVGltZVZhbGlkKGF0LCBwZXJtaXNzaW9uLnN0YXJ0c0F0LCBwZXJtaXNzaW9uLmV4cGlyZXNBdClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHZpc2liaWxpdHkgPT09IFJlc291cmNlVmlzaWJpbGl0eS5UZW5hbnQpIHtcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVBlcm1pc3Npb25zID0gdG9BcnJheShcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhU291cmNlcy5saXN0RWZmZWN0aXZlUGVybWlzc2lvbnNGb3JTY29wZT8uKFxuICAgICAgICAgIGlucHV0LnRlbmFudElkLFxuICAgICAgICAgIFNjb3BlS2luZC5UZW5hbnQsXG4gICAgICAgICAgaW5wdXQudGVuYW50SWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBlZmZlY3RpdmVQZXJtaXNzaW9ucy5zb21lKFxuICAgICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgICBwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXkgPT09IGlucHV0LnBlcm1pc3Npb25LZXkgJiZcbiAgICAgICAgICBpc1RpbWVWYWxpZChhdCwgcGVybWlzc2lvbi5zdGFydHNBdCwgcGVybWlzc2lvbi5leHBpcmVzQXQpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHJlcXVpcmVBY2Nlc3MoaW5wdXQ6IENhbkFjY2Vzc0lucHV0LCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGF3YWl0IHRoaXMuY2FuQWNjZXNzKGlucHV0LCAuLi5hcmdzKSkpIHtcbiAgICAgIHRocm93IG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICAgIGBBY2Nlc3MgZGVuaWVkIGZvciAke2lucHV0LnBlcm1pc3Npb25LZXl9IG9uICR7aW5wdXQucmVzb3VyY2VQcm90ZWN0ZWRJZCA/PyBzY29wZUtleShpbnB1dC5zY29wZUtpbmQgPz8gU2NvcGVLaW5kLlJlc291cmNlLCBpbnB1dC5zY29wZUlkID8/IFwiXCIpfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYnVpbGRBY2Nlc3NDb250ZXh0KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxBY2Nlc3NDb250ZXh0PiB7XG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSB0b0FycmF5KFxuICAgICAgYXdhaXQgdGhpcy5kYXRhU291cmNlcy5saXN0RWZmZWN0aXZlUGVybWlzc2lvbnM/Lih0ZW5hbnRJZCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgICBjb25zdCBncmFudHMgPSB0b0FycmF5KFxuICAgICAgYXdhaXQgdGhpcy5kYXRhU291cmNlcy5saXN0UHJpbmNpcGFsR3JhbnRzPy4odGVuYW50SWQsIHByaW5jaXBhbElkKVxuICAgICk7XG4gICAgcmV0dXJuIGJ1aWxkQWNjZXNzQ29udGV4dCh7XG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgcGVybWlzc2lvbnMsXG4gICAgICBncmFudHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBidWlsZEFyYW5nb0NvbnRleHQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEFyYW5nb0F1dGhDb250ZXh0PiB7XG4gICAgY29uc3QgYWNjZXNzID0gYXdhaXQgdGhpcy5idWlsZEFjY2Vzc0NvbnRleHQoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgY29uc3QgYWxsb3dlZE9yZ1VuaXRJZHMgPVxuICAgICAgYWNjZXNzLmFsbG93ZWRPcmdVbml0SWRzQnlQZXJtaXNzaW9uW3Blcm1pc3Npb25LZXldID8/IFtdO1xuICAgIGNvbnN0IGFsbG93ZWRSZXNvdXJjZUlkcyA9IGFjY2Vzcy5yZXNvdXJjZUdyYW50c1xuICAgICAgLmZpbHRlcigoZ3JhbnQpID0+IGdyYW50LnBlcm1pc3Npb25LZXkgPT09IHBlcm1pc3Npb25LZXkpXG4gICAgICAubWFwKChncmFudCkgPT4gZ3JhbnQucmVzb3VyY2VJZCk7XG4gICAgcmV0dXJuIGJ1aWxkQXJhbmdvQ29udGV4dCh7XG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgcGVybWlzc2lvbktleSxcbiAgICAgIGFsbG93ZWRPcmdVbml0SWRzLFxuICAgICAgYWxsb3dlZFJlc291cmNlSWRzLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYnVpbGRRZHJhbnRGaWx0ZXIoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFFkcmFudEF1dGhGaWx0ZXI+IHtcbiAgICBjb25zdCBhY2Nlc3MgPSBhd2FpdCB0aGlzLmJ1aWxkQWNjZXNzQ29udGV4dChcbiAgICAgIHRlbmFudElkLFxuICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBhbGxvd2VkT3JnVW5pdElkcyA9XG4gICAgICBhY2Nlc3MuYWxsb3dlZE9yZ1VuaXRJZHNCeVBlcm1pc3Npb25bcGVybWlzc2lvbktleV0gPz8gW107XG4gICAgY29uc3QgYWxsb3dlZFJlc291cmNlSWRzID0gYWNjZXNzLnJlc291cmNlR3JhbnRzXG4gICAgICAuZmlsdGVyKChncmFudCkgPT4gZ3JhbnQucGVybWlzc2lvbktleSA9PT0gcGVybWlzc2lvbktleSlcbiAgICAgIC5tYXAoKGdyYW50KSA9PiBncmFudC5yZXNvdXJjZUlkKTtcbiAgICByZXR1cm4gYnVpbGRRZHJhbnRGaWx0ZXIoe1xuICAgICAgdGVuYW50SWQsXG4gICAgICBwcmluY2lwYWxJZCxcbiAgICAgIHBlcm1pc3Npb25LZXksXG4gICAgICBhbGxvd2VkT3JnVW5pdElkcyxcbiAgICAgIGFsbG93ZWRSZXNvdXJjZUlkcyxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyB0cmFuc2FjdGlvbmFsIH07XG4iXX0=
289
+ //# sourceMappingURL=org-based-authorization-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-based-authorization-system.js","sourceRoot":"","sources":["../../../src/namespaces/org-based-authorization-system.ts"],"names":[],"mappings":"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"}
@@ -955,4 +955,4 @@ StorageBinding = __decorate([
955
955
  model()
956
956
  ], StorageBinding);
957
957
  export { StorageBinding };
958
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL29yZy1iYXNlZC1hdXRob3JpemF0aW9uLXN5c3RlbS5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxFQUFFLEVBQ0YsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLFlBQVksRUFDWixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixXQUFXLEVBQ1gsa0JBQWtCLEdBQ25CLDRDQUF5QztBQUUxQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsS0FBSztJQUMzQyxZQUFZLElBQWM7UUFDeEIsS0FBSyxDQUFDLElBQWEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUlNLElBQU0sTUFBTSxHQUFaLE1BQU0sTUFBTyxTQUFRLGtCQUFrQjtDQVc3QyxDQUFBO0FBVnVCO0lBQXJCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7a0NBQWE7QUFDYztJQUEvQyxNQUFNLEVBQUU7SUFBRSxRQUFRLEVBQUU7SUFBRSxNQUFN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O0FBSU0sSUFBTSxjQUFjLEdBQXBCLE1BQU0sY0FBZSxTQUFRLGtCQUFrQjtDQVlyRCxDQUFBO0FBWHVCO0lBQXJCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7MENBQWE7QUFHbEM7SUFGQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsNEJBQTRCLENBQUM7SUFDOUYsUUFBUSxFQUFFOzs4Q0FDYztBQUN5QztJQUFqRSxRQUFRLEVBQUU7SUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDO0lBQUUsTUFBTSxFQUFFOzttREFBMkI7QUFDbkI7SUFBeEUsUUFBUSxFQUFFO0lBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUFFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztJQUFFLE1BQU0sRUFBRTs7bURBQWtDO0FBQ3BFO0lBQXJDLFFBQVEsRUFBRTtJQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFBRSxNQUFNLEVBQUU7O2tEQUFxQjtBQUNwQjtJQUFyQyxRQUFRLEVBQUU7SUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQUUsTUFBTSxFQUFFOzs4Q0FBaUI7QUFDNUI7SUFBekIsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUFFLE1BQU0sRUFBRTs7OENBQWtDO0FBQzlDO0lBQVosU0FBUyxFQUFFOzhCQUFhLElBQUk7aURBQUM7QUFDakI7SUFBWixTQUFTLEVBQUU7OEJBQWEsSUFBSTtpREFBQztBQVhuQixjQUFjO0lBRjFCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUN6QixLQUFLLEVBQUU7R0FDSyxjQUFjLENBWTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29sdW1uLFxuICBjcmVhdGVkQXQsXG4gIG1hbnlUb09uZSxcbiAgb25lVG9NYW55LFxuICBwayxcbiAgdGFibGUsXG4gIHVuaXF1ZSxcbiAgdXBkYXRlZEF0LFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgb3B0aW9uLCByZXF1aXJlZCwgdHlwZSBhcyB0eXBlT2YgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBJc29sYXRpb25UaWVyLFxuICBJc29sYXRpb25UaWVyT3B0aW9ucyxcbiAgTWVtYmVyc2hpcFN0YXR1cyxcbiAgTWVtYmVyc2hpcFN0YXR1c09wdGlvbnMsXG4gIFBlcm1pc3Npb25DYXRlZ29yeSxcbiAgUGVybWlzc2lvbkNhdGVnb3J5T3B0aW9ucyxcbiAgUHJpbmNpcGFsS2luZCxcbiAgUHJpbmNpcGFsS2luZE9wdGlvbnMsXG4gIFJFTF9DQVNDQURFX0RFUEVOREVOVCxcbiAgUkVMX05VTExJRlksXG4gIFJFTF9SRVNUUklDVCxcbiAgUmVzb3VyY2VWaXNpYmlsaXR5LFxuICBSZXNvdXJjZVZpc2liaWxpdHlPcHRpb25zLFxuICBTY29wZUtpbmQsXG4gIFNjb3BlS2luZE9wdGlvbnMsXG4gIFN0b3JhZ2VCaW5kaW5nS2luZCxcbiAgU3RvcmFnZUJpbmRpbmdLaW5kT3B0aW9ucyxcbiAgU3RvcmFnZUtpbmQsXG4gIFN0b3JhZ2VLaW5kT3B0aW9ucyxcbn0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uTW9kZWwgZXh0ZW5kcyBNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKGRhdGE/OiB1bmtub3duKSB7XG4gICAgc3VwZXIoZGF0YSBhcyBuZXZlcik7XG4gIH1cbn1cblxuQHRhYmxlKFwidGVuYW50c1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBUZW5hbnQgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEB1bmlxdWUoKSBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNsdWchOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBvcHRpb24oSXNvbGF0aW9uVGllck9wdGlvbnMpIEBjb2x1bW4oKSBpc29sYXRpb25UaWVyITogSXNvbGF0aW9uVGllcjtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBvcmdVbml0cz86IE9yZ1VuaXRbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFRlbmFudE1lbWJlcnNoaXAsIFJFTF9SRVNUUklDVCwgZmFsc2UpIG1lbWJlcnNoaXBzPzogVGVuYW50TWVtYmVyc2hpcFtdIHwgc3RyaW5nW107XG4gIEBvbmVUb01hbnkoKCkgPT4gUHJpbmNpcGFsLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBwcmluY2lwYWxzPzogUHJpbmNpcGFsW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBTdG9yYWdlQmluZGluZywgUkVMX1JFU1RSSUNULCBmYWxzZSkgc3RvcmFnZUJpbmRpbmdzPzogU3RvcmFnZUJpbmRpbmdbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInRlbmFudF9wcm9maWxlc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBUZW5hbnRQcm9maWxlIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3RlbmFudF9wcm9maWxlc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHByb2ZpbGVLZXkhOiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJvcmdfdW5pdHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgT3JnVW5pdCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX3VuaXRzX3BhcmVudFwiKVxuICBwYXJlbnQ/OiBPcmdVbml0IHwgc3RyaW5nO1xuICBAb25lVG9NYW55KCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UpIGNoaWxkcmVuPzogT3JnVW5pdFtdIHwgc3RyaW5nW107XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBwYXRoITogc3RyaW5nO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBvbmVUb01hbnkoKCkgPT4gT3JnVW5pdE1lbWJlcnNoaXAsIFJFTF9SRVNUUklDVCwgZmFsc2UpIG1lbWJlcnNoaXBzPzogT3JnVW5pdE1lbWJlcnNoaXBbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFByb3RlY3RlZFJlc291cmNlLCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSByZXNvdXJjZXM/OiBQcm90ZWN0ZWRSZXNvdXJjZVtdIHwgc3RyaW5nW107XG4gIEBvbmVUb01hbnkoKCkgPT4gSW5oZXJpdGFuY2VCbG9jaywgUkVMX1JFU1RSSUNULCBmYWxzZSkgaW5oZXJpdGFuY2VCbG9ja3M/OiBJbmhlcml0YW5jZUJsb2NrW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0Q2xvc3VyZSwgUkVMX1JFU1RSSUNULCBmYWxzZSkgYW5jZXN0b3JMaW5rcz86IE9yZ1VuaXRDbG9zdXJlW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0Q2xvc3VyZSwgUkVMX1JFU1RSSUNULCBmYWxzZSkgZGVzY2VuZGFudExpbmtzPzogT3JnVW5pdENsb3N1cmVbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcIm9yZ191bml0X3Byb2ZpbGVzXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRQcm9maWxlIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfdW5pdF9wcm9maWxlc19vcmdfdW5pdFwiKVxuICBAcmVxdWlyZWQoKVxuICBvcmdVbml0ITogT3JnVW5pdCB8IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBwcm9maWxlS2V5ITogc3RyaW5nO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwib3JnX3VuaXRfY2xvc3VyZVwiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBPcmdVbml0Q2xvc3VyZSBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV90ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19vcmdfY2xvc3VyZV9hbmNlc3RvclwiKVxuICBAcmVxdWlyZWQoKVxuICBhbmNlc3RvciE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ19jbG9zdXJlX2Rlc2NlbmRhbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgZGVzY2VuZGFudCE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoTnVtYmVyKSBAY29sdW1uKCkgZGVwdGghOiBudW1iZXI7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJ1c2Vyc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBVc2VyIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAdW5pcXVlKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBlbWFpbD86IHN0cmluZztcbiAgQHVuaXF1ZSgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcGhvbmU/OiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGlzcGxheU5hbWUhOiBzdHJpbmc7XG4gIEBvbmVUb01hbnkoKCkgPT4gVGVuYW50TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgdGVuYW50TWVtYmVyc2hpcHM/OiBUZW5hbnRNZW1iZXJzaGlwW10gfCBzdHJpbmdbXTtcbiAgQG9uZVRvTWFueSgoKSA9PiBPcmdVbml0TWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgb3JnVW5pdE1lbWJlcnNoaXBzPzogT3JnVW5pdE1lbWJlcnNoaXBbXSB8IHN0cmluZ1tdO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcImdyb3Vwc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcm91cCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBPcmdVbml0LCBSRUxfTlVMTElGWSwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19ncm91cHNfb3JnX3VuaXRcIilcbiAgb3JnVW5pdD86IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgbmFtZSE6IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAb25lVG9NYW55KCgpID0+IEdyb3VwTWVtYmVyc2hpcCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgbWVtYmVycz86IEdyb3VwTWVtYmVyc2hpcFtdIHwgc3RyaW5nW107XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwicHJpbmNpcGFsc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWwgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcHJpbmNpcGFsc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihQcmluY2lwYWxLaW5kT3B0aW9ucykgQGNvbHVtbigpIGtpbmQhOiBQcmluY2lwYWxLaW5kO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHN1YmplY3RJZCE6IHN0cmluZztcbiAgQG9uZVRvTWFueSgoKSA9PiBSb2xlQXNzaWdubWVudCwgUkVMX1JFU1RSSUNULCBmYWxzZSkgcm9sZUFzc2lnbm1lbnRzPzogUm9sZUFzc2lnbm1lbnRbXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFJlc291cmNlR3JhbnQsIFJFTF9SRVNUUklDVCwgZmFsc2UpIHJlc291cmNlR3JhbnRzPzogUmVzb3VyY2VHcmFudFtdIHwgc3RyaW5nW107XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwidGVuYW50X21lbWJlcnNoaXBzXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFRlbmFudE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfdGVuYW50X21lbWJlcnNoaXBzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVXNlciwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3RlbmFudF9tZW1iZXJzaGlwc191c2VyXCIpXG4gIEByZXF1aXJlZCgpXG4gIHVzZXIhOiBVc2VyIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihNZW1iZXJzaGlwU3RhdHVzT3B0aW9ucykgQGNvbHVtbigpIHN0YXR1cyE6IE1lbWJlcnNoaXBTdGF0dXM7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwib3JnX3VuaXRfbWVtYmVyc2hpcHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgT3JnVW5pdE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX21lbWJlcnNoaXBzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX29yZ19tZW1iZXJzaGlwc19vcmdfdW5pdFwiKVxuICBAcmVxdWlyZWQoKVxuICBvcmdVbml0ITogT3JnVW5pdCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBVc2VyLCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfb3JnX21lbWJlcnNoaXBzX3VzZXJcIilcbiAgQHJlcXVpcmVkKClcbiAgdXNlciE6IFVzZXIgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKE1lbWJlcnNoaXBTdGF0dXNPcHRpb25zKSBAY29sdW1uKCkgc3RhdHVzITogTWVtYmVyc2hpcFN0YXR1cztcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJncm91cF9tZW1iZXJzaGlwc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNoaXAgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZ3JvdXBfbWVtYmVyc2hpcHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBHcm91cCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2dyb3VwX21lbWJlcnNoaXBzX2dyb3VwXCIpXG4gIEByZXF1aXJlZCgpXG4gIGdyb3VwITogR3JvdXAgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZ3JvdXBfbWVtYmVyc2hpcHNfcHJpbmNpcGFsXCIpXG4gIEByZXF1aXJlZCgpXG4gIHByaW5jaXBhbCE6IFByaW5jaXBhbCB8IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwicGVybWlzc2lvbnNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbiBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQHVuaXF1ZSgpIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkga2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihQZXJtaXNzaW9uQ2F0ZWdvcnlPcHRpb25zKSBAY29sdW1uKCkgY2F0ZWdvcnkhOiBQZXJtaXNzaW9uQ2F0ZWdvcnk7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBvbmVUb01hbnkoKCkgPT4gUm9sZVBlcm1pc3Npb24sIFJFTF9SRVNUUklDVCwgZmFsc2UpIHJvbGVQZXJtaXNzaW9ucz86IFJvbGVQZXJtaXNzaW9uW10gfCBzdHJpbmdbXTtcbn1cblxuQHRhYmxlKFwicm9sZXNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUm9sZSBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9OVUxMSUZZLCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVzX3RlbmFudFwiKVxuICB0ZW5hbnQ/OiBUZW5hbnQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkga2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIG5hbWUhOiBzdHJpbmc7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG9uZVRvTWFueSgoKSA9PiBSb2xlUGVybWlzc2lvbiwgUkVMX1JFU1RSSUNULCBmYWxzZSkgcm9sZVBlcm1pc3Npb25zPzogUm9sZVBlcm1pc3Npb25bXSB8IHN0cmluZ1tdO1xuICBAb25lVG9NYW55KCgpID0+IFJvbGVBc3NpZ25tZW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBhc3NpZ25tZW50cz86IFJvbGVBc3NpZ25tZW50W10gfCBzdHJpbmdbXTtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJyb2xlX3Blcm1pc3Npb25zXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIFJvbGVQZXJtaXNzaW9uIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFJvbGUsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yb2xlX3Blcm1pc3Npb25zX3JvbGVcIilcbiAgQHJlcXVpcmVkKClcbiAgcm9sZSE6IFJvbGUgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUGVybWlzc2lvbiwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVfcGVybWlzc2lvbnNfcGVybWlzc2lvblwiKVxuICBAcmVxdWlyZWQoKVxuICBwZXJtaXNzaW9uITogUGVybWlzc2lvbiB8IHN0cmluZztcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInJvbGVfYXNzaWdubWVudHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUm9sZUFzc2lnbm1lbnQgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9hc3NpZ25tZW50c190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3JvbGVfYXNzaWdubWVudHNfcHJpbmNpcGFsXCIpXG4gIEByZXF1aXJlZCgpXG4gIHByaW5jaXBhbCE6IFByaW5jaXBhbCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBSb2xlLCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcm9sZV9hc3NpZ25tZW50c19yb2xlXCIpXG4gIEByZXF1aXJlZCgpXG4gIHJvbGUhOiBSb2xlIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihTY29wZUtpbmRPcHRpb25zKSBAY29sdW1uKCkgc2NvcGVLaW5kITogU2NvcGVLaW5kO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNjb3BlSWQhOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoQm9vbGVhbikgQGNvbHVtbigpIGluaGVyaXREb3duITogYm9vbGVhbjtcbiAgQGNvbHVtbigpIHN0YXJ0c0F0PzogRGF0ZTtcbiAgQGNvbHVtbigpIGV4cGlyZXNBdD86IERhdGU7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgY29uZGl0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcImluaGVyaXRhbmNlX2Jsb2Nrc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBJbmhlcml0YW5jZUJsb2NrIGV4dGVuZHMgQXV0aG9yaXphdGlvbk1vZGVsIHtcbiAgQHBrKHsgdHlwZTogU3RyaW5nIH0pIGlkITogc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFRlbmFudCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX2luaGVyaXRhbmNlX2Jsb2Nrc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19pbmhlcml0YW5jZV9ibG9ja3Nfb3JnX3VuaXRcIilcbiAgQHJlcXVpcmVkKClcbiAgb3JnVW5pdCE6IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gT3JnVW5pdCwgUkVMX05VTExJRlksIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfaW5oZXJpdGFuY2VfYmxvY2tzX2Jsb2NrZWRfYW5jZXN0b3JcIilcbiAgYmxvY2tlZEZyb21BbmNlc3Rvcj86IE9yZ1VuaXQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFBlcm1pc3Npb25DYXRlZ29yeU9wdGlvbnMpIEBjb2x1bW4oKSBwZXJtaXNzaW9uQ2F0ZWdvcnkhOiBQZXJtaXNzaW9uQ2F0ZWdvcnk7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcmVhc29uPzogc3RyaW5nO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbiAgQHVwZGF0ZWRBdCgpIHVwZGF0ZWRBdCE6IERhdGU7XG59XG5cbkB0YWJsZShcInByb3RlY3RlZF9yZXNvdXJjZXNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkUmVzb3VyY2UgZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfcHJvdGVjdGVkX3Jlc291cmNlc190ZW5hbnRcIilcbiAgQHJlcXVpcmVkKClcbiAgdGVuYW50ITogVGVuYW50IHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IE9yZ1VuaXQsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19wcm90ZWN0ZWRfcmVzb3VyY2VzX29yZ191bml0XCIpXG4gIEByZXF1aXJlZCgpXG4gIG9yZ1VuaXQhOiBPcmdVbml0IHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHJlc291cmNlVHlwZSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSByZXNvdXJjZUlkITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQG9wdGlvbihSZXNvdXJjZVZpc2liaWxpdHlPcHRpb25zKSBAY29sdW1uKCkgdmlzaWJpbGl0eSE6IFJlc291cmNlVmlzaWJpbGl0eTtcbiAgQG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9OVUxMSUZZLCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Byb3RlY3RlZF9yZXNvdXJjZXNfb3duZXJcIilcbiAgb3duZXI/OiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgc2Vuc2l0aXZpdHk/OiBzdHJpbmc7XG4gIEB0eXBlT2YoT2JqZWN0KSBAY29sdW1uKCkgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG9uZVRvTWFueSgoKSA9PiBSZXNvdXJjZUdyYW50LCBSRUxfUkVTVFJJQ1QsIGZhbHNlKSBncmFudHM/OiBSZXNvdXJjZUdyYW50W10gfCBzdHJpbmdbXTtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuXG5AdGFibGUoXCJyZXNvdXJjZV9ncmFudHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VHcmFudCBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yZXNvdXJjZV9ncmFudHNfdGVuYW50XCIpXG4gIEByZXF1aXJlZCgpXG4gIHRlbmFudCE6IFRlbmFudCB8IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBQcm90ZWN0ZWRSZXNvdXJjZSwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Jlc291cmNlX2dyYW50c19yZXNvdXJjZVwiKVxuICBAcmVxdWlyZWQoKVxuICByZXNvdXJjZSE6IFByb3RlY3RlZFJlc291cmNlIHwgc3RyaW5nO1xuICBAbWFueVRvT25lKCgpID0+IFByaW5jaXBhbCwgUkVMX0NBU0NBREVfREVQRU5ERU5ULCBmYWxzZSwgdW5kZWZpbmVkLCBcImZrX3Jlc291cmNlX2dyYW50c19wcmluY2lwYWxcIilcbiAgQHJlcXVpcmVkKClcbiAgcHJpbmNpcGFsITogUHJpbmNpcGFsIHwgc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHBlcm1pc3Npb25LZXkhOiBzdHJpbmc7XG4gIEBjb2x1bW4oKSBzdGFydHNBdD86IERhdGU7XG4gIEBjb2x1bW4oKSBleHBpcmVzQXQ/OiBEYXRlO1xuICBAdHlwZU9mKE9iamVjdCkgQGNvbHVtbigpIGNvbmRpdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQG1hbnlUb09uZSgoKSA9PiBQcmluY2lwYWwsIFJFTF9SRVNUUklDVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19yZXNvdXJjZV9ncmFudHNfY3JlYXRlZF9ieVwiKVxuICBjcmVhdGVkQnk/OiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEBjcmVhdGVkQXQoKSBjcmVhdGVkQXQhOiBEYXRlO1xuICBAdXBkYXRlZEF0KCkgdXBkYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwiZWZmZWN0aXZlX3Blcm1pc3Npb25zXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEVmZmVjdGl2ZVBlcm1pc3Npb24gZXh0ZW5kcyBBdXRob3JpemF0aW9uTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSkgaWQhOiBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gVGVuYW50LCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZWZmZWN0aXZlX3Blcm1pc3Npb25zX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEBtYW55VG9PbmUoKCkgPT4gUHJpbmNpcGFsLCBSRUxfQ0FTQ0FERV9ERVBFTkRFTlQsIGZhbHNlLCB1bmRlZmluZWQsIFwiZmtfZWZmZWN0aXZlX3Blcm1pc3Npb25zX3ByaW5jaXBhbFwiKVxuICBAcmVxdWlyZWQoKVxuICBwcmluY2lwYWwhOiBQcmluY2lwYWwgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgcGVybWlzc2lvbktleSE6IHN0cmluZztcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBvcHRpb24oU2NvcGVLaW5kT3B0aW9ucykgQGNvbHVtbigpIHNjb3BlS2luZCE6IFNjb3BlS2luZDtcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBzY29wZUlkITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHNvdXJjZUtpbmQhOiBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAY29sdW1uKCkgc291cmNlSWQhOiBzdHJpbmc7XG4gIEBjb2x1bW4oKSBzdGFydHNBdD86IERhdGU7XG4gIEBjb2x1bW4oKSBleHBpcmVzQXQ/OiBEYXRlO1xuICBAY3JlYXRlZEF0KCkgY3JlYXRlZEF0ITogRGF0ZTtcbn1cblxuQHRhYmxlKFwic3RvcmFnZV9iaW5kaW5nc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBTdG9yYWdlQmluZGluZyBleHRlbmRzIEF1dGhvcml6YXRpb25Nb2RlbCB7XG4gIEBwayh7IHR5cGU6IFN0cmluZyB9KSBpZCE6IHN0cmluZztcbiAgQG1hbnlUb09uZSgoKSA9PiBUZW5hbnQsIFJFTF9DQVNDQURFX0RFUEVOREVOVCwgZmFsc2UsIHVuZGVmaW5lZCwgXCJma19zdG9yYWdlX2JpbmRpbmdzX3RlbmFudFwiKVxuICBAcmVxdWlyZWQoKVxuICB0ZW5hbnQhOiBUZW5hbnQgfCBzdHJpbmc7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFN0b3JhZ2VLaW5kT3B0aW9ucykgQGNvbHVtbigpIHN0b3JhZ2VLaW5kITogU3RvcmFnZUtpbmQ7XG4gIEByZXF1aXJlZCgpIEB0eXBlT2YoU3RyaW5nKSBAb3B0aW9uKFN0b3JhZ2VCaW5kaW5nS2luZE9wdGlvbnMpIEBjb2x1bW4oKSBiaW5kaW5nS2luZCE6IFN0b3JhZ2VCaW5kaW5nS2luZDtcbiAgQHJlcXVpcmVkKCkgQHR5cGVPZihTdHJpbmcpIEBjb2x1bW4oKSBiaW5kaW5nS2V5ITogc3RyaW5nO1xuICBAcmVxdWlyZWQoKSBAdHlwZU9mKFN0cmluZykgQGNvbHVtbigpIHJlZ2lvbiE6IHN0cmluZztcbiAgQHR5cGVPZihPYmplY3QpIEBjb2x1bW4oKSBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQGNyZWF0ZWRBdCgpIGNyZWF0ZWRBdCE6IERhdGU7XG4gIEB1cGRhdGVkQXQoKSB1cGRhdGVkQXQhOiBEYXRlO1xufVxuIl19
958
+ //# sourceMappingURL=org-based-authorization-system.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-based-authorization-system.models.js","sourceRoot":"","sources":["../../../src/namespaces/org-based-authorization-system.models.ts"],"names":[],"mappings":"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"}
@@ -1020,4 +1020,4 @@ __decorate([
1020
1020
  __metadata("design:paramtypes", [String, String, String, Object]),
1021
1021
  __metadata("design:returntype", Promise)
1022
1022
  ], SystemManagementService.prototype, "reactivateUserInTenant", null);
1023
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLnNlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtLnNlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUVoQixhQUFhLEVBRWIsU0FBUyxFQUNULGtCQUFrQixFQUVsQixFQUFFLEVBQ0YsVUFBVSxFQUNWLGFBQWEsR0FDZCw0Q0FBeUM7QUFlMUMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsYUFBYSxFQUNiLElBQUksRUFDSixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsRUFDZCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixJQUFJLEdBQ0wsbURBQWdEO0FBQ2pELEVBQUU7QUFDRixtQ0FBbUM7QUFDbkMsbUVBQW1FO0FBQ25FLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBa0IsRUFBRSxRQUFnQixFQUFXLEVBQUUsQ0FDbkUsVUFBVSxDQUFDLFNBQW9DLENBQUMsS0FBSyxRQUFRLENBQUM7QUFDaEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQUUsTUFBMEIsRUFBVyxFQUFFLENBQzVFLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQWdDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMzRSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFLENBQzFDLEtBQUs7S0FDRixJQUFJLEVBQUU7S0FDTixXQUFXLEVBQUU7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LGtCQUFrQixFQUNsQixnQkFBZ0IsQ0FBQyxTQUFTLEVBQzFCLEdBQUcsSUFBSSxDQUNSLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FDdEQsUUFBUSxFQUNSLFdBQVcsRUFDWCxHQUFHLElBQUksQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUdLLEFBQU4sS0FBSyxDQUFDLHNCQUFzQixDQUMxQixrQkFBMEIsRUFDMUIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsR0FBRyxJQUFXO1FBRWQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNwQyxrQkFBa0IsRUFDbEIsZ0JBQWdCLENBQUMsTUFBTSxFQUN2QixHQUFHLElBQUksQ0FDUixDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsbUJBQW1CLENBQ3ZELFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxJQUFJLENBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWpJTztJQURMLGFBQWEsRUFBRTs7Ozs0RUFnRGY7QUFHSztJQURMLGFBQWEsRUFBRTs7OztnRUF5Q2Y7QUFHSztJQURMLGFBQWEsRUFBRTs7OztrRUFpQmY7QUFHSztJQURMLGFBQWEsRUFBRTs7OztxRUFpQmYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlTW9kZWxTZXJ2aWNlLFxuICBJc29sYXRpb25UaWVyLFxuICBNZW1iZXJzaGlwU3RhdHVzLFxuICBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gIFByaW5jaXBhbEtpbmQsXG4gIFJlc291cmNlVmlzaWJpbGl0eSxcbiAgU2NvcGVLaW5kLFxuICBTdG9yYWdlQmluZGluZ0tpbmQsXG4gIFN0b3JhZ2VLaW5kLFxuICBpZCxcbiAgcmVsYXRpb25JZCxcbiAgdHJhbnNhY3Rpb25hbCxcbn0gZnJvbSBcIi4vb3JnLWJhc2VkLWF1dGhvcml6YXRpb24tc3lzdGVtXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2lnblJvbGVJbnB1dCxcbiAgQm9vdHN0cmFwT3JnVW5pdCxcbiAgQm9vdHN0cmFwVGVtcGxhdGUsXG4gIENyZWF0ZU9yZ1VuaXRJbnB1dCxcbiAgQ3JlYXRlUGVybWlzc2lvbklucHV0LFxuICBDcmVhdGVSb2xlSW5wdXQsXG4gIENyZWF0ZVN0b3JhZ2VCaW5kaW5nSW5wdXQsXG4gIENyZWF0ZVRlbmFudElucHV0LFxuICBDcmVhdGVVc2VySW5wdXQsXG4gIEVmZmVjdGl2ZVBlcm1pc3Npb25TbmFwc2hvdCxcbiAgR3JhbnRSZXNvdXJjZUlucHV0LFxuICBSZWdpc3RlclJlc291cmNlSW5wdXQsXG59IGZyb20gXCIuL29yZy1iYXNlZC1hdXRob3JpemF0aW9uLXN5c3RlbVwiO1xuaW1wb3J0IHtcbiAgRWZmZWN0aXZlUGVybWlzc2lvbixcbiAgR3JvdXAsXG4gIEdyb3VwTWVtYmVyc2hpcCxcbiAgSW5oZXJpdGFuY2VCbG9jayxcbiAgT3JnVW5pdCxcbiAgT3JnVW5pdENsb3N1cmUsXG4gIE9yZ1VuaXRNZW1iZXJzaGlwLFxuICBPcmdVbml0UHJvZmlsZSxcbiAgUGVybWlzc2lvbixcbiAgUHJvdGVjdGVkUmVzb3VyY2UsXG4gIFByaW5jaXBhbCxcbiAgUmVzb3VyY2VHcmFudCxcbiAgUm9sZSxcbiAgUm9sZUFzc2lnbm1lbnQsXG4gIFJvbGVQZXJtaXNzaW9uLFxuICBTdG9yYWdlQmluZGluZyxcbiAgVGVuYW50LFxuICBUZW5hbnRNZW1iZXJzaGlwLFxuICBUZW5hbnRQcm9maWxlLFxuICBVc2VyLFxufSBmcm9tIFwiLi9vcmctYmFzZWQtYXV0aG9yaXphdGlvbi1zeXN0ZW0ubW9kZWxzXCI7XG4vL1xuLy8gY29uc3Qgbm93SXNvID0gKCkgPT4gbmV3IERhdGUoKTtcbi8vIGNvbnN0IGFzQXJyYXkgPSA8VD4odmFsdWU6IFRbXSB8IHVuZGVmaW5lZCk6IFRbXSA9PiB2YWx1ZSA/PyBbXTtcbmNvbnN0IHNhbWVUZW5hbnQgPSAocm93VGVuYW50OiB1bmtub3duLCB0ZW5hbnRJZDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICByZWxhdGlvbklkKHJvd1RlbmFudCBhcyB7IGlkOiBzdHJpbmcgfSB8IHN0cmluZykgPT09IHRlbmFudElkO1xuY29uc3QgcmVsYXRpb25NYXRjaCA9ICh2YWx1ZTogdW5rbm93biwgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gIHRhcmdldCA/IHJlbGF0aW9uSWQodmFsdWUgYXMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmcpID09PSB0YXJnZXQgOiBmYWxzZTtcbmNvbnN0IGxvd2VyU2x1ZyA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHZhbHVlXG4gICAgLnRyaW0oKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG4gICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIikgfHwgXCJpdGVtXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZU1hbnlCeUlkKFxuICBzZXJ2aWNlOiBCYXNlTW9kZWxTZXJ2aWNlPGFueT4sXG4gIHJvd3M6IEFycmF5PHsgaWQ6IHN0cmluZyB9PixcbiAgLi4uYXJnczogYW55W11cbik6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgYXdhaXQgc2VydmljZS5kZWxldGVCeUlkKHJvdy5pZCwgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbmFudFByb2ZpbGVTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxUZW5hbnRQcm9maWxlPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFRlbmFudFByb2ZpbGUpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUHJvZmlsZShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByb2ZpbGVLZXk6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VGVuYW50UHJvZmlsZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIHByb2ZpbGVLZXksXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZvclRlbmFudChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8VGVuYW50UHJvZmlsZVtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocHJvZmlsZSkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gocHJvZmlsZS50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JUZW5hbnQodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZChcbiAgICAgIHRoaXMsXG4gICAgICBhd2FpdCB0aGlzLmxpc3RGb3JUZW5hbnQodGVuYW50SWQsIC4uLmFyZ3MpLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRQcm9maWxlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdFByb2ZpbGU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdFByb2ZpbGUpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUHJvZmlsZShcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBwcm9maWxlS2V5OiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRQcm9maWxlPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBwcm9maWxlS2V5LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JPcmdVbml0KFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdFByb2ZpbGVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByb2ZpbGUpID0+XG4gICAgICByZWxhdGlvbk1hdGNoKHByb2ZpbGUub3JnVW5pdCwgb3JnVW5pdElkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9yZ1VuaXRDbG9zdXJlU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdENsb3N1cmU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoT3JnVW5pdENsb3N1cmUpO1xuICB9XG5cbiAgYXN5bmMgbGlzdEFuY2VzdG9ycyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdENsb3N1cmVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHJvdykgPT5cbiAgICAgICAgICBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICAgIHJlbGF0aW9uTWF0Y2gocm93LmRlc2NlbmRhbnQsIG9yZ1VuaXRJZClcbiAgICAgIClcbiAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5kZXB0aCAtIHJpZ2h0LmRlcHRoKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3REZXNjZW5kYW50cyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdENsb3N1cmVbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHJvdykgPT5cbiAgICAgICAgICBzYW1lVGVuYW50KHJvdy50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICAgIHJlbGF0aW9uTWF0Y2gocm93LmFuY2VzdG9yLCBvcmdVbml0SWQpXG4gICAgICApXG4gICAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQuZGVwdGggLSByaWdodC5kZXB0aCk7XG4gIH1cblxuICBhc3luYyBpc0FuY2VzdG9yT2YoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGRlc2NlbmRhbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5saXN0QW5jZXN0b3JzKHRlbmFudElkLCBkZXNjZW5kYW50T3JnVW5pdElkLCAuLi5hcmdzKVxuICAgICkuc29tZSgocm93KSA9PiByZWxhdGlvbk1hdGNoKHJvdy5hbmNlc3RvciwgYW5jZXN0b3JPcmdVbml0SWQpKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlbGZMaW5rKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0Q2xvc3VyZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgIGFuY2VzdG9yOiBvcmdVbml0SWQsXG4gICAgICAgIGRlc2NlbmRhbnQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgZGVwdGg6IDAsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwYXJlbnRPcmdVbml0SWQ6IHN0cmluZyxcbiAgICBjaGlsZE9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFuY2VzdG9yTGlua3MgPSBhd2FpdCB0aGlzLmxpc3RBbmNlc3RvcnMoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHBhcmVudE9yZ1VuaXRJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYW5jZXN0b3JMaW5rcy5tYXAoKGxpbmspID0+XG4gICAgICAgIHRoaXMuY3JlYXRlT25lKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBpZCgpLFxuICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgICAgIGFuY2VzdG9yOiBsaW5rLmFuY2VzdG9yLFxuICAgICAgICAgICAgZGVzY2VuZGFudDogY2hpbGRPcmdVbml0SWQsXG4gICAgICAgICAgICBkZXB0aDogbGluay5kZXB0aCArIDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTGlua3NGb3JTdWJ0cmVlKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3VidHJlZSA9IGF3YWl0IHRoaXMubGlzdERlc2NlbmRhbnRzKHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRJZHMgPSBuZXcgU2V0KFtcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIC4uLnN1YnRyZWUubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKSxcbiAgICBdKTtcbiAgICBjb25zdCBhbmNlc3RvcklkcyA9IG5ldyBTZXQoW1xuICAgICAgb3JnVW5pdElkLFxuICAgICAgLi4uc3VidHJlZS5tYXAoKHJvdykgPT4gcmVsYXRpb25JZChyb3cuYW5jZXN0b3IpKSxcbiAgICBdKTtcbiAgICBjb25zdCByb3dzID0gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKHJvdykgPT5cbiAgICAgICAgc2FtZVRlbmFudChyb3cudGVuYW50LCB0ZW5hbnRJZCkgJiZcbiAgICAgICAgKGRlc2NlbmRhbnRJZHMuaGFzKHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKSB8fFxuICAgICAgICAgIGFuY2VzdG9ySWRzLmhhcyhyZWxhdGlvbklkKHJvdy5hbmNlc3RvcikpKVxuICAgICk7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQodGhpcywgcm93cywgLi4uYXJncyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEluaGVyaXRhbmNlQmxvY2spO1xuICB9XG5cbiAgYXN5bmMgYmxvY2tDYXRlZ29yeShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25DYXRlZ29yeTogUGVybWlzc2lvbkNhdGVnb3J5LFxuICAgIGJsb2NrZWRGcm9tQW5jZXN0b3JJZD86IHN0cmluZyxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxJbmhlcml0YW5jZUJsb2NrPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICBibG9ja2VkRnJvbUFuY2VzdG9yOiBibG9ja2VkRnJvbUFuY2VzdG9ySWQsXG4gICAgICAgIHBlcm1pc3Npb25DYXRlZ29yeSxcbiAgICAgICAgcmVhc29uLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdW5ibG9ja0NhdGVnb3J5KGJsb2NrSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQoYmxvY2tJZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBsaXN0Rm9yT3JnVW5pdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8SW5oZXJpdGFuY2VCbG9ja1tdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChibG9jaykgPT5cbiAgICAgICAgc2FtZVRlbmFudChibG9jay50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICByZWxhdGlvbk1hdGNoKGJsb2NrLm9yZ1VuaXQsIG9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBhbmNlc3Rvck9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIGNhdGVnb3J5OiBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RGb3JPcmdVbml0KHRlbmFudElkLCBvcmdVbml0SWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKGJsb2NrKSA9PlxuICAgICAgICBibG9jay5wZXJtaXNzaW9uQ2F0ZWdvcnkgPT09IGNhdGVnb3J5ICYmXG4gICAgICAgICghYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciB8fFxuICAgICAgICAgIHJlbGF0aW9uTWF0Y2goYmxvY2suYmxvY2tlZEZyb21BbmNlc3RvciwgYW5jZXN0b3JPcmdVbml0SWQpKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbmFudFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFRlbmFudD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihUZW5hbnQpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVGVuYW50KFxuICAgIGlucHV0OiBDcmVhdGVUZW5hbnRJbnB1dCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHNsdWc6IGlucHV0LnNsdWcsXG4gICAgICAgIG5hbWU6IGlucHV0Lm5hbWUsXG4gICAgICAgIGlzb2xhdGlvblRpZXI6IGlucHV0Lmlzb2xhdGlvblRpZXIgPz8gSXNvbGF0aW9uVGllci5Qb29sZWQsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRCeVNsdWcoc2x1Zzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VGVuYW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZE9uZUJ5KFwic2x1Z1wiLCBzbHVnIGFzIG5ldmVyLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHJlbmFtZVRlbmFudChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh0ZW5hbnRJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgY2hhbmdlU2x1ZyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHNsdWc6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZSh0ZW5hbnRJZCwgeyBzbHVnIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgc2V0SXNvbGF0aW9uVGllcihcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGlzb2xhdGlvblRpZXI6IElzb2xhdGlvblRpZXIsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxUZW5hbnQ+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUodGVuYW50SWQsIHsgaXNvbGF0aW9uVGllciB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVRlbmFudENvbnRyb2xsZWQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQodGVuYW50SWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcmdVbml0U2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8T3JnVW5pdD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihPcmdVbml0KTtcbiAgfVxuXG4gIHByaXZhdGUgb3JnVW5pdFBhdGgocGFyZW50UGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlZ21lbnQgPSBsb3dlclNsdWcobmFtZSk7XG4gICAgcmV0dXJuIHBhcmVudFBhdGhcbiAgICAgID8gYCR7cGFyZW50UGF0aC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfS8ke3NlZ21lbnR9YFxuICAgICAgOiBgLyR7c2VnbWVudH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVQcm9maWxlSWZOZWVkZWQoXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgcHJvZmlsZUtleTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHByb2ZpbGVNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFwcm9maWxlS2V5KSByZXR1cm47XG4gICAgY29uc3QgcHJvZmlsZVNlcnZpY2UgPSBuZXcgT3JnVW5pdFByb2ZpbGVTZXJ2aWNlKCk7XG4gICAgYXdhaXQgcHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZShcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIHByb2ZpbGVLZXksXG4gICAgICBwcm9maWxlTWV0YWRhdGEsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY3JlYXRlUm9vdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHByb2ZpbGVLZXk/OiBzdHJpbmcsXG4gICAgcHJvZmlsZU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0PiB7XG4gICAgY29uc3Qgb3JnVW5pdCA9IGF3YWl0IHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVByb2ZpbGVJZk5lZWRlZChcbiAgICAgIG9yZ1VuaXQuaWQsXG4gICAgICBwcm9maWxlS2V5LFxuICAgICAgcHJvZmlsZU1ldGFkYXRhLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuY3JlYXRlU2VsZkxpbmsodGVuYW50SWQsIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgIHJldHVybiBvcmdVbml0O1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBjcmVhdGVDaGlsZChcbiAgICBpbnB1dDogQ3JlYXRlT3JnVW5pdElucHV0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdD4ge1xuICAgIGNvbnN0IHBhcmVudCA9IGlucHV0LnBhcmVudE9yZ1VuaXRJZFxuICAgICAgPyBhd2FpdCB0aGlzLmdldEJ5SWQoaW5wdXQucGFyZW50T3JnVW5pdElkLCAuLi5hcmdzKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3JnVW5pdCA9IGF3YWl0IHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgcGFyZW50OiBwYXJlbnQ/LmlkID8/IGlucHV0LnBhcmVudE9yZ1VuaXRJZCxcbiAgICAgICAgbmFtZTogaW5wdXQubmFtZSxcbiAgICAgICAgcGF0aDogdGhpcy5vcmdVbml0UGF0aChwYXJlbnQ/LnBhdGgsIGlucHV0Lm5hbWUpLFxuICAgICAgICBtZXRhZGF0YTogaW5wdXQubWV0YWRhdGEsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVQcm9maWxlSWZOZWVkZWQoXG4gICAgICBvcmdVbml0LmlkLFxuICAgICAgaW5wdXQucHJvZmlsZUtleSxcbiAgICAgIGlucHV0LnByb2ZpbGVNZXRhZGF0YSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmNyZWF0ZVNlbGZMaW5rKGlucHV0LnRlbmFudElkLCBvcmdVbml0LmlkLCAuLi5hcmdzKTtcbiAgICBpZiAoaW5wdXQucGFyZW50T3JnVW5pdElkKSB7XG4gICAgICBhd2FpdCBjbG9zdXJlU2VydmljZS5pbnNlcnRBbmNlc3RvckxpbmtzRm9yTmV3Q2hpbGQoXG4gICAgICAgIGlucHV0LnRlbmFudElkLFxuICAgICAgICBpbnB1dC5wYXJlbnRPcmdVbml0SWQsXG4gICAgICAgIG9yZ1VuaXQuaWQsXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvcmdVbml0O1xuICB9XG5cbiAgYXN5bmMgbGlzdENoaWxkcmVuKFxuICAgIHBhcmVudE9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigob3JnVW5pdCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gob3JnVW5pdC5wYXJlbnQsIHBhcmVudE9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudE9yZ1VuaXRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChvcmdVbml0KSA9PlxuICAgICAgc2FtZVRlbmFudChvcmdVbml0LnRlbmFudCwgdGVuYW50SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3REZXNjZW5kYW50T3JnVW5pdHMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBpbmNsdWRlU2VsZiA9IGZhbHNlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8T3JnVW5pdFtdPiB7XG4gICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBjbG9zdXJlU2VydmljZS5saXN0RGVzY2VuZGFudHMoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQoZGVzY2VuZGFudHMubWFwKChyb3cpID0+IHJlbGF0aW9uSWQocm93LmRlc2NlbmRhbnQpKSk7XG4gICAgaWYgKGluY2x1ZGVTZWxmKSBpZHMuYWRkKG9yZ1VuaXRJZCk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChvcmdVbml0KSA9PiBpZHMuaGFzKG9yZ1VuaXQuaWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RBbmNlc3Rvck9yZ1VuaXRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgaW5jbHVkZVNlbGYgPSBmYWxzZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRbXT4ge1xuICAgIGNvbnN0IGNsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGNvbnN0IGFuY2VzdG9ycyA9IGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmxpc3RBbmNlc3RvcnMoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQoYW5jZXN0b3JzLm1hcCgocm93KSA9PiByZWxhdGlvbklkKHJvdy5hbmNlc3RvcikpKTtcbiAgICBpZiAoaW5jbHVkZVNlbGYpIGlkcy5hZGQob3JnVW5pdElkKTtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdFRlbmFudE9yZ1VuaXRzKHRlbmFudElkLCAuLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKG9yZ1VuaXQpID0+IGlkcy5oYXMob3JnVW5pdC5pZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lT3JnVW5pdChcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmdldEJ5SWQob3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUoXG4gICAgICBvcmdVbml0SWQsXG4gICAgICB7IG5hbWUsIHBhdGg6IHRoaXMub3JnVW5pdFBhdGgodW5kZWZpbmVkLCBuYW1lKSB9LFxuICAgICAgLi4uYXJnc1xuICAgICkudGhlbihhc3luYyAodXBkYXRlZCkgPT4ge1xuICAgICAgdXBkYXRlZC5wYXRoID0gZXhpc3RpbmcucGFyZW50XG4gICAgICAgID8gdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpXG4gICAgICAgIDogdGhpcy5vcmdVbml0UGF0aCh1bmRlZmluZWQsIG5hbWUpO1xuICAgICAgcmV0dXJuIHVwZGF0ZWQ7XG4gICAgfSk7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIG1vdmVPcmdVbml0KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgbmV3UGFyZW50T3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0PiB7XG4gICAgY29uc3QgbmV3UGFyZW50ID0gYXdhaXQgdGhpcy5nZXRCeUlkKG5ld1BhcmVudE9yZ1VuaXRJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCB0aGlzLmdldEJ5SWQob3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdGhpcy51cGRhdGVPbmUoXG4gICAgICBvcmdVbml0SWQsXG4gICAgICB7XG4gICAgICAgIHBhcmVudDogbmV3UGFyZW50LmlkLFxuICAgICAgICBwYXRoOiB0aGlzLm9yZ1VuaXRQYXRoKG5ld1BhcmVudC5wYXRoLCBleGlzdGluZy5uYW1lKSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnJlYnVpbGRUZW5hbnRDbG9zdXJlKHRlbmFudElkLCAuLi5hcmdzKTtcbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZFRlbmFudENsb3N1cmUodGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjbG9zdXJlU2VydmljZSA9IG5ldyBPcmdVbml0Q2xvc3VyZVNlcnZpY2UoKTtcbiAgICBjb25zdCBleGlzdGluZ0xpbmtzID0gYXdhaXQgY2xvc3VyZVNlcnZpY2UubGlzdEFsbCguLi5hcmdzKTtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZChcbiAgICAgIGNsb3N1cmVTZXJ2aWNlLFxuICAgICAgZXhpc3RpbmdMaW5rcy5maWx0ZXIoKHJvdykgPT4gc2FtZVRlbmFudChyb3cudGVuYW50LCB0ZW5hbnRJZCkpLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG5cbiAgICBjb25zdCBvcmdVbml0cyA9IChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLnNvcnQoXG4gICAgICAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdERlcHRoID0gbGVmdC5wYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO1xuICAgICAgICBjb25zdCByaWdodERlcHRoID0gcmlnaHQucGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGxlZnREZXB0aCAtIHJpZ2h0RGVwdGg7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGZvciAoY29uc3Qgb3JnVW5pdCBvZiBvcmdVbml0cykge1xuICAgICAgYXdhaXQgY2xvc3VyZVNlcnZpY2UuY3JlYXRlU2VsZkxpbmsodGVuYW50SWQsIG9yZ1VuaXQuaWQsIC4uLmFyZ3MpO1xuICAgICAgaWYgKG9yZ1VuaXQucGFyZW50KSB7XG4gICAgICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmluc2VydEFuY2VzdG9yTGlua3NGb3JOZXdDaGlsZChcbiAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICByZWxhdGlvbklkKG9yZ1VuaXQucGFyZW50KSxcbiAgICAgICAgICBvcmdVbml0LmlkLFxuICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIGRlbGV0ZU9yZ1VuaXRUcmVlKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCB0aGlzLmxpc3REZXNjZW5kYW50T3JnVW5pdHMoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIG9yZ1VuaXRJZCxcbiAgICAgIHRydWUsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBkZXNjZW5kYW50SWRzID0gbmV3IFNldChkZXNjZW5kYW50cy5tYXAoKG9yZ1VuaXQpID0+IG9yZ1VuaXQuaWQpKTtcbiAgICBjb25zdCBvcmdVbml0cyA9IChhd2FpdCB0aGlzLmxpc3RUZW5hbnRPcmdVbml0cyh0ZW5hbnRJZCwgLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChvcmdVbml0KSA9PiBkZXNjZW5kYW50SWRzLmhhcyhvcmdVbml0LmlkKVxuICAgICk7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQodGhpcywgb3JnVW5pdHMsIC4uLmFyZ3MpO1xuICAgIGF3YWl0IGNsb3N1cmVTZXJ2aWNlLmRlbGV0ZUxpbmtzRm9yU3VidHJlZSh0ZW5hbnRJZCwgb3JnVW5pdElkLCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFVzZXI+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVXNlcik7XG4gIH1cblxuICBhc3luYyBjcmVhdGVVc2VyKGlucHV0OiBDcmVhdGVVc2VySW5wdXQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgZW1haWw6IGlucHV0LmVtYWlsLFxuICAgICAgICBwaG9uZTogaW5wdXQucGhvbmUsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBpbnB1dC5kaXNwbGF5TmFtZSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5RW1haWwoZW1haWw6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFVzZXI+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmluZChcbiAgICAgICh1c2VyKSA9PiB1c2VyLmVtYWlsID09PSBlbWFpbFxuICAgICkgYXMgVXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURpc3BsYXlOYW1lKFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHVzZXJJZCwgeyBkaXNwbGF5TmFtZSB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUVtYWlsKFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIGVtYWlsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHVzZXJJZCwgeyBlbWFpbCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVBob25lKFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHBob25lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxVc2VyPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHVzZXJJZCwgeyBwaG9uZSB9LCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJpbmNpcGFsU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8UHJpbmNpcGFsPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFByaW5jaXBhbCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVQcmluY2lwYWwoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBraW5kOiBQcmluY2lwYWxLaW5kLFxuICAgIHN1YmplY3RJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJpbmNpcGFsPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAga2luZCxcbiAgICAgICAgc3ViamVjdElkLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0Rm9yU3ViamVjdChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGtpbmQ6IFByaW5jaXBhbEtpbmQsXG4gICAgc3ViamVjdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQcmluY2lwYWwgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmluZChcbiAgICAgIChwcmluY2lwYWwpID0+XG4gICAgICAgIHNhbWVUZW5hbnQocHJpbmNpcGFsLnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgIHByaW5jaXBhbC5raW5kID09PSBraW5kICYmXG4gICAgICAgIHByaW5jaXBhbC5zdWJqZWN0SWQgPT09IHN1YmplY3RJZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRPckNyZWF0ZUZvclN1YmplY3QoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBraW5kOiBQcmluY2lwYWxLaW5kLFxuICAgIHN1YmplY3RJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJpbmNpcGFsPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhd2FpdCB0aGlzLmdldEZvclN1YmplY3QodGVuYW50SWQsIGtpbmQsIHN1YmplY3RJZCwgLi4uYXJncykpID8/XG4gICAgICAoYXdhaXQgdGhpcy5jcmVhdGVQcmluY2lwYWwodGVuYW50SWQsIGtpbmQsIHN1YmplY3RJZCwgLi4uYXJncykpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJQcmluY2lwYWwoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByaW5jaXBhbD4ge1xuICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlRm9yU3ViamVjdChcbiAgICAgIHRlbmFudElkLFxuICAgICAgUHJpbmNpcGFsS2luZC5Vc2VyLFxuICAgICAgdXNlcklkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRHcm91cFByaW5jaXBhbChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGdyb3VwSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByaW5jaXBhbD4ge1xuICAgIHJldHVybiB0aGlzLmdldE9yQ3JlYXRlRm9yU3ViamVjdChcbiAgICAgIHRlbmFudElkLFxuICAgICAgUHJpbmNpcGFsS2luZC5Hcm91cCxcbiAgICAgIGdyb3VwSWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVuYW50TWVtYmVyc2hpcFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFRlbmFudE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVGVuYW50TWVtYmVyc2hpcCk7XG4gIH1cblxuICBhc3luYyBhZGRVc2VyVG9UZW5hbnQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMgPSBNZW1iZXJzaGlwU3RhdHVzLkFjdGl2ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFRlbmFudE1lbWJlcnNoaXA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICB1c2VyOiB1c2VySWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNldFN0YXR1cyhcbiAgICBtZW1iZXJzaGlwSWQ6IHN0cmluZyxcbiAgICBzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxUZW5hbnRNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKG1lbWJlcnNoaXBJZCwgeyBzdGF0dXMgfSwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBsaXN0VXNlclRlbmFudHMoXG4gICAgdXNlcklkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxUZW5hbnRNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLnVzZXIsIHVzZXJJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudFVzZXJzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxUZW5hbnRNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PlxuICAgICAgc2FtZVRlbmFudChtZW1iZXJzaGlwLnRlbmFudCwgdGVuYW50SWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVVzZXJGcm9tVGVuYW50KFxuICAgIG1lbWJlcnNoaXBJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChtZW1iZXJzaGlwSWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcmdVbml0TWVtYmVyc2hpcFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPE9yZ1VuaXRNZW1iZXJzaGlwPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKE9yZ1VuaXRNZW1iZXJzaGlwKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFVzZXJUb09yZ1VuaXQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMgPSBNZW1iZXJzaGlwU3RhdHVzLkFjdGl2ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgb3JnVW5pdDogb3JnVW5pdElkLFxuICAgICAgICB1c2VyOiB1c2VySWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNldFN0YXR1cyhcbiAgICBtZW1iZXJzaGlwSWQ6IHN0cmluZyxcbiAgICBzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxPcmdVbml0TWVtYmVyc2hpcD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShtZW1iZXJzaGlwSWQsIHsgc3RhdHVzIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbGlzdFVzZXJPcmdVbml0cyhcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLnVzZXIsIHVzZXJJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdE9yZ1VuaXRVc2VycyhcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE9yZ1VuaXRNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChtZW1iZXJzaGlwLm9yZ1VuaXQsIG9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlVXNlckZyb21PcmdVbml0KFxuICAgIG1lbWJlcnNoaXBJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChtZW1iZXJzaGlwSWQsIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcm91cFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPEdyb3VwPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEdyb3VwKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUdyb3VwKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZD86IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8R3JvdXA+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IHRlbmFudElkLFxuICAgICAgICBvcmdVbml0OiBvcmdVbml0SWQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lR3JvdXAoXG4gICAgZ3JvdXBJZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEdyb3VwPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKGdyb3VwSWQsIHsgbmFtZSB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVHcm91cFRvT3JnVW5pdChcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgb3JnVW5pdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShncm91cElkLCB7IG9yZ1VuaXQ6IG9yZ1VuaXRJZCB9LCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUZW5hbnRHcm91cHModGVuYW50SWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEdyb3VwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncm91cCkgPT5cbiAgICAgIHNhbWVUZW5hbnQoZ3JvdXAudGVuYW50LCB0ZW5hbnRJZClcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxHcm91cE1lbWJlcnNoaXA+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR3JvdXBNZW1iZXJzaGlwKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFByaW5jaXBhbFRvR3JvdXAoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8R3JvdXBNZW1iZXJzaGlwPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgZ3JvdXA6IGdyb3VwSWQsXG4gICAgICAgIHByaW5jaXBhbDogcHJpbmNpcGFsSWQsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdEdyb3VwTWVtYmVycyhcbiAgICBncm91cElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxHcm91cE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+XG4gICAgICByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAuZ3JvdXAsIGdyb3VwSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQcmluY2lwYWxHcm91cHMoXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEdyb3VwTWVtYmVyc2hpcFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigobWVtYmVyc2hpcCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5wcmluY2lwYWwsIHByaW5jaXBhbElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyByZW1vdmVQcmluY2lwYWxGcm9tR3JvdXAoXG4gICAgbWVtYmVyc2hpcElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKG1lbWJlcnNoaXBJZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyByZXNvbHZlR3JvdXBQcmluY2lwYWxJZHNGb3JQcmluY2lwYWwoXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgY29uc3QgbWVtYmVyc2hpcHMgPSBhd2FpdCB0aGlzLmxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW5hbnRJZCA9IHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpO1xuICAgICAgICBjb25zdCBncm91cElkID0gcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbChcbiAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICBncm91cElkLFxuICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHByaW5jaXBhbC5pZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHJpbmNpcGFscztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFBlcm1pc3Npb24+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUGVybWlzc2lvbik7XG4gIH1cblxuICBhc3luYyBjcmVhdGVQZXJtaXNzaW9uKFxuICAgIGlucHV0OiBDcmVhdGVQZXJtaXNzaW9uSW5wdXQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAga2V5OiBpbnB1dC5rZXksXG4gICAgICAgIGNhdGVnb3J5OiBpbnB1dC5jYXRlZ29yeSxcbiAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LmRlc2NyaXB0aW9uLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlLZXkoa2V5OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbmQoXG4gICAgICAocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5rZXkgPT09IGtleVxuICAgICkgYXMgUGVybWlzc2lvbjtcbiAgfVxuXG4gIGFzeW5jIGxpc3RCeUNhdGVnb3J5KFxuICAgIGNhdGVnb3J5OiBQZXJtaXNzaW9uQ2F0ZWdvcnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQZXJtaXNzaW9uW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24uY2F0ZWdvcnkgPT09IGNhdGVnb3J5XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURlc2NyaXB0aW9uKFxuICAgIHBlcm1pc3Npb25JZDogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQZXJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHBlcm1pc3Npb25JZCwgeyBkZXNjcmlwdGlvbiB9LCAuLi5hcmdzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm9sZVNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPFJvbGU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUm9sZSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVSb2xlKGlucHV0OiBDcmVhdGVSb2xlSW5wdXQsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25lKFxuICAgICAge1xuICAgICAgICBpZDogaWQoKSxcbiAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAga2V5OiBpbnB1dC5rZXksXG4gICAgICAgIG5hbWU6IGlucHV0Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBpbnB1dC5kZXNjcmlwdGlvbixcbiAgICAgICAgbWV0YWRhdGE6IGlucHV0Lm1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3lzdGVtUm9sZUJ5S2V5KGtleTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGUgPSAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKFxuICAgICAgKGNhbmRpZGF0ZSkgPT4gIWNhbmRpZGF0ZS50ZW5hbnQgJiYgY2FuZGlkYXRlLmtleSA9PT0ga2V5XG4gICAgKTtcbiAgICBpZiAoIXJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm9sZSBcIiR7a2V5fVwiIG5vdCBmb3VuZGApO1xuICAgIH1cbiAgICByZXR1cm4gcm9sZTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlbmFudFJvbGVCeUtleShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIGtleTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGUgPSAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKFxuICAgICAgKGNhbmRpZGF0ZSkgPT5cbiAgICAgICAgc2FtZVRlbmFudChjYW5kaWRhdGUudGVuYW50LCB0ZW5hbnRJZCkgJiYgY2FuZGlkYXRlLmtleSA9PT0ga2V5XG4gICAgKTtcbiAgICBpZiAoIXJvbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUm9sZSBcIiR7a2V5fVwiIG5vdCBmb3VuZCBmb3IgdGVuYW50ICR7dGVuYW50SWR9YCk7XG4gICAgfVxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgYXN5bmMgcmVuYW1lUm9sZShcbiAgICByb2xlSWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHJvbGVJZCwgeyBuYW1lIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUm9sZU1ldGFkYXRhKFxuICAgIHJvbGVJZDogc3RyaW5nLFxuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGU+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocm9sZUlkLCB7IG1ldGFkYXRhIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudFJvbGVzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgaW5jbHVkZVN5c3RlbSA9IGZhbHNlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZVtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocm9sZSkgPT5cbiAgICAgIGluY2x1ZGVTeXN0ZW1cbiAgICAgICAgPyAhcm9sZS50ZW5hbnQgfHwgc2FtZVRlbmFudChyb2xlLnRlbmFudCwgdGVuYW50SWQpXG4gICAgICAgIDogc2FtZVRlbmFudChyb2xlLnRlbmFudCwgdGVuYW50SWQpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm9sZVBlcm1pc3Npb25TZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxSb2xlUGVybWlzc2lvbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihSb2xlUGVybWlzc2lvbik7XG4gIH1cblxuICBhc3luYyBhZGRQZXJtaXNzaW9uVG9Sb2xlKFxuICAgIHJvbGVJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25JZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZVBlcm1pc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICByb2xlOiByb2xlSWQsXG4gICAgICAgIHBlcm1pc3Npb246IHBlcm1pc3Npb25JZCxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGFkZFBlcm1pc3Npb25LZXlUb1JvbGUoXG4gICAgcm9sZUlkOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbktleTogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZVBlcm1pc3Npb24+IHtcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gYXdhaXQgbmV3IFBlcm1pc3Npb25TZXJ2aWNlKCkuZ2V0QnlLZXkoXG4gICAgICBwZXJtaXNzaW9uS2V5LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuYWRkUGVybWlzc2lvblRvUm9sZShyb2xlSWQsIHBlcm1pc3Npb24uaWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlUGVybWlzc2lvbkZyb21Sb2xlKFxuICAgIHJvbGVQZXJtaXNzaW9uSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQocm9sZVBlcm1pc3Npb25JZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBsaXN0Um9sZVBlcm1pc3Npb25zKFxuICAgIHJvbGVJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHJvbGVQZXJtaXNzaW9uKSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChyb2xlUGVybWlzc2lvbi5yb2xlLCByb2xlSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQZXJtaXNzaW9uUm9sZXMoXG4gICAgcGVybWlzc2lvbklkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocm9sZVBlcm1pc3Npb24pID0+XG4gICAgICByZWxhdGlvbk1hdGNoKHJvbGVQZXJtaXNzaW9uLnBlcm1pc3Npb24sIHBlcm1pc3Npb25JZClcbiAgICApO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyByZXBsYWNlUm9sZVBlcm1pc3Npb25zKFxuICAgIHJvbGVJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25JZHM6IHN0cmluZ1tdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZVBlcm1pc3Npb25bXT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5saXN0Um9sZVBlcm1pc3Npb25zKHJvbGVJZCwgLi4uYXJncyk7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQodGhpcywgZXhpc3RpbmcsIC4uLmFyZ3MpO1xuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBlcm1pc3Npb25JZHMubWFwKChwZXJtaXNzaW9uSWQpID0+XG4gICAgICAgIHRoaXMuYWRkUGVybWlzc2lvblRvUm9sZShyb2xlSWQsIHBlcm1pc3Npb25JZCwgLi4uYXJncylcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVkO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBjcmVhdGVSb2xlV2l0aFBlcm1pc3Npb25zKFxuICAgIGlucHV0OiBDcmVhdGVSb2xlSW5wdXQsXG4gICAgcGVybWlzc2lvbktleXM6IHN0cmluZ1tdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZT4ge1xuICAgIGNvbnN0IHJvbGUgPSBhd2FpdCBuZXcgUm9sZVNlcnZpY2UoKS5jcmVhdGVSb2xlKGlucHV0LCAuLi5hcmdzKTtcbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb25LZXkgb2YgcGVybWlzc2lvbktleXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkUGVybWlzc2lvbktleVRvUm9sZShyb2xlLmlkLCBwZXJtaXNzaW9uS2V5LCAuLi5hcmdzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGVBc3NpZ25tZW50U2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8Um9sZUFzc2lnbm1lbnQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoUm9sZUFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXN5bmMgYXNzaWduUm9sZShcbiAgICBpbnB1dDogQXNzaWduUm9sZUlucHV0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Um9sZUFzc2lnbm1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICBwcmluY2lwYWw6IGlucHV0LnByaW5jaXBhbElkLFxuICAgICAgICByb2xlOiBpbnB1dC5yb2xlSWQsXG4gICAgICAgIHNjb3BlS2luZDogaW5wdXQuc2NvcGVLaW5kLFxuICAgICAgICBzY29wZUlkOiBpbnB1dC5zY29wZUlkLFxuICAgICAgICBpbmhlcml0RG93bjogaW5wdXQuaW5oZXJpdERvd24gPz8gZmFsc2UsXG4gICAgICAgIHN0YXJ0c0F0OiBpbnB1dC5zdGFydHNBdCxcbiAgICAgICAgZXhwaXJlc0F0OiBpbnB1dC5leHBpcmVzQXQsXG4gICAgICAgIGNvbmRpdGlvbnM6IGlucHV0LmNvbmRpdGlvbnMsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyByZXZva2VBc3NpZ25tZW50KGFzc2lnbm1lbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChhc3NpZ25tZW50SWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgbGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVBc3NpZ25tZW50W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKGFzc2lnbm1lbnQpID0+XG4gICAgICAgIHNhbWVUZW5hbnQoYXNzaWdubWVudC50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICByZWxhdGlvbk1hdGNoKGFzc2lnbm1lbnQucHJpbmNpcGFsLCBwcmluY2lwYWxJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFJvbGVBc3NpZ25tZW50cyhcbiAgICByb2xlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVBc3NpZ25tZW50W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChhc3NpZ25tZW50KSA9PlxuICAgICAgcmVsYXRpb25NYXRjaChhc3NpZ25tZW50LnJvbGUsIHJvbGVJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudEFzc2lnbm1lbnRzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSb2xlQXNzaWdubWVudFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigoYXNzaWdubWVudCkgPT5cbiAgICAgIHNhbWVUZW5hbnQoYXNzaWdubWVudC50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVBc3NpZ25tZW50V2luZG93KFxuICAgIGFzc2lnbm1lbnRJZDogc3RyaW5nLFxuICAgIHN0YXJ0c0F0OiBEYXRlIHwgdW5kZWZpbmVkLFxuICAgIGV4cGlyZXNBdDogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJvbGVBc3NpZ25tZW50PiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKGFzc2lnbm1lbnRJZCwgeyBzdGFydHNBdCwgZXhwaXJlc0F0IH0sIC4uLmFyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8RWZmZWN0aXZlUGVybWlzc2lvbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFZmZlY3RpdmVQZXJtaXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JQcmluY2lwYWwoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChwZXJtaXNzaW9uKSA9PlxuICAgICAgICBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiZcbiAgICAgICAgcmVsYXRpb25NYXRjaChwZXJtaXNzaW9uLnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JTY29wZShcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLFxuICAgIHNjb3BlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiZcbiAgICAgICAgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGhhc1Blcm1pc3Npb24oXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIHBlcm1pc3Npb25LZXk6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmcsXG4gICAgYXQ/OiBEYXRlLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykpLnNvbWUoXG4gICAgICAocGVybWlzc2lvbikgPT5cbiAgICAgICAgcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5ID09PSBwZXJtaXNzaW9uS2V5ICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiZcbiAgICAgICAgcGVybWlzc2lvbi5zY29wZUlkID09PSBzY29wZUlkICYmXG4gICAgICAgICghcGVybWlzc2lvbi5zdGFydHNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5zdGFydHNBdCA8PSBhdCkgJiZcbiAgICAgICAgKCFwZXJtaXNzaW9uLmV4cGlyZXNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5leHBpcmVzQXQgPj0gYXQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvclByaW5jaXBhbChcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgZGVsZXRlTWFueUJ5SWQoXG4gICAgICB0aGlzLFxuICAgICAgYXdhaXQgdGhpcy5saXN0Rm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvclRlbmFudCh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGRlbGV0ZU1hbnlCeUlkKFxuICAgICAgdGhpcyxcbiAgICAgIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocGVybWlzc2lvbikgPT5cbiAgICAgICAgc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpXG4gICAgICApLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIHJlYnVpbGRGb3JQcmluY2lwYWwoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8RWZmZWN0aXZlUGVybWlzc2lvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcblxuICAgIGNvbnN0IHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgICBjb25zdCByb2xlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUm9sZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgY29uc3QgcGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgICBjb25zdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IEdyb3VwTWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgICBjb25zdCBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgICBjb25zdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UgPSBuZXcgT3JnVW5pdENsb3N1cmVTZXJ2aWNlKCk7XG4gICAgY29uc3QgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgPSBuZXcgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UoKTtcblxuICAgIGNvbnN0IG1hdGVyaWFsaXplZDogRWZmZWN0aXZlUGVybWlzc2lvblNuYXBzaG90W10gPSBbXTtcbiAgICBjb25zdCBzb3VyY2VBc3NpZ25tZW50cyA9XG4gICAgICBhd2FpdCByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKFxuICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICk7XG4gICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwcyA9IGF3YWl0IGdyb3VwTWVtYmVyc2hpcFNlcnZpY2UubGlzdFByaW5jaXBhbEdyb3VwcyhcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25tZW50cyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBncm91cE1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwUHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbChcbiAgICAgICAgICAgIHJlbGF0aW9uSWQobWVtYmVyc2hpcC50ZW5hbnQpLFxuICAgICAgICAgICAgcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKSxcbiAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBncm91cFByaW5jaXBhbC5pZCxcbiAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuZmxhdCgpO1xuXG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbLi4uc291cmNlQXNzaWdubWVudHMsIC4uLmdyb3VwQXNzaWdubWVudHNdO1xuICAgIGZvciAoY29uc3QgYXNzaWdubWVudCBvZiBhc3NpZ25tZW50cykge1xuICAgICAgY29uc3Qgcm9sZVBlcm1pc3Npb25zID0gYXdhaXQgcm9sZVBlcm1pc3Npb25TZXJ2aWNlLmxpc3RSb2xlUGVybWlzc2lvbnMoXG4gICAgICAgIHJlbGF0aW9uSWQoYXNzaWdubWVudC5yb2xlKSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHJvbGVQZXJtaXNzaW9ucy5tYXAoYXN5bmMgKHJvbGVQZXJtaXNzaW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGVybWlzc2lvbiA9IGF3YWl0IHBlcm1pc3Npb25TZXJ2aWNlLmZpbmRPbmVCeShcbiAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgIHJlbGF0aW9uSWQocm9sZVBlcm1pc3Npb24ucGVybWlzc2lvbikgYXMgbmV2ZXIsXG4gICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gcGVybWlzc2lvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSBjb250aW51ZTtcbiAgICAgICAgY29uc3Qgc2NvcGVLaW5kID0gYXNzaWdubWVudC5zY29wZUtpbmQ7XG4gICAgICAgIGNvbnN0IHNjb3BlSWQgPSBhc3NpZ25tZW50LnNjb3BlSWQ7XG4gICAgICAgIGNvbnN0IHNjb3BlczogQXJyYXk8eyBzY29wZUtpbmQ6IFNjb3BlS2luZDsgc2NvcGVJZDogc3RyaW5nIH0+ID0gW107XG4gICAgICAgIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5UZW5hbnQpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZDogdGVuYW50SWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuUmVzb3VyY2UpIHtcbiAgICAgICAgICBzY29wZXMucHVzaCh7IHNjb3BlS2luZCwgc2NvcGVJZCB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmICFhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJiBhc3NpZ25tZW50LmluaGVyaXREb3duKSB7XG4gICAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSBhd2FpdCBvcmdVbml0Q2xvc3VyZVNlcnZpY2UubGlzdERlc2NlbmRhbnRzKFxuICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICBzY29wZUlkLFxuICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICk7XG4gICAgICAgICAgc2NvcGVzLnB1c2goXG4gICAgICAgICAgICAuLi5kZXNjZW5kYW50cy5tYXAoKHJvdykgPT4gKHtcbiAgICAgICAgICAgICAgc2NvcGVLaW5kLFxuICAgICAgICAgICAgICBzY29wZUlkOiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHNjb3BlZCBvZiBzY29wZXMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBzY29wZUtpbmQgPT09IFNjb3BlS2luZC5PcmdVbml0ICYmXG4gICAgICAgICAgICBhc3NpZ25tZW50LmluaGVyaXREb3duICYmXG4gICAgICAgICAgICBzY29wZWQuc2NvcGVJZCAhPT0gc2NvcGVJZCAmJlxuICAgICAgICAgICAgKGF3YWl0IGluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlLmNhdGVnb3J5QmxvY2tlZEZvckFuY2VzdG9yKFxuICAgICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgICAgc2NvcGVkLnNjb3BlSWQsXG4gICAgICAgICAgICAgIHNjb3BlSWQsXG4gICAgICAgICAgICAgIHBlcm1pc3Npb24uY2F0ZWdvcnksXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbWF0ZXJpYWxpemVkLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgICAgIHByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5rZXksXG4gICAgICAgICAgICBzY29wZUtpbmQ6IHNjb3BlZC5zY29wZUtpbmQsXG4gICAgICAgICAgICBzY29wZUlkOiBzY29wZWQuc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IFwicm9sZV9hc3NpZ25tZW50XCIsXG4gICAgICAgICAgICBzb3VyY2VJZDogYXNzaWdubWVudC5pZCxcbiAgICAgICAgICAgIHN0YXJ0c0F0OiBhc3NpZ25tZW50LnN0YXJ0c0F0LFxuICAgICAgICAgICAgZXhwaXJlc0F0OiBhc3NpZ25tZW50LmV4cGlyZXNBdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1hdGVyaWFsaXplZC5tYXAoKHBlcm1pc3Npb24pID0+XG4gICAgICAgIHRoaXMuY3JlYXRlT25lKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBwZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgdGVuYW50OiBwZXJtaXNzaW9uLnRlbmFudElkLFxuICAgICAgICAgICAgcHJpbmNpcGFsOiBwZXJtaXNzaW9uLnByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBwZXJtaXNzaW9uLnNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHBlcm1pc3Npb24uc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IHBlcm1pc3Npb24uc291cmNlS2luZCxcbiAgICAgICAgICAgIHNvdXJjZUlkOiBwZXJtaXNzaW9uLnNvdXJjZUlkLFxuICAgICAgICAgICAgc3RhcnRzQXQ6IHBlcm1pc3Npb24uc3RhcnRzQXQsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHBlcm1pc3Npb24uZXhwaXJlc0F0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uYXJnc1xuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclRlbmFudCh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSAoYXdhaXQgbmV3IFByaW5jaXBhbFNlcnZpY2UoKS5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocHJpbmNpcGFsKSA9PiBzYW1lVGVuYW50KHByaW5jaXBhbC50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gICAgZm9yIChjb25zdCBwcmluY2lwYWwgb2YgcHJpbmNpcGFscykge1xuICAgICAgYXdhaXQgdGhpcy5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdGVjdGVkUmVzb3VyY2VTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxQcm90ZWN0ZWRSZXNvdXJjZT4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihQcm90ZWN0ZWRSZXNvdXJjZSk7XG4gIH1cblxuICBhc3luYyByZWdpc3RlclJlc291cmNlKFxuICAgIGlucHV0OiBSZWdpc3RlclJlc291cmNlSW5wdXQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQcm90ZWN0ZWRSZXNvdXJjZT4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogaW5wdXQudGVuYW50SWQsXG4gICAgICAgIG9yZ1VuaXQ6IGlucHV0Lm9yZ1VuaXRJZCxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiBpbnB1dC5yZXNvdXJjZVR5cGUsXG4gICAgICAgIHJlc291cmNlSWQ6IGlucHV0LnJlc291cmNlSWQsXG4gICAgICAgIHZpc2liaWxpdHk6IGlucHV0LnZpc2liaWxpdHksXG4gICAgICAgIG93bmVyOiBpbnB1dC5vd25lclByaW5jaXBhbElkLFxuICAgICAgICBzZW5zaXRpdml0eTogaW5wdXQuc2Vuc2l0aXZpdHksXG4gICAgICAgIG1ldGFkYXRhOiBpbnB1dC5tZXRhZGF0YSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJ5RG9tYWluUmVzb3VyY2UoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICByZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQcm90ZWN0ZWRSZXNvdXJjZSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maW5kKFxuICAgICAgKHJlc291cmNlKSA9PlxuICAgICAgICBzYW1lVGVuYW50KHJlc291cmNlLnRlbmFudCwgdGVuYW50SWQpICYmXG4gICAgICAgIHJlc291cmNlLnJlc291cmNlVHlwZSA9PT0gcmVzb3VyY2VUeXBlICYmXG4gICAgICAgIHJlc291cmNlLnJlc291cmNlSWQgPT09IHJlc291cmNlSWRcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbW92ZVJlc291cmNlVG9PcmdVbml0KFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByb3RlY3RlZFJlc291cmNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKHByb3RlY3RlZFJlc291cmNlSWQsIHsgb3JnVW5pdDogb3JnVW5pdElkIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgc2V0VmlzaWJpbGl0eShcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgdmlzaWJpbGl0eTogUmVzb3VyY2VWaXNpYmlsaXR5LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJvdGVjdGVkUmVzb3VyY2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVPbmUocHJvdGVjdGVkUmVzb3VyY2VJZCwgeyB2aXNpYmlsaXR5IH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNmZXJPd25lcnNoaXAoXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VJZDogc3RyaW5nLFxuICAgIG93bmVyUHJpbmNpcGFsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFByb3RlY3RlZFJlc291cmNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgcHJvdGVjdGVkUmVzb3VyY2VJZCxcbiAgICAgIHsgb3duZXI6IG93bmVyUHJpbmNpcGFsSWQgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdE9yZ1VuaXRSZXNvdXJjZXMoXG4gICAgb3JnVW5pdElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxQcm90ZWN0ZWRSZXNvdXJjZVtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocmVzb3VyY2UpID0+XG4gICAgICByZWxhdGlvbk1hdGNoKHJlc291cmNlLm9yZ1VuaXQsIG9yZ1VuaXRJZClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudFJlc291cmNlcyhcbiAgICB0ZW5hbnRJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UHJvdGVjdGVkUmVzb3VyY2VbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHJlc291cmNlKSA9PlxuICAgICAgc2FtZVRlbmFudChyZXNvdXJjZS50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlR3JhbnRTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxSZXNvdXJjZUdyYW50PiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFJlc291cmNlR3JhbnQpO1xuICB9XG5cbiAgYXN5bmMgZ3JhbnRSZXNvdXJjZShcbiAgICBpbnB1dDogR3JhbnRSZXNvdXJjZUlucHV0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVzb3VyY2VHcmFudD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9uZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGlkKCksXG4gICAgICAgIHRlbmFudDogaW5wdXQudGVuYW50SWQsXG4gICAgICAgIHJlc291cmNlOiBpbnB1dC5yZXNvdXJjZUlkLFxuICAgICAgICBwcmluY2lwYWw6IGlucHV0LnByaW5jaXBhbElkLFxuICAgICAgICBwZXJtaXNzaW9uS2V5OiBpbnB1dC5wZXJtaXNzaW9uS2V5LFxuICAgICAgICBzdGFydHNBdDogaW5wdXQuc3RhcnRzQXQsXG4gICAgICAgIGV4cGlyZXNBdDogaW5wdXQuZXhwaXJlc0F0LFxuICAgICAgICBjb25kaXRpb25zOiBpbnB1dC5jb25kaXRpb25zLFxuICAgICAgICBjcmVhdGVkQnk6IGlucHV0LmNyZWF0ZWRCeVByaW5jaXBhbElkLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmV2b2tlR3JhbnQoZ3JhbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChncmFudElkLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RSZXNvdXJjZUdyYW50cyhcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZXNvdXJjZUdyYW50W10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChncmFudCkgPT5cbiAgICAgIHJlbGF0aW9uTWF0Y2goZ3JhbnQucmVzb3VyY2UsIHByb3RlY3RlZFJlc291cmNlSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQcmluY2lwYWxHcmFudHMoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVzb3VyY2VHcmFudFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcihcbiAgICAgIChncmFudCkgPT5cbiAgICAgICAgc2FtZVRlbmFudChncmFudC50ZW5hbnQsIHRlbmFudElkKSAmJlxuICAgICAgICByZWxhdGlvbk1hdGNoKGdyYW50LnByaW5jaXBhbCwgcHJpbmNpcGFsSWQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGhhc0dyYW50KFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWRSZXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbktleTogc3RyaW5nLFxuICAgIGF0PzogRGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgdGhpcy5saXN0UHJpbmNpcGFsR3JhbnRzKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncylcbiAgICApLnNvbWUoXG4gICAgICAoZ3JhbnQpID0+XG4gICAgICAgIHJlbGF0aW9uTWF0Y2goZ3JhbnQucmVzb3VyY2UsIHByb3RlY3RlZFJlc291cmNlSWQpICYmXG4gICAgICAgIGdyYW50LnBlcm1pc3Npb25LZXkgPT09IHBlcm1pc3Npb25LZXkgJiZcbiAgICAgICAgKCFncmFudC5zdGFydHNBdCB8fCAhYXQgfHwgZ3JhbnQuc3RhcnRzQXQgPD0gYXQpICYmXG4gICAgICAgICghZ3JhbnQuZXhwaXJlc0F0IHx8ICFhdCB8fCBncmFudC5leHBpcmVzQXQgPj0gYXQpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUFsbEZvclJlc291cmNlKFxuICAgIHByb3RlY3RlZFJlc291cmNlSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBkZWxldGVNYW55QnlJZChcbiAgICAgIHRoaXMsXG4gICAgICBhd2FpdCB0aGlzLmxpc3RSZXNvdXJjZUdyYW50cyhwcm90ZWN0ZWRSZXNvdXJjZUlkLCAuLi5hcmdzKSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUxpZmVjeWNsZVNlcnZpY2Uge1xuICBhc3luYyB1bnJlZ2lzdGVyUmVzb3VyY2UoXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5ldyBSZXNvdXJjZUdyYW50U2VydmljZSgpLmRlbGV0ZUFsbEZvclJlc291cmNlKFxuICAgICAgcHJvdGVjdGVkUmVzb3VyY2VJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IG5ldyBQcm90ZWN0ZWRSZXNvdXJjZVNlcnZpY2UoKS5kZWxldGVCeUlkKFxuICAgICAgcHJvdGVjdGVkUmVzb3VyY2VJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZVJlc291cmNlU2NvcGUoXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8e1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gICAgb3JnVW5pdElkOiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eTogUmVzb3VyY2VWaXNpYmlsaXR5O1xuICAgIG93bmVyUHJpbmNpcGFsSWQ/OiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCByZXNvdXJjZSA9IGF3YWl0IG5ldyBQcm90ZWN0ZWRSZXNvdXJjZVNlcnZpY2UoKS5nZXRCeUlkKFxuICAgICAgcHJvdGVjdGVkUmVzb3VyY2VJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICB0ZW5hbnRJZDogcmVsYXRpb25JZChyZXNvdXJjZS50ZW5hbnQpLFxuICAgICAgb3JnVW5pdElkOiByZWxhdGlvbklkKHJlc291cmNlLm9yZ1VuaXQpLFxuICAgICAgdmlzaWJpbGl0eTogcmVzb3VyY2UudmlzaWJpbGl0eSxcbiAgICAgIG93bmVyUHJpbmNpcGFsSWQ6IHJlc291cmNlLm93bmVyID8gcmVsYXRpb25JZChyZXNvdXJjZS5vd25lcikgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZUJpbmRpbmdTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZTxTdG9yYWdlQmluZGluZz4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihTdG9yYWdlQmluZGluZyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVCaW5kaW5nKFxuICAgIGlucHV0OiBDcmVhdGVTdG9yYWdlQmluZGluZ0lucHV0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8U3RvcmFnZUJpbmRpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPbmUoXG4gICAgICB7XG4gICAgICAgIGlkOiBpZCgpLFxuICAgICAgICB0ZW5hbnQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICBzdG9yYWdlS2luZDogaW5wdXQuc3RvcmFnZUtpbmQsXG4gICAgICAgIGJpbmRpbmdLaW5kOiBpbnB1dC5iaW5kaW5nS2luZCxcbiAgICAgICAgYmluZGluZ0tleTogaW5wdXQuYmluZGluZ0tleSxcbiAgICAgICAgcmVnaW9uOiBpbnB1dC5yZWdpb24sXG4gICAgICAgIGNvbmZpZzogaW5wdXQuY29uZmlnLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdFRlbmFudEJpbmRpbmdzKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxTdG9yYWdlQmluZGluZ1tdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigoYmluZGluZykgPT5cbiAgICAgIHNhbWVUZW5hbnQoYmluZGluZy50ZW5hbnQsIHRlbmFudElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRCaW5kaW5nKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgc3RvcmFnZUtpbmQ6IFN0b3JhZ2VLaW5kLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8U3RvcmFnZUJpbmRpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdFRlbmFudEJpbmRpbmdzKHRlbmFudElkLCAuLi5hcmdzKSkuZmluZChcbiAgICAgIChiaW5kaW5nKSA9PiBiaW5kaW5nLnN0b3JhZ2VLaW5kID09PSBzdG9yYWdlS2luZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBzZXRCaW5kaW5nQ29uZmlnKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxTdG9yYWdlQmluZGluZz4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZU9uZShiaW5kaW5nSWQsIHsgY29uZmlnIH0sIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcHJvbW90ZVRvRGVkaWNhdGVkKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGJpbmRpbmdLZXk6IHN0cmluZyxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFN0b3JhZ2VCaW5kaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgYmluZGluZ0lkLFxuICAgICAgeyBiaW5kaW5nS2luZDogU3RvcmFnZUJpbmRpbmdLaW5kLkRlZGljYXRlZCwgYmluZGluZ0tleSwgcmVnaW9uLCBjb25maWcgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2V0U2hhcmVkKFxuICAgIGJpbmRpbmdJZDogc3RyaW5nLFxuICAgIGJpbmRpbmdLZXk6IHN0cmluZyxcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBjb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFN0b3JhZ2VCaW5kaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlT25lKFxuICAgICAgYmluZGluZ0lkLFxuICAgICAgeyBiaW5kaW5nS2luZDogU3RvcmFnZUJpbmRpbmdLaW5kLlNoYXJlZCwgYmluZGluZ0tleSwgcmVnaW9uLCBjb25maWcgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb290c3RyYXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlID0gbmV3IFRlbmFudFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSB0ZW5hbnRQcm9maWxlU2VydmljZSA9IG5ldyBUZW5hbnRQcm9maWxlU2VydmljZSgpO1xuICBwcml2YXRlIG9yZ1VuaXRTZXJ2aWNlID0gbmV3IE9yZ1VuaXRTZXJ2aWNlKCk7XG4gIHByaXZhdGUgb3JnVW5pdFByb2ZpbGVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRQcm9maWxlU2VydmljZSgpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gbmV3IFVzZXJTZXJ2aWNlKCk7XG4gIHByaXZhdGUgbWVtYmVyc2hpcFNlcnZpY2UgPSBuZXcgVGVuYW50TWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBwZXJtaXNzaW9uU2VydmljZSA9IG5ldyBQZXJtaXNzaW9uU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVTZXJ2aWNlID0gbmV3IFJvbGVTZXJ2aWNlKCk7XG4gIHByaXZhdGUgcm9sZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFJvbGVQZXJtaXNzaW9uU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBlZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSA9IG5ldyBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSgpO1xuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgYm9vdHN0cmFwVGVuYW50RnJvbVRlbXBsYXRlKFxuICAgIHRlbXBsYXRlOiBCb290c3RyYXBUZW1wbGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHtcbiAgICB0ZW5hbnRJZDogc3RyaW5nO1xuICAgIHJvb3RPcmdVbml0SWQ6IHN0cmluZztcbiAgICBvd25lclVzZXJJZDogc3RyaW5nO1xuICAgIG93bmVyUHJpbmNpcGFsSWQ6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHRlbmFudCA9IGF3YWl0IHRoaXMudGVuYW50U2VydmljZS5jcmVhdGVUZW5hbnQoXG4gICAgICB0ZW1wbGF0ZS50ZW5hbnQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBpZiAodGVtcGxhdGUudGVuYW50LnByb2ZpbGVLZXkpIHtcbiAgICAgIGF3YWl0IHRoaXMudGVuYW50UHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZShcbiAgICAgICAgdGVuYW50LmlkLFxuICAgICAgICB0ZW1wbGF0ZS50ZW5hbnQucHJvZmlsZUtleSxcbiAgICAgICAgdGVtcGxhdGUudGVuYW50LnByb2ZpbGVNZXRhZGF0YSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVPcmdUcmVlID0gYXN5bmMgKFxuICAgICAgcGFyZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIG9yZ1VuaXQ6IEJvb3RzdHJhcE9yZ1VuaXRcbiAgICApOiBQcm9taXNlPE9yZ1VuaXQ+ID0+IHtcbiAgICAgIGNvbnN0IGNyZWF0ZWQgPVxuICAgICAgICBwYXJlbnRJZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBhd2FpdCB0aGlzLm9yZ1VuaXRTZXJ2aWNlLmNyZWF0ZVJvb3QoXG4gICAgICAgICAgICAgIHRlbmFudC5pZCxcbiAgICAgICAgICAgICAgb3JnVW5pdC5uYW1lLFxuICAgICAgICAgICAgICBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICBvcmdVbml0LnByb2ZpbGVLZXksXG4gICAgICAgICAgICAgIG9yZ1VuaXQubWV0YWRhdGEsXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGF3YWl0IHRoaXMub3JnVW5pdFNlcnZpY2UuY3JlYXRlQ2hpbGQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgICAgICAgIHBhcmVudE9yZ1VuaXRJZDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgbmFtZTogb3JnVW5pdC5uYW1lLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHByb2ZpbGVLZXk6IG9yZ1VuaXQucHJvZmlsZUtleSxcbiAgICAgICAgICAgICAgICBwcm9maWxlTWV0YWRhdGE6IG9yZ1VuaXQubWV0YWRhdGEsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG9yZ1VuaXQuY2hpbGRyZW4gPz8gW10pIHtcbiAgICAgICAgYXdhaXQgY3JlYXRlT3JnVHJlZShjcmVhdGVkLmlkLCBjaGlsZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9O1xuXG4gICAgY29uc3Qgcm9vdE9yZ1VuaXQgPSBhd2FpdCBjcmVhdGVPcmdUcmVlKHVuZGVmaW5lZCwgdGVtcGxhdGUucm9vdE9yZ1VuaXQpO1xuICAgIGNvbnN0IG93bmVyID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5jcmVhdGVVc2VyKFxuICAgICAgdGVtcGxhdGUub3duZXJVc2VyLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5tZW1iZXJzaGlwU2VydmljZS5hZGRVc2VyVG9UZW5hbnQoXG4gICAgICB0ZW5hbnQuaWQsXG4gICAgICBvd25lci5pZCxcbiAgICAgIE1lbWJlcnNoaXBTdGF0dXMuQWN0aXZlLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgY29uc3Qgb3duZXJQcmluY2lwYWwgPSBhd2FpdCB0aGlzLnByaW5jaXBhbFNlcnZpY2UuZ2V0VXNlclByaW5jaXBhbChcbiAgICAgIHRlbmFudC5pZCxcbiAgICAgIG93bmVyLmlkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgdGVtcGxhdGUucGVybWlzc2lvbnMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVybWlzc2lvblNlcnZpY2UuY3JlYXRlUGVybWlzc2lvbihwZXJtaXNzaW9uLCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJvbGUgb2YgdGVtcGxhdGUucm9sZXMpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZWRSb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5jcmVhdGVSb2xlKFxuICAgICAgICB7XG4gICAgICAgICAgdGVuYW50SWQ6IHRlbmFudC5pZCxcbiAgICAgICAgICBrZXk6IHJvbGUua2V5LFxuICAgICAgICAgIG5hbWU6IHJvbGUubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcm9sZS5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbktleSBvZiByb2xlLnBlcm1pc3Npb25LZXlzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucm9sZVBlcm1pc3Npb25TZXJ2aWNlLmFkZFBlcm1pc3Npb25LZXlUb1JvbGUoXG4gICAgICAgICAgY3JlYXRlZFJvbGUuaWQsXG4gICAgICAgICAgcGVybWlzc2lvbktleSxcbiAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3duZXJSb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5nZXRUZW5hbnRSb2xlQnlLZXkoXG4gICAgICB0ZW5hbnQuaWQsXG4gICAgICB0ZW1wbGF0ZS5vd25lclJvbGVLZXksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnJvbGVBc3NpZ25tZW50U2VydmljZS5hc3NpZ25Sb2xlKFxuICAgICAge1xuICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICBwcmluY2lwYWxJZDogb3duZXJQcmluY2lwYWwuaWQsXG4gICAgICAgIHJvbGVJZDogb3duZXJSb2xlLmlkLFxuICAgICAgICBzY29wZUtpbmQ6IFNjb3BlS2luZC5PcmdVbml0LFxuICAgICAgICBzY29wZUlkOiByb290T3JnVW5pdC5pZCxcbiAgICAgICAgaW5oZXJpdERvd246IHRydWUsXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5yZWJ1aWxkRm9yUHJpbmNpcGFsKFxuICAgICAgdGVuYW50LmlkLFxuICAgICAgb3duZXJQcmluY2lwYWwuaWQsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgcm9vdE9yZ1VuaXRJZDogcm9vdE9yZ1VuaXQuaWQsXG4gICAgICBvd25lclVzZXJJZDogb3duZXIuaWQsXG4gICAgICBvd25lclByaW5jaXBhbElkOiBvd25lclByaW5jaXBhbC5pZCxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XG4gIHByaXZhdGUgbWVtYmVyc2hpcFNlcnZpY2UgPSBuZXcgVGVuYW50TWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBvcmdNZW1iZXJzaGlwU2VydmljZSA9IG5ldyBPcmdVbml0TWVtYmVyc2hpcFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSByb2xlU2VydmljZSA9IG5ldyBSb2xlU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVBc3NpZ25tZW50U2VydmljZSA9IG5ldyBSb2xlQXNzaWdubWVudFNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBlZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSA9IG5ldyBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSgpO1xuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgb25ib2FyZFVzZXJUb1RlbmFudEFuZE9yZ1VuaXQoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICBvcmdVbml0SWQ6IHN0cmluZyxcbiAgICByb2xlS2V5OiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx7IHByaW5jaXBhbElkOiBzdHJpbmcgfT4ge1xuICAgIGF3YWl0IHRoaXMubWVtYmVyc2hpcFNlcnZpY2UuYWRkVXNlclRvVGVuYW50KFxuICAgICAgdGVuYW50SWQsXG4gICAgICB1c2VySWQsXG4gICAgICBNZW1iZXJzaGlwU3RhdHVzLkFjdGl2ZSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMub3JnTWVtYmVyc2hpcFNlcnZpY2UuYWRkVXNlclRvT3JnVW5pdChcbiAgICAgIHRlbmFudElkLFxuICAgICAgb3JnVW5pdElkLFxuICAgICAgdXNlcklkLFxuICAgICAgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBwcmluY2lwYWwgPSBhd2FpdCB0aGlzLnByaW5jaXBhbFNlcnZpY2UuZ2V0VXNlclByaW5jaXBhbChcbiAgICAgIHRlbmFudElkLFxuICAgICAgdXNlcklkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgY29uc3Qgcm9sZSA9IGF3YWl0IHRoaXMucm9sZVNlcnZpY2UuZ2V0VGVuYW50Um9sZUJ5S2V5KFxuICAgICAgdGVuYW50SWQsXG4gICAgICByb2xlS2V5LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5yb2xlQXNzaWdubWVudFNlcnZpY2UuYXNzaWduUm9sZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50SWQsXG4gICAgICAgIHByaW5jaXBhbElkOiBwcmluY2lwYWwuaWQsXG4gICAgICAgIHJvbGVJZDogcm9sZS5pZCxcbiAgICAgICAgc2NvcGVLaW5kOiBTY29wZUtpbmQuT3JnVW5pdCxcbiAgICAgICAgc2NvcGVJZDogb3JnVW5pdElkLFxuICAgICAgICBpbmhlcml0RG93bjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlLnJlYnVpbGRGb3JQcmluY2lwYWwoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbC5pZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIHJldHVybiB7IHByaW5jaXBhbElkOiBwcmluY2lwYWwuaWQgfTtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgY2hhbmdlVXNlck9yZ1JvbGUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIG9yZ1VuaXRJZDogc3RyaW5nLFxuICAgIHJvbGVLZXk6IHN0cmluZyxcbiAgICBpbmhlcml0RG93bjogYm9vbGVhbixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5nZXRUZW5hbnRSb2xlQnlLZXkoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHJvbGVLZXksXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50QXNzaWdubWVudHMgPVxuICAgICAgYXdhaXQgdGhpcy5yb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKFxuICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICk7XG4gICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIGN1cnJlbnRBc3NpZ25tZW50cy5maWx0ZXIoXG4gICAgICAocm93KSA9PiByb3cuc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJiByb3cuc2NvcGVJZCA9PT0gb3JnVW5pdElkXG4gICAgKSkge1xuICAgICAgYXdhaXQgdGhpcy5yb2xlQXNzaWdubWVudFNlcnZpY2UucmV2b2tlQXNzaWdubWVudChhc3NpZ25tZW50LmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5yb2xlQXNzaWdubWVudFNlcnZpY2UuYXNzaWduUm9sZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50SWQsXG4gICAgICAgIHByaW5jaXBhbElkLFxuICAgICAgICByb2xlSWQ6IHJvbGUuaWQsXG4gICAgICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLk9yZ1VuaXQsXG4gICAgICAgIHNjb3BlSWQ6IG9yZ1VuaXRJZCxcbiAgICAgICAgaW5oZXJpdERvd24sXG4gICAgICB9LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5yZWJ1aWxkRm9yUHJpbmNpcGFsKFxuICAgICAgdGVuYW50SWQsXG4gICAgICBwcmluY2lwYWxJZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgQHRyYW5zYWN0aW9uYWwoKVxuICBhc3luYyBzdXNwZW5kVXNlckluVGVuYW50KFxuICAgIHRlbmFudE1lbWJlcnNoaXBJZDogc3RyaW5nLFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm1lbWJlcnNoaXBTZXJ2aWNlLnNldFN0YXR1cyhcbiAgICAgIHRlbmFudE1lbWJlcnNoaXBJZCxcbiAgICAgIE1lbWJlcnNoaXBTdGF0dXMuU3VzcGVuZGVkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgYXdhaXQgdGhpcy5lZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5kZWxldGVGb3JQcmluY2lwYWwoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIHJlYWN0aXZhdGVVc2VySW5UZW5hbnQoXG4gICAgdGVuYW50TWVtYmVyc2hpcElkOiBzdHJpbmcsXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBwcmluY2lwYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubWVtYmVyc2hpcFNlcnZpY2Uuc2V0U3RhdHVzKFxuICAgICAgdGVuYW50TWVtYmVyc2hpcElkLFxuICAgICAgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlLnJlYnVpbGRGb3JQcmluY2lwYWwoXG4gICAgICB0ZW5hbnRJZCxcbiAgICAgIHByaW5jaXBhbElkLFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
1023
+ //# sourceMappingURL=org-based-authorization-system.services.js.map