@super-protocol/swarm-contracts-sdk 0.0.1-beta.1

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 (629) hide show
  1. package/LICENSE +66 -0
  2. package/README.md +52 -0
  3. package/dist/cjs/analytics/Analytics.d.ts +17 -0
  4. package/dist/cjs/analytics/Analytics.js +84 -0
  5. package/dist/cjs/analytics/AnalyticsError.d.ts +7 -0
  6. package/dist/cjs/analytics/AnalyticsError.js +12 -0
  7. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
  8. package/dist/cjs/analytics/eventProviders/BrowserEventProvider.js +38 -0
  9. package/dist/cjs/analytics/eventProviders/EventProvider.d.ts +24 -0
  10. package/dist/cjs/analytics/eventProviders/EventProvider.js +25 -0
  11. package/dist/cjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
  12. package/dist/cjs/analytics/eventProviders/NodeEventProvider.js +56 -0
  13. package/dist/cjs/analytics/transports/AxiosTransport.d.ts +4 -0
  14. package/dist/cjs/analytics/transports/AxiosTransport.js +60 -0
  15. package/dist/cjs/analytics/transports/FetchTransport.d.ts +4 -0
  16. package/dist/cjs/analytics/transports/FetchTransport.js +31 -0
  17. package/dist/cjs/analytics/types.d.ts +26 -0
  18. package/dist/cjs/analytics/types.js +3 -0
  19. package/dist/cjs/certificates/binary-splitter.d.ts +27 -0
  20. package/dist/cjs/certificates/binary-splitter.js +279 -0
  21. package/dist/cjs/certificates/crl.d.ts +6 -0
  22. package/dist/cjs/certificates/crl.js +66 -0
  23. package/dist/cjs/certificates/generator.d.ts +38 -0
  24. package/dist/cjs/certificates/generator.js +262 -0
  25. package/dist/cjs/certificates/helper.d.ts +29 -0
  26. package/dist/cjs/certificates/helper.js +216 -0
  27. package/dist/cjs/certificates/index.d.ts +5 -0
  28. package/dist/cjs/certificates/index.js +22 -0
  29. package/dist/cjs/certificates/ocsp.d.ts +14 -0
  30. package/dist/cjs/certificates/ocsp.js +320 -0
  31. package/dist/cjs/certificates/serializer.d.ts +13 -0
  32. package/dist/cjs/certificates/serializer.js +142 -0
  33. package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
  34. package/dist/cjs/certificates/setup-crypto.js +48 -0
  35. package/dist/cjs/certificates/types.d.ts +122 -0
  36. package/dist/cjs/certificates/types.js +10 -0
  37. package/dist/cjs/config.d.ts +3 -0
  38. package/dist/cjs/config.js +7 -0
  39. package/dist/cjs/connectors/BaseConnector.d.ts +52 -0
  40. package/dist/cjs/connectors/BaseConnector.js +61 -0
  41. package/dist/cjs/connectors/BlockchainConnector.d.ts +78 -0
  42. package/dist/cjs/connectors/BlockchainConnector.js +325 -0
  43. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +33 -0
  44. package/dist/cjs/connectors/BlockchainEventsListener.js +283 -0
  45. package/dist/cjs/connectors/index.d.ts +2 -0
  46. package/dist/cjs/connectors/index.js +11 -0
  47. package/dist/cjs/constants.d.ts +48 -0
  48. package/dist/cjs/constants.js +683 -0
  49. package/dist/cjs/contracts/SuperProtocolToken.d.ts +300 -0
  50. package/dist/cjs/contracts/SuperProtocolToken.js +3 -0
  51. package/dist/cjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
  52. package/dist/cjs/contracts/SuperProtocolToken__factory.js +521 -0
  53. package/dist/cjs/contracts/typechain-types/common.d.ts +50 -0
  54. package/dist/cjs/contracts/typechain-types/common.js +3 -0
  55. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
  56. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4335 -0
  57. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  58. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +10 -0
  59. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
  60. package/dist/cjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +32 -0
  61. package/dist/cjs/contracts/typechain-types/factories/index.d.ts +1 -0
  62. package/dist/cjs/contracts/typechain-types/factories/index.js +32 -0
  63. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
  64. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +3 -0
  65. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  66. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +3 -0
  67. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
  68. package/dist/cjs/contracts/typechain-types/hardhat-diamond-abi/index.js +3 -0
  69. package/dist/cjs/contracts/typechain-types/index.d.ts +5 -0
  70. package/dist/cjs/contracts/typechain-types/index.js +34 -0
  71. package/dist/cjs/crypto/Crypto.d.ts +70 -0
  72. package/dist/cjs/crypto/Crypto.js +137 -0
  73. package/dist/cjs/crypto/index.d.ts +4 -0
  74. package/dist/cjs/crypto/index.js +37 -0
  75. package/dist/cjs/crypto/nodejs/AES.d.ts +25 -0
  76. package/dist/cjs/crypto/nodejs/AES.js +105 -0
  77. package/dist/cjs/crypto/nodejs/ARIA.d.ts +23 -0
  78. package/dist/cjs/crypto/nodejs/ARIA.js +77 -0
  79. package/dist/cjs/crypto/nodejs/ECIES.d.ts +10 -0
  80. package/dist/cjs/crypto/nodejs/ECIES.js +107 -0
  81. package/dist/cjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
  82. package/dist/cjs/crypto/nodejs/NativeCrypto.js +154 -0
  83. package/dist/cjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  84. package/dist/cjs/crypto/nodejs/RSA-Hybrid.js +94 -0
  85. package/dist/cjs/crypto/types.d.ts +10 -0
  86. package/dist/cjs/crypto/types.js +3 -0
  87. package/dist/cjs/crypto/utils.d.ts +15 -0
  88. package/dist/cjs/crypto/utils.js +94 -0
  89. package/dist/cjs/crypto/utils.spec.d.ts +1 -0
  90. package/dist/cjs/crypto/utils.spec.js +221 -0
  91. package/dist/cjs/errors/base.error.d.ts +3 -0
  92. package/dist/cjs/errors/base.error.js +19 -0
  93. package/dist/cjs/errors/index.d.ts +3 -0
  94. package/dist/cjs/errors/index.js +10 -0
  95. package/dist/cjs/errors/insufficient-funds.error.d.ts +19 -0
  96. package/dist/cjs/errors/insufficient-funds.error.js +57 -0
  97. package/dist/cjs/errors/not-found.error.d.ts +3 -0
  98. package/dist/cjs/errors/not-found.error.js +8 -0
  99. package/dist/cjs/errors/utils.d.ts +2 -0
  100. package/dist/cjs/errors/utils.js +30 -0
  101. package/dist/cjs/index.d.ts +58 -0
  102. package/dist/cjs/index.js +119 -0
  103. package/dist/cjs/logger.d.ts +7 -0
  104. package/dist/cjs/logger.js +12 -0
  105. package/dist/cjs/models/EtlModel.d.ts +34 -0
  106. package/dist/cjs/models/EtlModel.js +125 -0
  107. package/dist/cjs/models/index.d.ts +1 -0
  108. package/dist/cjs/models/index.js +9 -0
  109. package/dist/cjs/package.json +1 -0
  110. package/dist/cjs/polyfills.d.ts +4 -0
  111. package/dist/cjs/polyfills.js +8 -0
  112. package/dist/cjs/proto/AmdSevSnp.d.ts +194 -0
  113. package/dist/cjs/proto/AmdSevSnp.js +358 -0
  114. package/dist/cjs/proto/Compression.d.ts +43 -0
  115. package/dist/cjs/proto/Compression.js +133 -0
  116. package/dist/cjs/proto/Hash.d.ts +37 -0
  117. package/dist/cjs/proto/Hash.js +104 -0
  118. package/dist/cjs/proto/Nvtrust.d.ts +116 -0
  119. package/dist/cjs/proto/Nvtrust.js +159 -0
  120. package/dist/cjs/proto/OrderReport.d.ts +730 -0
  121. package/dist/cjs/proto/OrderReport.js +466 -0
  122. package/dist/cjs/proto/TRI.d.ts +215 -0
  123. package/dist/cjs/proto/TRI.js +318 -0
  124. package/dist/cjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
  125. package/dist/cjs/providers/storage/ChunksDownloadDecorator.js +145 -0
  126. package/dist/cjs/providers/storage/IStorageProvider.d.ts +15 -0
  127. package/dist/cjs/providers/storage/IStorageProvider.js +3 -0
  128. package/dist/cjs/providers/storage/S3StorageProvider.d.ts +26 -0
  129. package/dist/cjs/providers/storage/S3StorageProvider.js +210 -0
  130. package/dist/cjs/providers/storage/StorageAdapter.d.ts +62 -0
  131. package/dist/cjs/providers/storage/StorageAdapter.js +300 -0
  132. package/dist/cjs/providers/storage/StorageContentWriter.d.ts +46 -0
  133. package/dist/cjs/providers/storage/StorageContentWriter.js +168 -0
  134. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
  135. package/dist/cjs/providers/storage/StorageKeyValueAdapter.js +139 -0
  136. package/dist/cjs/providers/storage/StorageMetadataReader.d.ts +20 -0
  137. package/dist/cjs/providers/storage/StorageMetadataReader.js +56 -0
  138. package/dist/cjs/providers/storage/StorjAdapter.d.ts +20 -0
  139. package/dist/cjs/providers/storage/StorjAdapter.js +60 -0
  140. package/dist/cjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  141. package/dist/cjs/providers/storage/StorjCredentialsManager.js +114 -0
  142. package/dist/cjs/providers/storage/StorjStorageProvider.d.ts +29 -0
  143. package/dist/cjs/providers/storage/StorjStorageProvider.js +146 -0
  144. package/dist/cjs/providers/storage/fs-storage-provider.d.ts +19 -0
  145. package/dist/cjs/providers/storage/fs-storage-provider.js +162 -0
  146. package/dist/cjs/providers/storage/getStorageProvider.d.ts +4 -0
  147. package/dist/cjs/providers/storage/getStorageProvider.js +23 -0
  148. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +4 -0
  149. package/dist/cjs/providers/storage/parseStorageCredentials.js +21 -0
  150. package/dist/cjs/providers/storage/types.d.ts +29 -0
  151. package/dist/cjs/providers/storage/types.js +3 -0
  152. package/dist/cjs/staticModels/Deposits.d.ts +85 -0
  153. package/dist/cjs/staticModels/Deposits.js +268 -0
  154. package/dist/cjs/staticModels/Diamond.d.ts +6 -0
  155. package/dist/cjs/staticModels/Diamond.js +22 -0
  156. package/dist/cjs/staticModels/ModelPackager.d.ts +18 -0
  157. package/dist/cjs/staticModels/ModelPackager.js +49 -0
  158. package/dist/cjs/staticModels/ProviderRewards.d.ts +5 -0
  159. package/dist/cjs/staticModels/ProviderRewards.js +81 -0
  160. package/dist/cjs/staticModels/StaticModel.d.ts +6 -0
  161. package/dist/cjs/staticModels/StaticModel.js +43 -0
  162. package/dist/cjs/staticModels/Superpro.d.ts +18 -0
  163. package/dist/cjs/staticModels/Superpro.js +47 -0
  164. package/dist/cjs/staticModels/SuperproToken.d.ts +113 -0
  165. package/dist/cjs/staticModels/SuperproToken.js +333 -0
  166. package/dist/cjs/store.d.ts +17 -0
  167. package/dist/cjs/store.js +19 -0
  168. package/dist/cjs/tee/OrderReportService.d.ts +9 -0
  169. package/dist/cjs/tee/OrderReportService.js +104 -0
  170. package/dist/cjs/tee/QuoteParser.d.ts +82 -0
  171. package/dist/cjs/tee/QuoteParser.js +410 -0
  172. package/dist/cjs/tee/TeeCertificateService.d.ts +20 -0
  173. package/dist/cjs/tee/TeeCertificateService.js +143 -0
  174. package/dist/cjs/tee/TeeSignatureVerifier.d.ts +24 -0
  175. package/dist/cjs/tee/TeeSignatureVerifier.js +118 -0
  176. package/dist/cjs/tee/errors.d.ts +11 -0
  177. package/dist/cjs/tee/errors.js +20 -0
  178. package/dist/cjs/tee/helpers.d.ts +14 -0
  179. package/dist/cjs/tee/helpers.js +115 -0
  180. package/dist/cjs/tee/interface.d.ts +63 -0
  181. package/dist/cjs/tee/interface.js +3 -0
  182. package/dist/cjs/tee/statuses.d.ts +14 -0
  183. package/dist/cjs/tee/statuses.js +20 -0
  184. package/dist/cjs/tee/types.d.ts +126 -0
  185. package/dist/cjs/tee/types.js +34 -0
  186. package/dist/cjs/types/Compressor.d.ts +5 -0
  187. package/dist/cjs/types/Compressor.js +3 -0
  188. package/dist/cjs/types/Consensus.d.ts +52 -0
  189. package/dist/cjs/types/Consensus.js +11 -0
  190. package/dist/cjs/types/DepositInfo.d.ts +6 -0
  191. package/dist/cjs/types/DepositInfo.js +3 -0
  192. package/dist/cjs/types/DistributedSecretStorage.d.ts +68 -0
  193. package/dist/cjs/types/DistributedSecretStorage.js +3 -0
  194. package/dist/cjs/types/EtlModel.d.ts +2 -0
  195. package/dist/cjs/types/EtlModel.js +3 -0
  196. package/dist/cjs/types/Events.d.ts +34 -0
  197. package/dist/cjs/types/Events.js +3 -0
  198. package/dist/cjs/types/HardwareInfo.d.ts +10 -0
  199. package/dist/cjs/types/HardwareInfo.js +3 -0
  200. package/dist/cjs/types/Marks.d.ts +9 -0
  201. package/dist/cjs/types/Marks.js +10 -0
  202. package/dist/cjs/types/Offer.d.ts +76 -0
  203. package/dist/cjs/types/Offer.js +32 -0
  204. package/dist/cjs/types/OfferVersion.d.ts +30 -0
  205. package/dist/cjs/types/OfferVersion.js +9 -0
  206. package/dist/cjs/types/OptionInfo.d.ts +8 -0
  207. package/dist/cjs/types/OptionInfo.js +3 -0
  208. package/dist/cjs/types/Order.d.ts +144 -0
  209. package/dist/cjs/types/Order.js +100 -0
  210. package/dist/cjs/types/OrderUsage.d.ts +28 -0
  211. package/dist/cjs/types/OrderUsage.js +3 -0
  212. package/dist/cjs/types/Origins.d.ts +6 -0
  213. package/dist/cjs/types/Origins.js +3 -0
  214. package/dist/cjs/types/Provider.d.ts +7 -0
  215. package/dist/cjs/types/Provider.js +3 -0
  216. package/dist/cjs/types/ProviderRewards.d.ts +5 -0
  217. package/dist/cjs/types/ProviderRewards.js +3 -0
  218. package/dist/cjs/types/ResourceLoader.d.ts +28 -0
  219. package/dist/cjs/types/ResourceLoader.js +3 -0
  220. package/dist/cjs/types/SlotInfo.d.ts +7 -0
  221. package/dist/cjs/types/SlotInfo.js +3 -0
  222. package/dist/cjs/types/SlotUsage.d.ts +11 -0
  223. package/dist/cjs/types/SlotUsage.js +9 -0
  224. package/dist/cjs/types/Superpro.d.ts +9 -0
  225. package/dist/cjs/types/Superpro.js +14 -0
  226. package/dist/cjs/types/TeeOfferInfo.d.ts +38 -0
  227. package/dist/cjs/types/TeeOfferInfo.js +3 -0
  228. package/dist/cjs/types/TeeOfferOption.d.ts +13 -0
  229. package/dist/cjs/types/TeeOfferOption.js +3 -0
  230. package/dist/cjs/types/TeeOfferSlot.d.ts +8 -0
  231. package/dist/cjs/types/TeeOfferSlot.js +3 -0
  232. package/dist/cjs/types/ValueOfferSlot.d.ts +18 -0
  233. package/dist/cjs/types/ValueOfferSlot.js +3 -0
  234. package/dist/cjs/types/Web3.d.ts +30 -0
  235. package/dist/cjs/types/Web3.js +3 -0
  236. package/dist/cjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
  237. package/dist/cjs/types/blockchainConnector/StorageAccess.js +3 -0
  238. package/dist/cjs/types/index.d.ts +25 -0
  239. package/dist/cjs/types/index.js +42 -0
  240. package/dist/cjs/types/storage/StorageAccess.d.ts +7 -0
  241. package/dist/cjs/types/storage/StorageAccess.js +3 -0
  242. package/dist/cjs/types/storage/StorageFileAccess.d.ts +5 -0
  243. package/dist/cjs/types/storage/StorageFileAccess.js +3 -0
  244. package/dist/cjs/types/storage/StorageObject.d.ts +8 -0
  245. package/dist/cjs/types/storage/StorageObject.js +3 -0
  246. package/dist/cjs/utils/CryptoKeysTransformer.d.ts +42 -0
  247. package/dist/cjs/utils/CryptoKeysTransformer.js +247 -0
  248. package/dist/cjs/utils/Monitoring.d.ts +11 -0
  249. package/dist/cjs/utils/Monitoring.js +51 -0
  250. package/dist/cjs/utils/NonceTracker.d.ts +20 -0
  251. package/dist/cjs/utils/NonceTracker.js +82 -0
  252. package/dist/cjs/utils/PubSub.d.ts +9 -0
  253. package/dist/cjs/utils/PubSub.js +35 -0
  254. package/dist/cjs/utils/TxManager.d.ts +28 -0
  255. package/dist/cjs/utils/TxManager.js +285 -0
  256. package/dist/cjs/utils/cache/index.d.ts +2 -0
  257. package/dist/cjs/utils/cache/index.js +21 -0
  258. package/dist/cjs/utils/cache/memory.d.ts +19 -0
  259. package/dist/cjs/utils/cache/memory.js +66 -0
  260. package/dist/cjs/utils/cache/memory.spec.d.ts +1 -0
  261. package/dist/cjs/utils/cache/memory.spec.js +91 -0
  262. package/dist/cjs/utils/cache/types.d.ts +17 -0
  263. package/dist/cjs/utils/cache/types.js +3 -0
  264. package/dist/cjs/utils/compressors/GzipCompressor.d.ts +8 -0
  265. package/dist/cjs/utils/compressors/GzipCompressor.js +22 -0
  266. package/dist/cjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
  267. package/dist/cjs/utils/compressors/UncompressedCompressor.js +17 -0
  268. package/dist/cjs/utils/compressors/index.d.ts +2 -0
  269. package/dist/cjs/utils/compressors/index.js +19 -0
  270. package/dist/cjs/utils/helper.d.ts +87 -0
  271. package/dist/cjs/utils/helper.js +576 -0
  272. package/dist/cjs/utils/helpers/calculateObjectHash.d.ts +8 -0
  273. package/dist/cjs/utils/helpers/calculateObjectHash.js +25 -0
  274. package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
  275. package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
  276. package/dist/cjs/utils/helpers/getStreamChunks.d.ts +9 -0
  277. package/dist/cjs/utils/helpers/getStreamChunks.js +35 -0
  278. package/dist/cjs/utils/helpers/index.d.ts +5 -0
  279. package/dist/cjs/utils/helpers/index.js +22 -0
  280. package/dist/cjs/utils/helpers/promise.d.ts +2 -0
  281. package/dist/cjs/utils/helpers/promise.js +10 -0
  282. package/dist/cjs/utils/helpers/streamToBuffer.d.ts +4 -0
  283. package/dist/cjs/utils/helpers/streamToBuffer.js +13 -0
  284. package/dist/cjs/utils/helpers/tryWithInterval.d.ts +13 -0
  285. package/dist/cjs/utils/helpers/tryWithInterval.js +39 -0
  286. package/dist/cjs/utils/rent-calculator/index.d.ts +2 -0
  287. package/dist/cjs/utils/rent-calculator/index.js +19 -0
  288. package/dist/cjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
  289. package/dist/cjs/utils/rent-calculator/rent-calculator.js +114 -0
  290. package/dist/cjs/utils/rent-calculator/types.d.ts +14 -0
  291. package/dist/cjs/utils/rent-calculator/types.js +3 -0
  292. package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
  293. package/dist/cjs/utils/resourceLoaders/BaseResourceLoader.js +14 -0
  294. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
  295. package/dist/cjs/utils/resourceLoaders/StorageProviderLoader.js +60 -0
  296. package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
  297. package/dist/cjs/utils/resourceLoaders/UrlResourceLoader.js +51 -0
  298. package/dist/cjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
  299. package/dist/cjs/utils/resourceLoaders/getResourceLoader.js +15 -0
  300. package/dist/cjs/utils/resourceLoaders/index.d.ts +1 -0
  301. package/dist/cjs/utils/resourceLoaders/index.js +18 -0
  302. package/dist/cjs/utils/schema-utils/index.d.ts +2 -0
  303. package/dist/cjs/utils/schema-utils/index.js +9 -0
  304. package/dist/cjs/utils/schema-utils/serializer.d.ts +3 -0
  305. package/dist/cjs/utils/schema-utils/serializer.js +31 -0
  306. package/dist/cjs/utils/schema-utils/validator.d.ts +7 -0
  307. package/dist/cjs/utils/schema-utils/validator.js +49 -0
  308. package/dist/cjs/utils/tcb.d.ts +2 -0
  309. package/dist/cjs/utils/tcb.js +13 -0
  310. package/dist/cjs/utils/tokens/get-tokens-info.d.ts +8 -0
  311. package/dist/cjs/utils/tokens/get-tokens-info.js +32 -0
  312. package/dist/cjs/utils/tokens/index.d.ts +1 -0
  313. package/dist/cjs/utils/tokens/index.js +18 -0
  314. package/dist/cjs/utils/types.d.ts +13 -0
  315. package/dist/cjs/utils/types.js +3 -0
  316. package/dist/mjs/analytics/Analytics.d.ts +17 -0
  317. package/dist/mjs/analytics/Analytics.js +78 -0
  318. package/dist/mjs/analytics/AnalyticsError.d.ts +7 -0
  319. package/dist/mjs/analytics/AnalyticsError.js +8 -0
  320. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.d.ts +19 -0
  321. package/dist/mjs/analytics/eventProviders/BrowserEventProvider.js +32 -0
  322. package/dist/mjs/analytics/eventProviders/EventProvider.d.ts +24 -0
  323. package/dist/mjs/analytics/eventProviders/EventProvider.js +22 -0
  324. package/dist/mjs/analytics/eventProviders/NodeEventProvider.d.ts +22 -0
  325. package/dist/mjs/analytics/eventProviders/NodeEventProvider.js +50 -0
  326. package/dist/mjs/analytics/transports/AxiosTransport.d.ts +4 -0
  327. package/dist/mjs/analytics/transports/AxiosTransport.js +31 -0
  328. package/dist/mjs/analytics/transports/FetchTransport.d.ts +4 -0
  329. package/dist/mjs/analytics/transports/FetchTransport.js +28 -0
  330. package/dist/mjs/analytics/types.d.ts +26 -0
  331. package/dist/mjs/analytics/types.js +2 -0
  332. package/dist/mjs/certificates/binary-splitter.d.ts +27 -0
  333. package/dist/mjs/certificates/binary-splitter.js +275 -0
  334. package/dist/mjs/certificates/crl.d.ts +6 -0
  335. package/dist/mjs/certificates/crl.js +39 -0
  336. package/dist/mjs/certificates/generator.d.ts +38 -0
  337. package/dist/mjs/certificates/generator.js +255 -0
  338. package/dist/mjs/certificates/helper.d.ts +29 -0
  339. package/dist/mjs/certificates/helper.js +186 -0
  340. package/dist/mjs/certificates/index.d.ts +5 -0
  341. package/dist/mjs/certificates/index.js +6 -0
  342. package/dist/mjs/certificates/ocsp.d.ts +14 -0
  343. package/dist/mjs/certificates/ocsp.js +290 -0
  344. package/dist/mjs/certificates/serializer.d.ts +13 -0
  345. package/dist/mjs/certificates/serializer.js +135 -0
  346. package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
  347. package/dist/mjs/certificates/setup-crypto.js +22 -0
  348. package/dist/mjs/certificates/types.d.ts +122 -0
  349. package/dist/mjs/certificates/types.js +7 -0
  350. package/dist/mjs/config.d.ts +3 -0
  351. package/dist/mjs/config.js +4 -0
  352. package/dist/mjs/connectors/BaseConnector.d.ts +52 -0
  353. package/dist/mjs/connectors/BaseConnector.js +54 -0
  354. package/dist/mjs/connectors/BlockchainConnector.d.ts +78 -0
  355. package/dist/mjs/connectors/BlockchainConnector.js +320 -0
  356. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +33 -0
  357. package/dist/mjs/connectors/BlockchainEventsListener.js +254 -0
  358. package/dist/mjs/connectors/index.d.ts +2 -0
  359. package/dist/mjs/connectors/index.js +3 -0
  360. package/dist/mjs/constants.d.ts +48 -0
  361. package/dist/mjs/constants.js +680 -0
  362. package/dist/mjs/contracts/SuperProtocolToken.d.ts +300 -0
  363. package/dist/mjs/contracts/SuperProtocolToken.js +2 -0
  364. package/dist/mjs/contracts/SuperProtocolToken__factory.d.ts +393 -0
  365. package/dist/mjs/contracts/SuperProtocolToken__factory.js +517 -0
  366. package/dist/mjs/contracts/typechain-types/common.d.ts +50 -0
  367. package/dist/mjs/contracts/typechain-types/common.js +2 -0
  368. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.d.ts +3340 -0
  369. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/App__factory.js +4331 -0
  370. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  371. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +6 -0
  372. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.d.ts +1 -0
  373. package/dist/mjs/contracts/typechain-types/factories/hardhat-diamond-abi/index.js +6 -0
  374. package/dist/mjs/contracts/typechain-types/factories/index.d.ts +1 -0
  375. package/dist/mjs/contracts/typechain-types/factories/index.js +6 -0
  376. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.d.ts +2299 -0
  377. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/App.js +2 -0
  378. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.d.ts +1 -0
  379. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/HardhatDiamondABI.sol/index.js +2 -0
  380. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.d.ts +2 -0
  381. package/dist/mjs/contracts/typechain-types/hardhat-diamond-abi/index.js +2 -0
  382. package/dist/mjs/contracts/typechain-types/index.d.ts +5 -0
  383. package/dist/mjs/contracts/typechain-types/index.js +7 -0
  384. package/dist/mjs/crypto/Crypto.d.ts +70 -0
  385. package/dist/mjs/crypto/Crypto.js +132 -0
  386. package/dist/mjs/crypto/index.d.ts +4 -0
  387. package/dist/mjs/crypto/index.js +5 -0
  388. package/dist/mjs/crypto/nodejs/AES.d.ts +25 -0
  389. package/dist/mjs/crypto/nodejs/AES.js +77 -0
  390. package/dist/mjs/crypto/nodejs/ARIA.d.ts +23 -0
  391. package/dist/mjs/crypto/nodejs/ARIA.js +72 -0
  392. package/dist/mjs/crypto/nodejs/ECIES.d.ts +10 -0
  393. package/dist/mjs/crypto/nodejs/ECIES.js +82 -0
  394. package/dist/mjs/crypto/nodejs/NativeCrypto.d.ts +46 -0
  395. package/dist/mjs/crypto/nodejs/NativeCrypto.js +152 -0
  396. package/dist/mjs/crypto/nodejs/RSA-Hybrid.d.ts +15 -0
  397. package/dist/mjs/crypto/nodejs/RSA-Hybrid.js +89 -0
  398. package/dist/mjs/crypto/types.d.ts +10 -0
  399. package/dist/mjs/crypto/types.js +2 -0
  400. package/dist/mjs/crypto/utils.d.ts +15 -0
  401. package/dist/mjs/crypto/utils.js +81 -0
  402. package/dist/mjs/crypto/utils.spec.d.ts +1 -0
  403. package/dist/mjs/crypto/utils.spec.js +219 -0
  404. package/dist/mjs/errors/base.error.d.ts +3 -0
  405. package/dist/mjs/errors/base.error.js +15 -0
  406. package/dist/mjs/errors/index.d.ts +3 -0
  407. package/dist/mjs/errors/index.js +4 -0
  408. package/dist/mjs/errors/insufficient-funds.error.d.ts +19 -0
  409. package/dist/mjs/errors/insufficient-funds.error.js +53 -0
  410. package/dist/mjs/errors/not-found.error.d.ts +3 -0
  411. package/dist/mjs/errors/not-found.error.js +4 -0
  412. package/dist/mjs/errors/utils.d.ts +2 -0
  413. package/dist/mjs/errors/utils.js +22 -0
  414. package/dist/mjs/index.d.ts +58 -0
  415. package/dist/mjs/index.js +53 -0
  416. package/dist/mjs/logger.d.ts +7 -0
  417. package/dist/mjs/logger.js +7 -0
  418. package/dist/mjs/models/EtlModel.d.ts +34 -0
  419. package/dist/mjs/models/EtlModel.js +96 -0
  420. package/dist/mjs/models/index.d.ts +1 -0
  421. package/dist/mjs/models/index.js +2 -0
  422. package/dist/mjs/package.json +1 -0
  423. package/dist/mjs/polyfills.d.ts +4 -0
  424. package/dist/mjs/polyfills.js +8 -0
  425. package/dist/mjs/proto/AmdSevSnp.d.ts +194 -0
  426. package/dist/mjs/proto/AmdSevSnp.js +348 -0
  427. package/dist/mjs/proto/Compression.d.ts +43 -0
  428. package/dist/mjs/proto/Compression.js +125 -0
  429. package/dist/mjs/proto/Hash.d.ts +37 -0
  430. package/dist/mjs/proto/Hash.js +98 -0
  431. package/dist/mjs/proto/Nvtrust.d.ts +116 -0
  432. package/dist/mjs/proto/Nvtrust.js +153 -0
  433. package/dist/mjs/proto/OrderReport.d.ts +730 -0
  434. package/dist/mjs/proto/OrderReport.js +460 -0
  435. package/dist/mjs/proto/TRI.d.ts +215 -0
  436. package/dist/mjs/proto/TRI.js +312 -0
  437. package/dist/mjs/providers/storage/ChunksDownloadDecorator.d.ts +36 -0
  438. package/dist/mjs/providers/storage/ChunksDownloadDecorator.js +139 -0
  439. package/dist/mjs/providers/storage/IStorageProvider.d.ts +15 -0
  440. package/dist/mjs/providers/storage/IStorageProvider.js +2 -0
  441. package/dist/mjs/providers/storage/S3StorageProvider.d.ts +26 -0
  442. package/dist/mjs/providers/storage/S3StorageProvider.js +203 -0
  443. package/dist/mjs/providers/storage/StorageAdapter.d.ts +62 -0
  444. package/dist/mjs/providers/storage/StorageAdapter.js +270 -0
  445. package/dist/mjs/providers/storage/StorageContentWriter.d.ts +46 -0
  446. package/dist/mjs/providers/storage/StorageContentWriter.js +161 -0
  447. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +26 -0
  448. package/dist/mjs/providers/storage/StorageKeyValueAdapter.js +133 -0
  449. package/dist/mjs/providers/storage/StorageMetadataReader.d.ts +20 -0
  450. package/dist/mjs/providers/storage/StorageMetadataReader.js +50 -0
  451. package/dist/mjs/providers/storage/StorjAdapter.d.ts +20 -0
  452. package/dist/mjs/providers/storage/StorjAdapter.js +54 -0
  453. package/dist/mjs/providers/storage/StorjCredentialsManager.d.ts +24 -0
  454. package/dist/mjs/providers/storage/StorjCredentialsManager.js +84 -0
  455. package/dist/mjs/providers/storage/StorjStorageProvider.d.ts +29 -0
  456. package/dist/mjs/providers/storage/StorjStorageProvider.js +140 -0
  457. package/dist/mjs/providers/storage/fs-storage-provider.d.ts +19 -0
  458. package/dist/mjs/providers/storage/fs-storage-provider.js +132 -0
  459. package/dist/mjs/providers/storage/getStorageProvider.d.ts +4 -0
  460. package/dist/mjs/providers/storage/getStorageProvider.js +18 -0
  461. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +4 -0
  462. package/dist/mjs/providers/storage/parseStorageCredentials.js +17 -0
  463. package/dist/mjs/providers/storage/types.d.ts +29 -0
  464. package/dist/mjs/providers/storage/types.js +2 -0
  465. package/dist/mjs/staticModels/Deposits.d.ts +85 -0
  466. package/dist/mjs/staticModels/Deposits.js +263 -0
  467. package/dist/mjs/staticModels/Diamond.d.ts +6 -0
  468. package/dist/mjs/staticModels/Diamond.js +17 -0
  469. package/dist/mjs/staticModels/ModelPackager.d.ts +18 -0
  470. package/dist/mjs/staticModels/ModelPackager.js +45 -0
  471. package/dist/mjs/staticModels/ProviderRewards.d.ts +5 -0
  472. package/dist/mjs/staticModels/ProviderRewards.js +76 -0
  473. package/dist/mjs/staticModels/StaticModel.d.ts +6 -0
  474. package/dist/mjs/staticModels/StaticModel.js +38 -0
  475. package/dist/mjs/staticModels/Superpro.d.ts +18 -0
  476. package/dist/mjs/staticModels/Superpro.js +45 -0
  477. package/dist/mjs/staticModels/SuperproToken.d.ts +113 -0
  478. package/dist/mjs/staticModels/SuperproToken.js +328 -0
  479. package/dist/mjs/store.d.ts +17 -0
  480. package/dist/mjs/store.js +17 -0
  481. package/dist/mjs/tee/OrderReportService.d.ts +9 -0
  482. package/dist/mjs/tee/OrderReportService.js +97 -0
  483. package/dist/mjs/tee/QuoteParser.d.ts +82 -0
  484. package/dist/mjs/tee/QuoteParser.js +381 -0
  485. package/dist/mjs/tee/TeeCertificateService.d.ts +20 -0
  486. package/dist/mjs/tee/TeeCertificateService.js +139 -0
  487. package/dist/mjs/tee/TeeSignatureVerifier.d.ts +24 -0
  488. package/dist/mjs/tee/TeeSignatureVerifier.js +111 -0
  489. package/dist/mjs/tee/errors.d.ts +11 -0
  490. package/dist/mjs/tee/errors.js +12 -0
  491. package/dist/mjs/tee/helpers.d.ts +14 -0
  492. package/dist/mjs/tee/helpers.js +110 -0
  493. package/dist/mjs/tee/interface.d.ts +63 -0
  494. package/dist/mjs/tee/interface.js +2 -0
  495. package/dist/mjs/tee/statuses.d.ts +14 -0
  496. package/dist/mjs/tee/statuses.js +17 -0
  497. package/dist/mjs/tee/types.d.ts +126 -0
  498. package/dist/mjs/tee/types.js +28 -0
  499. package/dist/mjs/types/Compressor.d.ts +5 -0
  500. package/dist/mjs/types/Compressor.js +2 -0
  501. package/dist/mjs/types/Consensus.d.ts +52 -0
  502. package/dist/mjs/types/Consensus.js +8 -0
  503. package/dist/mjs/types/DepositInfo.d.ts +6 -0
  504. package/dist/mjs/types/DepositInfo.js +2 -0
  505. package/dist/mjs/types/DistributedSecretStorage.d.ts +68 -0
  506. package/dist/mjs/types/DistributedSecretStorage.js +2 -0
  507. package/dist/mjs/types/EtlModel.d.ts +2 -0
  508. package/dist/mjs/types/EtlModel.js +2 -0
  509. package/dist/mjs/types/Events.d.ts +34 -0
  510. package/dist/mjs/types/Events.js +2 -0
  511. package/dist/mjs/types/HardwareInfo.d.ts +10 -0
  512. package/dist/mjs/types/HardwareInfo.js +2 -0
  513. package/dist/mjs/types/Marks.d.ts +9 -0
  514. package/dist/mjs/types/Marks.js +7 -0
  515. package/dist/mjs/types/Offer.d.ts +76 -0
  516. package/dist/mjs/types/Offer.js +29 -0
  517. package/dist/mjs/types/OfferVersion.d.ts +30 -0
  518. package/dist/mjs/types/OfferVersion.js +6 -0
  519. package/dist/mjs/types/OptionInfo.d.ts +8 -0
  520. package/dist/mjs/types/OptionInfo.js +2 -0
  521. package/dist/mjs/types/Order.d.ts +144 -0
  522. package/dist/mjs/types/Order.js +91 -0
  523. package/dist/mjs/types/OrderUsage.d.ts +28 -0
  524. package/dist/mjs/types/OrderUsage.js +2 -0
  525. package/dist/mjs/types/Origins.d.ts +6 -0
  526. package/dist/mjs/types/Origins.js +2 -0
  527. package/dist/mjs/types/Provider.d.ts +7 -0
  528. package/dist/mjs/types/Provider.js +2 -0
  529. package/dist/mjs/types/ProviderRewards.d.ts +5 -0
  530. package/dist/mjs/types/ProviderRewards.js +2 -0
  531. package/dist/mjs/types/ResourceLoader.d.ts +28 -0
  532. package/dist/mjs/types/ResourceLoader.js +2 -0
  533. package/dist/mjs/types/SlotInfo.d.ts +7 -0
  534. package/dist/mjs/types/SlotInfo.js +2 -0
  535. package/dist/mjs/types/SlotUsage.d.ts +11 -0
  536. package/dist/mjs/types/SlotUsage.js +6 -0
  537. package/dist/mjs/types/Superpro.d.ts +9 -0
  538. package/dist/mjs/types/Superpro.js +11 -0
  539. package/dist/mjs/types/TeeOfferInfo.d.ts +38 -0
  540. package/dist/mjs/types/TeeOfferInfo.js +2 -0
  541. package/dist/mjs/types/TeeOfferOption.d.ts +13 -0
  542. package/dist/mjs/types/TeeOfferOption.js +2 -0
  543. package/dist/mjs/types/TeeOfferSlot.d.ts +8 -0
  544. package/dist/mjs/types/TeeOfferSlot.js +2 -0
  545. package/dist/mjs/types/ValueOfferSlot.d.ts +18 -0
  546. package/dist/mjs/types/ValueOfferSlot.js +2 -0
  547. package/dist/mjs/types/Web3.d.ts +30 -0
  548. package/dist/mjs/types/Web3.js +2 -0
  549. package/dist/mjs/types/blockchainConnector/StorageAccess.d.ts +8 -0
  550. package/dist/mjs/types/blockchainConnector/StorageAccess.js +2 -0
  551. package/dist/mjs/types/index.d.ts +25 -0
  552. package/dist/mjs/types/index.js +26 -0
  553. package/dist/mjs/types/storage/StorageAccess.d.ts +7 -0
  554. package/dist/mjs/types/storage/StorageAccess.js +2 -0
  555. package/dist/mjs/types/storage/StorageFileAccess.d.ts +5 -0
  556. package/dist/mjs/types/storage/StorageFileAccess.js +2 -0
  557. package/dist/mjs/types/storage/StorageObject.d.ts +8 -0
  558. package/dist/mjs/types/storage/StorageObject.js +2 -0
  559. package/dist/mjs/utils/CryptoKeysTransformer.d.ts +42 -0
  560. package/dist/mjs/utils/CryptoKeysTransformer.js +240 -0
  561. package/dist/mjs/utils/Monitoring.d.ts +11 -0
  562. package/dist/mjs/utils/Monitoring.js +44 -0
  563. package/dist/mjs/utils/NonceTracker.d.ts +20 -0
  564. package/dist/mjs/utils/NonceTracker.js +77 -0
  565. package/dist/mjs/utils/PubSub.d.ts +9 -0
  566. package/dist/mjs/utils/PubSub.js +32 -0
  567. package/dist/mjs/utils/TxManager.d.ts +28 -0
  568. package/dist/mjs/utils/TxManager.js +278 -0
  569. package/dist/mjs/utils/cache/index.d.ts +2 -0
  570. package/dist/mjs/utils/cache/index.js +3 -0
  571. package/dist/mjs/utils/cache/memory.d.ts +19 -0
  572. package/dist/mjs/utils/cache/memory.js +61 -0
  573. package/dist/mjs/utils/cache/memory.spec.d.ts +1 -0
  574. package/dist/mjs/utils/cache/memory.spec.js +89 -0
  575. package/dist/mjs/utils/cache/types.d.ts +17 -0
  576. package/dist/mjs/utils/cache/types.js +2 -0
  577. package/dist/mjs/utils/compressors/GzipCompressor.d.ts +8 -0
  578. package/dist/mjs/utils/compressors/GzipCompressor.js +15 -0
  579. package/dist/mjs/utils/compressors/UncompressedCompressor.d.ts +8 -0
  580. package/dist/mjs/utils/compressors/UncompressedCompressor.js +13 -0
  581. package/dist/mjs/utils/compressors/index.d.ts +2 -0
  582. package/dist/mjs/utils/compressors/index.js +3 -0
  583. package/dist/mjs/utils/helper.d.ts +87 -0
  584. package/dist/mjs/utils/helper.js +526 -0
  585. package/dist/mjs/utils/helpers/calculateObjectHash.d.ts +8 -0
  586. package/dist/mjs/utils/helpers/calculateObjectHash.js +18 -0
  587. package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
  588. package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
  589. package/dist/mjs/utils/helpers/getStreamChunks.d.ts +9 -0
  590. package/dist/mjs/utils/helpers/getStreamChunks.js +31 -0
  591. package/dist/mjs/utils/helpers/index.d.ts +5 -0
  592. package/dist/mjs/utils/helpers/index.js +6 -0
  593. package/dist/mjs/utils/helpers/promise.d.ts +2 -0
  594. package/dist/mjs/utils/helpers/promise.js +5 -0
  595. package/dist/mjs/utils/helpers/streamToBuffer.d.ts +4 -0
  596. package/dist/mjs/utils/helpers/streamToBuffer.js +9 -0
  597. package/dist/mjs/utils/helpers/tryWithInterval.d.ts +13 -0
  598. package/dist/mjs/utils/helpers/tryWithInterval.js +35 -0
  599. package/dist/mjs/utils/rent-calculator/index.d.ts +2 -0
  600. package/dist/mjs/utils/rent-calculator/index.js +3 -0
  601. package/dist/mjs/utils/rent-calculator/rent-calculator.d.ts +14 -0
  602. package/dist/mjs/utils/rent-calculator/rent-calculator.js +110 -0
  603. package/dist/mjs/utils/rent-calculator/types.d.ts +14 -0
  604. package/dist/mjs/utils/rent-calculator/types.js +2 -0
  605. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.d.ts +10 -0
  606. package/dist/mjs/utils/resourceLoaders/BaseResourceLoader.js +10 -0
  607. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.d.ts +18 -0
  608. package/dist/mjs/utils/resourceLoaders/StorageProviderLoader.js +53 -0
  609. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.d.ts +9 -0
  610. package/dist/mjs/utils/resourceLoaders/UrlResourceLoader.js +44 -0
  611. package/dist/mjs/utils/resourceLoaders/getResourceLoader.d.ts +5 -0
  612. package/dist/mjs/utils/resourceLoaders/getResourceLoader.js +11 -0
  613. package/dist/mjs/utils/resourceLoaders/index.d.ts +1 -0
  614. package/dist/mjs/utils/resourceLoaders/index.js +2 -0
  615. package/dist/mjs/utils/schema-utils/index.d.ts +2 -0
  616. package/dist/mjs/utils/schema-utils/index.js +3 -0
  617. package/dist/mjs/utils/schema-utils/serializer.d.ts +3 -0
  618. package/dist/mjs/utils/schema-utils/serializer.js +26 -0
  619. package/dist/mjs/utils/schema-utils/validator.d.ts +7 -0
  620. package/dist/mjs/utils/schema-utils/validator.js +45 -0
  621. package/dist/mjs/utils/tcb.d.ts +2 -0
  622. package/dist/mjs/utils/tcb.js +9 -0
  623. package/dist/mjs/utils/tokens/get-tokens-info.d.ts +8 -0
  624. package/dist/mjs/utils/tokens/get-tokens-info.js +25 -0
  625. package/dist/mjs/utils/tokens/index.d.ts +1 -0
  626. package/dist/mjs/utils/tokens/index.js +2 -0
  627. package/dist/mjs/utils/types.d.ts +13 -0
  628. package/dist/mjs/utils/types.js +2 -0
  629. package/package.json +103 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const lodash_1 = __importDefault(require("lodash"));
30
+ const BaseConnector_js_1 = require("./BaseConnector.js");
31
+ const ethers_1 = require("ethers");
32
+ const SuperProtocolToken__factory_js_1 = require("../contracts/SuperProtocolToken__factory.js");
33
+ const index_js_1 = require("../contracts/typechain-types/index.js");
34
+ // TODO: remove this dependencies
35
+ const store_js_1 = __importDefault(require("../store.js"));
36
+ const Superpro_js_1 = __importDefault(require("../staticModels/Superpro.js"));
37
+ const SuperproToken_js_1 = __importDefault(require("../staticModels/SuperproToken.js"));
38
+ const uuid = __importStar(require("uuid"));
39
+ class BlockchainEventsListener extends BaseConnector_js_1.BaseConnector {
40
+ // Singleton
41
+ static instance;
42
+ isSubscribingBlocked = false;
43
+ reconnectAttemptCount = 0;
44
+ constructor() {
45
+ super();
46
+ }
47
+ static getInstance() {
48
+ if (!BlockchainEventsListener.instance) {
49
+ BlockchainEventsListener.instance = new BlockchainEventsListener();
50
+ }
51
+ return BlockchainEventsListener.instance;
52
+ }
53
+ subscriptions = new Map();
54
+ subscribeEvent(params) {
55
+ if (!this.initialized) {
56
+ throw Error(`${BlockchainEventsListener.name} instance should be initialized before`);
57
+ }
58
+ if (this.isSubscribingBlocked) {
59
+ throw Error(`${BlockchainEventsListener.name} instance should be initialized before`);
60
+ }
61
+ const contract = params.contract ?? this.getContract();
62
+ const contractTarget = contract.target.toString();
63
+ const key = uuid.v4();
64
+ this.logger.trace({
65
+ event: params.event,
66
+ key,
67
+ }, `created subscription`);
68
+ const unsubscribeAndRemove = async () => {
69
+ this.logger.trace(`Unsubscribing ${key} for event "${params.event}"...`);
70
+ const contractSubsciptions = this.subscriptions.get(contractTarget);
71
+ await contractSubsciptions.contract.removeListener(params.event, params.onData);
72
+ contractSubsciptions.subscriptions.delete(key);
73
+ };
74
+ contract
75
+ .addListener(params.event, params.onData)
76
+ .then(() => {
77
+ this.logger.trace({ event: params.event, key }, `subscription is ready`);
78
+ if (!this.subscriptions.has(contractTarget)) {
79
+ this.subscriptions.set(contractTarget, {
80
+ contract: contract,
81
+ subscriptions: new Map(),
82
+ });
83
+ }
84
+ this.subscriptions.get(contractTarget).subscriptions.set(key, {
85
+ onData: params.onData,
86
+ onError: params.onError,
87
+ unsubscribeAndRemove,
88
+ event: params.event,
89
+ });
90
+ })
91
+ .catch((err) => {
92
+ void Promise.resolve(params.onError(err)).catch((onErrorError) => {
93
+ this.logger.error({ err: onErrorError }, 'Subscription error handler failed');
94
+ });
95
+ });
96
+ return unsubscribeAndRemove;
97
+ }
98
+ async resubscribe() {
99
+ if (!this.subscriptions.size) {
100
+ return true;
101
+ }
102
+ if (!this.initialized) {
103
+ throw Error(`${BlockchainEventsListener.name} instance should be initialized before`);
104
+ }
105
+ const events = [];
106
+ for (const [, contractSubscriptions] of this.subscriptions) {
107
+ const contract = contractSubscriptions.contract.connect(store_js_1.default.wssProvider);
108
+ contractSubscriptions.contract = contract;
109
+ for (const [, item] of contractSubscriptions.subscriptions) {
110
+ try {
111
+ await item.unsubscribeAndRemove();
112
+ }
113
+ catch (err) {
114
+ this.logger.error({ err }, 'Failed to unsubscribe');
115
+ }
116
+ events.push({ ...lodash_1.default.omit(item, ['unsubscribeAndRemove']), contract });
117
+ }
118
+ }
119
+ if (events.length) {
120
+ try {
121
+ await Promise.all(events.map((event) => this.subscribeEvent(event)));
122
+ this.logger.trace(`${events.length} subscriptions were resubscribed`);
123
+ }
124
+ catch (err) {
125
+ this.logger.error({ err }, 'Something went wrong on resubscribing');
126
+ return false;
127
+ }
128
+ }
129
+ return true;
130
+ }
131
+ async unsubscribeAll() {
132
+ if (this.isSubscribingBlocked) {
133
+ return false;
134
+ }
135
+ this.isSubscribingBlocked = true;
136
+ const promises = [];
137
+ try {
138
+ for (const [, contractSubscriptions] of this.subscriptions) {
139
+ for (const [id, item] of contractSubscriptions.subscriptions) {
140
+ promises.push({
141
+ unsubscribe: item.unsubscribeAndRemove(),
142
+ id,
143
+ event: item.event,
144
+ });
145
+ }
146
+ }
147
+ const result = await Promise.allSettled(promises);
148
+ result.forEach((item, index) => {
149
+ const data = promises[index];
150
+ if (item.status === 'rejected') {
151
+ this.logger.warn(`Error on ${data.id} unsubscribe "${data.event}" event`);
152
+ }
153
+ else {
154
+ this.logger.trace(`Unsubscribe ${data.id} for event "${data.event}" has been completed`);
155
+ }
156
+ });
157
+ return true;
158
+ }
159
+ catch (err) {
160
+ this.logger.error({ err }, 'Something went wrong on unsubscribing');
161
+ return false;
162
+ }
163
+ finally {
164
+ for (const [, contractSubscriptions] of this.subscriptions) {
165
+ contractSubscriptions.subscriptions.clear();
166
+ }
167
+ this.subscriptions.clear();
168
+ this.isSubscribingBlocked = false;
169
+ }
170
+ }
171
+ /**
172
+ * Function for connecting to blockchain using web socket
173
+ * Needs to run this function before using events
174
+ */
175
+ async initialize(config) {
176
+ if (this.initialized) {
177
+ return;
178
+ }
179
+ this.logger.trace(config, 'Initializing');
180
+ const reconnectOptions = Object.assign({
181
+ autoReconnect: true,
182
+ delay: 20000,
183
+ maxAttempts: 5000,
184
+ }, config.reconnect);
185
+ this.logger.info(`Initializing events listener with reconnect options: ${JSON.stringify(reconnectOptions)}`);
186
+ const provider = new ethers_1.WebSocketProvider(config.blockchainUrl);
187
+ try {
188
+ await new Promise((resolve, reject) => {
189
+ const timeoutId = setTimeout(() => {
190
+ reject(new Error("Timeout waiting for Events listener's readiness"));
191
+ }, reconnectOptions.delay ?? 5000);
192
+ const ws = provider.websocket;
193
+ const onOpen = () => {
194
+ clearTimeout(timeoutId);
195
+ this.logger.info('Events listener ready');
196
+ ws.removeEventListener('open', onOpen);
197
+ resolve();
198
+ };
199
+ ws.addEventListener('open', onOpen);
200
+ ws.addEventListener('error', (event) => {
201
+ this.logger.error({
202
+ err: event?.message ?? event,
203
+ msg: 'Events listener error',
204
+ });
205
+ });
206
+ ws.addEventListener('close', async (event) => {
207
+ if (event.code === 1000) {
208
+ this.logger.debug('The connection successfully completed');
209
+ return;
210
+ }
211
+ this.logger.error({
212
+ err: {
213
+ reason: event.reason,
214
+ code: event.code,
215
+ wasClean: event.wasClean,
216
+ },
217
+ msg: 'Events listener disconnect',
218
+ });
219
+ if (!this.isInReconnectProcess()) {
220
+ await this.tryReconnect(config, reconnectOptions);
221
+ }
222
+ });
223
+ });
224
+ }
225
+ catch (err) {
226
+ await provider.destroy();
227
+ throw err;
228
+ }
229
+ store_js_1.default.wssProvider = provider;
230
+ this.contract = index_js_1.App__factory.connect(config.contractAddress, provider);
231
+ Superpro_js_1.default.address = config.contractAddress;
232
+ let tokenAddress = this.tokenAddress;
233
+ if (!tokenAddress) {
234
+ tokenAddress = await Superpro_js_1.default.getPrimaryTokenAddress(this.contract);
235
+ SuperproToken_js_1.default.addressWss = tokenAddress;
236
+ this.tokenAddress = tokenAddress;
237
+ }
238
+ this.tokenContract = SuperProtocolToken__factory_js_1.SuperProtocolToken__factory.connect(tokenAddress, provider);
239
+ this.initialized = true;
240
+ this.reconnectAttemptCount = 0;
241
+ this.logger.trace('Initialized');
242
+ }
243
+ isInReconnectProcess() {
244
+ return this.reconnectAttemptCount > 0;
245
+ }
246
+ async tryReconnect(config, reconnectOptions) {
247
+ if (!reconnectOptions.autoReconnect) {
248
+ return;
249
+ }
250
+ while (this.reconnectAttemptCount < reconnectOptions.maxAttempts) {
251
+ this.reconnectAttemptCount++;
252
+ this.logger.info(`Events listener reconnecting... attempt ${this.reconnectAttemptCount}/${reconnectOptions.maxAttempts}`);
253
+ await new Promise((res) => setTimeout(res, reconnectOptions.delay));
254
+ try {
255
+ this.initialized = false;
256
+ await this.initialize(config);
257
+ const result = await this.resubscribe();
258
+ if (!result) {
259
+ this.logger.error("Subscriptions have not been activated well on the Events listener's reconnection");
260
+ }
261
+ return;
262
+ }
263
+ catch (err) {
264
+ this.logger.error({ err, msg: 'Events listener reconnect failed' });
265
+ }
266
+ }
267
+ this.logger.error(`Max reconnect attempts reached (${reconnectOptions.maxAttempts})`);
268
+ }
269
+ async shutdown() {
270
+ const provider = store_js_1.default.wssProvider;
271
+ if (provider) {
272
+ const result = await this.unsubscribeAll();
273
+ if (!result) {
274
+ this.logger.warn('UnsubscribeAll could not be done well');
275
+ }
276
+ await provider.destroy();
277
+ }
278
+ store_js_1.default.wssProvider = undefined;
279
+ super.shutdown();
280
+ }
281
+ }
282
+ exports.default = BlockchainEventsListener;
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tjaGFpbkV2ZW50c0xpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nvbm5lY3RvcnMvQmxvY2tjaGFpbkV2ZW50c0xpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBdUI7QUFDdkIseURBQTZFO0FBQzdFLG1DQUFtRTtBQUNuRSxnR0FBMEY7QUFDMUYsb0VBQXFFO0FBQ3JFLGlDQUFpQztBQUNqQywyREFBZ0M7QUFDaEMsOEVBQW1EO0FBQ25ELHdGQUE2RDtBQUM3RCwyQ0FBNkI7QUFjN0IsTUFBcUIsd0JBQXlCLFNBQVEsZ0NBQWE7SUFDakUsWUFBWTtJQUNKLE1BQU0sQ0FBQyxRQUFRLENBQTJCO0lBQzFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFFbEM7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNoQixJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUNyRSxDQUFDO1FBRUQsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7SUFDM0MsQ0FBQztJQUVnQixhQUFhLEdBQUcsSUFBSSxHQUFHLEVBR3JDLENBQUM7SUFFSixjQUFjLENBQUMsTUFBeUI7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLHdCQUF3QixDQUFDLElBQUksd0NBQXdDLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssQ0FBQyxHQUFHLHdCQUF3QixDQUFDLElBQUksd0NBQXdDLENBQUMs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
@@ -0,0 +1,2 @@
1
+ export { default as BlockchainConnector } from './BlockchainConnector.js';
2
+ export { default as BlockchainEventsListener } from './BlockchainEventsListener.js';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BlockchainEventsListener = exports.BlockchainConnector = void 0;
7
+ var BlockchainConnector_js_1 = require("./BlockchainConnector.js");
8
+ Object.defineProperty(exports, "BlockchainConnector", { enumerable: true, get: function () { return __importDefault(BlockchainConnector_js_1).default; } });
9
+ var BlockchainEventsListener_js_1 = require("./BlockchainEventsListener.js");
10
+ Object.defineProperty(exports, "BlockchainEventsListener", { enumerable: true, get: function () { return __importDefault(BlockchainEventsListener_js_1).default; } });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29ubmVjdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtRUFBMEU7QUFBakUsOElBQUEsT0FBTyxPQUF1QjtBQUN2Qyw2RUFBb0Y7QUFBM0Usd0pBQUEsT0FBTyxPQUE0QiJ9
@@ -0,0 +1,48 @@
1
+ import { Hash } from '@super-protocol/dto-js';
2
+ export declare const defaultBlockchainUrl = "http://127.0.0.1:8545";
3
+ export declare const defaultGasLimit: bigint;
4
+ export declare const defaultGasPrice: bigint;
5
+ export declare const defaultGasLimitMultiplier = 1.2;
6
+ export declare const defaultMaxFeePerGasMultiplier = 2;
7
+ export declare const defaultMaxPriorityFeePerGasMultiplier = 1.5;
8
+ export declare const txConcurrency = 10;
9
+ export declare const txIntervalMs = 34;
10
+ export declare const ONE_DAY: number;
11
+ export declare const ONE_HOUR: number;
12
+ export declare const FIVE_MINUTES: number;
13
+ export declare const BLOCK_SIZE_TO_FETCH_TRANSACTION = 500;
14
+ export declare const POLYGON_MATIC_EVENT_PATH = "0x0000000000000000000000000000000000001010";
15
+ export declare const BLOCKCHAIN_CALL_RETRY_ATTEMPTS = 20;
16
+ export declare const BLOCKCHAIN_CALL_RETRY_INTERVAL = 3000;
17
+ export declare const TRANSACTION_RETRY_ATTEMPTS = 3;
18
+ export declare const BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = 10000;
19
+ export declare const MAX_RPC_BATCH_SIZE = 1000;
20
+ export declare const POLYGON_MAIN_CHAIN_ID = 137;
21
+ export declare const POLYGON_AMOY_CHAIN_ID = 80002;
22
+ export declare const POLYGON_AMOY_GASSTATION_URL = "https://gasstation.polygon.technology/amoy";
23
+ export declare const POLYGON_MAIN_GASSTATION_URL = "https://gasstation.polygon.technology/v2";
24
+ export declare const OCSP_URL = "https://ocsp.certs.superprotocol.com/v1/ocsp";
25
+ export declare const AMOY_TX_COST_LIMIT: bigint;
26
+ export declare const AMOY_TX_GAS_LIMIT: bigint;
27
+ export declare const DEFAULT_OFFER_VERSION = 0;
28
+ export declare const HTTPS_PORT = 443;
29
+ export declare const ZERO_HASH: Hash;
30
+ export declare const ZERO32_HEX = "0x0000000000000000000000000000000000000000000000000000000000000000";
31
+ export declare const TEE_LOADER_TRUSTED_MRSIGNER = "4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b";
32
+ export declare const TEE_PKI_TRUSTED_MRSIGNER = "34ea7ca88034fe80f209e97cd0f8442f7ba621eb2a5f60393ab05871ae6b979d";
33
+ export declare const OPBNB_MAIN_CHAIN_ID = 204;
34
+ export declare const OPBNB_TEST_CHAIN_ID = 5611;
35
+ export declare const OPBNB_TX_GAS_LIMIT: bigint;
36
+ export declare const OPBNB_MAX_PRIORITY_FEE_PER_GAS: bigint;
37
+ export declare const TEE_LOADER_TRUSTED_CERTIFICATE = "-----BEGIN CERTIFICATE-----\nMIIEJTCCAo2gAwIBAgIUGvcNLMGAOGK/UWfDl1PDc8v6qTYwDQYJKoZIhvcNAQEL\nBQAwMDEWMBQGA1UEAwwNU3VwZXJQcm90b2NvbDEWMBQGA1UECgwNU3VwZXJQcm90\nb2NvbDAeFw0yNDA5MDQwOTA4MDZaFw0zNDA5MDIwOTA4MDZaMDAxFjAUBgNVBAMM\nDVN1cGVyUHJvdG9jb2wxFjAUBgNVBAoMDVN1cGVyUHJvdG9jb2wwggGgMA0GCSqG\nSIb3DQEBAQUAA4IBjQAwggGIAoIBgQDL326V3vj04Plbjyuhngxu4qTUGju0Yh8Q\n6i3X7GVZAoMMFpFAOD4s4aE+lGYZsX+zi32tQa/EGePKX4+2kvImTH54FPq5tMRv\n/hJt2CKo+O1ddXR5RVigFkdKZP1gWSVwnVhYPBjE6bSySH/CbkgGlKcYy4unaZzw\nXKr6/FbMQ94XNssfpBZ0b/1OzmYkcndRpYbV9biVIx/d5Vz0FHClru2lelREuPZO\nxfzCAJtBVDX5BgugJ1Lodlznu+wgZHpPEd6qZolakNpcFXx3PD1p6RMZp2T38h62\nMjVtpf0EnyzsinH19id/2rCZZ7ME7VyY6jCb0x3pMw8SRXG/Np3L6szItZsasmho\nnodbkQ9igVBbZwEU53VDNLhqMve39JdCkHdOcFLJ4jP7w6jAf5oB3v/28IjlGjyP\nRGycNT9PeY2RvmkDg7BjqrGiudHf1GYdPPcZpFl6Yr76l89HfcBUyUl2ynKb6pBU\njhO1qrNwj7I4d0ZMPa8xO6JFDv7WLz0CAQOjOTA3MAkGA1UdEwQCMAAwCwYDVR0P\nBAQDAgeAMB0GA1UdDgQWBBQiTjvWXxnyck2wUpWfEC7UTab/hjANBgkqhkiG9w0B\nAQsFAAOCAYEAt3/TnuC2ieDLBFx/QEme9OsiqX4wdfU1zBNnL6ECG5J9WXqS08p7\nqkBXV9mbPGwHy1nGhLy3BKgGHZj6+Wv19CKRwGNFkcweqJexzFxbYHyikBTL5n9o\nvL+A3M0PU2iZAyayKpY62TXTxwIDHDOTETTCtubqwnNHkoFYKRz7P075mYg1SJFe\n+cfssv0/IBvdZ8p34JB5hibAkKkZn9SSa6CAFmFG5L5ps9kXumJEti+HPU8fbBdA\nogoTFEQGzYIFNgu7IZ5/PQgNeSPxQFJqRMJYWkBSD/+uOCh3G5cJ2Oe+rwtR5BL3\nuqR6T7QVrRzzDWy0mzo2GYACilBYoGMiXXqxuZB5XHsNobAvZLVbn5wpPyOChvT+\nR5GssD2vxtyGKL++xi9z1x+Yu48RAd9wSNgF8ZOzoGnvDZAyOQlCV5CgwJvHKvI/\n2ONVNHPSXgVgj5ZBi+MXoDVKumEfABtovfwAgU2sXF3m7c7++1Zav5h+tNjmjJ3/\n1kFRhndoOxr4\n-----END CERTIFICATE-----";
38
+ export declare const OID_CUSTOM_EXTENSION_ORDER_REPORT = "1.3.6.1.3.8888.2";
39
+ export declare const OID_CUSTOM_EXTENSION_ORDER_REPORT_HARDWARE_CONTEXT = "1.3.6.1.3.8888.2.1";
40
+ export declare const OID_CUSTOM_EXTENSION_ORDER_REPORT_SIGNATURE_KEY_HASH = "1.3.6.1.3.8888.2.2";
41
+ export declare const OID_CUSTOM_EXTENSION_ORDER_REPORT_WORKLOAD_INFO_HASH = "1.3.6.1.3.8888.2.3";
42
+ export declare const OID_CUSTOM_EXTENSION_USER_DATA = "1.3.6.1.3.8888.2.4";
43
+ export declare const OID_AUTHORITY_INFORMATION_ACCESS_EXTENSION = "1.3.6.1.5.5.7.1.1";
44
+ export declare const OID_CRL_DISTRIBUTION_POINTS = "2.5.29.31";
45
+ export declare const OID_OCSP_ACCESS_METHOD = "1.3.6.1.5.5.7.48.1";
46
+ export declare const OID_OCSP_ISSUER_ACCESS_METHOD = "1.3.6.1.5.5.7.48.2";
47
+ export declare const OID_OCSP_NONCE = "1.3.6.1.5.5.7.48.1.2";
48
+ export declare const SUPERPROTOCOL_CA = "-----BEGIN CERTIFICATE-----\n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\nSUNBVEUtLS0tLQpNSUlFOGpDQ0JKaWdBd0lCQWdJVWZ3Nm44NU9Ob2FkQjh1TmVN\nd0ZtWS9iZWlRVXdDZ1lJS29aSXpqMEVBd0l3CmNERWlNQ0FHQTFVRUF3d1pTVzUw\nWld3Z1UwZFlJRkJEU3lCUWJHRjBabTl5YlNCRFFURWFNQmdHQTFVRUNnd1IKU1c1\nMFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhK\naE1Rc3dDUVlEVlFRSQpEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpNd016\nQTVNVGN3TVRFMFdoY05NekF3TXpBNU1UY3dNVEUwCldqQndNU0l3SUFZRFZRUURE\nQmxKYm5SbGJDQlRSMWdnVUVOTElFTmxjblJwWm1sallYUmxNUm93R0FZRFZRUUsK\nREJGSmJuUmxiQ0JEYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0Vn\nUTJ4aGNtRXhDekFKQmdOVgpCQWdNQWtOQk1Rc3dDUVlEVlFRR0V3SlZVekJaTUJN\nR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCRk83CmlveHJwNFBoOXNwTXE2\nbDRKc05YSVVCeE9jR21rREFXNDJrZ3NBOWwvS3ZFNkRJRmpyLzF3UTdMcjRQdUln\nUEsKV2F3aHBrUnJYaDZadk5uWFpCZWpnZ01PTUlJRENqQWZCZ05WSFNNRUdEQVdn\nQlNWYjEzTnZSdmg2VUJKeWRUMApNODRCVnd2ZVZEQnJCZ05WSFI4RVpEQmlNR0Nn\nWHFCY2hscG9kSFJ3Y3pvdkwyRndhUzUwY25WemRHVmtjMlZ5CmRtbGpaWE11YVc1\nMFpXd3VZMjl0TDNObmVDOWpaWEowYVdacFkyRjBhVzl1TDNZMEwzQmphMk55YkQ5\nallUMXcKYkdGMFptOXliU1psYm1OdlpHbHVaejFrWlhJd0hRWURWUjBPQkJZRUZI\nZ2FucEY0VXV2SmpCZ2VEQmgvM0xvbAoxU3dwTUE0R0ExVWREd0VCL3dRRUF3SUd3\nREFNQmdOVkhSTUJBZjhFQWpBQU1JSUNPd1lKS29aSWh2aE5BUTBCCkJJSUNMREND\nQWlnd0hnWUtLb1pJaHZoTkFRMEJBUVFRUDVwUHZoK0VwcVMxSkpRdGVXN0JrREND\nQVdVR0NpcUcKU0liNFRRRU5BUUl3Z2dGVk1CQUdDeXFHU0liNFRRRU5BUUlCQWdF\nSE1CQUdDeXFHU0liNFRRRU5BUUlDQWdFSgpNQkFHQ3lxR1NJYjRUUUVOQVFJREFn\nRURNQkFHQ3lxR1NJYjRUUUVOQVFJRUFnRURNQkVHQ3lxR1NJYjRUUUVOCkFRSUZB\nZ0lBL3pBUkJnc3Foa2lHK0UwQkRRRUNCZ0lDQVA4d0VBWUxLb1pJaHZoTkFRMEJB\nZ2NDQVFBd0VBWUwKS29aSWh2aE5BUTBCQWdnQ0FRQXdFQVlMS29aSWh2aE5BUTBC\nQWdrQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWdvQwpBUUF3RUFZTEtvWklodmhOQVEw\nQkFnc0NBUUF3RUFZTEtvWklodmhOQVEwQkFnd0NBUUF3RUFZTEtvWklodmhOCkFR\nMEJBZzBDQVFBd0VBWUxLb1pJaHZoTkFRMEJBZzRDQVFBd0VBWUxLb1pJaHZoTkFR\nMEJBZzhDQVFBd0VBWUwKS29aSWh2aE5BUTBCQWhBQ0FRQXdFQVlMS29aSWh2aE5B\nUTBCQWhFQ0FRMHdId1lMS29aSWh2aE5BUTBCQWhJRQpFQWNKQXdQLy93QUFBQUFB\nQUFBQUFBQXdFQVlLS29aSWh2aE5BUTBCQXdRQ0FBQXdGQVlLS29aSWh2aE5BUTBC\nCkJBUUdNR0JxQUFBQU1BOEdDaXFHU0liNFRRRU5BUVVLQVFFd0hnWUtLb1pJaHZo\nTkFRMEJCZ1FRVnZnMnVWdHYKMU1rM0xTYU9mSjRWSkRCRUJnb3Foa2lHK0UwQkRR\nRUhNRFl3RUFZTEtvWklodmhOQVEwQkJ3RUJBZjh3RUFZTApLb1pJaHZoTkFRMEJC\nd0lCQWY4d0VBWUxLb1pJaHZoTkFRMEJCd01CQWY4d0NnWUlLb1pJemowRUF3SURT\nQUF3ClJRSWhBSWVacWV6bGxETEZjcEFYVmlrellqVVFvOEtGVllqY05SOU14TXFh\nMHRjaUFpQUgvcGYzZ3VKMEhpTVkKWUN4QTRFZGZWcGVBZ3p3WnEweEpuNlNRN2tV\nK3BBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJ\nRklDQVRFLS0tLS0KTUlJQ2xqQ0NBajJnQXdJQkFnSVZBSlZ2WGMyOUcrSHBRRW5K\nMVBRenpnRlhDOTVVTUFvR0NDcUdTTTQ5QkFNQwpNR2d4R2pBWUJnTlZCQU1NRVVs\ndWRHVnNJRk5IV0NCU2IyOTBJRU5CTVJvd0dBWURWUVFLREJGSmJuUmxiQ0JECmIz\nSndiM0poZEdsdmJqRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJn\nTlZCQWdNQWtOQk1Rc3cKQ1FZRFZRUUdFd0pWVXpBZUZ3MHhPREExTWpFeE1EVXdN\nVEJhRncwek16QTFNakV4TURVd01UQmFNSEF4SWpBZwpCZ05WQkFNTUdVbHVkR1Zz\nSUZOSFdDQlFRMHNnVUd4aGRHWnZjbTBnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1Zz\nCklFTnZjbkJ2Y21GMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRF\nTE1Ba0dBMVVFQ0F3Q1EwRXgKQ3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpq\nMENBUVlJS29aSXpqMERBUWNEUWdBRU5TQi83dDIxbFhTTwoyQ3V6cHh3NzRlSkI3\nMkV5REdnVzVyWEN0eDJ0VlRMcTZoS2s2eitVaVJaQ25xUjdwc092Z3FGZVN4bG1U\nbEpsCmVUbWkyV1l6M3FPQnV6Q0J1REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAw\naWZPRHRKVlN2MUFiT1NjR3JEQlMKQmdOVkhSOEVTekJKTUVlZ1JhQkRoa0ZvZEhS\nd2N6b3ZMMk5sY25ScFptbGpZWFJsY3k1MGNuVnpkR1ZrYzJWeQpkbWxqWlhNdWFX\nNTBaV3d1WTI5dEwwbHVkR1ZzVTBkWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZn\nUVVsVzlkCnpiMGI0ZWxBU2NuVTlEUE9BVmNMM2xRd0RnWURWUjBQQVFIL0JBUURB\nZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUIKQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lE\nUndBd1JBSWdYc1ZraTB3K2k2VllHVzNVRi8yMnVhWGUwWUpEajFVZQpuQStUakQx\nYWk1Y0NJQ1liMVNBbUQ1eGtmVFZwdm80VW95aVNZeHJEV0xtVVI0Q0k5Tkt5ZlBO\nKwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNB\nVEUtLS0tLQpNSUlDanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlR\nR3prbkJxd3dDZ1lJS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3\nZ1UwZFlJRkp2YjNRZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNt\nRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNB\nd0NRMEV4Q3pBSgpCZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hE\nVFE1TVRJek1USXpOVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZ\nSUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5\ndU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBF\neEN6QUpCZ05WQkFZVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFR\nY0RRZ0FFQzZuRXdNRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZK\nZlZua1k0dTNJamtEWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IK\ndXpDQnVEQWZCZ05WSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NH\nckRCU0JnTlZIUjhFU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1s\nallYUmxjeTUwY25WemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRH\nVnNVMGRZVW05dmRFTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3\nU1YKVXI5UUd6a25CcXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIv\nd1FJTUFZQkFmOENBUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtS\nK1M5Q2lTRGNOb293THVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhv\nTXMrWG81by9zWDZPOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBD\nRVJUSUZJQ0FURS0tLS0tCgAwDQYJKoZIhvcNAQELBQADggEBAGHbT1NQEW0t5uYp\nmskVka8DDrgVEM8She2htuRXNeeTpaImsFWQhQeSqlK/yc3NH2/+RfGGu4UT/zgS\n4T/oLc8HosQFZxkvcESz1YKtSqHYhfuavlDuR6K0/RS6wy1dADvA6X3b57dJ81EP\nZ/dda6qpPxXBiwhpfcFJtpiP0tIYhS6LJgFnSAdEE9G1HwYUrCYsjQ2LCgBQDqYB\n9AWDmUBh8SSdRQzYJfmHG8LTXox/8mD9Hq8HPhzEzSFwu/Yy+KZX9uxEw0vPvmVI\nbalDQD+0bddS+Jvj4ELLmKRk/yX51Lqx6YYr0rSX7t9RaI9F9muzzQ4mWzWA6ief\nYwF1StA=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n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\nfR9Jbk3FLW/LY+BFJaQKnnGIIAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRob\nHB0eHwUAYg4AAC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFOHpDQ0JK\naWdBd0lCQWdJVVFaT1NWSy8vQlZkVkJXeUIwaHM4dURoTkc2Z3dDZ1lJS29aSXpq\nMEVBd0l3CmNERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJEU3lCUWJHRjBa\nbTl5YlNCRFFURWFNQmdHQTFVRUNnd1IKU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4\nRkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEVlFRSQpEQUpEUVRF\nTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpVd056QTVNVFV3T1RBd1doY05Nekl3TnpB\nNU1UVXdPVEF3CldqQndNU0l3SUFZRFZRUUREQmxKYm5SbGJDQlRSMWdnVUVOTElF\nTmxjblJwWm1sallYUmxNUm93R0FZRFZRUUsKREJGSmJuUmxiQ0JEYjNKd2IzSmhk\nR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFKQmdOVgpCQWdN\nQWtOQk1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5\nQXdFSEEwSUFCRFFBCkZNa2lVR1Z4S2luMnpIODB2MkMvbXpGQ0N1MnV0VHBOdE1V\nTzhjMUJ6U1F1ZlZ0YjYyT2JFMUhOUVNvZmE4Q3IKdXVLeWJ0VHBRT3BaakZXQkFh\nS2pnZ01PTUlJRENqQWZCZ05WSFNNRUdEQVdnQlNWYjEzTnZSdmg2VUJKeWRUMApN\nODRCVnd2ZVZEQnJCZ05WSFI4RVpEQmlNR0NnWHFCY2hscG9kSFJ3Y3pvdkwyRndh\nUzUwY25WemRHVmtjMlZ5CmRtbGpaWE11YVc1MFpXd3VZMjl0TDNObmVDOWpaWEow\nYVdacFkyRjBhVzl1TDNZMEwzQmphMk55YkQ5allUMXcKYkdGMFptOXliU1psYm1O\ndlpHbHVaejFrWlhJd0hRWURWUjBPQkJZRUZPUHdhb25yYnpPZks0My8vZ3Y5M0Fm\nQgpiMGNZTUE0R0ExVWREd0VCL3dRRUF3SUd3REFNQmdOVkhSTUJBZjhFQWpBQU1J\nSUNPd1lKS29aSWh2aE5BUTBCCkJJSUNMRENDQWlnd0hnWUtLb1pJaHZoTkFRMEJB\nUVFRM3cvN014Q2Vwbkt2V2Q2WXhZb0VJVENDQVdVR0NpcUcKU0liNFRRRU5BUUl3\nZ2dGVk1CQUdDeXFHU0liNFRRRU5BUUlCQWdFTE1CQUdDeXFHU0liNFRRRU5BUUlD\nQWdFTApNQkFHQ3lxR1NJYjRUUUVOQVFJREFnRURNQkFHQ3lxR1NJYjRUUUVOQVFJ\nRUFnRURNQkVHQ3lxR1NJYjRUUUVOCkFRSUZBZ0lBL3pBUkJnc3Foa2lHK0UwQkRR\nRUNCZ0lDQVA4d0VBWUxLb1pJaHZoTkFRMEJBZ2NDQVFBd0VBWUwKS29aSWh2aE5B\nUTBCQWdnQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWdrQ0FRQXdFQVlMS29aSWh2aE5B\nUTBCQWdvQwpBUUF3RUFZTEtvWklodmhOQVEwQkFnc0NBUUF3RUFZTEtvWklodmhO\nQVEwQkFnd0NBUUF3RUFZTEtvWklodmhOCkFRMEJBZzBDQVFBd0VBWUxLb1pJaHZo\nTkFRMEJBZzRDQVFBd0VBWUxLb1pJaHZoTkFRMEJBZzhDQVFBd0VBWUwKS29aSWh2\naE5BUTBCQWhBQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWhFQ0FRMHdId1lMS29aSWh2\naE5BUTBCQWhJRQpFQXNMQXdQLy93QUFBQUFBQUFBQUFBQXdFQVlLS29aSWh2aE5B\nUTBCQXdRQ0FBQXdGQVlLS29aSWh2aE5BUTBCCkJBUUdNR0JxQUFBQU1BOEdDaXFH\nU0liNFRRRU5BUVVLQVFFd0hnWUtLb1pJaHZoTkFRMEJCZ1FRcDZtY096M0EKdDRB\nSVRmdk84R1Y3cHpCRUJnb3Foa2lHK0UwQkRRRUhNRFl3RUFZTEtvWklodmhOQVEw\nQkJ3RUJBZjh3RUFZTApLb1pJaHZoTkFRMEJCd0lCQWY4d0VBWUxLb1pJaHZoTkFR\nMEJCd01CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3ClJnSWhBTEVtR1U2VldkdG5n\nYTZiTG5yaksrWEdWczlMVERSRkZURTRpcy9qU05tQkFpRUExY21KNUpkV0VIYlEK\nL2dyWVJ2L3c4MytTQmpidTJKQWcxR0dJNTJmSjFUUT0KLS0tLS1FTkQgQ0VSVElG\nSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2xqQ0NB\najJnQXdJQkFnSVZBSlZ2WGMyOUcrSHBRRW5KMVBRenpnRlhDOTVVTUFvR0NDcUdT\nTTQ5QkFNQwpNR2d4R2pBWUJnTlZCQU1NRVVsdWRHVnNJRk5IV0NCU2IyOTBJRU5C\nTVJvd0dBWURWUVFLREJGSmJuUmxiQ0JECmIzSndiM0poZEdsdmJqRVVNQklHQTFV\nRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQk1Rc3cKQ1FZRFZR\nUUdFd0pWVXpBZUZ3MHhPREExTWpFeE1EVXdNVEJhRncwek16QTFNakV4TURVd01U\nQmFNSEF4SWpBZwpCZ05WQkFNTUdVbHVkR1ZzSUZOSFdDQlFRMHNnVUd4aGRHWnZj\nbTBnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzCklFTnZjbkJ2Y21GMGFXOXVNUlF3\nRWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXgKQ3pB\nSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB\nRU5TQi83dDIxbFhTTwoyQ3V6cHh3NzRlSkI3MkV5REdnVzVyWEN0eDJ0VlRMcTZo\nS2s2eitVaVJaQ25xUjdwc092Z3FGZVN4bG1UbEpsCmVUbWkyV1l6M3FPQnV6Q0J1\nREFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlMK\nQmdOVkhSOEVTekJKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs\nY3k1MGNuVnpkR1ZrYzJWeQpkbWxqWlhNdWFXNTBaV3d1WTI5dEwwbHVkR1ZzVTBk\nWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVsVzlkCnpiMGI0ZWxBU2NuVTlE\nUE9BVmNMM2xRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B\nWUIKQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYc1ZraTB3K2k2VllH\nVzNVRi8yMnVhWGUwWUpEajFVZQpuQStUakQxYWk1Y0NJQ1liMVNBbUQ1eGtmVFZw\ndm80VW95aVNZeHJEV0xtVVI0Q0k5Tkt5ZlBOKwotLS0tLUVORCBDRVJUSUZJQ0FU\nRS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDanpDQ0FqU2dB\nd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJS29aSXpqMEVB\nd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNRZ1EwRXhHakFZ\nQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0\nVFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpCZ05WQkFZVEFs\nVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpOVGsxT1Zvd2FE\nRWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZC\nQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUw\nWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZVApBbFZUTUZr\nd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdNRElZWk9qL2lQ\nV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtEWVlMME14TzRt\ncXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05WSFNNRUdEQVdn\nQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhFU3pCSgpNRWVn\nUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25WemRHVmtjMlZ5\nZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRFTkJMbVJsY2pB\nZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25CcXd3RGdZRFZS\nMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3Q2dZSQpL\nb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293THVQUkxzV0dm\nL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZPOVFXeEhSQXZa\nVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgAwDQYJ\nKoZIhvcNAQELBQADggEBADk76T9z80TGctAh/LvBX8LMCLZVb/F2nw7mQy9Q7N1w\n6fo7TRV0XV6/yvctv3eB0oly0ybcuBZmARkokKAy47Sl6EhO16t2/mpp3CYx7+5A\n+Rx5Mupwtziwa6IXfPa3Ml+e99HMXv8CBSbEP6NiMvxNJPXbncjdWI6T+EWYnB9O\nn7HcKweXpk3sPBPvm7Tyq0n3Q7+3rM5JaPr6O4+ksVG/TepqHoYF+KG9AdJyzv6v\n69HeBsvyBfQ1BhX8vqAKJDxbML0eYzDWZ6tDqMuJ/CdqTGJ97d0YISTJ2eRTmXiP\njm1g0H4p0FUGuDItBX7q+mkfWkTBgl1fR0ovP0YaWvk=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIU9zCCFJ2gAwIBAgIQalc8WjxqJTTVPaingMIxCzAKBggqhkjOPQQDAjB2MSIw\nIAYDVQQDExlTdXBlclByb3RvY29sIFRFRSBSb290IENBMQswCQYDVQQGEwJVUzEL\nMAkGA1UECBMCTlkxETAPBgNVBAcTCE5ldyBZb3JrMRYwFAYDVQQKEw1TdXBlclBy\nb3RvY29sMQswCQYDVQQLEwJJVDAeFw0yNTA3MjExNDU2MjNaFw0zNTA4MDEwMDAw\nMDBaMHYxIjAgBgNVBAMTGVN1cGVyUHJvdG9jb2wgVEVFIFJvb3QgQ0ExCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJOWTERMA8GA1UEBxMITmV3IFlvcmsxFjAUBgNVBAoT\nDVN1cGVyUHJvdG9jb2wxCzAJBgNVBAsTAklUMFYwEAYHKoZIzj0CAQYFK4EEAAoD\nQgAEcSLjZBu+UoiuppY25rr77/iOeGC/PTrfDxvdgZVxEjdPMZLteyr7RVCXTOC4\nSyqAWpls0hwpq/uiozkz8Lirn6OCEw4wghMKMA8GA1UdEwEB/wQFMAMBAf8wDgYD\nVR0PAQH/BAQDAgKkMB8GA1UdIwQYMBaAFEGXfB2GhA+ajUWA8F9dN5w9CwSSMB0G\nA1UdDgQWBBRBl3wdhoQPmo1FgPBfXTecPQsEkjAUBggrBgEDxTgBAQQIc2d4LWRj\nYXAwghKPBgsGCSqGSIb4TYo5BgSCEn4DAAIAAAAAAAsAEACTmnIz95xMqZQKDbOV\nfwYHwuAeEM7bIyMk8VaVVsIMaAAAAAALEA8O//8AAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAOcAAAAAAAAAg090avZ3FKII\nEzhH7K4PGXPW5VTSomOCmLCnduwrcNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAADTqfKiANP6A8gnpfND4RC97piHrKl9gOTqwWHGua5edAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAABZt5Bjk2qaoB9n1ypfgAKYfKmQ66l3bkA9OpEGY3IL0AAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKEAAAaKO6ieLwSeouEySO5KL1fDuAIllB\nuOEBLQtYDMgLUJLuwbsbimEqwlyoGrXdrA/hC7WFI71Me568kMoAz7kB77dAjZv2\nT83/USoIQTTLTZ+kcZqLMigsqNeJHh5uBLsF5uqzPNwBDeJF1nIi/MaV+qcGve37\nEu8XoSCGSOCjb2gLEA8O//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAVAAAAAAAAAOcAAAAAAAAAeP6M/QEJWg8Qiv9cQGJLk2EtbCi3\nPhqNKBecnd8OBoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxPV3XX\nllA+lhN/d8aKgpoAVqyN7XAUCwgbCUSQxXv/AAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQALAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWq0gba\nZ0iNLGHsRl9vWJK1s51EREhaa5246jLZcL3NAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAArkN01FJ5vTX8xsD4zCyuu9jkUA276SlrfE9PttOJ2vf2ljC3d\n1oyCUyIPv+8dfR9Jbk3FLW/LY+BFJaQKnnGIIAAAAQIDBAUGBwgJCgsMDQ4PEBES\nExQVFhcYGRobHB0eHwUAYg4AAC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpN\nSUlFOHpDQ0JKaWdBd0lCQWdJVVFaT1NWSy8vQlZkVkJXeUIwaHM4dURoTkc2Z3dD\nZ1lJS29aSXpqMEVBd0l3CmNERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJE\nU3lCUWJHRjBabTl5YlNCRFFURWFNQmdHQTFVRUNnd1IKU1c1MFpXd2dRMjl5Y0c5\neVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEVlFR\nSQpEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpVd056QTVNVFV3T1RBd1do\nY05Nekl3TnpBNU1UVXdPVEF3CldqQndNU0l3SUFZRFZRUUREQmxKYm5SbGJDQlRS\nMWdnVUVOTElFTmxjblJwWm1sallYUmxNUm93R0FZRFZRUUsKREJGSmJuUmxiQ0JE\nYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFK\nQmdOVgpCQWdNQWtOQk1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdF\nR0NDcUdTTTQ5QXdFSEEwSUFCRFFBCkZNa2lVR1Z4S2luMnpIODB2MkMvbXpGQ0N1\nMnV0VHBOdE1VTzhjMUJ6U1F1ZlZ0YjYyT2JFMUhOUVNvZmE4Q3IKdXVLeWJ0VHBR\nT3BaakZXQkFhS2pnZ01PTUlJRENqQWZCZ05WSFNNRUdEQVdnQlNWYjEzTnZSdmg2\nVUJKeWRUMApNODRCVnd2ZVZEQnJCZ05WSFI4RVpEQmlNR0NnWHFCY2hscG9kSFJ3\nY3pvdkwyRndhUzUwY25WemRHVmtjMlZ5CmRtbGpaWE11YVc1MFpXd3VZMjl0TDNO\nbmVDOWpaWEowYVdacFkyRjBhVzl1TDNZMEwzQmphMk55YkQ5allUMXcKYkdGMFpt\nOXliU1psYm1OdlpHbHVaejFrWlhJd0hRWURWUjBPQkJZRUZPUHdhb25yYnpPZks0\nMy8vZ3Y5M0FmQgpiMGNZTUE0R0ExVWREd0VCL3dRRUF3SUd3REFNQmdOVkhSTUJB\nZjhFQWpBQU1JSUNPd1lKS29aSWh2aE5BUTBCCkJJSUNMRENDQWlnd0hnWUtLb1pJ\naHZoTkFRMEJBUVFRM3cvN014Q2Vwbkt2V2Q2WXhZb0VJVENDQVdVR0NpcUcKU0li\nNFRRRU5BUUl3Z2dGVk1CQUdDeXFHU0liNFRRRU5BUUlCQWdFTE1CQUdDeXFHU0li\nNFRRRU5BUUlDQWdFTApNQkFHQ3lxR1NJYjRUUUVOQVFJREFnRURNQkFHQ3lxR1NJ\nYjRUUUVOQVFJRUFnRURNQkVHQ3lxR1NJYjRUUUVOCkFRSUZBZ0lBL3pBUkJnc3Fo\na2lHK0UwQkRRRUNCZ0lDQVA4d0VBWUxLb1pJaHZoTkFRMEJBZ2NDQVFBd0VBWUwK\nS29aSWh2aE5BUTBCQWdnQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWdrQ0FRQXdFQVlM\nS29aSWh2aE5BUTBCQWdvQwpBUUF3RUFZTEtvWklodmhOQVEwQkFnc0NBUUF3RUFZ\nTEtvWklodmhOQVEwQkFnd0NBUUF3RUFZTEtvWklodmhOCkFRMEJBZzBDQVFBd0VB\nWUxLb1pJaHZoTkFRMEJBZzRDQVFBd0VBWUxLb1pJaHZoTkFRMEJBZzhDQVFBd0VB\nWUwKS29aSWh2aE5BUTBCQWhBQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWhFQ0FRMHdI\nd1lMS29aSWh2aE5BUTBCQWhJRQpFQXNMQXdQLy93QUFBQUFBQUFBQUFBQXdFQVlL\nS29aSWh2aE5BUTBCQXdRQ0FBQXdGQVlLS29aSWh2aE5BUTBCCkJBUUdNR0JxQUFB\nQU1BOEdDaXFHU0liNFRRRU5BUVVLQVFFd0hnWUtLb1pJaHZoTkFRMEJCZ1FRcDZt\nY096M0EKdDRBSVRmdk84R1Y3cHpCRUJnb3Foa2lHK0UwQkRRRUhNRFl3RUFZTEtv\nWklodmhOQVEwQkJ3RUJBZjh3RUFZTApLb1pJaHZoTkFRMEJCd0lCQWY4d0VBWUxL\nb1pJaHZoTkFRMEJCd01CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3ClJnSWhBTEVt\nR1U2VldkdG5nYTZiTG5yaksrWEdWczlMVERSRkZURTRpcy9qU05tQkFpRUExY21K\nNUpkV0VIYlEKL2dyWVJ2L3c4MytTQmpidTJKQWcxR0dJNTJmSjFUUT0KLS0tLS1F\nTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K\nTUlJQ2xqQ0NBajJnQXdJQkFnSVZBSlZ2WGMyOUcrSHBRRW5KMVBRenpnRlhDOTVV\nTUFvR0NDcUdTTTQ5QkFNQwpNR2d4R2pBWUJnTlZCQU1NRVVsdWRHVnNJRk5IV0NC\nU2IyOTBJRU5CTVJvd0dBWURWUVFLREJGSmJuUmxiQ0JECmIzSndiM0poZEdsdmJq\nRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQk1R\nc3cKQ1FZRFZRUUdFd0pWVXpBZUZ3MHhPREExTWpFeE1EVXdNVEJhRncwek16QTFN\nakV4TURVd01UQmFNSEF4SWpBZwpCZ05WQkFNTUdVbHVkR1ZzSUZOSFdDQlFRMHNn\nVUd4aGRHWnZjbTBnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzCklFTnZjbkJ2Y21G\nMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3\nQ1EwRXgKQ3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpq\nMERBUWNEUWdBRU5TQi83dDIxbFhTTwoyQ3V6cHh3NzRlSkI3MkV5REdnVzVyWEN0\neDJ0VlRMcTZoS2s2eitVaVJaQ25xUjdwc092Z3FGZVN4bG1UbEpsCmVUbWkyV1l6\nM3FPQnV6Q0J1REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFi\nT1NjR3JEQlMKQmdOVkhSOEVTekJKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25S\ncFptbGpZWFJsY3k1MGNuVnpkR1ZrYzJWeQpkbWxqWlhNdWFXNTBaV3d1WTI5dEww\nbHVkR1ZzVTBkWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVsVzlkCnpiMGI0\nZWxBU2NuVTlEUE9BVmNMM2xRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRF\nd0VCL3dRSU1BWUIKQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYc1Zr\naTB3K2k2VllHVzNVRi8yMnVhWGUwWUpEajFVZQpuQStUakQxYWk1Y0NJQ1liMVNB\nbUQ1eGtmVFZwdm80VW95aVNZeHJEV0xtVVI0Q0k5Tkt5ZlBOKwotLS0tLUVORCBD\nRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlD\nanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJ\nS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNR\nZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0Vn\nWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpC\nZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpO\nVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4\nR2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFR\nSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZ\nVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdN\nRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtE\nWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05W\nSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhF\nU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25W\nemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRF\nTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25C\ncXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENB\nUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293\nTHVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZP\nOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0t\nLS0tCgAwCgYIKoZIzj0EAwIDSAAwRQIgDTaE8oMgfCSqhbOeqnn6FD2ypLS4arzW\nth/G0VQ3e40CIQCEcpjpdAP63KCipYLE1UEmHJOBOvcKNjevt/2O9DkwXA==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n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\n8GsvLa47wxM2A3uBCtoioBO+IAAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRob\nHB0eHwUAYg4AAC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFOHpDQ0JK\naWdBd0lCQWdJVVFaT1NWSy8vQlZkVkJXeUIwaHM4dURoTkc2Z3dDZ1lJS29aSXpq\nMEVBd0l3CmNERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJEU3lCUWJHRjBa\nbTl5YlNCRFFURWFNQmdHQTFVRUNnd1IKU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4\nRkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEVlFRSQpEQUpEUVRF\nTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpVd056QTVNVFV3T1RBd1doY05Nekl3TnpB\nNU1UVXdPVEF3CldqQndNU0l3SUFZRFZRUUREQmxKYm5SbGJDQlRSMWdnVUVOTElF\nTmxjblJwWm1sallYUmxNUm93R0FZRFZRUUsKREJGSmJuUmxiQ0JEYjNKd2IzSmhk\nR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFKQmdOVgpCQWdN\nQWtOQk1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5\nQXdFSEEwSUFCRFFBCkZNa2lVR1Z4S2luMnpIODB2MkMvbXpGQ0N1MnV0VHBOdE1V\nTzhjMUJ6U1F1ZlZ0YjYyT2JFMUhOUVNvZmE4Q3IKdXVLeWJ0VHBRT3BaakZXQkFh\nS2pnZ01PTUlJRENqQWZCZ05WSFNNRUdEQVdnQlNWYjEzTnZSdmg2VUJKeWRUMApN\nODRCVnd2ZVZEQnJCZ05WSFI4RVpEQmlNR0NnWHFCY2hscG9kSFJ3Y3pvdkwyRndh\nUzUwY25WemRHVmtjMlZ5CmRtbGpaWE11YVc1MFpXd3VZMjl0TDNObmVDOWpaWEow\nYVdacFkyRjBhVzl1TDNZMEwzQmphMk55YkQ5allUMXcKYkdGMFptOXliU1psYm1O\ndlpHbHVaejFrWlhJd0hRWURWUjBPQkJZRUZPUHdhb25yYnpPZks0My8vZ3Y5M0Fm\nQgpiMGNZTUE0R0ExVWREd0VCL3dRRUF3SUd3REFNQmdOVkhSTUJBZjhFQWpBQU1J\nSUNPd1lKS29aSWh2aE5BUTBCCkJJSUNMRENDQWlnd0hnWUtLb1pJaHZoTkFRMEJB\nUVFRM3cvN014Q2Vwbkt2V2Q2WXhZb0VJVENDQVdVR0NpcUcKU0liNFRRRU5BUUl3\nZ2dGVk1CQUdDeXFHU0liNFRRRU5BUUlCQWdFTE1CQUdDeXFHU0liNFRRRU5BUUlD\nQWdFTApNQkFHQ3lxR1NJYjRUUUVOQVFJREFnRURNQkFHQ3lxR1NJYjRUUUVOQVFJ\nRUFnRURNQkVHQ3lxR1NJYjRUUUVOCkFRSUZBZ0lBL3pBUkJnc3Foa2lHK0UwQkRR\nRUNCZ0lDQVA4d0VBWUxLb1pJaHZoTkFRMEJBZ2NDQVFBd0VBWUwKS29aSWh2aE5B\nUTBCQWdnQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWdrQ0FRQXdFQVlMS29aSWh2aE5B\nUTBCQWdvQwpBUUF3RUFZTEtvWklodmhOQVEwQkFnc0NBUUF3RUFZTEtvWklodmhO\nQVEwQkFnd0NBUUF3RUFZTEtvWklodmhOCkFRMEJBZzBDQVFBd0VBWUxLb1pJaHZo\nTkFRMEJBZzRDQVFBd0VBWUxLb1pJaHZoTkFRMEJBZzhDQVFBd0VBWUwKS29aSWh2\naE5BUTBCQWhBQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWhFQ0FRMHdId1lMS29aSWh2\naE5BUTBCQWhJRQpFQXNMQXdQLy93QUFBQUFBQUFBQUFBQXdFQVlLS29aSWh2aE5B\nUTBCQXdRQ0FBQXdGQVlLS29aSWh2aE5BUTBCCkJBUUdNR0JxQUFBQU1BOEdDaXFH\nU0liNFRRRU5BUVVLQVFFd0hnWUtLb1pJaHZoTkFRMEJCZ1FRcDZtY096M0EKdDRB\nSVRmdk84R1Y3cHpCRUJnb3Foa2lHK0UwQkRRRUhNRFl3RUFZTEtvWklodmhOQVEw\nQkJ3RUJBZjh3RUFZTApLb1pJaHZoTkFRMEJCd0lCQWY4d0VBWUxLb1pJaHZoTkFR\nMEJCd01CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3ClJnSWhBTEVtR1U2VldkdG5n\nYTZiTG5yaksrWEdWczlMVERSRkZURTRpcy9qU05tQkFpRUExY21KNUpkV0VIYlEK\nL2dyWVJ2L3c4MytTQmpidTJKQWcxR0dJNTJmSjFUUT0KLS0tLS1FTkQgQ0VSVElG\nSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2xqQ0NB\najJnQXdJQkFnSVZBSlZ2WGMyOUcrSHBRRW5KMVBRenpnRlhDOTVVTUFvR0NDcUdT\nTTQ5QkFNQwpNR2d4R2pBWUJnTlZCQU1NRVVsdWRHVnNJRk5IV0NCU2IyOTBJRU5C\nTVJvd0dBWURWUVFLREJGSmJuUmxiQ0JECmIzSndiM0poZEdsdmJqRVVNQklHQTFV\nRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQk1Rc3cKQ1FZRFZR\nUUdFd0pWVXpBZUZ3MHhPREExTWpFeE1EVXdNVEJhRncwek16QTFNakV4TURVd01U\nQmFNSEF4SWpBZwpCZ05WQkFNTUdVbHVkR1ZzSUZOSFdDQlFRMHNnVUd4aGRHWnZj\nbTBnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzCklFTnZjbkJ2Y21GMGFXOXVNUlF3\nRWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXgKQ3pB\nSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB\nRU5TQi83dDIxbFhTTwoyQ3V6cHh3NzRlSkI3MkV5REdnVzVyWEN0eDJ0VlRMcTZo\nS2s2eitVaVJaQ25xUjdwc092Z3FGZVN4bG1UbEpsCmVUbWkyV1l6M3FPQnV6Q0J1\nREFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlMK\nQmdOVkhSOEVTekJKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs\nY3k1MGNuVnpkR1ZrYzJWeQpkbWxqWlhNdWFXNTBaV3d1WTI5dEwwbHVkR1ZzVTBk\nWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVsVzlkCnpiMGI0ZWxBU2NuVTlE\nUE9BVmNMM2xRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B\nWUIKQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYc1ZraTB3K2k2VllH\nVzNVRi8yMnVhWGUwWUpEajFVZQpuQStUakQxYWk1Y0NJQ1liMVNBbUQ1eGtmVFZw\ndm80VW95aVNZeHJEV0xtVVI0Q0k5Tkt5ZlBOKwotLS0tLUVORCBDRVJUSUZJQ0FU\nRS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDanpDQ0FqU2dB\nd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJS29aSXpqMEVB\nd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNRZ1EwRXhHakFZ\nQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0\nVFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpCZ05WQkFZVEFs\nVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpOVGsxT1Zvd2FE\nRWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZC\nQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUw\nWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZVApBbFZUTUZr\nd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdNRElZWk9qL2lQ\nV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtEWVlMME14TzRt\ncXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05WSFNNRUdEQVdn\nQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhFU3pCSgpNRWVn\nUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25WemRHVmtjMlZ5\nZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRFTkJMbVJsY2pB\nZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25CcXd3RGdZRFZS\nMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3Q2dZSQpL\nb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293THVQUkxzV0dm\nL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZPOVFXeEhSQXZa\nVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgAwDQYJ\nKoZIhvcNAQELBQADggEBAKkOQGvOjQQ7w2BeSxqLXo5vLLESx3ksJMRVBF6UMlHg\nmYwC6cuWeZxSaJBcBn+XR1n03BL5XteH34GowIw4/chAPDOMtLDkLQiObCQxhvlA\nqQNhJAP1B1bdYaHMPunc1zVq0G3MeHPjKEnLGQgX+VeIHxJOwpZ1IMGuHJcjYoSK\nEaHjNdoGCSllzGTGUBmda6qHNwgz+X8IZ8AktDH/gQxPHmmuoWWMchz2Bg2cSBLX\n1bLkn2WBr3rl5HgEwiestcaNC8vllrMUfd16HZSuMypr13NLYEQUGoVSMv6QJRAl\nfuKNqVE955sVTjAUfJu0fK/lYhoJEXhBXWdvamurRhQ=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIU+DCCFJ2gAwIBAgIQRbz9C1DdJRlVO8NiDEpfyjAKBggqhkjOPQQDAjB2MSIw\nIAYDVQQDExlTdXBlclByb3RvY29sIFRFRSBSb290IENBMQswCQYDVQQGEwJVUzEL\nMAkGA1UECBMCTlkxETAPBgNVBAcTCE5ldyBZb3JrMRYwFAYDVQQKEw1TdXBlclBy\nb3RvY29sMQswCQYDVQQLEwJJVDAeFw0yNjAxMjcxNjQ3MzZaFw0zNTA4MDEwMDAw\nMDBaMHYxIjAgBgNVBAMTGVN1cGVyUHJvdG9jb2wgVEVFIFJvb3QgQ0ExCzAJBgNV\nBAYTAlVTMQswCQYDVQQIEwJOWTERMA8GA1UEBxMITmV3IFlvcmsxFjAUBgNVBAoT\nDVN1cGVyUHJvdG9jb2wxCzAJBgNVBAsTAklUMFYwEAYHKoZIzj0CAQYFK4EEAAoD\nQgAEZ8KD9tyLV88CeWfb4OD0bPw29PoCe56JAAEizCE4TEUJCp5T8/ZAPk3yidKE\njgKvZoOWCr7fvLoYm+fKo8dbIqOCEw4wghMKMA8GA1UdEwEB/wQFMAMBAf8wDgYD\nVR0PAQH/BAQDAgKkMB8GA1UdIwQYMBaAFHuJOB4jlKmDy39BxxZ2Ab1yQ2f4MB0G\nA1UdDgQWBBR7iTgeI5Spg8t/QccWdgG9ckNn+DAUBggrBgEDxTgBAQQIc2d4LWRj\nYXAwghKPBgsGCSqGSIb4TYo5BgSCEn4DAAIAAAAAAAsAEACTmnIz95xMqZQKDbOV\nfwYHwuAeEM7bIyMk8VaVVsIMaAAAAAALEA8O//8AAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAOcAAAAAAAAAg090avZ3FKII\nEzhH7K4PGXPW5VTSomOCmLCnduwrcNUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAADTqfKiANP6A8gnpfND4RC97piHrKl9gOTqwWHGua5edAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAACqHRvGLw/OscC7fDHwP91HqU/m9hO3OgvHsxT19gs5rAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKEAAAoA0mYNwFZN0ZW5PnETOGILkP3Rc2\nSAt6CnZEumjJ2U+101xh4i81AxkLzsTnRjAGiM9Fgti/zHGDQFRN8Luud7dAjZv2\nT83/USoIQTTLTZ+kcZqLMigsqNeJHh5uBLsF5uqzPNwBDeJF1nIi/MaV+qcGve37\nEu8XoSCGSOCjb2gLEA8O//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAVAAAAAAAAAOcAAAAAAAAAeP6M/QEJWg8Qiv9cQGJLk2EtbCi3\nPhqNKBecnd8OBoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxPV3XX\nllA+lhN/d8aKgpoAVqyN7XAUCwgbCUSQxXv/AAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQALAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWq0gba\nZ0iNLGHsRl9vWJK1s51EREhaa5246jLZcL3NAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAA3fXcIoELQsMOS5WsIpabpR3dqI698Zc2N9WDpDbs1ms2RRbMd\n3x1b/40tUiZT8GsvLa47wxM2A3uBCtoioBO+IAAAAQIDBAUGBwgJCgsMDQ4PEBES\nExQVFhcYGRobHB0eHwUAYg4AAC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpN\nSUlFOHpDQ0JKaWdBd0lCQWdJVVFaT1NWSy8vQlZkVkJXeUIwaHM4dURoTkc2Z3dD\nZ1lJS29aSXpqMEVBd0l3CmNERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJE\nU3lCUWJHRjBabTl5YlNCRFFURWFNQmdHQTFVRUNnd1IKU1c1MFpXd2dRMjl5Y0c5\neVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEVlFR\nSQpEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTWpVd056QTVNVFV3T1RBd1do\nY05Nekl3TnpBNU1UVXdPVEF3CldqQndNU0l3SUFZRFZRUUREQmxKYm5SbGJDQlRS\nMWdnVUVOTElFTmxjblJwWm1sallYUmxNUm93R0FZRFZRUUsKREJGSmJuUmxiQ0JE\nYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFK\nQmdOVgpCQWdNQWtOQk1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdF\nR0NDcUdTTTQ5QXdFSEEwSUFCRFFBCkZNa2lVR1Z4S2luMnpIODB2MkMvbXpGQ0N1\nMnV0VHBOdE1VTzhjMUJ6U1F1ZlZ0YjYyT2JFMUhOUVNvZmE4Q3IKdXVLeWJ0VHBR\nT3BaakZXQkFhS2pnZ01PTUlJRENqQWZCZ05WSFNNRUdEQVdnQlNWYjEzTnZSdmg2\nVUJKeWRUMApNODRCVnd2ZVZEQnJCZ05WSFI4RVpEQmlNR0NnWHFCY2hscG9kSFJ3\nY3pvdkwyRndhUzUwY25WemRHVmtjMlZ5CmRtbGpaWE11YVc1MFpXd3VZMjl0TDNO\nbmVDOWpaWEowYVdacFkyRjBhVzl1TDNZMEwzQmphMk55YkQ5allUMXcKYkdGMFpt\nOXliU1psYm1OdlpHbHVaejFrWlhJd0hRWURWUjBPQkJZRUZPUHdhb25yYnpPZks0\nMy8vZ3Y5M0FmQgpiMGNZTUE0R0ExVWREd0VCL3dRRUF3SUd3REFNQmdOVkhSTUJB\nZjhFQWpBQU1JSUNPd1lKS29aSWh2aE5BUTBCCkJJSUNMRENDQWlnd0hnWUtLb1pJ\naHZoTkFRMEJBUVFRM3cvN014Q2Vwbkt2V2Q2WXhZb0VJVENDQVdVR0NpcUcKU0li\nNFRRRU5BUUl3Z2dGVk1CQUdDeXFHU0liNFRRRU5BUUlCQWdFTE1CQUdDeXFHU0li\nNFRRRU5BUUlDQWdFTApNQkFHQ3lxR1NJYjRUUUVOQVFJREFnRURNQkFHQ3lxR1NJ\nYjRUUUVOQVFJRUFnRURNQkVHQ3lxR1NJYjRUUUVOCkFRSUZBZ0lBL3pBUkJnc3Fo\na2lHK0UwQkRRRUNCZ0lDQVA4d0VBWUxLb1pJaHZoTkFRMEJBZ2NDQVFBd0VBWUwK\nS29aSWh2aE5BUTBCQWdnQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWdrQ0FRQXdFQVlM\nS29aSWh2aE5BUTBCQWdvQwpBUUF3RUFZTEtvWklodmhOQVEwQkFnc0NBUUF3RUFZ\nTEtvWklodmhOQVEwQkFnd0NBUUF3RUFZTEtvWklodmhOCkFRMEJBZzBDQVFBd0VB\nWUxLb1pJaHZoTkFRMEJBZzRDQVFBd0VBWUxLb1pJaHZoTkFRMEJBZzhDQVFBd0VB\nWUwKS29aSWh2aE5BUTBCQWhBQ0FRQXdFQVlMS29aSWh2aE5BUTBCQWhFQ0FRMHdI\nd1lMS29aSWh2aE5BUTBCQWhJRQpFQXNMQXdQLy93QUFBQUFBQUFBQUFBQXdFQVlL\nS29aSWh2aE5BUTBCQXdRQ0FBQXdGQVlLS29aSWh2aE5BUTBCCkJBUUdNR0JxQUFB\nQU1BOEdDaXFHU0liNFRRRU5BUVVLQVFFd0hnWUtLb1pJaHZoTkFRMEJCZ1FRcDZt\nY096M0EKdDRBSVRmdk84R1Y3cHpCRUJnb3Foa2lHK0UwQkRRRUhNRFl3RUFZTEtv\nWklodmhOQVEwQkJ3RUJBZjh3RUFZTApLb1pJaHZoTkFRMEJCd0lCQWY4d0VBWUxL\nb1pJaHZoTkFRMEJCd01CQWY4d0NnWUlLb1pJemowRUF3SURTUUF3ClJnSWhBTEVt\nR1U2VldkdG5nYTZiTG5yaksrWEdWczlMVERSRkZURTRpcy9qU05tQkFpRUExY21K\nNUpkV0VIYlEKL2dyWVJ2L3c4MytTQmpidTJKQWcxR0dJNTJmSjFUUT0KLS0tLS1F\nTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0K\nTUlJQ2xqQ0NBajJnQXdJQkFnSVZBSlZ2WGMyOUcrSHBRRW5KMVBRenpnRlhDOTVV\nTUFvR0NDcUdTTTQ5QkFNQwpNR2d4R2pBWUJnTlZCQU1NRVVsdWRHVnNJRk5IV0NC\nU2IyOTBJRU5CTVJvd0dBWURWUVFLREJGSmJuUmxiQ0JECmIzSndiM0poZEdsdmJq\nRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQk1R\nc3cKQ1FZRFZRUUdFd0pWVXpBZUZ3MHhPREExTWpFeE1EVXdNVEJhRncwek16QTFN\nakV4TURVd01UQmFNSEF4SWpBZwpCZ05WQkFNTUdVbHVkR1ZzSUZOSFdDQlFRMHNn\nVUd4aGRHWnZjbTBnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzCklFTnZjbkJ2Y21G\nMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3\nQ1EwRXgKQ3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpq\nMERBUWNEUWdBRU5TQi83dDIxbFhTTwoyQ3V6cHh3NzRlSkI3MkV5REdnVzVyWEN0\neDJ0VlRMcTZoS2s2eitVaVJaQ25xUjdwc092Z3FGZVN4bG1UbEpsCmVUbWkyV1l6\nM3FPQnV6Q0J1REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFi\nT1NjR3JEQlMKQmdOVkhSOEVTekJKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25S\ncFptbGpZWFJsY3k1MGNuVnpkR1ZrYzJWeQpkbWxqWlhNdWFXNTBaV3d1WTI5dEww\nbHVkR1ZzVTBkWVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVsVzlkCnpiMGI0\nZWxBU2NuVTlEUE9BVmNMM2xRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRF\nd0VCL3dRSU1BWUIKQWY4Q0FRQXdDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWdYc1Zr\naTB3K2k2VllHVzNVRi8yMnVhWGUwWUpEajFVZQpuQStUakQxYWk1Y0NJQ1liMVNB\nbUQ1eGtmVFZwdm80VW95aVNZeHJEV0xtVVI0Q0k5Tkt5ZlBOKwotLS0tLUVORCBD\nRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlD\nanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJ\nS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNR\nZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0Vn\nWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpC\nZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpO\nVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4\nR2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFR\nSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZ\nVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdN\nRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtE\nWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05W\nSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhF\nU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25W\nemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRF\nTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25C\ncXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENB\nUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293\nTHVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZP\nOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0t\nLS0tCgAwCgYIKoZIzj0EAwIDSQAwRgIhAIG+llexy99ev7jQOzPqyBv1vUElktwH\n2CbYVLfZ2a0zAiEA4ydsqi6DfZiUnPJiHlCFj3LpaNQa/W/hfrBqdAtkabs=\n-----END CERTIFICATE-----";