@researchdatabox/redbox-core 5.0.3 → 5.0.4-beta.12498

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 (546) hide show
  1. package/dist/AttachmentStagingIdentity.d.ts +3 -0
  2. package/dist/AttachmentStagingIdentity.d.ts.map +1 -0
  3. package/dist/AttachmentStagingIdentity.js +10 -0
  4. package/dist/CoreController.d.ts +7 -3
  5. package/dist/CoreController.d.ts.map +1 -1
  6. package/dist/CoreController.js +85 -3
  7. package/dist/DatastreamService.d.ts +4 -0
  8. package/dist/DatastreamService.d.ts.map +1 -1
  9. package/dist/HarvestRunService.d.ts +4 -3
  10. package/dist/HarvestRunService.d.ts.map +1 -1
  11. package/dist/HarvestRunService.js +1 -1
  12. package/dist/RecordConcurrencyObservability.d.ts +51 -0
  13. package/dist/RecordConcurrencyObservability.d.ts.map +1 -0
  14. package/dist/RecordConcurrencyObservability.js +136 -0
  15. package/dist/RecordEntityTag.d.ts +31 -0
  16. package/dist/RecordEntityTag.d.ts.map +1 -0
  17. package/dist/RecordEntityTag.js +101 -0
  18. package/dist/RecordFormFingerprint.d.ts +7 -0
  19. package/dist/RecordFormFingerprint.d.ts.map +1 -0
  20. package/dist/RecordFormFingerprint.js +106 -0
  21. package/dist/RecordHttpConcurrency.d.ts +60 -0
  22. package/dist/RecordHttpConcurrency.d.ts.map +1 -0
  23. package/dist/RecordHttpConcurrency.js +181 -0
  24. package/dist/RecordSaveResponse.d.ts +219 -0
  25. package/dist/RecordSaveResponse.d.ts.map +1 -0
  26. package/dist/RecordSaveResponse.js +639 -0
  27. package/dist/RecordStorageConcurrency.d.ts +48 -0
  28. package/dist/RecordStorageConcurrency.d.ts.map +1 -0
  29. package/dist/RecordStorageConcurrency.js +103 -0
  30. package/dist/RecordWriteClassification.d.ts +12 -0
  31. package/dist/RecordWriteClassification.d.ts.map +1 -0
  32. package/dist/RecordWriteClassification.js +70 -0
  33. package/dist/RecordsService.d.ts +105 -12
  34. package/dist/RecordsService.d.ts.map +1 -1
  35. package/dist/RecordsService.js +44 -1
  36. package/dist/SearchService.d.ts +2 -1
  37. package/dist/SearchService.d.ts.map +1 -1
  38. package/dist/StorageService.d.ts +48 -8
  39. package/dist/StorageService.d.ts.map +1 -1
  40. package/dist/StorageService.js +19 -1
  41. package/dist/StorageServiceResponse.d.ts +22 -1
  42. package/dist/StorageServiceResponse.d.ts.map +1 -1
  43. package/dist/StorageServiceResponse.js +22 -4
  44. package/dist/action-execution/audit.d.ts +41 -0
  45. package/dist/action-execution/audit.d.ts.map +1 -0
  46. package/dist/action-execution/audit.js +122 -0
  47. package/dist/action-execution/executor.d.ts +24 -0
  48. package/dist/action-execution/executor.d.ts.map +1 -0
  49. package/dist/action-execution/executor.js +435 -0
  50. package/dist/action-execution/failure.d.ts +49 -0
  51. package/dist/action-execution/failure.d.ts.map +1 -0
  52. package/dist/action-execution/failure.js +129 -0
  53. package/dist/action-execution/index.d.ts +7 -0
  54. package/dist/action-execution/index.d.ts.map +1 -0
  55. package/dist/action-execution/index.js +23 -0
  56. package/dist/action-execution/legacy-result.d.ts +21 -0
  57. package/dist/action-execution/legacy-result.d.ts.map +1 -0
  58. package/dist/action-execution/legacy-result.js +70 -0
  59. package/dist/action-execution/policy.d.ts +12 -0
  60. package/dist/action-execution/policy.d.ts.map +1 -0
  61. package/dist/action-execution/policy.js +138 -0
  62. package/dist/action-execution/types.d.ts +121 -0
  63. package/dist/action-execution/types.d.ts.map +1 -0
  64. package/dist/action-execution/types.js +22 -0
  65. package/dist/api-routes/groups/branding.d.ts +8 -0
  66. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  67. package/dist/api-routes/groups/branding.js +86 -11
  68. package/dist/api-routes/groups/dashboard-config.d.ts +12 -9
  69. package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
  70. package/dist/api-routes/groups/dashboard-config.js +136 -73
  71. package/dist/api-routes/groups/forms.d.ts.map +1 -1
  72. package/dist/api-routes/groups/forms.js +10 -2
  73. package/dist/api-routes/groups/record-schemas.d.ts +5 -0
  74. package/dist/api-routes/groups/record-schemas.d.ts.map +1 -0
  75. package/dist/api-routes/groups/record-schemas.js +181 -0
  76. package/dist/api-routes/groups/records.d.ts +1 -0
  77. package/dist/api-routes/groups/records.d.ts.map +1 -1
  78. package/dist/api-routes/groups/records.js +141 -26
  79. package/dist/api-routes/index.d.ts +3 -0
  80. package/dist/api-routes/index.d.ts.map +1 -1
  81. package/dist/api-routes/index.js +4 -1
  82. package/dist/api-routes/openapi.d.ts.map +1 -1
  83. package/dist/api-routes/openapi.js +7 -5
  84. package/dist/api-routes/record-schema-openapi.d.ts +26 -0
  85. package/dist/api-routes/record-schema-openapi.d.ts.map +1 -0
  86. package/dist/api-routes/record-schema-openapi.js +38 -0
  87. package/dist/api-routes/record-schema-response.d.ts +40 -0
  88. package/dist/api-routes/record-schema-response.d.ts.map +1 -0
  89. package/dist/api-routes/record-schema-response.js +89 -0
  90. package/dist/api-routes/request-extraction.d.ts.map +1 -1
  91. package/dist/api-routes/request-extraction.js +10 -8
  92. package/dist/api-routes/route-factory.d.ts.map +1 -1
  93. package/dist/api-routes/route-factory.js +2 -1
  94. package/dist/api-routes/route-registry.d.ts.map +1 -1
  95. package/dist/api-routes/route-registry.js +3 -1
  96. package/dist/api-routes/schemas/common.d.ts +36 -0
  97. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  98. package/dist/api-routes/schemas/common.js +95 -5
  99. package/dist/api-routes/schemas/responses.d.ts +1424 -1
  100. package/dist/api-routes/schemas/responses.d.ts.map +1 -1
  101. package/dist/api-routes/schemas/responses.js +382 -60
  102. package/dist/api-routes/types.d.ts +1 -0
  103. package/dist/api-routes/types.d.ts.map +1 -1
  104. package/dist/api-routes/validation.d.ts +5 -1
  105. package/dist/api-routes/validation.d.ts.map +1 -1
  106. package/dist/api-routes/validation.js +14 -15
  107. package/dist/bootstrap.d.ts +3 -1
  108. package/dist/bootstrap.d.ts.map +1 -1
  109. package/dist/bootstrap.js +58 -41
  110. package/dist/config/agendaQueue.config.d.ts +3 -0
  111. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  112. package/dist/config/agendaQueue.config.js +29 -2
  113. package/dist/config/branding.config.d.ts +13 -0
  114. package/dist/config/branding.config.d.ts.map +1 -1
  115. package/dist/config/branding.config.js +34 -2
  116. package/dist/config/brandingConfigurationDefaults.config.d.ts +4 -0
  117. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  118. package/dist/config/brandingConfigurationDefaults.config.js +42 -3
  119. package/dist/config/index.d.ts +12 -4
  120. package/dist/config/index.d.ts.map +1 -1
  121. package/dist/config/index.js +7 -4
  122. package/dist/config/policies.config.d.ts.map +1 -1
  123. package/dist/config/policies.config.js +37 -23
  124. package/dist/config/raid.config.d.ts +7 -4
  125. package/dist/config/raid.config.d.ts.map +1 -1
  126. package/dist/config/raid.config.js +21 -35
  127. package/dist/config/record.config.d.ts +3 -0
  128. package/dist/config/record.config.d.ts.map +1 -1
  129. package/dist/config/record.config.js +37 -35
  130. package/dist/config/recordSchema.config.d.ts +68 -0
  131. package/dist/config/recordSchema.config.d.ts.map +1 -0
  132. package/dist/config/recordSchema.config.js +173 -0
  133. package/dist/config/recordValidation.config.d.ts +19 -0
  134. package/dist/config/recordValidation.config.d.ts.map +1 -0
  135. package/dist/config/recordValidation.config.js +10 -0
  136. package/dist/config/recordtype.config.d.ts +32 -9
  137. package/dist/config/recordtype.config.d.ts.map +1 -1
  138. package/dist/config/recordtype.config.js +4 -7
  139. package/dist/config/routes.config.d.ts.map +1 -1
  140. package/dist/config/routes.config.js +135 -53
  141. package/dist/config/workflow.config.d.ts +6 -0
  142. package/dist/config/workflow.config.d.ts.map +1 -1
  143. package/dist/config/workflow.config.js +1 -1
  144. package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
  145. package/dist/configmodels/AdminSidebarConfig.js +4 -2
  146. package/dist/configmodels/ConfigModels.d.ts +1 -1
  147. package/dist/configmodels/ConfigModels.d.ts.map +1 -1
  148. package/dist/configmodels/ConfigModels.js +26 -9
  149. package/dist/configmodels/DashboardFieldCatalogue.d.ts +67 -0
  150. package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +1 -0
  151. package/dist/configmodels/DashboardFieldCatalogue.js +174 -0
  152. package/dist/configmodels/DashboardSettings.d.ts +191 -0
  153. package/dist/configmodels/DashboardSettings.d.ts.map +1 -0
  154. package/dist/configmodels/DashboardSettings.js +705 -0
  155. package/dist/configmodels/OniPublishing.d.ts +205 -0
  156. package/dist/configmodels/OniPublishing.d.ts.map +1 -0
  157. package/dist/configmodels/OniPublishing.js +335 -0
  158. package/dist/configmodels/RaidPublishing.d.ts +97 -0
  159. package/dist/configmodels/RaidPublishing.d.ts.map +1 -0
  160. package/dist/configmodels/RaidPublishing.js +35 -0
  161. package/dist/configmodels/WebAnalytics.d.ts +55 -0
  162. package/dist/configmodels/WebAnalytics.d.ts.map +1 -0
  163. package/dist/configmodels/WebAnalytics.js +61 -0
  164. package/dist/controllers/AppConfigController.d.ts.map +1 -1
  165. package/dist/controllers/AppConfigController.js +4 -1
  166. package/dist/controllers/BrandingAppController.d.ts +29 -7
  167. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  168. package/dist/controllers/BrandingAppController.js +265 -69
  169. package/dist/controllers/BrandingController.d.ts +24 -1
  170. package/dist/controllers/BrandingController.d.ts.map +1 -1
  171. package/dist/controllers/BrandingController.js +173 -43
  172. package/dist/controllers/BrandingControllerSupport.d.ts +20 -0
  173. package/dist/controllers/BrandingControllerSupport.d.ts.map +1 -0
  174. package/dist/controllers/BrandingControllerSupport.js +80 -0
  175. package/dist/controllers/DashboardConfigController.d.ts +6 -2
  176. package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
  177. package/dist/controllers/DashboardConfigController.js +18 -4
  178. package/dist/controllers/DynamicAssetController.d.ts +7 -5
  179. package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
  180. package/dist/controllers/DynamicAssetController.js +21 -12
  181. package/dist/controllers/RecordController.d.ts +45 -4
  182. package/dist/controllers/RecordController.d.ts.map +1 -1
  183. package/dist/controllers/RecordController.js +778 -345
  184. package/dist/controllers/index.d.ts.map +1 -1
  185. package/dist/controllers/index.js +4 -1
  186. package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
  187. package/dist/controllers/webservice/AdminController.js +4 -3
  188. package/dist/controllers/webservice/BrandingController.d.ts +26 -1
  189. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  190. package/dist/controllers/webservice/BrandingController.js +292 -116
  191. package/dist/controllers/webservice/DashboardConfigController.d.ts +25 -17
  192. package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
  193. package/dist/controllers/webservice/DashboardConfigController.js +90 -205
  194. package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
  195. package/dist/controllers/webservice/FormManagementController.js +37 -3
  196. package/dist/controllers/webservice/RecordController.d.ts +15 -1
  197. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  198. package/dist/controllers/webservice/RecordController.js +647 -267
  199. package/dist/controllers/webservice/RecordSchemaController.d.ts +32 -0
  200. package/dist/controllers/webservice/RecordSchemaController.d.ts.map +1 -0
  201. package/dist/controllers/webservice/RecordSchemaController.js +356 -0
  202. package/dist/controllers/webservice/RecordTypeController.d.ts +6 -1
  203. package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
  204. package/dist/controllers/webservice/RecordTypeController.js +21 -3
  205. package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
  206. package/dist/controllers/webservice/SearchController.js +7 -3
  207. package/dist/hooks/defineRedboxHook.d.ts +3 -0
  208. package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
  209. package/dist/hooks/defineRedboxHook.js +4 -1
  210. package/dist/index.d.ts +50 -23
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +90 -2
  213. package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
  214. package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
  215. package/dist/loader/bootstrapShimRuntime.js +20 -12
  216. package/dist/loader/index.d.ts +9 -0
  217. package/dist/loader/index.d.ts.map +1 -1
  218. package/dist/loader/index.js +93 -4
  219. package/dist/model/BrandingTypeface.d.ts +70 -0
  220. package/dist/model/BrandingTypeface.d.ts.map +1 -0
  221. package/dist/model/BrandingTypeface.js +116 -0
  222. package/dist/model/BuildResponse.d.ts +25 -11
  223. package/dist/model/BuildResponse.d.ts.map +1 -1
  224. package/dist/model/BuildResponse.js +4 -3
  225. package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
  226. package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
  227. package/dist/model/DashboardTypeResponseModel.js +7 -1
  228. package/dist/model/DashboardViewResponseModel.d.ts +5 -1
  229. package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
  230. package/dist/model/DashboardViewResponseModel.js +6 -3
  231. package/dist/model/RBValidationError.d.ts +17 -0
  232. package/dist/model/RBValidationError.d.ts.map +1 -1
  233. package/dist/model/RBValidationError.js +37 -1
  234. package/dist/model/RecordTypeResponseModel.d.ts +12 -4
  235. package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
  236. package/dist/model/RecordTypeResponseModel.js +11 -2
  237. package/dist/model/index.d.ts +5 -1
  238. package/dist/model/index.d.ts.map +1 -1
  239. package/dist/model/index.js +5 -2
  240. package/dist/model/record-contract.d.ts +42 -0
  241. package/dist/model/record-contract.d.ts.map +1 -0
  242. package/dist/model/record-contract.js +3 -0
  243. package/dist/model/storage/BrandingModel.d.ts +7 -0
  244. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  245. package/dist/model/storage/BrandingModel.js +7 -1
  246. package/dist/model/storage/DeletedRecordModel.d.ts +35 -0
  247. package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
  248. package/dist/model/storage/DeletedRecordModel.js +62 -1
  249. package/dist/model/storage/IntegrationAuditModel.d.ts +16 -2
  250. package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
  251. package/dist/model/storage/IntegrationAuditModel.js +15 -1
  252. package/dist/model/storage/RecordAuditModel.d.ts +11 -1
  253. package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
  254. package/dist/model/storage/RecordAuditModel.js +8 -2
  255. package/dist/model/storage/RecordModel.d.ts +6 -0
  256. package/dist/model/storage/RecordModel.d.ts.map +1 -1
  257. package/dist/model/storage/RecordTypeModel.d.ts +6 -0
  258. package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
  259. package/dist/model/storage/RecordTypeModel.js +4 -1
  260. package/dist/model/storage/index.d.ts +12 -10
  261. package/dist/model/storage/index.d.ts.map +1 -1
  262. package/dist/model/storage/index.js +24 -2
  263. package/dist/model/storage/record-schema.d.ts +115 -0
  264. package/dist/model/storage/record-schema.d.ts.map +1 -0
  265. package/dist/model/storage/record-schema.js +3 -0
  266. package/dist/policies/checkAuth.d.ts +2 -6
  267. package/dist/policies/checkAuth.d.ts.map +1 -1
  268. package/dist/policies/checkAuth.js +32 -9
  269. package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
  270. package/dist/policies/contentSecurityPolicy.js +85 -2
  271. package/dist/policies/index.d.ts +3 -2
  272. package/dist/policies/index.d.ts.map +1 -1
  273. package/dist/policies/index.js +4 -2
  274. package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
  275. package/dist/policies/validateApiContractRequest.js +49 -11
  276. package/dist/record-contract/ajv-error-mapper.d.ts +34 -0
  277. package/dist/record-contract/ajv-error-mapper.d.ts.map +1 -0
  278. package/dist/record-contract/ajv-error-mapper.js +153 -0
  279. package/dist/record-contract/canonical-json.d.ts +20 -0
  280. package/dist/record-contract/canonical-json.d.ts.map +1 -0
  281. package/dist/record-contract/canonical-json.js +126 -0
  282. package/dist/record-contract/codes.d.ts +36 -0
  283. package/dist/record-contract/codes.d.ts.map +1 -0
  284. package/dist/record-contract/codes.js +38 -0
  285. package/dist/record-contract/contributor-registry.d.ts +76 -0
  286. package/dist/record-contract/contributor-registry.d.ts.map +1 -0
  287. package/dist/record-contract/contributor-registry.js +126 -0
  288. package/dist/record-contract/core-contributors.d.ts +44 -0
  289. package/dist/record-contract/core-contributors.d.ts.map +1 -0
  290. package/dist/record-contract/core-contributors.js +395 -0
  291. package/dist/record-contract/deep-freeze.d.ts +3 -0
  292. package/dist/record-contract/deep-freeze.d.ts.map +1 -0
  293. package/dist/record-contract/deep-freeze.js +23 -0
  294. package/dist/record-contract/index.d.ts +13 -0
  295. package/dist/record-contract/index.d.ts.map +1 -0
  296. package/dist/record-contract/index.js +29 -0
  297. package/dist/record-contract/json-pointer.d.ts +20 -0
  298. package/dist/record-contract/json-pointer.d.ts.map +1 -0
  299. package/dist/record-contract/json-pointer.js +70 -0
  300. package/dist/record-contract/json-schema-renderer.d.ts +51 -0
  301. package/dist/record-contract/json-schema-renderer.d.ts.map +1 -0
  302. package/dist/record-contract/json-schema-renderer.js +450 -0
  303. package/dist/record-contract/record-contract-compiler.d.ts +42 -0
  304. package/dist/record-contract/record-contract-compiler.d.ts.map +1 -0
  305. package/dist/record-contract/record-contract-compiler.js +775 -0
  306. package/dist/record-contract/record-contract-context.d.ts +91 -0
  307. package/dist/record-contract/record-contract-context.d.ts.map +1 -0
  308. package/dist/record-contract/record-contract-context.js +39 -0
  309. package/dist/record-contract/record-json-schema-artifact.d.ts +74 -0
  310. package/dist/record-contract/record-json-schema-artifact.d.ts.map +1 -0
  311. package/dist/record-contract/record-json-schema-artifact.js +309 -0
  312. package/dist/record-contract/record-json-schema-etag.d.ts +15 -0
  313. package/dist/record-contract/record-json-schema-etag.d.ts.map +1 -0
  314. package/dist/record-contract/record-json-schema-etag.js +41 -0
  315. package/dist/record-contract/types.d.ts +151 -0
  316. package/dist/record-contract/types.d.ts.map +1 -0
  317. package/dist/record-contract/types.js +6 -0
  318. package/dist/services/AppConfigService.d.ts +6 -0
  319. package/dist/services/AppConfigService.d.ts.map +1 -1
  320. package/dist/services/AppConfigService.js +23 -1
  321. package/dist/services/AttachmentMetadataService.d.ts +58 -0
  322. package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
  323. package/dist/services/AttachmentMetadataService.js +643 -8
  324. package/dist/services/BrandingLogoService.d.ts +6 -1
  325. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  326. package/dist/services/BrandingLogoService.js +77 -9
  327. package/dist/services/BrandingService.d.ts +171 -9
  328. package/dist/services/BrandingService.d.ts.map +1 -1
  329. package/dist/services/BrandingService.js +572 -68
  330. package/dist/services/BrandingThemeCssService.d.ts +17 -1
  331. package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
  332. package/dist/services/BrandingThemeCssService.js +71 -9
  333. package/dist/services/BrandingTypefaceService.d.ts +74 -0
  334. package/dist/services/BrandingTypefaceService.d.ts.map +1 -0
  335. package/dist/services/BrandingTypefaceService.js +359 -0
  336. package/dist/services/BrandingWoff2Inspector.d.ts +17 -0
  337. package/dist/services/BrandingWoff2Inspector.d.ts.map +1 -0
  338. package/dist/services/BrandingWoff2Inspector.js +402 -0
  339. package/dist/services/DashboardConfigService.d.ts +214 -54
  340. package/dist/services/DashboardConfigService.d.ts.map +1 -1
  341. package/dist/services/DashboardConfigService.js +829 -261
  342. package/dist/services/DashboardLegacyConversion.d.ts +82 -0
  343. package/dist/services/DashboardLegacyConversion.d.ts.map +1 -0
  344. package/dist/services/DashboardLegacyConversion.js +427 -0
  345. package/dist/services/DashboardTypesService.d.ts +15 -4
  346. package/dist/services/DashboardTypesService.d.ts.map +1 -1
  347. package/dist/services/DashboardTypesService.js +72 -139
  348. package/dist/services/DoiService.d.ts +1 -1
  349. package/dist/services/DoiService.d.ts.map +1 -1
  350. package/dist/services/DoiService.js +71 -45
  351. package/dist/services/FigshareService.d.ts +1 -1
  352. package/dist/services/FigshareService.d.ts.map +1 -1
  353. package/dist/services/FigshareService.js +73 -32
  354. package/dist/services/FormRecordConsistencyService.d.ts +8 -23
  355. package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
  356. package/dist/services/FormRecordConsistencyService.js +54 -70
  357. package/dist/services/FormsService.d.ts +91 -2
  358. package/dist/services/FormsService.d.ts.map +1 -1
  359. package/dist/services/FormsService.js +324 -64
  360. package/dist/services/HarvestRunService.d.ts +6 -3
  361. package/dist/services/HarvestRunService.d.ts.map +1 -1
  362. package/dist/services/HarvestRunService.js +161 -97
  363. package/dist/services/I18nEntriesService.d.ts +1 -0
  364. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  365. package/dist/services/I18nEntriesService.js +26 -6
  366. package/dist/services/OniService.d.ts +19 -62
  367. package/dist/services/OniService.d.ts.map +1 -1
  368. package/dist/services/OniService.js +223 -691
  369. package/dist/services/RDMPService.d.ts +1 -1
  370. package/dist/services/RDMPService.d.ts.map +1 -1
  371. package/dist/services/RDMPService.js +5 -5
  372. package/dist/services/RaidService.d.ts +19 -61
  373. package/dist/services/RaidService.d.ts.map +1 -1
  374. package/dist/services/RaidService.js +191 -530
  375. package/dist/services/RecordSchemaService.d.ts +440 -0
  376. package/dist/services/RecordSchemaService.d.ts.map +1 -0
  377. package/dist/services/RecordSchemaService.js +3061 -0
  378. package/dist/services/RecordTypesService.d.ts +29 -0
  379. package/dist/services/RecordTypesService.d.ts.map +1 -1
  380. package/dist/services/RecordTypesService.js +106 -11
  381. package/dist/services/RecordValidationService.d.ts +340 -0
  382. package/dist/services/RecordValidationService.d.ts.map +1 -0
  383. package/dist/services/RecordValidationService.js +1898 -0
  384. package/dist/services/RecordsService.d.ts +313 -22
  385. package/dist/services/RecordsService.d.ts.map +1 -1
  386. package/dist/services/RecordsService.js +4948 -509
  387. package/dist/services/SolrSearchService.d.ts +1 -1
  388. package/dist/services/SolrSearchService.d.ts.map +1 -1
  389. package/dist/services/SolrSearchService.js +42 -12
  390. package/dist/services/StandardDatastreamService.d.ts +4 -0
  391. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  392. package/dist/services/StandardDatastreamService.js +106 -44
  393. package/dist/services/TriggerService.d.ts.map +1 -1
  394. package/dist/services/TriggerService.js +54 -30
  395. package/dist/services/UsersService.d.ts +2 -1
  396. package/dist/services/UsersService.d.ts.map +1 -1
  397. package/dist/services/UsersService.js +364 -283
  398. package/dist/services/VocabularyService.d.ts +2 -0
  399. package/dist/services/VocabularyService.d.ts.map +1 -1
  400. package/dist/services/VocabularyService.js +61 -2
  401. package/dist/services/WorkflowStepsService.d.ts +11 -0
  402. package/dist/services/WorkflowStepsService.d.ts.map +1 -1
  403. package/dist/services/WorkflowStepsService.js +32 -3
  404. package/dist/services/WorkspaceService.d.ts +2 -2
  405. package/dist/services/WorkspaceService.d.ts.map +1 -1
  406. package/dist/services/WorkspaceService.js +5 -5
  407. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  408. package/dist/services/doi-v2/bindings.js +3 -20
  409. package/dist/services/doi-v2/config.d.ts +1 -0
  410. package/dist/services/doi-v2/config.d.ts.map +1 -1
  411. package/dist/services/doi-v2/config.js +13 -5
  412. package/dist/services/doi-v2/runtime.d.ts.map +1 -1
  413. package/dist/services/doi-v2/runtime.js +14 -54
  414. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  415. package/dist/services/figshare-v2/bindings.js +3 -20
  416. package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
  417. package/dist/services/figshare-v2/runtime.js +11 -58
  418. package/dist/services/form-record-access-user.d.ts +3 -0
  419. package/dist/services/form-record-access-user.d.ts.map +1 -0
  420. package/dist/services/form-record-access-user.js +23 -0
  421. package/dist/services/index.d.ts +9 -0
  422. package/dist/services/index.d.ts.map +1 -1
  423. package/dist/services/index.js +45 -3
  424. package/dist/services/integration-v2/bindings.d.ts +3 -0
  425. package/dist/services/integration-v2/bindings.d.ts.map +1 -0
  426. package/dist/services/integration-v2/bindings.js +91 -0
  427. package/dist/services/integration-v2/runtime.d.ts +3 -0
  428. package/dist/services/integration-v2/runtime.d.ts.map +1 -0
  429. package/dist/services/integration-v2/runtime.js +50 -0
  430. package/dist/services/internal-record-schema-authorization.d.ts +8 -0
  431. package/dist/services/internal-record-schema-authorization.d.ts.map +1 -0
  432. package/dist/services/internal-record-schema-authorization.js +16 -0
  433. package/dist/services/oni-v2/audit.d.ts +19 -0
  434. package/dist/services/oni-v2/audit.d.ts.map +1 -0
  435. package/dist/services/oni-v2/audit.js +50 -0
  436. package/dist/services/oni-v2/bindings.d.ts +7 -0
  437. package/dist/services/oni-v2/bindings.d.ts.map +1 -0
  438. package/dist/services/oni-v2/bindings.js +31 -0
  439. package/dist/services/oni-v2/config.d.ts +12 -0
  440. package/dist/services/oni-v2/config.d.ts.map +1 -0
  441. package/dist/services/oni-v2/config.js +134 -0
  442. package/dist/services/oni-v2/context.d.ts +3 -0
  443. package/dist/services/oni-v2/context.d.ts.map +1 -0
  444. package/dist/services/oni-v2/context.js +17 -0
  445. package/dist/services/oni-v2/crate.d.ts +17 -0
  446. package/dist/services/oni-v2/crate.d.ts.map +1 -0
  447. package/dist/services/oni-v2/crate.js +504 -0
  448. package/dist/services/oni-v2/flydriveOcflStore.d.ts +69 -0
  449. package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +1 -0
  450. package/dist/services/oni-v2/flydriveOcflStore.js +325 -0
  451. package/dist/services/oni-v2/ingestion.d.ts +37 -0
  452. package/dist/services/oni-v2/ingestion.d.ts.map +1 -0
  453. package/dist/services/oni-v2/ingestion.js +91 -0
  454. package/dist/services/oni-v2/mapping.d.ts +17 -0
  455. package/dist/services/oni-v2/mapping.d.ts.map +1 -0
  456. package/dist/services/oni-v2/mapping.js +137 -0
  457. package/dist/services/oni-v2/repository.d.ts +9 -0
  458. package/dist/services/oni-v2/repository.d.ts.map +1 -0
  459. package/dist/services/oni-v2/repository.js +180 -0
  460. package/dist/services/oni-v2/runtime.d.ts +23 -0
  461. package/dist/services/oni-v2/runtime.d.ts.map +1 -0
  462. package/dist/services/oni-v2/runtime.js +121 -0
  463. package/dist/services/oni-v2/templating.d.ts +11 -0
  464. package/dist/services/oni-v2/templating.d.ts.map +1 -0
  465. package/dist/services/oni-v2/templating.js +27 -0
  466. package/dist/services/oni-v2/types.d.ts +100 -0
  467. package/dist/services/oni-v2/types.d.ts.map +1 -0
  468. package/dist/services/oni-v2/types.js +3 -0
  469. package/dist/services/raid-v2/audit.d.ts +10 -0
  470. package/dist/services/raid-v2/audit.d.ts.map +1 -0
  471. package/dist/services/raid-v2/audit.js +29 -0
  472. package/dist/services/raid-v2/errors.d.ts +85 -0
  473. package/dist/services/raid-v2/errors.d.ts.map +1 -0
  474. package/dist/services/raid-v2/errors.js +36 -0
  475. package/dist/services/raid-v2/http.d.ts +4 -0
  476. package/dist/services/raid-v2/http.d.ts.map +1 -0
  477. package/dist/services/raid-v2/http.js +84 -0
  478. package/dist/services/raid-v2/logger.d.ts +8 -0
  479. package/dist/services/raid-v2/logger.d.ts.map +1 -0
  480. package/dist/services/raid-v2/logger.js +30 -0
  481. package/dist/services/raid-v2/mapping.d.ts +9 -0
  482. package/dist/services/raid-v2/mapping.d.ts.map +1 -0
  483. package/dist/services/raid-v2/mapping.js +168 -0
  484. package/dist/services/raid-v2/runtime.d.ts +5 -0
  485. package/dist/services/raid-v2/runtime.d.ts.map +1 -0
  486. package/dist/services/raid-v2/runtime.js +135 -0
  487. package/dist/services/raid-v2/tags.d.ts +11 -0
  488. package/dist/services/raid-v2/tags.d.ts.map +1 -0
  489. package/dist/services/raid-v2/tags.js +12 -0
  490. package/dist/services/raid-v2/types.d.ts +66 -0
  491. package/dist/services/raid-v2/types.d.ts.map +1 -0
  492. package/dist/services/raid-v2/types.js +3 -0
  493. package/dist/services/record-hooks/coordinator.d.ts +64 -0
  494. package/dist/services/record-hooks/coordinator.d.ts.map +1 -0
  495. package/dist/services/record-hooks/coordinator.js +276 -0
  496. package/dist/visitor/client.visitor.d.ts +6 -0
  497. package/dist/visitor/client.visitor.d.ts.map +1 -1
  498. package/dist/visitor/client.visitor.js +59 -14
  499. package/dist/visitor/construct.visitor.d.ts +27 -1
  500. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  501. package/dist/visitor/construct.visitor.js +265 -177
  502. package/dist/visitor/context-variables.visitor.d.ts +3 -1
  503. package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
  504. package/dist/visitor/context-variables.visitor.js +15 -1
  505. package/dist/visitor/data-value.visitor.d.ts +6 -0
  506. package/dist/visitor/data-value.visitor.d.ts.map +1 -1
  507. package/dist/visitor/data-value.visitor.js +10 -1
  508. package/dist/visitor/json-type-def.visitor.d.ts +6 -0
  509. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  510. package/dist/visitor/json-type-def.visitor.js +10 -1
  511. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +11 -0
  512. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  513. package/dist/visitor/migrate-config-v4-v5.visitor.js +228 -133
  514. package/dist/visitor/related-object-data-inline.visitor.d.ts +31 -0
  515. package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -0
  516. package/dist/visitor/related-object-data-inline.visitor.js +96 -0
  517. package/dist/visitor/template.visitor.d.ts +17 -2
  518. package/dist/visitor/template.visitor.d.ts.map +1 -1
  519. package/dist/visitor/template.visitor.js +60 -22
  520. package/dist/visitor/validator.visitor.d.ts +49 -7
  521. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  522. package/dist/visitor/validator.visitor.js +275 -178
  523. package/dist/waterline-models/AttachmentMetadata.d.ts +22 -0
  524. package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
  525. package/dist/waterline-models/AttachmentMetadata.js +147 -3
  526. package/dist/waterline-models/BrandingConfig.d.ts +7 -0
  527. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  528. package/dist/waterline-models/BrandingConfig.js +16 -1
  529. package/dist/waterline-models/BrandingConfigHistory.d.ts +11 -2
  530. package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
  531. package/dist/waterline-models/BrandingConfigHistory.js +21 -1
  532. package/dist/waterline-models/DashboardConfiguration.d.ts +29 -0
  533. package/dist/waterline-models/DashboardConfiguration.d.ts.map +1 -0
  534. package/dist/waterline-models/DashboardConfiguration.js +52 -0
  535. package/dist/waterline-models/RecordType.d.ts +9 -0
  536. package/dist/waterline-models/RecordType.d.ts.map +1 -1
  537. package/dist/waterline-models/RecordType.js +16 -1
  538. package/dist/waterline-models/User.d.ts.map +1 -1
  539. package/dist/waterline-models/User.js +10 -15
  540. package/dist/waterline-models/index.d.ts +2 -0
  541. package/dist/waterline-models/index.d.ts.map +1 -1
  542. package/dist/waterline-models/index.js +4 -1
  543. package/package.json +60 -47
  544. package/dist/config/datapubs.config.d.ts +0 -72
  545. package/dist/config/datapubs.config.d.ts.map +0 -1
  546. package/dist/config/datapubs.config.js +0 -74
@@ -41,6 +41,8 @@ const CoreService_1 = require("../CoreService");
41
41
  const HarvestRunService_1 = require("../HarvestRunService");
42
42
  const APIHarvestResponse_1 = require("../model/APIHarvestResponse");
43
43
  const HarvestRunModel_1 = require("../model/storage/HarvestRunModel");
44
+ const recordSchema_config_1 = require("../config/recordSchema.config");
45
+ const RecordSaveResponse_1 = require("../RecordSaveResponse");
44
46
  require("../waterline-models/types");
45
47
  var Services;
46
48
  (function (Services) {
@@ -70,6 +72,32 @@ var Services;
70
72
  resolveRecordTypeName(recordTypeModel) {
71
73
  return String(recordTypeModel?.name ?? '').trim();
72
74
  }
75
+ authoritativeHarvestContext(context) {
76
+ if (!(0, recordSchema_config_1.isRecordSchemaEnabled)(sails.config.recordSchema)) {
77
+ return undefined;
78
+ }
79
+ if (!(0, RecordSaveResponse_1.isRecordSaveContext)(context)) {
80
+ throw new HarvestRunService_1.HarvestRunServiceError('Harvest record saves require a context created by createRecordSaveContext().');
81
+ }
82
+ return context;
83
+ }
84
+ recordSaveContext(context, operation) {
85
+ if (context === undefined) {
86
+ return (0, RecordSaveResponse_1.createRecordSaveContext)({ operation });
87
+ }
88
+ return (0, RecordSaveResponse_1.createRecordSaveContext)({
89
+ requestId: context.requestId,
90
+ routeFamily: context.routeFamily,
91
+ operation,
92
+ portal: context.portal,
93
+ targetStep: context.targetStep,
94
+ validationOperation: context.validationOperation,
95
+ validationRequestParameters: context.validationRequestParameters,
96
+ validationRuntimeContext: context.validationRuntimeContext,
97
+ validationBypass: context.validationBypass,
98
+ recordSchemaIfMatch: context.ifMatch,
99
+ });
100
+ }
73
101
  nowIso() {
74
102
  return new Date().toISOString();
75
103
  }
@@ -173,11 +201,11 @@ var Services;
173
201
  }
174
202
  }
175
203
  const updates = buildUpdates(currentRun);
176
- const updated = await HarvestRun.updateOne(criteria).set(updates);
204
+ const updated = (await HarvestRun.updateOne(criteria).set(updates));
177
205
  if (updated) {
178
206
  return updated;
179
207
  }
180
- const reloaded = await HarvestRun.findOne({ id: runId });
208
+ const reloaded = (await HarvestRun.findOne({ id: runId }));
181
209
  if (!reloaded) {
182
210
  return { ...currentRun, ...updates };
183
211
  }
@@ -262,21 +290,13 @@ var Services;
262
290
  };
263
291
  if (finalChunk) {
264
292
  updateStage.status = {
265
- $cond: [
266
- { $gt: [failedExpression, 0] },
267
- HarvestRunModel_1.HarvestRunStatus.completedWithErrors,
268
- HarvestRunModel_1.HarvestRunStatus.completed,
269
- ],
293
+ $cond: [{ $gt: [failedExpression, 0] }, HarvestRunModel_1.HarvestRunStatus.completedWithErrors, HarvestRunModel_1.HarvestRunStatus.completed],
270
294
  };
271
295
  updateStage.completedAt = completedAt;
272
296
  }
273
297
  else if (counters.failed > 0) {
274
298
  updateStage.status = {
275
- $cond: [
276
- { $eq: ['$status', HarvestRunModel_1.HarvestRunStatus.completed] },
277
- HarvestRunModel_1.HarvestRunStatus.completedWithErrors,
278
- '$status',
279
- ],
299
+ $cond: [{ $eq: ['$status', HarvestRunModel_1.HarvestRunStatus.completed] }, HarvestRunModel_1.HarvestRunStatus.completedWithErrors, '$status'],
280
300
  };
281
301
  }
282
302
  return [{ $set: updateStage }];
@@ -354,25 +374,25 @@ var Services;
354
374
  });
355
375
  }
356
376
  async findExistingHarvestRecord(harvestId, recordType) {
357
- return await Record.find({
377
+ return (await Record.find({
358
378
  harvestId,
359
379
  'metaMetadata.type': recordType,
360
380
  }).meta({
361
381
  enableExperimentalDeepTargets: true,
362
- });
382
+ }));
363
383
  }
364
384
  async findExistingTrackedHarvestRecordsBatch(brandId, harvestIds, recordType) {
365
385
  const uniqueHarvestIds = _.uniq(harvestIds.filter(harvestId => !_.isEmpty(harvestId)));
366
386
  if (uniqueHarvestIds.length === 0) {
367
387
  return new Map();
368
388
  }
369
- const rows = await Record.find({
389
+ const rows = (await Record.find({
370
390
  harvestId: { in: uniqueHarvestIds },
371
391
  'metaMetadata.type': recordType,
372
392
  'metaMetadata.brandId': brandId,
373
393
  }).meta({
374
394
  enableExperimentalDeepTargets: true,
375
- });
395
+ }));
376
396
  const byHarvestId = new Map();
377
397
  for (const row of rows) {
378
398
  const harvestId = String(row.harvestId ?? '').trim();
@@ -385,30 +405,33 @@ var Services;
385
405
  }
386
406
  return byHarvestId;
387
407
  }
388
- async legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, body, oid, harvestId, user) {
408
+ async legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, body, oid, harvestId, user, context) {
389
409
  const shouldMerge = updateMode === 'merge';
390
410
  try {
391
411
  const record = await RecordsService.getMeta(oid);
392
412
  if (_.isEmpty(record)) {
393
413
  return new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, false, `Failed to update meta, cannot find existing record with oid: ${oid}`);
394
414
  }
395
- if (shouldMerge) {
396
- record['metadata'] = _.mergeWith(record.metadata, body, (objValue, srcValue) => {
397
- if (_.isArray(objValue)) {
398
- return objValue.concat(srcValue);
399
- }
400
- return undefined;
401
- });
402
- }
403
- else {
404
- record['metadata'] = body;
405
- }
406
415
  const sourceMetadata = body?.['sourceMetadata'];
407
416
  if (!_.isEmpty(sourceMetadata)) {
408
417
  record['metaMetadata']['sourceMetadata'] = `${sourceMetadata}`;
409
418
  }
410
- await RecordsService.updateMeta(brand, oid, record, user);
411
- return new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, true, shouldMerge ? 'Record merged successfully' : 'Record updated successfully');
419
+ const response = await RecordsService.updateMetaInternal({
420
+ actor: { kind: 'service', id: 'HarvestRunService.legacyUpdateHarvestRecord' },
421
+ authorization: { kind: 'service' },
422
+ mutationClass: 'full-record',
423
+ brand,
424
+ oid,
425
+ record,
426
+ user,
427
+ metadata: body,
428
+ metadataMode: shouldMerge ? 'merge' : 'replace',
429
+ context: this.recordSaveContext(context, 'update'),
430
+ });
431
+ if (!response.wasPersisted()) {
432
+ return new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, false, `Record update was not fully completed: ${response.outcome}`);
433
+ }
434
+ return new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, true, String(response.message || response.outcome));
412
435
  }
413
436
  catch (error) {
414
437
  const result = new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, false, error instanceof Error ? error.message : 'Failed to update meta');
@@ -416,7 +439,7 @@ var Services;
416
439
  return result;
417
440
  }
418
441
  }
419
- async legacyCreateHarvestRecord(brand, recordTypeModel, body, harvestId, updateMode, user) {
442
+ async legacyCreateHarvestRecord(brand, recordTypeModel, body, harvestId, updateMode, user, context) {
420
443
  const metadata = body?.['metadata'];
421
444
  const workflowStage = body?.['workflowStage'];
422
445
  const request = {};
@@ -425,7 +448,7 @@ var Services;
425
448
  }
426
449
  request['metadata'] = metadata == null ? body : metadata;
427
450
  try {
428
- const response = await RecordsService.create(brand, request, recordTypeModel, user);
451
+ const response = await RecordsService.create(brand, request, recordTypeModel, user, true, true, undefined, this.recordSaveContext(context, 'create'));
429
452
  if (workflowStage) {
430
453
  try {
431
454
  const wfStep = await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.get(recordTypeModel, String(workflowStage)));
@@ -435,8 +458,8 @@ var Services;
435
458
  this.logger.warn(`${this.logHeader} Failed to resolve workflow step ${String(workflowStage)}`, error);
436
459
  }
437
460
  }
438
- if (response.isSuccessful()) {
439
- return new APIHarvestResponse_1.APIHarvestResponse(harvestId, response.oid, true, 'Record created successfully');
461
+ if (response.wasPersisted()) {
462
+ return new APIHarvestResponse_1.APIHarvestResponse(harvestId, response.oid, true, String(response.message || response.outcome));
440
463
  }
441
464
  this.logger.error(`${this.logHeader} Record creation failed for harvestId ${harvestId}`);
442
465
  return new APIHarvestResponse_1.APIHarvestResponse(harvestId, '', false, 'Record creation failed');
@@ -457,21 +480,21 @@ var Services;
457
480
  details,
458
481
  };
459
482
  }
460
- async createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user) {
483
+ async createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user, context) {
461
484
  const request = {
462
485
  harvestId,
463
486
  metadata: this.normalizeMetadata(recordRequest),
464
487
  };
465
488
  try {
466
- const response = await RecordsService.create(brand, request, recordTypeModel, user);
467
- if (response.isSuccessful()) {
489
+ const response = await RecordsService.create(brand, request, recordTypeModel, user, true, true, undefined, this.recordSaveContext(context, 'create'));
490
+ if (response.wasPersisted()) {
468
491
  return {
469
492
  harvestId,
470
493
  oid: String(response.oid ?? ''),
471
494
  operation: HarvestRunModel_1.HarvestOperation.create,
472
495
  outcome: HarvestRunModel_1.HarvestOutcome.created,
473
496
  status: true,
474
- message: 'Record created successfully',
497
+ message: String(response.message || response.outcome),
475
498
  details: '',
476
499
  };
477
500
  }
@@ -481,8 +504,7 @@ var Services;
481
504
  return this.buildTrackedFailureResponse(harvestId, HarvestRunModel_1.HarvestOperation.create, this.asError(error).message);
482
505
  }
483
506
  }
484
- async updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, strategy) {
485
- const shouldMerge = strategy === 'merge';
507
+ async updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, strategy, context) {
486
508
  try {
487
509
  const record = await RecordsService.getMeta(oid);
488
510
  if (_.isEmpty(record)) {
@@ -493,23 +515,23 @@ var Services;
493
515
  };
494
516
  }
495
517
  const previousRecord = _.cloneDeep(record);
496
- if (shouldMerge) {
497
- record['metadata'] = _.mergeWith(record.metadata, metadata, (objValue, srcValue) => {
498
- if (_.isArray(objValue)) {
499
- return objValue.concat(srcValue);
500
- }
501
- return undefined;
502
- });
503
- }
504
- else {
505
- record['metadata'] = metadata;
506
- }
507
518
  const sourceMetadata = metadata['sourceMetadata'];
508
519
  if (!_.isEmpty(sourceMetadata)) {
509
520
  record['metaMetadata']['sourceMetadata'] = `${sourceMetadata}`;
510
521
  }
511
- const response = await RecordsService.updateMeta(brand, oid, record, user);
512
- if (!response.isSuccessful()) {
522
+ const response = await RecordsService.updateMetaInternal({
523
+ actor: { kind: 'service', id: 'HarvestRunService.updateTrackedRecord' },
524
+ authorization: { kind: 'service' },
525
+ mutationClass: 'full-record',
526
+ brand,
527
+ oid,
528
+ record,
529
+ user,
530
+ metadata,
531
+ metadataMode: strategy === 'merge' ? 'merge' : 'replace',
532
+ context: this.recordSaveContext(context, 'update'),
533
+ });
534
+ if (!response.wasPersisted()) {
513
535
  return {
514
536
  success: false,
515
537
  message: String(response.message ?? 'Failed to update meta'),
@@ -518,9 +540,10 @@ var Services;
518
540
  }
519
541
  return {
520
542
  success: true,
521
- message: shouldMerge ? 'Record merged successfully' : 'Record updated successfully',
522
- details: '',
543
+ message: String(response.message || response.outcome),
544
+ details: typeof response.details === 'string' ? response.details : '',
523
545
  previousRecord,
546
+ committedRevision: response.concurrency?.revision,
524
547
  };
525
548
  }
526
549
  catch (error) {
@@ -538,9 +561,34 @@ var Services;
538
561
  throw new Error(String(response.message ?? `Failed to rollback created record ${oid}.`));
539
562
  }
540
563
  }
541
- async rollbackUpdatedTrackedRecord(brand, oid, previousRecord, user) {
542
- const response = await RecordsService.updateMeta(brand, oid, _.cloneDeep(previousRecord), user);
543
- if (!response.isSuccessful()) {
564
+ async rollbackUpdatedTrackedRecord(brand, oid, previousRecord, committedRevision, user, context) {
565
+ const rollbackCandidate = _.cloneDeep(previousRecord);
566
+ rollbackCandidate.revision = committedRevision;
567
+ const rollbackContext = (0, recordSchema_config_1.isRecordSchemaEnabled)(sails.config.recordSchema)
568
+ ? (0, RecordSaveResponse_1.createRecordSaveContext)({
569
+ requestId: context?.requestId,
570
+ routeFamily: 'internal',
571
+ operation: 'update',
572
+ validationBypass: {
573
+ mode: 'bypass',
574
+ reason: 'trusted-data-migration',
575
+ actor: { kind: 'service', id: 'HarvestRunService.trackedEventCompensation' },
576
+ },
577
+ })
578
+ : this.recordSaveContext(context, 'update');
579
+ const response = await RecordsService.updateMetaInternal({
580
+ actor: { kind: 'service', id: 'HarvestRunService.trackedEventCompensation' },
581
+ authorization: { kind: 'service' },
582
+ mutationClass: 'full-record',
583
+ brand,
584
+ oid,
585
+ record: rollbackCandidate,
586
+ user,
587
+ triggerPreSaveTriggers: false,
588
+ triggerPostSaveTriggers: false,
589
+ context: rollbackContext,
590
+ });
591
+ if (!response.wasPersisted()) {
544
592
  throw new Error(String(response.message ?? `Failed to rollback updated record ${oid}.`));
545
593
  }
546
594
  }
@@ -603,7 +651,7 @@ var Services;
603
651
  buildCountersFromTrackedEvents(events) {
604
652
  const counters = this.buildEmptyCounters();
605
653
  for (const event of events) {
606
- this.incrementCounters(counters, (event.outcome ?? HarvestRunModel_1.HarvestOutcome.failed));
654
+ this.incrementCounters(counters, event.outcome ?? HarvestRunModel_1.HarvestOutcome.failed);
607
655
  }
608
656
  return counters;
609
657
  }
@@ -612,11 +660,11 @@ var Services;
612
660
  if (_.isEmpty(runId) || resolvedChunkIds.length === 0) {
613
661
  return [];
614
662
  }
615
- return await HarvestRecordEvent.find({
663
+ return (await HarvestRecordEvent.find({
616
664
  runId,
617
665
  brandId,
618
666
  chunkId: { in: resolvedChunkIds },
619
- }).sort('createdAt ASC');
667
+ }).sort('createdAt ASC'));
620
668
  }
621
669
  async checkpointChunkProgress(chunkId, recordCount, counters) {
622
670
  if (_.isEmpty(chunkId)) {
@@ -706,7 +754,11 @@ var Services;
706
754
  const records = Array.isArray(request.records) ? request.records : [];
707
755
  const chunk = (_.isPlainObject(request.chunk) ? request.chunk : {});
708
756
  const chunkIndex = chunk.index;
709
- if (!sourceRunId || !sourceName || records.length === 0 || !Number.isInteger(chunkIndex) || Number(chunkIndex) < 0) {
757
+ if (!sourceRunId ||
758
+ !sourceName ||
759
+ records.length === 0 ||
760
+ !Number.isInteger(chunkIndex) ||
761
+ Number(chunkIndex) < 0) {
710
762
  throw new HarvestRunService_1.HarvestRunServiceError('Invalid tracked harvest request body.', 400);
711
763
  }
712
764
  if (records.length > this.harvestRunConfig().maxRecordsPerChunk) {
@@ -734,13 +786,13 @@ var Services;
734
786
  sourceName: request.sourceName,
735
787
  sourceRunId: request.sourceRunId,
736
788
  };
737
- const existing = await HarvestRun.findOne(where);
789
+ const existing = (await HarvestRun.findOne(where));
738
790
  if (existing) {
739
791
  return existing;
740
792
  }
741
793
  const now = this.nowIso();
742
794
  try {
743
- return await HarvestRun.create({
795
+ return (await HarvestRun.create({
744
796
  ...where,
745
797
  sourceUri: request.sourceUri,
746
798
  status: HarvestRunModel_1.HarvestRunStatus.running,
@@ -755,10 +807,10 @@ var Services;
755
807
  failed: 0,
756
808
  chunksProcessed: 0,
757
809
  duplicateChunks: 0,
758
- }).fetch();
810
+ }).fetch());
759
811
  }
760
812
  catch (error) {
761
- const recovered = await HarvestRun.findOne(where);
813
+ const recovered = (await HarvestRun.findOne(where));
762
814
  if (recovered) {
763
815
  return recovered;
764
816
  }
@@ -800,12 +852,14 @@ var Services;
800
852
  const collection = this.getHarvestRunCollection();
801
853
  const nativeRunId = this.toNativeRunId(run.id, collection);
802
854
  if (collection && nativeRunId) {
803
- const updated = this.extractUpdatedRun(await collection.findOneAndUpdate({ _id: nativeRunId }, [{
855
+ const updated = this.extractUpdatedRun(await collection.findOneAndUpdate({ _id: nativeRunId }, [
856
+ {
804
857
  $set: {
805
858
  duplicateChunks: { $add: [{ $ifNull: ['$duplicateChunks', 0] }, 1] },
806
859
  lastChunkAt: this.nowIso(),
807
860
  },
808
- }], { returnDocument: 'after' }));
861
+ },
862
+ ], { returnDocument: 'after' }));
809
863
  if (updated) {
810
864
  return updated;
811
865
  }
@@ -816,7 +870,7 @@ var Services;
816
870
  lastChunkAt: updatedAt,
817
871
  }));
818
872
  }
819
- async processTrackedRecord(brand, recordTypeModel, run, chunk, request, user, context) {
873
+ async processTrackedRecord(brand, recordTypeModel, run, chunk, request, user, saveContext, context) {
820
874
  const recordTypeName = String(run.recordType ?? '');
821
875
  const operation = this.normalizeTrackedOperation(request.operation);
822
876
  const harvestId = String(request.harvestId ?? '').trim();
@@ -851,7 +905,7 @@ var Services;
851
905
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response, 'record-exists');
852
906
  return { response };
853
907
  }
854
- const response = await this.createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user);
908
+ const response = await this.createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user, saveContext);
855
909
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response, response.status ? undefined : 'create-failed');
856
910
  return {
857
911
  response,
@@ -882,7 +936,7 @@ var Services;
882
936
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response);
883
937
  return { response };
884
938
  }
885
- const updateResult = await this.updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, updateStrategy);
939
+ const updateResult = await this.updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, updateStrategy, saveContext);
886
940
  const response = {
887
941
  harvestId,
888
942
  oid,
@@ -895,8 +949,8 @@ var Services;
895
949
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response, updateResult.success ? undefined : 'update-failed');
896
950
  return {
897
951
  response,
898
- rollback: updateResult.success && updateResult.previousRecord
899
- ? async () => await this.rollbackUpdatedTrackedRecord(brand, oid, updateResult.previousRecord, user)
952
+ rollback: updateResult.success && updateResult.previousRecord && updateResult.committedRevision !== undefined
953
+ ? async () => await this.rollbackUpdatedTrackedRecord(brand, oid, updateResult.previousRecord, updateResult.committedRevision, user, saveContext)
900
954
  : undefined,
901
955
  };
902
956
  }
@@ -938,7 +992,7 @@ var Services;
938
992
  case HarvestRunModel_1.HarvestOperation.upsert:
939
993
  default: {
940
994
  if (existingRecords.length === 0) {
941
- const response = await this.createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user);
995
+ const response = await this.createTrackedRecord(brand, recordTypeModel, recordRequest, harvestId, user, saveContext);
942
996
  response.operation = HarvestRunModel_1.HarvestOperation.upsert;
943
997
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response, response.status ? undefined : 'create-failed');
944
998
  return {
@@ -977,7 +1031,7 @@ var Services;
977
1031
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response);
978
1032
  return { response };
979
1033
  }
980
- const updateResult = await this.updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, updateStrategy);
1034
+ const updateResult = await this.updateTrackedRecord(brand, recordTypeModel, metadata, oid, user, updateStrategy, saveContext);
981
1035
  const response = {
982
1036
  harvestId,
983
1037
  oid,
@@ -990,17 +1044,18 @@ var Services;
990
1044
  this.bufferTrackedEvent(context, run, chunk, recordTypeName, request, response, updateResult.success ? undefined : 'update-failed');
991
1045
  return {
992
1046
  response,
993
- rollback: updateResult.success && updateResult.previousRecord
994
- ? async () => await this.rollbackUpdatedTrackedRecord(brand, oid, updateResult.previousRecord, user)
1047
+ rollback: updateResult.success && updateResult.previousRecord && updateResult.committedRevision !== undefined
1048
+ ? async () => await this.rollbackUpdatedTrackedRecord(brand, oid, updateResult.previousRecord, updateResult.committedRevision, user, saveContext)
995
1049
  : undefined,
996
1050
  };
997
1051
  }
998
1052
  }
999
1053
  }
1000
- async submitCompatibilityRecords(brand, recordTypeModel, body, updateMode, user) {
1054
+ async submitCompatibilityRecords(brand, recordTypeModel, body, updateMode, user, context) {
1001
1055
  if (body == null || _.isEmpty(body['records'])) {
1002
1056
  throw new HarvestRunService_1.HarvestRunServiceError('Invalid request body', 400);
1003
1057
  }
1058
+ const saveContext = this.authoritativeHarvestContext(context);
1004
1059
  const recordType = this.resolveRecordTypeName(recordTypeModel);
1005
1060
  const records = body['records'];
1006
1061
  const recordResponses = [];
@@ -1013,7 +1068,7 @@ var Services;
1013
1068
  const recordRequest = (_.isPlainObject(record['recordRequest']) ? record['recordRequest'] : undefined);
1014
1069
  const existingRecord = await this.findExistingHarvestRecord(harvestId, recordType);
1015
1070
  if (existingRecord.length === 0 || updateMode === 'create') {
1016
- recordResponses.push(await this.legacyCreateHarvestRecord(brand, recordTypeModel, (recordRequest ?? {}), harvestId, updateMode, user));
1071
+ recordResponses.push(await this.legacyCreateHarvestRecord(brand, recordTypeModel, (recordRequest ?? {}), harvestId, updateMode, user, saveContext));
1017
1072
  continue;
1018
1073
  }
1019
1074
  const oid = String(existingRecord[0]?.redboxOid ?? '');
@@ -1027,14 +1082,15 @@ var Services;
1027
1082
  recordResponses.push(new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, true, `Record metadata is unchanged, skipping update. oid: ${oid}`));
1028
1083
  continue;
1029
1084
  }
1030
- recordResponses.push(await this.legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, (recordRequest?.metadata ?? {}), oid, harvestId, user));
1085
+ recordResponses.push(await this.legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, (recordRequest?.metadata ?? {}), oid, harvestId, user, saveContext));
1031
1086
  }
1032
1087
  return recordResponses;
1033
1088
  }
1034
- async submitLegacyRecords(brand, recordTypeModel, body, merge, user) {
1089
+ async submitLegacyRecords(brand, recordTypeModel, body, merge, user, context) {
1035
1090
  if (body == null || _.isEmpty(body['records'])) {
1036
1091
  throw new HarvestRunService_1.HarvestRunServiceError('Invalid request body', 400);
1037
1092
  }
1093
+ const saveContext = this.authoritativeHarvestContext(context);
1038
1094
  const recordType = this.resolveRecordTypeName(recordTypeModel);
1039
1095
  const records = body['records'];
1040
1096
  const responses = [];
@@ -1047,7 +1103,7 @@ var Services;
1047
1103
  const metadata = (_.isPlainObject(record['metadata']) ? record['metadata'] : undefined);
1048
1104
  const existingRecord = await this.findExistingHarvestRecord(harvestId, recordType);
1049
1105
  if (existingRecord.length === 0) {
1050
- responses.push(await this.legacyCreateHarvestRecord(brand, recordTypeModel, (metadata?.data ?? {}), harvestId, 'update', user));
1106
+ responses.push(await this.legacyCreateHarvestRecord(brand, recordTypeModel, (metadata?.data ?? {}), harvestId, 'update', user, saveContext));
1051
1107
  continue;
1052
1108
  }
1053
1109
  const updateMode = merge ? 'merge' : 'update';
@@ -1058,7 +1114,7 @@ var Services;
1058
1114
  responses.push(new APIHarvestResponse_1.APIHarvestResponse(harvestId, oid, true, `skip update of harvestId ${harvestId} oid ${oid} metadata sent is equal to metadata in existing record`));
1059
1115
  continue;
1060
1116
  }
1061
- responses.push(await this.legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, newMetadata, oid, harvestId, user));
1117
+ responses.push(await this.legacyUpdateHarvestRecord(brand, recordTypeModel, updateMode, newMetadata, oid, harvestId, user, saveContext));
1062
1118
  }
1063
1119
  return responses;
1064
1120
  }
@@ -1091,13 +1147,14 @@ var Services;
1091
1147
  if (_.isEmpty(runId)) {
1092
1148
  return [];
1093
1149
  }
1094
- return await HarvestRunChunk.find({
1150
+ return (await HarvestRunChunk.find({
1095
1151
  runId,
1096
1152
  contentHash,
1097
- }).sort('attempt DESC');
1153
+ }).sort('attempt DESC'));
1098
1154
  }
1099
- async submitChunk(brand, recordTypeModel, requestBody, user) {
1155
+ async submitChunk(brand, recordTypeModel, requestBody, user, context) {
1100
1156
  const request = this.validateTrackedChunkRequest(requestBody);
1157
+ const saveContext = this.authoritativeHarvestContext(context);
1101
1158
  const brandId = this.resolveBrandId(brand);
1102
1159
  const recordTypeName = this.resolveRecordTypeName(recordTypeModel);
1103
1160
  const run = await this.findOrCreateRun(brand, recordTypeModel, request, user);
@@ -1132,7 +1189,7 @@ var Services;
1132
1189
  }
1133
1190
  const submittedAt = this.nowIso();
1134
1191
  const nextAttempt = existingChunks.reduce((maxAttempt, chunk) => Math.max(maxAttempt, Number(chunk.attempt ?? 1)), 0) + 1;
1135
- const createdChunk = await HarvestRunChunk.create({
1192
+ const createdChunk = (await HarvestRunChunk.create({
1136
1193
  runId: String(run.id ?? ''),
1137
1194
  brandId,
1138
1195
  recordType: recordTypeName,
@@ -1153,7 +1210,7 @@ var Services;
1153
1210
  duplicate: false,
1154
1211
  submittedAt,
1155
1212
  responseSummary: this.buildChunkResponseSummary(this.buildEmptyCounters()),
1156
- }).fetch();
1213
+ }).fetch());
1157
1214
  const counters = this.buildCountersFromTrackedEvents(checkpointedEvents);
1158
1215
  try {
1159
1216
  const duplicateHarvestIds = this.getDuplicateHarvestIds(request.records);
@@ -1164,7 +1221,7 @@ var Services;
1164
1221
  events: [],
1165
1222
  };
1166
1223
  for (const record of request.records.slice(checkpointedEvents.length)) {
1167
- const processed = await this.processTrackedRecord(brand, recordTypeModel, run, createdChunk, record, user, context);
1224
+ const processed = await this.processTrackedRecord(brand, recordTypeModel, run, createdChunk, record, user, saveContext, context);
1168
1225
  try {
1169
1226
  await this.persistTrackedEvents(context.events);
1170
1227
  }
@@ -1198,7 +1255,7 @@ var Services;
1198
1255
  completedAt,
1199
1256
  responseSummary: this.buildChunkResponseSummary(counters),
1200
1257
  };
1201
- const updatedChunk = await HarvestRunChunk.updateOne({ id: createdChunk.id }).set(chunkUpdates);
1258
+ const updatedChunk = (await HarvestRunChunk.updateOne({ id: createdChunk.id }).set(chunkUpdates));
1202
1259
  const updatedRun = await this.updateRunAfterChunk(run, counters, Boolean(request.finalChunk), completedAt);
1203
1260
  return {
1204
1261
  run: this.toRunModel(updatedRun),
@@ -1248,7 +1305,7 @@ var Services;
1248
1305
  where.startedAt = startedAtFilters;
1249
1306
  }
1250
1307
  const total = await HarvestRun.count(where);
1251
- const rows = await HarvestRun.find(where).sort('startedAt DESC').skip(skip).limit(pageSize);
1308
+ const rows = (await HarvestRun.find(where).sort('startedAt DESC').skip(skip).limit(pageSize));
1252
1309
  return {
1253
1310
  rows: rows.map(row => this.toRunModel(row)),
1254
1311
  total: Number(total ?? 0),
@@ -1256,12 +1313,16 @@ var Services;
1256
1313
  }
1257
1314
  async getRun(brand, runId) {
1258
1315
  const brandId = this.resolveBrandId(brand);
1259
- const run = await HarvestRun.findOne({ id: runId, brandId });
1316
+ const run = (await HarvestRun.findOne({ id: runId, brandId }));
1260
1317
  if (!run) {
1261
1318
  return null;
1262
1319
  }
1263
- const chunks = await HarvestRunChunk.find({ runId, brandId }).sort('submittedAt ASC').limit(100);
1264
- const events = await HarvestRecordEvent.find({ runId, brandId }).sort('createdAt DESC').limit(20);
1320
+ const chunks = (await HarvestRunChunk.find({ runId, brandId })
1321
+ .sort('submittedAt ASC')
1322
+ .limit(100));
1323
+ const events = (await HarvestRecordEvent.find({ runId, brandId })
1324
+ .sort('createdAt DESC')
1325
+ .limit(20));
1265
1326
  return {
1266
1327
  run: this.toRunModel(run),
1267
1328
  chunks: chunks.map(row => this.toChunkModel(row)),
@@ -1280,7 +1341,7 @@ var Services;
1280
1341
  }
1281
1342
  async runExists(brand, runId) {
1282
1343
  const brandId = this.resolveBrandId(brand);
1283
- const run = await HarvestRun.findOne({ id: runId, brandId });
1344
+ const run = (await HarvestRun.findOne({ id: runId, brandId }));
1284
1345
  return !_.isNil(run);
1285
1346
  }
1286
1347
  async listRunEvents(brand, runId, params) {
@@ -1305,7 +1366,10 @@ var Services;
1305
1366
  where.oid = String(params.oid);
1306
1367
  }
1307
1368
  const total = await HarvestRecordEvent.count(where);
1308
- const rows = await HarvestRecordEvent.find(where).sort('createdAt DESC').skip(skip).limit(pageSize);
1369
+ const rows = (await HarvestRecordEvent.find(where)
1370
+ .sort('createdAt DESC')
1371
+ .skip(skip)
1372
+ .limit(pageSize));
1309
1373
  return {
1310
1374
  rows: rows.map(row => this.toEventModel(row)),
1311
1375
  total: Number(total ?? 0),
@@ -1314,4 +1378,4 @@ var Services;
1314
1378
  }
1315
1379
  Services.HarvestRunService = HarvestRunService;
1316
1380
  })(Services || (exports.Services = Services = {}));
1317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFydmVzdFJ1blNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvSGFydmVzdFJ1blNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQTRCO0FBQzVCLDZDQUF5QztBQUN6QywrQkFBa0Q7QUFFbEQsZ0RBQXNEO0FBRXRELDREQUFrTztBQUNsTyxvRUFBaUU7QUFLakUsc0VBYzBDO0FBSzFDLHFDQUFtQztBQXVDbkMsSUFBaUIsUUFBUSxDQWtsRHhCO0FBbGxERCxXQUFpQixRQUFRO0lBQ3ZCLE1BQWEsaUJBQWtCLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUN2QyxnQkFBZ0IsR0FBYTtZQUM5Qyw0QkFBNEI7WUFDNUIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYixVQUFVO1lBQ1YsUUFBUTtZQUNSLFdBQVc7WUFDWCxlQUFlO1NBQ2hCLENBQUM7UUFFRjtZQUNFLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUN6QyxDQUFDO1FBRU8sT0FBTyxDQUFDLEtBQWM7WUFDNUIsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFTyxjQUFjLENBQUMsS0FBNkI7WUFDbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RCxDQUFDO1FBRU8scUJBQXFCLENBQUMsZUFBaUU7WUFDN0YsT0FBTyxNQUFNLENBQUUsZUFBa0QsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsQ0FBQztRQUVPLE1BQU07WUFDWixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVPLGdCQUFnQixDQUFDLEtBQWMsRUFBRSxRQUFnQjtZQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3BFLENBQUM7UUFFTyxnQkFBZ0I7WUFDdEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQStCLENBQUM7WUFDOUgsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQztnQkFDN0UsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQztnQkFDekUsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLENBQUM7Z0JBQ2xHLG9CQUFvQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDO2dCQUNqRixzQkFBc0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7YUFDNUYsQ0FBQztRQUNKLENBQUM7UUFFTyxzQkFBc0IsQ0FBQyxLQUF5QjtZQUN0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUN0RyxDQUFDO1FBRU8seUJBQXlCLENBQUMsS0FBYztZQUM5QyxRQUFRLE1BQU0sQ0FBQyxLQUFLLElBQUksa0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDeEQsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNO29CQUMxQixPQUFPLGtDQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNO29CQUMxQixPQUFPLGtDQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNO29CQUMxQixPQUFPLGtDQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDakMsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNO29CQUMxQixPQUFPLGtDQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDakM7b0JBQ0UsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7UUFFTyw4QkFBOEIsQ0FBQyxLQUFjO1lBQ25ELFFBQVEsTUFBTSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLE9BQU87b0JBQ1YsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssZ0JBQWdCO29CQUNuQixPQUFPLGdCQUFnQixDQUFDO2dCQUMxQjtvQkFDRSxPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUVPLGtCQUFrQjtZQUN4QixPQUFPO2dCQUNMLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQztnQkFDVixTQUFTLEVBQUUsQ0FBQztnQkFDWixNQUFNLEVBQUUsQ0FBQzthQUNWLENBQUM7UUFDSixDQUFDO1FBRU8saUJBQWlCLENBQUMsUUFBK0IsRUFBRSxPQUF1QjtZQUNoRixRQUFRLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztZQUM3QixRQUFRLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixLQUFLLGdDQUFjLENBQUMsT0FBTztvQkFDekIsUUFBUSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7b0JBQ3RCLE1BQU07Z0JBQ1IsS0FBSyxnQ0FBYyxDQUFDLE9BQU87b0JBQ3pCLFFBQVEsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO29CQUN0QixNQUFNO2dCQUNSLEtBQUssZ0NBQWMsQ0FBQyxPQUFPO29CQUN6QixRQUFRLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztvQkFDdEIsTUFBTTtnQkFDUixLQUFLLGdDQUFjLENBQUMsU0FBUztvQkFDM0IsUUFBUSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7b0JBQ3hCLE1BQU07Z0JBQ1IsS0FBSyxnQ0FBYyxDQUFDLE1BQU0sQ0FBQztnQkFDM0I7b0JBQ0UsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7b0JBQ3JCLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVPLGlCQUFpQixDQUFDLGFBQW9DO1lBQzVELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLFFBQXFCLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBYyxDQUFDO1FBQzVFLENBQUM7UUFFTyxlQUFlLENBQUMsS0FBZ0IsRUFBRSxLQUFnQjtZQUN4RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFTyxLQUFLLENBQUMsNEJBQTRCLENBQ3hDLEdBQWtCLEVBQ2xCLGNBQTBDLEVBQzFDLFlBQW1FO1lBRW5FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUVELElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUNyQixLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxRQUFRLEdBQWMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUF5QixDQUFDO2dCQUMxRixJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLE9BQU8sT0FBTyxDQUFDO2dCQUNqQixDQUFDO2dCQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBeUIsQ0FBQztnQkFDakYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNkLE9BQU8sRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxRQUFRLENBQUM7Z0JBQ2xCLENBQUM7Z0JBQ0QsVUFBVSxHQUFHLFFBQVEsQ0FBQztZQUN4QixDQUFDO1lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLEtBQUssNkRBQTZELENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBRU8sdUJBQXVCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLE9BQU8sVUFBVSxDQUFDLFlBQVksS0FBSyxVQUFVO2dCQUM3RCxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBNkY7Z0JBQ3RILENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUM5RSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFTyxhQUFhLENBQUMsS0FBeUIsRUFBRSxVQUF1QztZQUN0RixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQ3BELElBQUksT0FBTyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sbUJBQW1CLEdBQUksUUFBc0MsQ0FBQyxXQUF3RCxDQUFDO1lBQzdILElBQUksQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLG1CQUFtQixLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN0RSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxJQUFJLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3RixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkQsT0FBTyxPQUFPLFdBQVcsQ0FBQyxXQUFXLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM1RSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFTyxpQkFBaUIsQ0FDdkIsTUFBMkU7WUFFM0UsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBcUMsRUFBd0IsRUFBRTtnQkFDbkYsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsTUFBTSxLQUFLLEdBQUksR0FBeUMsQ0FBQyxHQUFHLENBQUM7Z0JBQzdELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3ZDLE9BQU87d0JBQ0wsR0FBRyxHQUFHO3dCQUNOLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO3FCQUNsQixDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNqRCxPQUFPLFlBQVksQ0FBRSxNQUEyQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxPQUFPLFlBQVksQ0FBQyxNQUF1QixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVPLDJCQUEyQixDQUNqQyxRQUErQixFQUMvQixXQUFtQixFQUNuQixVQUFtQjtZQUVuQixNQUFNLGdCQUFnQixHQUFHO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7YUFDckQsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUE0QjtnQkFDM0MsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ3hGLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25FLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUN6RSxNQUFNLEVBQUUsZ0JBQWdCO2dCQUN4QixlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7YUFDckUsQ0FBQztZQUVGLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsV0FBVyxDQUFDLE1BQU0sR0FBRztvQkFDbkIsS0FBSyxFQUFFO3dCQUNMLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQzlCLGtDQUFnQixDQUFDLG1CQUFtQjt3QkFDcEMsa0NBQWdCLENBQUMsU0FBUztxQkFDM0I7aUJBQ0YsQ0FBQztnQkFDRixXQUFXLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsV0FBVyxDQUFDLE1BQU0sR0FBRztvQkFDbkIsS0FBSyxFQUFFO3dCQUNMLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLGtDQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNoRCxrQ0FBZ0IsQ0FBQyxtQkFBbUI7d0JBQ3BDLFNBQVM7cUJBQ1Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRU8sVUFBVSxDQUFDLEdBQWtCO1lBQ25DLE9BQU8sSUFBSSxpQ0FBZSxDQUFDO2dCQUN6QixFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVELE1BQU0sRUFBRyxHQUFHLENBQUMsTUFBMkIsSUFBSSxrQ0FBZ0IsQ0FBQyxPQUFPO2dCQUNwRSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO2dCQUN0QyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbEUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVELFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNsRSxjQUFjLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO2dCQUMvQixlQUFlLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxRQUFRLEVBQUcsR0FBRyxDQUFDLFFBQWdELElBQUksU0FBUzthQUM3RSxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU8sWUFBWSxDQUFDLEdBQXVCLEVBQUUsaUJBQTJCO1lBQ3ZFLE9BQU8sSUFBSSxzQ0FBb0IsQ0FBQztnQkFDOUIsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztnQkFDdkUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQy9ELGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDaEYsTUFBTSxFQUFHLEdBQUcsQ0FBQyxNQUE2QixJQUFJLG9DQUFrQixDQUFDLFNBQVM7Z0JBQzFFLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLGNBQWMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBQy9CLFNBQVMsRUFBRSxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDdEQsV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2xFLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNyRSxlQUFlLEVBQUcsR0FBRyxDQUFDLGVBQXVELElBQUksU0FBUzthQUMzRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU8sWUFBWSxDQUFDLEdBQTBCO1lBQzdDLE1BQU0sT0FBTyxHQUFJLEdBQUcsQ0FBQyxPQUEwQixJQUFJLGdDQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3pFLE9BQU8sSUFBSSx5Q0FBdUIsQ0FBQztnQkFDakMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUMxQyxTQUFTLEVBQUcsR0FBRyxDQUFDLFNBQThCLElBQUksa0NBQWdCLENBQUMsTUFBTTtnQkFDekUsT0FBTztnQkFDUCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxnQ0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BGLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN0RCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdEQsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQzVELGNBQWMsRUFBRyxHQUFHLENBQUMsY0FBc0QsSUFBSSxTQUFTO2dCQUN4RixTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO2FBQ3ZDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTyxLQUFLLENBQUMseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtZQUMzRSxPQUFPLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDdkIsU0FBUztnQkFDVCxtQkFBbUIsRUFBRSxVQUFVO2FBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ04sNkJBQTZCLEVBQUUsSUFBSTthQUNwQyxDQUFnQixDQUFDO1FBQ3BCLENBQUM7UUFFTyxLQUFLLENBQUMsc0NBQXNDLENBQ2xELE9BQWUsRUFDZixVQUFvQixFQUNwQixVQUFrQjtZQUVsQixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sSUFBSSxHQUFHLEVBQXVCLENBQUM7WUFDeEMsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDN0IsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFO2dCQUNuQyxtQkFBbUIsRUFBRSxVQUFVO2dCQUMvQixzQkFBc0IsRUFBRSxPQUFPO2FBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ04sNkJBQTZCLEVBQUUsSUFBSTthQUNwQyxDQUFnQixDQUFDO1lBRWxCLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1lBQ25ELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsU0FBUztnQkFDWCxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FDckMsS0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsVUFBa0IsRUFDbEIsSUFBZSxFQUNmLEdBQVcsRUFDWCxTQUFpQixFQUNqQixJQUFlO1lBRWYsTUFBTSxXQUFXLEdBQUcsVUFBVSxLQUFLLE9BQU8sQ0FBQztZQUMzQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQWdCLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sSUFBSSx1Q0FBa0IsQ0FDM0IsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsZ0VBQWdFLEdBQUcsRUFBRSxDQUN0RSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFpQixFQUFFLFFBQWlCLEVBQUUsRUFBRTt3QkFDL0YsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQ3hCLE9BQVEsUUFBc0IsQ0FBQyxNQUFNLENBQUMsUUFBcUIsQ0FBQyxDQUFDO3dCQUMvRCxDQUFDO3dCQUNELE9BQU8sU0FBUyxDQUFDO29CQUNuQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUM5QixNQUFNLENBQUMsY0FBYyxDQUEwQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUUsQ0FBQztnQkFDM0YsQ0FBQztnQkFFRCxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzFELE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2xJLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksdUNBQWtCLENBQ25DLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUNMLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUNqRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsb0NBQW9DLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNyRixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FDckMsS0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsSUFBZSxFQUNmLFNBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLElBQWU7WUFFZixNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBYyxFQUFFLENBQUM7WUFDOUIsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDbkMsQ0FBQztZQUVELE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUV6RCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRixJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUM7d0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHFCQUFjLEVBQ2pDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUF3QixDQUN4RixDQUFDO3dCQUNGLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsTUFBbUIsQ0FBQyxDQUFDO29CQUM5RSxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxvQ0FBb0MsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3hHLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUM1QixPQUFPLElBQUksdUNBQWtCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixDQUFDLENBQUM7Z0JBQzlGLENBQUM7Z0JBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyx5Q0FBeUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDekYsT0FBTyxJQUFJLHVDQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxzQ0FBc0MsU0FBUyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzdGLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQztRQUVPLDJCQUEyQixDQUNqQyxTQUFpQixFQUNqQixTQUFvQyxFQUNwQyxPQUFlLEVBQ2YsT0FBTyxHQUFHLEVBQUUsRUFDWixHQUFHLEdBQUcsRUFBRTtZQUVSLE9BQU87Z0JBQ0wsU0FBUztnQkFDVCxHQUFHO2dCQUNILFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUM1QixPQUFPLEVBQUUsZ0NBQWMsQ0FBQyxNQUFNO2dCQUM5QixNQUFNLEVBQUUsS0FBSztnQkFDYixPQUFPO2dCQUNQLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FDL0IsS0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsYUFBd0IsRUFDeEIsU0FBaUIsRUFDakIsSUFBZTtZQUVmLE1BQU0sT0FBTyxHQUFjO2dCQUN6QixTQUFTO2dCQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO2FBQ2hELENBQUM7WUFFRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwRixJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUM1QixPQUFPO3dCQUNMLFNBQVM7d0JBQ1QsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQzt3QkFDL0IsU0FBUyxFQUFFLGtDQUFnQixDQUFDLE1BQU07d0JBQ2xDLE9BQU8sRUFBRSxnQ0FBYyxDQUFDLE9BQU87d0JBQy9CLE1BQU0sRUFBRSxJQUFJO3dCQUNaLE9BQU8sRUFBRSw2QkFBNkI7d0JBQ3RDLE9BQU8sRUFBRSxFQUFFO3FCQUNaLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FDckMsU0FBUyxFQUNULGtDQUFnQixDQUFDLE1BQU0sRUFDdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksd0JBQXdCLENBQUMsRUFDcEQsT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUM3RCxDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQ3JDLFNBQVMsRUFDVCxrQ0FBZ0IsQ0FBQyxNQUFNLEVBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUM1QixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLEtBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLFFBQW1CLEVBQ25CLEdBQVcsRUFDWCxJQUFlLEVBQ2YsUUFBK0I7WUFFL0IsTUFBTSxXQUFXLEdBQUcsUUFBUSxLQUFLLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQWdCLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE9BQU87d0JBQ0wsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsT0FBTyxFQUFFLGdFQUFnRSxHQUFHLEVBQUU7d0JBQzlFLE9BQU8sRUFBRSxFQUFFO3FCQUNaLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQWlCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO3dCQUNuRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQzs0QkFDeEIsT0FBUSxRQUFzQixDQUFDLE1BQU0sQ0FBQyxRQUFxQixDQUFDLENBQUM7d0JBQy9ELENBQUM7d0JBQ0QsT0FBTyxTQUFTLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNoQyxDQUFDO2dCQUVELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUM5QixNQUFNLENBQUMsY0FBYyxDQUEwQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxjQUFjLEVBQUUsQ0FBQztnQkFDM0YsQ0FBQztnQkFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztvQkFDN0IsT0FBTzt3QkFDTCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksdUJBQXVCLENBQUM7d0JBQzVELE9BQU8sRUFBRSxPQUFPLFFBQVEsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO3FCQUN0RSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsT0FBTztvQkFDTCxPQUFPLEVBQUUsSUFBSTtvQkFDYixPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO29CQUNuRixPQUFPLEVBQUUsRUFBRTtvQkFDWCxjQUFjO2lCQUNmLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPO29CQUNMLE9BQU8sRUFBRSxLQUFLO29CQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87b0JBQ3BDLE9BQU8sRUFBRSxFQUFFO2lCQUNaLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVPLEtBQUssQ0FBQyw0QkFBNEIsQ0FDeEMsR0FBVyxFQUNYLGVBQWdDLEVBQ2hDLElBQWU7WUFFZixNQUFNLGFBQWEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUkscUNBQXFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVPLEtBQUssQ0FBQyw0QkFBNEIsQ0FDeEMsS0FBb0IsRUFDcEIsR0FBVyxFQUNYLGNBQTJCLEVBQzNCLElBQWU7WUFFZixNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxxQ0FBcUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNGLENBQUM7UUFDSCxDQUFDO1FBRU8sS0FBSyxDQUFDLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxJQUFlO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztRQUNILENBQUM7UUFFTyxxQkFBcUIsQ0FBQyxNQUFtQztZQUMvRCxNQUFNLFFBQVEsR0FBRztnQkFDZixTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO2dCQUN6QyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksa0NBQWdCLENBQUMsTUFBTSxDQUFDO2dCQUM5RCxjQUFjLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksU0FBUyxDQUFDO2dCQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3JCLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUN4RixDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztZQUNoRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUN0RCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDO1lBQ0QsT0FBTztnQkFDTCxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO2dCQUNoRCxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO2FBQ3ZDLENBQUM7UUFDSixDQUFDO1FBRU8saUJBQWlCLENBQ3ZCLEdBQWtCLEVBQ2xCLEtBQXlCLEVBQ3pCLGNBQXNCLEVBQ3RCLE9BQW9DLEVBQ3BDLFFBQXNDLEVBQ3RDLFNBQWtCO1lBRWxCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsVUFBVSxFQUFFLGNBQWM7Z0JBQzFCLFdBQVcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksU0FBUztnQkFDOUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM3QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLElBQUksU0FBUztnQkFDdEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLElBQUksU0FBUztnQkFDdEMsU0FBUztnQkFDVCxjQUFjLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO2dCQUNqRixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTthQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVPLGtCQUFrQixDQUN4QixPQUEwQixFQUMxQixHQUFrQixFQUNsQixLQUF5QixFQUN6QixjQUFzQixFQUN0QixPQUFvQyxFQUNwQyxRQUFzQyxFQUN0QyxTQUFrQjtZQUVsQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBdUM7WUFDeEUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQy9ELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDOUQsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQztRQUNILENBQUM7UUFFTyw4QkFBOEIsQ0FBQyxNQUErQjtZQUNwRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUUsS0FBSyxDQUFDLE9BQTBCLElBQUksZ0NBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pHLENBQUM7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRU8sS0FBSyxDQUFDLDJCQUEyQixDQUN2QyxLQUF5QixFQUN6QixPQUFlLEVBQ2YsUUFBa0I7WUFFbEIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztZQUNELE9BQU8sTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLEtBQUs7Z0JBQ0wsT0FBTztnQkFDUCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUU7YUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQTRCLENBQUM7UUFDdEQsQ0FBQztRQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FDbkMsT0FBMkIsRUFDM0IsV0FBbUIsRUFDbkIsUUFBK0I7WUFFL0IsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxXQUFXO2dCQUNYLGNBQWMsRUFBRSxRQUFRLENBQUMsY0FBYztnQkFDdkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM3QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLGVBQWUsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDO2FBQzFELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTyxpQkFBaUIsQ0FBQyxLQUFjLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBVTtZQUNwRSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM1QixNQUFNLElBQUksMENBQXNCLENBQUMsMkRBQTJELEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3JHLENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMxQyxDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMxRixNQUFNLElBQUksMENBQXNCLENBQUMsNERBQTRELEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdEcsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUMxQixPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sSUFBSSwwQ0FBc0IsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0YsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQWUsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWtCLENBQUM7cUJBQzNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFFLEtBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzNFLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUN4QixDQUFDO29CQUNELE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUMsRUFBRSxFQUFlLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFlLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVPLHFCQUFxQixDQUFDLE9BQWUsRUFBRSxjQUFzQixFQUFFLE9BQW1DO1lBQ3hHLE1BQU0sT0FBTyxHQUFHO2dCQUNkLFNBQVMsRUFBRSx5QkFBeUI7Z0JBQ3BDLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLGNBQWM7Z0JBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLO2dCQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDakQsQ0FBQztZQUNGLE9BQU8sSUFBQSx3QkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFTywyQkFBMkIsQ0FBQyxJQUF5QztZQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFjLENBQUM7WUFDakUsSUFBSSxpQkFBeUIsQ0FBQztZQUM5QixJQUFJLENBQUM7Z0JBQ0gsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE1BQU0sSUFBSSwwQ0FBc0IsQ0FBQyx5REFBeUQsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuRyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6RixNQUFNLElBQUksMENBQXNCLENBQUMsc0VBQXNFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEgsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBd0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZHLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBYyxDQUFDO1lBQ2pGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuSCxNQUFNLElBQUksMENBQXNCLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakYsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNoRSxNQUFNLElBQUksMENBQXNCLENBQUMsMkVBQTJFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckgsQ0FBQztZQUNELE9BQU87Z0JBQ0wsV0FBVztnQkFDWCxVQUFVO2dCQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNwRSxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLEtBQUssRUFBRTtvQkFDTCxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQztvQkFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ3BELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztpQkFDckY7Z0JBQ0QsT0FBTzthQUNSLENBQUM7UUFDSixDQUFDO1FBRU8sS0FBSyxDQUFDLGVBQWUsQ0FDM0IsS0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsT0FBbUMsRUFDbkMsSUFBZTtZQUVmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sS0FBSyxHQUFHO2dCQUNaLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLGNBQWM7Z0JBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQ2pDLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUF5QixDQUFDO1lBQ3pFLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUM7b0JBQzdCLEdBQUcsS0FBSztvQkFDUixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLE1BQU0sRUFBRSxrQ0FBZ0IsQ0FBQyxPQUFPO29CQUNoQyxTQUFTLEVBQUUsR0FBRztvQkFDZCxXQUFXLEVBQUUsR0FBRztvQkFDaEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztvQkFDdkMsY0FBYyxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSxDQUFDO29CQUNWLFNBQVMsRUFBRSxDQUFDO29CQUNaLE1BQU0sRUFBRSxDQUFDO29CQUNULGVBQWUsRUFBRSxDQUFDO29CQUNsQixlQUFlLEVBQUUsQ0FBQztpQkFDbkIsQ0FBQyxDQUFDLEtBQUssRUFBbUIsQ0FBQztZQUM5QixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLFNBQVMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUF5QixDQUFDO2dCQUMxRSxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO2dCQUNELE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLEdBQWtCLEVBQ2xCLFFBQStCLEVBQy9CLFVBQW1CLEVBQ25CLFdBQW1CO1lBRW5CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUN0RSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFDcEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQ25FLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUM1QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUM1QyxHQUFHLEVBQ0gsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxFQUN2RyxVQUFVLENBQUMsRUFBRTtnQkFDWCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNwRSxNQUFNLE9BQU8sR0FBMkI7b0JBQ3RDLFdBQVcsRUFBRSxXQUFXO29CQUN4QixjQUFjLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWM7b0JBQ2hGLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTztvQkFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPO29CQUMzRCxPQUFPLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU87b0JBQzNELFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUztvQkFDakUsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLGVBQWUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO2lCQUM3RCxDQUFDO2dCQUNGLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQ0FBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsa0NBQWdCLENBQUMsU0FBUyxDQUFDO29CQUNwRyxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztnQkFDcEMsQ0FBQztxQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssa0NBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ25GLE9BQU8sQ0FBQyxNQUFNLEdBQUcsa0NBQWdCLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3hELENBQUM7Z0JBQ0QsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO1FBRU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLEdBQWtCO1lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUN0RSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFDcEIsQ0FBQzt3QkFDQyxJQUFJLEVBQUU7NEJBQ0osZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFOzRCQUNwRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTt5QkFDM0I7cUJBQ0YsQ0FBQyxFQUNGLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxDQUM1QixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FDNUMsR0FBRyxFQUNILENBQUMsaUJBQWlCLENBQUMsRUFDbkIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNiLGVBQWUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUM1RCxXQUFXLEVBQUUsU0FBUzthQUN2QixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7UUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLEtBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLEdBQWtCLEVBQ2xCLEtBQXlCLEVBQ3pCLE9BQW9DLEVBQ3BDLElBQWUsRUFDZixPQUEwQjtZQUUxQixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXpELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxFQUFFLGtDQUFnQixDQUFDLE1BQU0sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO2dCQUM5RyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztnQkFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNwSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztnQkFDckcsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUMvQyxTQUFTLEVBQ1QsU0FBUyxFQUNULGFBQWEsU0FBUyx3Q0FBd0MsQ0FDL0QsQ0FBQztnQkFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsK0JBQStCLENBQUMsQ0FBQztnQkFDakgsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FDL0MsU0FBUyxFQUNULFNBQVMsRUFDVCw2Q0FBNkMsU0FBUyxHQUFHLENBQzFELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3hHLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBRUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFjLENBQUM7WUFDekcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFbkYsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM3QixJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FDL0MsU0FBUyxFQUNULFNBQVMsRUFDVCx1Q0FBdUMsU0FBUyxHQUFHLEVBQ25ELEVBQUUsRUFDRixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FDNUMsQ0FBQzt3QkFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7d0JBQ2pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQztvQkFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3hHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUMvSCxPQUFPO3dCQUNMLFFBQVE7d0JBQ1IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7NEJBQ25ELENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQzs0QkFDMUYsQ0FBQyxDQUFDLFNBQVM7cUJBQ2QsQ0FBQztnQkFDSixDQUFDO2dCQUVELEtBQUssa0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQy9DLFNBQVMsRUFDVCxTQUFTLEVBQ1QscUNBQXFDLFNBQVMsR0FBRyxDQUNsRCxDQUFDO3dCQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUNsRyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBYyxDQUFDO29CQUN2RCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFjLENBQUM7b0JBQ3RFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO3dCQUNyRCxNQUFNLFFBQVEsR0FBaUM7NEJBQzdDLFNBQVM7NEJBQ1QsR0FBRzs0QkFDSCxTQUFTOzRCQUNULE9BQU8sRUFBRSxnQ0FBYyxDQUFDLFNBQVM7NEJBQ2pDLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE9BQU8sRUFBRSx1REFBdUQsR0FBRyxFQUFFOzRCQUNyRSxPQUFPLEVBQUUsRUFBRTt5QkFDWixDQUFDO3dCQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDakgsTUFBTSxRQUFRLEdBQWlDO3dCQUM3QyxTQUFTO3dCQUNULEdBQUc7d0JBQ0gsU0FBUzt3QkFDVCxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0NBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFjLENBQUMsTUFBTTt3QkFDOUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxPQUFPO3dCQUM1QixPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87d0JBQzdCLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTztxQkFDOUIsQ0FBQztvQkFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDcEksT0FBTzt3QkFDTCxRQUFRO3dCQUNSLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxjQUFjOzRCQUMzRCxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxjQUFlLEVBQUUsSUFBSSxDQUFDOzRCQUNyRyxDQUFDLENBQUMsU0FBUztxQkFDZCxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM3QixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FDL0MsU0FBUyxFQUNULFNBQVMsRUFDVCxxQ0FBcUMsU0FBUyxHQUFHLENBQ2xELENBQUM7d0JBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7d0JBQ2xHLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQztvQkFFRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFjLENBQUM7b0JBQ3ZELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLENBQUM7d0JBQ0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDdEcsTUFBTSxRQUFRLEdBQWlDOzRCQUM3QyxTQUFTOzRCQUNULEdBQUc7NEJBQ0gsU0FBUzs0QkFDVCxPQUFPLEVBQUUsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxnQ0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0NBQWMsQ0FBQyxNQUFNOzRCQUN2RixNQUFNLEVBQUUsY0FBYyxDQUFDLFlBQVksRUFBRTs0QkFDckMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0NBQ3BDLENBQUMsQ0FBQyw2QkFBNkI7Z0NBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQzs0QkFDOUQsT0FBTyxFQUFFLE9BQU8sY0FBYyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7eUJBQ2xGLENBQUM7d0JBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7d0JBQy9ILE9BQU87NEJBQ0wsUUFBUTs0QkFDUixRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dDQUMxQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2dDQUNoRSxDQUFDLENBQUMsU0FBUzt5QkFDZCxDQUFDO29CQUNKLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQzlHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQzt3QkFDakcsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUN0QixDQUFDO2dCQUNILENBQUM7Z0JBRUQsS0FBSyxrQ0FBZ0IsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ1IsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ3hHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsa0NBQWdCLENBQUMsTUFBTSxDQUFDO3dCQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDL0gsT0FBTzs0QkFDTCxRQUFROzRCQUNSLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dDQUNuRCxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUM7Z0NBQzFGLENBQUMsQ0FBQyxTQUFTO3lCQUNkLENBQUM7b0JBQ0osQ0FBQztvQkFFRCxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFjLENBQUM7b0JBQ3ZELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLGNBQWMsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO3dCQUN4QyxNQUFNLFFBQVEsR0FBaUM7NEJBQzdDLFNBQVM7NEJBQ1QsR0FBRzs0QkFDSCxTQUFTOzRCQUNULE9BQU8sRUFBRSxnQ0FBYyxDQUFDLFNBQVM7NEJBQ2pDLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE9BQU8sRUFBRSxxREFBcUQsR0FBRyxFQUFFOzRCQUNuRSxPQUFPLEVBQUUsRUFBRTt5QkFDWixDQUFDO3dCQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFjLENBQUM7b0JBQ3RFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO3dCQUNyRCxNQUFNLFFBQVEsR0FBaUM7NEJBQzdDLFNBQVM7NEJBQ1QsR0FBRzs0QkFDSCxTQUFTOzRCQUNULE9BQU8sRUFBRSxnQ0FBYyxDQUFDLFNBQVM7NEJBQ2pDLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE9BQU8sRUFBRSx1REFBdUQsR0FBRyxFQUFFOzRCQUNyRSxPQUFPLEVBQUUsRUFBRTt5QkFDWixDQUFDO3dCQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLENBQUM7b0JBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDakgsTUFBTSxRQUFRLEdBQWlDO3dCQUM3QyxTQUFTO3dCQUNULEdBQUc7d0JBQ0gsU0FBUzt3QkFDVCxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0NBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFjLENBQUMsTUFBTTt3QkFDOUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxPQUFPO3dCQUM1QixPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87d0JBQzdCLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTztxQkFDOUIsQ0FBQztvQkFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDcEksT0FBTzt3QkFDTCxRQUFRO3dCQUNSLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxjQUFjOzRCQUMzRCxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxjQUFlLEVBQUUsSUFBSSxDQUFDOzRCQUNyRyxDQUFDLENBQUMsU0FBUztxQkFDZCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FDckMsS0FBb0IsRUFDcEIsZUFBZ0MsRUFDaEMsSUFBeUMsRUFDekMsVUFBa0IsRUFDbEIsSUFBZTtZQUVmLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sSUFBSSwwQ0FBc0IsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQWdCLENBQUM7WUFDL0MsTUFBTSxlQUFlLEdBQXlCLEVBQUUsQ0FBQztZQUNqRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDekIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLHVDQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLDZCQUE2QixDQUFDLENBQUMsQ0FBQztvQkFDbEcsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQTBCLENBQUM7Z0JBQ2hJLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzNELGVBQWUsQ0FBQyxJQUFJLENBQ2xCLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUNsQyxLQUFLLEVBQ0wsZUFBZSxFQUNmLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBYyxFQUNsQyxTQUFTLEVBQ1QsVUFBVSxFQUNWLElBQUksQ0FDTCxDQUNGLENBQUM7b0JBQ0YsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDNUIsZUFBZSxDQUFDLElBQUksQ0FDbEIsSUFBSSx1Q0FBa0IsQ0FDcEIsU0FBUyxFQUNULEdBQUcsRUFDSCxJQUFJLEVBQ0oscURBQXFELEdBQUcsRUFBRSxDQUMzRCxDQUNGLENBQUM7b0JBQ0YsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFjLENBQUM7Z0JBQzFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO29CQUN4RCxlQUFlLENBQUMsSUFBSSxDQUNsQixJQUFJLHVDQUFrQixDQUNwQixTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSix1REFBdUQsR0FBRyxFQUFFLENBQzdELENBQ0YsQ0FBQztvQkFDRixTQUFTO2dCQUNYLENBQUM7Z0JBRUQsZUFBZSxDQUFDLElBQUksQ0FDbEIsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQ2xDLEtBQUssRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLENBQUMsYUFBYSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQWMsRUFDNUMsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLENBQ0wsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUM7UUFFTSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLEtBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLElBQXlDLEVBQ3pDLEtBQWMsRUFDZCxJQUFlO1lBRWYsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLDBDQUFzQixDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBZ0IsQ0FBQztZQUMvQyxNQUFNLFNBQVMsR0FBeUIsRUFBRSxDQUFDO1lBQzNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksdUNBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO29CQUM1RixTQUFTO2dCQUNYLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBMEIsQ0FBQztnQkFDakgsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNuRixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQ1osTUFBTSxJQUFJLENBQUMseUJBQXlCLENBQ2xDLEtBQUssRUFDTCxlQUFlLEVBQ2YsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBYyxFQUNuQyxTQUFTLEVBQ1QsUUFBUSxFQUNSLElBQUksQ0FDTCxDQUNGLENBQUM7b0JBQ0YsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQzlDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxNQUFNLFdBQVcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFjLENBQUM7Z0JBQ3JFLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQWMsQ0FBQztnQkFDeEQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUNuRCxTQUFTLENBQUMsSUFBSSxDQUNaLElBQUksdUNBQWtCLENBQ3BCLFNBQVMsRUFDVCxHQUFHLEVBQ0gsSUFBSSxFQUNKLDRCQUE0QixTQUFTLFFBQVEsR0FBRyx3REFBd0QsQ0FDekcsQ0FDRixDQUFDO29CQUNGLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxTQUFTLENBQUMsSUFBSSxDQUNaLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUNsQyxLQUFLLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLENBQ0wsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFTyxzQkFBc0IsQ0FBQyxPQUFzQztZQUNuRSxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7WUFDckMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN6QixTQUFTO2dCQUNYLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVPLHlCQUF5QixDQUFDLFFBQStCO1lBQy9ELE9BQU87Z0JBQ0wsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO2dCQUN2QyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDekIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTthQUN4QixDQUFDO1FBQ0osQ0FBQztRQUVPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUF5QixFQUFFLFdBQW1CO1lBQzdFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxPQUFPLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDaEMsS0FBSztnQkFDTCxXQUFXO2FBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQXlCLENBQUM7UUFDbEQsQ0FBQztRQUVNLEtBQUssQ0FBQyxXQUFXLENBQ3RCLEtBQW9CLEVBQ3BCLGVBQWdDLEVBQ2hDLFdBQWdELEVBQ2hELElBQWU7WUFFZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRWpGLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDMUUsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssb0NBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkcsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELE9BQU87b0JBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO29CQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDO2lCQUMvQyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLG9DQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sY0FBYyxHQUFHLGNBQWM7aUJBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssb0NBQWtCLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssb0NBQWtCLENBQUMsV0FBVyxDQUFDO2lCQUM5RyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztvQkFDbEQsTUFBTSxJQUFJLDBDQUFzQixDQUFDLDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELE1BQU0sZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzlELE1BQU0sRUFBRSxvQ0FBa0IsQ0FBQyxXQUFXO29CQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtvQkFDMUIsWUFBWSxFQUFFLGlEQUFpRDtpQkFDaEUsQ0FBQyxDQUFDO2dCQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNuRyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2RCxNQUFNLElBQUksMENBQXNCLENBQUMseUVBQXlFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkgsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUgsTUFBTSxZQUFZLEdBQUcsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDO2dCQUNoRCxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMzQixPQUFPO2dCQUNQLFVBQVUsRUFBRSxjQUFjO2dCQUMxQixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7Z0JBQ2hDLFdBQVc7Z0JBQ1gsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2hDLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ2hDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWE7Z0JBQzNDLE1BQU0sRUFBRSxvQ0FBa0IsQ0FBQyxVQUFVO2dCQUNyQyxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUNuQyxjQUFjLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsU0FBUyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxFQUFFLENBQUM7Z0JBQ1QsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLFdBQVc7Z0JBQ1gsZUFBZSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzRSxDQUFDLENBQUMsS0FBSyxFQUF3QixDQUFDO1lBRWpDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQztnQkFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsc0NBQXNDLENBQzNFLE9BQU8sRUFDUCxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQ3BFLGNBQWMsQ0FDZixDQUFDO2dCQUNGLE1BQU0sT0FBTyxHQUFzQjtvQkFDakMsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLE1BQU0sRUFBRSxFQUFFO2lCQUNYLENBQUM7Z0JBQ0YsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUN0RSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDcEgsSUFBSSxDQUFDO3dCQUNILE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDbEQsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO3dCQUNwQixJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs0QkFDdkIsSUFBSSxDQUFDO2dDQUNILE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUM3QixDQUFDOzRCQUFDLE9BQU8sYUFBYSxFQUFFLENBQUM7Z0NBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkNBQTZDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJO29DQUM1RSxnQ0FBZ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FDdEUsQ0FBQzs0QkFDSixDQUFDO3dCQUNILENBQUM7d0JBQ0QsTUFBTSxLQUFLLENBQUM7b0JBQ2QsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQXlCLENBQUMsQ0FBQztvQkFDL0UsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDeEYsQ0FBQztnQkFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sWUFBWSxHQUFnQztvQkFDaEQsTUFBTSxFQUFFLG9DQUFrQixDQUFDLFNBQVM7b0JBQ3BDLFdBQVcsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU07b0JBQ25DLGNBQWMsRUFBRSxRQUFRLENBQUMsY0FBYztvQkFDdkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO29CQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDekIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO29CQUM3QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07b0JBQ3ZCLFdBQVc7b0JBQ1gsZUFBZSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7aUJBQzFELENBQUM7Z0JBRUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQThCLENBQUM7Z0JBQzdILE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDM0csT0FBTztvQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7aUJBQy9FLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUMzRCxNQUFNLEVBQUUsb0NBQWtCLENBQUMsTUFBTTtvQkFDakMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTTtvQkFDbkMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO29CQUN2QyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87b0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztvQkFDekIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO29CQUN6QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7b0JBQzdCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtvQkFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQzFCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87b0JBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDO2lCQUMxRCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBb0IsRUFBRSxNQUFvQztZQUM5RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0UsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFjLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQ0QsTUFBTSxnQkFBZ0IsR0FBYyxFQUFFLENBQUM7WUFDdkMsSUFBSSxNQUFNLENBQUMsUUFBUSxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM1RSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZELENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLEtBQUssQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7WUFDckMsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQW9CLENBQUM7WUFDL0csT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQztRQUVNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBb0IsRUFBRSxLQUFhO1lBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBeUIsQ0FBQztZQUNyRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBeUIsQ0FBQztZQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQTRCLENBQUM7WUFDN0gsT0FBTztnQkFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pCLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRCxlQUFlLEVBQUU7b0JBQ2YsY0FBYyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztvQkFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztvQkFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztvQkFDakMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztvQkFDckMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztvQkFDL0IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztvQkFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztpQkFDbEQ7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBb0IsRUFBRSxLQUFhO1lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBeUIsQ0FBQztZQUNyRixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRU0sS0FBSyxDQUFDLGFBQWEsQ0FDeEIsS0FBb0IsRUFDcEIsS0FBYSxFQUNiLE1BQXNDO1lBRXRDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzRSxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDbkMsTUFBTSxLQUFLLEdBQWM7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsT0FBTzthQUNSLENBQUM7WUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLElBQUksR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBNEIsQ0FBQztZQUMvSCxPQUFPO2dCQUNMLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQzFCLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFobERZLDBCQUFpQixvQkFnbEQ3QixDQUFBO0FBQ0gsQ0FBQyxFQWxsRGdCLFFBQVEsd0JBQVIsUUFBUSxRQWtsRHhCIn0=
1381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFydmVzdFJ1blNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvSGFydmVzdFJ1blNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQTRCO0FBQzVCLDZDQUF5QztBQUN6QywrQkFBa0Q7QUFFbEQsZ0RBQXNEO0FBRXRELDREQU84QjtBQUM5QixvRUFBaUU7QUFLakUsc0VBYzBDO0FBRTFDLHVFQUFzRTtBQUN0RSw4REFLK0I7QUFJL0IscUNBQW1DO0FBdUNuQyxJQUFpQixRQUFRLENBdTBEeEI7QUF2MERELFdBQWlCLFFBQVE7SUFDdkIsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBQ3ZDLGdCQUFnQixHQUFhO1lBQzlDLDRCQUE0QjtZQUM1QixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLFVBQVU7WUFDVixRQUFRO1lBQ1IsV0FBVztZQUNYLGVBQWU7U0FDaEIsQ0FBQztRQUVGO1lBQ0UsS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDO1FBQ3pDLENBQUM7UUFFTyxPQUFPLENBQUMsS0FBYztZQUM1QixPQUFPLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVPLGNBQWMsQ0FBQyxLQUE2QjtZQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUks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