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