@super-protocol/sdk-js 3.15.0 → 3.16.0-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 (141) hide show
  1. package/dist/cjs/RIGenerator.d.ts +2 -3
  2. package/dist/cjs/RIGenerator.js +6 -7
  3. package/dist/cjs/TeeInputGeneratorBase.d.ts +2 -2
  4. package/dist/cjs/TeeInputGeneratorBase.js +1 -1
  5. package/dist/cjs/connectors/BaseConnector.d.ts +2 -3
  6. package/dist/cjs/connectors/BaseConnector.js +1 -1
  7. package/dist/cjs/connectors/BlockchainConnector.js +1 -3
  8. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +2 -2
  9. package/dist/cjs/connectors/BlockchainEventsListener.js +2 -3
  10. package/dist/cjs/constants.d.ts +2 -0
  11. package/dist/cjs/constants.js +6 -2
  12. package/dist/cjs/contracts/Campaign.d.ts +1078 -0
  13. package/dist/cjs/contracts/Campaign.js +1401 -0
  14. package/dist/cjs/contracts/abi.d.ts +406 -245
  15. package/dist/cjs/contracts/abi.js +511 -307
  16. package/dist/cjs/contracts/adminCertificateHelperAbi.d.ts +316 -0
  17. package/dist/cjs/contracts/adminCertificateHelperAbi.js +410 -0
  18. package/dist/cjs/crypto/Crypto.d.ts +13 -10
  19. package/dist/cjs/crypto/Crypto.js +17 -14
  20. package/dist/cjs/crypto/nodejs/AES.d.ts +1 -1
  21. package/dist/cjs/crypto/nodejs/AES.js +2 -2
  22. package/dist/cjs/crypto/nodejs/ARIA.d.ts +1 -1
  23. package/dist/cjs/crypto/nodejs/ARIA.js +2 -2
  24. package/dist/cjs/errors/index.d.ts +0 -1
  25. package/dist/cjs/errors/index.js +2 -4
  26. package/dist/cjs/index.d.ts +2 -1
  27. package/dist/cjs/index.js +5 -4
  28. package/dist/cjs/models/Offer.d.ts +1 -16
  29. package/dist/cjs/models/Offer.js +1 -51
  30. package/dist/cjs/models/Order.d.ts +1 -1
  31. package/dist/cjs/models/Order.js +15 -11
  32. package/dist/cjs/providers/storage/S3StorageProvider.js +5 -5
  33. package/dist/cjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  34. package/dist/cjs/providers/storage/parseStorageCredentials.d.ts +2 -1
  35. package/dist/cjs/staticModels/AdminCertificateHelper.d.ts +24 -0
  36. package/dist/cjs/staticModels/AdminCertificateHelper.js +99 -0
  37. package/dist/cjs/staticModels/Campaign.d.ts +61 -0
  38. package/dist/cjs/staticModels/Campaign.js +297 -0
  39. package/dist/cjs/staticModels/Offers.d.ts +0 -1
  40. package/dist/cjs/staticModels/Offers.js +2 -4
  41. package/dist/cjs/staticModels/Orders.js +9 -10
  42. package/dist/cjs/staticModels/SuperproToken.d.ts +7 -7
  43. package/dist/cjs/staticModels/SuperproToken.js +3 -3
  44. package/dist/cjs/staticModels/TeeOffers.d.ts +1 -1
  45. package/dist/cjs/staticModels/TeeOffers.js +2 -4
  46. package/dist/cjs/tee/TeeCertificateService.js +8 -1
  47. package/dist/cjs/types/Campaign.d.ts +45 -0
  48. package/dist/cjs/types/Campaign.js +16 -0
  49. package/dist/cjs/types/Offer.d.ts +0 -5
  50. package/dist/cjs/types/Order.d.ts +20 -25
  51. package/dist/cjs/types/Order.js +14 -21
  52. package/dist/cjs/types/index.d.ts +1 -0
  53. package/dist/cjs/types/index.js +2 -1
  54. package/dist/cjs/utils/TxManager.js +1 -5
  55. package/dist/cjs/utils/admin-service.d.ts +13 -0
  56. package/dist/cjs/utils/admin-service.js +73 -0
  57. package/dist/cjs/utils/helper.d.ts +3 -0
  58. package/dist/cjs/utils/helper.js +20 -2
  59. package/dist/cjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  60. package/dist/cjs/utils/helpers/OrderArgsHelper.js +5 -5
  61. package/dist/cjs/utils/helpers/index.d.ts +0 -1
  62. package/dist/cjs/utils/helpers/index.js +1 -2
  63. package/dist/cjs/utils/order/versify.js +7 -1
  64. package/dist/cjs/utils/rent-calculator/rent-calculator.js +3 -2
  65. package/dist/cjs/utils/rent-calculator/types.d.ts +1 -0
  66. package/dist/cjs/utils/types.d.ts +5 -0
  67. package/dist/mjs/RIGenerator.d.ts +2 -3
  68. package/dist/mjs/RIGenerator.js +7 -8
  69. package/dist/mjs/TeeInputGeneratorBase.d.ts +2 -2
  70. package/dist/mjs/TeeInputGeneratorBase.js +1 -1
  71. package/dist/mjs/connectors/BaseConnector.d.ts +2 -3
  72. package/dist/mjs/connectors/BaseConnector.js +1 -1
  73. package/dist/mjs/connectors/BlockchainConnector.js +1 -3
  74. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +2 -2
  75. package/dist/mjs/connectors/BlockchainEventsListener.js +2 -3
  76. package/dist/mjs/constants.d.ts +2 -0
  77. package/dist/mjs/constants.js +5 -1
  78. package/dist/mjs/contracts/Campaign.d.ts +1078 -0
  79. package/dist/mjs/contracts/Campaign.js +1398 -0
  80. package/dist/mjs/contracts/abi.d.ts +406 -245
  81. package/dist/mjs/contracts/abi.js +509 -305
  82. package/dist/mjs/contracts/adminCertificateHelperAbi.d.ts +316 -0
  83. package/dist/mjs/contracts/adminCertificateHelperAbi.js +407 -0
  84. package/dist/mjs/crypto/Crypto.d.ts +13 -10
  85. package/dist/mjs/crypto/Crypto.js +17 -14
  86. package/dist/mjs/crypto/nodejs/AES.d.ts +1 -1
  87. package/dist/mjs/crypto/nodejs/AES.js +2 -2
  88. package/dist/mjs/crypto/nodejs/ARIA.d.ts +1 -1
  89. package/dist/mjs/crypto/nodejs/ARIA.js +2 -2
  90. package/dist/mjs/errors/index.d.ts +0 -1
  91. package/dist/mjs/errors/index.js +1 -2
  92. package/dist/mjs/index.d.ts +2 -1
  93. package/dist/mjs/index.js +3 -2
  94. package/dist/mjs/models/Offer.d.ts +1 -16
  95. package/dist/mjs/models/Offer.js +1 -51
  96. package/dist/mjs/models/Order.d.ts +1 -1
  97. package/dist/mjs/models/Order.js +15 -11
  98. package/dist/mjs/providers/storage/S3StorageProvider.js +5 -5
  99. package/dist/mjs/providers/storage/StorageKeyValueAdapter.d.ts +1 -1
  100. package/dist/mjs/providers/storage/parseStorageCredentials.d.ts +2 -1
  101. package/dist/mjs/staticModels/AdminCertificateHelper.d.ts +24 -0
  102. package/dist/mjs/staticModels/AdminCertificateHelper.js +92 -0
  103. package/dist/mjs/staticModels/Campaign.d.ts +61 -0
  104. package/dist/mjs/staticModels/Campaign.js +292 -0
  105. package/dist/mjs/staticModels/Offers.d.ts +0 -1
  106. package/dist/mjs/staticModels/Offers.js +2 -4
  107. package/dist/mjs/staticModels/Orders.js +9 -10
  108. package/dist/mjs/staticModels/SuperproToken.d.ts +7 -7
  109. package/dist/mjs/staticModels/SuperproToken.js +3 -3
  110. package/dist/mjs/staticModels/TeeOffers.d.ts +1 -1
  111. package/dist/mjs/staticModels/TeeOffers.js +2 -4
  112. package/dist/mjs/tee/TeeCertificateService.js +9 -2
  113. package/dist/mjs/types/Campaign.d.ts +45 -0
  114. package/dist/mjs/types/Campaign.js +13 -0
  115. package/dist/mjs/types/Offer.d.ts +0 -5
  116. package/dist/mjs/types/Order.d.ts +20 -25
  117. package/dist/mjs/types/Order.js +14 -18
  118. package/dist/mjs/types/index.d.ts +1 -0
  119. package/dist/mjs/types/index.js +2 -1
  120. package/dist/mjs/utils/TxManager.js +1 -5
  121. package/dist/mjs/utils/admin-service.d.ts +13 -0
  122. package/dist/mjs/utils/admin-service.js +66 -0
  123. package/dist/mjs/utils/helper.d.ts +3 -0
  124. package/dist/mjs/utils/helper.js +17 -2
  125. package/dist/mjs/utils/helpers/OrderArgsHelper.d.ts +2 -2
  126. package/dist/mjs/utils/helpers/OrderArgsHelper.js +5 -5
  127. package/dist/mjs/utils/helpers/index.d.ts +0 -1
  128. package/dist/mjs/utils/helpers/index.js +1 -2
  129. package/dist/mjs/utils/order/versify.js +7 -1
  130. package/dist/mjs/utils/rent-calculator/rent-calculator.js +3 -2
  131. package/dist/mjs/utils/rent-calculator/types.d.ts +1 -0
  132. package/dist/mjs/utils/types.d.ts +5 -0
  133. package/package.json +3 -3
  134. package/dist/cjs/errors/insufficient-funds.error.d.ts +0 -19
  135. package/dist/cjs/errors/insufficient-funds.error.js +0 -57
  136. package/dist/cjs/utils/helpers/streamToBuffer.d.ts +0 -4
  137. package/dist/cjs/utils/helpers/streamToBuffer.js +0 -13
  138. package/dist/mjs/errors/insufficient-funds.error.d.ts +0 -19
  139. package/dist/mjs/errors/insufficient-funds.error.js +0 -53
  140. package/dist/mjs/utils/helpers/streamToBuffer.d.ts +0 -4
  141. package/dist/mjs/utils/helpers/streamToBuffer.js +0 -9
@@ -0,0 +1,99 @@
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.AdminCertificateHelper = void 0;
7
+ const adminCertificateHelperAbi_js_1 = require("../contracts/adminCertificateHelperAbi.js");
8
+ const store_js_1 = __importDefault(require("../store.js"));
9
+ const helper_js_1 = require("../utils/helper.js");
10
+ const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
11
+ class AdminCertificateHelper {
12
+ static contractHttps;
13
+ static _addressHttps;
14
+ static set address(newAddress) {
15
+ AdminCertificateHelper._addressHttps = newAddress;
16
+ const contractHttps = AdminCertificateHelper.createContract(newAddress);
17
+ AdminCertificateHelper.contractHttps = contractHttps;
18
+ }
19
+ static createContract(newAddress) {
20
+ if (!store_js_1.default.web3Https) {
21
+ throw new Error('web3Https is not initialized');
22
+ }
23
+ const httpsContract = new store_js_1.default.web3Https.eth.Contract(adminCertificateHelperAbi_js_1.adminCertificateHelperAbi, newAddress, {
24
+ config: { contractDataInputFill: 'data' },
25
+ });
26
+ return httpsContract;
27
+ }
28
+ static get address() {
29
+ if (!AdminCertificateHelper._addressHttps) {
30
+ throw new Error('AdminCertificateHelper.address is not set');
31
+ }
32
+ return AdminCertificateHelper._addressHttps;
33
+ }
34
+ static async addAdmin(chain, signature, transactionOptions, checkTxBeforeSend = false) {
35
+ const contract = this.getContract();
36
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
37
+ const blockchainChain = chain.map((cert) => AdminCertificateHelper.certToRawBLockchainCert(cert));
38
+ const blockchainSignature = signature instanceof Buffer ? (0, helper_js_1.toBlockchainHex)(signature) : signature;
39
+ if (checkTxBeforeSend) {
40
+ await TxManager_js_1.default.dryRun(contract.methods.addAdmin(blockchainChain, 0, blockchainSignature), transactionOptions);
41
+ }
42
+ return await TxManager_js_1.default.execute(contract.methods.addAdmin(blockchainChain, 0, blockchainSignature), transactionOptions, AdminCertificateHelper.address);
43
+ }
44
+ static async getSignatureNonce() {
45
+ const contract = this.getContract();
46
+ return Number(await contract.methods.getSignatureNonce().call());
47
+ }
48
+ static async isAdmin(caller) {
49
+ const contract = this.getContract();
50
+ return await contract.methods.isAdmin(caller).call();
51
+ }
52
+ static async getCertVerifier() {
53
+ const contract = this.getContract();
54
+ return await contract.methods.getCertVerifier().call();
55
+ }
56
+ static async getAdminData() {
57
+ const contract = this.getContract();
58
+ const res = (await contract.methods.getAdminData().call());
59
+ const adminRaw = res._admin;
60
+ const certsChainRaw = res._certsChain;
61
+ const rootCertIdRaw = res._rootCertId;
62
+ const certsChain = certsChainRaw.map(AdminCertificateHelper.fromRawBlockchainCert);
63
+ return { admin: adminRaw, certsChain, rootCertId: Number(rootCertIdRaw) };
64
+ }
65
+ static certToRawBLockchainCert(cert) {
66
+ return [
67
+ cert.nonSerializedParts.map(helper_js_1.toBlockchainHex),
68
+ (0, helper_js_1.toBlockchainHex)(cert.expirationDate),
69
+ (0, helper_js_1.toBlockchainHex)(cert.ca),
70
+ (0, helper_js_1.toBlockchainHex)(cert.userData),
71
+ (0, helper_js_1.toBlockchainHex)(cert.publicKey),
72
+ (0, helper_js_1.toBlockchainHex)(cert.serialNumber),
73
+ (0, helper_js_1.toBlockchainHex)(cert.mrEnclave),
74
+ (0, helper_js_1.toBlockchainHex)(cert.mrSigner),
75
+ (0, helper_js_1.toBlockchainHex)(cert.signature),
76
+ ];
77
+ }
78
+ static fromRawBlockchainCert(rawCert) {
79
+ return {
80
+ nonSerializedParts: rawCert.nonSerializedParts.map((part) => (0, helper_js_1.fromBlockchainHex)(part)),
81
+ expirationDate: (0, helper_js_1.fromBlockchainHex)(rawCert.expirationDate),
82
+ ca: (0, helper_js_1.fromBlockchainHex)(rawCert.ca),
83
+ userData: (0, helper_js_1.fromBlockchainHexOptional)(rawCert.userData),
84
+ publicKey: (0, helper_js_1.fromBlockchainHex)(rawCert.publicKey),
85
+ serialNumber: (0, helper_js_1.fromBlockchainHex)(rawCert.serialNumber),
86
+ mrEnclave: (0, helper_js_1.fromBlockchainHexOptional)(rawCert.mrEnclave),
87
+ mrSigner: (0, helper_js_1.fromBlockchainHexOptional)(rawCert.mrSigner),
88
+ signature: (0, helper_js_1.fromBlockchainHex)(rawCert.signature),
89
+ };
90
+ }
91
+ static getContract() {
92
+ if (!this.contractHttps) {
93
+ throw new Error('AdminCertificateHelper is no initialized');
94
+ }
95
+ return this.contractHttps;
96
+ }
97
+ }
98
+ exports.AdminCertificateHelper = AdminCertificateHelper;
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRtaW5DZXJ0aWZpY2F0ZUhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0aWNNb2RlbHMvQWRtaW5DZXJ0aWZpY2F0ZUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSw0RkFBc0Y7QUFDdEYsMkRBQWdDO0FBR2hDLGtEQUs0QjtBQUM1Qix5RUFBOEM7QUFvQjlDLE1BQWEsc0JBQXNCO0lBQ3pCLE1BQU0sQ0FBQyxhQUFhLENBQThDO0lBQ2xFLE1BQU0sQ0FBQyxhQUFhLENBQVU7SUFFL0IsTUFBTSxLQUFLLE9BQU8sQ0FBQyxVQUFrQjtRQUMxQyxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO1FBQ2xELE1BQU0sYUFBYSxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RSxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCO1FBQzdDLElBQUksQ0FBQyxrQkFBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQkFBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLHdEQUF5QixFQUFFLFVBQVUsRUFBRTtZQUM1RixNQUFNLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVNLE1BQU0sS0FBSyxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sc0JBQXNCLENB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
@@ -0,0 +1,61 @@
1
+ import { Contract, TransactionReceipt } from 'web3';
2
+ import { abi } from '../contracts/Campaign.js';
3
+ import { TransactionOptions, BlockInfo, Status, TotalParticipantInfo, ParticipantScore, MigrationNetwork, TokenAmount, MigrationWithIndex } from '../types/index.js';
4
+ declare class Campaign {
5
+ private static _addressHttps;
6
+ private static _addressWss;
7
+ private static contractHttps?;
8
+ private static contractWss?;
9
+ private static readonly logger;
10
+ static get addressHttps(): string;
11
+ static set addressHttps(newAddress: string);
12
+ static createContract(newAddress: string): [Contract<typeof abi>, Contract<typeof abi>];
13
+ static get addressWss(): string;
14
+ static set addressWss(newAddress: string);
15
+ /**
16
+ * Checks if contract has been initialized, if not - initialize contract
17
+ */
18
+ private static checkInit;
19
+ private static getContract;
20
+ static isUniqueSrcAddressByParticipant(participant: string, srcAddress: string, contract?: Contract<typeof abi>): Promise<boolean>;
21
+ static isUniqueDstAddress(dstAddress: string, contract?: Contract<typeof abi>): Promise<boolean>;
22
+ static isUniqueSrcAddress(srcAddress: string, contract?: Contract<typeof abi>): Promise<boolean>;
23
+ static getStat(contract?: Contract<typeof abi>): Promise<{
24
+ totalMigrations: number;
25
+ totalDeployedMigrations: number;
26
+ totalNotDeployedMigrations: number;
27
+ }>;
28
+ static getCompetitionSetup(contract?: Contract<typeof abi>): Promise<{
29
+ claimDateAfter: number;
30
+ notValidBeforeTs: number;
31
+ notValidAfterTs: number;
32
+ }>;
33
+ static getParticipantByRank(rank: number, contract?: Contract<typeof abi>): Promise<ParticipantScore>;
34
+ static getParticipantInfo(participant: string, contract?: Contract<typeof abi>): Promise<TotalParticipantInfo>;
35
+ static getTopParticipantsInfo(count: number, contract?: Contract<typeof abi>): Promise<TotalParticipantInfo[]>;
36
+ static getMigrationRange(from: number, to: number, status: Status, contract?: Contract<typeof abi>): Promise<MigrationWithIndex[]>;
37
+ static getMigrationsByIndexes(indexes: number[], contract?: Contract<typeof abi>): Promise<MigrationWithIndex[]>;
38
+ static contentHashExists(contentHash: string, contract?: Contract<typeof abi>): Promise<boolean>;
39
+ static getTotalParticipants(contract?: Contract<typeof abi>): Promise<number>;
40
+ static getTopParticipants(count: number, contract?: Contract<typeof abi>): Promise<ParticipantScore[]>;
41
+ static getParticipantsAroundRank(centerRank: number, range: number, contract?: Contract<typeof abi>): Promise<ParticipantScore[]>;
42
+ static getParticipantsByRange(startRank: number, endRank: number, contract?: Contract<typeof abi>): Promise<ParticipantScore[]>;
43
+ static getTotalMigrations(contract?: Contract<typeof abi>): Promise<number>;
44
+ static registry(transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
45
+ static submitMigration(srcNetwork: MigrationNetwork, srcAddress: string, dstAddress: string, srcUrl?: string, dstUrl?: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
46
+ static updateMigrationStatusByApp(migrationIndex: number, isDeployed: boolean, transactions: number, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
47
+ static updateMigrationTransactionsByApp(migrationIndex: number, transactions: number, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
48
+ static claimReward(transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
49
+ static grantRole(role: string, account: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
50
+ static onRegisterUser(callback: onRegisterUser): () => void;
51
+ static onMigrationSubmitted(callback: onMigrationSubmittedCallback): () => void;
52
+ static onMigrationStatusUpdated(callback: onMigrationStatusUpdated): () => void;
53
+ static onMigrationTransactionsUpdated(callback: onMigrationTransactionsUpdated): () => void;
54
+ static onRewardClaimed(callback: onRewardClaimed): () => void;
55
+ }
56
+ export type onRegisterUser = (participant: string, block?: BlockInfo) => void;
57
+ export type onMigrationSubmittedCallback = (participant: string, migrationIndex: number, block?: BlockInfo) => void;
58
+ export type onMigrationStatusUpdated = (migrationIndex: number, status: Status, block?: BlockInfo) => void;
59
+ export type onMigrationTransactionsUpdated = (migrationIndex: number, transactions: number, block?: BlockInfo) => void;
60
+ export type onRewardClaimed = (participant: number, amount: TokenAmount, block?: BlockInfo) => void;
61
+ export default Campaign;
@@ -0,0 +1,297 @@
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
+ const web3_1 = require("web3");
7
+ const logger_js_1 = __importDefault(require("../logger.js"));
8
+ const Campaign_js_1 = require("../contracts/Campaign.js");
9
+ const store_js_1 = __importDefault(require("../store.js"));
10
+ const helper_js_1 = require("../utils/helper.js");
11
+ const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
12
+ const index_js_1 = require("../connectors/index.js");
13
+ class Campaign {
14
+ static _addressHttps;
15
+ static _addressWss;
16
+ static contractHttps;
17
+ static contractWss;
18
+ static logger = logger_js_1.default.child({ className: 'Campaign' });
19
+ static get addressHttps() {
20
+ return Campaign._addressHttps;
21
+ }
22
+ static set addressHttps(newAddress) {
23
+ Campaign._addressHttps = newAddress;
24
+ const [contractHttps, contractWss] = Campaign.createContract(newAddress);
25
+ Campaign.contractHttps = contractHttps;
26
+ Campaign.contractWss = contractWss;
27
+ }
28
+ static createContract(newAddress) {
29
+ const httpsContract = new store_js_1.default.web3Https.eth.Contract(Campaign_js_1.abi, newAddress, {
30
+ provider: store_js_1.default.web3Https.currentProvider,
31
+ config: { contractDataInputFill: 'data' },
32
+ });
33
+ const wssContract = new store_js_1.default.web3Wss.eth.Contract(Campaign_js_1.abi, newAddress, {
34
+ provider: store_js_1.default.web3Wss.currentProvider,
35
+ config: { contractDataInputFill: 'data' },
36
+ });
37
+ return [httpsContract, wssContract];
38
+ }
39
+ static get addressWss() {
40
+ return Campaign._addressWss;
41
+ }
42
+ static set addressWss(newAddress) {
43
+ Campaign._addressWss = newAddress;
44
+ }
45
+ /**
46
+ * Checks if contract has been initialized, if not - initialize contract
47
+ */
48
+ static checkInit(wssConnection = false) {
49
+ if (!Campaign.contractHttps) {
50
+ throw Error(`Campaign must be initialized before it can be used`);
51
+ }
52
+ return wssConnection ? Campaign.contractWss : Campaign.contractHttps;
53
+ }
54
+ static getContract(contract) {
55
+ return contract ? contract : Campaign.checkInit();
56
+ }
57
+ static async isUniqueSrcAddressByParticipant(participant, srcAddress, contract) {
58
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract)
59
+ .methods.isUniqueSrcAddressByParticipant(participant, srcAddress)
60
+ .call());
61
+ }
62
+ static async isUniqueDstAddress(dstAddress, contract) {
63
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.isUniqueDstAddress(dstAddress).call());
64
+ }
65
+ static async isUniqueSrcAddress(srcAddress, contract) {
66
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.isUniqueSrcAddress(srcAddress).call());
67
+ }
68
+ static async getStat(contract) {
69
+ const contractResult = await this.getContract(contract).methods.getStat().call();
70
+ const result = {
71
+ totalMigrations: Number(contractResult.totalMigrations),
72
+ totalDeployedMigrations: Number(contractResult._totalDeployedMigrations),
73
+ totalNotDeployedMigrations: Number(contractResult._totalNotDeployedMigrations),
74
+ };
75
+ return result;
76
+ }
77
+ static async getCompetitionSetup(contract) {
78
+ const contractResult = await this.getContract(contract).methods.getCompetitionSetup().call();
79
+ const result = {
80
+ claimDateAfter: Number(contractResult.claimDateAfter),
81
+ notValidBeforeTs: Number(contractResult.notValidBeforeTs),
82
+ notValidAfterTs: Number(contractResult.notValidAfterTs),
83
+ };
84
+ return result;
85
+ }
86
+ static async getParticipantByRank(rank, contract) {
87
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getParticipantByRank(rank).call());
88
+ }
89
+ static async getParticipantInfo(participant, contract) {
90
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getParticipantInfo(participant).call());
91
+ }
92
+ static async getTopParticipantsInfo(count, contract) {
93
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getTopParticipantsInfo(count).call());
94
+ }
95
+ static async getMigrationRange(from, to, status, contract) {
96
+ const contents = (await this.getContract(contract).methods.getMigrationRange(from, to, status).call()).map((migrationWithIndex) => {
97
+ const migration = (0, helper_js_1.cleanWeb3Data)(migrationWithIndex.migration);
98
+ const cleanedContentWithIndex = {
99
+ migration: {
100
+ ...migration,
101
+ status: Number(migration.status),
102
+ },
103
+ index: Number(migrationWithIndex.index),
104
+ };
105
+ return cleanedContentWithIndex;
106
+ });
107
+ return contents;
108
+ }
109
+ static async getMigrationsByIndexes(indexes, contract) {
110
+ const contents = (await this.getContract(contract).methods.getMigrationsByIndexes(indexes).call()).map((migrationWithIndex) => {
111
+ const migration = (0, helper_js_1.cleanWeb3Data)(migrationWithIndex.migration);
112
+ const cleanedContentWithIndex = {
113
+ migration: {
114
+ ...migration,
115
+ status: Number(migration.status),
116
+ },
117
+ index: Number(migrationWithIndex.index),
118
+ };
119
+ return cleanedContentWithIndex;
120
+ });
121
+ return contents;
122
+ }
123
+ static async contentHashExists(contentHash, contract) {
124
+ return await this.getContract(contract).methods.contentHashExists(contentHash).call();
125
+ }
126
+ static async getTotalParticipants(contract) {
127
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getTotalParticipants().call());
128
+ }
129
+ static async getTopParticipants(count, contract) {
130
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getTopParticipants(count).call());
131
+ }
132
+ static async getParticipantsAroundRank(centerRank, range, contract) {
133
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getParticipantsAroundRank(centerRank, range).call());
134
+ }
135
+ static async getParticipantsByRange(startRank, endRank, contract) {
136
+ return (0, helper_js_1.cleanWeb3Data)(await this.getContract(contract).methods.getParticipantsByRange(startRank, endRank).call());
137
+ }
138
+ static async getTotalMigrations(contract) {
139
+ return Number(await this.getContract(contract).methods.getTotalMigrations().call());
140
+ }
141
+ static async registry(transactionOptions, checkTxBeforeSend = false) {
142
+ const contract = this.checkInit();
143
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
144
+ if (checkTxBeforeSend) {
145
+ await TxManager_js_1.default.dryRun(contract.methods.registry(), transactionOptions);
146
+ }
147
+ return await TxManager_js_1.default.execute(contract.methods.registry(), transactionOptions, Campaign.addressHttps);
148
+ }
149
+ static async submitMigration(srcNetwork, srcAddress, dstAddress, srcUrl = '', dstUrl = '', transactionOptions, checkTxBeforeSend = false) {
150
+ const contract = this.checkInit();
151
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
152
+ if (checkTxBeforeSend) {
153
+ await TxManager_js_1.default.dryRun(contract.methods.submitMigration(srcNetwork, srcAddress, dstAddress, srcUrl, dstUrl), transactionOptions);
154
+ }
155
+ return await TxManager_js_1.default.execute(contract.methods.submitMigration(srcNetwork, srcAddress, dstAddress, srcUrl, dstUrl), transactionOptions, Campaign.addressHttps);
156
+ }
157
+ static async updateMigrationStatusByApp(migrationIndex, isDeployed, transactions, transactionOptions, checkTxBeforeSend = false) {
158
+ const contract = this.checkInit();
159
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
160
+ if (checkTxBeforeSend) {
161
+ await TxManager_js_1.default.dryRun(contract.methods.updateMigrationStatusByApp(migrationIndex, isDeployed, transactions), transactionOptions);
162
+ }
163
+ return await TxManager_js_1.default.execute(contract.methods.updateMigrationStatusByApp(migrationIndex, isDeployed, transactions), transactionOptions, Campaign.addressHttps);
164
+ }
165
+ static async updateMigrationTransactionsByApp(migrationIndex, transactions, transactionOptions, checkTxBeforeSend = false) {
166
+ const contract = this.checkInit();
167
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
168
+ if (checkTxBeforeSend) {
169
+ await TxManager_js_1.default.dryRun(contract.methods.updateMigrationTransactionsByApp(migrationIndex, transactions), transactionOptions);
170
+ }
171
+ return await TxManager_js_1.default.execute(contract.methods.updateMigrationTransactionsByApp(migrationIndex, transactions), transactionOptions, Campaign.addressHttps);
172
+ }
173
+ static async claimReward(transactionOptions, checkTxBeforeSend = false) {
174
+ const contract = this.checkInit();
175
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
176
+ if (checkTxBeforeSend) {
177
+ await TxManager_js_1.default.dryRun(contract.methods.claimReward(), transactionOptions);
178
+ }
179
+ return await TxManager_js_1.default.execute(contract.methods.claimReward(), transactionOptions, Campaign.addressHttps);
180
+ }
181
+ static async grantRole(role, account, transactionOptions, checkTxBeforeSend = false) {
182
+ const contract = this.checkInit();
183
+ (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
184
+ role = web3_1.utils.keccak256(role);
185
+ if (checkTxBeforeSend) {
186
+ await TxManager_js_1.default.dryRun(contract.methods.grantRole(role, account), transactionOptions);
187
+ }
188
+ return await TxManager_js_1.default.execute(contract.methods.grantRole(role, account), transactionOptions, Campaign.addressHttps);
189
+ }
190
+ static onRegisterUser(callback) {
191
+ const listener = index_js_1.BlockchainEventsListener.getInstance();
192
+ const logger = this.logger.child({ method: 'onRegisterUser' });
193
+ const onData = (event) => {
194
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(event.returnValues);
195
+ callback(parsedEvent.participant, {
196
+ index: Number(event.blockNumber),
197
+ hash: event.blockHash,
198
+ });
199
+ };
200
+ const onError = (error) => {
201
+ logger.warn(error);
202
+ };
203
+ const contract = this.checkInit(true);
204
+ return listener.subscribeEvent({
205
+ onError,
206
+ onData,
207
+ event: 'ParticipantRegistered',
208
+ contract: contract,
209
+ });
210
+ }
211
+ static onMigrationSubmitted(callback) {
212
+ const listener = index_js_1.BlockchainEventsListener.getInstance();
213
+ const logger = this.logger.child({ method: 'onMigrationSubmitted' });
214
+ const onData = (event) => {
215
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(event.returnValues);
216
+ callback(parsedEvent.participant, parsedEvent.migrationIndex, {
217
+ index: Number(event.blockNumber),
218
+ hash: event.blockHash,
219
+ });
220
+ };
221
+ const onError = (error) => {
222
+ logger.warn(error);
223
+ };
224
+ const contract = this.checkInit(true);
225
+ return listener.subscribeEvent({
226
+ onError,
227
+ onData,
228
+ event: 'MigrationSubmitted',
229
+ contract: contract,
230
+ });
231
+ }
232
+ static onMigrationStatusUpdated(callback) {
233
+ const listener = index_js_1.BlockchainEventsListener.getInstance();
234
+ const logger = this.logger.child({ method: 'onMigrationStatusUpdated' });
235
+ const onData = (event) => {
236
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(event.returnValues);
237
+ callback(parsedEvent.migrationIndex, parsedEvent.status, {
238
+ index: Number(event.blockNumber),
239
+ hash: event.blockHash,
240
+ });
241
+ };
242
+ const onError = (error) => {
243
+ logger.warn(error);
244
+ };
245
+ const contract = this.checkInit(true);
246
+ return listener.subscribeEvent({
247
+ onError,
248
+ onData,
249
+ event: 'MigrationStatusUpdated',
250
+ contract: contract,
251
+ });
252
+ }
253
+ static onMigrationTransactionsUpdated(callback) {
254
+ const listener = index_js_1.BlockchainEventsListener.getInstance();
255
+ const logger = this.logger.child({ method: 'onMigrationTransactionsUpdated' });
256
+ const onData = (event) => {
257
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(event.returnValues);
258
+ callback(parsedEvent.migrationIndex, parsedEvent.transactions, {
259
+ index: Number(event.blockNumber),
260
+ hash: event.blockHash,
261
+ });
262
+ };
263
+ const onError = (error) => {
264
+ logger.warn(error);
265
+ };
266
+ const contract = this.checkInit(true);
267
+ return listener.subscribeEvent({
268
+ onError,
269
+ onData,
270
+ event: 'MigrationTransactionsUpdated',
271
+ contract: contract,
272
+ });
273
+ }
274
+ static onRewardClaimed(callback) {
275
+ const listener = index_js_1.BlockchainEventsListener.getInstance();
276
+ const logger = this.logger.child({ method: 'onRewardClaimed' });
277
+ const onData = (event) => {
278
+ const parsedEvent = (0, helper_js_1.cleanWeb3Data)(event.returnValues);
279
+ callback(parsedEvent.participant, parsedEvent.amount, {
280
+ index: Number(event.blockNumber),
281
+ hash: event.blockHash,
282
+ });
283
+ };
284
+ const onError = (error) => {
285
+ logger.warn(error);
286
+ };
287
+ const contract = this.checkInit(true);
288
+ return listener.subscribeEvent({
289
+ onError,
290
+ onData,
291
+ event: 'RewardClaimed',
292
+ contract: contract,
293
+ });
294
+ }
295
+ }
296
+ exports.default = Campaign;
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtcGFpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL0NhbXBhaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTJEO0FBQzNELDZEQUFzQztBQUN0QywwREFBK0M7QUFDL0MsMkRBQWdDO0FBQ2hDLGtEQUFvRjtBQVlwRix5RUFBOEM7QUFDOUMscURBQWtFO0FBTWxFLE1BQU0sUUFBUTtJQUNKLE1BQU0sQ0FBQyxhQUFhLENBQVM7SUFDN0IsTUFBTSxDQUFDLFdBQVcsQ0FBUztJQUMzQixNQUFNLENBQUMsYUFBYSxDQUF3QjtJQUM1QyxNQUFNLENBQUMsV0FBVyxDQUF3QjtJQUMxQyxNQUFNLENBQVUsTUFBTSxHQUFHLG1CQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEUsTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxNQUFNLEtBQUssWUFBWSxDQUFDLFVBQWtCO1FBQy9DLFFBQVEsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RSxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUN2QyxRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQjtRQUM3QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGtCQUFLLENBQUMsU0FBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQUcsRUFBRSxVQUFVLEVBQUU7WUFDdkUsUUFBUSxFQUFFLGtCQUFLLENBQUMsU0FBVSxDQUFDLGVBQWU7WUFDMUMsTUFBTSxFQUFFLEVBQUUscUJBQXFC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
@@ -38,7 +38,6 @@ declare class Offers implements StaticModel {
38
38
  offerInfo: OfferInfo;
39
39
  externalId?: string;
40
40
  enabled?: boolean;
41
- offerActionAccount?: string;
42
41
  transactionOptions?: TransactionOptions;
43
42
  }): Promise<BlockchainId>;
44
43
  static getByExternalId(filter: {
@@ -12,7 +12,6 @@ const Superpro_js_1 = __importDefault(require("./Superpro.js"));
12
12
  const TxManager_js_1 = __importDefault(require("../utils/TxManager.js"));
13
13
  const index_js_2 = require("../connectors/index.js");
14
14
  const OffersCommon_js_1 = __importDefault(require("./OffersCommon.js"));
15
- const ethers_1 = require("ethers");
16
15
  class Offers {
17
16
  static logger = logger_js_1.default.child({ className: 'Offers' });
18
17
  static get address() {
@@ -72,7 +71,7 @@ class Offers {
72
71
  * @returns Promise that resolves when offer is created
73
72
  */
74
73
  static async create(params) {
75
- const { providerAuthorityAccount, offerInfo, externalId = 'default', enabled = false, offerActionAccount, transactionOptions, } = params;
74
+ const { providerAuthorityAccount, offerInfo, externalId = 'default', enabled = false, transactionOptions, } = params;
76
75
  const contract = index_js_2.BlockchainConnector.getInstance().getContract();
77
76
  (0, helper_js_1.checkIfActionAccountInitialized)(transactionOptions);
78
77
  const formattedExternalId = (0, utils_js_1.formatBytes32String)(externalId);
@@ -89,7 +88,6 @@ class Offers {
89
88
  offerType: offerType,
90
89
  providerAuth: providerAuthorityAccount,
91
90
  enabled,
92
- offerActionAccount: offerActionAccount ?? ethers_1.ethers.constants.AddressZero,
93
91
  };
94
92
  const newOfferId = await StaticModel_js_1.default.createEntity({
95
93
  txExecutorCallback: async () => {
@@ -252,4 +250,4 @@ class Offers {
252
250
  }
253
251
  }
254
252
  exports.default = Offers;
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBc0M7QUFDdEMsc0VBQTJDO0FBQzNDLGtEQUFvRjtBQUNwRixrREFBeUY7QUFDekYsZ0RBWTJCO0FBQzNCLGdFQUFxQztBQUNyQyx5RUFBOEM7QUFDOUMscURBQXVGO0FBTXZGLHdFQUE2QztBQUM3QyxtQ0FBZ0M7QUFFaEMsTUFBTSxNQUFNO0lBQ0YsTUFBTSxDQUFVLE1BQU0sR0FBRyxtQkFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sS0FBSyxPQUFPO1FBQ2hCLE9BQU8scUJBQVEsQ0FBQyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0seUJBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0MsT0FBTyxNQUFNO2FBQ1YsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLG9CQUFTLENBQUMsUUFBUSxDQUFDO2FBQ3BELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQXFCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLDhCQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7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
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRpY01vZGVscy9PZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2REFBc0M7QUFDdEMsc0VBQTJDO0FBQzNDLGtEQUFvRjtBQUNwRixrREFBeUY7QUFDekYsZ0RBWTJCO0FBQzNCLGdFQUFxQztBQUNyQyx5RUFBOEM7QUFDOUMscURBQXVGO0FBTXZGLHdFQUE2QztBQUU3QyxNQUFNLE1BQU07SUFDRixNQUFNLENBQVUsTUFBTSxHQUFHLG1CQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTyxxQkFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU07UUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSx5QkFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQyxPQUFPLE1BQU07YUFDVixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssb0JBQVMsQ0FBQyxRQUFRLENBQUM7YUFDcEQsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBcUI7UUFDN0MsTUFBTSxRQUFRLEdBQUcsOEJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakUsT0FBTyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNILE1B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