wan-ton-sdk 0.0.6

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 (119) hide show
  1. package/Bridge.compile.ts +8 -0
  2. package/Bridge.ts +645 -0
  3. package/Bridge.ts.org +647 -0
  4. package/Fake.compile.ts +8 -0
  5. package/GroupApprove.compile.ts +6 -0
  6. package/GroupApprove.ts +274 -0
  7. package/JettonMinter.compile.ts +5 -0
  8. package/JettonMinter.ts +135 -0
  9. package/JettonWallet.compile.ts +5 -0
  10. package/JettonWallet.ts +127 -0
  11. package/README.md +24 -0
  12. package/Signature.compile.ts +6 -0
  13. package/Signature.ts +105 -0
  14. package/address.compile.ts +8 -0
  15. package/client/1.json +1730 -0
  16. package/client/client.ts +73 -0
  17. package/client/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  18. package/client/log/wan-ton-sdk.out.2024-12-19 +0 -0
  19. package/code/decode.spec.ts +81 -0
  20. package/code/encode-decode.ts +622 -0
  21. package/code/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
  22. package/code/log/wan-ton-sdk.out.2025-01-15 +0 -0
  23. package/code/log/wan-ton-sdk.out.2025-01-20 +0 -0
  24. package/code/userLock.ts +291 -0
  25. package/common.ts +62 -0
  26. package/config/config-ex.ts +25 -0
  27. package/config/config.ts +1 -0
  28. package/const/const-value.ts +33 -0
  29. package/contractAccess/bridgeAccess.ts +60 -0
  30. package/contractAccess/groupApproveAccess.ts +59 -0
  31. package/data/EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs.json +7348 -0
  32. package/db/Db.spec.ts +193 -0
  33. package/db/Db.ts +736 -0
  34. package/db/DbAccess.spec.ts +23 -0
  35. package/db/DbAccess.ts +174 -0
  36. package/db/common.ts +94 -0
  37. package/db/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  38. package/db/log/wan-ton-sdk.out.2025-04-21 +0 -0
  39. package/event/getEvents.ts +441 -0
  40. package/event/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  41. package/event/log/wan-ton-sdk.out.2024-12-19 +0 -0
  42. package/example/0:1.txt +1 -0
  43. package/example/AddToken-ex.ts +148 -0
  44. package/example/README.md +21 -0
  45. package/example/addSmg-ex.ts +78 -0
  46. package/example/addTokenPair-ex.ts +73 -0
  47. package/example/compileContract-ex.ts +10 -0
  48. package/example/converTranToTonTran.ts +43 -0
  49. package/example/createDb-ex.ts +8 -0
  50. package/example/dbFeedTrans-ex.ts +20 -0
  51. package/example/delTokenPair-ex.ts +63 -0
  52. package/example/deploy-ex.ts +68 -0
  53. package/example/getAllEvents-ex.ts +61 -0
  54. package/example/getAllTrans.ts +32 -0
  55. package/example/getContractState-ex.ts +33 -0
  56. package/example/getEventByHash-ex.ts +39 -0
  57. package/example/getEvents-ex.ts +55 -0
  58. package/example/getJettonInfo-ex.ts +44 -0
  59. package/example/getTokenPair-ex.ts +47 -0
  60. package/example/getTransByRange-ex.ts +81 -0
  61. package/example/getTransaction-ex.ts +62 -0
  62. package/example/isTranSuccess-ex.ts +33 -0
  63. package/example/locateTx-ex.ts +44 -0
  64. package/example/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +55 -0
  65. package/example/log/wan-ton-sdk.out.2025-04-21 +447 -0
  66. package/example/log/wan-ton-sdk.out.2025-04-22 +1918 -0
  67. package/example/log/wan-ton-sdk.out.2025-04-23 +4216 -0
  68. package/example/log/wan-ton-sdk.out.2025-04-24.gz +0 -0
  69. package/example/log/wan-ton-sdk.out.2025-04-25 +46814 -0
  70. package/example/log/wan-ton-sdk.out.2025-04-27.gz +0 -0
  71. package/example/log/wan-ton-sdk.out.2025-04-28 +4966 -0
  72. package/example/log/wan-ton-sdk.out.2025-04-29 +1328 -0
  73. package/example/log/wan-ton-sdk.out.2025-04-30 +9 -0
  74. package/example/mintToken-ex.ts +82 -0
  75. package/example/setFee-ex.ts +82 -0
  76. package/example/setFeeProxy.ts +70 -0
  77. package/example/smgRelease-ex.ts +173 -0
  78. package/example/upgradeBridgeSc-ex.ts +49 -0
  79. package/example/userLock-ex.ts +78 -0
  80. package/fee/fee.ts +23 -0
  81. package/index.ts +67 -0
  82. package/jest.config.ts +9 -0
  83. package/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
  84. package/log/wan-ton-sdk.out.2025-04-21 +0 -0
  85. package/log/wan-ton-sdk.out.2025-04-30 +10 -0
  86. package/opcodes.ts +58 -0
  87. package/package.json +34 -0
  88. package/publish.sh +78 -0
  89. package/sign/buildHash.ts +47 -0
  90. package/sign/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  91. package/sign/log/wan-ton-sdk.out.2025-04-14 +3 -0
  92. package/sign/rawTrans.spec.ts +117 -0
  93. package/sign/rawTrans.ts +122 -0
  94. package/sign/tools-secp256k1.js +210 -0
  95. package/testData/JettonMinter.compile.func.ts +8 -0
  96. package/testData/JettonWallet.compile.func.ts +8 -0
  97. package/testData/addressList.json +6 -0
  98. package/testData/bridge.compile.func.ts +8 -0
  99. package/testData/bridge.compiled.json +1 -0
  100. package/testData/contractAddress.json +7 -0
  101. package/testData/jettonTokenInfo.json +14 -0
  102. package/testData/prvlist.json +6 -0
  103. package/testData/smg.json +5 -0
  104. package/testData/tokenInfo.json +23 -0
  105. package/transResult/transResult.ts +621 -0
  106. package/tsconfig.json +19 -0
  107. package/utils/.compiled.json +1 -0
  108. package/utils/compileContract.ts +60 -0
  109. package/utils/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  110. package/utils/log/wan-ton-sdk.out.2025-01-08 +0 -0
  111. package/utils/logger.spec.ts +14 -0
  112. package/utils/logger.ts +96 -0
  113. package/utils/utils.spec.ts +21 -0
  114. package/utils/utils.ts +295 -0
  115. package/wallet/balance.ts +29 -0
  116. package/wallet/jetton.spec.ts +27 -0
  117. package/wallet/jetton.ts +159 -0
  118. package/wallet/walletContract.spec.ts +111 -0
  119. package/wallet/walletContract.ts +105 -0
@@ -0,0 +1,47 @@
1
+ import {configTestnet,configMainnet} from "../config/config-ex";
2
+
3
+ import {TON_COIN_ACCOUT, BIP44_CHAINID} from '../const/const-value';
4
+
5
+ import {getWalletByPrvKey} from "../wallet/walletContract";
6
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
7
+
8
+ let args = process.argv.slice(2);
9
+ let tokenPairId=args[0];
10
+ const prvList = require('../testData/prvlist')
11
+
12
+ let deployer =null,smgFeeProxy=null,oracleAdmin = null,robotAdmin = null;
13
+ let client = null;
14
+
15
+ const scAddresses = require('../testData/contractAddress.json');
16
+ import { BridgeAccess } from "../contractAccess/bridgeAccess";
17
+
18
+ async function init(){
19
+ await wanTonSdkInit(configMainnet);
20
+ await wanTonSdkInit(configTestnet);
21
+ deployer = await getWalletByPrvKey(Buffer.from(prvList[0],'hex'));
22
+ smgFeeProxy = deployer;
23
+ oracleAdmin = deployer;
24
+ robotAdmin = deployer;
25
+ client = await getClient();
26
+ console.log("client=>",client);
27
+ }
28
+
29
+
30
+ async function getTokenPair(){
31
+ // read contract
32
+ let ba = BridgeAccess.create(client,scAddresses.bridgeAddress);
33
+ console.log("bridgeAddess =>",scAddresses.bridgeAddress);
34
+ let ret = await ba.readContract('getTokenPair',[tokenPairId])
35
+ console.log("getTokenPair=>", ret);
36
+ }
37
+
38
+ async function main(){
39
+ console.log("Entering main function");
40
+ await init();
41
+ await getTokenPair();
42
+ };
43
+
44
+ main();
45
+ // ts-node getTokenPair-ex.ts 941
46
+ // ts-node getTokenPair-ex.ts 939
47
+ // ts-node getTokenPair-ex.ts 940
@@ -0,0 +1,81 @@
1
+ import {formatError, sleep} from "../utils/utils";
2
+
3
+ import {configTestnet,configMainnet} from "../config/config-ex";
4
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
5
+ import {getEventByTranHash, getEvents, getTransaction} from "../event/getEvents";
6
+ import { logger } from "../utils/logger";
7
+ import {Address} from "@ton/core";
8
+ import {CommonMessageInfoInternal} from "@ton/core/src/types/CommonMessageInfo";
9
+
10
+ const args = process.argv.slice(2);
11
+
12
+ async function main(){
13
+ try{
14
+ await wanTonSdkInit(configMainnet);
15
+ await wanTonSdkInit(configTestnet);
16
+ let client = await getClient();
17
+ let scBridgeAddr = args[0];
18
+ let lt = args[1];
19
+ let to_lt:string = args[2];
20
+ let hash:string = '';
21
+ if(args[3] && args[3].length != 0){
22
+ hash = Buffer.from(args[3],'hex').toString('base64');
23
+ }
24
+
25
+ let opts = {
26
+ limit:10,lt,to_lt,hash,archival:true
27
+ }
28
+ let trans = await client.getTransactions(Address.parse(scBridgeAddr),opts)
29
+
30
+ for(let tran of trans){
31
+ console.log("txHash",tran.hash().toString('hex'),"lt",tran.lt.toString(10));
32
+ }
33
+
34
+ client = null;
35
+ }catch(err){
36
+ console.error(formatError(err))
37
+ }
38
+
39
+ }
40
+
41
+ main();
42
+ // ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr <lt> <to_lt>
43
+ // ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33315421000001 33315399000001
44
+
45
+ //===========================
46
+ // all data
47
+ // txHash d736f95ca13f3996ea9b2845e2c4a5ee006dd4cef9b5b9e157ce17afac162278 lt 33575480000001
48
+ // txHash eb9aa12ef19e8d002cd4f31570b2baaf78abcd8805394b9cbbb87e270dc66cdf lt 33569263000001
49
+ // txHash 20d9edb7bce69613e2c4b7132c2135c238da39187f5a6fafaccbcb32c55f1b05 lt 33540621000001
50
+ // txHash de83f2ce8ff82ba64c2d98d8d29a8d65d86b50a515cf13ab0e43ce148ef40974 lt 33503753000001
51
+ // txHash 1403f17162199c475ca71a190ab3255da1e5ebafdd67fdaaca5e2ff63f66478c lt 33503457000001
52
+ // txHash 05daacf6fe56349b70509805eefe81afed95ab8a5413ac3c655a2308f5863d59 lt 33503157000001
53
+ // txHash a2cb94e69f32c03e635a60a384b293450fd38af0c1a43232e9fd00bce5c11e14 lt 33502935000001
54
+ // txHash d195f8f1840584887bd8606dae9fd24804c646c33dd703037e52da709f3ef53a lt 33502857000001
55
+ // txHash 9bf198f751fffb7a3bb8c6522937cb1866b9a4f2ac842138e488e8d8e41e67e7 lt 33498115000001
56
+ // txHash 5e654b1798cca9b63adcb8091b0962b364581538bc4431449f9e9c674bb0d5f6 lt 33315421000001
57
+
58
+ // ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33498115000001 0
59
+ // [33315421000001,33575480000001]
60
+ // why ? should [33498115000001,33575480000001]
61
+ // rpc cache?
62
+
63
+ //ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 0 33498115000001
64
+ // [33502857000001,33575480000001] = (33498115000001,33575480000001]
65
+ // *******
66
+ // **to_lt and lt are all scan latest txs to to_lt|lt, the differt, (to_lt,latest], [lt,latest]
67
+ // *******
68
+
69
+ // ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33498115000001 33502857000001
70
+ // (33502857000001,33575480000001]
71
+
72
+
73
+ // ts-node getTransByRange-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33502857000001 33498115000001
74
+ // [33502857000001,33575480000001]
75
+
76
+
77
+ // *******
78
+ // ** <bigger> <smaller> [bigger,latest]
79
+ // ** <smaller> <bigger> (bigger,latest]
80
+
81
+ // *******
@@ -0,0 +1,62 @@
1
+ import {bigIntToBytes32, sleep} from "../utils/utils";
2
+
3
+ import {configTestnet,configMainnet} from "../config/config-ex";
4
+
5
+ import {getClient, TonClientConfig, TonConfig, TonUrlConfig, wanTonSdkInit} from "../client/client";
6
+ import {getEventByTranHash, getEvents, getTransaction, getTransactionFromDb} from "../event/getEvents";
7
+ import { logger } from "../utils/logger";
8
+
9
+ const args = process.argv.slice(2);
10
+
11
+ async function main(){
12
+ try{
13
+
14
+ //await wanTonSdkInit(configTestnet);
15
+ await wanTonSdkInit(configMainnet);
16
+ //await wanTonSdkInit(configTestnet);
17
+
18
+ let client = await getClient();
19
+ let scBridgeAddr = args[0];
20
+ let lt = args[1];
21
+ let tranHash = Buffer.from(args[2],'hex').toString('base64');
22
+
23
+ console.log("scBridgeAddr",scBridgeAddr,"lt",lt,"tranHash",tranHash);
24
+ //let ret = await getTransaction(client,scBridgeAddr,lt,tranHash);
25
+ //let ret = await getTransaction(client,scBridgeAddr,lt,args[2]);
26
+ console.log(".......args=",args);
27
+
28
+ //let ret = await getTransactionFromDb(client,scBridgeAddr,lt,args[2]);
29
+ let ret = await getTransaction(client,scBridgeAddr,lt,args[2]);
30
+ console.log("ret = ",ret);
31
+
32
+ console.log(ret.prevTransactionLt.toString(10),ret.prevTransactionHash.toString(16))
33
+
34
+ let base64Str = Buffer.from(ret.prevTransactionHash.toString(16),'hex').toString('base64');
35
+ console.log(base64Str);
36
+
37
+ console.log(Buffer.from(base64Str,'base64').toString('hex'));
38
+
39
+ console.log(Buffer.from(ret.prevTransactionHash.toString(16),'hex').toString('hex'));
40
+
41
+ console.log("hex",bigIntToBytes32(ret.prevTransactionHash).toString('hex'));
42
+ console.log("base64",bigIntToBytes32(ret.prevTransactionHash).toString('base64'));
43
+
44
+
45
+ client = null;
46
+ }catch(err){
47
+ console.error(err.code,err.response?.data?.error)
48
+ }
49
+
50
+ }
51
+
52
+ main();
53
+
54
+ // mainnet
55
+ // ts-node getTransaction-ex.ts EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs 56510003000001 fEULm54qtjiWNCWgqPuik7rnVg8TxFjgrEwkaGIeqAw= //mainnet
56
+
57
+ // testnet
58
+ // ts-node getTransaction-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33028010000001 61ec9d0be00c8f65a8e84b1a13121d8fbd826cf7777f856bc5f72381bf6b2257
59
+ // ts-node getTransaction-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33028010000003 07e8eb174f5298fe02a7c8a68e3bb3197d2232c287fccbc0deebc44b1334a723
60
+ // ts-node getTransaction-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33313091000003 095015c23c8323af4b7c20b9bd35b2864aa2a4fbaa85335828fa63bccbfdaeff
61
+
62
+ // ts-node getTransaction-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33891688000001 0759391fa78661e683e21db834a71588b9020f0ad04a490c53544e6349ef4d09
@@ -0,0 +1,33 @@
1
+ import {sleep} from "../utils/utils";
2
+
3
+ import {configTestnet,configMainnet} from "../config/config-ex";
4
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
5
+ import {getEventByTranHash, getEvents, getTransaction} from "../event/getEvents";
6
+ import { logger } from "../utils/logger";
7
+ import {isTranSuccess} from "../transResult/transResult";
8
+
9
+ const args = process.argv.slice(2);
10
+
11
+ async function main(){
12
+ try{
13
+ await wanTonSdkInit(configMainnet);
14
+ await wanTonSdkInit(configTestnet);
15
+ let client = await getClient();
16
+ let scBridgeAddr = args[0];
17
+ let lt = args[1];
18
+ let tranHash = Buffer.from(args[2],'hex').toString('base64');
19
+
20
+ console.log("scBridgeAddr",scBridgeAddr,"lt",lt,"tranHash",tranHash);
21
+ let tran = await getTransaction(client,scBridgeAddr,lt,tranHash);
22
+ let ret = await isTranSuccess(tran);
23
+ console.log("ret = ",ret);
24
+ client = null;
25
+ }catch(err){
26
+ console.error(err.code,err.response?.data?.error)
27
+ }
28
+
29
+ }
30
+
31
+ main();
32
+
33
+ // ts-node isTranSuccess-ex.ts EQCABVjsQnmRELMK6vjwGbYNRzHXoTd2hvSX6v_VmVrrJNjW 33028013000001 f0f311fecb1775047c741a25b6b714026cd4336d987a956fa7363ad7bec7cab4
@@ -0,0 +1,44 @@
1
+ import {sleep} from "../utils/utils";
2
+
3
+ import {configTestnet,configMainnet} from "../config/config-ex";
4
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
5
+ import {getEventByTranHash, getEvents, getTransaction} from "../event/getEvents";
6
+ import { logger } from "../utils/logger";
7
+ import {Address} from "@ton/core";
8
+ import {CommonMessageInfoInternal} from "@ton/core/src/types/CommonMessageInfo";
9
+
10
+ const args = process.argv.slice(2);
11
+
12
+ async function main(){
13
+ try{
14
+ await wanTonSdkInit(configMainnet);
15
+ await wanTonSdkInit(configTestnet);
16
+ let client = await getClient();
17
+ let scBridgeAddr = args[0];
18
+ let lt = args[1];
19
+ let tranHash = Buffer.from(args[2],'hex').toString('base64');
20
+
21
+ console.log("scBridgeAddr",scBridgeAddr,"lt",lt,"tranHash",tranHash);
22
+ let tran = await getTransaction(client,scBridgeAddr,lt,tranHash);
23
+ console.log("tran=>",tran);
24
+
25
+ for(let key of tran.outMessages.keys()){
26
+ let outMsg = tran.outMessages[key];
27
+ let resultTx = await client.tryLocateResultTx(outMsg.info.src,outMsg.info.dest,outMsg.info.createdLt.toString(10));
28
+ console.log("=======resultTx",resultTx);
29
+ }
30
+
31
+ let inMsg = tran.inMessage;
32
+ let srcTx = await client.tryLocateSourceTx(inMsg.info.src as unknown as Address,inMsg.info.dest as unknown as Address,(inMsg.info as unknown as CommonMessageInfoInternal).createdLt.toString(10))
33
+ console.log("=======source tx",srcTx);
34
+
35
+ client = null;
36
+ }catch(err){
37
+ console.error(err.code,err.response?.data?.error)
38
+ }
39
+
40
+ }
41
+
42
+ main();
43
+
44
+ // ts-node locateTx-ex.ts kQDlYDH0PmST2okwTluXJ2mUDMDCzPzXF1gGz24U6H2tE9Wr 33315399000001 dd22c46a31a348d5ff0b77bb0191b915549af7c450ab905390b3e7d8e6981c32
@@ -0,0 +1,55 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 10
5
+ },
6
+ "auditLog": "log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1745205069363,
10
+ "name": "log/wan-ton-sdk.out.2025-04-21",
11
+ "hash": "ffb0670de5def8313bd46e219be4e46cf03485f8f7efe3b369d2625961020ce2"
12
+ },
13
+ {
14
+ "date": 1745288116035,
15
+ "name": "log/wan-ton-sdk.out.2025-04-22",
16
+ "hash": "1ad3d7e92d176e913f2a104b3a0507e2dacf84b585f55d923bbc344d8f443d48"
17
+ },
18
+ {
19
+ "date": 1745378268756,
20
+ "name": "log/wan-ton-sdk.out.2025-04-23",
21
+ "hash": "82eeac32aba20882c1bfb396d6390ee1149f006510ee4cf65f218d76c33a3b64"
22
+ },
23
+ {
24
+ "date": 1745461531949,
25
+ "name": "log/wan-ton-sdk.out.2025-04-24",
26
+ "hash": "24d47e045e7291db54b365223a70ddb5fcdb71995f0f9e2c413776eb66835fe9"
27
+ },
28
+ {
29
+ "date": 1745510400488,
30
+ "name": "log/wan-ton-sdk.out.2025-04-25",
31
+ "hash": "5fffed31a28543804de97b6347bb5c50ab017a62ea7f38c6c074207e540609f2"
32
+ },
33
+ {
34
+ "date": 1745720387193,
35
+ "name": "log/wan-ton-sdk.out.2025-04-27",
36
+ "hash": "c81ce09355283d373d5ce8ff3e0a7ce8d9ff7a0852af93806b197acd24032c0e"
37
+ },
38
+ {
39
+ "date": 1745769605827,
40
+ "name": "log/wan-ton-sdk.out.2025-04-28",
41
+ "hash": "7401705078143c8bc19b131d7d875298f23441552ccc85715ad739751e36206a"
42
+ },
43
+ {
44
+ "date": 1745894247963,
45
+ "name": "log/wan-ton-sdk.out.2025-04-29",
46
+ "hash": "f8b632baad9901690098678419843734f62166e7ec71d2a5e06b9c71e0b759df"
47
+ },
48
+ {
49
+ "date": 1745984594845,
50
+ "name": "log/wan-ton-sdk.out.2025-04-30",
51
+ "hash": "16007dfc4b90a77595eed88a5b3b860fef5eada8539eac35675d48d0e47f8f36"
52
+ }
53
+ ],
54
+ "hashType": "sha256"
55
+ }