@decaf-ts/integrations 0.14.0 → 0.14.3

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 (1166) hide show
  1. package/README.md +11 -1
  2. package/dist/integrations.cjs +3317 -2
  3. package/dist/integrations.js +3665 -2
  4. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs +2 -2
  5. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
  6. package/lib/cjs/blob/azure/index.cjs +2 -2
  7. package/lib/cjs/blob/core/BlobEnvironment.cjs +2 -2
  8. package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
  9. package/lib/cjs/blob/core/BlobKey.cjs +2 -2
  10. package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
  11. package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
  12. package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
  13. package/lib/cjs/blob/core/BlobValue.cjs +2 -2
  14. package/lib/cjs/blob/core/index.cjs +2 -2
  15. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs +2 -2
  16. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
  17. package/lib/cjs/blob/gcp/index.cjs +2 -2
  18. package/lib/cjs/blob/index.cjs +2 -2
  19. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs +2 -2
  20. package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
  21. package/lib/cjs/blob/local/index.cjs +2 -2
  22. package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs +2 -2
  23. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
  24. package/lib/cjs/blob/memory/index.cjs +2 -2
  25. package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs +2 -2
  26. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
  27. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs +2 -2
  28. package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
  29. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs +2 -2
  30. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
  31. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +2 -2
  32. package/lib/cjs/blob/s3/index.cjs +2 -2
  33. package/lib/cjs/calendar/CalendarService.cjs +2 -2
  34. package/lib/cjs/calendar/environment.cjs +2 -2
  35. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +2 -2
  36. package/lib/cjs/calendar/google-calendar/index.cjs +2 -2
  37. package/lib/cjs/calendar/index.cjs +2 -2
  38. package/lib/cjs/calendar/types.cjs +2 -2
  39. package/lib/cjs/calendar/validators/cron.cjs +2 -2
  40. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs +2 -2
  41. package/lib/cjs/calendar/writers/CalenderDownloader.cjs +2 -2
  42. package/lib/cjs/calendar/writers/ICalendarWriter.cjs +2 -2
  43. package/lib/cjs/comms/discord/DiscordService.cjs +2 -2
  44. package/lib/cjs/comms/discord/index.cjs +2 -2
  45. package/lib/cjs/comms/email/EmailService.cjs +2 -2
  46. package/lib/cjs/comms/email/index.cjs +2 -2
  47. package/lib/cjs/comms/email/mime.cjs +2 -2
  48. package/lib/cjs/comms/email/smtp.cjs +2 -2
  49. package/lib/cjs/comms/environment.cjs +2 -2
  50. package/lib/cjs/comms/gmail/GmailService.cjs +2 -2
  51. package/lib/cjs/comms/gmail/index.cjs +2 -2
  52. package/lib/cjs/comms/index.cjs +2 -2
  53. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +2 -2
  54. package/lib/cjs/comms/outlook/index.cjs +2 -2
  55. package/lib/cjs/comms/slack/SlackService.cjs +2 -2
  56. package/lib/cjs/comms/slack/index.cjs +2 -2
  57. package/lib/cjs/comms/teams/TeamsService.cjs +2 -2
  58. package/lib/cjs/comms/teams/index.cjs +2 -2
  59. package/lib/cjs/comms/telegram/TelegramService.cjs +2 -2
  60. package/lib/cjs/comms/telegram/index.cjs +2 -2
  61. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +2 -2
  62. package/lib/cjs/comms/whatsapp/index.cjs +2 -2
  63. package/lib/cjs/devops/environment.cjs +2 -2
  64. package/lib/cjs/devops/github/GithubService.cjs +2 -2
  65. package/lib/cjs/devops/github/index.cjs +2 -2
  66. package/lib/cjs/devops/gitlab/GitlabService.cjs +2 -2
  67. package/lib/cjs/devops/gitlab/index.cjs +2 -2
  68. package/lib/cjs/devops/index.cjs +2 -2
  69. package/lib/cjs/docker/DockerComposeService.cjs +2 -2
  70. package/lib/cjs/docker/index.cjs +2 -2
  71. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +2 -2
  72. package/lib/cjs/feature-flags/constants.cjs +2 -2
  73. package/lib/cjs/feature-flags/decorators.cjs +2 -2
  74. package/lib/cjs/feature-flags/environment.cjs +2 -2
  75. package/lib/cjs/feature-flags/index.cjs +2 -2
  76. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
  77. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
  78. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
  79. package/lib/cjs/feature-flags/readers/index.cjs +2 -2
  80. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +2 -2
  81. package/lib/cjs/feature-flags/types.cjs +2 -2
  82. package/lib/cjs/feature-flags/utils.cjs +2 -2
  83. package/lib/cjs/index.cjs +5 -5
  84. package/lib/cjs/io/airtable/AirtableService.cjs +2 -2
  85. package/lib/cjs/io/airtable/index.cjs +2 -2
  86. package/lib/cjs/io/confluence/ConfluenceService.cjs +2 -2
  87. package/lib/cjs/io/confluence/index.cjs +2 -2
  88. package/lib/cjs/io/environment.cjs +2 -2
  89. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +2 -2
  90. package/lib/cjs/io/google-docs/index.cjs +2 -2
  91. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +2 -2
  92. package/lib/cjs/io/google-sheets/index.cjs +2 -2
  93. package/lib/cjs/io/graphql/GraphqlService.cjs +2 -2
  94. package/lib/cjs/io/graphql/index.cjs +2 -2
  95. package/lib/cjs/io/index.cjs +2 -2
  96. package/lib/cjs/io/jira/JiraService.cjs +2 -2
  97. package/lib/cjs/io/jira/index.cjs +2 -2
  98. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +2 -2
  99. package/lib/cjs/io/microsoft-excel/index.cjs +2 -2
  100. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +2 -2
  101. package/lib/cjs/io/microsoft-sharepoint/index.cjs +2 -2
  102. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +2 -2
  103. package/lib/cjs/io/spreadsheet/index.cjs +2 -2
  104. package/lib/cjs/keycloak/broker.cjs +2 -2
  105. package/lib/cjs/keycloak/index.cjs +2 -2
  106. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
  107. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
  108. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
  109. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
  110. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
  111. package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
  112. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
  113. package/lib/cjs/keycloak/services/index.cjs +2 -2
  114. package/lib/cjs/keycloak/services/runtime.cjs +2 -2
  115. package/lib/cjs/keycloak/types.cjs +2 -2
  116. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
  117. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
  118. package/lib/cjs/kibana/builders/index.cjs +2 -2
  119. package/lib/cjs/kibana/helpers.cjs +2 -2
  120. package/lib/cjs/kibana/index.cjs +2 -2
  121. package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
  122. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
  123. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
  124. package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
  125. package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
  126. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
  127. package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
  128. package/lib/cjs/kibana/services/index.cjs +2 -2
  129. package/lib/cjs/kibana/services/runtime.cjs +2 -2
  130. package/lib/cjs/kibana/types.cjs +2 -2
  131. package/lib/cjs/loader/ObjectLoader.cjs +2 -2
  132. package/lib/cjs/loader/assets.cjs +2 -2
  133. package/lib/cjs/loader/config.cjs +2 -2
  134. package/lib/cjs/loader/families.cjs +2 -2
  135. package/lib/cjs/loader/index.cjs +2 -2
  136. package/lib/cjs/loader/nest.cjs +2 -2
  137. package/lib/cjs/loader/types.cjs +2 -2
  138. package/lib/cjs/namespaces/index.cjs +2 -2
  139. package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
  140. package/lib/cjs/namespaces/models/credential.model.cjs +2 -2
  141. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
  142. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
  143. package/lib/cjs/namespaces/models/group.model.cjs +2 -2
  144. package/lib/cjs/namespaces/models/index.cjs +2 -2
  145. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
  146. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
  147. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
  148. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
  149. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
  150. package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
  151. package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
  152. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
  153. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
  154. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
  155. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
  156. package/lib/cjs/namespaces/models/role.model.cjs +2 -2
  157. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
  158. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
  159. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
  160. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
  161. package/lib/cjs/namespaces/models/user.model.cjs +2 -2
  162. package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
  163. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
  164. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
  165. package/lib/cjs/namespaces/rls/index.cjs +2 -2
  166. package/lib/cjs/namespaces/rls/principal-resolver.cjs +2 -2
  167. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +2 -2
  168. package/lib/cjs/namespaces/rls/rls.constants.cjs +2 -2
  169. package/lib/cjs/namespaces/rls/rls.template.cjs +2 -2
  170. package/lib/cjs/namespaces/rls/rls.types.cjs +2 -2
  171. package/lib/cjs/namespaces/rls/session-binding.cjs +2 -2
  172. package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
  173. package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
  174. package/lib/cjs/namespaces/services/credential.service.cjs +2 -2
  175. package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
  176. package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
  177. package/lib/cjs/namespaces/services/group.service.cjs +2 -2
  178. package/lib/cjs/namespaces/services/index.cjs +2 -2
  179. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
  180. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
  181. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
  182. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
  183. package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
  184. package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
  185. package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
  186. package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
  187. package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
  188. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
  189. package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
  190. package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
  191. package/lib/cjs/namespaces/services/role.service.cjs +2 -2
  192. package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
  193. package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
  194. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
  195. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
  196. package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
  197. package/lib/cjs/namespaces/services/user.service.cjs +2 -2
  198. package/lib/cjs/namespaces/types.cjs +2 -2
  199. package/lib/cjs/namespaces/utils.cjs +2 -2
  200. package/lib/cjs/nest/decorators.cjs +2 -2
  201. package/lib/cjs/nest/index.cjs +2 -2
  202. package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
  203. package/lib/cjs/nest/keycloakModule.cjs +2 -2
  204. package/lib/cjs/nest/logging.cjs +2 -2
  205. package/lib/cjs/nest/types.cjs +2 -2
  206. package/lib/cjs/nest/utils.cjs +2 -2
  207. package/lib/cjs/plugins/contract.cjs +2 -2
  208. package/lib/cjs/plugins/index.cjs +2 -2
  209. package/lib/cjs/plugins/kibana/host.cjs +2 -2
  210. package/lib/cjs/plugins/kibana/index.cjs +2 -2
  211. package/lib/cjs/plugins/kibana/installer.cjs +2 -2
  212. package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
  213. package/lib/cjs/plugins/kibana/templates.cjs +2 -2
  214. package/lib/cjs/plugins/kibana/types.cjs +2 -2
  215. package/lib/cjs/plugins/superset/host.cjs +2 -2
  216. package/lib/cjs/plugins/superset/index.cjs +2 -2
  217. package/lib/cjs/plugins/superset/installer.cjs +2 -2
  218. package/lib/cjs/plugins/superset/manifest.cjs +2 -2
  219. package/lib/cjs/plugins/superset/templates.cjs +2 -2
  220. package/lib/cjs/plugins/superset/types.cjs +2 -2
  221. package/lib/cjs/redis/RedisContextLock.cjs +2 -2
  222. package/lib/cjs/redis/RedisDispatch.cjs +2 -2
  223. package/lib/cjs/redis/RedisPaginator.cjs +2 -2
  224. package/lib/cjs/redis/RedisStatement.cjs +2 -2
  225. package/lib/cjs/redis/adapter.cjs +2 -2
  226. package/lib/cjs/redis/constants.cjs +2 -2
  227. package/lib/cjs/redis/handlers.cjs +2 -2
  228. package/lib/cjs/redis/index.cjs +2 -2
  229. package/lib/cjs/redis/serialization.cjs +2 -2
  230. package/lib/cjs/redis/types.cjs +2 -2
  231. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +2 -2
  232. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs +2 -2
  233. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
  234. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
  235. package/lib/cjs/secrets/aws/index.cjs +2 -2
  236. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
  237. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
  238. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs +2 -2
  239. package/lib/cjs/secrets/azure/index.cjs +2 -2
  240. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs +2 -2
  241. package/lib/cjs/secrets/core/SecretEnvironment.cjs +2 -2
  242. package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
  243. package/lib/cjs/secrets/core/SecretName.cjs +2 -2
  244. package/lib/cjs/secrets/core/SecretReference.cjs +3 -2
  245. package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
  246. package/lib/cjs/secrets/core/SecretService.cjs +2 -2
  247. package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
  248. package/lib/cjs/secrets/core/index.cjs +2 -2
  249. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +2 -2
  250. package/lib/cjs/secrets/fs/FsSecretService.cjs +2 -2
  251. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +2 -2
  252. package/lib/cjs/secrets/fs/index.cjs +2 -2
  253. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs +2 -2
  254. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
  255. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
  256. package/lib/cjs/secrets/gcp/index.cjs +2 -2
  257. package/lib/cjs/secrets/index.cjs +2 -2
  258. package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +34 -0
  259. package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +479 -0
  260. package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +4 -0
  261. package/lib/cjs/secrets/kubernetes/index.cjs +27 -0
  262. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
  263. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs +2 -2
  264. package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
  265. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
  266. package/lib/cjs/secrets/model/Secret.cjs +2 -2
  267. package/lib/cjs/secrets/model/index.cjs +2 -2
  268. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs +2 -2
  269. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
  270. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
  271. package/lib/cjs/secrets/onepassword/index.cjs +2 -2
  272. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs +2 -2
  273. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
  274. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
  275. package/lib/cjs/secrets/vault/index.cjs +2 -2
  276. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs +2 -2
  277. package/lib/cjs/sftp/aws/AwsSftpService.cjs +2 -2
  278. package/lib/cjs/sftp/aws/index.cjs +24 -0
  279. package/lib/cjs/sftp/core/SftpEnvironment.cjs +2 -2
  280. package/lib/cjs/sftp/core/SftpSource.cjs +2 -2
  281. package/lib/cjs/sftp/core/index.cjs +2 -2
  282. package/lib/cjs/sftp/index.cjs +2 -2
  283. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs +2 -2
  284. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs +2 -2
  285. package/lib/cjs/sftp/ssh2/index.cjs +24 -0
  286. package/lib/cjs/shared/environmentValue.cjs +2 -2
  287. package/lib/cjs/shared/http/HttpApiService.cjs +2 -2
  288. package/lib/cjs/shared/http/hermeticBoot.cjs +2 -2
  289. package/lib/cjs/shared/http/index.cjs +2 -2
  290. package/lib/cjs/shared/runtime.cjs +2 -2
  291. package/lib/cjs/user-requests/index.cjs +2 -2
  292. package/lib/cjs/utils.cjs +2 -2
  293. package/lib/esm/blob/azure/AzureBlobEnvironment.js +1 -1
  294. package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
  295. package/lib/esm/blob/azure/index.js +1 -1
  296. package/lib/esm/blob/core/BlobEnvironment.js +1 -1
  297. package/lib/esm/blob/core/BlobErrors.js +1 -1
  298. package/lib/esm/blob/core/BlobKey.js +1 -1
  299. package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
  300. package/lib/esm/blob/core/BlobStoreService.js +1 -1
  301. package/lib/esm/blob/core/BlobTypes.js +1 -1
  302. package/lib/esm/blob/core/BlobValue.js +1 -1
  303. package/lib/esm/blob/core/index.js +1 -1
  304. package/lib/esm/blob/gcp/GcsBlobEnvironment.js +1 -1
  305. package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
  306. package/lib/esm/blob/gcp/index.js +1 -1
  307. package/lib/esm/blob/index.js +1 -1
  308. package/lib/esm/blob/local/LocalBlobEnvironment.js +1 -1
  309. package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
  310. package/lib/esm/blob/local/index.js +1 -1
  311. package/lib/esm/blob/memory/MemoryBlobEnvironment.js +1 -1
  312. package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
  313. package/lib/esm/blob/memory/index.js +1 -1
  314. package/lib/esm/blob/s3/MinioBlobEnvironment.js +1 -1
  315. package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
  316. package/lib/esm/blob/s3/R2BlobEnvironment.js +1 -1
  317. package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
  318. package/lib/esm/blob/s3/S3BlobEnvironment.js +1 -1
  319. package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
  320. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +1 -1
  321. package/lib/esm/blob/s3/index.js +1 -1
  322. package/lib/esm/calendar/CalendarService.js +1 -1
  323. package/lib/esm/calendar/environment.js +1 -1
  324. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +1 -1
  325. package/lib/esm/calendar/google-calendar/index.js +1 -1
  326. package/lib/esm/calendar/index.js +1 -1
  327. package/lib/esm/calendar/types.js +1 -1
  328. package/lib/esm/calendar/validators/cron.js +1 -1
  329. package/lib/esm/calendar/writers/CalendarFsWriter.js +1 -1
  330. package/lib/esm/calendar/writers/CalenderDownloader.js +1 -1
  331. package/lib/esm/calendar/writers/ICalendarWriter.js +1 -1
  332. package/lib/esm/comms/discord/DiscordService.js +1 -1
  333. package/lib/esm/comms/discord/index.js +1 -1
  334. package/lib/esm/comms/email/EmailService.js +1 -1
  335. package/lib/esm/comms/email/index.js +1 -1
  336. package/lib/esm/comms/email/mime.js +1 -1
  337. package/lib/esm/comms/email/smtp.js +1 -1
  338. package/lib/esm/comms/environment.js +1 -1
  339. package/lib/esm/comms/gmail/GmailService.js +1 -1
  340. package/lib/esm/comms/gmail/index.js +1 -1
  341. package/lib/esm/comms/index.js +1 -1
  342. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +1 -1
  343. package/lib/esm/comms/outlook/index.js +1 -1
  344. package/lib/esm/comms/slack/SlackService.js +1 -1
  345. package/lib/esm/comms/slack/index.js +1 -1
  346. package/lib/esm/comms/teams/TeamsService.js +1 -1
  347. package/lib/esm/comms/teams/index.js +1 -1
  348. package/lib/esm/comms/telegram/TelegramService.js +1 -1
  349. package/lib/esm/comms/telegram/index.js +1 -1
  350. package/lib/esm/comms/whatsapp/WhatsAppService.js +1 -1
  351. package/lib/esm/comms/whatsapp/index.js +1 -1
  352. package/lib/esm/devops/environment.js +1 -1
  353. package/lib/esm/devops/github/GithubService.js +1 -1
  354. package/lib/esm/devops/github/index.js +1 -1
  355. package/lib/esm/devops/gitlab/GitlabService.js +1 -1
  356. package/lib/esm/devops/gitlab/index.js +1 -1
  357. package/lib/esm/devops/index.js +1 -1
  358. package/lib/esm/docker/DockerComposeService.js +1 -1
  359. package/lib/esm/docker/index.js +1 -1
  360. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +1 -1
  361. package/lib/esm/feature-flags/constants.js +1 -1
  362. package/lib/esm/feature-flags/decorators.js +1 -1
  363. package/lib/esm/feature-flags/environment.js +1 -1
  364. package/lib/esm/feature-flags/index.js +1 -1
  365. package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
  366. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
  367. package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
  368. package/lib/esm/feature-flags/readers/index.js +1 -1
  369. package/lib/esm/feature-flags/services/FeatureFlag.service.js +1 -1
  370. package/lib/esm/feature-flags/types.js +1 -1
  371. package/lib/esm/feature-flags/utils.js +1 -1
  372. package/lib/esm/index.js +4 -4
  373. package/lib/esm/io/airtable/AirtableService.js +1 -1
  374. package/lib/esm/io/airtable/index.js +1 -1
  375. package/lib/esm/io/confluence/ConfluenceService.js +1 -1
  376. package/lib/esm/io/confluence/index.js +1 -1
  377. package/lib/esm/io/environment.js +1 -1
  378. package/lib/esm/io/google-docs/GoogleDocsService.js +1 -1
  379. package/lib/esm/io/google-docs/index.js +1 -1
  380. package/lib/esm/io/google-sheets/GoogleSheetsService.js +1 -1
  381. package/lib/esm/io/google-sheets/index.js +1 -1
  382. package/lib/esm/io/graphql/GraphqlService.js +1 -1
  383. package/lib/esm/io/graphql/index.js +1 -1
  384. package/lib/esm/io/index.js +1 -1
  385. package/lib/esm/io/jira/JiraService.js +1 -1
  386. package/lib/esm/io/jira/index.js +1 -1
  387. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +1 -1
  388. package/lib/esm/io/microsoft-excel/index.js +1 -1
  389. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +1 -1
  390. package/lib/esm/io/microsoft-sharepoint/index.js +1 -1
  391. package/lib/esm/io/spreadsheet/SpreadsheetService.js +1 -1
  392. package/lib/esm/io/spreadsheet/index.js +1 -1
  393. package/lib/esm/keycloak/broker.js +1 -1
  394. package/lib/esm/keycloak/index.js +1 -1
  395. package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
  396. package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
  397. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
  398. package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
  399. package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
  400. package/lib/esm/keycloak/services/KeycloakService.js +1 -1
  401. package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
  402. package/lib/esm/keycloak/services/index.js +1 -1
  403. package/lib/esm/keycloak/services/runtime.js +1 -1
  404. package/lib/esm/keycloak/types.js +1 -1
  405. package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
  406. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
  407. package/lib/esm/kibana/builders/index.js +1 -1
  408. package/lib/esm/kibana/helpers.js +1 -1
  409. package/lib/esm/kibana/index.js +1 -1
  410. package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
  411. package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
  412. package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
  413. package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
  414. package/lib/esm/kibana/services/KibanaService.js +1 -1
  415. package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
  416. package/lib/esm/kibana/services/KibanaUserService.js +1 -1
  417. package/lib/esm/kibana/services/index.js +1 -1
  418. package/lib/esm/kibana/services/runtime.js +1 -1
  419. package/lib/esm/kibana/types.js +1 -1
  420. package/lib/esm/loader/ObjectLoader.js +1 -1
  421. package/lib/esm/loader/assets.js +1 -1
  422. package/lib/esm/loader/config.js +1 -1
  423. package/lib/esm/loader/families.js +1 -1
  424. package/lib/esm/loader/index.js +1 -1
  425. package/lib/esm/loader/nest.js +1 -1
  426. package/lib/esm/loader/types.js +1 -1
  427. package/lib/esm/namespaces/index.js +1 -1
  428. package/lib/esm/namespaces/models/authorization-model.js +1 -1
  429. package/lib/esm/namespaces/models/credential.model.js +1 -1
  430. package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
  431. package/lib/esm/namespaces/models/group-membership.model.js +1 -1
  432. package/lib/esm/namespaces/models/group.model.js +1 -1
  433. package/lib/esm/namespaces/models/index.js +1 -1
  434. package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
  435. package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
  436. package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
  437. package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
  438. package/lib/esm/namespaces/models/org-unit.model.js +1 -1
  439. package/lib/esm/namespaces/models/permission.model.js +1 -1
  440. package/lib/esm/namespaces/models/principal.model.js +1 -1
  441. package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
  442. package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
  443. package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
  444. package/lib/esm/namespaces/models/role-permission.model.js +1 -1
  445. package/lib/esm/namespaces/models/role.model.js +1 -1
  446. package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
  447. package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
  448. package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
  449. package/lib/esm/namespaces/models/tenant.model.js +1 -1
  450. package/lib/esm/namespaces/models/user.model.js +1 -1
  451. package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
  452. package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
  453. package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
  454. package/lib/esm/namespaces/rls/index.js +1 -1
  455. package/lib/esm/namespaces/rls/principal-resolver.js +1 -1
  456. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +1 -1
  457. package/lib/esm/namespaces/rls/rls.constants.js +1 -1
  458. package/lib/esm/namespaces/rls/rls.template.js +1 -1
  459. package/lib/esm/namespaces/rls/rls.types.js +1 -1
  460. package/lib/esm/namespaces/rls/session-binding.js +1 -1
  461. package/lib/esm/namespaces/services/authz.service.js +1 -1
  462. package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
  463. package/lib/esm/namespaces/services/credential.service.js +1 -1
  464. package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
  465. package/lib/esm/namespaces/services/group-membership.service.js +1 -1
  466. package/lib/esm/namespaces/services/group.service.js +1 -1
  467. package/lib/esm/namespaces/services/index.js +1 -1
  468. package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
  469. package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
  470. package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
  471. package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
  472. package/lib/esm/namespaces/services/org-unit.service.js +1 -1
  473. package/lib/esm/namespaces/services/permission.service.js +1 -1
  474. package/lib/esm/namespaces/services/principal.service.js +1 -1
  475. package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
  476. package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
  477. package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
  478. package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
  479. package/lib/esm/namespaces/services/role-permission.service.js +1 -1
  480. package/lib/esm/namespaces/services/role.service.js +1 -1
  481. package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
  482. package/lib/esm/namespaces/services/system-management.service.js +1 -1
  483. package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
  484. package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
  485. package/lib/esm/namespaces/services/tenant.service.js +1 -1
  486. package/lib/esm/namespaces/services/user.service.js +1 -1
  487. package/lib/esm/namespaces/types.js +1 -1
  488. package/lib/esm/namespaces/utils.js +1 -1
  489. package/lib/esm/nest/decorators.js +1 -1
  490. package/lib/esm/nest/index.js +1 -1
  491. package/lib/esm/nest/keycloakAuthHandler.js +1 -1
  492. package/lib/esm/nest/keycloakModule.js +1 -1
  493. package/lib/esm/nest/logging.js +1 -1
  494. package/lib/esm/nest/types.js +1 -1
  495. package/lib/esm/nest/utils.js +1 -1
  496. package/lib/esm/plugins/contract.js +1 -1
  497. package/lib/esm/plugins/index.js +1 -1
  498. package/lib/esm/plugins/kibana/host.js +1 -1
  499. package/lib/esm/plugins/kibana/index.js +1 -1
  500. package/lib/esm/plugins/kibana/installer.js +1 -1
  501. package/lib/esm/plugins/kibana/manifest.js +1 -1
  502. package/lib/esm/plugins/kibana/templates.js +1 -1
  503. package/lib/esm/plugins/kibana/types.js +1 -1
  504. package/lib/esm/plugins/superset/host.js +1 -1
  505. package/lib/esm/plugins/superset/index.js +1 -1
  506. package/lib/esm/plugins/superset/installer.js +1 -1
  507. package/lib/esm/plugins/superset/manifest.js +1 -1
  508. package/lib/esm/plugins/superset/templates.js +1 -1
  509. package/lib/esm/plugins/superset/types.js +1 -1
  510. package/lib/esm/redis/RedisContextLock.js +1 -1
  511. package/lib/esm/redis/RedisDispatch.js +1 -1
  512. package/lib/esm/redis/RedisPaginator.js +1 -1
  513. package/lib/esm/redis/RedisStatement.js +1 -1
  514. package/lib/esm/redis/adapter.js +1 -1
  515. package/lib/esm/redis/constants.js +1 -1
  516. package/lib/esm/redis/handlers.js +1 -1
  517. package/lib/esm/redis/index.js +1 -1
  518. package/lib/esm/redis/serialization.js +1 -1
  519. package/lib/esm/redis/types.js +1 -1
  520. package/lib/esm/secrets/InfraCredentialBootstrap.js +1 -1
  521. package/lib/esm/secrets/aws/AwsSecretEnvironment.js +1 -1
  522. package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
  523. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
  524. package/lib/esm/secrets/aws/index.js +1 -1
  525. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
  526. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
  527. package/lib/esm/secrets/azure/AzureSecretEnvironment.js +1 -1
  528. package/lib/esm/secrets/azure/index.js +1 -1
  529. package/lib/esm/secrets/core/ClientBasedSecretService.js +1 -1
  530. package/lib/esm/secrets/core/SecretEnvironment.js +1 -1
  531. package/lib/esm/secrets/core/SecretErrors.js +1 -1
  532. package/lib/esm/secrets/core/SecretName.js +1 -1
  533. package/lib/esm/secrets/core/SecretReference.js +2 -1
  534. package/lib/esm/secrets/core/SecretSerialization.js +1 -1
  535. package/lib/esm/secrets/core/SecretService.js +1 -1
  536. package/lib/esm/secrets/core/SecretTypes.js +1 -1
  537. package/lib/esm/secrets/core/index.js +1 -1
  538. package/lib/esm/secrets/fs/FsSecretEnvironment.js +1 -1
  539. package/lib/esm/secrets/fs/FsSecretService.js +1 -1
  540. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +1 -1
  541. package/lib/esm/secrets/fs/index.js +1 -1
  542. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js +1 -1
  543. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
  544. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
  545. package/lib/esm/secrets/gcp/index.js +1 -1
  546. package/lib/esm/secrets/index.js +1 -1
  547. package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +30 -0
  548. package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +474 -0
  549. package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +9 -0
  550. package/lib/esm/secrets/kubernetes/index.js +10 -0
  551. package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
  552. package/lib/esm/secrets/model/ModelSecretEnvironment.js +1 -1
  553. package/lib/esm/secrets/model/ModelSecretService.js +1 -1
  554. package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
  555. package/lib/esm/secrets/model/Secret.js +1 -1
  556. package/lib/esm/secrets/model/index.js +1 -1
  557. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js +1 -1
  558. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
  559. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
  560. package/lib/esm/secrets/onepassword/index.js +1 -1
  561. package/lib/esm/secrets/vault/VaultSecretEnvironment.js +1 -1
  562. package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
  563. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
  564. package/lib/esm/secrets/vault/index.js +1 -1
  565. package/lib/esm/sftp/aws/AwsSftpEnvironment.js +1 -1
  566. package/lib/esm/sftp/aws/AwsSftpService.js +1 -1
  567. package/lib/esm/sftp/aws/index.js +7 -0
  568. package/lib/esm/sftp/core/SftpEnvironment.js +1 -1
  569. package/lib/esm/sftp/core/SftpSource.js +1 -1
  570. package/lib/esm/sftp/core/index.js +1 -1
  571. package/lib/esm/sftp/index.js +1 -1
  572. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js +1 -1
  573. package/lib/esm/sftp/ssh2/Ssh2SftpService.js +1 -1
  574. package/lib/esm/sftp/ssh2/index.js +7 -0
  575. package/lib/esm/shared/environmentValue.js +1 -1
  576. package/lib/esm/shared/http/HttpApiService.js +1 -1
  577. package/lib/esm/shared/http/hermeticBoot.js +1 -1
  578. package/lib/esm/shared/http/index.js +1 -1
  579. package/lib/esm/shared/runtime.js +1 -1
  580. package/lib/esm/user-requests/index.js +1 -1
  581. package/lib/esm/utils.js +1 -1
  582. package/lib/types/index.d.cts +2 -2
  583. package/lib/types/index.d.mts +2 -2
  584. package/lib/types/secrets/core/SecretTypes.d.cts +13 -1
  585. package/lib/types/secrets/core/SecretTypes.d.mts +13 -1
  586. package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.cts +34 -0
  587. package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.mts +34 -0
  588. package/lib/types/secrets/kubernetes/KubernetesSecretService.d.cts +45 -0
  589. package/lib/types/secrets/kubernetes/KubernetesSecretService.d.mts +45 -0
  590. package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.cts +49 -0
  591. package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.mts +49 -0
  592. package/lib/types/secrets/kubernetes/index.d.cts +9 -0
  593. package/lib/types/secrets/kubernetes/index.d.mts +9 -0
  594. package/lib/types/sftp/aws/index.d.cts +6 -0
  595. package/lib/types/sftp/aws/index.d.mts +6 -0
  596. package/lib/types/sftp/ssh2/index.d.cts +6 -0
  597. package/lib/types/sftp/ssh2/index.d.mts +6 -0
  598. package/package.json +180 -55
  599. package/dist/integrations.cjs.map +0 -1
  600. package/dist/integrations.js.map +0 -1
  601. package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs.map +0 -1
  602. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
  603. package/lib/cjs/blob/azure/index.cjs.map +0 -1
  604. package/lib/cjs/blob/core/BlobEnvironment.cjs.map +0 -1
  605. package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
  606. package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
  607. package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
  608. package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
  609. package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
  610. package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
  611. package/lib/cjs/blob/core/index.cjs.map +0 -1
  612. package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs.map +0 -1
  613. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
  614. package/lib/cjs/blob/gcp/index.cjs.map +0 -1
  615. package/lib/cjs/blob/index.cjs.map +0 -1
  616. package/lib/cjs/blob/local/LocalBlobEnvironment.cjs.map +0 -1
  617. package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
  618. package/lib/cjs/blob/local/index.cjs.map +0 -1
  619. package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs.map +0 -1
  620. package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
  621. package/lib/cjs/blob/memory/index.cjs.map +0 -1
  622. package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs.map +0 -1
  623. package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
  624. package/lib/cjs/blob/s3/R2BlobEnvironment.cjs.map +0 -1
  625. package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
  626. package/lib/cjs/blob/s3/S3BlobEnvironment.cjs.map +0 -1
  627. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
  628. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +0 -1
  629. package/lib/cjs/blob/s3/index.cjs.map +0 -1
  630. package/lib/cjs/calendar/CalendarService.cjs.map +0 -1
  631. package/lib/cjs/calendar/environment.cjs.map +0 -1
  632. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +0 -1
  633. package/lib/cjs/calendar/google-calendar/index.cjs.map +0 -1
  634. package/lib/cjs/calendar/index.cjs.map +0 -1
  635. package/lib/cjs/calendar/types.cjs.map +0 -1
  636. package/lib/cjs/calendar/validators/cron.cjs.map +0 -1
  637. package/lib/cjs/calendar/writers/CalendarFsWriter.cjs.map +0 -1
  638. package/lib/cjs/calendar/writers/CalenderDownloader.cjs.map +0 -1
  639. package/lib/cjs/calendar/writers/ICalendarWriter.cjs.map +0 -1
  640. package/lib/cjs/comms/discord/DiscordService.cjs.map +0 -1
  641. package/lib/cjs/comms/discord/index.cjs.map +0 -1
  642. package/lib/cjs/comms/email/EmailService.cjs.map +0 -1
  643. package/lib/cjs/comms/email/index.cjs.map +0 -1
  644. package/lib/cjs/comms/email/mime.cjs.map +0 -1
  645. package/lib/cjs/comms/email/smtp.cjs.map +0 -1
  646. package/lib/cjs/comms/environment.cjs.map +0 -1
  647. package/lib/cjs/comms/gmail/GmailService.cjs.map +0 -1
  648. package/lib/cjs/comms/gmail/index.cjs.map +0 -1
  649. package/lib/cjs/comms/index.cjs.map +0 -1
  650. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +0 -1
  651. package/lib/cjs/comms/outlook/index.cjs.map +0 -1
  652. package/lib/cjs/comms/slack/SlackService.cjs.map +0 -1
  653. package/lib/cjs/comms/slack/index.cjs.map +0 -1
  654. package/lib/cjs/comms/teams/TeamsService.cjs.map +0 -1
  655. package/lib/cjs/comms/teams/index.cjs.map +0 -1
  656. package/lib/cjs/comms/telegram/TelegramService.cjs.map +0 -1
  657. package/lib/cjs/comms/telegram/index.cjs.map +0 -1
  658. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +0 -1
  659. package/lib/cjs/comms/whatsapp/index.cjs.map +0 -1
  660. package/lib/cjs/devops/environment.cjs.map +0 -1
  661. package/lib/cjs/devops/github/GithubService.cjs.map +0 -1
  662. package/lib/cjs/devops/github/index.cjs.map +0 -1
  663. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +0 -1
  664. package/lib/cjs/devops/gitlab/index.cjs.map +0 -1
  665. package/lib/cjs/devops/index.cjs.map +0 -1
  666. package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
  667. package/lib/cjs/docker/index.cjs.map +0 -1
  668. package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +0 -1
  669. package/lib/cjs/feature-flags/constants.cjs.map +0 -1
  670. package/lib/cjs/feature-flags/decorators.cjs.map +0 -1
  671. package/lib/cjs/feature-flags/environment.cjs.map +0 -1
  672. package/lib/cjs/feature-flags/index.cjs.map +0 -1
  673. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +0 -1
  674. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +0 -1
  675. package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +0 -1
  676. package/lib/cjs/feature-flags/readers/index.cjs.map +0 -1
  677. package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +0 -1
  678. package/lib/cjs/feature-flags/types.cjs.map +0 -1
  679. package/lib/cjs/feature-flags/utils.cjs.map +0 -1
  680. package/lib/cjs/index.cjs.map +0 -1
  681. package/lib/cjs/io/airtable/AirtableService.cjs.map +0 -1
  682. package/lib/cjs/io/airtable/index.cjs.map +0 -1
  683. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +0 -1
  684. package/lib/cjs/io/confluence/index.cjs.map +0 -1
  685. package/lib/cjs/io/environment.cjs.map +0 -1
  686. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +0 -1
  687. package/lib/cjs/io/google-docs/index.cjs.map +0 -1
  688. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +0 -1
  689. package/lib/cjs/io/google-sheets/index.cjs.map +0 -1
  690. package/lib/cjs/io/graphql/GraphqlService.cjs.map +0 -1
  691. package/lib/cjs/io/graphql/index.cjs.map +0 -1
  692. package/lib/cjs/io/index.cjs.map +0 -1
  693. package/lib/cjs/io/jira/JiraService.cjs.map +0 -1
  694. package/lib/cjs/io/jira/index.cjs.map +0 -1
  695. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +0 -1
  696. package/lib/cjs/io/microsoft-excel/index.cjs.map +0 -1
  697. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +0 -1
  698. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +0 -1
  699. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +0 -1
  700. package/lib/cjs/io/spreadsheet/index.cjs.map +0 -1
  701. package/lib/cjs/keycloak/broker.cjs.map +0 -1
  702. package/lib/cjs/keycloak/index.cjs.map +0 -1
  703. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
  704. package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
  705. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
  706. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
  707. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
  708. package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
  709. package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
  710. package/lib/cjs/keycloak/services/index.cjs.map +0 -1
  711. package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
  712. package/lib/cjs/keycloak/types.cjs.map +0 -1
  713. package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +0 -1
  714. package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +0 -1
  715. package/lib/cjs/kibana/builders/index.cjs.map +0 -1
  716. package/lib/cjs/kibana/helpers.cjs.map +0 -1
  717. package/lib/cjs/kibana/index.cjs.map +0 -1
  718. package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
  719. package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
  720. package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
  721. package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
  722. package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
  723. package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
  724. package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
  725. package/lib/cjs/kibana/services/index.cjs.map +0 -1
  726. package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
  727. package/lib/cjs/kibana/types.cjs.map +0 -1
  728. package/lib/cjs/loader/ObjectLoader.cjs.map +0 -1
  729. package/lib/cjs/loader/assets.cjs.map +0 -1
  730. package/lib/cjs/loader/config.cjs.map +0 -1
  731. package/lib/cjs/loader/families.cjs.map +0 -1
  732. package/lib/cjs/loader/index.cjs.map +0 -1
  733. package/lib/cjs/loader/nest.cjs.map +0 -1
  734. package/lib/cjs/loader/types.cjs.map +0 -1
  735. package/lib/cjs/namespaces/index.cjs.map +0 -1
  736. package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
  737. package/lib/cjs/namespaces/models/credential.model.cjs.map +0 -1
  738. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
  739. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
  740. package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
  741. package/lib/cjs/namespaces/models/index.cjs.map +0 -1
  742. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
  743. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
  744. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
  745. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
  746. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
  747. package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
  748. package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
  749. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
  750. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
  751. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
  752. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
  753. package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
  754. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
  755. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
  756. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
  757. package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
  758. package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
  759. package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
  760. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
  761. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
  762. package/lib/cjs/namespaces/rls/index.cjs.map +0 -1
  763. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +0 -1
  764. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +0 -1
  765. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +0 -1
  766. package/lib/cjs/namespaces/rls/rls.template.cjs.map +0 -1
  767. package/lib/cjs/namespaces/rls/rls.types.cjs.map +0 -1
  768. package/lib/cjs/namespaces/rls/session-binding.cjs.map +0 -1
  769. package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
  770. package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
  771. package/lib/cjs/namespaces/services/credential.service.cjs.map +0 -1
  772. package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
  773. package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
  774. package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
  775. package/lib/cjs/namespaces/services/index.cjs.map +0 -1
  776. package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
  777. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
  778. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
  779. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
  780. package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
  781. package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
  782. package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
  783. package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
  784. package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
  785. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
  786. package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
  787. package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
  788. package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
  789. package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
  790. package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
  791. package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
  792. package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
  793. package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
  794. package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
  795. package/lib/cjs/namespaces/types.cjs.map +0 -1
  796. package/lib/cjs/namespaces/utils.cjs.map +0 -1
  797. package/lib/cjs/nest/decorators.cjs.map +0 -1
  798. package/lib/cjs/nest/index.cjs.map +0 -1
  799. package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
  800. package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
  801. package/lib/cjs/nest/logging.cjs.map +0 -1
  802. package/lib/cjs/nest/types.cjs.map +0 -1
  803. package/lib/cjs/nest/utils.cjs.map +0 -1
  804. package/lib/cjs/plugins/contract.cjs.map +0 -1
  805. package/lib/cjs/plugins/index.cjs.map +0 -1
  806. package/lib/cjs/plugins/kibana/host.cjs.map +0 -1
  807. package/lib/cjs/plugins/kibana/index.cjs.map +0 -1
  808. package/lib/cjs/plugins/kibana/installer.cjs.map +0 -1
  809. package/lib/cjs/plugins/kibana/manifest.cjs.map +0 -1
  810. package/lib/cjs/plugins/kibana/templates.cjs.map +0 -1
  811. package/lib/cjs/plugins/kibana/types.cjs.map +0 -1
  812. package/lib/cjs/plugins/superset/host.cjs.map +0 -1
  813. package/lib/cjs/plugins/superset/index.cjs.map +0 -1
  814. package/lib/cjs/plugins/superset/installer.cjs.map +0 -1
  815. package/lib/cjs/plugins/superset/manifest.cjs.map +0 -1
  816. package/lib/cjs/plugins/superset/templates.cjs.map +0 -1
  817. package/lib/cjs/plugins/superset/types.cjs.map +0 -1
  818. package/lib/cjs/redis/RedisContextLock.cjs.map +0 -1
  819. package/lib/cjs/redis/RedisDispatch.cjs.map +0 -1
  820. package/lib/cjs/redis/RedisPaginator.cjs.map +0 -1
  821. package/lib/cjs/redis/RedisStatement.cjs.map +0 -1
  822. package/lib/cjs/redis/adapter.cjs.map +0 -1
  823. package/lib/cjs/redis/constants.cjs.map +0 -1
  824. package/lib/cjs/redis/handlers.cjs.map +0 -1
  825. package/lib/cjs/redis/index.cjs.map +0 -1
  826. package/lib/cjs/redis/serialization.cjs.map +0 -1
  827. package/lib/cjs/redis/types.cjs.map +0 -1
  828. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +0 -1
  829. package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs.map +0 -1
  830. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
  831. package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
  832. package/lib/cjs/secrets/aws/index.cjs.map +0 -1
  833. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
  834. package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
  835. package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs.map +0 -1
  836. package/lib/cjs/secrets/azure/index.cjs.map +0 -1
  837. package/lib/cjs/secrets/core/ClientBasedSecretService.cjs.map +0 -1
  838. package/lib/cjs/secrets/core/SecretEnvironment.cjs.map +0 -1
  839. package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
  840. package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
  841. package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
  842. package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
  843. package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
  844. package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
  845. package/lib/cjs/secrets/core/index.cjs.map +0 -1
  846. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +0 -1
  847. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +0 -1
  848. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +0 -1
  849. package/lib/cjs/secrets/fs/index.cjs.map +0 -1
  850. package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs.map +0 -1
  851. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
  852. package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
  853. package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
  854. package/lib/cjs/secrets/index.cjs.map +0 -1
  855. package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
  856. package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs.map +0 -1
  857. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
  858. package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
  859. package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
  860. package/lib/cjs/secrets/model/index.cjs.map +0 -1
  861. package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs.map +0 -1
  862. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
  863. package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
  864. package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
  865. package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs.map +0 -1
  866. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
  867. package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
  868. package/lib/cjs/secrets/vault/index.cjs.map +0 -1
  869. package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs.map +0 -1
  870. package/lib/cjs/sftp/aws/AwsSftpService.cjs.map +0 -1
  871. package/lib/cjs/sftp/core/SftpEnvironment.cjs.map +0 -1
  872. package/lib/cjs/sftp/core/SftpSource.cjs.map +0 -1
  873. package/lib/cjs/sftp/core/index.cjs.map +0 -1
  874. package/lib/cjs/sftp/index.cjs.map +0 -1
  875. package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs.map +0 -1
  876. package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs.map +0 -1
  877. package/lib/cjs/shared/environmentValue.cjs.map +0 -1
  878. package/lib/cjs/shared/http/HttpApiService.cjs.map +0 -1
  879. package/lib/cjs/shared/http/hermeticBoot.cjs.map +0 -1
  880. package/lib/cjs/shared/http/index.cjs.map +0 -1
  881. package/lib/cjs/shared/runtime.cjs.map +0 -1
  882. package/lib/cjs/user-requests/index.cjs.map +0 -1
  883. package/lib/cjs/utils.cjs.map +0 -1
  884. package/lib/esm/blob/azure/AzureBlobEnvironment.js.map +0 -1
  885. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
  886. package/lib/esm/blob/azure/index.js.map +0 -1
  887. package/lib/esm/blob/core/BlobEnvironment.js.map +0 -1
  888. package/lib/esm/blob/core/BlobErrors.js.map +0 -1
  889. package/lib/esm/blob/core/BlobKey.js.map +0 -1
  890. package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
  891. package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
  892. package/lib/esm/blob/core/BlobTypes.js.map +0 -1
  893. package/lib/esm/blob/core/BlobValue.js.map +0 -1
  894. package/lib/esm/blob/core/index.js.map +0 -1
  895. package/lib/esm/blob/gcp/GcsBlobEnvironment.js.map +0 -1
  896. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
  897. package/lib/esm/blob/gcp/index.js.map +0 -1
  898. package/lib/esm/blob/index.js.map +0 -1
  899. package/lib/esm/blob/local/LocalBlobEnvironment.js.map +0 -1
  900. package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
  901. package/lib/esm/blob/local/index.js.map +0 -1
  902. package/lib/esm/blob/memory/MemoryBlobEnvironment.js.map +0 -1
  903. package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
  904. package/lib/esm/blob/memory/index.js.map +0 -1
  905. package/lib/esm/blob/s3/MinioBlobEnvironment.js.map +0 -1
  906. package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
  907. package/lib/esm/blob/s3/R2BlobEnvironment.js.map +0 -1
  908. package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
  909. package/lib/esm/blob/s3/S3BlobEnvironment.js.map +0 -1
  910. package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
  911. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +0 -1
  912. package/lib/esm/blob/s3/index.js.map +0 -1
  913. package/lib/esm/calendar/CalendarService.js.map +0 -1
  914. package/lib/esm/calendar/environment.js.map +0 -1
  915. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +0 -1
  916. package/lib/esm/calendar/google-calendar/index.js.map +0 -1
  917. package/lib/esm/calendar/index.js.map +0 -1
  918. package/lib/esm/calendar/types.js.map +0 -1
  919. package/lib/esm/calendar/validators/cron.js.map +0 -1
  920. package/lib/esm/calendar/writers/CalendarFsWriter.js.map +0 -1
  921. package/lib/esm/calendar/writers/CalenderDownloader.js.map +0 -1
  922. package/lib/esm/calendar/writers/ICalendarWriter.js.map +0 -1
  923. package/lib/esm/comms/discord/DiscordService.js.map +0 -1
  924. package/lib/esm/comms/discord/index.js.map +0 -1
  925. package/lib/esm/comms/email/EmailService.js.map +0 -1
  926. package/lib/esm/comms/email/index.js.map +0 -1
  927. package/lib/esm/comms/email/mime.js.map +0 -1
  928. package/lib/esm/comms/email/smtp.js.map +0 -1
  929. package/lib/esm/comms/environment.js.map +0 -1
  930. package/lib/esm/comms/gmail/GmailService.js.map +0 -1
  931. package/lib/esm/comms/gmail/index.js.map +0 -1
  932. package/lib/esm/comms/index.js.map +0 -1
  933. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +0 -1
  934. package/lib/esm/comms/outlook/index.js.map +0 -1
  935. package/lib/esm/comms/slack/SlackService.js.map +0 -1
  936. package/lib/esm/comms/slack/index.js.map +0 -1
  937. package/lib/esm/comms/teams/TeamsService.js.map +0 -1
  938. package/lib/esm/comms/teams/index.js.map +0 -1
  939. package/lib/esm/comms/telegram/TelegramService.js.map +0 -1
  940. package/lib/esm/comms/telegram/index.js.map +0 -1
  941. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +0 -1
  942. package/lib/esm/comms/whatsapp/index.js.map +0 -1
  943. package/lib/esm/devops/environment.js.map +0 -1
  944. package/lib/esm/devops/github/GithubService.js.map +0 -1
  945. package/lib/esm/devops/github/index.js.map +0 -1
  946. package/lib/esm/devops/gitlab/GitlabService.js.map +0 -1
  947. package/lib/esm/devops/gitlab/index.js.map +0 -1
  948. package/lib/esm/devops/index.js.map +0 -1
  949. package/lib/esm/docker/DockerComposeService.js.map +0 -1
  950. package/lib/esm/docker/index.js.map +0 -1
  951. package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +0 -1
  952. package/lib/esm/feature-flags/constants.js.map +0 -1
  953. package/lib/esm/feature-flags/decorators.js.map +0 -1
  954. package/lib/esm/feature-flags/environment.js.map +0 -1
  955. package/lib/esm/feature-flags/index.js.map +0 -1
  956. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +0 -1
  957. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +0 -1
  958. package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +0 -1
  959. package/lib/esm/feature-flags/readers/index.js.map +0 -1
  960. package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +0 -1
  961. package/lib/esm/feature-flags/types.js.map +0 -1
  962. package/lib/esm/feature-flags/utils.js.map +0 -1
  963. package/lib/esm/index.js.map +0 -1
  964. package/lib/esm/io/airtable/AirtableService.js.map +0 -1
  965. package/lib/esm/io/airtable/index.js.map +0 -1
  966. package/lib/esm/io/confluence/ConfluenceService.js.map +0 -1
  967. package/lib/esm/io/confluence/index.js.map +0 -1
  968. package/lib/esm/io/environment.js.map +0 -1
  969. package/lib/esm/io/google-docs/GoogleDocsService.js.map +0 -1
  970. package/lib/esm/io/google-docs/index.js.map +0 -1
  971. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +0 -1
  972. package/lib/esm/io/google-sheets/index.js.map +0 -1
  973. package/lib/esm/io/graphql/GraphqlService.js.map +0 -1
  974. package/lib/esm/io/graphql/index.js.map +0 -1
  975. package/lib/esm/io/index.js.map +0 -1
  976. package/lib/esm/io/jira/JiraService.js.map +0 -1
  977. package/lib/esm/io/jira/index.js.map +0 -1
  978. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +0 -1
  979. package/lib/esm/io/microsoft-excel/index.js.map +0 -1
  980. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +0 -1
  981. package/lib/esm/io/microsoft-sharepoint/index.js.map +0 -1
  982. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +0 -1
  983. package/lib/esm/io/spreadsheet/index.js.map +0 -1
  984. package/lib/esm/keycloak/broker.js.map +0 -1
  985. package/lib/esm/keycloak/index.js.map +0 -1
  986. package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
  987. package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
  988. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
  989. package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
  990. package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
  991. package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
  992. package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
  993. package/lib/esm/keycloak/services/index.js.map +0 -1
  994. package/lib/esm/keycloak/services/runtime.js.map +0 -1
  995. package/lib/esm/keycloak/types.js.map +0 -1
  996. package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +0 -1
  997. package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +0 -1
  998. package/lib/esm/kibana/builders/index.js.map +0 -1
  999. package/lib/esm/kibana/helpers.js.map +0 -1
  1000. package/lib/esm/kibana/index.js.map +0 -1
  1001. package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
  1002. package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
  1003. package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
  1004. package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
  1005. package/lib/esm/kibana/services/KibanaService.js.map +0 -1
  1006. package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
  1007. package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
  1008. package/lib/esm/kibana/services/index.js.map +0 -1
  1009. package/lib/esm/kibana/services/runtime.js.map +0 -1
  1010. package/lib/esm/kibana/types.js.map +0 -1
  1011. package/lib/esm/loader/ObjectLoader.js.map +0 -1
  1012. package/lib/esm/loader/assets.js.map +0 -1
  1013. package/lib/esm/loader/config.js.map +0 -1
  1014. package/lib/esm/loader/families.js.map +0 -1
  1015. package/lib/esm/loader/index.js.map +0 -1
  1016. package/lib/esm/loader/nest.js.map +0 -1
  1017. package/lib/esm/loader/types.js.map +0 -1
  1018. package/lib/esm/namespaces/index.js.map +0 -1
  1019. package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
  1020. package/lib/esm/namespaces/models/credential.model.js.map +0 -1
  1021. package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
  1022. package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
  1023. package/lib/esm/namespaces/models/group.model.js.map +0 -1
  1024. package/lib/esm/namespaces/models/index.js.map +0 -1
  1025. package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
  1026. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
  1027. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
  1028. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
  1029. package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
  1030. package/lib/esm/namespaces/models/permission.model.js.map +0 -1
  1031. package/lib/esm/namespaces/models/principal.model.js.map +0 -1
  1032. package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
  1033. package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
  1034. package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
  1035. package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
  1036. package/lib/esm/namespaces/models/role.model.js.map +0 -1
  1037. package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
  1038. package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
  1039. package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
  1040. package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
  1041. package/lib/esm/namespaces/models/user.model.js.map +0 -1
  1042. package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
  1043. package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
  1044. package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
  1045. package/lib/esm/namespaces/rls/index.js.map +0 -1
  1046. package/lib/esm/namespaces/rls/principal-resolver.js.map +0 -1
  1047. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +0 -1
  1048. package/lib/esm/namespaces/rls/rls.constants.js.map +0 -1
  1049. package/lib/esm/namespaces/rls/rls.template.js.map +0 -1
  1050. package/lib/esm/namespaces/rls/rls.types.js.map +0 -1
  1051. package/lib/esm/namespaces/rls/session-binding.js.map +0 -1
  1052. package/lib/esm/namespaces/services/authz.service.js.map +0 -1
  1053. package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
  1054. package/lib/esm/namespaces/services/credential.service.js.map +0 -1
  1055. package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
  1056. package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
  1057. package/lib/esm/namespaces/services/group.service.js.map +0 -1
  1058. package/lib/esm/namespaces/services/index.js.map +0 -1
  1059. package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
  1060. package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
  1061. package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
  1062. package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
  1063. package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
  1064. package/lib/esm/namespaces/services/permission.service.js.map +0 -1
  1065. package/lib/esm/namespaces/services/principal.service.js.map +0 -1
  1066. package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
  1067. package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
  1068. package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
  1069. package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
  1070. package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
  1071. package/lib/esm/namespaces/services/role.service.js.map +0 -1
  1072. package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
  1073. package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
  1074. package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
  1075. package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
  1076. package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
  1077. package/lib/esm/namespaces/services/user.service.js.map +0 -1
  1078. package/lib/esm/namespaces/types.js.map +0 -1
  1079. package/lib/esm/namespaces/utils.js.map +0 -1
  1080. package/lib/esm/nest/decorators.js.map +0 -1
  1081. package/lib/esm/nest/index.js.map +0 -1
  1082. package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
  1083. package/lib/esm/nest/keycloakModule.js.map +0 -1
  1084. package/lib/esm/nest/logging.js.map +0 -1
  1085. package/lib/esm/nest/types.js.map +0 -1
  1086. package/lib/esm/nest/utils.js.map +0 -1
  1087. package/lib/esm/plugins/contract.js.map +0 -1
  1088. package/lib/esm/plugins/index.js.map +0 -1
  1089. package/lib/esm/plugins/kibana/host.js.map +0 -1
  1090. package/lib/esm/plugins/kibana/index.js.map +0 -1
  1091. package/lib/esm/plugins/kibana/installer.js.map +0 -1
  1092. package/lib/esm/plugins/kibana/manifest.js.map +0 -1
  1093. package/lib/esm/plugins/kibana/templates.js.map +0 -1
  1094. package/lib/esm/plugins/kibana/types.js.map +0 -1
  1095. package/lib/esm/plugins/superset/host.js.map +0 -1
  1096. package/lib/esm/plugins/superset/index.js.map +0 -1
  1097. package/lib/esm/plugins/superset/installer.js.map +0 -1
  1098. package/lib/esm/plugins/superset/manifest.js.map +0 -1
  1099. package/lib/esm/plugins/superset/templates.js.map +0 -1
  1100. package/lib/esm/plugins/superset/types.js.map +0 -1
  1101. package/lib/esm/redis/RedisContextLock.js.map +0 -1
  1102. package/lib/esm/redis/RedisDispatch.js.map +0 -1
  1103. package/lib/esm/redis/RedisPaginator.js.map +0 -1
  1104. package/lib/esm/redis/RedisStatement.js.map +0 -1
  1105. package/lib/esm/redis/adapter.js.map +0 -1
  1106. package/lib/esm/redis/constants.js.map +0 -1
  1107. package/lib/esm/redis/handlers.js.map +0 -1
  1108. package/lib/esm/redis/index.js.map +0 -1
  1109. package/lib/esm/redis/serialization.js.map +0 -1
  1110. package/lib/esm/redis/types.js.map +0 -1
  1111. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +0 -1
  1112. package/lib/esm/secrets/aws/AwsSecretEnvironment.js.map +0 -1
  1113. package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
  1114. package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
  1115. package/lib/esm/secrets/aws/index.js.map +0 -1
  1116. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
  1117. package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
  1118. package/lib/esm/secrets/azure/AzureSecretEnvironment.js.map +0 -1
  1119. package/lib/esm/secrets/azure/index.js.map +0 -1
  1120. package/lib/esm/secrets/core/ClientBasedSecretService.js.map +0 -1
  1121. package/lib/esm/secrets/core/SecretEnvironment.js.map +0 -1
  1122. package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
  1123. package/lib/esm/secrets/core/SecretName.js.map +0 -1
  1124. package/lib/esm/secrets/core/SecretReference.js.map +0 -1
  1125. package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
  1126. package/lib/esm/secrets/core/SecretService.js.map +0 -1
  1127. package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
  1128. package/lib/esm/secrets/core/index.js.map +0 -1
  1129. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +0 -1
  1130. package/lib/esm/secrets/fs/FsSecretService.js.map +0 -1
  1131. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +0 -1
  1132. package/lib/esm/secrets/fs/index.js.map +0 -1
  1133. package/lib/esm/secrets/gcp/GcpSecretEnvironment.js.map +0 -1
  1134. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
  1135. package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
  1136. package/lib/esm/secrets/gcp/index.js.map +0 -1
  1137. package/lib/esm/secrets/index.js.map +0 -1
  1138. package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
  1139. package/lib/esm/secrets/model/ModelSecretEnvironment.js.map +0 -1
  1140. package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
  1141. package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
  1142. package/lib/esm/secrets/model/Secret.js.map +0 -1
  1143. package/lib/esm/secrets/model/index.js.map +0 -1
  1144. package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js.map +0 -1
  1145. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
  1146. package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
  1147. package/lib/esm/secrets/onepassword/index.js.map +0 -1
  1148. package/lib/esm/secrets/vault/VaultSecretEnvironment.js.map +0 -1
  1149. package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
  1150. package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
  1151. package/lib/esm/secrets/vault/index.js.map +0 -1
  1152. package/lib/esm/sftp/aws/AwsSftpEnvironment.js.map +0 -1
  1153. package/lib/esm/sftp/aws/AwsSftpService.js.map +0 -1
  1154. package/lib/esm/sftp/core/SftpEnvironment.js.map +0 -1
  1155. package/lib/esm/sftp/core/SftpSource.js.map +0 -1
  1156. package/lib/esm/sftp/core/index.js.map +0 -1
  1157. package/lib/esm/sftp/index.js.map +0 -1
  1158. package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js.map +0 -1
  1159. package/lib/esm/sftp/ssh2/Ssh2SftpService.js.map +0 -1
  1160. package/lib/esm/shared/environmentValue.js.map +0 -1
  1161. package/lib/esm/shared/http/HttpApiService.js.map +0 -1
  1162. package/lib/esm/shared/http/hermeticBoot.js.map +0 -1
  1163. package/lib/esm/shared/http/index.js.map +0 -1
  1164. package/lib/esm/shared/runtime.js.map +0 -1
  1165. package/lib/esm/user-requests/index.js.map +0 -1
  1166. package/lib/esm/utils.js.map +0 -1
@@ -108,5 +108,5 @@ __decorate([
108
108
  __metadata("design:paramtypes", [Object, Object]),
109
109
  __metadata("design:returntype", Promise)
110
110
  ], BootstrapService.prototype, "bootstrapTenantFromTemplate", null);
111
- //# sourceMappingURL=bootstrap.service.js.map
112
- //# sourceMappingURL=bootstrap.service.cjs.map
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFtZXNwYWNlcy9zZXJ2aWNlcy9ib290c3RyYXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLHNCQUFpQjtBQUV6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLHNCQUFpQjtBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLDRCQUF5QjtBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsb0NBQWlDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsOEJBQTJCO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQ0FBbUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSwwQkFBdUI7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVDQUFvQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsK0JBQTRCO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQ0FBNkI7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSwwQkFBdUI7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFDQUFrQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUNBQWtDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSwwQ0FBdUM7QUFFNUUsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNVLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNwQyx5QkFBb0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLDBCQUFxQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxnQkFBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQUcsSUFBSSx1QkFBdUIs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TUFBTSxDQUFDLEVBQUUsRUFDVCxjQUFjLENBQUMsRUFBRSxFQUNqQixHQUFHLElBQUksQ0FDUixDQUFDO1FBRUYsT0FBTztZQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNuQixhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO1NBQ3BDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6SE87SUFETCxhQUFhLEVBQUU7Ozs7bUVBeUhmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJhbnNhY3Rpb25hbCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBCb290c3RyYXBPcmdVbml0LCBCb290c3RyYXBUZW1wbGF0ZSB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgTWVtYmVyc2hpcFN0YXR1cywgU2NvcGVLaW5kIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW5hbnRTZXJ2aWNlIH0gZnJvbSBcIi4vdGVuYW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IFRlbmFudFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSBcIi4vdGVuYW50LXByb2ZpbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgT3JnVW5pdFNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcmdVbml0UHJvZmlsZVNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC1wcm9maWxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vdXNlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBUZW5hbnRNZW1iZXJzaGlwU2VydmljZSB9IGZyb20gXCIuL3RlbmFudC1tZW1iZXJzaGlwLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFJvbGVTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuaW1wb3J0IHsgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7IEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgQm9vdHN0cmFwU2VydmljZSB7XG4gIHByaXZhdGUgdGVuYW50U2VydmljZSA9IG5ldyBUZW5hbnRTZXJ2aWNlKCk7XG4gIHByaXZhdGUgdGVuYW50UHJvZmlsZVNlcnZpY2UgPSBuZXcgVGVuYW50UHJvZmlsZVNlcnZpY2UoKTtcbiAgcHJpdmF0ZSBvcmdVbml0U2VydmljZSA9IG5ldyBPcmdVbml0U2VydmljZSgpO1xuICBwcml2YXRlIG9yZ1VuaXRQcm9maWxlU2VydmljZSA9IG5ldyBPcmdVbml0UHJvZmlsZVNlcnZpY2UoKTtcbiAgcHJpdmF0ZSB1c2VyU2VydmljZSA9IG5ldyBVc2VyU2VydmljZSgpO1xuICBwcml2YXRlIG1lbWJlcnNoaXBTZXJ2aWNlID0gbmV3IFRlbmFudE1lbWJlcnNoaXBTZXJ2aWNlKCk7XG4gIHByaXZhdGUgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gIHByaXZhdGUgcGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgcHJpdmF0ZSByb2xlU2VydmljZSA9IG5ldyBSb2xlU2VydmljZSgpO1xuICBwcml2YXRlIHJvbGVQZXJtaXNzaW9uU2VydmljZSA9IG5ldyBSb2xlUGVybWlzc2lvblNlcnZpY2UoKTtcbiAgcHJpdmF0ZSByb2xlQXNzaWdubWVudFNlcnZpY2UgPSBuZXcgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlKCk7XG4gIHByaXZhdGUgZWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgRWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UoKTtcblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIGJvb3RzdHJhcFRlbmFudEZyb21UZW1wbGF0ZShcbiAgICB0ZW1wbGF0ZTogQm9vdHN0cmFwVGVtcGxhdGUsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTx7XG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgICByb290T3JnVW5pdElkOiBzdHJpbmc7XG4gICAgb3duZXJVc2VySWQ6IHN0cmluZztcbiAgICBvd25lclByaW5jaXBhbElkOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB0ZW5hbnQgPSBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuY3JlYXRlVGVuYW50KFxuICAgICAgdGVtcGxhdGUudGVuYW50LFxuICAgICAgLi4uYXJnc1xuICAgICk7XG4gICAgaWYgKHRlbXBsYXRlLnRlbmFudC5wcm9maWxlS2V5KSB7XG4gICAgICBhd2FpdCB0aGlzLnRlbmFudFByb2ZpbGVTZXJ2aWNlLmNyZWF0ZVByb2ZpbGUoXG4gICAgICAgIHRlbmFudC5pZCxcbiAgICAgICAgdGVtcGxhdGUudGVuYW50LnByb2ZpbGVLZXksXG4gICAgICAgIHRlbXBsYXRlLnRlbmFudC5wcm9maWxlTWV0YWRhdGEsXG4gICAgICAgIC4uLmFyZ3NcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlT3JnVHJlZSA9IGFzeW5jIChcbiAgICAgIHBhcmVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBvcmdVbml0OiBCb290c3RyYXBPcmdVbml0XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBjcmVhdGVkID1cbiAgICAgICAgcGFyZW50SWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gYXdhaXQgdGhpcy5vcmdVbml0U2VydmljZS5jcmVhdGVSb290KFxuICAgICAgICAgICAgICB0ZW5hbnQuaWQsXG4gICAgICAgICAgICAgIG9yZ1VuaXQubmFtZSxcbiAgICAgICAgICAgICAgb3JnVW5pdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgb3JnVW5pdC5wcm9maWxlS2V5LFxuICAgICAgICAgICAgICBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBhd2FpdCB0aGlzLm9yZ1VuaXRTZXJ2aWNlLmNyZWF0ZUNoaWxkKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGVuYW50SWQ6IHRlbmFudC5pZCxcbiAgICAgICAgICAgICAgICBwYXJlbnRPcmdVbml0SWQ6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgIG5hbWU6IG9yZ1VuaXQubmFtZSxcbiAgICAgICAgICAgICAgICBtZXRhZGF0YTogb3JnVW5pdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBwcm9maWxlS2V5OiBvcmdVbml0LnByb2ZpbGVLZXksXG4gICAgICAgICAgICAgICAgcHJvZmlsZU1ldGFkYXRhOiBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAuLi5hcmdzXG4gICAgICAgICAgICApO1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvcmdVbml0LmNoaWxkcmVuID8/IFtdKSB7XG4gICAgICAgIGF3YWl0IGNyZWF0ZU9yZ1RyZWUoY3JlYXRlZC5pZCwgY2hpbGQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHJvb3RPcmdVbml0ID0gYXdhaXQgY3JlYXRlT3JnVHJlZSh1bmRlZmluZWQsIHRlbXBsYXRlLnJvb3RPcmdVbml0KTtcbiAgICBjb25zdCBvd25lciA9IGF3YWl0IHRoaXMudXNlclNlcnZpY2UuY3JlYXRlVXNlcihcbiAgICAgIHRlbXBsYXRlLm93bmVyVXNlcixcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMubWVtYmVyc2hpcFNlcnZpY2UuYWRkVXNlclRvVGVuYW50KFxuICAgICAgdGVuYW50LmlkLFxuICAgICAgb3duZXIuaWQsXG4gICAgICBNZW1iZXJzaGlwU3RhdHVzLkFjdGl2ZSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGNvbnN0IG93bmVyUHJpbmNpcGFsID0gYXdhaXQgdGhpcy5wcmluY2lwYWxTZXJ2aWNlLmdldFVzZXJQcmluY2lwYWwoXG4gICAgICB0ZW5hbnQuaWQsXG4gICAgICBvd25lci5pZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIHRlbXBsYXRlLnBlcm1pc3Npb25zKSB7XG4gICAgICBhd2FpdCB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmNyZWF0ZVBlcm1pc3Npb24ocGVybWlzc2lvbiwgLi4uYXJncyk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgcm9sZSBvZiB0ZW1wbGF0ZS5yb2xlcykge1xuICAgICAgY29uc3QgY3JlYXRlZFJvbGUgPSBhd2FpdCB0aGlzLnJvbGVTZXJ2aWNlLmNyZWF0ZVJvbGUoXG4gICAgICAgIHtcbiAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgIGtleTogcm9sZS5rZXksXG4gICAgICAgICAgbmFtZTogcm9sZS5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiByb2xlLmRlc2NyaXB0aW9uLFxuICAgICAgICB9LFxuICAgICAgICAuLi5hcmdzXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBwZXJtaXNzaW9uS2V5IG9mIHJvbGUucGVybWlzc2lvbktleXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yb2xlUGVybWlzc2lvblNlcnZpY2UuYWRkUGVybWlzc2lvbktleVRvUm9sZShcbiAgICAgICAgICBjcmVhdGVkUm9sZS5pZCxcbiAgICAgICAgICBwZXJtaXNzaW9uS2V5LFxuICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvd25lclJvbGUgPSBhd2FpdCB0aGlzLnJvbGVTZXJ2aWNlLmdldFRlbmFudFJvbGVCeUtleShcbiAgICAgIHRlbmFudC5pZCxcbiAgICAgIHRlbXBsYXRlLm93bmVyUm9sZUtleSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICAgIGF3YWl0IHRoaXMucm9sZUFzc2lnbm1lbnRTZXJ2aWNlLmFzc2lnblJvbGUoXG4gICAgICB7XG4gICAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICAgIHByaW5jaXBhbElkOiBvd25lclByaW5jaXBhbC5pZCxcbiAgICAgICAgcm9sZUlkOiBvd25lclJvbGUuaWQsXG4gICAgICAgIHNjb3BlS2luZDogU2NvcGVLaW5kLk9yZ1VuaXQsXG4gICAgICAgIHNjb3BlSWQ6IHJvb3RPcmdVbml0LmlkLFxuICAgICAgICBpbmhlcml0RG93bjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLmVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlLnJlYnVpbGRGb3JQcmluY2lwYWwoXG4gICAgICB0ZW5hbnQuaWQsXG4gICAgICBvd25lclByaW5jaXBhbC5pZCxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICByb290T3JnVW5pdElkOiByb290T3JnVW5pdC5pZCxcbiAgICAgIG93bmVyVXNlcklkOiBvd25lci5pZCxcbiAgICAgIG93bmVyUHJpbmNpcGFsSWQ6IG93bmVyUHJpbmNpcGFsLmlkLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJib290c3RyYXAuc2VydmljZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJO0lBQ2pGLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFBRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUMsQ0FBQztBQUNGLDRDQUE4QztBQUM5Qyw0Q0FBNEQ7QUFDNUQsMkRBQW9EO0FBQ3BELDJFQUFtRTtBQUNuRSwrREFBdUQ7QUFDdkQsK0VBQXNFO0FBQ3RFLHVEQUFnRDtBQUNoRCxpRkFBeUU7QUFDekUsaUVBQTBEO0FBQzFELG1FQUE0RDtBQUM1RCx1REFBZ0Q7QUFDaEQsNkVBQXFFO0FBQ3JFLDZFQUFxRTtBQUNyRSx1RkFBK0U7QUFDL0UsTUFBYSxnQkFBZ0I7SUFDekI7UUFDSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksaUNBQWEsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLGdEQUFvQixFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLG9DQUFjLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxtREFBcUIsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw2QkFBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksc0RBQXVCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx1Q0FBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlDQUFpQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDZCQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxrREFBcUIsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGtEQUFxQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksNERBQTBCLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsS0FBSyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0UsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkksQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxLQUFLLFNBQVM7Z0JBQ2xDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDaEksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7b0JBQ3BDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsZUFBZSxFQUFFLFFBQVE7b0JBQ3pCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO29CQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLGVBQWUsRUFBRSxPQUFPLENBQUMsUUFBUTtpQkFDcEMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hCLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsTUFBTSxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM3RSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLDJCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xHLEtBQUssTUFBTSxVQUFVLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO2dCQUNsRCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQ2hDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNaLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BHLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztZQUN4QyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDbkIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRTtZQUNwQixTQUFTLEVBQUUsb0JBQVMsQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsRUFBRTtZQUN2QixXQUFXLEVBQUUsSUFBSTtTQUNwQixFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDWixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNqRyxPQUFPO1lBQ0gsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUM3QixXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDckIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7U0FDdEMsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQXZFRCw0Q0F1RUM7QUFDRCxVQUFVLENBQUM7SUFDUCxJQUFBLHdCQUFhLEdBQUU7SUFDZixVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUNuQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsVUFBVSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztDQUMzQyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSw2QkFBNkIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRSxrcFhBQWtwWCIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IE1lbWJlcnNoaXBTdGF0dXMsIFNjb3BlS2luZCB9IGZyb20gXCIuLy4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBUZW5hbnRTZXJ2aWNlIH0gZnJvbSBcIi4vdGVuYW50LnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFRlbmFudFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSBcIi4vdGVuYW50LXByb2ZpbGUuc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgT3JnVW5pdFNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBPcmdVbml0UHJvZmlsZVNlcnZpY2UgfSBmcm9tIFwiLi9vcmctdW5pdC1wcm9maWxlLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4vdXNlci5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBUZW5hbnRNZW1iZXJzaGlwU2VydmljZSB9IGZyb20gXCIuL3RlbmFudC1tZW1iZXJzaGlwLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9wZXJtaXNzaW9uLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFJvbGVTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBSb2xlUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLXBlcm1pc3Npb24uc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1hc3NpZ25tZW50LnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qc1wiO1xuZXhwb3J0IGNsYXNzIEJvb3RzdHJhcFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnRlbmFudFNlcnZpY2UgPSBuZXcgVGVuYW50U2VydmljZSgpO1xuICAgICAgICB0aGlzLnRlbmFudFByb2ZpbGVTZXJ2aWNlID0gbmV3IFRlbmFudFByb2ZpbGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMub3JnVW5pdFNlcnZpY2UgPSBuZXcgT3JnVW5pdFNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5vcmdVbml0UHJvZmlsZVNlcnZpY2UgPSBuZXcgT3JnVW5pdFByb2ZpbGVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UgPSBuZXcgVXNlclNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5tZW1iZXJzaGlwU2VydmljZSA9IG5ldyBUZW5hbnRNZW1iZXJzaGlwU2VydmljZSgpO1xuICAgICAgICB0aGlzLnByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMucm9sZVNlcnZpY2UgPSBuZXcgUm9sZVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5yb2xlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUm9sZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMucm9sZUFzc2lnbm1lbnRTZXJ2aWNlID0gbmV3IFJvbGVBc3NpZ25tZW50U2VydmljZSgpO1xuICAgICAgICB0aGlzLmVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgfVxuICAgIGFzeW5jIGJvb3RzdHJhcFRlbmFudEZyb21UZW1wbGF0ZSh0ZW1wbGF0ZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB0ZW5hbnQgPSBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuY3JlYXRlVGVuYW50KHRlbXBsYXRlLnRlbmFudCwgLi4uYXJncyk7XG4gICAgICAgIGlmICh0ZW1wbGF0ZS50ZW5hbnQucHJvZmlsZUtleSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZW5hbnRQcm9maWxlU2VydmljZS5jcmVhdGVQcm9maWxlKHRlbmFudC5pZCwgdGVtcGxhdGUudGVuYW50LnByb2ZpbGVLZXksIHRlbXBsYXRlLnRlbmFudC5wcm9maWxlTWV0YWRhdGEsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNyZWF0ZU9yZ1RyZWUgPSBhc3luYyAocGFyZW50SWQsIG9yZ1VuaXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBwYXJlbnRJZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLm9yZ1VuaXRTZXJ2aWNlLmNyZWF0ZVJvb3QodGVuYW50LmlkLCBvcmdVbml0Lm5hbWUsIG9yZ1VuaXQubWV0YWRhdGEsIG9yZ1VuaXQucHJvZmlsZUtleSwgb3JnVW5pdC5tZXRhZGF0YSwgLi4uYXJncylcbiAgICAgICAgICAgICAgICA6IGF3YWl0IHRoaXMub3JnVW5pdFNlcnZpY2UuY3JlYXRlQ2hpbGQoe1xuICAgICAgICAgICAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRPcmdVbml0SWQ6IHBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcmdVbml0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBvcmdVbml0Lm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBwcm9maWxlS2V5OiBvcmdVbml0LnByb2ZpbGVLZXksXG4gICAgICAgICAgICAgICAgICAgIHByb2ZpbGVNZXRhZGF0YTogb3JnVW5pdC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB9LCAuLi5hcmdzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3JnVW5pdC5jaGlsZHJlbiA/PyBbXSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNyZWF0ZU9yZ1RyZWUoY3JlYXRlZC5pZCwgY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJvb3RPcmdVbml0ID0gYXdhaXQgY3JlYXRlT3JnVHJlZSh1bmRlZmluZWQsIHRlbXBsYXRlLnJvb3RPcmdVbml0KTtcbiAgICAgICAgY29uc3Qgb3duZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZVVzZXIodGVtcGxhdGUub3duZXJVc2VyLCAuLi5hcmdzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tZW1iZXJzaGlwU2VydmljZS5hZGRVc2VyVG9UZW5hbnQodGVuYW50LmlkLCBvd25lci5pZCwgTWVtYmVyc2hpcFN0YXR1cy5BY3RpdmUsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBvd25lclByaW5jaXBhbCA9IGF3YWl0IHRoaXMucHJpbmNpcGFsU2VydmljZS5nZXRVc2VyUHJpbmNpcGFsKHRlbmFudC5pZCwgb3duZXIuaWQsIC4uLmFyZ3MpO1xuICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgdGVtcGxhdGUucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGVybWlzc2lvblNlcnZpY2UuY3JlYXRlUGVybWlzc2lvbihwZXJtaXNzaW9uLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHJvbGUgb2YgdGVtcGxhdGUucm9sZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRSb2xlID0gYXdhaXQgdGhpcy5yb2xlU2VydmljZS5jcmVhdGVSb2xlKHtcbiAgICAgICAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgICAgICAgIGtleTogcm9sZS5rZXksXG4gICAgICAgICAgICAgICAgbmFtZTogcm9sZS5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiByb2xlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSwgLi4uYXJncyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb25LZXkgb2Ygcm9sZS5wZXJtaXNzaW9uS2V5cykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucm9sZVBlcm1pc3Npb25TZXJ2aWNlLmFkZFBlcm1pc3Npb25LZXlUb1JvbGUoY3JlYXRlZFJvbGUuaWQsIHBlcm1pc3Npb25LZXksIC4uLmFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG93bmVyUm9sZSA9IGF3YWl0IHRoaXMucm9sZVNlcnZpY2UuZ2V0VGVuYW50Um9sZUJ5S2V5KHRlbmFudC5pZCwgdGVtcGxhdGUub3duZXJSb2xlS2V5LCAuLi5hcmdzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yb2xlQXNzaWdubWVudFNlcnZpY2UuYXNzaWduUm9sZSh7XG4gICAgICAgICAgICB0ZW5hbnRJZDogdGVuYW50LmlkLFxuICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IG93bmVyUHJpbmNpcGFsLmlkLFxuICAgICAgICAgICAgcm9sZUlkOiBvd25lclJvbGUuaWQsXG4gICAgICAgICAgICBzY29wZUtpbmQ6IFNjb3BlS2luZC5PcmdVbml0LFxuICAgICAgICAgICAgc2NvcGVJZDogcm9vdE9yZ1VuaXQuaWQsXG4gICAgICAgICAgICBpbmhlcml0RG93bjogdHJ1ZSxcbiAgICAgICAgfSwgLi4uYXJncyk7XG4gICAgICAgIGF3YWl0IHRoaXMuZWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UucmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnQuaWQsIG93bmVyUHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRlbmFudElkOiB0ZW5hbnQuaWQsXG4gICAgICAgICAgICByb290T3JnVW5pdElkOiByb290T3JnVW5pdC5pZCxcbiAgICAgICAgICAgIG93bmVyVXNlcklkOiBvd25lci5pZCxcbiAgICAgICAgICAgIG93bmVyUHJpbmNpcGFsSWQ6IG93bmVyUHJpbmNpcGFsLmlkLFxuICAgICAgICB9O1xuICAgIH1cbn1cbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbT2JqZWN0LCBPYmplY3RdKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIEJvb3RzdHJhcFNlcnZpY2UucHJvdG90eXBlLCBcImJvb3RzdHJhcFRlbmFudEZyb21UZW1wbGF0ZVwiLCBudWxsKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVltOXZkSE4wY21Gd0xuTmxjblpwWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZibUZ0WlhOd1lXTmxjeTl6WlhKMmFXTmxjeTlpYjI5MGMzUnlZWEF1YzJWeWRtbGpaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3UVVGQlFTeFBRVUZQTEVWQlFVVXNZVUZCWVN4RlFVRkZMSE5DUVVGcFFqdEJRVVY2UXl4UFFVRlBMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNVMEZCVXl4RlFVRkZMSE5DUVVGcFFqdEJRVU4yUkN4UFFVRlBMRVZCUVVVc1lVRkJZU3hGUVVGRkxEUkNRVUY1UWp0QlFVTnFSQ3hQUVVGUExFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2IwTkJRV2xETzBGQlEyaEZMRTlCUVU4c1JVRkJSU3hqUVVGakxFVkJRVVVzT0VKQlFUSkNPMEZCUTNCRUxFOUJRVThzUlVGQlJTeHhRa0ZCY1VJc1JVRkJSU3h6UTBGQmJVTTdRVUZEYmtVc1QwRkJUeXhGUVVGRkxGZEJRVmNzUlVGQlJTd3dRa0ZCZFVJN1FVRkROME1zVDBGQlR5eEZRVUZGTEhWQ1FVRjFRaXhGUVVGRkxIVkRRVUZ2UXp0QlFVTjBSU3hQUVVGUExFVkJRVVVzWjBKQlFXZENMRVZCUVVVc0swSkJRVFJDTzBGQlEzWkVMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNSVUZCUlN4blEwRkJOa0k3UVVGRGVrUXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3d3UWtGQmRVSTdRVUZETjBNc1QwRkJUeXhGUVVGRkxIRkNRVUZ4UWl4RlFVRkZMSEZEUVVGclF6dEJRVU5zUlN4UFFVRlBMRVZCUVVVc2NVSkJRWEZDTEVWQlFVVXNjVU5CUVd0RE8wRkJRMnhGTEU5QlFVOHNSVUZCUlN3d1FrRkJNRUlzUlVGQlJTd3dRMEZCZFVNN1FVRkZOVVVzVFVGQlRTeFBRVUZQTEdkQ1FVRm5RanRKUVVFM1FqdFJRVU5WTEd0Q1FVRmhMRWRCUVVjc1NVRkJTU3hoUVVGaExFVkJRVVVzUTBGQlF6dFJRVU53UXl4NVFrRkJiMElzUjBGQlJ5eEpRVUZKTEc5Q1FVRnZRaXhGUVVGRkxFTkJRVU03VVVGRGJFUXNiVUpCUVdNc1IwRkJSeXhKUVVGSkxHTkJRV01zUlVGQlJTeERRVUZETzFGQlEzUkRMREJDUVVGeFFpeEhRVUZITEVsQlFVa3NjVUpCUVhGQ0xFVkJRVVVzUTBGQlF6dFJRVU53UkN4blFrRkJWeXhIUVVGSExFbEJRVWtzVjBGQlZ5eEZRVUZGTEVOQlFVTTdVVUZEYUVNc2MwSkJRV2xDTEVkQlFVY3NTVUZCU1N4MVFrRkJkVUlzUlVGQlJTeERRVUZETzFGQlEyeEVMSEZDUVVGblFpeEhRVUZITEVsQlFVa3NaMEpCUVdkQ0xFVkJRVVVzUTBGQlF6dFJRVU14UXl4elFrRkJhVUlzUjBGQlJ5eEpRVUZKTEdsQ1FVRnBRaXhGUVVGRkxFTkJRVU03VVVGRE5VTXNaMEpCUVZjc1IwRkJSeXhKUVVGSkxGZEJRVmNzUlVGQlJTeERRVUZETzFGQlEyaERMREJDUVVGeFFpeEhRVUZITEVsQlFVa3NjVUpCUVhGQ0xFVkJRVVVzUTBGQlF6dFJRVU53UkN3d1FrRkJjVUlzUjBGQlJ5eEpRVUZKTEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03VVVGRGNFUXNLMEpCUVRCQ0xFZEJRVWNzU1VGQlNTd3dRa0ZCTUVJc1JVRkJSU3hEUVVGRE8wbEJORWg0UlN4RFFVRkRPMGxCZWtoUExFRkJRVTRzUzBGQlN5eERRVUZETERKQ1FVRXlRaXhEUVVNdlFpeFJRVUV5UWl4RlFVTXpRaXhIUVVGSExFbEJRVmM3VVVGUFpDeE5RVUZOTEUxQlFVMHNSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zV1VGQldTeERRVU5zUkN4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVObUxFZEJRVWNzU1VGQlNTeERRVU5TTEVOQlFVTTdVVUZEUml4SlFVRkpMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZETDBJc1RVRkJUU3hKUVVGSkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVNelF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVTlVMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVU14UWl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExHVkJRV1VzUlVGREwwSXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeE5RVUZOTEdGQlFXRXNSMEZCUnl4TFFVRkxMRVZCUTNwQ0xGRkJRVFJDTEVWQlF6VkNMRTlCUVhsQ0xFVkJRM3BDTEVWQlFVVTdXVUZEUml4TlFVRk5MRTlCUVU4c1IwRkRXQ3hSUVVGUkxFdEJRVXNzVTBGQlV6dG5Ra0ZEY0VJc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VlFVRlZMRU5CUTJ4RExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlExUXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkRXaXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVU5vUWl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hGUVVOc1FpeFBRVUZQTEVOQlFVTXNVVUZCVVN4RlFVTm9RaXhIUVVGSExFbEJRVWtzUTBGRFVqdG5Ra0ZEU0N4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEZkQlFWY3NRMEZEYmtNN2IwSkJRMFVzVVVGQlVTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RlFVRkZPMjlDUVVOdVFpeGxRVUZsTEVWQlFVVXNVVUZCVVR0dlFrRkRla0lzU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4SlFVRkpPMjlDUVVOc1FpeFJRVUZSTEVWQlFVVXNUMEZCVHl4RFFVRkRMRkZCUVZFN2IwSkJRekZDTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1ZVRkJWVHR2UWtGRE9VSXNaVUZCWlN4RlFVRkZMRTlCUVU4c1EwRkJReXhSUVVGUk8ybENRVU5zUXl4RlFVTkVMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRVU03V1VGRFVpeExRVUZMTEUxQlFVMHNTMEZCU3l4SlFVRkpMRTlCUVU4c1EwRkJReXhSUVVGUkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUXpORExFMUJRVTBzWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRGVrTXNRMEZCUXp0WlFVTkVMRTlCUVU4c1QwRkJUeXhEUVVGRE8xRkJRMnBDTEVOQlFVTXNRMEZCUXp0UlFVVkdMRTFCUVUwc1YwRkJWeXhIUVVGSExFMUJRVTBzWVVGQllTeERRVUZETEZOQlFWTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGVrVXNUVUZCVFN4TFFVRkxMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZETjBNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGRGJFSXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRSUVVOR0xFMUJRVTBzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExHVkJRV1VzUTBGRE1VTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkRWQ3hMUVVGTExFTkJRVU1zUlVGQlJTeEZRVU5TTEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGRGRrSXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRSUVVOR0xFMUJRVTBzWTBGQll5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEdkQ1FVRm5RaXhEUVVOcVJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVTlVMRXRCUVVzc1EwRkJReXhGUVVGRkxFVkJRMUlzUjBGQlJ5eEpRVUZKTEVOQlExSXNRMEZCUXp0UlFVVkdMRXRCUVVzc1RVRkJUU3hWUVVGVkxFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMWxCUXpsRExFMUJRVTBzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRlZCUVZVc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzSkZMRU5CUVVNN1VVRkRSQ3hMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEZGQlFWRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRaUVVOc1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVlVGQlZTeERRVU51UkR0blFrRkRSU3hSUVVGUkxFVkJRVVVzVFVGQlRTeERRVUZETEVWQlFVVTdaMEpCUTI1Q0xFZEJRVWNzUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnp0blFrRkRZaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdaMEpCUTJZc1YwRkJWeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZYTzJGQlF6bENMRVZCUTBRc1IwRkJSeXhKUVVGSkxFTkJRMUlzUTBGQlF6dFpRVU5HTEV0QlFVc3NUVUZCVFN4aFFVRmhMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETzJkQ1FVTm9SQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXh6UWtGQmMwSXNRMEZEY2tRc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGRFpDeGhRVUZoTEVWQlEySXNSMEZCUnl4SlFVRkpMRU5CUTFJc1EwRkJRenRaUVVOS0xFTkJRVU03VVVGRFNDeERRVUZETzFGQlJVUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEd0Q1FVRnJRaXhEUVVONlJDeE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVTlVMRkZCUVZFc1EwRkJReXhaUVVGWkxFVkJRM0pDTEVkQlFVY3NTVUZCU1N4RFFVTlNMRU5CUVVNN1VVRkRSaXhOUVVGTkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhWUVVGVkxFTkJRM3BETzFsQlEwVXNVVUZCVVN4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVGRk8xbEJRMjVDTEZkQlFWY3NSVUZCUlN4alFVRmpMRU5CUVVNc1JVRkJSVHRaUVVNNVFpeE5RVUZOTEVWQlFVVXNVMEZCVXl4RFFVRkRMRVZCUVVVN1dVRkRjRUlzVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4UFFVRlBPMWxCUXpWQ0xFOUJRVThzUlVGQlJTeFhRVUZYTEVOQlFVTXNSVUZCUlR0WlFVTjJRaXhYUVVGWExFVkJRVVVzU1VGQlNUdFRRVU5zUWl4RlFVTkVMRWRCUVVjc1NVRkJTU3hEUVVOU0xFTkJRVU03VVVGRFJpeE5RVUZOTEVsQlFVa3NRMEZCUXl3d1FrRkJNRUlzUTBGQlF5eHRRa0ZCYlVJc1EwRkRka1FzVFVGQlRTeERRVUZETEVWQlFVVXNSVUZEVkN4alFVRmpMRU5CUVVNc1JVRkJSU3hGUVVOcVFpeEhRVUZITEVsQlFVa3NRMEZEVWl4RFFVRkRPMUZCUlVZc1QwRkJUenRaUVVOTUxGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlR0WlFVTnVRaXhoUVVGaExFVkJRVVVzVjBGQlZ5eERRVUZETEVWQlFVVTdXVUZETjBJc1YwRkJWeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlEzSkNMR2RDUVVGblFpeEZRVUZGTEdOQlFXTXNRMEZCUXl4RlFVRkZPMU5CUTNCRExFTkJRVU03U1VGRFNpeERRVUZETzBOQlEwWTdRVUY2U0U4N1NVRkVUQ3hoUVVGaExFVkJRVVU3T3pzN2JVVkJlVWhtSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ2RISmhibk5oWTNScGIyNWhiQ0I5SUdaeWIyMGdYQ0l1TGk5MWRHbHNjMXdpTzF4dWFXMXdiM0owSUhSNWNHVWdleUJDYjI5MGMzUnlZWEJQY21kVmJtbDBMQ0JDYjI5MGMzUnlZWEJVWlcxd2JHRjBaU0I5SUdaeWIyMGdYQ0l1TGk5MGVYQmxjMXdpTzF4dWFXMXdiM0owSUhzZ1RXVnRZbVZ5YzJocGNGTjBZWFIxY3l3Z1UyTnZjR1ZMYVc1a0lIMGdabkp2YlNCY0lpNHVMM1I1Y0dWelhDSTdYRzVwYlhCdmNuUWdleUJVWlc1aGJuUlRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZkR1Z1WVc1MExuTmxjblpwWTJWY0lqdGNibWx0Y0c5eWRDQjdJRlJsYm1GdWRGQnliMlpwYkdWVFpYSjJhV05sSUgwZ1puSnZiU0JjSWk0dmRHVnVZVzUwTFhCeWIyWnBiR1V1YzJWeWRtbGpaVndpTzF4dWFXMXdiM0owSUhzZ1QzSm5WVzVwZEZObGNuWnBZMlVnZlNCbWNtOXRJRndpTGk5dmNtY3RkVzVwZEM1elpYSjJhV05sWENJN1hHNXBiWEJ2Y25RZ2V5QlBjbWRWYm1sMFVISnZabWxzWlZObGNuWnBZMlVnZlNCbWNtOXRJRndpTGk5dmNtY3RkVzVwZEMxd2NtOW1hV3hsTG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lGVnpaWEpUWlhKMmFXTmxJSDBnWm5KdmJTQmNJaTR2ZFhObGNpNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJVWlc1aGJuUk5aVzFpWlhKemFHbHdVMlZ5ZG1salpTQjlJR1p5YjIwZ1hDSXVMM1JsYm1GdWRDMXRaVzFpWlhKemFHbHdMbk5sY25acFkyVmNJanRjYm1sdGNHOXlkQ0I3SUZCeWFXNWphWEJoYkZObGNuWnBZMlVnZlNCbWNtOXRJRndpTGk5d2NtbHVZMmx3WVd3dWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dVR1Z5YldsemMybHZibE5sY25acFkyVWdmU0JtY205dElGd2lMaTl3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lGSnZiR1ZUWlhKMmFXTmxJSDBnWm5KdmJTQmNJaTR2Y205c1pTNXpaWEoyYVdObFhDSTdYRzVwYlhCdmNuUWdleUJTYjJ4bFVHVnliV2x6YzJsdmJsTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXliMnhsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dVbTlzWlVGemMybG5ibTFsYm5SVFpYSjJhV05sSUgwZ1puSnZiU0JjSWk0dmNtOXNaUzFoYzNOcFoyNXRaVzUwTG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNVRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZaV1ptWldOMGFYWmxMWEJsY20xcGMzTnBiMjR1YzJWeWRtbGpaVndpTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUW05dmRITjBjbUZ3VTJWeWRtbGpaU0I3WEc0Z0lIQnlhWFpoZEdVZ2RHVnVZVzUwVTJWeWRtbGpaU0E5SUc1bGR5QlVaVzVoYm5SVFpYSjJhV05sS0NrN1hHNGdJSEJ5YVhaaGRHVWdkR1Z1WVc1MFVISnZabWxzWlZObGNuWnBZMlVnUFNCdVpYY2dWR1Z1WVc1MFVISnZabWxzWlZObGNuWnBZMlVvS1R0Y2JpQWdjSEpwZG1GMFpTQnZjbWRWYm1sMFUyVnlkbWxqWlNBOUlHNWxkeUJQY21kVmJtbDBVMlZ5ZG1salpTZ3BPMXh1SUNCd2NtbDJZWFJsSUc5eVoxVnVhWFJRY205bWFXeGxVMlZ5ZG1salpTQTlJRzVsZHlCUGNtZFZibWwwVUhKdlptbHNaVk5sY25acFkyVW9LVHRjYmlBZ2NISnBkbUYwWlNCMWMyVnlVMlZ5ZG1salpTQTlJRzVsZHlCVmMyVnlVMlZ5ZG1salpTZ3BPMXh1SUNCd2NtbDJZWFJsSUcxbGJXSmxjbk5vYVhCVFpYSjJhV05sSUQwZ2JtVjNJRlJsYm1GdWRFMWxiV0psY25Ob2FYQlRaWEoyYVdObEtDazdYRzRnSUhCeWFYWmhkR1VnY0hKcGJtTnBjR0ZzVTJWeWRtbGpaU0E5SUc1bGR5QlFjbWx1WTJsd1lXeFRaWEoyYVdObEtDazdYRzRnSUhCeWFYWmhkR1VnY0dWeWJXbHpjMmx2YmxObGNuWnBZMlVnUFNCdVpYY2dVR1Z5YldsemMybHZibE5sY25acFkyVW9LVHRjYmlBZ2NISnBkbUYwWlNCeWIyeGxVMlZ5ZG1salpTQTlJRzVsZHlCU2IyeGxVMlZ5ZG1salpTZ3BPMXh1SUNCd2NtbDJZWFJsSUhKdmJHVlFaWEp0YVhOemFXOXVVMlZ5ZG1salpTQTlJRzVsZHlCU2IyeGxVR1Z5YldsemMybHZibE5sY25acFkyVW9LVHRjYmlBZ2NISnBkbUYwWlNCeWIyeGxRWE56YVdkdWJXVnVkRk5sY25acFkyVWdQU0J1WlhjZ1VtOXNaVUZ6YzJsbmJtMWxiblJUWlhKMmFXTmxLQ2s3WEc0Z0lIQnlhWFpoZEdVZ1pXWm1aV04wYVhabFVHVnliV2x6YzJsdmJsTmxjblpwWTJVZ1BTQnVaWGNnUldabVpXTjBhWFpsVUdWeWJXbHpjMmx2YmxObGNuWnBZMlVvS1R0Y2JseHVJQ0JBZEhKaGJuTmhZM1JwYjI1aGJDZ3BYRzRnSUdGemVXNWpJR0p2YjNSemRISmhjRlJsYm1GdWRFWnliMjFVWlcxd2JHRjBaU2hjYmlBZ0lDQjBaVzF3YkdGMFpUb2dRbTl2ZEhOMGNtRndWR1Z0Y0d4aGRHVXNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeDdYRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnp0Y2JpQWdJQ0J5YjI5MFQzSm5WVzVwZEVsa09pQnpkSEpwYm1jN1hHNGdJQ0FnYjNkdVpYSlZjMlZ5U1dRNklITjBjbWx1Wnp0Y2JpQWdJQ0J2ZDI1bGNsQnlhVzVqYVhCaGJFbGtPaUJ6ZEhKcGJtYzdYRzRnSUgwK0lIdGNiaUFnSUNCamIyNXpkQ0IwWlc1aGJuUWdQU0JoZDJGcGRDQjBhR2x6TG5SbGJtRnVkRk5sY25acFkyVXVZM0psWVhSbFZHVnVZVzUwS0Z4dUlDQWdJQ0FnZEdWdGNHeGhkR1V1ZEdWdVlXNTBMRnh1SUNBZ0lDQWdMaTR1WVhKbmMxeHVJQ0FnSUNrN1hHNGdJQ0FnYVdZZ0tIUmxiWEJzWVhSbExuUmxibUZ1ZEM1d2NtOW1hV3hsUzJWNUtTQjdYRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMblJsYm1GdWRGQnliMlpwYkdWVFpYSjJhV05sTG1OeVpXRjBaVkJ5YjJacGJHVW9YRzRnSUNBZ0lDQWdJSFJsYm1GdWRDNXBaQ3hjYmlBZ0lDQWdJQ0FnZEdWdGNHeGhkR1V1ZEdWdVlXNTBMbkJ5YjJacGJHVkxaWGtzWEc0Z0lDQWdJQ0FnSUhSbGJYQnNZWFJsTG5SbGJtRnVkQzV3Y205bWFXeGxUV1YwWVdSaGRHRXNYRzRnSUNBZ0lDQWdJQzR1TG1GeVozTmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnWTNKbFlYUmxUM0puVkhKbFpTQTlJR0Z6ZVc1aklDaGNiaUFnSUNBZ0lIQmhjbVZ1ZEVsa09pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQnZjbWRWYm1sME9pQkNiMjkwYzNSeVlYQlBjbWRWYm1sMFhHNGdJQ0FnS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCamNtVmhkR1ZrSUQxY2JpQWdJQ0FnSUNBZ2NHRnlaVzUwU1dRZ1BUMDlJSFZ1WkdWbWFXNWxaRnh1SUNBZ0lDQWdJQ0FnSUQ4Z1lYZGhhWFFnZEdocGN5NXZjbWRWYm1sMFUyVnlkbWxqWlM1amNtVmhkR1ZTYjI5MEtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMFpXNWhiblF1YVdRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUc5eVoxVnVhWFF1Ym1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2IzSm5WVzVwZEM1dFpYUmhaR0YwWVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYjNKblZXNXBkQzV3Y205bWFXeGxTMlY1TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0J2Y21kVmJtbDBMbTFsZEdGa1lYUmhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTVoY21kelhHNGdJQ0FnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ09pQmhkMkZwZENCMGFHbHpMbTl5WjFWdWFYUlRaWEoyYVdObExtTnlaV0YwWlVOb2FXeGtLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR1Z1WVc1MFNXUTZJSFJsYm1GdWRDNXBaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3WVhKbGJuUlBjbWRWYm1sMFNXUTZJSEJoY21WdWRFbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVoYldVNklHOXlaMVZ1YVhRdWJtRnRaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0WlhSaFpHRjBZVG9nYjNKblZXNXBkQzV0WlhSaFpHRjBZU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3Y205bWFXeGxTMlY1T2lCdmNtZFZibWwwTG5CeWIyWnBiR1ZMWlhrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISnZabWxzWlUxbGRHRmtZWFJoT2lCdmNtZFZibWwwTG0xbGRHRmtZWFJoTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR2xzWkNCdlppQnZjbWRWYm1sMExtTm9hV3hrY21WdUlEOC9JRnRkS1NCN1hHNGdJQ0FnSUNBZ0lHRjNZV2wwSUdOeVpXRjBaVTl5WjFSeVpXVW9ZM0psWVhSbFpDNXBaQ3dnWTJocGJHUXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHTnlaV0YwWldRN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdOdmJuTjBJSEp2YjNSUGNtZFZibWwwSUQwZ1lYZGhhWFFnWTNKbFlYUmxUM0puVkhKbFpTaDFibVJsWm1sdVpXUXNJSFJsYlhCc1lYUmxMbkp2YjNSUGNtZFZibWwwS1R0Y2JpQWdJQ0JqYjI1emRDQnZkMjVsY2lBOUlHRjNZV2wwSUhSb2FYTXVkWE5sY2xObGNuWnBZMlV1WTNKbFlYUmxWWE5sY2loY2JpQWdJQ0FnSUhSbGJYQnNZWFJsTG05M2JtVnlWWE5sY2l4Y2JpQWdJQ0FnSUM0dUxtRnlaM05jYmlBZ0lDQXBPMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXViV1Z0WW1WeWMyaHBjRk5sY25acFkyVXVZV1JrVlhObGNsUnZWR1Z1WVc1MEtGeHVJQ0FnSUNBZ2RHVnVZVzUwTG1sa0xGeHVJQ0FnSUNBZ2IzZHVaWEl1YVdRc1hHNGdJQ0FnSUNCTlpXMWlaWEp6YUdsd1UzUmhkSFZ6TGtGamRHbDJaU3hjYmlBZ0lDQWdJQzR1TG1GeVozTmNiaUFnSUNBcE8xeHVJQ0FnSUdOdmJuTjBJRzkzYm1WeVVISnBibU5wY0dGc0lEMGdZWGRoYVhRZ2RHaHBjeTV3Y21sdVkybHdZV3hUWlhKMmFXTmxMbWRsZEZWelpYSlFjbWx1WTJsd1lXd29YRzRnSUNBZ0lDQjBaVzVoYm5RdWFXUXNYRzRnSUNBZ0lDQnZkMjVsY2k1cFpDeGNiaUFnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCd1pYSnRhWE56YVc5dUlHOW1JSFJsYlhCc1lYUmxMbkJsY20xcGMzTnBiMjV6S1NCN1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxuQmxjbTFwYzNOcGIyNVRaWEoyYVdObExtTnlaV0YwWlZCbGNtMXBjM05wYjI0b2NHVnliV2x6YzJsdmJpd2dMaTR1WVhKbmN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2NtOXNaU0J2WmlCMFpXMXdiR0YwWlM1eWIyeGxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZM0psWVhSbFpGSnZiR1VnUFNCaGQyRnBkQ0IwYUdsekxuSnZiR1ZUWlhKMmFXTmxMbU55WldGMFpWSnZiR1VvWEc0Z0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBaVzVoYm5SSlpEb2dkR1Z1WVc1MExtbGtMRnh1SUNBZ0lDQWdJQ0FnSUd0bGVUb2djbTlzWlM1clpYa3NYRzRnSUNBZ0lDQWdJQ0FnYm1GdFpUb2djbTlzWlM1dVlXMWxMRnh1SUNBZ0lDQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dU9pQnliMnhsTG1SbGMyTnlhWEIwYVc5dUxGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0F1TGk1aGNtZHpYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J3WlhKdGFYTnphVzl1UzJWNUlHOW1JSEp2YkdVdWNHVnliV2x6YzJsdmJrdGxlWE1wSUh0Y2JpQWdJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXliMnhsVUdWeWJXbHpjMmx2YmxObGNuWnBZMlV1WVdSa1VHVnliV2x6YzJsdmJrdGxlVlJ2VW05c1pTaGNiaUFnSUNBZ0lDQWdJQ0JqY21WaGRHVmtVbTlzWlM1cFpDeGNiaUFnSUNBZ0lDQWdJQ0J3WlhKdGFYTnphVzl1UzJWNUxGeHVJQ0FnSUNBZ0lDQWdJQzR1TG1GeVozTmNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdmQyNWxjbEp2YkdVZ1BTQmhkMkZwZENCMGFHbHpMbkp2YkdWVFpYSjJhV05sTG1kbGRGUmxibUZ1ZEZKdmJHVkNlVXRsZVNoY2JpQWdJQ0FnSUhSbGJtRnVkQzVwWkN4Y2JpQWdJQ0FnSUhSbGJYQnNZWFJsTG05M2JtVnlVbTlzWlV0bGVTeGNiaUFnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FwTzF4dUlDQWdJR0YzWVdsMElIUm9hWE11Y205c1pVRnpjMmxuYm0xbGJuUlRaWEoyYVdObExtRnpjMmxuYmxKdmJHVW9YRzRnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJSFJsYm1GdWRFbGtPaUIwWlc1aGJuUXVhV1FzWEc0Z0lDQWdJQ0FnSUhCeWFXNWphWEJoYkVsa09pQnZkMjVsY2xCeWFXNWphWEJoYkM1cFpDeGNiaUFnSUNBZ0lDQWdjbTlzWlVsa09pQnZkMjVsY2xKdmJHVXVhV1FzWEc0Z0lDQWdJQ0FnSUhOamIzQmxTMmx1WkRvZ1UyTnZjR1ZMYVc1a0xrOXlaMVZ1YVhRc1hHNGdJQ0FnSUNBZ0lITmpiM0JsU1dRNklISnZiM1JQY21kVmJtbDBMbWxrTEZ4dUlDQWdJQ0FnSUNCcGJtaGxjbWwwUkc5M2Jqb2dkSEoxWlN4Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBdUxpNWhjbWR6WEc0Z0lDQWdLVHRjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbVZtWm1WamRHbDJaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxMbkpsWW5WcGJHUkdiM0pRY21sdVkybHdZV3dvWEc0Z0lDQWdJQ0IwWlc1aGJuUXVhV1FzWEc0Z0lDQWdJQ0J2ZDI1bGNsQnlhVzVqYVhCaGJDNXBaQ3hjYmlBZ0lDQWdJQzR1TG1GeVozTmNiaUFnSUNBcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUhSbGJtRnVkRWxrT2lCMFpXNWhiblF1YVdRc1hHNGdJQ0FnSUNCeWIyOTBUM0puVlc1cGRFbGtPaUJ5YjI5MFQzSm5WVzVwZEM1cFpDeGNiaUFnSUNBZ0lHOTNibVZ5VlhObGNrbGtPaUJ2ZDI1bGNpNXBaQ3hjYmlBZ0lDQWdJRzkzYm1WeVVISnBibU5wY0dGc1NXUTZJRzkzYm1WeVVISnBibU5wY0dGc0xtbGtMRnh1SUNBZ0lIMDdYRzRnSUgxY2JuMWNiaUpkZlE9PSJdfQ==
@@ -323,5 +323,5 @@ class CredentialService extends utils_js_1.BaseModelService {
323
323
  }
324
324
  }
325
325
  exports.CredentialService = CredentialService;
326
- //# sourceMappingURL=credential.service.js.map
327
- //# sourceMappingURL=credential.service.cjs.map
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvY3JlZGVudGlhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBSUwsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUNBQTRCO0FBQ3pELE9BQU8sRUFTTCxtQkFBbUIsR0FDcEIsc0NBQTJCO0FBQzVCLE9BQU8sRUFFTCxrQkFBa0IsR0FHbkIsc0JBQWlCO0FBQ2xCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsc0JBQWlCO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsd0NBQW1DO0FBb0R4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZ0JBQTRCO0lBR2pFOzs7T0FHRztJQUNILFlBQVksU0FBa0MsRUFBRTtRQUM5QyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBaUIsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxLQUFLLENBQUMsYUFBYTtRQUMzQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lB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WUFDakIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDM0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsU0FBUztZQUNiLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUNoQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxTQUFTO1lBQ2IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQ3JCLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYztZQUN6QyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztZQUMzQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQy9CLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDL0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1NBQ2hDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL25hbWVzcGFjZXMvc2VydmljZXMvY3JlZGVudGlhbFxuICogQHN1bW1hcnkgTmFtZXNwYWNlZCBjcmVkZW50aWFsIG1hbmFnZW1lbnQgc2VydmljZSBiYWNrZWQgYnkgdGhlIG1vZGVsIHNlY3JldCBzZXJ2aWNlLlxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIHRoZSBge0BsaW5rIENyZWRlbnRpYWxTZXJ2aWNlfWAsIHdoaWNoIG1hbmFnZXNcbiAqIGB7QGxpbmsgQ3JlZGVudGlhbH1gIG1ldGFkYXRhIHJvd3MgYW5kIHN0b3JlcyBlYWNoIGNyZWRlbnRpYWwncyBzZWNyZXRcbiAqIHZhbHVlLCBlbmNyeXB0ZWQsIGluIHRoZSBtb2RlbC1iYWNrZWQgc2VjcmV0IHNlcnZpY2UgKHNlZVxuICogYHtAbGluayBNb2RlbFNlY3JldFNlcnZpY2V9YCkuIFNlY3JldCBuYW1lcyBhcmUgZ2VuZXJhdGVkIGludGVybmFsbHlcbiAqIChgY3JlZGVudGlhbC08dXVpZD5gKSBhbmQgbmV2ZXIgZXhwb3NlZDsgdGhlIGNyZWRlbnRpYWwgcm93IHJlZmVyZW5jZXMgdGhlXG4gKiBzZWNyZXQgYnkgYHNlY3JldE5hbWVgLiBBbHNvIGRlZmluZXMgdGhlIHtAbGluayBDcmVkZW50aWFsU2VjcmV0U3RvcmV9XG4gKiBjb250cmFjdCBhbmQge0BsaW5rIENyZWRlbnRpYWxTZXJ2aWNlQ29uZmlnfSB1c2VkIHRvIGluamVjdCBhIGN1c3RvbVxuICogc2VjcmV0IHN0b3JlIG9yIHJlcG9zaXRvcnkuXG4gKi9cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7XG4gIENvbnRleHQsXG4gIENvbnRleHRMb2NrLFxuICBSZXBvc2l0b3J5LFxuICByZXNvbHZlVHJhbnNhY3Rpb25Mb2NrLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxTZWNyZXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlY3JldHMvbW9kZWxcIjtcbmltcG9ydCB7XG4gIERlbGV0ZVNlY3JldE9wdGlvbnMsXG4gIEV4aXN0c1NlY3JldE9wdGlvbnMsXG4gIFJvdGF0ZVNlY3JldE9wdGlvbnMsXG4gIFNlY3JldE5hbWUsXG4gIFNlY3JldFBheWxvYWQsXG4gIFNlY3JldFByb3ZpZGVyLFxuICBTZWNyZXRSZWZlcmVuY2UsXG4gIFN0b3JlU2VjcmV0T3B0aW9ucyxcbiAgbm9ybWFsaXplU2VjcmV0TmFtZSxcbn0gZnJvbSBcIi4uLy4uL3NlY3JldHMvY29yZVwiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlQ3JlZGVudGlhbElucHV0LFxuICBDcmVkZW50aWFsUHJvdmlkZXIsXG4gIENyZWRlbnRpYWxTdW1tYXJ5LFxuICBSb3RhdGVDcmVkZW50aWFsSW5wdXQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gXCIuLi9tb2RlbHMvY3JlZGVudGlhbC5tb2RlbFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNaW5pbWFsIHNlY3JldC1zdG9yZSBjb250cmFjdCByZXF1aXJlZCBieSB0aGUgY3JlZGVudGlhbCBzZXJ2aWNlXG4gKiBAc3VtbWFyeSBTdHJ1Y3R1cmFsIHN1YnNldCBvZiB0aGUgc2VjcmV0IHNlcnZpY2UgQVBJIHVzZWQgZm9yIGNyZWRlbnRpYWxcbiAqIHZhbHVlczsgYHJvdGF0ZWAgaXMgb3B0aW9uYWwg4oCUIHdoZW4gYWJzZW50LCByb3RhdGlvbiBmYWxscyBiYWNrIHRvIGFcbiAqIHJlLXN0b3JlIHVuZGVyIHRoZSBzYW1lIHNlY3JldCBuYW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxTZWNyZXRTdG9yZSB7XG4gIC8qKiBAZGVzY3JpcHRpb24gRml4ZWQgcHJvdmlkZXIgZGlzY3JpbWluYXRvciBvZiB0aGUgYmFja2luZyBpbXBsZW1lbnRhdGlvbi4gKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFNlY3JldFByb3ZpZGVyO1xuICAvKiogQGRlc2NyaXB0aW9uIFN0b3JlcyAob3Igb3ZlcndyaXRlcykgYSBuYW1lZCBzZWNyZXQgcGF5bG9hZC4gKi9cbiAgc3RvcmU8VCBleHRlbmRzIFNlY3JldFBheWxvYWQgPSBTZWNyZXRQYXlsb2FkPihcbiAgICBuYW1lOiBTZWNyZXROYW1lLFxuICAgIHZhbHVlOiBULFxuICAgIG9wdGlvbnM/OiBTdG9yZVNlY3JldE9wdGlvbnMsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxTZWNyZXRSZWZlcmVuY2U+O1xuICAvKiogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBzdG9yZWQgc2VjcmV0LiAqL1xuICBkZWxldGUoXG4gICAgbmFtZU9yUmVmOiBTZWNyZXROYW1lIHwgU2VjcmV0UmVmZXJlbmNlLFxuICAgIG9wdGlvbnM/OiBEZWxldGVTZWNyZXRPcHRpb25zLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBAZGVzY3JpcHRpb24gQ2hlY2tzIHdoZXRoZXIgYSBzZWNyZXQgZXhpc3RzLiAqL1xuICBleGlzdHMoXG4gICAgbmFtZU9yUmVmOiBTZWNyZXROYW1lIHwgU2VjcmV0UmVmZXJlbmNlLFxuICAgIG9wdGlvbnM/OiBFeGlzdHNTZWNyZXRPcHRpb25zLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBAZGVzY3JpcHRpb24gT3B0aW9uYWwgaW4tcGxhY2Ugcm90YXRpb24gb2YgYSBzdG9yZWQgc2VjcmV0IHZhbHVlLiAqL1xuICByb3RhdGU/KFxuICAgIG5hbWVPclJlZjogU2VjcmV0TmFtZSB8IFNlY3JldFJlZmVyZW5jZSxcbiAgICB2YWx1ZTogU2VjcmV0UGF5bG9hZCxcbiAgICBvcHRpb25zPzogUm90YXRlU2VjcmV0T3B0aW9ucyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFNlY3JldFJlZmVyZW5jZT47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEluamVjdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgY3JlZGVudGlhbCBzZXJ2aWNlXG4gKiBAc3VtbWFyeSBXaGVuIGBzZWNyZXRTZXJ2aWNlYCBpcyBvbWl0dGVkLCB0aGUgc2VydmljZSBsYXppbHkgYm9vdHMgYVxuICogYHtAbGluayBNb2RlbFNlY3JldFNlcnZpY2V9YCBvbiBmaXJzdCB1c2U7IHdoZW4gYHJlcG9zaXRvcnlgIGlzIG9taXR0ZWQsXG4gKiB0aGUgYmFzZSBgQmFzZU1vZGVsU2VydmljZWAgcmVwb3NpdG9yeSBmb3IgYHtAbGluayBDcmVkZW50aWFsfWAgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVkZW50aWFsU2VydmljZUNvbmZpZyB7XG4gIC8qKiBAZGVzY3JpcHRpb24gU2VjcmV0IHN0b3JlIGZvciBjcmVkZW50aWFsIHZhbHVlcyAobXVzdCBoYXZlIGBwcm92aWRlcjogXCJtb2RlbFwiYCkuICovXG4gIHNlY3JldFNlcnZpY2U/OiBDcmVkZW50aWFsU2VjcmV0U3RvcmU7XG4gIC8qKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBiYWNraW5nIHRoZSBgQ3JlZGVudGlhbGAgbWV0YWRhdGEgcm93cy4gKi9cbiAgcmVwb3NpdG9yeT86IFJlcG9zaXRvcnk8Q3JlZGVudGlhbCwgYW55Pjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFuYWdlcyBuYW1lc3BhY2VkIGNyZWRlbnRpYWxzIGFuZCB0aGVpciBlbmNyeXB0ZWQgc2VjcmV0IHZhbHVlc1xuICogQHN1bW1hcnkgRXh0ZW5kcyBgQmFzZU1vZGVsU2VydmljZTxDcmVkZW50aWFsPmAgdG8gY3JlYXRlLCByb3RhdGUsIHJlYWQsXG4gKiBsaXN0LCB1c2UtbWFyaywgYW5kIGRlbGV0ZSBjcmVkZW50aWFscy4gT24gY3JlYXRlLCB0aGUgc2VjcmV0IHZhbHVlIGlzXG4gKiBzdG9yZWQgdW5kZXIgYSBnZW5lcmF0ZWQgbmFtZSBmaXJzdCBhbmQgdGhlIG1ldGFkYXRhIHJvdyBzZWNvbmQ7IGlmIHRoZVxuICogcm93IGluc2VydCBmYWlscywgdGhlIHN0b3JlZCBzZWNyZXQgaXMgZm9yY2UtZGVsZXRlZCBzbyBubyBvcnBoYW5lZCBzZWNyZXRcbiAqIHJlbWFpbnMuIERlbGV0aW9uIG1pcnJvcnMgdGhhdDogdGhlIHJvdyBpcyByZW1vdmVkLCB0aGVuIHRoZSBzZWNyZXQgdmFsdWUuXG4gKiBUaGUgc2VjcmV0IHN0b3JlIG11c3QgcmVzb2x2ZSB0byBgcHJvdmlkZXI6IFwibW9kZWxcImAg4oCUIHVzZXIvcnVudGltZVxuICogY3JlZGVudGlhbHMgYWx3YXlzIGxpdmUgaW4gdGhlIG1vZGVsLWJhY2tlZCBzZWNyZXQgc2VydmljZS5cbiAqIEBjYXRlZ29yeSBOYW1lc3BhY2VzXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IENyZWRlbnRpYWxTZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9pbnRlZ3JhdGlvbnMvbmFtZXNwYWNlc1wiO1xuICpcbiAqIGNvbnN0IGNyZWRlbnRpYWxzID0gbmV3IENyZWRlbnRpYWxTZXJ2aWNlKCk7XG4gKiBjb25zdCBjcmVkZW50aWFsID0gYXdhaXQgY3JlZGVudGlhbHMuY3JlYXRlQ3JlZGVudGlhbCh7XG4gKiAgIHRlbmFudElkOiBcInRlbmFudC0xXCIsXG4gKiAgIG5hbWU6IFwiZGVwbG95LXRva2VuXCIsXG4gKiAgIGNyZWRlbnRpYWxUeXBlOiBcInRva2VuXCIsXG4gKiAgIHNlY3JldDogeyB2YWx1ZTogXCJzM2NyM3RcIiB9LFxuICogfSk7XG4gKiBhd2FpdCBjcmVkZW50aWFscy5yb3RhdGVDcmVkZW50aWFsKHtcbiAqICAgY3JlZGVudGlhbElkOiBjcmVkZW50aWFsLmlkLFxuICogICBzZWNyZXQ6IHsgdmFsdWU6IFwibjN3LXMzY3IzdFwiIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbFNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlPENyZWRlbnRpYWw+IHtcbiAgcHJpdmF0ZSBzZWNyZXRTZXJ2aWNlSW5zdGFuY2U/OiBDcmVkZW50aWFsU2VjcmV0U3RvcmU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIHRoZSBjcmVkZW50aWFsIHNlcnZpY2VcbiAgICogQHBhcmFtIHtDcmVkZW50aWFsU2VydmljZUNvbmZpZ30gW2NvbmZpZ10gLSBPcHRpb25hbCBzZWNyZXQgc3RvcmUgYW5kIHJlcG9zaXRvcnkgb3ZlcnJpZGVzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDcmVkZW50aWFsU2VydmljZUNvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIoQ3JlZGVudGlhbCk7XG4gICAgdGhpcy5zZWNyZXRTZXJ2aWNlSW5zdGFuY2UgPSBjb25maWcuc2VjcmV0U2VydmljZTtcbiAgICBpZiAoY29uZmlnLnJlcG9zaXRvcnkpIHtcbiAgICAgIHRoaXMuX3JlcG9zaXRvcnkgPSBjb25maWcucmVwb3NpdG9yeSBhcyBhbnk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXNvbHZlcyB0aGUgbW9kZWwtYmFja2VkIHNlY3JldCBzdG9yZSwgYm9vdGluZyBvbmUgbGF6aWx5XG4gICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGluamVjdGVkIHNlY3JldCBzZXJ2aWNlIG9yIGxhemlseSBib290cyBhIGZyZXNoXG4gICAqIGB7QGxpbmsgTW9kZWxTZWNyZXRTZXJ2aWNlfWA7IHJlamVjdHMgd2l0aCBhIHtAbGluayBWYWxpZGF0aW9uRXJyb3J9IHdoZW5cbiAgICogdGhlIHJlc29sdmVkIHN0b3JlJ3MgcHJvdmlkZXIgaXMgbm90IGBcIm1vZGVsXCJgLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVkZW50aWFsU2VjcmV0U3RvcmU+fSBUaGUgbW9kZWwtYmFja2VkIHNlY3JldCBzdG9yZS5cbiAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBXaGVuIHRoZSBpbmplY3RlZCBzdG9yZSBpcyBub3QgbW9kZWwtYmFja2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHNlY3JldFNlcnZpY2UoKTogUHJvbWlzZTxDcmVkZW50aWFsU2VjcmV0U3RvcmU+IHtcbiAgICBsZXQgc2VydmljZSA9IHRoaXMuc2VjcmV0U2VydmljZUluc3RhbmNlO1xuICAgIGlmICghc2VydmljZSkge1xuICAgICAgY29uc3QgY3JlYXRlZCA9IG5ldyBNb2RlbFNlY3JldFNlcnZpY2UoKTtcbiAgICAgIGF3YWl0IGNyZWF0ZWQuYm9vdCgpO1xuICAgICAgdGhpcy5zZWNyZXRTZXJ2aWNlSW5zdGFuY2UgPSBjcmVhdGVkO1xuICAgICAgc2VydmljZSA9IGNyZWF0ZWQ7XG4gICAgfVxuICAgIGlmIChzZXJ2aWNlLnByb3ZpZGVyICE9PSBcIm1vZGVsXCIpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIFwiQ3JlZGVudGlhbFNlcnZpY2Ugc3RvcmVzIHVzZXIvcnVudGltZSBjcmVkZW50aWFscyBpbiB0aGUgbW9kZWwtYmFja2VkIHNlY3JldCBzZXJ2aWNlXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIGEgY3JlZGVudGlhbCByb3cgYW5kIHN0b3JlcyBpdHMgc2VjcmV0IHZhbHVlXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0aGUgbmFtZSAodHJpbW1lZCwg4omkMjU1IGNoYXJzLCBgW0EtWmEtejAtOV1bQS1aYS16MC05Ll8tXSpgKSxcbiAgICogc3RvcmVzIHRoZSBzZWNyZXQgdW5kZXIgYSBnZW5lcmF0ZWQgYGNyZWRlbnRpYWwtPHV1aWQ+YCBuYW1lIHNjb3BlZCB0byB0aGVcbiAgICogc3VwcGxpZWQgdGVuYW50L29yZy11bml0L293bmVyLCB0aGVuIGluc2VydHMgdGhlIG1ldGFkYXRhIHJvdy4gSWYgdGhlIHJvd1xuICAgKiBpbnNlcnQgZmFpbHMsIHRoZSBqdXN0LXN0b3JlZCBzZWNyZXQgaXMgZm9yY2UtZGVsZXRlZCBiZWZvcmUgcmV0aHJvd2luZy5cbiAgICogQHBhcmFtIHtDcmVhdGVDcmVkZW50aWFsSW5wdXR9IGlucHV0IC0gQ3JlZGVudGlhbCBkZWZpbml0aW9uIChuYW1lLCB0eXBlLCBzZWNyZXQgdmFsdWUsIHNjb3BpbmcsIG1ldGFkYXRhKS5cbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAtIE9wdGlvbmFsIHRyYWlsaW5nIGRlY2FmIGBDb250ZXh0YCBmb3J3YXJkZWQgdG8gdGhlIHN0b3JlIGFuZCByZXBvc2l0b3J5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVkZW50aWFsPn0gVGhlIHBlcnNpc3RlZCBjcmVkZW50aWFsIHJvdy5cbiAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBXaGVuIHRoZSBuYW1lIGlzIGludmFsaWQuXG4gICAqL1xuICBhc3luYyBjcmVhdGVDcmVkZW50aWFsKFxuICAgIGlucHV0OiBDcmVhdGVDcmVkZW50aWFsSW5wdXQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxDcmVkZW50aWFsPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiY3JlYXRlQ3JlZGVudGlhbFwiLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuY3JlYXRlQ3JlZGVudGlhbCk7XG4gICAgY29uc3QgbmFtZSA9IGlucHV0Lm5hbWU/LnRyaW0oKTtcbiAgICBpZiAoIW5hbWUgfHwgbmFtZS5sZW5ndGggPiAyNTUgfHwgIS9eW0EtWmEtejAtOV1bQS1aYS16MC05Ll8tXSokLy50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBjcmVkZW50aWFsIG5hbWU6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQubmFtZSl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9nLnZlcmJvc2UoYENyZWF0aW5nIGNyZWRlbnRpYWwgJHtuYW1lfWApO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLnNlY3JldFNlcnZpY2UoKTtcbiAgICBjb25zdCBzZWNyZXROYW1lID0gbm9ybWFsaXplU2VjcmV0TmFtZShgY3JlZGVudGlhbC0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBhd2FpdCBzZXJ2aWNlLnN0b3JlKFxuICAgICAgc2VjcmV0TmFtZSxcbiAgICAgIGlucHV0LnNlY3JldCxcbiAgICAgIHtcbiAgICAgICAgdGVuYW50SWQ6IGlucHV0LnRlbmFudElkLFxuICAgICAgICBvcmdVbml0SWQ6IGlucHV0Lm9yZ1VuaXRJZCxcbiAgICAgICAgb3duZXJQcmluY2lwYWxJZDogaW5wdXQub3duZXJQcmluY2lwYWxJZCxcbiAgICAgIH0sXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlKFxuICAgICAgICB7XG4gICAgICAgICAgdGVuYW50OiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgICBvcmdVbml0OiBpbnB1dC5vcmdVbml0SWQsXG4gICAgICAgICAgb3duZXI6IGlucHV0Lm93bmVyUHJpbmNpcGFsSWQsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsVHlwZTogaW5wdXQuY3JlZGVudGlhbFR5cGUsXG4gICAgICAgICAgc2VjcmV0TmFtZTogcmVmZXJlbmNlLm5hbWUsXG4gICAgICAgICAgcHJvdmlkZXI6IENyZWRlbnRpYWxQcm92aWRlci5Nb2RlbCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogaW5wdXQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgbWV0YWRhdGE6IGlucHV0Lm1ldGFkYXRhLFxuICAgICAgICAgIGV4cGlyZXNBdDogaW5wdXQuZXhwaXJlc0F0LFxuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0gYXMgUGFydGlhbDxDcmVkZW50aWFsPixcbiAgICAgICAgLi4uY3R4QXJnc1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgc2VydmljZVxuICAgICAgICAuZGVsZXRlKHNlY3JldE5hbWUsIHsgZm9yY2U6IHRydWUgfSwgLi4uY3R4QXJncylcbiAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlcGxhY2VzIGEgY3JlZGVudGlhbCdzIHNlY3JldCB2YWx1ZVxuICAgKiBAc3VtbWFyeSBVc2VzIHRoZSBiYWNraW5nIHN0b3JlJ3MgYHJvdGF0ZWAgd2hlbiBhdmFpbGFibGU7IG90aGVyd2lzZVxuICAgKiByZS1zdG9yZXMgdGhlIHZhbHVlIHVuZGVyIHRoZSBleGlzdGluZyBzZWNyZXQgbmFtZSB3aXRoIHRoZSBzdXBwbGllZFxuICAgKiB2ZXJzaW9uIGFuZCB0aGUgY3JlZGVudGlhbCdzIHRlbmFudC9vcmctdW5pdC9vd25lciBzY29waW5nLiBUaGVcbiAgICogY3JlZGVudGlhbCByb3cncyBgdXBkYXRlZEF0YCBpcyByZWZyZXNoZWQgYWZ0ZXJ3YXJkcy5cbiAgICogQHBhcmFtIHtSb3RhdGVDcmVkZW50aWFsSW5wdXR9IGlucHV0IC0gQ3JlZGVudGlhbCBpZCwgbmV3IHNlY3JldCB2YWx1ZSwgYW5kIG9wdGlvbmFsIHZlcnNpb24uXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBPcHRpb25hbCB0cmFpbGluZyBkZWNhZiBgQ29udGV4dGAgZm9yd2FyZGVkIHRvIHRoZSBzdG9yZSBhbmQgcmVwb3NpdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Q3JlZGVudGlhbD59IFRoZSB1cGRhdGVkIGNyZWRlbnRpYWwgcm93LlxuICAgKi9cbiAgYXN5bmMgcm90YXRlQ3JlZGVudGlhbChcbiAgICBpbnB1dDogUm90YXRlQ3JlZGVudGlhbElucHV0LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Q3JlZGVudGlhbD4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInJvdGF0ZUNyZWRlbnRpYWxcIiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnJvdGF0ZUNyZWRlbnRpYWwpO1xuICAgIGxvZy52ZXJib3NlKGBSb3RhdGluZyBjcmVkZW50aWFsICR7aW5wdXQuY3JlZGVudGlhbElkfWApO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQoaW5wdXQuY3JlZGVudGlhbElkLCAuLi5jdHhBcmdzKTtcbiAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5zZWNyZXRTZXJ2aWNlKCk7XG4gICAgaWYgKHNlcnZpY2Uucm90YXRlKSB7XG4gICAgICBhd2FpdCBzZXJ2aWNlLnJvdGF0ZShcbiAgICAgICAgZXhpc3Rpbmcuc2VjcmV0TmFtZSxcbiAgICAgICAgaW5wdXQuc2VjcmV0LFxuICAgICAgICB7IG5ld1ZlcnNpb246IGlucHV0LnZlcnNpb24gfSxcbiAgICAgICAgLi4uY3R4QXJnc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgc2VydmljZS5zdG9yZShcbiAgICAgICAgZXhpc3Rpbmcuc2VjcmV0TmFtZSxcbiAgICAgICAgaW5wdXQuc2VjcmV0LFxuICAgICAgICB7XG4gICAgICAgICAgdmVyc2lvbjogaW5wdXQudmVyc2lvbixcbiAgICAgICAgICB0ZW5hbnRJZDogcmVsYXRpb25JZChleGlzdGluZy50ZW5hbnQpLFxuICAgICAgICAgIG9yZ1VuaXRJZDogZXhpc3Rpbmcub3JnVW5pdFxuICAgICAgICAgICAgPyByZWxhdGlvbklkKGV4aXN0aW5nLm9yZ1VuaXQpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBvd25lclByaW5jaXBhbElkOiBleGlzdGluZy5vd25lclxuICAgICAgICAgICAgPyByZWxhdGlvbklkKGV4aXN0aW5nLm93bmVyKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmN0eEFyZ3NcbiAgICAgICk7XG4gICAgfVxuICAgIGV4aXN0aW5nLnVwZGF0ZWRBdCA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGUoZXhpc3RpbmcsIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIGNyZWRlbnRpYWwgcm93IGJ5IGlkXG4gICAqIEBzdW1tYXJ5IFJ1bnMgdGhlIHJlYWQgaW5zaWRlIHRoZSBleHBsaWNpdCBgd2l0aGluVHJhbnNhY3Rpb25gIGJvdW5kYXJ5XG4gICAqIGluc3RlYWQgb2YgYEB0cmFuc2FjdGlvbmFsKClgOiBhIG1pc3NpbmcgdHJhaWxpbmcgYENvbnRleHRgIGlzIHN5bnRoZXNpemVkXG4gICAqIHZpYSBgbG9nQ3R4KGFyZ3MsIC4uLiwgdHJ1ZSlgLCB0aGVuIHRoZSBoZWxwZXIgcmV1c2VzIGFuIGluLWZsaWdodFxuICAgKiBgQ29udGV4dExvY2tgIG9yIG9wZW5zIGEgbmV3IG9uZSAoYHJlc29sdmVUcmFuc2FjdGlvbkxvY2tgICsgYGJlZ2luYCksXG4gICAqIHJvbGxpbmcgYmFjayBvbiBlcnJvciBhbmQgY29tbWl0dGluZyB3aGVuIHRoaXMgaXMgdGhlIG91dGVybW9zdCBmcmFtZS4gT25cbiAgICogYSBUeXBlT1JNLWJhY2tlZCByZXBvc2l0b3J5IHRoaXMgYmluZHMgdGhlIGNvbnRleHQncyBwcmluY2lwYWwgdG9cbiAgICogYGFwcC5wcmluY2lwYWxfaWRgIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRyYW5zYWN0aW9uIHNvIG5hbWVzcGFjZSBSTFNcbiAgICogYXBwbGllcyB0byB0aGUgcmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWRlbnRpYWxJZCAtIFRoZSBjcmVkZW50aWFsIGlkLlxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gT3B0aW9uYWwgdHJhaWxpbmcgZGVjYWYgYENvbnRleHRgIGZvcndhcmRlZCB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Q3JlZGVudGlhbD59IFRoZSBjcmVkZW50aWFsIHJvdy5cbiAgICovXG4gIGFzeW5jIGdldENyZWRlbnRpYWwoXG4gICAgY3JlZGVudGlhbElkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxDcmVkZW50aWFsPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eCwgY3R4QXJncyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJnZXRDcmVkZW50aWFsXCIsIHRydWUpXG4gICAgKS5mb3IodGhpcy5nZXRDcmVkZW50aWFsKTtcbiAgICBsb2cudmVyYm9zZShgUmVhZGluZyBjcmVkZW50aWFsICR7Y3JlZGVudGlhbElkfWApO1xuICAgIHJldHVybiB0aGlzLndpdGhpblRyYW5zYWN0aW9uKGN0eCwgKCkgPT5cbiAgICAgIHRoaXMucmVwby5yZWFkKGNyZWRlbnRpYWxJZCwgLi4uY3R4QXJncylcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0cyBhbGwgY3JlZGVudGlhbHMgYXMgc3VtbWFyaWVzIChubyBzZWNyZXQgbWF0ZXJpYWwpXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBPcHRpb25hbCB0cmFpbGluZyBkZWNhZiBgQ29udGV4dGAgZm9yd2FyZGVkIHRvIHRoZSByZXBvc2l0b3J5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVkZW50aWFsU3VtbWFyeVtdPn0gU3VtbWFyeSByZWNvcmRzIGZvciBldmVyeSBjcmVkZW50aWFsLlxuICAgKi9cbiAgYXN5bmMgbGlzdENyZWRlbnRpYWxzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxDcmVkZW50aWFsU3VtbWFyeVtdPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwibGlzdENyZWRlbnRpYWxzXCIsIHRydWUpXG4gICAgKS5mb3IodGhpcy5saXN0Q3JlZGVudGlhbHMpO1xuICAgIGxvZy52ZXJib3NlKFwiTGlzdGluZyBjcmVkZW50aWFsc1wiKTtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gYXdhaXQgdGhpcy5yZXBvXG4gICAgICAuc2VsZWN0KClcbiAgICAgIC5leGVjdXRlKC4uLmN0eEFyZ3MpO1xuICAgIHJldHVybiBjcmVkZW50aWFscy5tYXAoKGNyZWRlbnRpYWwpID0+IHRoaXMudG9TdW1tYXJ5KGNyZWRlbnRpYWwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3RhbXBzIGEgY3JlZGVudGlhbCdzIGBsYXN0VXNlZEF0YCB0aW1lc3RhbXBcbiAgICogQHN1bW1hcnkgUnVucyB0aGUgcmVhZCBhbmQgdGhlIHVwZGF0ZSBpbnNpZGUgb25lIGV4cGxpY2l0XG4gICAqIGB3aXRoaW5UcmFuc2FjdGlvbmAgYm91bmRhcnkgaW5zdGVhZCBvZiBgQHRyYW5zYWN0aW9uYWwoKWA6IGEgbWlzc2luZ1xuICAgKiB0cmFpbGluZyBgQ29udGV4dGAgaXMgc3ludGhlc2l6ZWQgdmlhIGBsb2dDdHgoYXJncywgLi4uLCB0cnVlKWAsIHRoZW4gdGhlXG4gICAqIGhlbHBlciByZXVzZXMgYW4gaW4tZmxpZ2h0IGBDb250ZXh0TG9ja2Agb3Igb3BlbnMgYSBuZXcgb25lXG4gICAqIChgcmVzb2x2ZVRyYW5zYWN0aW9uTG9ja2AgKyBgYmVnaW5gKSwgcm9sbGluZyBiYWNrIG9uIGVycm9yIGFuZCBjb21taXR0aW5nXG4gICAqIHdoZW4gdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IGZyYW1lLiBPbiBhIFR5cGVPUk0tYmFja2VkIHJlcG9zaXRvcnkgdGhpc1xuICAgKiBiaW5kcyB0aGUgY29udGV4dCdzIHByaW5jaXBhbCB0byBgYXBwLnByaW5jaXBhbF9pZGAgZm9yIHRoZSBkdXJhdGlvbiBvZlxuICAgKiB0aGUgdHJhbnNhY3Rpb24gc28gbmFtZXNwYWNlIFJMUyBhcHBsaWVzIHRvIGJvdGggc3RhdGVtZW50cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWRlbnRpYWxJZCAtIFRoZSBjcmVkZW50aWFsIGlkLlxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gT3B0aW9uYWwgdHJhaWxpbmcgZGVjYWYgYENvbnRleHRgIGZvcndhcmRlZCB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Q3JlZGVudGlhbD59IFRoZSB1cGRhdGVkIGNyZWRlbnRpYWwgcm93LlxuICAgKi9cbiAgYXN5bmMgbWFya0NyZWRlbnRpYWxVc2VkKFxuICAgIGNyZWRlbnRpYWxJZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8Q3JlZGVudGlhbD4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwibWFya0NyZWRlbnRpYWxVc2VkXCIsIHRydWUpXG4gICAgKS5mb3IodGhpcy5tYXJrQ3JlZGVudGlhbFVzZWQpO1xuICAgIGxvZy52ZXJib3NlKGBNYXJraW5nIGNyZWRlbnRpYWwgJHtjcmVkZW50aWFsSWR9IGFzIHVzZWRgKTtcbiAgICByZXR1cm4gdGhpcy53aXRoaW5UcmFuc2FjdGlvbihjdHgsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQoY3JlZGVudGlhbElkLCAuLi5jdHhBcmdzKTtcbiAgICAgIGV4aXN0aW5nLmxhc3RVc2VkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGUoZXhpc3RpbmcsIC4uLmN0eEFyZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWxldGVzIGEgY3JlZGVudGlhbCByb3cgYW5kIGl0cyBzdG9yZWQgc2VjcmV0IHZhbHVlXG4gICAqIEBzdW1tYXJ5IFJlbW92ZXMgdGhlIG1ldGFkYXRhIHJvdyBmaXJzdCwgdGhlbiBmb3JjZS1kZWxldGVzIHRoZVxuICAgKiByZWZlcmVuY2VkIHNlY3JldCBmcm9tIHRoZSBiYWNraW5nIHN0b3JlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3JlZGVudGlhbElkIC0gVGhlIGNyZWRlbnRpYWwgaWQuXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBPcHRpb25hbCB0cmFpbGluZyBkZWNhZiBgQ29udGV4dGAgZm9yd2FyZGVkIHRvIHRoZSByZXBvc2l0b3J5IGFuZCBzdG9yZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IFJlc29sdmVzIG9uY2UgdGhlIHJvdyBhbmQgc2VjcmV0IGFyZSByZW1vdmVkLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQ3JlZGVudGlhbChcbiAgICBjcmVkZW50aWFsSWQ6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJkZWxldGVDcmVkZW50aWFsXCIsIHRydWUpXG4gICAgKS5mb3IodGhpcy5kZWxldGVDcmVkZW50aWFsKTtcbiAgICBsb2cudmVyYm9zZShgRGVsZXRpbmcgY3JlZGVudGlhbCAke2NyZWRlbnRpYWxJZH1gKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHRoaXMucmVwby5yZWFkKGNyZWRlbnRpYWxJZCwgLi4uY3R4QXJncyk7XG4gICAgYXdhaXQgdGhpcy5yZXBvLmRlbGV0ZShjcmVkZW50aWFsSWQsIC4uLmN0eEFyZ3MpO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLnNlY3JldFNlcnZpY2UoKTtcbiAgICBhd2FpdCBzZXJ2aWNlLmRlbGV0ZShleGlzdGluZy5zZWNyZXROYW1lLCB7IGZvcmNlOiB0cnVlIH0sIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSdW5zIGFuIG9wZXJhdGlvbiBpbnNpZGUgYW4gZXhwbGljaXQgYWRhcHRlciB0cmFuc2FjdGlvbiBib3VuZGFyeVxuICAgKiBAc3VtbWFyeSBNaXJyb3JzIGNvcmUncyBgQHRyYW5zYWN0aW9uYWwoKWAgcHJveHkgd2l0aG91dCB0aGUgZGVjb3JhdG9yOlxuICAgKiByZXVzZXMgdGhlIGBDb250ZXh0TG9ja2AgYWxyZWFkeSBjYWNoZWQgb24gdGhlIGNvbnRleHQgKGB0cmFuc2FjdGlvbkxvY2tgKVxuICAgKiB3aGVuIGEgdHJhbnNhY3Rpb24gaXMgaW4gZmxpZ2h0LCBvdGhlcndpc2UgcmVzb2x2ZXMgYSBmcmVzaCBsb2NrIHZpYVxuICAgKiBgcmVzb2x2ZVRyYW5zYWN0aW9uTG9ja2AgYW5kIGBiZWdpbmBzIGl0LCBjYWNoaW5nIGl0IG9uIHRoZSBjb250ZXh0IHNvXG4gICAqIG5lc3RlZCBmcmFtZXMgc2hhcmUgaXQuIERlcHRoIGlzIHRyYWNrZWQgc28gbmVzdGVkIGNhbGxzIG9ubHkgZGVjcmVtZW50O1xuICAgKiB0aGUgb3V0ZXJtb3N0IGZyYW1lIGNvbW1pdHMuIE9uIGVycm9yIHRoZSBmcmFtZSByb2xscyBiYWNrIOKAlCB1bmxlc3MgYW5cbiAgICogaW5uZXIgZnJhbWUgYWxyZWFkeSBlbmRlZCB0aGUgdHJhbnNhY3Rpb24g4oCUIGFuZCByZXRocm93cyB0aGUgb3JpZ2luYWxcbiAgICogZXJyb3IuIFdoZW4gdGhlIHJlcG9zaXRvcnkgZXhwb3NlcyBubyBhZGFwdGVyIGB0cmFuc2FjdGlvbkxvY2tgIChlLmcuXG4gICAqIG5vbi10cmFuc2FjdGlvbmFsIGFkYXB0ZXJzIG9yIHJlcG9zaXRvcnkgZG91YmxlcyksIHRoZSBvcGVyYXRpb24gcnVuc1xuICAgKiBkaXJlY3RseSB3aXRoIG5vIHRyYW5zYWN0aW9uLiBJZiBgY3R4YCBpcyBgdW5kZWZpbmVkYCwgYSBzdGFuZGFsb25lXG4gICAqIGNvbnRleHQgaXMgc3ludGhlc2l6ZWQgdmlhIGB0aGlzLmNvbnRleHRgLlxuICAgKiBAdGVtcGxhdGUgUiAtIFRoZSBvcGVyYXRpb24ncyByZXN1bHQgdHlwZS5cbiAgICogQHBhcmFtIHtDb250ZXh0PGFueT4gfCB1bmRlZmluZWR9IGN0eCAtIFRoZSBjYWxsZXIncyBkZWNhZiBgQ29udGV4dGAsIGlmIG9uZSB3YXMgcmVzb2x2ZWQgb3Igc3ludGhlc2l6ZWQuXG4gICAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTxSPn0gb3BlcmF0aW9uIC0gVGhlIHJlcG9zaXRvcnkgd29yayB0byBydW4gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8Uj59IFRoZSBvcGVyYXRpb24ncyByZXN1bHQsIGNvbW1pdHRlZCB3aGVuIG91dGVybW9zdC5cbiAgICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gV2hlbiB0aGUgb3V0ZXJtb3N0IGNvbW1pdCBmYWlscy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgd2l0aGluVHJhbnNhY3Rpb248Uj4oXG4gICAgY3R4OiBDb250ZXh0PGFueT4gfCB1bmRlZmluZWQsXG4gICAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFI+XG4gICk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IGFkYXB0ZXIgPSAodGhpcy5yZXBvIGFzIGFueSk/LmFkYXB0ZXI7XG4gICAgaWYgKCFhZGFwdGVyIHx8IHR5cGVvZiBhZGFwdGVyLnRyYW5zYWN0aW9uTG9jayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gb3BlcmF0aW9uKCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHQgPSBjdHggPz8gKGF3YWl0IHRoaXMuY29udGV4dChcImNyZWRlbnRpYWxUcmFuc2FjdGlvblwiLCB7fSkpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gY29udGV4dC5nZXRPclVuZGVmaW5lZChcInRyYW5zYWN0aW9uTG9ja1wiKSBhc1xuICAgICAgfCBDb250ZXh0TG9ja1xuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbG9jayA9IGV4aXN0aW5nID8/IHJlc29sdmVUcmFuc2FjdGlvbkxvY2sodGhpcy5yZXBvKTtcbiAgICBsb2NrLmRlcHRoKys7XG4gICAgaWYgKCFleGlzdGluZykge1xuICAgICAgYXdhaXQgbG9jay5iZWdpbihjb250ZXh0KTtcbiAgICAgIGNvbnRleHQuY2FjaGUucHV0KFwidHJhbnNhY3Rpb25Mb2NrXCIsIGxvY2spO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0OiBSO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBvcGVyYXRpb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc3QgYWxyZWFkeUVuZGVkID0gbG9jay5kZXB0aCA9PT0gMDtcbiAgICAgIGxvY2suZGVwdGggPSAwO1xuICAgICAgaWYgKCFhbHJlYWR5RW5kZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBsb2NrLnJvbGxiYWNrKGVycm9yIGFzIEVycm9yLCBjb250ZXh0KTtcbiAgICAgICAgfSBjYXRjaCAocm9sbGJhY2tFcnJvcjogdW5rbm93bikge1xuICAgICAgICAgIHZvaWQgcm9sbGJhY2tFcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGxvY2suZGVwdGgtLTtcbiAgICBpZiAobG9jay5kZXB0aCA9PT0gMCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbG9jay5jb21taXQoY29udGV4dCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgRmFpbGVkIHRvIGNvbW1pdCB0cmFuc2FjdGlvbjogJHtlcnJvcn1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWFwcyBhIGNyZWRlbnRpYWwgcm93IHRvIGl0cyBBUEkgc3VtbWFyeSBzaGFwZVxuICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0ZW5hbnQvb3JnLXVuaXQvb3duZXIgcmVsYXRpb25zIHRvIHRoZWlyIGlkcyBhbmQgc3RyaXBzXG4gICAqIGFsbCBzZWNyZXQgbWF0ZXJpYWwgKHRoZSBzZWNyZXQgdmFsdWUgaXMgbmV2ZXIgZXhwb3NlZCkuXG4gICAqIEBwYXJhbSB7Q3JlZGVudGlhbH0gY3JlZGVudGlhbCAtIFRoZSBjcmVkZW50aWFsIHJvdy5cbiAgICogQHJldHVybnMge0NyZWRlbnRpYWxTdW1tYXJ5fSBUaGUgc3VtbWFyeSByZWNvcmQuXG4gICAqL1xuICBwcml2YXRlIHRvU3VtbWFyeShjcmVkZW50aWFsOiBDcmVkZW50aWFsKTogQ3JlZGVudGlhbFN1bW1hcnkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogY3JlZGVudGlhbC5pZCxcbiAgICAgIHRlbmFudElkOiByZWxhdGlvbklkKGNyZWRlbnRpYWwudGVuYW50KSxcbiAgICAgIG9yZ1VuaXRJZDogY3JlZGVudGlhbC5vcmdVbml0XG4gICAgICAgID8gcmVsYXRpb25JZChjcmVkZW50aWFsLm9yZ1VuaXQpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3duZXJQcmluY2lwYWxJZDogY3JlZGVudGlhbC5vd25lclxuICAgICAgICA/IHJlbGF0aW9uSWQoY3JlZGVudGlhbC5vd25lcilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBuYW1lOiBjcmVkZW50aWFsLm5hbWUsXG4gICAgICBjcmVkZW50aWFsVHlwZTogY3JlZGVudGlhbC5jcmVkZW50aWFsVHlwZSxcbiAgICAgIHByb3ZpZGVyOiBjcmVkZW50aWFsLnByb3ZpZGVyLFxuICAgICAgZGVzY3JpcHRpb246IGNyZWRlbnRpYWwuZGVzY3JpcHRpb24sXG4gICAgICBlbmFibGVkOiBjcmVkZW50aWFsLmVuYWJsZWQsXG4gICAgICBtZXRhZGF0YTogY3JlZGVudGlhbC5tZXRhZGF0YSxcbiAgICAgIGV4cGlyZXNBdDogY3JlZGVudGlhbC5leHBpcmVzQXQsXG4gICAgICBsYXN0VXNlZEF0OiBjcmVkZW50aWFsLmxhc3RVc2VkQXQsXG4gICAgICBjcmVhdGVkQXQ6IGNyZWRlbnRpYWwuY3JlYXRlZEF0LFxuICAgICAgdXBkYXRlZEF0OiBjcmVkZW50aWFsLnVwZGF0ZWRBdCxcbiAgICB9O1xuICB9XG59XG4iXX0=
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlZGVudGlhbC5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsNkNBQXlDO0FBQ3pDLHlDQUF5RDtBQUN6RCwyREFBeUU7QUFDekUsNkRBQW9FO0FBQ3BFLDREQUFxRTtBQUNyRSw0Q0FBb0Q7QUFDcEQsNENBQTZEO0FBQzdELHlFQUE2RDtBQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLDJCQUFnQjtJQUNuRDs7O09BR0c7SUFDSCxZQUFZLE1BQU0sR0FBRyxFQUFFO1FBQ25CLEtBQUssQ0FBQyxnQ0FBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2YsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksNkJBQWtCLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksK0JBQWUsQ0FBQyxzRkFBc0YsQ0FBQyxDQUFDO1FBQ3RILENBQUM7UUFDRCxP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QUMsQ0FBQyxTQUFTO1lBQ2YsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQ3JCLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYztZQUN6QyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztZQUMzQixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQy9CLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7WUFDL0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1NBQ2xDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFqUkQsOENBaVJDO0FBQ0QsczZqQ0FBczZqQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbmFtZXNwYWNlcy9zZXJ2aWNlcy9jcmVkZW50aWFsXG4gKiBAc3VtbWFyeSBOYW1lc3BhY2VkIGNyZWRlbnRpYWwgbWFuYWdlbWVudCBzZXJ2aWNlIGJhY2tlZCBieSB0aGUgbW9kZWwgc2VjcmV0IHNlcnZpY2UuXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgdGhlIGB7QGxpbmsgQ3JlZGVudGlhbFNlcnZpY2V9YCwgd2hpY2ggbWFuYWdlc1xuICogYHtAbGluayBDcmVkZW50aWFsfWAgbWV0YWRhdGEgcm93cyBhbmQgc3RvcmVzIGVhY2ggY3JlZGVudGlhbCdzIHNlY3JldFxuICogdmFsdWUsIGVuY3J5cHRlZCwgaW4gdGhlIG1vZGVsLWJhY2tlZCBzZWNyZXQgc2VydmljZSAoc2VlXG4gKiBge0BsaW5rIE1vZGVsU2VjcmV0U2VydmljZX1gKS4gU2VjcmV0IG5hbWVzIGFyZSBnZW5lcmF0ZWQgaW50ZXJuYWxseVxuICogKGBjcmVkZW50aWFsLTx1dWlkPmApIGFuZCBuZXZlciBleHBvc2VkOyB0aGUgY3JlZGVudGlhbCByb3cgcmVmZXJlbmNlcyB0aGVcbiAqIHNlY3JldCBieSBgc2VjcmV0TmFtZWAuIEFsc28gZGVmaW5lcyB0aGUge0BsaW5rIENyZWRlbnRpYWxTZWNyZXRTdG9yZX1cbiAqIGNvbnRyYWN0IGFuZCB7QGxpbmsgQ3JlZGVudGlhbFNlcnZpY2VDb25maWd9IHVzZWQgdG8gaW5qZWN0IGEgY3VzdG9tXG4gKiBzZWNyZXQgc3RvcmUgb3IgcmVwb3NpdG9yeS5cbiAqL1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVRyYW5zYWN0aW9uTG9jaywgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxTZWNyZXRTZXJ2aWNlIH0gZnJvbSBcIi4vLi4vLi4vc2VjcmV0cy9tb2RlbC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplU2VjcmV0TmFtZSwgfSBmcm9tIFwiLi8uLi8uLi9zZWNyZXRzL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IENyZWRlbnRpYWxQcm92aWRlciwgfSBmcm9tIFwiLi8uLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSBcIi4vLi4vbW9kZWxzL2NyZWRlbnRpYWwubW9kZWwuanNcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIE1hbmFnZXMgbmFtZXNwYWNlZCBjcmVkZW50aWFscyBhbmQgdGhlaXIgZW5jcnlwdGVkIHNlY3JldCB2YWx1ZXNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgYEJhc2VNb2RlbFNlcnZpY2U8Q3JlZGVudGlhbD5gIHRvIGNyZWF0ZSwgcm90YXRlLCByZWFkLFxuICogbGlzdCwgdXNlLW1hcmssIGFuZCBkZWxldGUgY3JlZGVudGlhbHMuIE9uIGNyZWF0ZSwgdGhlIHNlY3JldCB2YWx1ZSBpc1xuICogc3RvcmVkIHVuZGVyIGEgZ2VuZXJhdGVkIG5hbWUgZmlyc3QgYW5kIHRoZSBtZXRhZGF0YSByb3cgc2Vjb25kOyBpZiB0aGVcbiAqIHJvdyBpbnNlcnQgZmFpbHMsIHRoZSBzdG9yZWQgc2VjcmV0IGlzIGZvcmNlLWRlbGV0ZWQgc28gbm8gb3JwaGFuZWQgc2VjcmV0XG4gKiByZW1haW5zLiBEZWxldGlvbiBtaXJyb3JzIHRoYXQ6IHRoZSByb3cgaXMgcmVtb3ZlZCwgdGhlbiB0aGUgc2VjcmV0IHZhbHVlLlxuICogVGhlIHNlY3JldCBzdG9yZSBtdXN0IHJlc29sdmUgdG8gYHByb3ZpZGVyOiBcIm1vZGVsXCJgIOKAlCB1c2VyL3J1bnRpbWVcbiAqIGNyZWRlbnRpYWxzIGFsd2F5cyBsaXZlIGluIHRoZSBtb2RlbC1iYWNrZWQgc2VjcmV0IHNlcnZpY2UuXG4gKiBAY2F0ZWdvcnkgTmFtZXNwYWNlc1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDcmVkZW50aWFsU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvaW50ZWdyYXRpb25zL25hbWVzcGFjZXNcIjtcbiAqXG4gKiBjb25zdCBjcmVkZW50aWFscyA9IG5ldyBDcmVkZW50aWFsU2VydmljZSgpO1xuICogY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IGNyZWRlbnRpYWxzLmNyZWF0ZUNyZWRlbnRpYWwoe1xuICogICB0ZW5hbnRJZDogXCJ0ZW5hbnQtMVwiLFxuICogICBuYW1lOiBcImRlcGxveS10b2tlblwiLFxuICogICBjcmVkZW50aWFsVHlwZTogXCJ0b2tlblwiLFxuICogICBzZWNyZXQ6IHsgdmFsdWU6IFwiczNjcjN0XCIgfSxcbiAqIH0pO1xuICogYXdhaXQgY3JlZGVudGlhbHMucm90YXRlQ3JlZGVudGlhbCh7XG4gKiAgIGNyZWRlbnRpYWxJZDogY3JlZGVudGlhbC5pZCxcbiAqICAgc2VjcmV0OiB7IHZhbHVlOiBcIm4zdy1zM2NyM3RcIiB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENyZWRlbnRpYWxTZXJ2aWNlIGV4dGVuZHMgQmFzZU1vZGVsU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgdGhlIGNyZWRlbnRpYWwgc2VydmljZVxuICAgICAqIEBwYXJhbSB7Q3JlZGVudGlhbFNlcnZpY2VDb25maWd9IFtjb25maWddIC0gT3B0aW9uYWwgc2VjcmV0IHN0b3JlIGFuZCByZXBvc2l0b3J5IG92ZXJyaWRlcy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgICAgICBzdXBlcihDcmVkZW50aWFsKTtcbiAgICAgICAgdGhpcy5zZWNyZXRTZXJ2aWNlSW5zdGFuY2UgPSBjb25maWcuc2VjcmV0U2VydmljZTtcbiAgICAgICAgaWYgKGNvbmZpZy5yZXBvc2l0b3J5KSB7XG4gICAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5ID0gY29uZmlnLnJlcG9zaXRvcnk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlc29sdmVzIHRoZSBtb2RlbC1iYWNrZWQgc2VjcmV0IHN0b3JlLCBib290aW5nIG9uZSBsYXppbHlcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBpbmplY3RlZCBzZWNyZXQgc2VydmljZSBvciBsYXppbHkgYm9vdHMgYSBmcmVzaFxuICAgICAqIGB7QGxpbmsgTW9kZWxTZWNyZXRTZXJ2aWNlfWA7IHJlamVjdHMgd2l0aCBhIHtAbGluayBWYWxpZGF0aW9uRXJyb3J9IHdoZW5cbiAgICAgKiB0aGUgcmVzb2x2ZWQgc3RvcmUncyBwcm92aWRlciBpcyBub3QgYFwibW9kZWxcImAuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Q3JlZGVudGlhbFNlY3JldFN0b3JlPn0gVGhlIG1vZGVsLWJhY2tlZCBzZWNyZXQgc3RvcmUuXG4gICAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBXaGVuIHRoZSBpbmplY3RlZCBzdG9yZSBpcyBub3QgbW9kZWwtYmFja2VkLlxuICAgICAqL1xuICAgIGFzeW5jIHNlY3JldFNlcnZpY2UoKSB7XG4gICAgICAgIGxldCBzZXJ2aWNlID0gdGhpcy5zZWNyZXRTZXJ2aWNlSW5zdGFuY2U7XG4gICAgICAgIGlmICghc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgY3JlYXRlZCA9IG5ldyBNb2RlbFNlY3JldFNlcnZpY2UoKTtcbiAgICAgICAgICAgIGF3YWl0IGNyZWF0ZWQuYm9vdCgpO1xuICAgICAgICAgICAgdGhpcy5zZWNyZXRTZXJ2aWNlSW5zdGFuY2UgPSBjcmVhdGVkO1xuICAgICAgICAgICAgc2VydmljZSA9IGNyZWF0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcnZpY2UucHJvdmlkZXIgIT09IFwibW9kZWxcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIkNyZWRlbnRpYWxTZXJ2aWNlIHN0b3JlcyB1c2VyL3J1bnRpbWUgY3JlZGVudGlhbHMgaW4gdGhlIG1vZGVsLWJhY2tlZCBzZWNyZXQgc2VydmljZVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VydmljZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBjcmVkZW50aWFsIHJvdyBhbmQgc3RvcmVzIGl0cyBzZWNyZXQgdmFsdWVcbiAgICAgKiBAc3VtbWFyeSBWYWxpZGF0ZXMgdGhlIG5hbWUgKHRyaW1tZWQsIOKJpDI1NSBjaGFycywgYFtBLVphLXowLTldW0EtWmEtejAtOS5fLV0qYCksXG4gICAgICogc3RvcmVzIHRoZSBzZWNyZXQgdW5kZXIgYSBnZW5lcmF0ZWQgYGNyZWRlbnRpYWwtPHV1aWQ+YCBuYW1lIHNjb3BlZCB0byB0aGVcbiAgICAgKiBzdXBwbGllZCB0ZW5hbnQvb3JnLXVuaXQvb3duZXIsIHRoZW4gaW5zZXJ0cyB0aGUgbWV0YWRhdGEgcm93LiBJZiB0aGUgcm93XG4gICAgICogaW5zZXJ0IGZhaWxzLCB0aGUganVzdC1zdG9yZWQgc2VjcmV0IGlzIGZvcmNlLWRlbGV0ZWQgYmVmb3JlIHJldGhyb3dpbmcuXG4gICAgICogQHBhcmFtIHtDcmVhdGVDcmVkZW50aWFsSW5wdXR9IGlucHV0IC0gQ3JlZGVudGlhbCBkZWZpbml0aW9uIChuYW1lLCB0eXBlLCBzZWNyZXQgdmFsdWUsIHNjb3BpbmcsIG1ldGFkYXRhKS5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gT3B0aW9uYWwgdHJhaWxpbmcgZGVjYWYgYENvbnRleHRgIGZvcndhcmRlZCB0byB0aGUgc3RvcmUgYW5kIHJlcG9zaXRvcnkuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Q3JlZGVudGlhbD59IFRoZSBwZXJzaXN0ZWQgY3JlZGVudGlhbCByb3cuXG4gICAgICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfSBXaGVuIHRoZSBuYW1lIGlzIGludmFsaWQuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQ3JlZGVudGlhbChpbnB1dCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFwiY3JlYXRlQ3JlZGVudGlhbFwiLCB0cnVlKSkuZm9yKHRoaXMuY3JlYXRlQ3JlZGVudGlhbCk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBpbnB1dC5uYW1lPy50cmltKCk7XG4gICAgICAgIGlmICghbmFtZSB8fCBuYW1lLmxlbmd0aCA+IDI1NSB8fCAhL15bQS1aYS16MC05XVtBLVphLXowLTkuXy1dKiQvLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JlZGVudGlhbCBuYW1lOiAke0pTT04uc3RyaW5naWZ5KGlucHV0Lm5hbWUpfWApO1xuICAgICAgICB9XG4gICAgICAgIGxvZy52ZXJib3NlKGBDcmVhdGluZyBjcmVkZW50aWFsICR7bmFtZX1gKTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuc2VjcmV0U2VydmljZSgpO1xuICAgICAgICBjb25zdCBzZWNyZXROYW1lID0gbm9ybWFsaXplU2VjcmV0TmFtZShgY3JlZGVudGlhbC0ke3JhbmRvbVVVSUQoKX1gKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXdhaXQgc2VydmljZS5zdG9yZShzZWNyZXROYW1lLCBpbnB1dC5zZWNyZXQsIHtcbiAgICAgICAgICAgIHRlbmFudElkOiBpbnB1dC50ZW5hbnRJZCxcbiAgICAgICAgICAgIG9yZ1VuaXRJZDogaW5wdXQub3JnVW5pdElkLFxuICAgICAgICAgICAgb3duZXJQcmluY2lwYWxJZDogaW5wdXQub3duZXJQcmluY2lwYWxJZCxcbiAgICAgICAgfSwgLi4uY3R4QXJncyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIHRlbmFudDogaW5wdXQudGVuYW50SWQsXG4gICAgICAgICAgICAgICAgb3JnVW5pdDogaW5wdXQub3JnVW5pdElkLFxuICAgICAgICAgICAgICAgIG93bmVyOiBpbnB1dC5vd25lclByaW5jaXBhbElkLFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IGlucHV0LmNyZWRlbnRpYWxUeXBlLFxuICAgICAgICAgICAgICAgIHNlY3JldE5hbWU6IHJlZmVyZW5jZS5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBDcmVkZW50aWFsUHJvdmlkZXIuTW9kZWwsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlucHV0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBpbnB1dC5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBleHBpcmVzQXQ6IGlucHV0LmV4cGlyZXNBdCxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSwgLi4uY3R4QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCBzZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmRlbGV0ZShzZWNyZXROYW1lLCB7IGZvcmNlOiB0cnVlIH0sIC4uLmN0eEFyZ3MpXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVwbGFjZXMgYSBjcmVkZW50aWFsJ3Mgc2VjcmV0IHZhbHVlXG4gICAgICogQHN1bW1hcnkgVXNlcyB0aGUgYmFja2luZyBzdG9yZSdzIGByb3RhdGVgIHdoZW4gYXZhaWxhYmxlOyBvdGhlcndpc2VcbiAgICAgKiByZS1zdG9yZXMgdGhlIHZhbHVlIHVuZGVyIHRoZSBleGlzdGluZyBzZWNyZXQgbmFtZSB3aXRoIHRoZSBzdXBwbGllZFxuICAgICAqIHZlcnNpb24gYW5kIHRoZSBjcmVkZW50aWFsJ3MgdGVuYW50L29yZy11bml0L293bmVyIHNjb3BpbmcuIFRoZVxuICAgICAqIGNyZWRlbnRpYWwgcm93J3MgYHVwZGF0ZWRBdGAgaXMgcmVmcmVzaGVkIGFmdGVyd2FyZHMuXG4gICAgICogQHBhcmFtIHtSb3RhdGVDcmVkZW50aWFsSW5wdXR9IGlucHV0IC0gQ3JlZGVudGlhbCBpZCwgbmV3IHNlY3JldCB2YWx1ZSwgYW5kIG9wdGlvbmFsIHZlcnNpb24uXG4gICAgICogQHBhcmFtIHthbnlbXX0gYXJncyAtIE9wdGlvbmFsIHRyYWlsaW5nIGRlY2FmIGBDb250ZXh0YCBmb3J3YXJkZWQgdG8gdGhlIHN0b3JlIGFuZCByZXBvc2l0b3J5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPENyZWRlbnRpYWw+fSBUaGUgdXBkYXRlZCBjcmVkZW50aWFsIHJvdy5cbiAgICAgKi9cbiAgICBhc3luYyByb3RhdGVDcmVkZW50aWFsKGlucHV0LCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJyb3RhdGVDcmVkZW50aWFsXCIsIHRydWUpKS5mb3IodGhpcy5yb3RhdGVDcmVkZW50aWFsKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYFJvdGF0aW5nIGNyZWRlbnRpYWwgJHtpbnB1dC5jcmVkZW50aWFsSWR9YCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQoaW5wdXQuY3JlZGVudGlhbElkLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuc2VjcmV0U2VydmljZSgpO1xuICAgICAgICBpZiAoc2VydmljZS5yb3RhdGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHNlcnZpY2Uucm90YXRlKGV4aXN0aW5nLnNlY3JldE5hbWUsIGlucHV0LnNlY3JldCwgeyBuZXdWZXJzaW9uOiBpbnB1dC52ZXJzaW9uIH0sIC4uLmN0eEFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2VydmljZS5zdG9yZShleGlzdGluZy5zZWNyZXROYW1lLCBpbnB1dC5zZWNyZXQsIHtcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBpbnB1dC52ZXJzaW9uLFxuICAgICAgICAgICAgICAgIHRlbmFudElkOiByZWxhdGlvbklkKGV4aXN0aW5nLnRlbmFudCksXG4gICAgICAgICAgICAgICAgb3JnVW5pdElkOiBleGlzdGluZy5vcmdVbml0XG4gICAgICAgICAgICAgICAgICAgID8gcmVsYXRpb25JZChleGlzdGluZy5vcmdVbml0KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBvd25lclByaW5jaXBhbElkOiBleGlzdGluZy5vd25lclxuICAgICAgICAgICAgICAgICAgICA/IHJlbGF0aW9uSWQoZXhpc3Rpbmcub3duZXIpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSwgLi4uY3R4QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZXhpc3RpbmcudXBkYXRlZEF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGUoZXhpc3RpbmcsIC4uLmN0eEFyZ3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVhZHMgYSBjcmVkZW50aWFsIHJvdyBieSBpZFxuICAgICAqIEBzdW1tYXJ5IFJ1bnMgdGhlIHJlYWQgaW5zaWRlIHRoZSBleHBsaWNpdCBgd2l0aGluVHJhbnNhY3Rpb25gIGJvdW5kYXJ5XG4gICAgICogaW5zdGVhZCBvZiBgQHRyYW5zYWN0aW9uYWwoKWA6IGEgbWlzc2luZyB0cmFpbGluZyBgQ29udGV4dGAgaXMgc3ludGhlc2l6ZWRcbiAgICAgKiB2aWEgYGxvZ0N0eChhcmdzLCAuLi4sIHRydWUpYCwgdGhlbiB0aGUgaGVscGVyIHJldXNlcyBhbiBpbi1mbGlnaHRcbiAgICAgKiBgQ29udGV4dExvY2tgIG9yIG9wZW5zIGEgbmV3IG9uZSAoYHJlc29sdmVUcmFuc2FjdGlvbkxvY2tgICsgYGJlZ2luYCksXG4gICAgICogcm9sbGluZyBiYWNrIG9uIGVycm9yIGFuZCBjb21taXR0aW5nIHdoZW4gdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IGZyYW1lLiBPblxuICAgICAqIGEgVHlwZU9STS1iYWNrZWQgcmVwb3NpdG9yeSB0aGlzIGJpbmRzIHRoZSBjb250ZXh0J3MgcHJpbmNpcGFsIHRvXG4gICAgICogYGFwcC5wcmluY2lwYWxfaWRgIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRyYW5zYWN0aW9uIHNvIG5hbWVzcGFjZSBSTFNcbiAgICAgKiBhcHBsaWVzIHRvIHRoZSByZWFkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVkZW50aWFsSWQgLSBUaGUgY3JlZGVudGlhbCBpZC5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gT3B0aW9uYWwgdHJhaWxpbmcgZGVjYWYgYENvbnRleHRgIGZvcndhcmRlZCB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVkZW50aWFsPn0gVGhlIGNyZWRlbnRpYWwgcm93LlxuICAgICAqL1xuICAgIGFzeW5jIGdldENyZWRlbnRpYWwoY3JlZGVudGlhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImdldENyZWRlbnRpYWxcIiwgdHJ1ZSkpLmZvcih0aGlzLmdldENyZWRlbnRpYWwpO1xuICAgICAgICBsb2cudmVyYm9zZShgUmVhZGluZyBjcmVkZW50aWFsICR7Y3JlZGVudGlhbElkfWApO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoaW5UcmFuc2FjdGlvbihjdHgsICgpID0+IHRoaXMucmVwby5yZWFkKGNyZWRlbnRpYWxJZCwgLi4uY3R4QXJncykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdHMgYWxsIGNyZWRlbnRpYWxzIGFzIHN1bW1hcmllcyAobm8gc2VjcmV0IG1hdGVyaWFsKVxuICAgICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBPcHRpb25hbCB0cmFpbGluZyBkZWNhZiBgQ29udGV4dGAgZm9yd2FyZGVkIHRvIHRoZSByZXBvc2l0b3J5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPENyZWRlbnRpYWxTdW1tYXJ5W10+fSBTdW1tYXJ5IHJlY29yZHMgZm9yIGV2ZXJ5IGNyZWRlbnRpYWwuXG4gICAgICovXG4gICAgYXN5bmMgbGlzdENyZWRlbnRpYWxzKC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImxpc3RDcmVkZW50aWFsc1wiLCB0cnVlKSkuZm9yKHRoaXMubGlzdENyZWRlbnRpYWxzKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoXCJMaXN0aW5nIGNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IHRoaXMucmVwb1xuICAgICAgICAgICAgLnNlbGVjdCgpXG4gICAgICAgICAgICAuZXhlY3V0ZSguLi5jdHhBcmdzKTtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzLm1hcCgoY3JlZGVudGlhbCkgPT4gdGhpcy50b1N1bW1hcnkoY3JlZGVudGlhbCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU3RhbXBzIGEgY3JlZGVudGlhbCdzIGBsYXN0VXNlZEF0YCB0aW1lc3RhbXBcbiAgICAgKiBAc3VtbWFyeSBSdW5zIHRoZSByZWFkIGFuZCB0aGUgdXBkYXRlIGluc2lkZSBvbmUgZXhwbGljaXRcbiAgICAgKiBgd2l0aGluVHJhbnNhY3Rpb25gIGJvdW5kYXJ5IGluc3RlYWQgb2YgYEB0cmFuc2FjdGlvbmFsKClgOiBhIG1pc3NpbmdcbiAgICAgKiB0cmFpbGluZyBgQ29udGV4dGAgaXMgc3ludGhlc2l6ZWQgdmlhIGBsb2dDdHgoYXJncywgLi4uLCB0cnVlKWAsIHRoZW4gdGhlXG4gICAgICogaGVscGVyIHJldXNlcyBhbiBpbi1mbGlnaHQgYENvbnRleHRMb2NrYCBvciBvcGVucyBhIG5ldyBvbmVcbiAgICAgKiAoYHJlc29sdmVUcmFuc2FjdGlvbkxvY2tgICsgYGJlZ2luYCksIHJvbGxpbmcgYmFjayBvbiBlcnJvciBhbmQgY29tbWl0dGluZ1xuICAgICAqIHdoZW4gdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IGZyYW1lLiBPbiBhIFR5cGVPUk0tYmFja2VkIHJlcG9zaXRvcnkgdGhpc1xuICAgICAqIGJpbmRzIHRoZSBjb250ZXh0J3MgcHJpbmNpcGFsIHRvIGBhcHAucHJpbmNpcGFsX2lkYCBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAgICogdGhlIHRyYW5zYWN0aW9uIHNvIG5hbWVzcGFjZSBSTFMgYXBwbGllcyB0byBib3RoIHN0YXRlbWVudHMuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNyZWRlbnRpYWxJZCAtIFRoZSBjcmVkZW50aWFsIGlkLlxuICAgICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBPcHRpb25hbCB0cmFpbGluZyBkZWNhZiBgQ29udGV4dGAgZm9yd2FyZGVkIHRvIHRoZSByZXBvc2l0b3J5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPENyZWRlbnRpYWw+fSBUaGUgdXBkYXRlZCBjcmVkZW50aWFsIHJvdy5cbiAgICAgKi9cbiAgICBhc3luYyBtYXJrQ3JlZGVudGlhbFVzZWQoY3JlZGVudGlhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcIm1hcmtDcmVkZW50aWFsVXNlZFwiLCB0cnVlKSkuZm9yKHRoaXMubWFya0NyZWRlbnRpYWxVc2VkKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYE1hcmtpbmcgY3JlZGVudGlhbCAke2NyZWRlbnRpYWxJZH0gYXMgdXNlZGApO1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoaW5UcmFuc2FjdGlvbihjdHgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQoY3JlZGVudGlhbElkLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgICAgIGV4aXN0aW5nLmxhc3RVc2VkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGUoZXhpc3RpbmcsIC4uLmN0eEFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBjcmVkZW50aWFsIHJvdyBhbmQgaXRzIHN0b3JlZCBzZWNyZXQgdmFsdWVcbiAgICAgKiBAc3VtbWFyeSBSZW1vdmVzIHRoZSBtZXRhZGF0YSByb3cgZmlyc3QsIHRoZW4gZm9yY2UtZGVsZXRlcyB0aGVcbiAgICAgKiByZWZlcmVuY2VkIHNlY3JldCBmcm9tIHRoZSBiYWNraW5nIHN0b3JlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVkZW50aWFsSWQgLSBUaGUgY3JlZGVudGlhbCBpZC5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gT3B0aW9uYWwgdHJhaWxpbmcgZGVjYWYgYENvbnRleHRgIGZvcndhcmRlZCB0byB0aGUgcmVwb3NpdG9yeSBhbmQgc3RvcmUuXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IFJlc29sdmVzIG9uY2UgdGhlIHJvdyBhbmQgc2VjcmV0IGFyZSByZW1vdmVkLlxuICAgICAqL1xuICAgIGFzeW5jIGRlbGV0ZUNyZWRlbnRpYWwoY3JlZGVudGlhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJkZWxldGVDcmVkZW50aWFsXCIsIHRydWUpKS5mb3IodGhpcy5kZWxldGVDcmVkZW50aWFsKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYERlbGV0aW5nIGNyZWRlbnRpYWwgJHtjcmVkZW50aWFsSWR9YCk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXBvLnJlYWQoY3JlZGVudGlhbElkLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXBvLmRlbGV0ZShjcmVkZW50aWFsSWQsIC4uLmN0eEFyZ3MpO1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5zZWNyZXRTZXJ2aWNlKCk7XG4gICAgICAgIGF3YWl0IHNlcnZpY2UuZGVsZXRlKGV4aXN0aW5nLnNlY3JldE5hbWUsIHsgZm9yY2U6IHRydWUgfSwgLi4uY3R4QXJncyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSdW5zIGFuIG9wZXJhdGlvbiBpbnNpZGUgYW4gZXhwbGljaXQgYWRhcHRlciB0cmFuc2FjdGlvbiBib3VuZGFyeVxuICAgICAqIEBzdW1tYXJ5IE1pcnJvcnMgY29yZSdzIGBAdHJhbnNhY3Rpb25hbCgpYCBwcm94eSB3aXRob3V0IHRoZSBkZWNvcmF0b3I6XG4gICAgICogcmV1c2VzIHRoZSBgQ29udGV4dExvY2tgIGFscmVhZHkgY2FjaGVkIG9uIHRoZSBjb250ZXh0IChgdHJhbnNhY3Rpb25Mb2NrYClcbiAgICAgKiB3aGVuIGEgdHJhbnNhY3Rpb24gaXMgaW4gZmxpZ2h0LCBvdGhlcndpc2UgcmVzb2x2ZXMgYSBmcmVzaCBsb2NrIHZpYVxuICAgICAqIGByZXNvbHZlVHJhbnNhY3Rpb25Mb2NrYCBhbmQgYGJlZ2luYHMgaXQsIGNhY2hpbmcgaXQgb24gdGhlIGNvbnRleHQgc29cbiAgICAgKiBuZXN0ZWQgZnJhbWVzIHNoYXJlIGl0LiBEZXB0aCBpcyB0cmFja2VkIHNvIG5lc3RlZCBjYWxscyBvbmx5IGRlY3JlbWVudDtcbiAgICAgKiB0aGUgb3V0ZXJtb3N0IGZyYW1lIGNvbW1pdHMuIE9uIGVycm9yIHRoZSBmcmFtZSByb2xscyBiYWNrIOKAlCB1bmxlc3MgYW5cbiAgICAgKiBpbm5lciBmcmFtZSBhbHJlYWR5IGVuZGVkIHRoZSB0cmFuc2FjdGlvbiDigJQgYW5kIHJldGhyb3dzIHRoZSBvcmlnaW5hbFxuICAgICAqIGVycm9yLiBXaGVuIHRoZSByZXBvc2l0b3J5IGV4cG9zZXMgbm8gYWRhcHRlciBgdHJhbnNhY3Rpb25Mb2NrYCAoZS5nLlxuICAgICAqIG5vbi10cmFuc2FjdGlvbmFsIGFkYXB0ZXJzIG9yIHJlcG9zaXRvcnkgZG91YmxlcyksIHRoZSBvcGVyYXRpb24gcnVuc1xuICAgICAqIGRpcmVjdGx5IHdpdGggbm8gdHJhbnNhY3Rpb24uIElmIGBjdHhgIGlzIGB1bmRlZmluZWRgLCBhIHN0YW5kYWxvbmVcbiAgICAgKiBjb250ZXh0IGlzIHN5bnRoZXNpemVkIHZpYSBgdGhpcy5jb250ZXh0YC5cbiAgICAgKiBAdGVtcGxhdGUgUiAtIFRoZSBvcGVyYXRpb24ncyByZXN1bHQgdHlwZS5cbiAgICAgKiBAcGFyYW0ge0NvbnRleHQ8YW55PiB8IHVuZGVmaW5lZH0gY3R4IC0gVGhlIGNhbGxlcidzIGRlY2FmIGBDb250ZXh0YCwgaWYgb25lIHdhcyByZXNvbHZlZCBvciBzeW50aGVzaXplZC5cbiAgICAgKiBAcGFyYW0geygpID0+IFByb21pc2U8Uj59IG9wZXJhdGlvbiAtIFRoZSByZXBvc2l0b3J5IHdvcmsgdG8gcnVuIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Uj59IFRoZSBvcGVyYXRpb24ncyByZXN1bHQsIGNvbW1pdHRlZCB3aGVuIG91dGVybW9zdC5cbiAgICAgKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBXaGVuIHRoZSBvdXRlcm1vc3QgY29tbWl0IGZhaWxzLlxuICAgICAqL1xuICAgIGFzeW5jIHdpdGhpblRyYW5zYWN0aW9uKGN0eCwgb3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLnJlcG8/LmFkYXB0ZXI7XG4gICAgICAgIGlmICghYWRhcHRlciB8fCB0eXBlb2YgYWRhcHRlci50cmFuc2FjdGlvbkxvY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBjdHggPz8gKGF3YWl0IHRoaXMuY29udGV4dChcImNyZWRlbnRpYWxUcmFuc2FjdGlvblwiLCB7fSkpO1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGNvbnRleHQuZ2V0T3JVbmRlZmluZWQoXCJ0cmFuc2FjdGlvbkxvY2tcIik7XG4gICAgICAgIGNvbnN0IGxvY2sgPSBleGlzdGluZyA/PyByZXNvbHZlVHJhbnNhY3Rpb25Mb2NrKHRoaXMucmVwbyk7XG4gICAgICAgIGxvY2suZGVwdGgrKztcbiAgICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICAgICAgYXdhaXQgbG9jay5iZWdpbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQuY2FjaGUucHV0KFwidHJhbnNhY3Rpb25Mb2NrXCIsIGxvY2spO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBvcGVyYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGFscmVhZHlFbmRlZCA9IGxvY2suZGVwdGggPT09IDA7XG4gICAgICAgICAgICBsb2NrLmRlcHRoID0gMDtcbiAgICAgICAgICAgIGlmICghYWxyZWFkeUVuZGVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbG9jay5yb2xsYmFjayhlcnJvciwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChyb2xsYmFja0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHZvaWQgcm9sbGJhY2tFcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBsb2NrLmRlcHRoLS07XG4gICAgICAgIGlmIChsb2NrLmRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGxvY2suY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBjb21taXQgdHJhbnNhY3Rpb246ICR7ZXJyb3J9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1hcHMgYSBjcmVkZW50aWFsIHJvdyB0byBpdHMgQVBJIHN1bW1hcnkgc2hhcGVcbiAgICAgKiBAc3VtbWFyeSBSZXNvbHZlcyB0ZW5hbnQvb3JnLXVuaXQvb3duZXIgcmVsYXRpb25zIHRvIHRoZWlyIGlkcyBhbmQgc3RyaXBzXG4gICAgICogYWxsIHNlY3JldCBtYXRlcmlhbCAodGhlIHNlY3JldCB2YWx1ZSBpcyBuZXZlciBleHBvc2VkKS5cbiAgICAgKiBAcGFyYW0ge0NyZWRlbnRpYWx9IGNyZWRlbnRpYWwgLSBUaGUgY3JlZGVudGlhbCByb3cuXG4gICAgICogQHJldHVybnMge0NyZWRlbnRpYWxTdW1tYXJ5fSBUaGUgc3VtbWFyeSByZWNvcmQuXG4gICAgICovXG4gICAgdG9TdW1tYXJ5KGNyZWRlbnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBjcmVkZW50aWFsLmlkLFxuICAgICAgICAgICAgdGVuYW50SWQ6IHJlbGF0aW9uSWQoY3JlZGVudGlhbC50ZW5hbnQpLFxuICAgICAgICAgICAgb3JnVW5pdElkOiBjcmVkZW50aWFsLm9yZ1VuaXRcbiAgICAgICAgICAgICAgICA/IHJlbGF0aW9uSWQoY3JlZGVudGlhbC5vcmdVbml0KVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3duZXJQcmluY2lwYWxJZDogY3JlZGVudGlhbC5vd25lclxuICAgICAgICAgICAgICAgID8gcmVsYXRpb25JZChjcmVkZW50aWFsLm93bmVyKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmFtZTogY3JlZGVudGlhbC5uYW1lLFxuICAgICAgICAgICAgY3JlZGVudGlhbFR5cGU6IGNyZWRlbnRpYWwuY3JlZGVudGlhbFR5cGUsXG4gICAgICAgICAgICBwcm92aWRlcjogY3JlZGVudGlhbC5wcm92aWRlcixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjcmVkZW50aWFsLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZW5hYmxlZDogY3JlZGVudGlhbC5lbmFibGVkLFxuICAgICAgICAgICAgbWV0YWRhdGE6IGNyZWRlbnRpYWwubWV0YWRhdGEsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IGNyZWRlbnRpYWwuZXhwaXJlc0F0LFxuICAgICAgICAgICAgbGFzdFVzZWRBdDogY3JlZGVudGlhbC5sYXN0VXNlZEF0LFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBjcmVkZW50aWFsLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHVwZGF0ZWRBdDogY3JlZGVudGlhbC51cGRhdGVkQXQsXG4gICAgICAgIH07XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTNKbFpHVnVkR2xoYkM1elpYSjJhV05sTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwyNWhiV1Z6Y0dGalpYTXZjMlZ5ZG1salpYTXZZM0psWkdWdWRHbGhiQzV6WlhKMmFXTmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3T3pzN096dEhRVmRITzBGQlEwZ3NUMEZCVHl4RlFVRkZMRlZCUVZVc1JVRkJSU3hOUVVGTkxHRkJRV0VzUTBGQlF6dEJRVU42UXl4UFFVRlBMRVZCU1V3c2MwSkJRWE5DTEVkQlEzWkNMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEZUVJc1QwRkJUeXhGUVVGRkxHRkJRV0VzUlVGQlJTeGxRVUZsTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVU42UlN4UFFVRlBMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNkVU5CUVRSQ08wRkJRM3BFTEU5QlFVOHNSVUZUVEN4dFFrRkJiVUlzUjBGRGNFSXNjME5CUVRKQ08wRkJRelZDTEU5QlFVOHNSVUZGVEN4clFrRkJhMElzUjBGSGJrSXNjMEpCUVdsQ08wRkJRMnhDTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeFZRVUZWTEVWQlFVVXNjMEpCUVdsQ08wRkJRM2hFTEU5QlFVOHNSVUZCUlN4VlFVRlZMRVZCUVVVc2QwTkJRVzFETzBGQmIwUjRSRHM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdSMEV3UWtjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYVVKQlFXdENMRk5CUVZFc1owSkJRVFJDTzBsQlIycEZPenM3VDBGSFJ6dEpRVU5JTEZsQlFWa3NVMEZCYTBNc1JVRkJSVHRSUVVNNVF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRiRUlzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdXVUZEZEVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNWVUZCYVVJc1EwRkJRenRSUVVNNVF5eERRVUZETzBsQlEwZ3NRMEZCUXp0SlFVVkVPenM3T3pzN08wOUJUMGM3U1VGRFR5eExRVUZMTEVOQlFVTXNZVUZCWVR0UlFVTXpRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU03VVVGRGVrTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRMklzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4clFrRkJhMElzUlVGQlJTeERRVUZETzFsQlEzcERMRTFCUVUwc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzFsQlEzSkNMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4UFFVRlBMRU5CUVVNN1dVRkRja01zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0UlFVTndRaXhEUVVGRE8xRkJRMFFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVVUZCVVN4TFFVRkxMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNTVUZCU1N4bFFVRmxMRU5CUTNaQ0xITkdRVUZ6Uml4RFFVTjJSaXhEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVU5FTEU5QlFVOHNUMEZCVHl4RFFVRkRPMGxCUTJwQ0xFTkJRVU03U1VGRlJEczdPenM3T3pzN096dFBRVlZITzBsQlEwZ3NTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVU53UWl4TFFVRTBRaXhGUVVNMVFpeEhRVUZITEVsQlFWYzdVVUZGWkN4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEVOQlEzWkNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzU1VGQlNTeERRVUZETEVOQlEyeEVMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRemRDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExEaENRVUU0UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6ZEZMRTFCUVUwc1NVRkJTU3hsUVVGbExFTkJRM1pDTERSQ1FVRTBRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVONlJDeERRVUZETzFGQlEwb3NRMEZCUXp0UlFVTkVMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zZFVKQlFYVkNMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRE0wTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdVVUZETTBNc1RVRkJUU3hWUVVGVkxFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1kwRkJZeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY2tVc1RVRkJUU3hUUVVGVExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVTnVReXhWUVVGVkxFVkJRMVlzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZEV2p0WlFVTkZMRkZCUVZFc1JVRkJSU3hMUVVGTExFTkJRVU1zVVVGQlVUdFpRVU40UWl4VFFVRlRMRVZCUVVVc1MwRkJTeXhEUVVGRExGTkJRVk03V1VGRE1VSXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN5eERRVUZETEdkQ1FVRm5RanRUUVVONlF5eEZRVU5FTEVkQlFVY3NUMEZCVHl4RFFVTllMRU5CUVVNN1VVRkRSaXhKUVVGSkxFTkJRVU03V1VGRFNDeFBRVUZQTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkRkRUk3WjBKQlEwVXNUVUZCVFN4RlFVRkZMRXRCUVVzc1EwRkJReXhSUVVGUk8yZENRVU4wUWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExGTkJRVk03WjBKQlEzaENMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zWjBKQlFXZENPMmRDUVVNM1FpeEpRVUZKTzJkQ1FVTktMR05CUVdNc1JVRkJSU3hMUVVGTExFTkJRVU1zWTBGQll6dG5Ra0ZEY0VNc1ZVRkJWU3hGUVVGRkxGTkJRVk1zUTBGQlF5eEpRVUZKTzJkQ1FVTXhRaXhSUVVGUkxFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1MwRkJTenRuUWtGRGJFTXNWMEZCVnl4RlFVRkZMRXRCUVVzc1EwRkJReXhYUVVGWE8yZENRVU01UWl4UlFVRlJMRVZCUVVVc1MwRkJTeXhEUVVGRExGRkJRVkU3WjBKQlEzaENMRk5CUVZNc1JVRkJSU3hMUVVGTExFTkJRVU1zVTBGQlV6dG5Ra0ZETVVJc1QwRkJUeXhGUVVGRkxFbEJRVWs3WVVGRFV5eEZRVU40UWl4SFFVRkhMRTlCUVU4c1EwRkRXQ3hEUVVGRE8xRkJRMG9zUTBGQlF6dFJRVUZETEU5QlFVOHNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRaaXhOUVVGTkxFOUJRVTg3YVVKQlExWXNUVUZCVFN4RFFVRkRMRlZCUVZVc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJRenRwUWtGREwwTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFsQlF6RkNMRTFCUVUwc1MwRkJTeXhEUVVGRE8xRkJRMlFzUTBGQlF6dEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdPenM3TzA5QlUwYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVOQlEzQkNMRXRCUVRSQ0xFVkJRelZDTEVkQlFVY3NTVUZCVnp0UlFVVmtMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzVDBGQlR5eEZRVUZGTEVkQlFVY3NRMEZEZGtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4clFrRkJhMElzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZEYkVRc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRE4wSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXgxUWtGQmRVSXNTMEZCU3l4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGVrUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEZEVVc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNN1VVRkRNME1zU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1dVRkRia0lzVFVGQlRTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVTnNRaXhSUVVGUkxFTkJRVU1zVlVGQlZTeEZRVU51UWl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVOYUxFVkJRVVVzVlVGQlZTeEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1JVRkROMElzUjBGQlJ5eFBRVUZQTEVOQlExZ3NRMEZCUXp0UlFVTktMRU5CUVVNN1lVRkJUU3hEUVVGRE8xbEJRMDRzVFVGQlRTeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVTnFRaXhSUVVGUkxFTkJRVU1zVlVGQlZTeEZRVU51UWl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVOYU8yZENRVU5GTEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTnlReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEU5QlFVODdiMEpCUTNwQ0xFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJRenR2UWtGRE9VSXNRMEZCUXl4RFFVRkRMRk5CUVZNN1owSkJRMklzWjBKQlFXZENMRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXM3YjBKQlF6bENMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXp0dlFrRkROVUlzUTBGQlF5eERRVUZETEZOQlFWTTdZVUZEWkN4RlFVTkVMRWRCUVVjc1QwRkJUeXhEUVVOWUxFTkJRVU03VVVGRFNpeERRVUZETzFGQlEwUXNVVUZCVVN4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETzFGQlEyaERMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGFFUXNRMEZCUXp0SlFVVkVPenM3T3pzN096czdPenM3TzA5QllVYzdTVUZEU0N4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVOcVFpeFpRVUZ2UWl4RlFVTndRaXhIUVVGSExFbEJRVmM3VVVGRlpDeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eERRVU0xUWl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEdWQlFXVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkRMME1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRekZDTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc2MwSkJRWE5DTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVTjBReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGRGVrTXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZSRHM3T3p0UFFVbEhPMGxCUTBnc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEVsQlFWYzdVVUZEYkVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeFBRVUZQTEVWQlFVVXNSMEZCUnl4RFFVTjJRaXhOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVTnFSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkROVUlzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFGQlEyNURMRTFCUVUwc1YwRkJWeXhIUVVGcFFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpPMkZCUXpsRExFMUJRVTBzUlVGQlJUdGhRVU5TTEU5QlFVOHNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM1pDTEU5QlFVOHNWMEZCVnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExGVkJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzSkZMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3T3p0UFFXRkhPMGxCUTBnc1MwRkJTeXhEUVVGRExHdENRVUZyUWl4RFFVTjBRaXhaUVVGdlFpeEZRVU53UWl4SFFVRkhMRWxCUVZjN1VVRkZaQ3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVNMVFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVOd1JDeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0UlFVTXZRaXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEhOQ1FVRnpRaXhaUVVGWkxGVkJRVlVzUTBGQlF5eERRVUZETzFGQlF6RkVMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU0xUXl4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFsQlEyaEZMRkZCUVZFc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTnFReXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyaEVMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMHdzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTQ3hMUVVGTExFTkJRVU1zWjBKQlFXZENMRU5CUTNCQ0xGbEJRVzlDTEVWQlEzQkNMRWRCUVVjc1NVRkJWenRSUVVWa0xFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNUMEZCVHl4RlFVRkZMRWRCUVVjc1EwRkRka0lzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkRiRVFzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZETjBJc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eDFRa0ZCZFVJc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU51UkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyaEZMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGFrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdVVUZETTBNc1RVRkJUU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVONlJTeERRVUZETzBsQlJVUTdPenM3T3pzN096czdPenM3T3pzN096dFBRV3RDUnp0SlFVTkxMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNRMEZETjBJc1IwRkJOa0lzUlVGRE4wSXNVMEZCTWtJN1VVRkZNMElzVFVGQlRTeFBRVUZQTEVkQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hQUVVGUExFOUJRVThzUTBGQlF5eGxRVUZsTEV0QlFVc3NWVUZCVlN4RlFVRkZMRU5CUVVNN1dVRkRPVVFzVDBGQlR5eFRRVUZUTEVWQlFVVXNRMEZCUXp0UlFVTnlRaXhEUVVGRE8xRkJRMFFzVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEhWQ1FVRjFRaXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZWtVc1RVRkJUU3hSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEdOQlFXTXNRMEZCUXl4cFFrRkJhVUlzUTBGRk5VTXNRMEZCUXp0UlFVTmtMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzU1VGQlNTeHpRa0ZCYzBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETTBRc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEySXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRMlFzVFVGQlRTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRekZDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExHbENRVUZwUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemRETEVOQlFVTTdVVUZEUkN4SlFVRkpMRTFCUVZNc1EwRkJRenRSUVVOa0xFbEJRVWtzUTBGQlF6dFpRVU5JTEUxQlFVMHNSMEZCUnl4TlFVRk5MRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJRemRDTEVOQlFVTTdVVUZCUXl4UFFVRlBMRXRCUVdNc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlEzUkRMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyWXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8yZENRVU5zUWl4SlFVRkpMRU5CUVVNN2IwSkJRMGdzVFVGQlRTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVdNc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dG5Ra0ZETDBNc1EwRkJRenRuUWtGQlF5eFBRVUZQTEdGQlFYTkNMRVZCUVVVc1EwRkJRenR2UWtGRGFFTXNTMEZCU3l4aFFVRmhMRU5CUVVNN1owSkJRM0pDTEVOQlFVTTdXVUZEU0N4RFFVRkRPMWxCUTBRc1RVRkJUU3hMUVVGTExFTkJRVU03VVVGRFpDeERRVUZETzFGQlEwUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRMklzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRE8xbEJRM0pDTEVsQlFVa3NRMEZCUXp0blFrRkRTQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROMElzUTBGQlF6dFpRVUZETEU5QlFVOHNTMEZCWXl4RlFVRkZMRU5CUVVNN1owSkJRM2hDTEUxQlFVMHNTVUZCU1N4aFFVRmhMRU5CUVVNc2FVTkJRV2xETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRjRVVzUTBGQlF6dFJRVU5JTEVOQlFVTTdVVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBzc1UwRkJVeXhEUVVGRExGVkJRWE5DTzFGQlEzUkRMRTlCUVU4N1dVRkRUQ3hGUVVGRkxFVkJRVVVzVlVGQlZTeERRVUZETEVWQlFVVTdXVUZEYWtJc1VVRkJVU3hGUVVGRkxGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTNaRExGTkJRVk1zUlVGQlJTeFZRVUZWTEVOQlFVTXNUMEZCVHp0blFrRkRNMElzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRE8yZENRVU5vUXl4RFFVRkRMRU5CUVVNc1UwRkJVenRaUVVOaUxHZENRVUZuUWl4RlFVRkZMRlZCUVZVc1EwRkJReXhMUVVGTE8yZENRVU5vUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVOQlFVTTdaMEpCUXpsQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTzFsQlEySXNTVUZCU1N4RlFVRkZMRlZCUVZVc1EwRkJReXhKUVVGSk8xbEJRM0pDTEdOQlFXTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1kwRkJZenRaUVVONlF5eFJRVUZSTEVWQlFVVXNWVUZCVlN4RFFVRkRMRkZCUVZFN1dVRkROMElzVjBGQlZ5eEZRVUZGTEZWQlFWVXNRMEZCUXl4WFFVRlhPMWxCUTI1RExFOUJRVThzUlVGQlJTeFZRVUZWTEVOQlFVTXNUMEZCVHp0WlFVTXpRaXhSUVVGUkxFVkJRVVVzVlVGQlZTeERRVUZETEZGQlFWRTdXVUZETjBJc1UwRkJVeXhGUVVGRkxGVkJRVlVzUTBGQlF5eFRRVUZUTzFsQlF5OUNMRlZCUVZVc1JVRkJSU3hWUVVGVkxFTkJRVU1zVlVGQlZUdFpRVU5xUXl4VFFVRlRMRVZCUVVVc1ZVRkJWU3hEUVVGRExGTkJRVk03V1VGREwwSXNVMEZCVXl4RlFVRkZMRlZCUVZVc1EwRkJReXhUUVVGVE8xTkJRMmhETEVOQlFVTTdTVUZEU2l4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMMjVoYldWemNHRmpaWE12YzJWeWRtbGpaWE12WTNKbFpHVnVkR2xoYkZ4dUlDb2dRSE4xYlcxaGNua2dUbUZ0WlhOd1lXTmxaQ0JqY21Wa1pXNTBhV0ZzSUcxaGJtRm5aVzFsYm5RZ2MyVnlkbWxqWlNCaVlXTnJaV1FnWW5rZ2RHaGxJRzF2WkdWc0lITmxZM0psZENCelpYSjJhV05sTGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUZCeWIzWnBaR1Z6SUhSb1pTQmdlMEJzYVc1cklFTnlaV1JsYm5ScFlXeFRaWEoyYVdObGZXQXNJSGRvYVdOb0lHMWhibUZuWlhOY2JpQXFJR0I3UUd4cGJtc2dRM0psWkdWdWRHbGhiSDFnSUcxbGRHRmtZWFJoSUhKdmQzTWdZVzVrSUhOMGIzSmxjeUJsWVdOb0lHTnlaV1JsYm5ScFlXd25jeUJ6WldOeVpYUmNiaUFxSUhaaGJIVmxMQ0JsYm1OeWVYQjBaV1FzSUdsdUlIUm9aU0J0YjJSbGJDMWlZV05yWldRZ2MyVmpjbVYwSUhObGNuWnBZMlVnS0hObFpWeHVJQ29nWUh0QWJHbHVheUJOYjJSbGJGTmxZM0psZEZObGNuWnBZMlY5WUNrdUlGTmxZM0psZENCdVlXMWxjeUJoY21VZ1oyVnVaWEpoZEdWa0lHbHVkR1Z5Ym1Gc2JIbGNiaUFxSUNoZ1kzSmxaR1Z1ZEdsaGJDMDhkWFZwWkQ1Z0tTQmhibVFnYm1WMlpYSWdaWGh3YjNObFpEc2dkR2hsSUdOeVpXUmxiblJwWVd3Z2NtOTNJSEpsWm1WeVpXNWpaWE1nZEdobFhHNGdLaUJ6WldOeVpYUWdZbmtnWUhObFkzSmxkRTVoYldWZ0xpQkJiSE52SUdSbFptbHVaWE1nZEdobElIdEFiR2x1YXlCRGNtVmtaVzUwYVdGc1UyVmpjbVYwVTNSdmNtVjlYRzRnS2lCamIyNTBjbUZqZENCaGJtUWdlMEJzYVc1cklFTnlaV1JsYm5ScFlXeFRaWEoyYVdObFEyOXVabWxuZlNCMWMyVmtJSFJ2SUdsdWFtVmpkQ0JoSUdOMWMzUnZiVnh1SUNvZ2MyVmpjbVYwSUhOMGIzSmxJRzl5SUhKbGNHOXphWFJ2Y25rdVhHNGdLaTljYm1sdGNHOXlkQ0I3SUhKaGJtUnZiVlZWU1VRZ2ZTQm1jbTl0SUZ3aWJtOWtaVHBqY25sd2RHOWNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFTnZiblJsZUhRc1hHNGdJRU52Ym5SbGVIUk1iMk5yTEZ4dUlDQlNaWEJ2YzJsMGIzSjVMRnh1SUNCeVpYTnZiSFpsVkhKaGJuTmhZM1JwYjI1TWIyTnJMRnh1ZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJOdmNtVmNJanRjYm1sdGNHOXlkQ0I3SUVsdWRHVnlibUZzUlhKeWIzSXNJRlpoYkdsa1lYUnBiMjVGY25KdmNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR0l0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dUVzlrWld4VFpXTnlaWFJUWlhKMmFXTmxJSDBnWm5KdmJTQmNJaTR1THk0dUwzTmxZM0psZEhNdmJXOWtaV3hjSWp0Y2JtbHRjRzl5ZENCN1hHNGdJRVJsYkdWMFpWTmxZM0psZEU5d2RHbHZibk1zWEc0Z0lFVjRhWE4wYzFObFkzSmxkRTl3ZEdsdmJuTXNYRzRnSUZKdmRHRjBaVk5sWTNKbGRFOXdkR2x2Ym5Nc1hHNGdJRk5sWTNKbGRFNWhiV1VzWEc0Z0lGTmxZM0psZEZCaGVXeHZZV1FzWEc0Z0lGTmxZM0psZEZCeWIzWnBaR1Z5TEZ4dUlDQlRaV055WlhSU1pXWmxjbVZ1WTJVc1hHNGdJRk4wYjNKbFUyVmpjbVYwVDNCMGFXOXVjeXhjYmlBZ2JtOXliV0ZzYVhwbFUyVmpjbVYwVG1GdFpTeGNibjBnWm5KdmJTQmNJaTR1THk0dUwzTmxZM0psZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUh0Y2JpQWdRM0psWVhSbFEzSmxaR1Z1ZEdsaGJFbHVjSFYwTEZ4dUlDQkRjbVZrWlc1MGFXRnNVSEp2ZG1sa1pYSXNYRzRnSUVOeVpXUmxiblJwWVd4VGRXMXRZWEo1TEZ4dUlDQlNiM1JoZEdWRGNtVmtaVzUwYVdGc1NXNXdkWFFzWEc1OUlHWnliMjBnWENJdUxpOTBlWEJsYzF3aU8xeHVhVzF3YjNKMElIc2dRbUZ6WlUxdlpHVnNVMlZ5ZG1salpTd2djbVZzWVhScGIyNUpaQ0I5SUdaeWIyMGdYQ0l1TGk5MWRHbHNjMXdpTzF4dWFXMXdiM0owSUhzZ1EzSmxaR1Z1ZEdsaGJDQjlJR1p5YjIwZ1hDSXVMaTl0YjJSbGJITXZZM0psWkdWdWRHbGhiQzV0YjJSbGJGd2lPMXh1WEc0dktpcGNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQk5hVzVwYldGc0lITmxZM0psZEMxemRHOXlaU0JqYjI1MGNtRmpkQ0J5WlhGMWFYSmxaQ0JpZVNCMGFHVWdZM0psWkdWdWRHbGhiQ0J6WlhKMmFXTmxYRzRnS2lCQWMzVnRiV0Z5ZVNCVGRISjFZM1IxY21Gc0lITjFZbk5sZENCdlppQjBhR1VnYzJWamNtVjBJSE5sY25acFkyVWdRVkJKSUhWelpXUWdabTl5SUdOeVpXUmxiblJwWVd4Y2JpQXFJSFpoYkhWbGN6c2dZSEp2ZEdGMFpXQWdhWE1nYjNCMGFXOXVZV3dnNG9DVUlIZG9aVzRnWVdKelpXNTBMQ0J5YjNSaGRHbHZiaUJtWVd4c2N5QmlZV05ySUhSdklHRmNiaUFxSUhKbExYTjBiM0psSUhWdVpHVnlJSFJvWlNCellXMWxJSE5sWTNKbGRDQnVZVzFsTGx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRU55WldSbGJuUnBZV3hUWldOeVpYUlRkRzl5WlNCN1hHNGdJQzhxS2lCQVpHVnpZM0pwY0hScGIyNGdSbWw0WldRZ2NISnZkbWxrWlhJZ1pHbHpZM0pwYldsdVlYUnZjaUJ2WmlCMGFHVWdZbUZqYTJsdVp5QnBiWEJzWlcxbGJuUmhkR2x2Ymk0Z0tpOWNiaUFnY21WaFpHOXViSGtnY0hKdmRtbGtaWEk2SUZObFkzSmxkRkJ5YjNacFpHVnlPMXh1SUNBdktpb2dRR1JsYzJOeWFYQjBhVzl1SUZOMGIzSmxjeUFvYjNJZ2IzWmxjbmR5YVhSbGN5a2dZU0J1WVcxbFpDQnpaV055WlhRZ2NHRjViRzloWkM0Z0tpOWNiaUFnYzNSdmNtVThWQ0JsZUhSbGJtUnpJRk5sWTNKbGRGQmhlV3h2WVdRZ1BTQlRaV055WlhSUVlYbHNiMkZrUGloY2JpQWdJQ0J1WVcxbE9pQlRaV055WlhST1lXMWxMRnh1SUNBZ0lIWmhiSFZsT2lCVUxGeHVJQ0FnSUc5d2RHbHZibk0vT2lCVGRHOXlaVk5sWTNKbGRFOXdkR2x2Ym5Nc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4VFpXTnlaWFJTWldabGNtVnVZMlUrTzF4dUlDQXZLaW9nUUdSbGMyTnlhWEIwYVc5dUlFUmxiR1YwWlhNZ1lTQnpkRzl5WldRZ2MyVmpjbVYwTGlBcUwxeHVJQ0JrWld4bGRHVW9YRzRnSUNBZ2JtRnRaVTl5VW1WbU9pQlRaV055WlhST1lXMWxJSHdnVTJWamNtVjBVbVZtWlhKbGJtTmxMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQkVaV3hsZEdWVFpXTnlaWFJQY0hScGIyNXpMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThkbTlwWkQ0N1hHNGdJQzhxS2lCQVpHVnpZM0pwY0hScGIyNGdRMmhsWTJ0eklIZG9aWFJvWlhJZ1lTQnpaV055WlhRZ1pYaHBjM1J6TGlBcUwxeHVJQ0JsZUdsemRITW9YRzRnSUNBZ2JtRnRaVTl5VW1WbU9pQlRaV055WlhST1lXMWxJSHdnVTJWamNtVjBVbVZtWlhKbGJtTmxMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQkZlR2x6ZEhOVFpXTnlaWFJQY0hScGIyNXpMRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThZbTl2YkdWaGJqNDdYRzRnSUM4cUtpQkFaR1Z6WTNKcGNIUnBiMjRnVDNCMGFXOXVZV3dnYVc0dGNHeGhZMlVnY205MFlYUnBiMjRnYjJZZ1lTQnpkRzl5WldRZ2MyVmpjbVYwSUhaaGJIVmxMaUFxTDF4dUlDQnliM1JoZEdVL0tGeHVJQ0FnSUc1aGJXVlBjbEpsWmpvZ1UyVmpjbVYwVG1GdFpTQjhJRk5sWTNKbGRGSmxabVZ5Wlc1alpTeGNiaUFnSUNCMllXeDFaVG9nVTJWamNtVjBVR0Y1Ykc5aFpDeGNiaUFnSUNCdmNIUnBiMjV6UHpvZ1VtOTBZWFJsVTJWamNtVjBUM0IwYVc5dWN5eGNiaUFnSUNBdUxpNWhjbWR6T2lCaGJubGJYVnh1SUNBcE9pQlFjbTl0YVhObFBGTmxZM0psZEZKbFptVnlaVzVqWlQ0N1hHNTlYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dUlFbHVhbVZqZEdsdmJpQmpiMjVtYVdkMWNtRjBhVzl1SUdadmNpQjBhR1VnWTNKbFpHVnVkR2xoYkNCelpYSjJhV05sWEc0Z0tpQkFjM1Z0YldGeWVTQlhhR1Z1SUdCelpXTnlaWFJUWlhKMmFXTmxZQ0JwY3lCdmJXbDBkR1ZrTENCMGFHVWdjMlZ5ZG1salpTQnNZWHBwYkhrZ1ltOXZkSE1nWVZ4dUlDb2dZSHRBYkdsdWF5Qk5iMlJsYkZObFkzSmxkRk5sY25acFkyVjlZQ0J2YmlCbWFYSnpkQ0IxYzJVN0lIZG9aVzRnWUhKbGNHOXphWFJ2Y25sZ0lHbHpJRzl0YVhSMFpXUXNYRzRnS2lCMGFHVWdZbUZ6WlNCZ1FtRnpaVTF2WkdWc1UyVnlkbWxqWldBZ2NtVndiM05wZEc5eWVTQm1iM0lnWUh0QWJHbHVheUJEY21Wa1pXNTBhV0ZzZldBZ2FYTWdkWE5sWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JEY21Wa1pXNTBhV0ZzVTJWeWRtbGpaVU52Ym1acFp5QjdYRzRnSUM4cUtpQkFaR1Z6WTNKcGNIUnBiMjRnVTJWamNtVjBJSE4wYjNKbElHWnZjaUJqY21Wa1pXNTBhV0ZzSUhaaGJIVmxjeUFvYlhWemRDQm9ZWFpsSUdCd2NtOTJhV1JsY2pvZ1hDSnRiMlJsYkZ3aVlDa3VJQ292WEc0Z0lITmxZM0psZEZObGNuWnBZMlUvT2lCRGNtVmtaVzUwYVdGc1UyVmpjbVYwVTNSdmNtVTdYRzRnSUM4cUtpQkFaR1Z6WTNKcGNIUnBiMjRnVW1Wd2IzTnBkRzl5ZVNCaVlXTnJhVzVuSUhSb1pTQmdRM0psWkdWdWRHbGhiR0FnYldWMFlXUmhkR0VnY205M2N5NGdLaTljYmlBZ2NtVndiM05wZEc5eWVUODZJRkpsY0c5emFYUnZjbms4UTNKbFpHVnVkR2xoYkN3Z1lXNTVQanRjYm4xY2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVFdGdVlXZGxjeUJ1WVcxbGMzQmhZMlZrSUdOeVpXUmxiblJwWVd4eklHRnVaQ0IwYUdWcGNpQmxibU55ZVhCMFpXUWdjMlZqY21WMElIWmhiSFZsYzF4dUlDb2dRSE4xYlcxaGNua2dSWGgwWlc1a2N5QmdRbUZ6WlUxdlpHVnNVMlZ5ZG1salpUeERjbVZrWlc1MGFXRnNQbUFnZEc4Z1kzSmxZWFJsTENCeWIzUmhkR1VzSUhKbFlXUXNYRzRnS2lCc2FYTjBMQ0IxYzJVdGJXRnlheXdnWVc1a0lHUmxiR1YwWlNCamNtVmtaVzUwYVdGc2N5NGdUMjRnWTNKbFlYUmxMQ0IwYUdVZ2MyVmpjbVYwSUhaaGJIVmxJR2x6WEc0Z0tpQnpkRzl5WldRZ2RXNWtaWElnWVNCblpXNWxjbUYwWldRZ2JtRnRaU0JtYVhKemRDQmhibVFnZEdobElHMWxkR0ZrWVhSaElISnZkeUJ6WldOdmJtUTdJR2xtSUhSb1pWeHVJQ29nY205M0lHbHVjMlZ5ZENCbVlXbHNjeXdnZEdobElITjBiM0psWkNCelpXTnlaWFFnYVhNZ1ptOXlZMlV0WkdWc1pYUmxaQ0J6YnlCdWJ5QnZjbkJvWVc1bFpDQnpaV055WlhSY2JpQXFJSEpsYldGcGJuTXVJRVJsYkdWMGFXOXVJRzFwY25KdmNuTWdkR2hoZERvZ2RHaGxJSEp2ZHlCcGN5QnlaVzF2ZG1Wa0xDQjBhR1Z1SUhSb1pTQnpaV055WlhRZ2RtRnNkV1V1WEc0Z0tpQlVhR1VnYzJWamNtVjBJSE4wYjNKbElHMTFjM1FnY21WemIyeDJaU0IwYnlCZ2NISnZkbWxrWlhJNklGd2liVzlrWld4Y0ltQWc0b0NVSUhWelpYSXZjblZ1ZEdsdFpWeHVJQ29nWTNKbFpHVnVkR2xoYkhNZ1lXeDNZWGx6SUd4cGRtVWdhVzRnZEdobElHMXZaR1ZzTFdKaFkydGxaQ0J6WldOeVpYUWdjMlZ5ZG1salpTNWNiaUFxSUVCallYUmxaMjl5ZVNCT1lXMWxjM0JoWTJWelhHNGdLaUJBWlhoaGJYQnNaVnh1SUNvZ1lHQmdkSE5jYmlBcUlHbHRjRzl5ZENCN0lFTnlaV1JsYm5ScFlXeFRaWEoyYVdObElIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OXBiblJsWjNKaGRHbHZibk12Ym1GdFpYTndZV05sYzF3aU8xeHVJQ3BjYmlBcUlHTnZibk4wSUdOeVpXUmxiblJwWVd4eklEMGdibVYzSUVOeVpXUmxiblJwWVd4VFpYSjJhV05sS0NrN1hHNGdLaUJqYjI1emRDQmpjbVZrWlc1MGFXRnNJRDBnWVhkaGFYUWdZM0psWkdWdWRHbGhiSE11WTNKbFlYUmxRM0psWkdWdWRHbGhiQ2g3WEc0Z0tpQWdJSFJsYm1GdWRFbGtPaUJjSW5SbGJtRnVkQzB4WENJc1hHNGdLaUFnSUc1aGJXVTZJRndpWkdWd2JHOTVMWFJ2YTJWdVhDSXNYRzRnS2lBZ0lHTnlaV1JsYm5ScFlXeFVlWEJsT2lCY0luUnZhMlZ1WENJc1hHNGdLaUFnSUhObFkzSmxkRG9nZXlCMllXeDFaVG9nWENKek0yTnlNM1JjSWlCOUxGeHVJQ29nZlNrN1hHNGdLaUJoZDJGcGRDQmpjbVZrWlc1MGFXRnNjeTV5YjNSaGRHVkRjbVZrWlc1MGFXRnNLSHRjYmlBcUlDQWdZM0psWkdWdWRHbGhiRWxrT2lCamNtVmtaVzUwYVdGc0xtbGtMRnh1SUNvZ0lDQnpaV055WlhRNklIc2dkbUZzZFdVNklGd2liak4zTFhNelkzSXpkRndpSUgwc1hHNGdLaUI5S1R0Y2JpQXFJR0JnWUZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EzSmxaR1Z1ZEdsaGJGTmxjblpwWTJVZ1pYaDBaVzVrY3lCQ1lYTmxUVzlrWld4VFpYSjJhV05sUEVOeVpXUmxiblJwWVd3K0lIdGNiaUFnY0hKcGRtRjBaU0J6WldOeVpYUlRaWEoyYVdObFNXNXpkR0Z1WTJVL09pQkRjbVZrWlc1MGFXRnNVMlZqY21WMFUzUnZjbVU3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCRGNtVmhkR1Z6SUhSb1pTQmpjbVZrWlc1MGFXRnNJSE5sY25acFkyVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0RGNtVmtaVzUwYVdGc1UyVnlkbWxqWlVOdmJtWnBaMzBnVzJOdmJtWnBaMTBnTFNCUGNIUnBiMjVoYkNCelpXTnlaWFFnYzNSdmNtVWdZVzVrSUhKbGNHOXphWFJ2Y25rZ2IzWmxjbkpwWkdWekxseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWTI5dVptbG5PaUJEY21Wa1pXNTBhV0ZzVTJWeWRtbGpaVU52Ym1acFp5QTlJSHQ5S1NCN1hHNGdJQ0FnYzNWd1pYSW9RM0psWkdWdWRHbGhiQ2s3WEc0Z0lDQWdkR2hwY3k1elpXTnlaWFJUWlhKMmFXTmxTVzV6ZEdGdVkyVWdQU0JqYjI1bWFXY3VjMlZqY21WMFUyVnlkbWxqWlR0Y2JpQWdJQ0JwWmlBb1kyOXVabWxuTG5KbGNHOXphWFJ2Y25rcElIdGNiaUFnSUNBZ0lIUm9hWE11WDNKbGNHOXphWFJ2Y25rZ1BTQmpiMjVtYVdjdWNtVndiM05wZEc5eWVTQmhjeUJoYm5rN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTWlhOdmJIWmxjeUIwYUdVZ2JXOWtaV3d0WW1GamEyVmtJSE5sWTNKbGRDQnpkRzl5WlN3Z1ltOXZkR2x1WnlCdmJtVWdiR0Y2YVd4NVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbGRIVnlibk1nZEdobElHbHVhbVZqZEdWa0lITmxZM0psZENCelpYSjJhV05sSUc5eUlHeGhlbWxzZVNCaWIyOTBjeUJoSUdaeVpYTm9YRzRnSUNBcUlHQjdRR3hwYm1zZ1RXOWtaV3hUWldOeVpYUlRaWEoyYVdObGZXQTdJSEpsYW1WamRITWdkMmwwYUNCaElIdEFiR2x1YXlCV1lXeHBaR0YwYVc5dVJYSnliM0o5SUhkb1pXNWNiaUFnSUNvZ2RHaGxJSEpsYzI5c2RtVmtJSE4wYjNKbEozTWdjSEp2ZG1sa1pYSWdhWE1nYm05MElHQmNJbTF2WkdWc1hDSmdMbHh1SUNBZ0tpQkFjbVYwZFhKdWN5QjdVSEp2YldselpUeERjbVZrWlc1MGFXRnNVMlZqY21WMFUzUnZjbVUrZlNCVWFHVWdiVzlrWld3dFltRmphMlZrSUhObFkzSmxkQ0J6ZEc5eVpTNWNiaUFnSUNvZ1FIUm9jbTkzY3lCN1ZtRnNhV1JoZEdsdmJrVnljbTl5ZlNCWGFHVnVJSFJvWlNCcGJtcGxZM1JsWkNCemRHOXlaU0JwY3lCdWIzUWdiVzlrWld3dFltRmphMlZrTGx4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lHRnplVzVqSUhObFkzSmxkRk5sY25acFkyVW9LVG9nVUhKdmJXbHpaVHhEY21Wa1pXNTBhV0ZzVTJWamNtVjBVM1J2Y21VK0lIdGNiaUFnSUNCc1pYUWdjMlZ5ZG1salpTQTlJSFJvYVhNdWMyVmpjbVYwVTJWeWRtbGpaVWx1YzNSaGJtTmxPMXh1SUNBZ0lHbG1JQ2doYzJWeWRtbGpaU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZM0psWVhSbFpDQTlJRzVsZHlCTmIyUmxiRk5sWTNKbGRGTmxjblpwWTJVb0tUdGNiaUFnSUNBZ0lHRjNZV2wwSUdOeVpXRjBaV1F1WW05dmRDZ3BPMXh1SUNBZ0lDQWdkR2hwY3k1elpXTnlaWFJUWlhKMmFXTmxTVzV6ZEdGdVkyVWdQU0JqY21WaGRHVmtPMXh1SUNBZ0lDQWdjMlZ5ZG1salpTQTlJR055WldGMFpXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEoyYVdObExuQnliM1pwWkdWeUlDRTlQU0JjSW0xdlpHVnNYQ0lwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvWEc0Z0lDQWdJQ0FnSUZ3aVEzSmxaR1Z1ZEdsaGJGTmxjblpwWTJVZ2MzUnZjbVZ6SUhWelpYSXZjblZ1ZEdsdFpTQmpjbVZrWlc1MGFXRnNjeUJwYmlCMGFHVWdiVzlrWld3dFltRmphMlZrSUhObFkzSmxkQ0J6WlhKMmFXTmxYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCelpYSjJhV05sTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJEY21WaGRHVnpJR0VnWTNKbFpHVnVkR2xoYkNCeWIzY2dZVzVrSUhOMGIzSmxjeUJwZEhNZ2MyVmpjbVYwSUhaaGJIVmxYRzRnSUNBcUlFQnpkVzF0WVhKNUlGWmhiR2xrWVhSbGN5QjBhR1VnYm1GdFpTQW9kSEpwYlcxbFpDd2c0b21rTWpVMUlHTm9ZWEp6TENCZ1cwRXRXbUV0ZWpBdE9WMWJRUzFhWVMxNk1DMDVMbDh0WFNwZ0tTeGNiaUFnSUNvZ2MzUnZjbVZ6SUhSb1pTQnpaV055WlhRZ2RXNWtaWElnWVNCblpXNWxjbUYwWldRZ1lHTnlaV1JsYm5ScFlXd3RQSFYxYVdRK1lDQnVZVzFsSUhOamIzQmxaQ0IwYnlCMGFHVmNiaUFnSUNvZ2MzVndjR3hwWldRZ2RHVnVZVzUwTDI5eVp5MTFibWwwTDI5M2JtVnlMQ0IwYUdWdUlHbHVjMlZ5ZEhNZ2RHaGxJRzFsZEdGa1lYUmhJSEp2ZHk0Z1NXWWdkR2hsSUhKdmQxeHVJQ0FnS2lCcGJuTmxjblFnWm1GcGJITXNJSFJvWlNCcWRYTjBMWE4wYjNKbFpDQnpaV055WlhRZ2FYTWdabTl5WTJVdFpHVnNaWFJsWkNCaVpXWnZjbVVnY21WMGFISnZkMmx1Wnk1Y2JpQWdJQ29nUUhCaGNtRnRJSHREY21WaGRHVkRjbVZrWlc1MGFXRnNTVzV3ZFhSOUlHbHVjSFYwSUMwZ1EzSmxaR1Z1ZEdsaGJDQmtaV1pwYm1sMGFXOXVJQ2h1WVcxbExDQjBlWEJsTENCelpXTnlaWFFnZG1Gc2RXVXNJSE5qYjNCcGJtY3NJRzFsZEdGa1lYUmhLUzVjYmlBZ0lDb2dRSEJoY21GdElIdGhibmxiWFgwZ1lYSm5jeUF0SUU5d2RHbHZibUZzSUhSeVlXbHNhVzVuSUdSbFkyRm1JR0JEYjI1MFpYaDBZQ0JtYjNKM1lYSmtaV1FnZEc4Z2RHaGxJSE4wYjNKbElHRnVaQ0J5WlhCdmMybDBiM0o1TGx4dUlDQWdLaUJBY21WMGRYSnVjeUI3VUhKdmJXbHpaVHhEY21Wa1pXNTBhV0ZzUG4wZ1ZHaGxJSEJsY25OcGMzUmxaQ0JqY21Wa1pXNTBhV0ZzSUhKdmR5NWNiaUFnSUNvZ1FIUm9jbTkzY3lCN1ZtRnNhV1JoZEdsdmJrVnljbTl5ZlNCWGFHVnVJSFJvWlNCdVlXMWxJR2x6SUdsdWRtRnNhV1F1WEc0Z0lDQXFMMXh1SUNCaGMzbHVZeUJqY21WaGRHVkRjbVZrWlc1MGFXRnNLRnh1SUNBZ0lHbHVjSFYwT2lCRGNtVmhkR1ZEY21Wa1pXNTBhV0ZzU1c1d2RYUXNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeERjbVZrWlc1MGFXRnNQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNzSUdOMGVFRnlaM01nZlNBOUlDaGNiaUFnSUNBZ0lHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUZ3aVkzSmxZWFJsUTNKbFpHVnVkR2xoYkZ3aUxDQjBjblZsS1Z4dUlDQWdJQ2t1Wm05eUtIUm9hWE11WTNKbFlYUmxRM0psWkdWdWRHbGhiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2JtRnRaU0E5SUdsdWNIVjBMbTVoYldVL0xuUnlhVzBvS1R0Y2JpQWdJQ0JwWmlBb0lXNWhiV1VnZkh3Z2JtRnRaUzVzWlc1bmRHZ2dQaUF5TlRVZ2ZId2dJUzllVzBFdFdtRXRlakF0T1YxYlFTMWFZUzE2TUMwNUxsOHRYU29rTHk1MFpYTjBLRzVoYldVcEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWbUZzYVdSaGRHbHZia1Z5Y205eUtGeHVJQ0FnSUNBZ0lDQmdTVzUyWVd4cFpDQmpjbVZrWlc1MGFXRnNJRzVoYldVNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2FXNXdkWFF1Ym1GdFpTbDlZRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzRnSUNBZ2JHOW5MblpsY21KdmMyVW9ZRU55WldGMGFXNW5JR055WldSbGJuUnBZV3dnSkh0dVlXMWxmV0FwTzF4dUlDQWdJR052Ym5OMElITmxjblpwWTJVZ1BTQmhkMkZwZENCMGFHbHpMbk5sWTNKbGRGTmxjblpwWTJVb0tUdGNiaUFnSUNCamIyNXpkQ0J6WldOeVpYUk9ZVzFsSUQwZ2JtOXliV0ZzYVhwbFUyVmpjbVYwVG1GdFpTaGdZM0psWkdWdWRHbGhiQzBrZTNKaGJtUnZiVlZWU1VRb0tYMWdLVHRjYmlBZ0lDQmpiMjV6ZENCeVpXWmxjbVZ1WTJVZ1BTQmhkMkZwZENCelpYSjJhV05sTG5OMGIzSmxLRnh1SUNBZ0lDQWdjMlZqY21WMFRtRnRaU3hjYmlBZ0lDQWdJR2x1Y0hWMExuTmxZM0psZEN4Y2JpQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ2RHVnVZVzUwU1dRNklHbHVjSFYwTG5SbGJtRnVkRWxrTEZ4dUlDQWdJQ0FnSUNCdmNtZFZibWwwU1dRNklHbHVjSFYwTG05eVoxVnVhWFJKWkN4Y2JpQWdJQ0FnSUNBZ2IzZHVaWEpRY21sdVkybHdZV3hKWkRvZ2FXNXdkWFF1YjNkdVpYSlFjbWx1WTJsd1lXeEpaQ3hjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0F1TGk1amRIaEJjbWR6WEc0Z0lDQWdLVHRjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR0YzWVdsMElIUm9hWE11WTNKbFlYUmxLRnh1SUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHVnVZVzUwT2lCcGJuQjFkQzUwWlc1aGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnSUNCdmNtZFZibWwwT2lCcGJuQjFkQzV2Y21kVmJtbDBTV1FzWEc0Z0lDQWdJQ0FnSUNBZ2IzZHVaWEk2SUdsdWNIVjBMbTkzYm1WeVVISnBibU5wY0dGc1NXUXNYRzRnSUNBZ0lDQWdJQ0FnYm1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0JqY21Wa1pXNTBhV0ZzVkhsd1pUb2dhVzV3ZFhRdVkzSmxaR1Z1ZEdsaGJGUjVjR1VzWEc0Z0lDQWdJQ0FnSUNBZ2MyVmpjbVYwVG1GdFpUb2djbVZtWlhKbGJtTmxMbTVoYldVc1hHNGdJQ0FnSUNBZ0lDQWdjSEp2ZG1sa1pYSTZJRU55WldSbGJuUnBZV3hRY205MmFXUmxjaTVOYjJSbGJDeGNiaUFnSUNBZ0lDQWdJQ0JrWlhOamNtbHdkR2x2YmpvZ2FXNXdkWFF1WkdWelkzSnBjSFJwYjI0c1hHNGdJQ0FnSUNBZ0lDQWdiV1YwWVdSaGRHRTZJR2x1Y0hWMExtMWxkR0ZrWVhSaExGeHVJQ0FnSUNBZ0lDQWdJR1Y0Y0dseVpYTkJkRG9nYVc1d2RYUXVaWGh3YVhKbGMwRjBMRnh1SUNBZ0lDQWdJQ0FnSUdWdVlXSnNaV1E2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJSDBnWVhNZ1VHRnlkR2xoYkR4RGNtVmtaVzUwYVdGc1BpeGNiaUFnSUNBZ0lDQWdMaTR1WTNSNFFYSm5jMXh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlJR05oZEdOb0lDaGxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ1lYZGhhWFFnYzJWeWRtbGpaVnh1SUNBZ0lDQWdJQ0F1WkdWc1pYUmxLSE5sWTNKbGRFNWhiV1VzSUhzZ1ptOXlZMlU2SUhSeWRXVWdmU3dnTGk0dVkzUjRRWEpuY3lsY2JpQWdJQ0FnSUNBZ0xtTmhkR05vS0NncElEMCtJSFZ1WkdWbWFXNWxaQ2s3WEc0Z0lDQWdJQ0IwYUhKdmR5Qmxjbkp2Y2p0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjMk55YVhCMGFXOXVJRkpsY0d4aFkyVnpJR0VnWTNKbFpHVnVkR2xoYkNkeklITmxZM0psZENCMllXeDFaVnh1SUNBZ0tpQkFjM1Z0YldGeWVTQlZjMlZ6SUhSb1pTQmlZV05yYVc1bklITjBiM0psSjNNZ1lISnZkR0YwWldBZ2QyaGxiaUJoZG1GcGJHRmliR1U3SUc5MGFHVnlkMmx6WlZ4dUlDQWdLaUJ5WlMxemRHOXlaWE1nZEdobElIWmhiSFZsSUhWdVpHVnlJSFJvWlNCbGVHbHpkR2x1WnlCelpXTnlaWFFnYm1GdFpTQjNhWFJvSUhSb1pTQnpkWEJ3YkdsbFpGeHVJQ0FnS2lCMlpYSnphVzl1SUdGdVpDQjBhR1VnWTNKbFpHVnVkR2xoYkNkeklIUmxibUZ1ZEM5dmNtY3RkVzVwZEM5dmQyNWxjaUJ6WTI5d2FXNW5MaUJVYUdWY2JpQWdJQ29nWTNKbFpHVnVkR2xoYkNCeWIzY25jeUJnZFhCa1lYUmxaRUYwWUNCcGN5QnlaV1p5WlhOb1pXUWdZV1owWlhKM1lYSmtjeTVjYmlBZ0lDb2dRSEJoY21GdElIdFNiM1JoZEdWRGNtVmtaVzUwYVdGc1NXNXdkWFI5SUdsdWNIVjBJQzBnUTNKbFpHVnVkR2xoYkNCcFpDd2dibVYzSUhObFkzSmxkQ0IyWVd4MVpTd2dZVzVrSUc5d2RHbHZibUZzSUhabGNuTnBiMjR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRnlaM01nTFNCUGNIUnBiMjVoYkNCMGNtRnBiR2x1WnlCa1pXTmhaaUJnUTI5dWRHVjRkR0FnWm05eWQyRnlaR1ZrSUhSdklIUm9aU0J6ZEc5eVpTQmhibVFnY21Wd2IzTnBkRzl5ZVM1Y2JpQWdJQ29nUUhKbGRIVnlibk1nZTFCeWIyMXBjMlU4UTNKbFpHVnVkR2xoYkQ1OUlGUm9aU0IxY0dSaGRHVmtJR055WldSbGJuUnBZV3dnY205M0xseHVJQ0FnS2k5Y2JpQWdZWE41Ym1NZ2NtOTBZWFJsUTNKbFpHVnVkR2xoYkNoY2JpQWdJQ0JwYm5CMWREb2dVbTkwWVhSbFEzSmxaR1Z1ZEdsaGJFbHVjSFYwTEZ4dUlDQWdJQzR1TG1GeVozTTZJR0Z1ZVZ0ZFhHNGdJQ2s2SUZCeWIyMXBjMlU4UTNKbFpHVnVkR2xoYkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bkxDQmpkSGhCY21keklIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQmNJbkp2ZEdGMFpVTnlaV1JsYm5ScFlXeGNJaXdnZEhKMVpTbGNiaUFnSUNBcExtWnZjaWgwYUdsekxuSnZkR0YwWlVOeVpXUmxiblJwWVd3cE8xeHVJQ0FnSUd4dlp5NTJaWEppYjNObEtHQlNiM1JoZEdsdVp5QmpjbVZrWlc1MGFXRnNJQ1I3YVc1d2RYUXVZM0psWkdWdWRHbGhiRWxrZldBcE8xeHVJQ0FnSUdOdmJuTjBJR1Y0YVhOMGFXNW5JRDBnWVhkaGFYUWdkR2hwY3k1eVpYQnZMbkpsWVdRb2FXNXdkWFF1WTNKbFpHVnVkR2xoYkVsa0xDQXVMaTVqZEhoQmNtZHpLVHRjYmlBZ0lDQmpiMjV6ZENCelpYSjJhV05sSUQwZ1lYZGhhWFFnZEdocGN5NXpaV055WlhSVFpYSjJhV05sS0NrN1hHNGdJQ0FnYVdZZ0tITmxjblpwWTJVdWNtOTBZWFJsS1NCN1hHNGdJQ0FnSUNCaGQyRnBkQ0J6WlhKMmFXTmxMbkp2ZEdGMFpTaGNiaUFnSUNBZ0lDQWdaWGhwYzNScGJtY3VjMlZqY21WMFRtRnRaU3hjYmlBZ0lDQWdJQ0FnYVc1d2RYUXVjMlZqY21WMExGeHVJQ0FnSUNBZ0lDQjdJRzVsZDFabGNuTnBiMjQ2SUdsdWNIVjBMblpsY25OcGIyNGdmU3hjYmlBZ0lDQWdJQ0FnTGk0dVkzUjRRWEpuYzF4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZWGRoYVhRZ2MyVnlkbWxqWlM1emRHOXlaU2hjYmlBZ0lDQWdJQ0FnWlhocGMzUnBibWN1YzJWamNtVjBUbUZ0WlN4Y2JpQWdJQ0FnSUNBZ2FXNXdkWFF1YzJWamNtVjBMRnh1SUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtVnljMmx2YmpvZ2FXNXdkWFF1ZG1WeWMybHZiaXhjYmlBZ0lDQWdJQ0FnSUNCMFpXNWhiblJKWkRvZ2NtVnNZWFJwYjI1SlpDaGxlR2x6ZEdsdVp5NTBaVzVoYm5RcExGeHVJQ0FnSUNBZ0lDQWdJRzl5WjFWdWFYUkpaRG9nWlhocGMzUnBibWN1YjNKblZXNXBkRnh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QnlaV3hoZEdsdmJrbGtLR1Y0YVhOMGFXNW5MbTl5WjFWdWFYUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBNklIVnVaR1ZtYVc1bFpDeGNiaUFnSUNBZ0lDQWdJQ0J2ZDI1bGNsQnlhVzVqYVhCaGJFbGtPaUJsZUdsemRHbHVaeTV2ZDI1bGNseHVJQ0FnSUNBZ0lDQWdJQ0FnUHlCeVpXeGhkR2x2Ymtsa0tHVjRhWE4wYVc1bkxtOTNibVZ5S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDNHVMbU4wZUVGeVozTmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdWNGFYTjBhVzVuTG5Wd1pHRjBaV1JCZENBOUlHNWxkeUJFWVhSbEtDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbVZ3Ynk1MWNHUmhkR1VvWlhocGMzUnBibWNzSUM0dUxtTjBlRUZ5WjNNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCU1pXRmtjeUJoSUdOeVpXUmxiblJwWVd3Z2NtOTNJR0o1SUdsa1hHNGdJQ0FxSUVCemRXMXRZWEo1SUZKMWJuTWdkR2hsSUhKbFlXUWdhVzV6YVdSbElIUm9aU0JsZUhCc2FXTnBkQ0JnZDJsMGFHbHVWSEpoYm5OaFkzUnBiMjVnSUdKdmRXNWtZWEo1WEc0Z0lDQXFJR2x1YzNSbFlXUWdiMllnWUVCMGNtRnVjMkZqZEdsdmJtRnNLQ2xnT2lCaElHMXBjM05wYm1jZ2RISmhhV3hwYm1jZ1lFTnZiblJsZUhSZ0lHbHpJSE41Ym5Sb1pYTnBlbVZrWEc0Z0lDQXFJSFpwWVNCZ2JHOW5RM1I0S0dGeVozTXNJQzR1TGl3Z2RISjFaU2xnTENCMGFHVnVJSFJvWlNCb1pXeHdaWElnY21WMWMyVnpJR0Z1SUdsdUxXWnNhV2RvZEZ4dUlDQWdLaUJnUTI5dWRHVjRkRXh2WTJ0Z0lHOXlJRzl3Wlc1eklHRWdibVYzSUc5dVpTQW9ZSEpsYzI5c2RtVlVjbUZ1YzJGamRHbHZia3h2WTJ0Z0lDc2dZR0psWjJsdVlDa3NYRzRnSUNBcUlISnZiR3hwYm1jZ1ltRmpheUJ2YmlCbGNuSnZjaUJoYm1RZ1kyOXRiV2wwZEdsdVp5QjNhR1Z1SUhSb2FYTWdhWE1nZEdobElHOTFkR1Z5Ylc5emRDQm1jbUZ0WlM0Z1QyNWNiaUFnSUNvZ1lTQlVlWEJsVDFKTkxXSmhZMnRsWkNCeVpYQnZjMmwwYjNKNUlIUm9hWE1nWW1sdVpITWdkR2hsSUdOdmJuUmxlSFFuY3lCd2NtbHVZMmx3WVd3Z2RHOWNiaUFnSUNvZ1lHRndjQzV3Y21sdVkybHdZV3hmYVdSZ0lHWnZjaUIwYUdVZ1pIVnlZWFJwYjI0Z2IyWWdkR2hsSUhSeVlXNXpZV04wYVc5dUlITnZJRzVoYldWemNHRmpaU0JTVEZOY2JpQWdJQ29nWVhCd2JHbGxjeUIwYnlCMGFHVWdjbVZoWkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR055WldSbGJuUnBZV3hKWkNBdElGUm9aU0JqY21Wa1pXNTBhV0ZzSUdsa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTJGdWVWdGRmU0JoY21keklDMGdUM0IwYVc5dVlXd2dkSEpoYVd4cGJtY2daR1ZqWVdZZ1lFTnZiblJsZUhSZ0lHWnZjbmRoY21SbFpDQjBieUIwYUdVZ2NtVndiM05wZEc5eWVTNWNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJVOFEzSmxaR1Z1ZEdsaGJENTlJRlJvWlNCamNtVmtaVzUwYVdGc0lISnZkeTVjYmlBZ0lDb3ZYRzRnSUdGemVXNWpJR2RsZEVOeVpXUmxiblJwWVd3b1hHNGdJQ0FnWTNKbFpHVnVkR2xoYkVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnTGk0dVlYSm5jem9nWVc1NVcxMWNiaUFnS1RvZ1VISnZiV2x6WlR4RGNtVmtaVzUwYVdGc1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUN3Z1kzUjRRWEpuY3lCOUlEMGdLRnh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVzYjJkRGRIZ29ZWEpuY3l3Z1hDSm5aWFJEY21Wa1pXNTBhV0ZzWENJc0lIUnlkV1VwWEc0Z0lDQWdLUzVtYjNJb2RHaHBjeTVuWlhSRGNtVmtaVzUwYVdGc0tUdGNiaUFnSUNCc2IyY3VkbVZ5WW05elpTaGdVbVZoWkdsdVp5QmpjbVZrWlc1MGFXRnNJQ1I3WTNKbFpHVnVkR2xoYkVsa2ZXQXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbmRwZEdocGJsUnlZVzV6WVdOMGFXOXVLR04wZUN3Z0tDa2dQVDVjYmlBZ0lDQWdJSFJvYVhNdWNtVndieTV5WldGa0tHTnlaV1JsYm5ScFlXeEpaQ3dnTGk0dVkzUjRRWEpuY3lsY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJNYVhOMGN5QmhiR3dnWTNKbFpHVnVkR2xoYkhNZ1lYTWdjM1Z0YldGeWFXVnpJQ2h1YnlCelpXTnlaWFFnYldGMFpYSnBZV3dwWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRnlaM01nTFNCUGNIUnBiMjVoYkNCMGNtRnBiR2x1WnlCa1pXTmhaaUJnUTI5dWRHVjRkR0FnWm05eWQyRnlaR1ZrSUhSdklIUm9aU0J5WlhCdmMybDBiM0o1TGx4dUlDQWdLaUJBY21WMGRYSnVjeUI3VUhKdmJXbHpaVHhEY21Wa1pXNTBhV0ZzVTNWdGJXRnllVnRkUG4wZ1UzVnRiV0Z5ZVNCeVpXTnZjbVJ6SUdadmNpQmxkbVZ5ZVNCamNtVmtaVzUwYVdGc0xseHVJQ0FnS2k5Y2JpQWdZWE41Ym1NZ2JHbHpkRU55WldSbGJuUnBZV3h6S0M0dUxtRnlaM002SUdGdWVWdGRLVG9nVUhKdmJXbHpaVHhEY21Wa1pXNTBhV0ZzVTNWdGJXRnllVnRkUGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJzYjJjc0lHTjBlRUZ5WjNNZ2ZTQTlJQ2hjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lGd2liR2x6ZEVOeVpXUmxiblJwWVd4elhDSXNJSFJ5ZFdVcFhHNGdJQ0FnS1M1bWIzSW9kR2hwY3k1c2FYTjBRM0psWkdWdWRHbGhiSE1wTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0Z3aVRHbHpkR2x1WnlCamNtVmtaVzUwYVdGc2Mxd2lLVHRjYmlBZ0lDQmpiMjV6ZENCamNtVmtaVzUwYVdGc2N6b2dRM0psWkdWdWRHbGhiRnRkSUQwZ1lYZGhhWFFnZEdocGN5NXlaWEJ2WEc0Z0lDQWdJQ0F1YzJWc1pXTjBLQ2xjYmlBZ0lDQWdJQzVsZUdWamRYUmxLQzR1TG1OMGVFRnlaM01wTzF4dUlDQWdJSEpsZEhWeWJpQmpjbVZrWlc1MGFXRnNjeTV0WVhBb0tHTnlaV1JsYm5ScFlXd3BJRDArSUhSb2FYTXVkRzlUZFcxdFlYSjVLR055WldSbGJuUnBZV3dwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnVTNSaGJYQnpJR0VnWTNKbFpHVnVkR2xoYkNkeklHQnNZWE4wVlhObFpFRjBZQ0IwYVcxbGMzUmhiWEJjYmlBZ0lDb2dRSE4xYlcxaGNua2dVblZ1Y3lCMGFHVWdjbVZoWkNCaGJtUWdkR2hsSUhWd1pHRjBaU0JwYm5OcFpHVWdiMjVsSUdWNGNHeHBZMmwwWEc0Z0lDQXFJR0IzYVhSb2FXNVVjbUZ1YzJGamRHbHZibUFnWW05MWJtUmhjbmtnYVc1emRHVmhaQ0J2WmlCZ1FIUnlZVzV6WVdOMGFXOXVZV3dvS1dBNklHRWdiV2x6YzJsdVoxeHVJQ0FnS2lCMGNtRnBiR2x1WnlCZ1EyOXVkR1Y0ZEdBZ2FYTWdjM2x1ZEdobGMybDZaV1FnZG1saElHQnNiMmREZEhnb1lYSm5jeXdnTGk0dUxDQjBjblZsS1dBc0lIUm9aVzRnZEdobFhHNGdJQ0FxSUdobGJIQmxjaUJ5WlhWelpYTWdZVzRnYVc0dFpteHBaMmgwSUdCRGIyNTBaWGgwVEc5amEyQWdiM0lnYjNCbGJuTWdZU0J1WlhjZ2IyNWxYRzRnSUNBcUlDaGdjbVZ6YjJ4MlpWUnlZVzV6WVdOMGFXOXVURzlqYTJBZ0t5QmdZbVZuYVc1Z0tTd2djbTlzYkdsdVp5QmlZV05ySUc5dUlHVnljbTl5SUdGdVpDQmpiMjF0YVhSMGFXNW5YRzRnSUNBcUlIZG9aVzRnZEdocGN5QnBjeUIwYUdVZ2IzVjBaWEp0YjNOMElHWnlZVzFsTGlCUGJpQmhJRlI1Y0dWUFVrMHRZbUZqYTJWa0lISmxjRzl6YVhSdmNua2dkR2hwYzF4dUlDQWdLaUJpYVc1a2N5QjBhR1VnWTI5dWRHVjRkQ2R6SUhCeWFXNWphWEJoYkNCMGJ5QmdZWEJ3TG5CeWFXNWphWEJoYkY5cFpHQWdabTl5SUhSb1pTQmtkWEpoZEdsdmJpQnZabHh1SUNBZ0tpQjBhR1VnZEhKaGJuTmhZM1JwYjI0Z2MyOGdibUZ0WlhOd1lXTmxJRkpNVXlCaGNIQnNhV1Z6SUhSdklHSnZkR2dnYzNSaGRHVnRaVzUwY3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR055WldSbGJuUnBZV3hKWkNBdElGUm9aU0JqY21Wa1pXNTBhV0ZzSUdsa0xseHVJQ0FnS2lCQWNHRnlZVzBnZTJGdWVWdGRmU0JoY21keklDMGdUM0IwYVc5dVlXd2dkSEpoYVd4cGJtY2daR1ZqWVdZZ1lFTnZiblJsZUhSZ0lHWnZjbmRoY21SbFpDQjBieUIwYUdVZ2NtVndiM05wZEc5eWVTNWNiaUFnSUNvZ1FISmxkSFZ5Ym5NZ2UxQnliMjFwYzJVOFEzSmxaR1Z1ZEdsaGJENTlJRlJvWlNCMWNHUmhkR1ZrSUdOeVpXUmxiblJwWVd3Z2NtOTNMbHh1SUNBZ0tpOWNiaUFnWVhONWJtTWdiV0Z5YTBOeVpXUmxiblJwWVd4VmMyVmtLRnh1SUNBZ0lHTnlaV1JsYm5ScFlXeEpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lDNHVMbUZ5WjNNNklHRnVlVnRkWEc0Z0lDazZJRkJ5YjIxcGMyVThRM0psWkdWdWRHbGhiRDRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIZ3NJR04wZUVGeVozTWdmU0E5SUNoY2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdWJHOW5RM1I0S0dGeVozTXNJRndpYldGeWEwTnlaV1JsYm5ScFlXeFZjMlZrWENJc0lIUnlkV1VwWEc0Z0lDQWdLUzVtYjNJb2RHaHBjeTV0WVhKclEzSmxaR1Z1ZEdsaGJGVnpaV1FwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0dCTllYSnJhVzVuSUdOeVpXUmxiblJwWVd3Z0pIdGpjbVZrWlc1MGFXRnNTV1I5SUdGeklIVnpaV1JnS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1M2FYUm9hVzVVY21GdWMyRmpkR2x2YmloamRIZ3NJR0Z6ZVc1aklDZ3BJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1Y0YVhOMGFXNW5JRDBnWVhkaGFYUWdkR2hwY3k1eVpYQnZMbkpsWVdRb1kzSmxaR1Z1ZEdsaGJFbGtMQ0F1TGk1amRIaEJjbWR6S1R0Y2JpQWdJQ0FnSUdWNGFYTjBhVzVuTG14aGMzUlZjMlZrUVhRZ1BTQnVaWGNnUkdGMFpTZ3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Y21Wd2J5NTFjR1JoZEdVb1pYaHBjM1JwYm1jc0lDNHVMbU4wZUVGeVozTXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQkVaV3hsZEdWeklHRWdZM0psWkdWdWRHbGhiQ0J5YjNjZ1lXNWtJR2wwY3lCemRHOXlaV1FnYzJWamNtVjBJSFpoYkhWbFhHNGdJQ0FxSUVCemRXMXRZWEo1SUZKbGJXOTJaWE1nZEdobElHMWxkR0ZrWVhSaElISnZkeUJtYVhKemRDd2dkR2hsYmlCbWIzSmpaUzFrWld4bGRHVnpJSFJvWlZ4dUlDQWdLaUJ5WldabGNtVnVZMlZrSUhObFkzSmxkQ0JtY205dElIUm9aU0JpWVdOcmFXNW5JSE4wYjNKbExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWTNKbFpHVnVkR2xoYkVsa0lDMGdWR2hsSUdOeVpXUmxiblJwWVd3Z2FXUXVYRzRnSUNBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdGeVozTWdMU0JQY0hScGIyNWhiQ0IwY21GcGJHbHVaeUJrWldOaFppQmdRMjl1ZEdWNGRHQWdabTl5ZDJGeVpHVmtJSFJ2SUhSb1pTQnlaWEJ2YzJsMGIzSjVJR0Z1WkNCemRHOXlaUzVjYmlBZ0lDb2dRSEpsZEhWeWJuTWdlMUJ5YjIxcGMyVThkbTlwWkQ1OUlGSmxjMjlzZG1WeklHOXVZMlVnZEdobElISnZkeUJoYm1RZ2MyVmpjbVYwSUdGeVpTQnlaVzF2ZG1Wa0xseHVJQ0FnS2k5Y2JpQWdZWE41Ym1NZ1pHVnNaWFJsUTNKbFpHVnVkR2xoYkNoY2JpQWdJQ0JqY21Wa1pXNTBhV0ZzU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJoYm5sYlhWeHVJQ0FwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeXdnWTNSNFFYSm5jeUI5SUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnWENKa1pXeGxkR1ZEY21Wa1pXNTBhV0ZzWENJc0lIUnlkV1VwWEc0Z0lDQWdLUzVtYjNJb2RHaHBjeTVrWld4bGRHVkRjbVZrWlc1MGFXRnNLVHRjYmlBZ0lDQnNiMmN1ZG1WeVltOXpaU2hnUkdWc1pYUnBibWNnWTNKbFpHVnVkR2xoYkNBa2UyTnlaV1JsYm5ScFlXeEpaSDFnS1R0Y2JpQWdJQ0JqYjI1emRDQmxlR2x6ZEdsdVp5QTlJR0YzWVdsMElIUm9hWE11Y21Wd2J5NXlaV0ZrS0dOeVpXUmxiblJwWVd4SlpDd2dMaTR1WTNSNFFYSm5jeWs3WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTV5WlhCdkxtUmxiR1YwWlNoamNtVmtaVzUwYVdGc1NXUXNJQzR1TG1OMGVFRnlaM01wTzF4dUlDQWdJR052Ym5OMElITmxjblpwWTJVZ1BTQmhkMkZwZENCMGFHbHpMbk5sWTNKbGRGTmxjblpwWTJVb0tUdGNiaUFnSUNCaGQyRnBkQ0J6WlhKMmFXTmxMbVJsYkdWMFpTaGxlR2x6ZEdsdVp5NXpaV055WlhST1lXMWxMQ0I3SUdadmNtTmxPaUIwY25WbElIMHNJQzR1TG1OMGVFRnlaM01wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJTZFc1eklHRnVJRzl3WlhKaGRHbHZiaUJwYm5OcFpHVWdZVzRnWlhod2JHbGphWFFnWVdSaGNIUmxjaUIwY21GdWMyRmpkR2x2YmlCaWIzVnVaR0Z5ZVZ4dUlDQWdLaUJBYzNWdGJXRnllU0JOYVhKeWIzSnpJR052Y21VbmN5QmdRSFJ5WVc1ellXTjBhVzl1WVd3b0tXQWdjSEp2ZUhrZ2QybDBhRzkxZENCMGFHVWdaR1ZqYjNKaGRHOXlPbHh1SUNBZ0tpQnlaWFZ6WlhNZ2RHaGxJR0JEYjI1MFpYaDBURzlqYTJBZ1lXeHlaV0ZrZVNCallXTm9aV1FnYjI0Z2RHaGxJR052Ym5SbGVIUWdLR0IwY21GdWMyRmpkR2x2Ymt4dlkydGdLVnh1SUNBZ0tpQjNhR1Z1SUdFZ2RISmhibk5oWTNScGIyNGdhWE1nYVc0Z1pteHBaMmgwTENCdmRHaGxjbmRwYzJVZ2NtVnpiMngyWlhNZ1lTQm1jbVZ6YUNCc2IyTnJJSFpwWVZ4dUlDQWdLaUJnY21WemIyeDJaVlJ5WVc1ellXTjBhVzl1VEc5amEyQWdZVzVrSUdCaVpXZHBibUJ6SUdsMExDQmpZV05vYVc1bklHbDBJRzl1SUhSb1pTQmpiMjUwWlhoMElITnZYRzRnSUNBcUlHNWxjM1JsWkNCbWNtRnRaWE1nYzJoaGNtVWdhWFF1SUVSbGNIUm9JR2x6SUhSeVlXTnJaV1FnYzI4Z2JtVnpkR1ZrSUdOaGJHeHpJRzl1YkhrZ1pHVmpjbVZ0Wlc1ME8xeHVJQ0FnS2lCMGFHVWdiM1YwWlhKdGIzTjBJR1p5WVcxbElHTnZiVzFwZEhNdUlFOXVJR1Z5Y205eUlIUm9aU0JtY21GdFpTQnliMnhzY3lCaVlXTnJJT0tBbENCMWJteGxjM01nWVc1Y2JpQWdJQ29nYVc1dVpYSWdabkpoYldVZ1lXeHlaV0ZrZVNCbGJtUmxaQ0IwYUdVZ2RISmhibk5oWTNScGIyNGc0b0NVSUdGdVpDQnlaWFJvY205M2N5QjBhR1VnYjNKcFoybHVZV3hjYmlBZ0lDb2daWEp5YjNJdUlGZG9aVzRnZEdobElISmxjRzl6YVhSdmNua2daWGh3YjNObGN5QnVieUJoWkdGd2RHVnlJR0IwY21GdWMyRmpkR2x2Ymt4dlkydGdJQ2hsTG1jdVhHNGdJQ0FxSUc1dmJpMTBjbUZ1YzJGamRHbHZibUZzSUdGa1lYQjBaWEp6SUc5eUlISmxjRzl6YVhSdmNua2daRzkxWW14bGN5a3NJSFJvWlNCdmNHVnlZWFJwYjI0Z2NuVnVjMXh1SUNBZ0tpQmthWEpsWTNSc2VTQjNhWFJvSUc1dklIUnlZVzV6WVdOMGFXOXVMaUJKWmlCZ1kzUjRZQ0JwY3lCZ2RXNWtaV1pwYm1Wa1lDd2dZU0J6ZEdGdVpHRnNiMjVsWEc0Z0lDQXFJR052Ym5SbGVIUWdhWE1nYzNsdWRHaGxjMmw2WldRZ2RtbGhJR0IwYUdsekxtTnZiblJsZUhSZ0xseHVJQ0FnS2lCQWRHVnRjR3hoZEdVZ1VpQXRJRlJvWlNCdmNHVnlZWFJwYjI0bmN5QnlaWE4xYkhRZ2RIbHdaUzVjYmlBZ0lDb2dRSEJoY21GdElIdERiMjUwWlhoMFBHRnVlVDRnZkNCMWJtUmxabWx1WldSOUlHTjBlQ0F0SUZSb1pTQmpZV3hzWlhJbmN5QmtaV05oWmlCZ1EyOXVkR1Y0ZEdBc0lHbG1JRzl1WlNCM1lYTWdjbVZ6YjJ4MlpXUWdiM0lnYzNsdWRHaGxjMmw2WldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3S0NrZ1BUNGdVSEp2YldselpUeFNQbjBnYjNCbGNtRjBhVzl1SUMwZ1ZHaGxJSEpsY0c5emFYUnZjbmtnZDI5eWF5QjBieUJ5ZFc0Z2FXNXphV1JsSUhSb1pTQjBjbUZ1YzJGamRHbHZiaTVjYmlBZ0lDb2dRSEpsZEhWeWJuTWdlMUJ5YjIxcGMyVThVajU5SUZSb1pTQnZjR1Z5WVhScGIyNG5jeUJ5WlhOMWJIUXNJR052YlcxcGRIUmxaQ0IzYUdWdUlHOTFkR1Z5Ylc5emRDNWNiaUFnSUNvZ1FIUm9jbTkzY3lCN1NXNTBaWEp1WVd4RmNuSnZjbjBnVjJobGJpQjBhR1VnYjNWMFpYSnRiM04wSUdOdmJXMXBkQ0JtWVdsc2N5NWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZWE41Ym1NZ2QybDBhR2x1VkhKaGJuTmhZM1JwYjI0OFVqNG9YRzRnSUNBZ1kzUjRPaUJEYjI1MFpYaDBQR0Z1ZVQ0Z2ZDQjFibVJsWm1sdVpXUXNYRzRnSUNBZ2IzQmxjbUYwYVc5dU9pQW9LU0E5UGlCUWNtOXRhWE5sUEZJK1hHNGdJQ2s2SUZCeWIyMXBjMlU4VWo0Z2UxeHVJQ0FnSUdOdmJuTjBJR0ZrWVhCMFpYSWdQU0FvZEdocGN5NXlaWEJ2SUdGeklHRnVlU2svTG1Ga1lYQjBaWEk3WEc0Z0lDQWdhV1lnS0NGaFpHRndkR1Z5SUh4OElIUjVjR1Z2WmlCaFpHRndkR1Z5TG5SeVlXNXpZV04wYVc5dVRHOWpheUFoUFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiM0JsY21GMGFXOXVLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUdOdmJuUmxlSFFnUFNCamRIZ2dQejhnS0dGM1lXbDBJSFJvYVhNdVkyOXVkR1Y0ZENoY0ltTnlaV1JsYm5ScFlXeFVjbUZ1YzJGamRHbHZibHdpTENCN2ZTa3BPMXh1SUNBZ0lHTnZibk4wSUdWNGFYTjBhVzVuSUQwZ1kyOXVkR1Y0ZEM1blpYUlBjbFZ1WkdWbWFXNWxaQ2hjSW5SeVlXNXpZV04wYVc5dVRHOWphMXdpS1NCaGMxeHVJQ0FnSUNBZ2ZDQkRiMjUwWlhoMFRHOWphMXh1SUNBZ0lDQWdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdZMjl1YzNRZ2JHOWpheUE5SUdWNGFYTjBhVzVuSUQ4L0lISmxjMjlzZG1WVWNtRnVjMkZqZEdsdmJreHZZMnNvZEdocGN5NXlaWEJ2S1R0Y2JpQWdJQ0JzYjJOckxtUmxjSFJvS3lzN1hHNGdJQ0FnYVdZZ0tDRmxlR2x6ZEdsdVp5a2dlMXh1SUNBZ0lDQWdZWGRoYVhRZ2JHOWpheTVpWldkcGJpaGpiMjUwWlhoMEtUdGNiaUFnSUNBZ0lHTnZiblJsZUhRdVkyRmphR1V1Y0hWMEtGd2lkSEpoYm5OaFkzUnBiMjVNYjJOclhDSXNJR3h2WTJzcE8xeHVJQ0FnSUgxY2JpQWdJQ0JzWlhRZ2NtVnpkV3gwT2lCU08xeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQnlaWE4xYkhRZ1BTQmhkMkZwZENCdmNHVnlZWFJwYjI0b0tUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSnZjam9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZV3h5WldGa2VVVnVaR1ZrSUQwZ2JHOWpheTVrWlhCMGFDQTlQVDBnTUR0Y2JpQWdJQ0FnSUd4dlkyc3VaR1Z3ZEdnZ1BTQXdPMXh1SUNBZ0lDQWdhV1lnS0NGaGJISmxZV1I1Ulc1a1pXUXBJSHRjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0JoZDJGcGRDQnNiMk5yTG5KdmJHeGlZV05yS0dWeWNtOXlJR0Z6SUVWeWNtOXlMQ0JqYjI1MFpYaDBLVHRjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvY205c2JHSmhZMnRGY25KdmNqb2dkVzVyYm05M2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhadmFXUWdjbTlzYkdKaFkydEZjbkp2Y2p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHliM2NnWlhKeWIzSTdYRzRnSUNBZ2ZWeHVJQ0FnSUd4dlkyc3VaR1Z3ZEdndExUdGNiaUFnSUNCcFppQW9iRzlqYXk1a1pYQjBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ1lYZGhhWFFnYkc5amF5NWpiMjF0YVhRb1kyOXVkR1Y0ZENrN1hHNGdJQ0FnSUNCOUlHTmhkR05vSUNobGNuSnZjam9nZFc1cmJtOTNiaWtnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhnUm1GcGJHVmtJSFJ2SUdOdmJXMXBkQ0IwY21GdWMyRmpkR2x2YmpvZ0pIdGxjbkp2Y24xZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1RXRndjeUJoSUdOeVpXUmxiblJwWVd3Z2NtOTNJSFJ2SUdsMGN5QkJVRWtnYzNWdGJXRnllU0J6YUdGd1pWeHVJQ0FnS2lCQWMzVnRiV0Z5ZVNCU1pYTnZiSFpsY3lCMFpXNWhiblF2YjNKbkxYVnVhWFF2YjNkdVpYSWdjbVZzWVhScGIyNXpJSFJ2SUhSb1pXbHlJR2xrY3lCaGJtUWdjM1J5YVhCelhHNGdJQ0FxSUdGc2JDQnpaV055WlhRZ2JXRjBaWEpwWVd3Z0tIUm9aU0J6WldOeVpYUWdkbUZzZFdVZ2FYTWdibVYyWlhJZ1pYaHdiM05sWkNrdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UTNKbFpHVnVkR2xoYkgwZ1kzSmxaR1Z1ZEdsaGJDQXRJRlJvWlNCamNtVmtaVzUwYVdGc0lISnZkeTVjYmlBZ0lDb2dRSEpsZEhWeWJuTWdlME55WldSbGJuUnBZV3hUZFcxdFlYSjVmU0JVYUdVZ2MzVnRiV0Z5ZVNCeVpXTnZjbVF1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhSdlUzVnRiV0Z5ZVNoamNtVmtaVzUwYVdGc09pQkRjbVZrWlc1MGFXRnNLVG9nUTNKbFpHVnVkR2xoYkZOMWJXMWhjbmtnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQnBaRG9nWTNKbFpHVnVkR2xoYkM1cFpDeGNiaUFnSUNBZ0lIUmxibUZ1ZEVsa09pQnlaV3hoZEdsdmJrbGtLR055WldSbGJuUnBZV3d1ZEdWdVlXNTBLU3hjYmlBZ0lDQWdJRzl5WjFWdWFYUkpaRG9nWTNKbFpHVnVkR2xoYkM1dmNtZFZibWwwWEc0Z0lDQWdJQ0FnSUQ4Z2NtVnNZWFJwYjI1SlpDaGpjbVZrWlc1MGFXRnNMbTl5WjFWdWFYUXBYRzRnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnYjNkdVpYSlFjbWx1WTJsd1lXeEpaRG9nWTNKbFpHVnVkR2xoYkM1dmQyNWxjbHh1SUNBZ0lDQWdJQ0EvSUhKbGJHRjBhVzl1U1dRb1kzSmxaR1Z1ZEdsaGJDNXZkMjVsY2lsY2JpQWdJQ0FnSUNBZ09pQjFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQnVZVzFsT2lCamNtVmtaVzUwYVdGc0xtNWhiV1VzWEc0Z0lDQWdJQ0JqY21Wa1pXNTBhV0ZzVkhsd1pUb2dZM0psWkdWdWRHbGhiQzVqY21Wa1pXNTBhV0ZzVkhsd1pTeGNiaUFnSUNBZ0lIQnliM1pwWkdWeU9pQmpjbVZrWlc1MGFXRnNMbkJ5YjNacFpHVnlMRnh1SUNBZ0lDQWdaR1Z6WTNKcGNIUnBiMjQ2SUdOeVpXUmxiblJwWVd3dVpHVnpZM0pwY0hScGIyNHNYRzRnSUNBZ0lDQmxibUZpYkdWa09pQmpjbVZrWlc1MGFXRnNMbVZ1WVdKc1pXUXNYRzRnSUNBZ0lDQnRaWFJoWkdGMFlUb2dZM0psWkdWdWRHbGhiQzV0WlhSaFpHRjBZU3hjYmlBZ0lDQWdJR1Y0Y0dseVpYTkJkRG9nWTNKbFpHVnVkR2xoYkM1bGVIQnBjbVZ6UVhRc1hHNGdJQ0FnSUNCc1lYTjBWWE5sWkVGME9pQmpjbVZrWlc1MGFXRnNMbXhoYzNSVmMyVmtRWFFzWEc0Z0lDQWdJQ0JqY21WaGRHVmtRWFE2SUdOeVpXUmxiblJwWVd3dVkzSmxZWFJsWkVGMExGeHVJQ0FnSUNBZ2RYQmtZWFJsWkVGME9pQmpjbVZrWlc1MGFXRnNMblZ3WkdGMFpXUkJkQ3hjYmlBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPSJdfQ==
@@ -146,5 +146,5 @@ __decorate([
146
146
  __metadata("design:paramtypes", [String, Object]),
147
147
  __metadata("design:returntype", Promise)
148
148
  ], EffectivePermissionService.prototype, "rebuildForTenant", null);
149
- //# sourceMappingURL=effective-permission.service.js.map
150
- //# sourceMappingURL=effective-permission.service.cjs.map
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW1lc3BhY2VzL3NlcnZpY2VzL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxzQkFBaUI7QUFDbEcsT0FBTyxFQUErQixTQUFTLEVBQUUsc0JBQWlCO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrREFBNkM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHFDQUFrQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUNBQWtDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQ0FBNkI7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNDQUFtQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsK0JBQTRCO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQ0FBbUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVDQUFvQztBQUV0RSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsZ0JBQXFDO0lBQ25GO1FBQ0UsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLFdBQW1CLEVBQUUsR0FBRyxJQUFXO1FBQzFFLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDekMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FB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QUFVLENBQUMsV0FBVztZQUNqQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7WUFDdkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1lBQy9CLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTztZQUMzQixVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVU7WUFDakMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRO1lBQzdCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtZQUM3QixTQUFTLEVBQUUsVUFBVSxDQUFDLFNBQVM7U0FDaEMsRUFDRCxHQUFHLElBQUksQ0FDUixDQUNGLENBQ0YsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFHSyxBQUFOLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLEdBQUcsSUFBVztRQUNyRCxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pJLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBMUdPO0lBREwsYUFBYSxFQUFFOzs7O3FFQWtHZjtBQUdLO0lBREwsYUFBYSxFQUFFOzs7O2tFQU1mIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCwgcmVsYXRpb25NYXRjaCwgc2FtZVRlbmFudCwgdHJhbnNhY3Rpb25hbCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgRWZmZWN0aXZlUGVybWlzc2lvblNuYXBzaG90LCBTY29wZUtpbmQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEVmZmVjdGl2ZVBlcm1pc3Npb24gfSBmcm9tIFwiLi4vbW9kZWxzL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBSb2xlQXNzaWdubWVudFNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLWFzc2lnbm1lbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgUm9sZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1wZXJtaXNzaW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vcGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlIH0gZnJvbSBcIi4vZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcmluY2lwYWxTZXJ2aWNlIH0gZnJvbSBcIi4vcHJpbmNpcGFsLnNlcnZpY2VcIjtcbmltcG9ydCB7IE9yZ1VuaXRDbG9zdXJlU2VydmljZSB9IGZyb20gXCIuL29yZy11bml0LWNsb3N1cmUuc2VydmljZVwiO1xuaW1wb3J0IHsgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgfSBmcm9tIFwiLi9pbmhlcml0YW5jZS1ibG9jay5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8RWZmZWN0aXZlUGVybWlzc2lvbj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihFZmZlY3RpdmVQZXJtaXNzaW9uKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoXG4gICAgICAocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpICYmIHJlbGF0aW9uTWF0Y2gocGVybWlzc2lvbi5wcmluY2lwYWwsIHByaW5jaXBhbElkKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBsaXN0Rm9yU2NvcGUoXG4gICAgdGVuYW50SWQ6IHN0cmluZyxcbiAgICBzY29wZUtpbmQ6IFNjb3BlS2luZCxcbiAgICBzY29wZUlkOiBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxFZmZlY3RpdmVQZXJtaXNzaW9uW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKFxuICAgICAgKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSAmJiBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmIHBlcm1pc3Npb24uc2NvcGVJZCA9PT0gc2NvcGVJZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBoYXNQZXJtaXNzaW9uKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgcHJpbmNpcGFsSWQ6IHN0cmluZyxcbiAgICBwZXJtaXNzaW9uS2V5OiBzdHJpbmcsXG4gICAgc2NvcGVLaW5kOiBTY29wZUtpbmQsXG4gICAgc2NvcGVJZDogc3RyaW5nLFxuICAgIGF0PzogRGF0ZSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKS5zb21lKFxuICAgICAgKHBlcm1pc3Npb24pID0+XG4gICAgICAgIHBlcm1pc3Npb24ucGVybWlzc2lvbktleSA9PT0gcGVybWlzc2lvbktleSAmJlxuICAgICAgICBwZXJtaXNzaW9uLnNjb3BlS2luZCA9PT0gc2NvcGVLaW5kICYmXG4gICAgICAgIHBlcm1pc3Npb24uc2NvcGVJZCA9PT0gc2NvcGVJZCAmJlxuICAgICAgICAoIXBlcm1pc3Npb24uc3RhcnRzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uc3RhcnRzQXQgPD0gYXQpICYmXG4gICAgICAgICghcGVybWlzc2lvbi5leHBpcmVzQXQgfHwgIWF0IHx8IHBlcm1pc3Npb24uZXhwaXJlc0F0ID49IGF0KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHJvdyBvZiBhd2FpdCB0aGlzLmxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKHJvdy5pZCwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9yVGVuYW50KHRlbmFudElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCByb3cgb2YgKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkpKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZUJ5SWQocm93LmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cblxuICBAdHJhbnNhY3Rpb25hbCgpXG4gIGFzeW5jIHJlYnVpbGRGb3JQcmluY2lwYWwodGVuYW50SWQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBQcm9taXNlPEVmZmVjdGl2ZVBlcm1pc3Npb25bXT4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG5cbiAgICBjb25zdCByb2xlQXNzaWdubWVudFNlcnZpY2UgPSBuZXcgUm9sZUFzc2lnbm1lbnRTZXJ2aWNlKCk7XG4gICAgY29uc3Qgcm9sZVBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFJvbGVQZXJtaXNzaW9uU2VydmljZSgpO1xuICAgIGNvbnN0IHBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwU2VydmljZSA9IG5ldyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlKCk7XG4gICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgY29uc3Qgb3JnVW5pdENsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgIGNvbnN0IGluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlID0gbmV3IEluaGVyaXRhbmNlQmxvY2tTZXJ2aWNlKCk7XG5cbiAgICBjb25zdCBtYXRlcmlhbGl6ZWQ6IEVmZmVjdGl2ZVBlcm1pc3Npb25TbmFwc2hvdFtdID0gW107XG4gICAgY29uc3Qgc291cmNlQXNzaWdubWVudHMgPSBhd2FpdCByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgZ3JvdXBNZW1iZXJzaGlwcyA9IGF3YWl0IGdyb3VwTWVtYmVyc2hpcFNlcnZpY2UubGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25tZW50cyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBncm91cE1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdyb3VwUHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbChyZWxhdGlvbklkKG1lbWJlcnNoaXAudGVuYW50KSwgcmVsYXRpb25JZChtZW1iZXJzaGlwLmdyb3VwKSwgLi4uYXJncyk7XG4gICAgICAgICAgcmV0dXJuIHJvbGVBc3NpZ25tZW50U2VydmljZS5saXN0UHJpbmNpcGFsQXNzaWdubWVudHModGVuYW50SWQsIGdyb3VwUHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLmZsYXQoKTtcblxuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gWy4uLnNvdXJjZUFzc2lnbm1lbnRzLCAuLi5ncm91cEFzc2lnbm1lbnRzXTtcbiAgICBmb3IgKGNvbnN0IGFzc2lnbm1lbnQgb2YgYXNzaWdubWVudHMpIHtcbiAgICAgIGNvbnN0IHJvbGVQZXJtaXNzaW9ucyA9IGF3YWl0IHJvbGVQZXJtaXNzaW9uU2VydmljZS5saXN0Um9sZVBlcm1pc3Npb25zKHJlbGF0aW9uSWQoYXNzaWdubWVudC5yb2xlKSwgLi4uYXJncyk7XG4gICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICByb2xlUGVybWlzc2lvbnMubWFwKGFzeW5jIChyb2xlUGVybWlzc2lvbikgPT5cbiAgICAgICAgICBwZXJtaXNzaW9uU2VydmljZS5maW5kT25lQnkoXCJpZFwiLCByZWxhdGlvbklkKHJvbGVQZXJtaXNzaW9uLnBlcm1pc3Npb24pIGFzIG5ldmVyLCAuLi5hcmdzKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIHBlcm1pc3Npb25zKSB7XG4gICAgICAgIGlmICghcGVybWlzc2lvbikgY29udGludWU7XG4gICAgICAgIGNvbnN0IHNjb3BlS2luZCA9IGFzc2lnbm1lbnQuc2NvcGVLaW5kO1xuICAgICAgICBjb25zdCBzY29wZUlkID0gYXNzaWdubWVudC5zY29wZUlkO1xuICAgICAgICBjb25zdCBzY29wZXM6IEFycmF5PHsgc2NvcGVLaW5kOiBTY29wZUtpbmQ7IHNjb3BlSWQ6IHN0cmluZyB9PiA9IFtdO1xuICAgICAgICBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuVGVuYW50KSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQ6IHRlbmFudElkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLlJlc291cmNlKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuT3JnVW5pdCAmJiAhYXNzaWdubWVudC5pbmhlcml0RG93bikge1xuICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiYgYXNzaWdubWVudC5pbmhlcml0RG93bikge1xuICAgICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gYXdhaXQgb3JnVW5pdENsb3N1cmVTZXJ2aWNlLmxpc3REZXNjZW5kYW50cyh0ZW5hbnRJZCwgc2NvcGVJZCwgLi4uYXJncyk7XG4gICAgICAgICAgc2NvcGVzLnB1c2goLi4uZGVzY2VuZGFudHMubWFwKChyb3cpID0+ICh7IHNjb3BlS2luZCwgc2NvcGVJZDogcmVsYXRpb25JZChyb3cuZGVzY2VuZGFudCkgfSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgc2NvcGVkIG9mIHNjb3Blcykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiZcbiAgICAgICAgICAgIGFzc2lnbm1lbnQuaW5oZXJpdERvd24gJiZcbiAgICAgICAgICAgIHNjb3BlZC5zY29wZUlkICE9PSBzY29wZUlkICYmXG4gICAgICAgICAgICAoYXdhaXQgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UuY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IoXG4gICAgICAgICAgICAgIHRlbmFudElkLFxuICAgICAgICAgICAgICBzY29wZWQuc2NvcGVJZCxcbiAgICAgICAgICAgICAgc2NvcGVJZCxcbiAgICAgICAgICAgICAgcGVybWlzc2lvbi5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXRlcmlhbGl6ZWQucHVzaCh7XG4gICAgICAgICAgICBpZDogXCJcIixcbiAgICAgICAgICAgIHRlbmFudElkLFxuICAgICAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uS2V5OiBwZXJtaXNzaW9uLmtleSxcbiAgICAgICAgICAgIHNjb3BlS2luZDogc2NvcGVkLnNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHNjb3BlZC5zY29wZUlkLFxuICAgICAgICAgICAgc291cmNlS2luZDogXCJyb2xlX2Fzc2lnbm1lbnRcIixcbiAgICAgICAgICAgIHNvdXJjZUlkOiBhc3NpZ25tZW50LmlkLFxuICAgICAgICAgICAgc3RhcnRzQXQ6IGFzc2lnbm1lbnQuc3RhcnRzQXQsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IGFzc2lnbm1lbnQuZXhwaXJlc0F0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgbWF0ZXJpYWxpemVkLm1hcCgocGVybWlzc2lvbikgPT5cbiAgICAgICAgdGhpcy5jcmVhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGVuYW50OiBwZXJtaXNzaW9uLnRlbmFudElkLFxuICAgICAgICAgICAgcHJpbmNpcGFsOiBwZXJtaXNzaW9uLnByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBwZXJtaXNzaW9uLnNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHBlcm1pc3Npb24uc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IHBlcm1pc3Npb24uc291cmNlS2luZCxcbiAgICAgICAgICAgIHNvdXJjZUlkOiBwZXJtaXNzaW9uLnNvdXJjZUlkLFxuICAgICAgICAgICAgc3RhcnRzQXQ6IHBlcm1pc3Npb24uc3RhcnRzQXQsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHBlcm1pc3Npb24uZXhwaXJlc0F0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uYXJnc1xuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbiAgfVxuXG4gIEB0cmFuc2FjdGlvbmFsKClcbiAgYXN5bmMgcmVidWlsZEZvclRlbmFudCh0ZW5hbnRJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByaW5jaXBhbHMgPSAoYXdhaXQgbmV3IFByaW5jaXBhbFNlcnZpY2UoKS5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHByaW5jaXBhbCkgPT4gc2FtZVRlbmFudChwcmluY2lwYWwudGVuYW50LCB0ZW5hbnRJZCkpO1xuICAgIGZvciAoY29uc3QgcHJpbmNpcGFsIG9mIHByaW5jaXBhbHMpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0aXZlLXBlcm1pc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVmZmVjdGl2ZS1wZXJtaXNzaW9uLnNlcnZpY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUNqRixJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdILElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O1FBQzFILEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEosT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsQ0FBQztBQUNGLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3hELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxVQUFVO1FBQUUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RyxDQUFDLENBQUM7QUFDRiw0Q0FBdUc7QUFDdkcsNENBQTBDO0FBQzFDLDZGQUFnRjtBQUNoRiw2RUFBcUU7QUFDckUsNkVBQXFFO0FBQ3JFLG1FQUE0RDtBQUM1RCwrRUFBdUU7QUFDdkUsaUVBQTBEO0FBQzFELCtFQUFzRTtBQUN0RSxpRkFBeUU7QUFDekUsTUFBYSwwQkFBMkIsU0FBUSwyQkFBZ0I7SUFDNUQ7UUFDSSxLQUFLLENBQUMsbURBQW1CLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJO1FBQ2pELE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBVSxFQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3SixDQUFDO0lBQ0QsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUk7UUFDcEQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ2pMLENBQUM7SUFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSTtRQUNyRixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxLQUFLLGFBQWE7WUFDaEksVUFBVSxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQ2xDLFVBQVUsQ0FBQyxPQUFPLEtBQUssT0FBTztZQUM5QixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUMxRCxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSTtRQUNuRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDbkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0wsQ0FBQztJQUNELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSTtRQUNwRCxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDOUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGtEQUFxQixFQUFFLENBQUM7UUFDMUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGtEQUFxQixFQUFFLENBQUM7UUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHlDQUFpQixFQUFFLENBQUM7UUFDbEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLG9EQUFzQixFQUFFLENBQUM7UUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLHVDQUFnQixFQUFFLENBQUM7UUFDaEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLG1EQUFxQixFQUFFLENBQUM7UUFDMUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLHNEQUF1QixFQUFFLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDL0csTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUNsRixNQUFNLGNBQWMsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUEscUJBQVUsRUFBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBQSxxQkFBVSxFQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3RJLE9BQU8scUJBQXFCLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDbkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDOUcsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFBLHFCQUFVLEVBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hLLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVO29CQUNYLFNBQVM7Z0JBQ2IsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLFNBQVMsS0FBSyxvQkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO3FCQUNJLElBQUksU0FBUyxLQUFLLG9CQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztxQkFDSSxJQUFJLFNBQVMsS0FBSyxvQkFBUyxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO3FCQUNJLElBQUksU0FBUyxLQUFLLG9CQUFTLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakUsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUM1RixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBQSxxQkFBVSxFQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRyxDQUFDO2dCQUNELEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQzFCLElBQUksU0FBUyxLQUFLLG9CQUFTLENBQUMsT0FBTzt3QkFDL0IsVUFBVSxDQUFDLFdBQVc7d0JBQ3RCLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTzt3QkFDMUIsQ0FBQyxNQUFNLHVCQUF1QixDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUM5SCxTQUFTO29CQUNiLENBQUM7b0JBQ0QsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDZCxFQUFFLEVBQUUsRUFBRTt3QkFDTixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsYUFBYSxFQUFFLFVBQVUsQ0FBQyxHQUFHO3dCQUM3QixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQzNCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzt3QkFDdkIsVUFBVSxFQUFFLGlCQUFpQjt3QkFDN0IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFO3dCQUN2QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7d0JBQzdCLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztxQkFDbEMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNFLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUTtZQUMzQixTQUFTLEVBQUUsVUFBVSxDQUFDLFdBQVc7WUFDakMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhO1lBQ3ZDLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztZQUMvQixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87WUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO1lBQ2pDLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtZQUM3QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1NBQ2xDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLElBQUksdUNBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBVSxFQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqSSxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQTNHRCxnRUEyR0M7QUFDRCxVQUFVLENBQUM7SUFDUCxJQUFBLHdCQUFhLEdBQUU7SUFDZixVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztJQUNuQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEUsVUFBVSxDQUFDO0lBQ1AsSUFBQSx3QkFBYSxHQUFFO0lBQ2YsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7SUFDbkMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7Q0FDM0MsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUscytpQkFBcytpQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG5pbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoLCBzYW1lVGVuYW50LCB0cmFuc2FjdGlvbmFsIH0gZnJvbSBcIi4vLi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjb3BlS2luZCB9IGZyb20gXCIuLy4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBFZmZlY3RpdmVQZXJtaXNzaW9uIH0gZnJvbSBcIi4vLi4vbW9kZWxzL2VmZmVjdGl2ZS1wZXJtaXNzaW9uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBSb2xlQXNzaWdubWVudFNlcnZpY2UgfSBmcm9tIFwiLi9yb2xlLWFzc2lnbm1lbnQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgUm9sZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vcm9sZS1wZXJtaXNzaW9uLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vcGVybWlzc2lvbi5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXBTZXJ2aWNlIH0gZnJvbSBcIi4vZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBQcmluY2lwYWxTZXJ2aWNlIH0gZnJvbSBcIi4vcHJpbmNpcGFsLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IE9yZ1VuaXRDbG9zdXJlU2VydmljZSB9IGZyb20gXCIuL29yZy11bml0LWNsb3N1cmUuc2VydmljZS5qc1wiO1xuaW1wb3J0IHsgSW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UgfSBmcm9tIFwiLi9pbmhlcml0YW5jZS1ibG9jay5zZXJ2aWNlLmpzXCI7XG5leHBvcnQgY2xhc3MgRWZmZWN0aXZlUGVybWlzc2lvblNlcnZpY2UgZXh0ZW5kcyBCYXNlTW9kZWxTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoRWZmZWN0aXZlUGVybWlzc2lvbik7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKHBlcm1pc3Npb24pID0+IHNhbWVUZW5hbnQocGVybWlzc2lvbi50ZW5hbnQsIHRlbmFudElkKSAmJiByZWxhdGlvbk1hdGNoKHBlcm1pc3Npb24ucHJpbmNpcGFsLCBwcmluY2lwYWxJZCkpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0Rm9yU2NvcGUodGVuYW50SWQsIHNjb3BlS2luZCwgc2NvcGVJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChwZXJtaXNzaW9uKSA9PiBzYW1lVGVuYW50KHBlcm1pc3Npb24udGVuYW50LCB0ZW5hbnRJZCkgJiYgcGVybWlzc2lvbi5zY29wZUtpbmQgPT09IHNjb3BlS2luZCAmJiBwZXJtaXNzaW9uLnNjb3BlSWQgPT09IHNjb3BlSWQpO1xuICAgIH1cbiAgICBhc3luYyBoYXNQZXJtaXNzaW9uKHRlbmFudElkLCBwcmluY2lwYWxJZCwgcGVybWlzc2lvbktleSwgc2NvcGVLaW5kLCBzY29wZUlkLCBhdCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpKS5zb21lKChwZXJtaXNzaW9uKSA9PiBwZXJtaXNzaW9uLnBlcm1pc3Npb25LZXkgPT09IHBlcm1pc3Npb25LZXkgJiZcbiAgICAgICAgICAgIHBlcm1pc3Npb24uc2NvcGVLaW5kID09PSBzY29wZUtpbmQgJiZcbiAgICAgICAgICAgIHBlcm1pc3Npb24uc2NvcGVJZCA9PT0gc2NvcGVJZCAmJlxuICAgICAgICAgICAgKCFwZXJtaXNzaW9uLnN0YXJ0c0F0IHx8ICFhdCB8fCBwZXJtaXNzaW9uLnN0YXJ0c0F0IDw9IGF0KSAmJlxuICAgICAgICAgICAgKCFwZXJtaXNzaW9uLmV4cGlyZXNBdCB8fCAhYXQgfHwgcGVybWlzc2lvbi5leHBpcmVzQXQgPj0gYXQpKTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBhd2FpdCB0aGlzLmxpc3RGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKHJvdy5pZCwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlRm9yVGVuYW50KHRlbmFudElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIChhd2FpdCB0aGlzLmxpc3RBbGwoLi4uYXJncykpLmZpbHRlcigocGVybWlzc2lvbikgPT4gc2FtZVRlbmFudChwZXJtaXNzaW9uLnRlbmFudCwgdGVuYW50SWQpKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVCeUlkKHJvdy5pZCwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgcmVidWlsZEZvclByaW5jaXBhbCh0ZW5hbnRJZCwgcHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVGb3JQcmluY2lwYWwodGVuYW50SWQsIHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICAgICAgY29uc3Qgcm9sZUFzc2lnbm1lbnRTZXJ2aWNlID0gbmV3IFJvbGVBc3NpZ25tZW50U2VydmljZSgpO1xuICAgICAgICBjb25zdCByb2xlUGVybWlzc2lvblNlcnZpY2UgPSBuZXcgUm9sZVBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25TZXJ2aWNlID0gbmV3IFBlcm1pc3Npb25TZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcFNlcnZpY2UgPSBuZXcgR3JvdXBNZW1iZXJzaGlwU2VydmljZSgpO1xuICAgICAgICBjb25zdCBwcmluY2lwYWxTZXJ2aWNlID0gbmV3IFByaW5jaXBhbFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3Qgb3JnVW5pdENsb3N1cmVTZXJ2aWNlID0gbmV3IE9yZ1VuaXRDbG9zdXJlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBpbmhlcml0YW5jZUJsb2NrU2VydmljZSA9IG5ldyBJbmhlcml0YW5jZUJsb2NrU2VydmljZSgpO1xuICAgICAgICBjb25zdCBtYXRlcmlhbGl6ZWQgPSBbXTtcbiAgICAgICAgY29uc3Qgc291cmNlQXNzaWdubWVudHMgPSBhd2FpdCByb2xlQXNzaWdubWVudFNlcnZpY2UubGlzdFByaW5jaXBhbEFzc2lnbm1lbnRzKHRlbmFudElkLCBwcmluY2lwYWxJZCwgLi4uYXJncyk7XG4gICAgICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcHMgPSBhd2FpdCBncm91cE1lbWJlcnNoaXBTZXJ2aWNlLmxpc3RQcmluY2lwYWxHcm91cHMocHJpbmNpcGFsSWQsIC4uLmFyZ3MpO1xuICAgICAgICBjb25zdCBncm91cEFzc2lnbm1lbnRzID0gKGF3YWl0IFByb21pc2UuYWxsKGdyb3VwTWVtYmVyc2hpcHMubWFwKGFzeW5jIChtZW1iZXJzaGlwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm91cFByaW5jaXBhbCA9IGF3YWl0IHByaW5jaXBhbFNlcnZpY2UuZ2V0R3JvdXBQcmluY2lwYWwocmVsYXRpb25JZChtZW1iZXJzaGlwLnRlbmFudCksIHJlbGF0aW9uSWQobWVtYmVyc2hpcC5ncm91cCksIC4uLmFyZ3MpO1xuICAgICAgICAgICAgcmV0dXJuIHJvbGVBc3NpZ25tZW50U2VydmljZS5saXN0UHJpbmNpcGFsQXNzaWdubWVudHModGVuYW50SWQsIGdyb3VwUHJpbmNpcGFsLmlkLCAuLi5hcmdzKTtcbiAgICAgICAgfSkpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gWy4uLnNvdXJjZUFzc2lnbm1lbnRzLCAuLi5ncm91cEFzc2lnbm1lbnRzXTtcbiAgICAgICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIGFzc2lnbm1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCByb2xlUGVybWlzc2lvbnMgPSBhd2FpdCByb2xlUGVybWlzc2lvblNlcnZpY2UubGlzdFJvbGVQZXJtaXNzaW9ucyhyZWxhdGlvbklkKGFzc2lnbm1lbnQucm9sZSksIC4uLmFyZ3MpO1xuICAgICAgICAgICAgY29uc3QgcGVybWlzc2lvbnMgPSBhd2FpdCBQcm9taXNlLmFsbChyb2xlUGVybWlzc2lvbnMubWFwKGFzeW5jIChyb2xlUGVybWlzc2lvbikgPT4gcGVybWlzc2lvblNlcnZpY2UuZmluZE9uZUJ5KFwiaWRcIiwgcmVsYXRpb25JZChyb2xlUGVybWlzc2lvbi5wZXJtaXNzaW9uKSwgLi4uYXJncykpKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGVybWlzc2lvbiBvZiBwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgIGlmICghcGVybWlzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVLaW5kID0gYXNzaWdubWVudC5zY29wZUtpbmQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NvcGVJZCA9IGFzc2lnbm1lbnQuc2NvcGVJZDtcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuVGVuYW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHNjb3Blcy5wdXNoKHsgc2NvcGVLaW5kLCBzY29wZUlkOiB0ZW5hbnRJZCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcGVLaW5kID09PSBTY29wZUtpbmQuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiYgIWFzc2lnbm1lbnQuaW5oZXJpdERvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgc2NvcGVzLnB1c2goeyBzY29wZUtpbmQsIHNjb3BlSWQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiYgYXNzaWdubWVudC5pbmhlcml0RG93bikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IGF3YWl0IG9yZ1VuaXRDbG9zdXJlU2VydmljZS5saXN0RGVzY2VuZGFudHModGVuYW50SWQsIHNjb3BlSWQsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBzY29wZXMucHVzaCguLi5kZXNjZW5kYW50cy5tYXAoKHJvdykgPT4gKHsgc2NvcGVLaW5kLCBzY29wZUlkOiByZWxhdGlvbklkKHJvdy5kZXNjZW5kYW50KSB9KSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNjb3BlZCBvZiBzY29wZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlS2luZCA9PT0gU2NvcGVLaW5kLk9yZ1VuaXQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQuaW5oZXJpdERvd24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlZC5zY29wZUlkICE9PSBzY29wZUlkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoYXdhaXQgaW5oZXJpdGFuY2VCbG9ja1NlcnZpY2UuY2F0ZWdvcnlCbG9ja2VkRm9yQW5jZXN0b3IodGVuYW50SWQsIHNjb3BlZC5zY29wZUlkLCBzY29wZUlkLCBwZXJtaXNzaW9uLmNhdGVnb3J5LCAuLi5hcmdzKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGVuYW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmluY2lwYWxJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25LZXk6IHBlcm1pc3Npb24ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVLaW5kOiBzY29wZWQuc2NvcGVLaW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVJZDogc2NvcGVkLnNjb3BlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VLaW5kOiBcInJvbGVfYXNzaWdubWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSWQ6IGFzc2lnbm1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNBdDogYXNzaWdubWVudC5zdGFydHNBdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogYXNzaWdubWVudC5leHBpcmVzQXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwobWF0ZXJpYWxpemVkLm1hcCgocGVybWlzc2lvbikgPT4gdGhpcy5jcmVhdGUoe1xuICAgICAgICAgICAgdGVuYW50OiBwZXJtaXNzaW9uLnRlbmFudElkLFxuICAgICAgICAgICAgcHJpbmNpcGFsOiBwZXJtaXNzaW9uLnByaW5jaXBhbElkLFxuICAgICAgICAgICAgcGVybWlzc2lvbktleTogcGVybWlzc2lvbi5wZXJtaXNzaW9uS2V5LFxuICAgICAgICAgICAgc2NvcGVLaW5kOiBwZXJtaXNzaW9uLnNjb3BlS2luZCxcbiAgICAgICAgICAgIHNjb3BlSWQ6IHBlcm1pc3Npb24uc2NvcGVJZCxcbiAgICAgICAgICAgIHNvdXJjZUtpbmQ6IHBlcm1pc3Npb24uc291cmNlS2luZCxcbiAgICAgICAgICAgIHNvdXJjZUlkOiBwZXJtaXNzaW9uLnNvdXJjZUlkLFxuICAgICAgICAgICAgc3RhcnRzQXQ6IHBlcm1pc3Npb24uc3RhcnRzQXQsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IHBlcm1pc3Npb24uZXhwaXJlc0F0LFxuICAgICAgICB9LCAuLi5hcmdzKSkpO1xuICAgICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9XG4gICAgYXN5bmMgcmVidWlsZEZvclRlbmFudCh0ZW5hbnRJZCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBwcmluY2lwYWxzID0gKGF3YWl0IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCkubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChwcmluY2lwYWwpID0+IHNhbWVUZW5hbnQocHJpbmNpcGFsLnRlbmFudCwgdGVuYW50SWQpKTtcbiAgICAgICAgZm9yIChjb25zdCBwcmluY2lwYWwgb2YgcHJpbmNpcGFscykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWJ1aWxkRm9yUHJpbmNpcGFsKHRlbmFudElkLCBwcmluY2lwYWwuaWQsIC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuX19kZWNvcmF0ZShbXG4gICAgdHJhbnNhY3Rpb25hbCgpLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCBGdW5jdGlvbiksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtTdHJpbmcsIFN0cmluZywgT2JqZWN0XSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpyZXR1cm50eXBlXCIsIFByb21pc2UpXG5dLCBFZmZlY3RpdmVQZXJtaXNzaW9uU2VydmljZS5wcm90b3R5cGUsIFwicmVidWlsZEZvclByaW5jaXBhbFwiLCBudWxsKTtcbl9fZGVjb3JhdGUoW1xuICAgIHRyYW5zYWN0aW9uYWwoKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgRnVuY3Rpb24pLFxuICAgIF9fbWV0YWRhdGEoXCJkZXNpZ246cGFyYW10eXBlc1wiLCBbU3RyaW5nLCBPYmplY3RdKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnJldHVybnR5cGVcIiwgUHJvbWlzZSlcbl0sIEVmZmVjdGl2ZVBlcm1pc3Npb25TZXJ2aWNlLnByb3RvdHlwZSwgXCJyZWJ1aWxkRm9yVGVuYW50XCIsIG51bGwpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWldabVpXTjBhWFpsTFhCbGNtMXBjM05wYjI0dWMyVnlkbWxqWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OXVZVzFsYzNCaFkyVnpMM05sY25acFkyVnpMMlZtWm1WamRHbDJaUzF3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlV1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzBGQlFVRXNUMEZCVHl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEZWQlFWVXNSVUZCUlN4aFFVRmhMRVZCUVVVc1ZVRkJWU3hGUVVGRkxHRkJRV0VzUlVGQlJTeHpRa0ZCYVVJN1FVRkRiRWNzVDBGQlR5eEZRVUVyUWl4VFFVRlRMRVZCUVVVc2MwSkJRV2xDTzBGQlEyeEZMRTlCUVU4c1JVRkJSU3h0UWtGQmJVSXNSVUZCUlN4clJFRkJOa003UVVGRE0wVXNUMEZCVHl4RlFVRkZMSEZDUVVGeFFpeEZRVUZGTEhGRFFVRnJRenRCUVVOc1JTeFBRVUZQTEVWQlFVVXNjVUpCUVhGQ0xFVkJRVVVzY1VOQlFXdERPMEZCUTJ4RkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3huUTBGQk5rSTdRVUZEZWtRc1QwRkJUeXhGUVVGRkxITkNRVUZ6UWl4RlFVRkZMSE5EUVVGdFF6dEJRVU53UlN4UFFVRlBMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNLMEpCUVRSQ08wRkJRM1pFTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeHpRMEZCYlVNN1FVRkRia1VzVDBGQlR5eEZRVUZGTEhWQ1FVRjFRaXhGUVVGRkxIVkRRVUZ2UXp0QlFVVjBSU3hOUVVGTkxFOUJRVThzTUVKQlFUSkNMRk5CUVZFc1owSkJRWEZETzBsQlEyNUdPMUZCUTBVc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eFJRVUZuUWl4RlFVRkZMRmRCUVcxQ0xFVkJRVVVzUjBGQlJ5eEpRVUZYTzFGQlF6RkZMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGRGVrTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVNMVJ5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXhaUVVGWkxFTkJRMmhDTEZGQlFXZENMRVZCUTJoQ0xGTkJRVzlDTEVWQlEzQkNMRTlCUVdVc1JVRkRaaXhIUVVGSExFbEJRVmM3VVVGRlpDeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUTNwRExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNc1UwRkJVeXhMUVVGTExGTkJRVk1zU1VGQlNTeFZRVUZWTEVOQlFVTXNUMEZCVHl4TFFVRkxMRTlCUVU4c1EwRkRhRWtzUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVOcVFpeFJRVUZuUWl4RlFVTm9RaXhYUVVGdFFpeEZRVU51UWl4aFFVRnhRaXhGUVVOeVFpeFRRVUZ2UWl4RlFVTndRaXhQUVVGbExFVkJRMllzUlVGQlV5eEZRVU5VTEVkQlFVY3NTVUZCVnp0UlFVVmtMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRM1pGTEVOQlFVTXNWVUZCVlN4RlFVRkZMRVZCUVVVc1EwRkRZaXhWUVVGVkxFTkJRVU1zWVVGQllTeExRVUZMTEdGQlFXRTdXVUZETVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUzBGQlN5eFRRVUZUTzFsQlEyeERMRlZCUVZVc1EwRkJReXhQUVVGUExFdEJRVXNzVDBGQlR6dFpRVU01UWl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4VlFVRlZMRU5CUVVNc1VVRkJVU3hKUVVGSkxFVkJRVVVzUTBGQlF6dFpRVU14UkN4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4VlFVRlZMRU5CUVVNc1UwRkJVeXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVU12UkN4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRUxFdEJRVXNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhSUVVGblFpeEZRVUZGTEZkQlFXMUNMRVZCUVVVc1IwRkJSeXhKUVVGWE8xRkJRelZGTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hGUVVGRkxGZEJRVmNzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNN1dVRkRPVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTjZReXhEUVVGRE8wbEJRMGdzUTBGQlF6dEpRVVZFTEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNc1VVRkJaMElzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEY0VRc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZEYUVnc1RVRkJUU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU42UXl4RFFVRkRPMGxCUTBnc1EwRkJRenRKUVVkTExFRkJRVTRzUzBGQlN5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExGRkJRV2RDTEVWQlFVVXNWMEZCYlVJc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRE4wVXNUVUZCVFN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJUbEVMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4eFFrRkJjVUlzUlVGQlJTeERRVUZETzFGQlF6RkVMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4eFFrRkJjVUlzUlVGQlJTeERRVUZETzFGQlF6RkVMRTFCUVUwc2FVSkJRV2xDTEVkQlFVY3NTVUZCU1N4cFFrRkJhVUlzUlVGQlJTeERRVUZETzFGQlEyeEVMRTFCUVUwc2MwSkJRWE5DTEVkQlFVY3NTVUZCU1N4elFrRkJjMElzUlVGQlJTeERRVUZETzFGQlF6VkVMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4blFrRkJaMElzUlVGQlJTeERRVUZETzFGQlEyaEVMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4eFFrRkJjVUlzUlVGQlJTeERRVUZETzFGQlF6RkVMRTFCUVUwc2RVSkJRWFZDTEVkQlFVY3NTVUZCU1N4MVFrRkJkVUlzUlVGQlJTeERRVUZETzFGQlJUbEVMRTFCUVUwc1dVRkJXU3hIUVVGclF5eEZRVUZGTEVOQlFVTTdVVUZEZGtRc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4TlFVRk5MSEZDUVVGeFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExGRkJRVkVzUlVGQlJTeFhRVUZYTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNdlJ5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFMUJRVTBzYzBKQlFYTkNMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFY3NUVUZCVFN4blFrRkJaMElzUjBGQlJ5eERRVU4yUWl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRMllzWjBKQlFXZENMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeFZRVUZWTEVWQlFVVXNSVUZCUlR0WlFVTjRReXhOUVVGTkxHTkJRV01zUjBGQlJ5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRlZCUVZVc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNSSkxFOUJRVThzY1VKQlFYRkNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNVVUZCVVN4RlFVRkZMR05CUVdNc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTVSaXhEUVVGRExFTkJRVU1zUTBGRFNDeERRVU5HTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1VVRkZWQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eERRVUZETEVkQlFVY3NhVUpCUVdsQ0xFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMmhGTEV0QlFVc3NUVUZCVFN4VlFVRlZMRWxCUVVrc1YwRkJWeXhGUVVGRkxFTkJRVU03V1VGRGNrTXNUVUZCVFN4bFFVRmxMRWRCUVVjc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFZRVUZWTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZET1Vjc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVTnVReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4alFVRmpMRVZCUVVVc1JVRkJSU3hEUVVNelF5eHBRa0ZCYVVJc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEZWQlFWVXNRMEZCUXl4alFVRmpMRU5CUVVNc1ZVRkJWU3hEUVVGVkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZETTBZc1EwRkRSaXhEUVVGRE8xbEJRMFlzUzBGQlN5eE5RVUZOTEZWQlFWVXNTVUZCU1N4WFFVRlhMRVZCUVVVc1EwRkJRenRuUWtGRGNrTXNTVUZCU1N4RFFVRkRMRlZCUVZVN2IwSkJRVVVzVTBGQlV6dG5Ra0ZETVVJc1RVRkJUU3hUUVVGVExFZEJRVWNzVlVGQlZTeERRVUZETEZOQlFWTXNRMEZCUXp0blFrRkRka01zVFVGQlRTeFBRVUZQTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJRenRuUWtGRGJrTXNUVUZCVFN4TlFVRk5MRWRCUVhGRUxFVkJRVVVzUTBGQlF6dG5Ra0ZEY0VVc1NVRkJTU3hUUVVGVExFdEJRVXNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMjlDUVVOdVF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUlVGQlJTeFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMmRDUVVOb1JDeERRVUZETzNGQ1FVRk5MRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk1zUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0dlFrRkROVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVTjBReXhEUVVGRE8zRkNRVUZOTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhQUVVGUExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN2IwSkJRM1JGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXp0blFrRkRkRU1zUTBGQlF6dHhRa0ZCVFN4SlFVRkpMRk5CUVZNc1MwRkJTeXhUUVVGVExFTkJRVU1zVDBGQlR5eEpRVUZKTEZWQlFWVXNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJRenR2UWtGRGNrVXNUVUZCVFN4WFFVRlhMRWRCUVVjc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXl4bFFVRmxMRU5CUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMjlDUVVNMVJpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVWQlFVVXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOcVJ5eERRVUZETzJkQ1FVVkVMRXRCUVVzc1RVRkJUU3hOUVVGTkxFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdiMEpCUXpWQ0xFbEJRMFVzVTBGQlV5eExRVUZMTEZOQlFWTXNRMEZCUXl4UFFVRlBPM2RDUVVNdlFpeFZRVUZWTEVOQlFVTXNWMEZCVnp0M1FrRkRkRUlzVFVGQlRTeERRVUZETEU5QlFVOHNTMEZCU3l4UFFVRlBPM2RDUVVNeFFpeERRVUZETEUxQlFVMHNkVUpCUVhWQ0xFTkJRVU1zTUVKQlFUQkNMRU5CUTNaRUxGRkJRVkVzUlVGRFVpeE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVTmtMRTlCUVU4c1JVRkRVQ3hWUVVGVkxFTkJRVU1zVVVGQlVTeEZRVU51UWl4SFFVRkhMRWxCUVVrc1EwRkRVaXhEUVVGRExFVkJRMFlzUTBGQlF6dDNRa0ZEUkN4VFFVRlRPMjlDUVVOWUxFTkJRVU03YjBKQlEwUXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGFFSXNSVUZCUlN4RlFVRkZMRVZCUVVVN2QwSkJRMDRzVVVGQlVUdDNRa0ZEVWl4WFFVRlhPM2RDUVVOWUxHRkJRV0VzUlVGQlJTeFZRVUZWTEVOQlFVTXNSMEZCUnp0M1FrRkROMElzVTBGQlV5eEZRVUZGTEUxQlFVMHNRMEZCUXl4VFFVRlRPM2RDUVVNelFpeFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTlCUVU4N2QwSkJRM1pDTEZWQlFWVXNSVUZCUlN4cFFrRkJhVUk3ZDBKQlF6ZENMRkZCUVZFc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJUdDNRa0ZEZGtJc1VVRkJVU3hGUVVGRkxGVkJRVlVzUTBGQlF5eFJRVUZSTzNkQ1FVTTNRaXhUUVVGVExFVkJRVVVzVlVGQlZTeERRVUZETEZOQlFWTTdjVUpCUTJoRExFTkJRVU1zUTBGQlF6dG5Ra0ZEVEN4RFFVRkRPMWxCUTBnc1EwRkJRenRSUVVOSUxFTkJRVU03VVVGRlJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhIUVVGSExFTkJReTlDTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVU01UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVOVU8xbEJRMFVzVFVGQlRTeEZRVUZGTEZWQlFWVXNRMEZCUXl4UlFVRlJPMWxCUXpOQ0xGTkJRVk1zUlVGQlJTeFZRVUZWTEVOQlFVTXNWMEZCVnp0WlFVTnFReXhoUVVGaExFVkJRVVVzVlVGQlZTeERRVUZETEdGQlFXRTdXVUZEZGtNc1UwRkJVeXhGUVVGRkxGVkJRVlVzUTBGQlF5eFRRVUZUTzFsQlF5OUNMRTlCUVU4c1JVRkJSU3hWUVVGVkxFTkJRVU1zVDBGQlR6dFpRVU16UWl4VlFVRlZMRVZCUVVVc1ZVRkJWU3hEUVVGRExGVkJRVlU3V1VGRGFrTXNVVUZCVVN4RlFVRkZMRlZCUVZVc1EwRkJReXhSUVVGUk8xbEJRemRDTEZGQlFWRXNSVUZCUlN4VlFVRlZMRU5CUVVNc1VVRkJVVHRaUVVNM1FpeFRRVUZUTEVWQlFVVXNWVUZCVlN4RFFVRkRMRk5CUVZNN1UwRkRhRU1zUlVGRFJDeEhRVUZITEVsQlFVa3NRMEZEVWl4RFFVTkdMRU5CUTBZc1EwRkJRenRSUVVOR0xFOUJRVThzVDBGQlR5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkhTeXhCUVVGT0xFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGblFpeEZRVUZGTEVkQlFVY3NTVUZCVnp0UlFVTnlSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZETEUxQlFVMHNTVUZCU1N4blFrRkJaMElzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMnBKTEV0QlFVc3NUVUZCVFN4VFFVRlRMRWxCUVVrc1ZVRkJWU3hGUVVGRkxFTkJRVU03V1VGRGJrTXNUVUZCVFN4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRk5CUVZNc1EwRkJReXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnNSU3hEUVVGRE8wbEJRMGdzUTBGQlF6dERRVU5HTzBGQk1VZFBPMGxCUkV3c1lVRkJZU3hGUVVGRk96czdPM0ZGUVd0SFpqdEJRVWRMTzBsQlJFd3NZVUZCWVN4RlFVRkZPenM3TzJ0RlFVMW1JaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUW1GelpVMXZaR1ZzVTJWeWRtbGpaU3dnY21Wc1lYUnBiMjVKWkN3Z2NtVnNZWFJwYjI1TllYUmphQ3dnYzJGdFpWUmxibUZ1ZEN3Z2RISmhibk5oWTNScGIyNWhiQ0I5SUdaeWIyMGdYQ0l1TGk5MWRHbHNjMXdpTzF4dWFXMXdiM0owSUhzZ1JXWm1aV04wYVhabFVHVnliV2x6YzJsdmJsTnVZWEJ6YUc5MExDQlRZMjl3WlV0cGJtUWdmU0JtY205dElGd2lMaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUVWbVptVmpkR2wyWlZCbGNtMXBjM05wYjI0Z2ZTQm1jbTl0SUZ3aUxpNHZiVzlrWld4ekwyVm1abVZqZEdsMlpTMXdaWEp0YVhOemFXOXVMbTF2WkdWc1hDSTdYRzVwYlhCdmNuUWdleUJTYjJ4bFFYTnphV2R1YldWdWRGTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXliMnhsTFdGemMybG5ibTFsYm5RdWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dVbTlzWlZCbGNtMXBjM05wYjI1VFpYSjJhV05sSUgwZ1puSnZiU0JjSWk0dmNtOXNaUzF3WlhKdGFYTnphVzl1TG5ObGNuWnBZMlZjSWp0Y2JtbHRjRzl5ZENCN0lGQmxjbTFwYzNOcGIyNVRaWEoyYVdObElIMGdabkp2YlNCY0lpNHZjR1Z5YldsemMybHZiaTV6WlhKMmFXTmxYQ0k3WEc1cGJYQnZjblFnZXlCSGNtOTFjRTFsYldKbGNuTm9hWEJUWlhKMmFXTmxJSDBnWm5KdmJTQmNJaTR2WjNKdmRYQXRiV1Z0WW1WeWMyaHBjQzV6WlhKMmFXTmxYQ0k3WEc1cGJYQnZjblFnZXlCUWNtbHVZMmx3WVd4VFpYSjJhV05sSUgwZ1puSnZiU0JjSWk0dmNISnBibU5wY0dGc0xuTmxjblpwWTJWY0lqdGNibWx0Y0c5eWRDQjdJRTl5WjFWdWFYUkRiRzl6ZFhKbFUyVnlkbWxqWlNCOUlHWnliMjBnWENJdUwyOXlaeTExYm1sMExXTnNiM04xY21VdWMyVnlkbWxqWlZ3aU8xeHVhVzF3YjNKMElIc2dTVzVvWlhKcGRHRnVZMlZDYkc5amExTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aUxpOXBibWhsY21sMFlXNWpaUzFpYkc5amF5NXpaWEoyYVdObFhDSTdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVVMlZ5ZG1salpTQmxlSFJsYm1SeklFSmhjMlZOYjJSbGJGTmxjblpwWTJVOFJXWm1aV04wYVhabFVHVnliV2x6YzJsdmJqNGdlMXh1SUNCamIyNXpkSEoxWTNSdmNpZ3BJSHRjYmlBZ0lDQnpkWEJsY2loRlptWmxZM1JwZG1WUVpYSnRhWE56YVc5dUtUdGNiaUFnZlZ4dVhHNGdJR0Z6ZVc1aklHeHBjM1JHYjNKUWNtbHVZMmx3WVd3b2RHVnVZVzUwU1dRNklITjBjbWx1Wnl3Z2NISnBibU5wY0dGc1NXUTZJSE4wY21sdVp5d2dMaTR1WVhKbmN6b2dZVzU1VzEwcE9pQlFjbTl0YVhObFBFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNWJYVDRnZTF4dUlDQWdJSEpsZEhWeWJpQW9ZWGRoYVhRZ2RHaHBjeTVzYVhOMFFXeHNLQzR1TG1GeVozTXBLUzVtYVd4MFpYSW9YRzRnSUNBZ0lDQW9jR1Z5YldsemMybHZiaWtnUFQ0Z2MyRnRaVlJsYm1GdWRDaHdaWEp0YVhOemFXOXVMblJsYm1GdWRDd2dkR1Z1WVc1MFNXUXBJQ1ltSUhKbGJHRjBhVzl1VFdGMFkyZ29jR1Z5YldsemMybHZiaTV3Y21sdVkybHdZV3dzSUhCeWFXNWphWEJoYkVsa0tWeHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCc2FYTjBSbTl5VTJOdmNHVW9YRzRnSUNBZ2RHVnVZVzUwU1dRNklITjBjbWx1Wnl4Y2JpQWdJQ0J6WTI5d1pVdHBibVE2SUZOamIzQmxTMmx1WkN4Y2JpQWdJQ0J6WTI5d1pVbGtPaUJ6ZEhKcGJtY3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1lXNTVXMTFjYmlBZ0tUb2dVSEp2YldselpUeEZabVpsWTNScGRtVlFaWEp0YVhOemFXOXVXMTArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdLR0YzWVdsMElIUm9hWE11YkdsemRFRnNiQ2d1TGk1aGNtZHpLU2t1Wm1sc2RHVnlLRnh1SUNBZ0lDQWdLSEJsY20xcGMzTnBiMjRwSUQwK0lITmhiV1ZVWlc1aGJuUW9jR1Z5YldsemMybHZiaTUwWlc1aGJuUXNJSFJsYm1GdWRFbGtLU0FtSmlCd1pYSnRhWE56YVc5dUxuTmpiM0JsUzJsdVpDQTlQVDBnYzJOdmNHVkxhVzVrSUNZbUlIQmxjbTFwYzNOcGIyNHVjMk52Y0dWSlpDQTlQVDBnYzJOdmNHVkpaRnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5Qm9ZWE5RWlhKdGFYTnphVzl1S0Z4dUlDQWdJSFJsYm1GdWRFbGtPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NISnBibU5wY0dGc1NXUTZJSE4wY21sdVp5eGNiaUFnSUNCd1pYSnRhWE56YVc5dVMyVjVPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2MyTnZjR1ZMYVc1a09pQlRZMjl3WlV0cGJtUXNYRzRnSUNBZ2MyTnZjR1ZKWkRvZ2MzUnlhVzVuTEZ4dUlDQWdJR0YwUHpvZ1JHRjBaU3hjYmlBZ0lDQXVMaTVoY21kek9pQmhibmxiWFZ4dUlDQXBPaUJRY205dGFYTmxQR0p2YjJ4bFlXNCtJSHRjYmlBZ0lDQnlaWFIxY200Z0tHRjNZV2wwSUhSb2FYTXViR2x6ZEVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpDd2djSEpwYm1OcGNHRnNTV1FzSUM0dUxtRnlaM01wS1M1emIyMWxLRnh1SUNBZ0lDQWdLSEJsY20xcGMzTnBiMjRwSUQwK1hHNGdJQ0FnSUNBZ0lIQmxjbTFwYzNOcGIyNHVjR1Z5YldsemMybHZia3RsZVNBOVBUMGdjR1Z5YldsemMybHZia3RsZVNBbUpseHVJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVMbk5qYjNCbFMybHVaQ0E5UFQwZ2MyTnZjR1ZMYVc1a0lDWW1YRzRnSUNBZ0lDQWdJSEJsY20xcGMzTnBiMjR1YzJOdmNHVkpaQ0E5UFQwZ2MyTnZjR1ZKWkNBbUpseHVJQ0FnSUNBZ0lDQW9JWEJsY20xcGMzTnBiMjR1YzNSaGNuUnpRWFFnZkh3Z0lXRjBJSHg4SUhCbGNtMXBjM05wYjI0dWMzUmhjblJ6UVhRZ1BEMGdZWFFwSUNZbVhHNGdJQ0FnSUNBZ0lDZ2hjR1Z5YldsemMybHZiaTVsZUhCcGNtVnpRWFFnZkh3Z0lXRjBJSHg4SUhCbGNtMXBjM05wYjI0dVpYaHdhWEpsYzBGMElENDlJR0YwS1Z4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJrWld4bGRHVkdiM0pRY21sdVkybHdZV3dvZEdWdVlXNTBTV1E2SUhOMGNtbHVaeXdnY0hKcGJtTnBjR0ZzU1dRNklITjBjbWx1Wnl3Z0xpNHVZWEpuY3pvZ1lXNTVXMTBwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSEp2ZHlCdlppQmhkMkZwZENCMGFHbHpMbXhwYzNSR2IzSlFjbWx1WTJsd1lXd29kR1Z1WVc1MFNXUXNJSEJ5YVc1amFYQmhiRWxrTENBdUxpNWhjbWR6S1NrZ2UxeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NWtaV3hsZEdWQ2VVbGtLSEp2ZHk1cFpDd2dMaTR1WVhKbmN5azdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ1pHVnNaWFJsUm05eVZHVnVZVzUwS0hSbGJtRnVkRWxrT2lCemRISnBibWNzSUM0dUxtRnlaM002SUdGdWVWdGRLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnliM2NnYjJZZ0tHRjNZV2wwSUhSb2FYTXViR2x6ZEVGc2JDZ3VMaTVoY21kektTa3VabWxzZEdWeUtDaHdaWEp0YVhOemFXOXVLU0E5UGlCellXMWxWR1Z1WVc1MEtIQmxjbTFwYzNOcGIyNHVkR1Z1WVc1MExDQjBaVzVoYm5SSlpDa3BLU0I3WEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG1SbGJHVjBaVUo1U1dRb2NtOTNMbWxrTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCQWRISmhibk5oWTNScGIyNWhiQ2dwWEc0Z0lHRnplVzVqSUhKbFluVnBiR1JHYjNKUWNtbHVZMmx3WVd3b2RHVnVZVzUwU1dRNklITjBjbWx1Wnl3Z2NISnBibU5wY0dGc1NXUTZJSE4wY21sdVp5d2dMaTR1WVhKbmN6b2dZVzU1VzEwcE9pQlFjbTl0YVhObFBFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNWJYVDRnZTF4dUlDQWdJR0YzWVdsMElIUm9hWE11WkdWc1pYUmxSbTl5VUhKcGJtTnBjR0ZzS0hSbGJtRnVkRWxrTENCd2NtbHVZMmx3WVd4SlpDd2dMaTR1WVhKbmN5azdYRzVjYmlBZ0lDQmpiMjV6ZENCeWIyeGxRWE56YVdkdWJXVnVkRk5sY25acFkyVWdQU0J1WlhjZ1VtOXNaVUZ6YzJsbmJtMWxiblJUWlhKMmFXTmxLQ2s3WEc0Z0lDQWdZMjl1YzNRZ2NtOXNaVkJsY20xcGMzTnBiMjVUWlhKMmFXTmxJRDBnYm1WM0lGSnZiR1ZRWlhKdGFYTnphVzl1VTJWeWRtbGpaU2dwTzF4dUlDQWdJR052Ym5OMElIQmxjbTFwYzNOcGIyNVRaWEoyYVdObElEMGdibVYzSUZCbGNtMXBjM05wYjI1VFpYSjJhV05sS0NrN1hHNGdJQ0FnWTI5dWMzUWdaM0p2ZFhCTlpXMWlaWEp6YUdsd1UyVnlkbWxqWlNBOUlHNWxkeUJIY205MWNFMWxiV0psY25Ob2FYQlRaWEoyYVdObEtDazdYRzRnSUNBZ1kyOXVjM1FnY0hKcGJtTnBjR0ZzVTJWeWRtbGpaU0E5SUc1bGR5QlFjbWx1WTJsd1lXeFRaWEoyYVdObEtDazdYRzRnSUNBZ1kyOXVjM1FnYjNKblZXNXBkRU5zYjNOMWNtVlRaWEoyYVdObElEMGdibVYzSUU5eVoxVnVhWFJEYkc5emRYSmxVMlZ5ZG1salpTZ3BPMXh1SUNBZ0lHTnZibk4wSUdsdWFHVnlhWFJoYm1ObFFteHZZMnRUWlhKMmFXTmxJRDBnYm1WM0lFbHVhR1Z5YVhSaGJtTmxRbXh2WTJ0VFpYSjJhV05sS0NrN1hHNWNiaUFnSUNCamIyNXpkQ0J0WVhSbGNtbGhiR2w2WldRNklFVm1abVZqZEdsMlpWQmxjbTFwYzNOcGIyNVRibUZ3YzJodmRGdGRJRDBnVzEwN1hHNGdJQ0FnWTI5dWMzUWdjMjkxY21ObFFYTnphV2R1YldWdWRITWdQU0JoZDJGcGRDQnliMnhsUVhOemFXZHViV1Z1ZEZObGNuWnBZMlV1YkdsemRGQnlhVzVqYVhCaGJFRnpjMmxuYm0xbGJuUnpLSFJsYm1GdWRFbGtMQ0J3Y21sdVkybHdZV3hKWkN3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnWTI5dWMzUWdaM0p2ZFhCTlpXMWlaWEp6YUdsd2N5QTlJR0YzWVdsMElHZHliM1Z3VFdWdFltVnljMmhwY0ZObGNuWnBZMlV1YkdsemRGQnlhVzVqYVhCaGJFZHliM1Z3Y3lod2NtbHVZMmx3WVd4SlpDd2dMaTR1WVhKbmN5azdYRzRnSUNBZ1kyOXVjM1FnWjNKdmRYQkJjM05wWjI1dFpXNTBjeUE5SUNoY2JpQWdJQ0FnSUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z4dUlDQWdJQ0FnSUNCbmNtOTFjRTFsYldKbGNuTm9hWEJ6TG0xaGNDaGhjM2x1WXlBb2JXVnRZbVZ5YzJocGNDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdkeWIzVndVSEpwYm1OcGNHRnNJRDBnWVhkaGFYUWdjSEpwYm1OcGNHRnNVMlZ5ZG1salpTNW5aWFJIY205MWNGQnlhVzVqYVhCaGJDaHlaV3hoZEdsdmJrbGtLRzFsYldKbGNuTm9hWEF1ZEdWdVlXNTBLU3dnY21Wc1lYUnBiMjVKWkNodFpXMWlaWEp6YUdsd0xtZHliM1Z3S1N3Z0xpNHVZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISnZiR1ZCYzNOcFoyNXRaVzUwVTJWeWRtbGpaUzVzYVhOMFVISnBibU5wY0dGc1FYTnphV2R1YldWdWRITW9kR1Z1WVc1MFNXUXNJR2R5YjNWd1VISnBibU5wY0dGc0xtbGtMQ0F1TGk1aGNtZHpLVHRjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0FnSUNsY2JpQWdJQ0FwTG1ac1lYUW9LVHRjYmx4dUlDQWdJR052Ym5OMElHRnpjMmxuYm0xbGJuUnpJRDBnV3k0dUxuTnZkWEpqWlVGemMybG5ibTFsYm5SekxDQXVMaTVuY205MWNFRnpjMmxuYm0xbGJuUnpYVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR0Z6YzJsbmJtMWxiblFnYjJZZ1lYTnphV2R1YldWdWRITXBJSHRjYmlBZ0lDQWdJR052Ym5OMElISnZiR1ZRWlhKdGFYTnphVzl1Y3lBOUlHRjNZV2wwSUhKdmJHVlFaWEp0YVhOemFXOXVVMlZ5ZG1salpTNXNhWE4wVW05c1pWQmxjbTFwYzNOcGIyNXpLSEpsYkdGMGFXOXVTV1FvWVhOemFXZHViV1Z1ZEM1eWIyeGxLU3dnTGk0dVlYSm5jeWs3WEc0Z0lDQWdJQ0JqYjI1emRDQndaWEp0YVhOemFXOXVjeUE5SUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0Z4dUlDQWdJQ0FnSUNCeWIyeGxVR1Z5YldsemMybHZibk11YldGd0tHRnplVzVqSUNoeWIyeGxVR1Z5YldsemMybHZiaWtnUFQ1Y2JpQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVVMlZ5ZG1salpTNW1hVzVrVDI1bFFua29YQ0pwWkZ3aUxDQnlaV3hoZEdsdmJrbGtLSEp2YkdWUVpYSnRhWE56YVc5dUxuQmxjbTFwYzNOcGIyNHBJR0Z6SUc1bGRtVnlMQ0F1TGk1aGNtZHpLVnh1SUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCd1pYSnRhWE56YVc5dUlHOW1JSEJsY20xcGMzTnBiMjV6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doY0dWeWJXbHpjMmx2YmlrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhOamIzQmxTMmx1WkNBOUlHRnpjMmxuYm0xbGJuUXVjMk52Y0dWTGFXNWtPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpZMjl3WlVsa0lEMGdZWE56YVdkdWJXVnVkQzV6WTI5d1pVbGtPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpZMjl3WlhNNklFRnljbUY1UEhzZ2MyTnZjR1ZMYVc1a09pQlRZMjl3WlV0cGJtUTdJSE5qYjNCbFNXUTZJSE4wY21sdVp5QjlQaUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYzJOdmNHVkxhVzVrSUQwOVBTQlRZMjl3WlV0cGJtUXVWR1Z1WVc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYzJOdmNHVnpMbkIxYzJnb2V5QnpZMjl3WlV0cGJtUXNJSE5qYjNCbFNXUTZJSFJsYm1GdWRFbGtJSDBwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tITmpiM0JsUzJsdVpDQTlQVDBnVTJOdmNHVkxhVzVrTGxKbGMyOTFjbU5sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMk52Y0dWekxuQjFjMmdvZXlCelkyOXdaVXRwYm1Rc0lITmpiM0JsU1dRZ2ZTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYzJOdmNHVkxhVzVrSUQwOVBTQlRZMjl3WlV0cGJtUXVUM0puVlc1cGRDQW1KaUFoWVhOemFXZHViV1Z1ZEM1cGJtaGxjbWwwUkc5M2Jpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhOamIzQmxjeTV3ZFhOb0tIc2djMk52Y0dWTGFXNWtMQ0J6WTI5d1pVbGtJSDBwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tITmpiM0JsUzJsdVpDQTlQVDBnVTJOdmNHVkxhVzVrTGs5eVoxVnVhWFFnSmlZZ1lYTnphV2R1YldWdWRDNXBibWhsY21sMFJHOTNiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdSbGMyTmxibVJoYm5SeklEMGdZWGRoYVhRZ2IzSm5WVzVwZEVOc2IzTjFjbVZUWlhKMmFXTmxMbXhwYzNSRVpYTmpaVzVrWVc1MGN5aDBaVzVoYm5SSlpDd2djMk52Y0dWSlpDd2dMaTR1WVhKbmN5azdYRzRnSUNBZ0lDQWdJQ0FnYzJOdmNHVnpMbkIxYzJnb0xpNHVaR1Z6WTJWdVpHRnVkSE11YldGd0tDaHliM2NwSUQwK0lDaDdJSE5qYjNCbFMybHVaQ3dnYzJOdmNHVkpaRG9nY21Wc1lYUnBiMjVKWkNoeWIzY3VaR1Z6WTJWdVpHRnVkQ2tnZlNrcEtUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2MyTnZjR1ZrSUc5bUlITmpiM0JsY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ0lDQWdJSE5qYjNCbFMybHVaQ0E5UFQwZ1UyTnZjR1ZMYVc1a0xrOXlaMVZ1YVhRZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUdGemMybG5ibTFsYm5RdWFXNW9aWEpwZEVSdmQyNGdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsWkM1elkyOXdaVWxrSUNFOVBTQnpZMjl3WlVsa0lDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBb1lYZGhhWFFnYVc1b1pYSnBkR0Z1WTJWQ2JHOWphMU5sY25acFkyVXVZMkYwWldkdmNubENiRzlqYTJWa1JtOXlRVzVqWlhOMGIzSW9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCelkyOXdaV1F1YzJOdmNHVkpaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWSlpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NHVnliV2x6YzJsdmJpNWpZWFJsWjI5eWVTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVZWEpuYzF4dUlDQWdJQ0FnSUNBZ0lDQWdLU2xjYmlBZ0lDQWdJQ0FnSUNBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0J0WVhSbGNtbGhiR2w2WldRdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaRG9nWENKY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUhSbGJtRnVkRWxrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjSEpwYm1OcGNHRnNTV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQndaWEp0YVhOemFXOXVTMlY1T2lCd1pYSnRhWE56YVc5dUxtdGxlU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsUzJsdVpEb2djMk52Y0dWa0xuTmpiM0JsUzJsdVpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhOamIzQmxTV1E2SUhOamIzQmxaQzV6WTI5d1pVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyOTFjbU5sUzJsdVpEb2dYQ0p5YjJ4bFgyRnpjMmxuYm0xbGJuUmNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITnZkWEpqWlVsa09pQmhjM05wWjI1dFpXNTBMbWxrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoY25SelFYUTZJR0Z6YzJsbmJtMWxiblF1YzNSaGNuUnpRWFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmxlSEJwY21WelFYUTZJR0Z6YzJsbmJtMWxiblF1Wlhod2FYSmxjMEYwTEZ4dUlDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1kzSmxZWFJsWkNBOUlHRjNZV2wwSUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ2JXRjBaWEpwWVd4cGVtVmtMbTFoY0Nnb2NHVnliV2x6YzJsdmJpa2dQVDVjYmlBZ0lDQWdJQ0FnZEdocGN5NWpjbVZoZEdVb1hHNGdJQ0FnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHVnVZVzUwT2lCd1pYSnRhWE56YVc5dUxuUmxibUZ1ZEVsa0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKcGJtTnBjR0ZzT2lCd1pYSnRhWE56YVc5dUxuQnlhVzVqYVhCaGJFbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NHVnliV2x6YzJsdmJrdGxlVG9nY0dWeWJXbHpjMmx2Ymk1d1pYSnRhWE56YVc5dVMyVjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyTnZjR1ZMYVc1a09pQndaWEp0YVhOemFXOXVMbk5qYjNCbFMybHVaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsU1dRNklIQmxjbTFwYzNOcGIyNHVjMk52Y0dWSlpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhOdmRYSmpaVXRwYm1RNklIQmxjbTFwYzNOcGIyNHVjMjkxY21ObFMybHVaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lITnZkWEpqWlVsa09pQndaWEp0YVhOemFXOXVMbk52ZFhKalpVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhjblJ6UVhRNklIQmxjbTFwYzNOcGIyNHVjM1JoY25SelFYUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCbGVIQnBjbVZ6UVhRNklIQmxjbTFwYzNOcGIyNHVaWGh3YVhKbGMwRjBMRnh1SUNBZ0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDQWdMaTR1WVhKbmMxeHVJQ0FnSUNBZ0lDQXBYRzRnSUNBZ0lDQXBYRzRnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnWTNKbFlYUmxaRHRjYmlBZ2ZWeHVYRzRnSUVCMGNtRnVjMkZqZEdsdmJtRnNLQ2xjYmlBZ1lYTjVibU1nY21WaWRXbHNaRVp2Y2xSbGJtRnVkQ2gwWlc1aGJuUkpaRG9nYzNSeWFXNW5MQ0F1TGk1aGNtZHpPaUJoYm5sYlhTazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJ5YVc1amFYQmhiSE1nUFNBb1lYZGhhWFFnYm1WM0lGQnlhVzVqYVhCaGJGTmxjblpwWTJVb0tTNXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tIQnlhVzVqYVhCaGJDa2dQVDRnYzJGdFpWUmxibUZ1ZENod2NtbHVZMmx3WVd3dWRHVnVZVzUwTENCMFpXNWhiblJKWkNrcE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2NISnBibU5wY0dGc0lHOW1JSEJ5YVc1amFYQmhiSE1wSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdWNtVmlkV2xzWkVadmNsQnlhVzVqYVhCaGJDaDBaVzVoYm5SSlpDd2djSEpwYm1OcGNHRnNMbWxrTENBdUxpNWhjbWR6S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
@@ -38,5 +38,5 @@ class GroupMembershipService extends utils_js_1.BaseModelService {
38
38
  }
39
39
  }
40
40
  exports.GroupMembershipService = GroupMembershipService;
41
- //# sourceMappingURL=group-membership.service.js.map
42
- //# sourceMappingURL=group-membership.service.cjs.map
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbWVzcGFjZXMvc2VydmljZXMvZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLHNCQUFpQjtBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLDhDQUF5QztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsK0JBQTRCO0FBRXZELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBaUM7SUFDM0U7UUFDRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FDdkIsUUFBZ0IsRUFDaEIsT0FBZSxFQUNmLFdBQW1CLEVBQ25CLFFBQWtDLEVBQ2xDLEdBQUcsSUFBVztRQUVkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEI7WUFDRSxNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxXQUFXO1lBQ3RCLFFBQVE7U0FDVCxFQUNELEdBQUcsSUFBSSxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDcEQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsV0FBbUIsRUFBRSxHQUFHLElBQVc7UUFDM0QsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsWUFBb0IsRUFBRSxHQUFHLElBQVc7UUFDakUsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxLQUFLLENBQUMsb0NBQW9DLENBQUMsV0FBbUIsRUFBRSxHQUFHLElBQVc7UUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDekUsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNsQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9DLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDdkYsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlTW9kZWxTZXJ2aWNlLCByZWxhdGlvbklkLCByZWxhdGlvbk1hdGNoIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXAgfSBmcm9tIFwiLi4vbW9kZWxzL2dyb3VwLW1lbWJlcnNoaXAubW9kZWxcIjtcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tIFwiLi9wcmluY2lwYWwuc2VydmljZVwiO1xuXG5leHBvcnQgY2xhc3MgR3JvdXBNZW1iZXJzaGlwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2U8R3JvdXBNZW1iZXJzaGlwPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEdyb3VwTWVtYmVyc2hpcCk7XG4gIH1cblxuICBhc3luYyBhZGRQcmluY2lwYWxUb0dyb3VwKFxuICAgIHRlbmFudElkOiBzdHJpbmcsXG4gICAgZ3JvdXBJZDogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEdyb3VwTWVtYmVyc2hpcD4ge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgIHtcbiAgICAgICAgdGVuYW50OiB0ZW5hbnRJZCxcbiAgICAgICAgZ3JvdXA6IGdyb3VwSWQsXG4gICAgICAgIHByaW5jaXBhbDogcHJpbmNpcGFsSWQsXG4gICAgICAgIG1ldGFkYXRhLFxuICAgICAgfSxcbiAgICAgIC4uLmFyZ3NcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbGlzdEdyb3VwTWVtYmVycyhncm91cElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxHcm91cE1lbWJlcnNoaXBbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5saXN0QWxsKC4uLmFyZ3MpKS5maWx0ZXIoKG1lbWJlcnNoaXApID0+IHJlbGF0aW9uTWF0Y2gobWVtYmVyc2hpcC5ncm91cCwgZ3JvdXBJZCkpO1xuICB9XG5cbiAgYXN5bmMgbGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8R3JvdXBNZW1iZXJzaGlwW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PiByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAucHJpbmNpcGFsLCBwcmluY2lwYWxJZCkpO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlUHJpbmNpcGFsRnJvbUdyb3VwKG1lbWJlcnNoaXBJZDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChtZW1iZXJzaGlwSWQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZUdyb3VwUHJpbmNpcGFsSWRzRm9yUHJpbmNpcGFsKHByaW5jaXBhbElkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHByaW5jaXBhbFNlcnZpY2UgPSBuZXcgUHJpbmNpcGFsU2VydmljZSgpO1xuICAgIGNvbnN0IG1lbWJlcnNoaXBzID0gYXdhaXQgdGhpcy5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICBjb25zdCBwcmluY2lwYWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBtZW1iZXJzaGlwcy5tYXAoYXN5bmMgKG1lbWJlcnNoaXApID0+IHtcbiAgICAgICAgY29uc3QgdGVuYW50SWQgPSByZWxhdGlvbklkKG1lbWJlcnNoaXAudGVuYW50KTtcbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IHJlbGF0aW9uSWQobWVtYmVyc2hpcC5ncm91cCk7XG4gICAgICAgIGNvbnN0IHByaW5jaXBhbCA9IGF3YWl0IHByaW5jaXBhbFNlcnZpY2UuZ2V0R3JvdXBQcmluY2lwYWwodGVuYW50SWQsIGdyb3VwSWQsIC4uLmFyZ3MpO1xuICAgICAgICByZXR1cm4gcHJpbmNpcGFsLmlkO1xuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBwcmluY2lwYWxzO1xuICB9XG59XG4iXX0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ3JvdXAtbWVtYmVyc2hpcC5zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUE0RTtBQUM1RSxxRkFBd0U7QUFDeEUsaUVBQTBEO0FBQzFELE1BQWEsc0JBQXVCLFNBQVEsMkJBQWdCO0lBQ3hEO1FBQ0ksS0FBSyxDQUFDLDJDQUFlLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUk7UUFDdkUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2YsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLE9BQU87WUFDZCxTQUFTLEVBQUUsV0FBVztZQUN0QixRQUFRO1NBQ1gsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtRQUNuQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQWEsRUFBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJO1FBQzFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBYSxFQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxHQUFHLElBQUk7UUFDaEQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxLQUFLLENBQUMsb0NBQW9DLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSTtRQUMzRCxNQUFNLGdCQUFnQixHQUFHLElBQUksdUNBQWdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBQSxxQkFBVSxFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHFCQUFVLEVBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLE1BQU0sU0FBUyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBaENELHdEQWdDQztBQUNELDh3SkFBOHdKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsU2VydmljZSwgcmVsYXRpb25JZCwgcmVsYXRpb25NYXRjaCB9IGZyb20gXCIuLy4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBHcm91cE1lbWJlcnNoaXAgfSBmcm9tIFwiLi8uLi9tb2RlbHMvZ3JvdXAtbWVtYmVyc2hpcC5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgUHJpbmNpcGFsU2VydmljZSB9IGZyb20gXCIuL3ByaW5jaXBhbC5zZXJ2aWNlLmpzXCI7XG5leHBvcnQgY2xhc3MgR3JvdXBNZW1iZXJzaGlwU2VydmljZSBleHRlbmRzIEJhc2VNb2RlbFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihHcm91cE1lbWJlcnNoaXApO1xuICAgIH1cbiAgICBhc3luYyBhZGRQcmluY2lwYWxUb0dyb3VwKHRlbmFudElkLCBncm91cElkLCBwcmluY2lwYWxJZCwgbWV0YWRhdGEsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHtcbiAgICAgICAgICAgIHRlbmFudDogdGVuYW50SWQsXG4gICAgICAgICAgICBncm91cDogZ3JvdXBJZCxcbiAgICAgICAgICAgIHByaW5jaXBhbDogcHJpbmNpcGFsSWQsXG4gICAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgfSwgLi4uYXJncyk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RHcm91cE1lbWJlcnMoZ3JvdXBJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PiByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAuZ3JvdXAsIGdyb3VwSWQpKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdFByaW5jaXBhbEdyb3VwcyhwcmluY2lwYWxJZCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubGlzdEFsbCguLi5hcmdzKSkuZmlsdGVyKChtZW1iZXJzaGlwKSA9PiByZWxhdGlvbk1hdGNoKG1lbWJlcnNoaXAucHJpbmNpcGFsLCBwcmluY2lwYWxJZCkpO1xuICAgIH1cbiAgICBhc3luYyByZW1vdmVQcmluY2lwYWxGcm9tR3JvdXAobWVtYmVyc2hpcElkLCAuLi5hcmdzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlQnlJZChtZW1iZXJzaGlwSWQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyByZXNvbHZlR3JvdXBQcmluY2lwYWxJZHNGb3JQcmluY2lwYWwocHJpbmNpcGFsSWQsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFsU2VydmljZSA9IG5ldyBQcmluY2lwYWxTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG1lbWJlcnNoaXBzID0gYXdhaXQgdGhpcy5saXN0UHJpbmNpcGFsR3JvdXBzKHByaW5jaXBhbElkLCAuLi5hcmdzKTtcbiAgICAgICAgY29uc3QgcHJpbmNpcGFscyA9IGF3YWl0IFByb21pc2UuYWxsKG1lbWJlcnNoaXBzLm1hcChhc3luYyAobWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGVuYW50SWQgPSByZWxhdGlvbklkKG1lbWJlcnNoaXAudGVuYW50KTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwSWQgPSByZWxhdGlvbklkKG1lbWJlcnNoaXAuZ3JvdXApO1xuICAgICAgICAgICAgY29uc3QgcHJpbmNpcGFsID0gYXdhaXQgcHJpbmNpcGFsU2VydmljZS5nZXRHcm91cFByaW5jaXBhbCh0ZW5hbnRJZCwgZ3JvdXBJZCwgLi4uYXJncyk7XG4gICAgICAgICAgICByZXR1cm4gcHJpbmNpcGFsLmlkO1xuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBwcmluY2lwYWxzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVozSnZkWEF0YldWdFltVnljMmhwY0M1elpYSjJhV05sTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwyNWhiV1Z6Y0dGalpYTXZjMlZ5ZG1salpYTXZaM0p2ZFhBdGJXVnRZbVZ5YzJocGNDNXpaWEoyYVdObExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNSVUZCUlN4blFrRkJaMElzUlVGQlJTeFZRVUZWTEVWQlFVVXNZVUZCWVN4RlFVRkZMSE5DUVVGcFFqdEJRVU4yUlN4UFFVRlBMRVZCUVVVc1pVRkJaU3hGUVVGRkxEaERRVUY1UXp0QlFVTnVSU3hQUVVGUExFVkJRVVVzWjBKQlFXZENMRVZCUVVVc0swSkJRVFJDTzBGQlJYWkVMRTFCUVUwc1QwRkJUeXh6UWtGQmRVSXNVMEZCVVN4blFrRkJhVU03U1VGRE0wVTdVVUZEUlN4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFVVkVMRXRCUVVzc1EwRkJReXh0UWtGQmJVSXNRMEZEZGtJc1VVRkJaMElzUlVGRGFFSXNUMEZCWlN4RlFVTm1MRmRCUVcxQ0xFVkJRMjVDTEZGQlFXdERMRVZCUTJ4RExFZEJRVWNzU1VGQlZ6dFJRVVZrTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkRhRUk3V1VGRFJTeE5RVUZOTEVWQlFVVXNVVUZCVVR0WlFVTm9RaXhMUVVGTExFVkJRVVVzVDBGQlR6dFpRVU5rTEZOQlFWTXNSVUZCUlN4WFFVRlhPMWxCUTNSQ0xGRkJRVkU3VTBGRFZDeEZRVU5FTEVkQlFVY3NTVUZCU1N4RFFVTlNMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFOUJRV1VzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZEY0VRc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RlFVRkZMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hITEVOQlFVTTdTVUZGUkN4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNWMEZCYlVJc1JVRkJSU3hIUVVGSExFbEJRVmM3VVVGRE0wUXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVlVGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJoSUxFTkJRVU03U1VGRlJDeExRVUZMTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zV1VGQmIwSXNSVUZCUlN4SFFVRkhMRWxCUVZjN1VVRkRha1VzVFVGQlRTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF5OURMRU5CUVVNN1NVRkZSQ3hMUVVGTExFTkJRVU1zYjBOQlFXOURMRU5CUVVNc1YwRkJiVUlzUlVGQlJTeEhRVUZITEVsQlFWYzdVVUZETlVVc1RVRkJUU3huUWtGQlowSXNSMEZCUnl4SlFVRkpMR2RDUVVGblFpeEZRVUZGTEVOQlFVTTdVVUZEYUVRc1RVRkJUU3hYUVVGWExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zVjBGQlZ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRla1VzVFVGQlRTeFZRVUZWTEVkQlFVY3NUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVOc1F5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hWUVVGVkxFVkJRVVVzUlVGQlJUdFpRVU51UXl4TlFVRk5MRkZCUVZFc1IwRkJSeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMWxCUXk5RExFMUJRVTBzVDBGQlR5eEhRVUZITEZWQlFWVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03V1VGRE4wTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1RVRkJUU3huUWtGQlowSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRGRrWXNUMEZCVHl4VFFVRlRMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRM1JDTEVOQlFVTXNRMEZCUXl4RFFVTklMRU5CUVVNN1VVRkRSaXhQUVVGUExGVkJRVlVzUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QkNZWE5sVFc5a1pXeFRaWEoyYVdObExDQnlaV3hoZEdsdmJrbGtMQ0J5Wld4aGRHbHZiazFoZEdOb0lIMGdabkp2YlNCY0lpNHVMM1YwYVd4elhDSTdYRzVwYlhCdmNuUWdleUJIY205MWNFMWxiV0psY25Ob2FYQWdmU0JtY205dElGd2lMaTR2Ylc5a1pXeHpMMmR5YjNWd0xXMWxiV0psY25Ob2FYQXViVzlrWld4Y0lqdGNibWx0Y0c5eWRDQjdJRkJ5YVc1amFYQmhiRk5sY25acFkyVWdmU0JtY205dElGd2lMaTl3Y21sdVkybHdZV3d1YzJWeWRtbGpaVndpTzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUjNKdmRYQk5aVzFpWlhKemFHbHdVMlZ5ZG1salpTQmxlSFJsYm1SeklFSmhjMlZOYjJSbGJGTmxjblpwWTJVOFIzSnZkWEJOWlcxaVpYSnphR2x3UGlCN1hHNGdJR052Ym5OMGNuVmpkRzl5S0NrZ2UxeHVJQ0FnSUhOMWNHVnlLRWR5YjNWd1RXVnRZbVZ5YzJocGNDazdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QmhaR1JRY21sdVkybHdZV3hVYjBkeWIzVndLRnh1SUNBZ0lIUmxibUZ1ZEVsa09pQnpkSEpwYm1jc1hHNGdJQ0FnWjNKdmRYQkpaRG9nYzNSeWFXNW5MRnh1SUNBZ0lIQnlhVzVqYVhCaGJFbGtPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2JXVjBZV1JoZEdFL09pQlNaV052Y21ROGMzUnlhVzVuTENCMWJtdHViM2R1UGl4Y2JpQWdJQ0F1TGk1aGNtZHpPaUJoYm5sYlhWeHVJQ0FwT2lCUWNtOXRhWE5sUEVkeWIzVndUV1Z0WW1WeWMyaHBjRDRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OeVpXRjBaU2hjYmlBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnZEdWdVlXNTBPaUIwWlc1aGJuUkpaQ3hjYmlBZ0lDQWdJQ0FnWjNKdmRYQTZJR2R5YjNWd1NXUXNYRzRnSUNBZ0lDQWdJSEJ5YVc1amFYQmhiRG9nY0hKcGJtTnBjR0ZzU1dRc1hHNGdJQ0FnSUNBZ0lHMWxkR0ZrWVhSaExGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDNHVMbUZ5WjNOY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nYkdsemRFZHliM1Z3VFdWdFltVnljeWhuY205MWNFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeEhjbTkxY0UxbGJXSmxjbk5vYVhCYlhUNGdlMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXNhWE4wUVd4c0tDNHVMbUZ5WjNNcEtTNW1hV3gwWlhJb0tHMWxiV0psY25Ob2FYQXBJRDArSUhKbGJHRjBhVzl1VFdGMFkyZ29iV1Z0WW1WeWMyaHBjQzVuY205MWNDd2daM0p2ZFhCSlpDa3BPMXh1SUNCOVhHNWNiaUFnWVhONWJtTWdiR2x6ZEZCeWFXNWphWEJoYkVkeWIzVndjeWh3Y21sdVkybHdZV3hKWkRvZ2MzUnlhVzVuTENBdUxpNWhjbWR6T2lCaGJubGJYU2s2SUZCeWIyMXBjMlU4UjNKdmRYQk5aVzFpWlhKemFHbHdXMTArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdLR0YzWVdsMElIUm9hWE11YkdsemRFRnNiQ2d1TGk1aGNtZHpLU2t1Wm1sc2RHVnlLQ2h0WlcxaVpYSnphR2x3S1NBOVBpQnlaV3hoZEdsdmJrMWhkR05vS0cxbGJXSmxjbk5vYVhBdWNISnBibU5wY0dGc0xDQndjbWx1WTJsd1lXeEpaQ2twTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nY21WdGIzWmxVSEpwYm1OcGNHRnNSbkp2YlVkeWIzVndLRzFsYldKbGNuTm9hWEJKWkRvZ2MzUnlhVzVuTENBdUxpNWhjbWR6T2lCaGJubGJYU2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lHRjNZV2wwSUhSb2FYTXVaR1ZzWlhSbFFubEpaQ2h0WlcxaVpYSnphR2x3U1dRc0lDNHVMbUZ5WjNNcE8xeHVJQ0I5WEc1Y2JpQWdZWE41Ym1NZ2NtVnpiMngyWlVkeWIzVndVSEpwYm1OcGNHRnNTV1J6Um05eVVISnBibU5wY0dGc0tIQnlhVzVqYVhCaGJFbGtPaUJ6ZEhKcGJtY3NJQzR1TG1GeVozTTZJR0Z1ZVZ0ZEtUb2dVSEp2YldselpUeHpkSEpwYm1kYlhUNGdlMXh1SUNBZ0lHTnZibk4wSUhCeWFXNWphWEJoYkZObGNuWnBZMlVnUFNCdVpYY2dVSEpwYm1OcGNHRnNVMlZ5ZG1salpTZ3BPMXh1SUNBZ0lHTnZibk4wSUcxbGJXSmxjbk5vYVhCeklEMGdZWGRoYVhRZ2RHaHBjeTVzYVhOMFVISnBibU5wY0dGc1IzSnZkWEJ6S0hCeWFXNWphWEJoYkVsa0xDQXVMaTVoY21kektUdGNiaUFnSUNCamIyNXpkQ0J3Y21sdVkybHdZV3h6SUQwZ1lYZGhhWFFnVUhKdmJXbHpaUzVoYkd3b1hHNGdJQ0FnSUNCdFpXMWlaWEp6YUdsd2N5NXRZWEFvWVhONWJtTWdLRzFsYldKbGNuTm9hWEFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RHVnVZVzUwU1dRZ1BTQnlaV3hoZEdsdmJrbGtLRzFsYldKbGNuTm9hWEF1ZEdWdVlXNTBLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaM0p2ZFhCSlpDQTlJSEpsYkdGMGFXOXVTV1FvYldWdFltVnljMmhwY0M1bmNtOTFjQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ5YVc1amFYQmhiQ0E5SUdGM1lXbDBJSEJ5YVc1amFYQmhiRk5sY25acFkyVXVaMlYwUjNKdmRYQlFjbWx1WTJsd1lXd29kR1Z1WVc1MFNXUXNJR2R5YjNWd1NXUXNJQzR1TG1GeVozTXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjSEpwYm1OcGNHRnNMbWxrTzF4dUlDQWdJQ0FnZlNsY2JpQWdJQ0FwTzF4dUlDQWdJSEpsZEhWeWJpQndjbWx1WTJsd1lXeHpPMXh1SUNCOVhHNTlYRzRpWFgwPSJdfQ==