@aurigami/sdk 0.6.7 → 0.7.0
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.
- package/dist/MoneyMarket.d.ts +1 -4
- package/dist/constants.d.ts +0 -1
- package/dist/sdk.cjs.development.js +78 -80
- package/dist/sdk.cjs.development.js.map +1 -1
- package/dist/sdk.cjs.production.min.js +1 -1
- package/dist/sdk.cjs.production.min.js.map +1 -1
- package/dist/sdk.esm.js +78 -80
- package/dist/sdk.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/MoneyMarket.ts +11 -21
- package/src/SDK.ts +2 -3
- package/src/constants.ts +21 -30
- package/src/decimals.ts +14 -13
- package/src/deployments/aurora_mainnet.json +28 -18
- package/src/deployments/aurora_testnet.json +28 -27
- package/src/priceFetcher.ts +1 -1
package/dist/MoneyMarket.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockchainEntity, BlockchainEntityRead } from './BlockchainEntity';
|
|
2
2
|
import { MoneyMarketDetails, NetworkConnection, Address } from './types';
|
|
3
3
|
import { BigNumber as BN } from 'ethers';
|
|
4
|
-
import { AuErc20, AuETH, AuriLens, Comptroller
|
|
4
|
+
import { AuErc20, AuETH, AuriLens, Comptroller } from "@aurigami/contracts/typechain";
|
|
5
5
|
import { TransactionResponse } from '@ethersproject/abstract-provider';
|
|
6
6
|
import BigNumber from "bignumber.js";
|
|
7
7
|
import { Token } from './token';
|
|
@@ -31,8 +31,6 @@ export declare class MoneyMarketRead extends BlockchainEntityRead {
|
|
|
31
31
|
getUserDepositBalance(userAddress: string): Promise<TokenAmount>;
|
|
32
32
|
}
|
|
33
33
|
export declare class MoneyMarketReadWrite extends MoneyMarketRead {
|
|
34
|
-
protected _EthRepayHelper: EthRepayHelper;
|
|
35
|
-
constructor(networkConnection: NetworkConnection, auToken: Address, underlyingAsset: Address);
|
|
36
34
|
deposit(amount: TokenAmount): Promise<TransactionResponse>;
|
|
37
35
|
borrow(amount: TokenAmount): Promise<TransactionResponse>;
|
|
38
36
|
withdraw(amount: TokenAmount): Promise<TransactionResponse>;
|
|
@@ -45,6 +43,5 @@ export declare class MoneyMarket extends BlockchainEntity {
|
|
|
45
43
|
protected underlying: Address;
|
|
46
44
|
constructor(address: string, underlying: string);
|
|
47
45
|
read(networkConnection: NetworkConnection): MoneyMarketRead;
|
|
48
|
-
readWrite(networkConnection: NetworkConnection): MoneyMarketReadWrite;
|
|
49
46
|
}
|
|
50
47
|
export {};
|
package/dist/constants.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ var AuErc20ABI = _interopDefault(require('@aurigami/contracts/artifacts/contract
|
|
|
12
12
|
var AuETHABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuETH.sol/AuETH.json'));
|
|
13
13
|
var ComptrollerABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/Comptroller.sol/Comptroller.json'));
|
|
14
14
|
var AuriLensABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriLens.sol/AuriLens.json'));
|
|
15
|
-
var EthRepayHelperABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/EthRepayHelper.sol/EthRepayHelper.json'));
|
|
16
15
|
var axios = _interopDefault(require('axios'));
|
|
17
16
|
var TokenLockABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/TokenLock.sol/TokenLock.json'));
|
|
18
17
|
var AuriFairLaunchABI = _interopDefault(require('@aurigami/contracts/artifacts/contracts/AuriFairLaunch.sol/AuriFairLaunch.json'));
|
|
@@ -920,46 +919,38 @@ var AURORA_CHAINID = 1313161554;
|
|
|
920
919
|
var DECIMAL_PRECISION = 10;
|
|
921
920
|
var networkAddresses = {
|
|
922
921
|
auTokens: [{
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
underlying: /*#__PURE__*/'0xe1Db3E2f129539b2399d8Cd9e808305c85f0c82f'.toLowerCase()
|
|
922
|
+
address: /*#__PURE__*/'0x7D9F7B4734E274Ff10531bBD5aE8fE6069164d28'.toLowerCase(),
|
|
923
|
+
underlying: /*#__PURE__*/'0xb12bfca5a55806aaf64e99521918a4bf0fc40802'.toLowerCase()
|
|
926
924
|
}, {
|
|
927
|
-
|
|
928
|
-
address: /*#__PURE__*/'0x0e2E6069231928429F36dCA288466bC738e602b3'.toLowerCase(),
|
|
925
|
+
address: /*#__PURE__*/'0x580Ac375176A4e9B26977490656c3B2F00Abf624'.toLowerCase(),
|
|
929
926
|
underlying: /*#__PURE__*/ETHAddress.toLowerCase()
|
|
930
927
|
}, {
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
underlying: /*#__PURE__*/'0xA69506eAbdC11BBdAf2259882A02a91B66E6d7E1'.toLowerCase()
|
|
928
|
+
address: /*#__PURE__*/'0x705b9d83222c4EeDeaD1A0E399cDeB917173E1F6'.toLowerCase(),
|
|
929
|
+
underlying: /*#__PURE__*/'0xf4eb217ba2454613b15dbdea6e5f22276410e89e'.toLowerCase()
|
|
934
930
|
}, {
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
underlying: /*#__PURE__*/'0x4459ED2dEFFe0569AE748aD5D7cFEFDeeF667E87'.toLowerCase()
|
|
931
|
+
address: /*#__PURE__*/'0xF9739783b767b358b21A1373140296c09271d6F5'.toLowerCase(),
|
|
932
|
+
underlying: /*#__PURE__*/'0x4988a896b1227218e4a686fde5eabdcabd91571f'.toLowerCase()
|
|
938
933
|
}, {
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
underlying: /*#__PURE__*/'0x1c9998C7768517b83136d3b237a31bc69eDc9028'.toLowerCase()
|
|
934
|
+
address: /*#__PURE__*/'0x4d2c286D74597B13642dd311D1050dFf9E7eF666'.toLowerCase(),
|
|
935
|
+
underlying: /*#__PURE__*/'0xe3520349f477a5f6eb06107066048508498a291b'.toLowerCase()
|
|
942
936
|
}, {
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
underlying: /*#__PURE__*/'0x3cD388c98FE71fE1a37272279F4b50bF27037E23'.toLowerCase()
|
|
937
|
+
address: /*#__PURE__*/'0x367E3fD10006bC64D279e5F1F499DcfA92518A35'.toLowerCase(),
|
|
938
|
+
underlying: /*#__PURE__*/'0x07a4f270836F2B2B5CACb00b09552e690276aC33'.toLowerCase()
|
|
946
939
|
}, {
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
underlying: /*#__PURE__*/'0x01B2EDff9b095DC270beca46E2eFB41a3ecEE169'.toLowerCase()
|
|
940
|
+
address: /*#__PURE__*/'0x7FDe6C1C53DD4E94a8CD4c60BF1418613c90c42F'.toLowerCase(),
|
|
941
|
+
underlying: /*#__PURE__*/'0xC42C30aC6Cc15faC9bD938618BcaA1a1FaE8501d'.toLowerCase()
|
|
950
942
|
}],
|
|
951
943
|
misc: {
|
|
952
|
-
COMPTROLLER: /*#__PURE__*/"
|
|
953
|
-
oracle: /*#__PURE__*/"
|
|
954
|
-
AURIFAIRLAUNCH: /*#__PURE__*/"
|
|
955
|
-
AURILENS: /*#__PURE__*/'
|
|
956
|
-
TOKENLOCK: /*#__PURE__*/'
|
|
957
|
-
FAUCET: /*#__PURE__*/
|
|
958
|
-
ETHREPAYHELPER: /*#__PURE__*/"0x0b28E2F1767623f2D5Cd59165e79f83E3D63b71F".toLowerCase()
|
|
944
|
+
COMPTROLLER: /*#__PURE__*/"0xc77877b0bd08fE3B060EbD8AEE06fb560C91A125".toLowerCase(),
|
|
945
|
+
oracle: /*#__PURE__*/"0xde76c82a6F99D25bEd226af44cF427e57dE8eE93".toLowerCase(),
|
|
946
|
+
AURIFAIRLAUNCH: /*#__PURE__*/"0x660159696c9E0B2c17E3e0ac2019F436aE34fc7A".toLowerCase(),
|
|
947
|
+
AURILENS: /*#__PURE__*/'0x503bD4B6a056F7E66671D2B4620f0aDC4ff2A4e9'.toLowerCase(),
|
|
948
|
+
TOKENLOCK: /*#__PURE__*/'0xa4623FC7C96B59f9a0a46144324d68C8E8710966'.toLowerCase(),
|
|
949
|
+
FAUCET: /*#__PURE__*/'0x8F791d611D71699B76C03857A51D7B7E5E66f01E'.toLowerCase()
|
|
959
950
|
},
|
|
960
951
|
tokens: {
|
|
961
|
-
AURORA: /*#__PURE__*/
|
|
962
|
-
PLY: /*#__PURE__*/"
|
|
952
|
+
AURORA: /*#__PURE__*/"0x8bec47865ade3b172a928df8f990bc7f2a3b9f79".toLowerCase(),
|
|
953
|
+
PLY: /*#__PURE__*/"0x07a4f270836F2B2B5CACb00b09552e690276aC33".toLowerCase(),
|
|
963
954
|
AURPLY: /*#__PURE__*/dummyAddress.toLowerCase()
|
|
964
955
|
}
|
|
965
956
|
};
|
|
@@ -972,19 +963,20 @@ var INF = /*#__PURE__*/ethers.BigNumber.from(2).pow(256).sub(1);
|
|
|
972
963
|
|
|
973
964
|
var decimalRecords = {
|
|
974
965
|
'0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee': 18,
|
|
975
|
-
'
|
|
976
|
-
'
|
|
977
|
-
'
|
|
978
|
-
'
|
|
979
|
-
'
|
|
980
|
-
'
|
|
981
|
-
'
|
|
982
|
-
'
|
|
983
|
-
'
|
|
984
|
-
'
|
|
985
|
-
'
|
|
986
|
-
'
|
|
987
|
-
'
|
|
966
|
+
'0x8bec47865ade3b172a928df8f990bc7f2a3b9f79': 18,
|
|
967
|
+
'0x4988a896b1227218e4a686fde5eabdcabd91571f': 6,
|
|
968
|
+
'0xb12bfca5a55806aaf64e99521918a4bf0fc40802': 6,
|
|
969
|
+
'0x7fde6c1c53dd4e94a8cd4c60bf1418613c90c42f': 8,
|
|
970
|
+
'0xe3520349f477a5f6eb06107066048508498a291b': 18,
|
|
971
|
+
'0xf9739783b767b358b21a1373140296c09271d6f5': 8,
|
|
972
|
+
'0x07a4f270836f2b2b5cacb00b09552e690276ac33': 18,
|
|
973
|
+
'0xf4eb217ba2454613b15dbdea6e5f22276410e89e': 8,
|
|
974
|
+
'0x705b9d83222c4eedead1a0e399cdeb917173e1f6': 8,
|
|
975
|
+
'0x367e3fd10006bc64d279e5f1f499dcfa92518a35': 8,
|
|
976
|
+
'0x580ac375176a4e9b26977490656c3b2f00abf624': 8,
|
|
977
|
+
'0x4d2c286d74597b13642dd311d1050dff9e7ef666': 8,
|
|
978
|
+
'0x7d9f7b4734e274ff10531bbd5ae8fe6069164d28': 8,
|
|
979
|
+
'0xc42c30ac6cc15fac9bd938618bcaa1a1fae8501d': 24
|
|
988
980
|
};
|
|
989
981
|
|
|
990
982
|
function formatObject(object) {
|
|
@@ -2275,7 +2267,7 @@ function _fetchPrice() {
|
|
|
2275
2267
|
return _context7.abrupt("return", fetchPriceFromOracle(matchingAuToken.address, getDecimal(address), provider));
|
|
2276
2268
|
|
|
2277
2269
|
case 7:
|
|
2278
|
-
if (!isSameAddress(address, networkAddresses.
|
|
2270
|
+
if (!isSameAddress(address, networkAddresses.misc.AUPLYLP)) {
|
|
2279
2271
|
_context7.next = 11;
|
|
2280
2272
|
break;
|
|
2281
2273
|
}
|
|
@@ -2646,8 +2638,24 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
2646
2638
|
return Promise.all(promises);
|
|
2647
2639
|
|
|
2648
2640
|
case 11:
|
|
2649
|
-
|
|
2650
|
-
|
|
2641
|
+
_context9.t0 = calcLMRewardApr;
|
|
2642
|
+
_context9.next = 14;
|
|
2643
|
+
return calcValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardBorrowSpeed.toString()), plyPrice);
|
|
2644
|
+
|
|
2645
|
+
case 14:
|
|
2646
|
+
_context9.t1 = _context9.sent;
|
|
2647
|
+
_context9.t2 = underlyingPrice.multipliedBy(totalBorrowed.formattedAmount());
|
|
2648
|
+
_context9.t3 = ONE_YEAR;
|
|
2649
|
+
borrowPlyApy = (0, _context9.t0)(_context9.t1, _context9.t2, _context9.t3);
|
|
2650
|
+
_context9.t4 = calcLMRewardApr;
|
|
2651
|
+
_context9.next = 21;
|
|
2652
|
+
return calcValuation(new TokenAmount(PLYToken, rewardSpeeds.plyRewardSupplySpeed.toString()), plyPrice);
|
|
2653
|
+
|
|
2654
|
+
case 21:
|
|
2655
|
+
_context9.t5 = _context9.sent;
|
|
2656
|
+
_context9.t6 = underlyingPrice.multipliedBy(totalDeposited.formattedAmount());
|
|
2657
|
+
_context9.t7 = ONE_YEAR;
|
|
2658
|
+
depositPlyApy = (0, _context9.t4)(_context9.t5, _context9.t6, _context9.t7);
|
|
2651
2659
|
return _context9.abrupt("return", {
|
|
2652
2660
|
auTokenAddress: this.auToken.address,
|
|
2653
2661
|
totalTokenDeposited: totalDeposited,
|
|
@@ -2659,7 +2667,7 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
2659
2667
|
collateralRatio: collateralRatio
|
|
2660
2668
|
});
|
|
2661
2669
|
|
|
2662
|
-
case
|
|
2670
|
+
case 26:
|
|
2663
2671
|
case "end":
|
|
2664
2672
|
return _context9.stop();
|
|
2665
2673
|
}
|
|
@@ -2737,12 +2745,8 @@ var MoneyMarketRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
2737
2745
|
var MoneyMarketReadWrite = /*#__PURE__*/function (_MoneyMarketRead) {
|
|
2738
2746
|
_inheritsLoose(MoneyMarketReadWrite, _MoneyMarketRead);
|
|
2739
2747
|
|
|
2740
|
-
function MoneyMarketReadWrite(
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
_this3 = _MoneyMarketRead.call(this, networkConnection, auToken, underlyingAsset) || this;
|
|
2744
|
-
_this3._EthRepayHelper = new ethers.Contract(networkAddresses.misc.ETHREPAYHELPER, EthRepayHelperABI.abi, networkConnection.provider);
|
|
2745
|
-
return _this3;
|
|
2748
|
+
function MoneyMarketReadWrite() {
|
|
2749
|
+
return _MoneyMarketRead.apply(this, arguments) || this;
|
|
2746
2750
|
}
|
|
2747
2751
|
|
|
2748
2752
|
var _proto2 = MoneyMarketReadWrite.prototype;
|
|
@@ -2836,31 +2840,30 @@ var MoneyMarketReadWrite = /*#__PURE__*/function (_MoneyMarketRead) {
|
|
|
2836
2840
|
|
|
2837
2841
|
_proto2.repay = /*#__PURE__*/function () {
|
|
2838
2842
|
var _repay = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee15(amount) {
|
|
2843
|
+
var repayAmount;
|
|
2839
2844
|
return runtime_1.wrap(function _callee15$(_context15) {
|
|
2840
2845
|
while (1) {
|
|
2841
2846
|
switch (_context15.prev = _context15.next) {
|
|
2842
2847
|
case 0:
|
|
2843
|
-
if (
|
|
2844
|
-
|
|
2845
|
-
|
|
2848
|
+
if (new BigNumber(amount.rawAmount()).lt(0)) {
|
|
2849
|
+
repayAmount = INF;
|
|
2850
|
+
} else {
|
|
2851
|
+
repayAmount = ethers.BigNumber.from(amount.rawAmount());
|
|
2846
2852
|
}
|
|
2847
2853
|
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
}));
|
|
2851
|
-
|
|
2852
|
-
case 4:
|
|
2853
|
-
if (!new BigNumber(amount.rawAmount()).lt(0)) {
|
|
2854
|
-
_context15.next = 8;
|
|
2854
|
+
if (!isSameAddress(amount.token.address, ETHAddress)) {
|
|
2855
|
+
_context15.next = 5;
|
|
2855
2856
|
break;
|
|
2856
2857
|
}
|
|
2857
2858
|
|
|
2858
|
-
return _context15.abrupt("return", this.auToken.connect(this._networkConnection.signer).repayBorrow(
|
|
2859
|
+
return _context15.abrupt("return", this.auToken.connect(this._networkConnection.signer).repayBorrow({
|
|
2860
|
+
value: repayAmount
|
|
2861
|
+
}));
|
|
2859
2862
|
|
|
2860
|
-
case
|
|
2861
|
-
return _context15.abrupt("return", this.auToken.connect(this._networkConnection.signer).repayBorrow(
|
|
2863
|
+
case 5:
|
|
2864
|
+
return _context15.abrupt("return", this.auToken.connect(this._networkConnection.signer).repayBorrow(repayAmount));
|
|
2862
2865
|
|
|
2863
|
-
case
|
|
2866
|
+
case 6:
|
|
2864
2867
|
case "end":
|
|
2865
2868
|
return _context15.stop();
|
|
2866
2869
|
}
|
|
@@ -2927,12 +2930,12 @@ var MoneyMarket = /*#__PURE__*/function (_BlockchainEntity) {
|
|
|
2927
2930
|
_inheritsLoose(MoneyMarket, _BlockchainEntity);
|
|
2928
2931
|
|
|
2929
2932
|
function MoneyMarket(address, underlying) {
|
|
2930
|
-
var
|
|
2933
|
+
var _this3;
|
|
2931
2934
|
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
return
|
|
2935
|
+
_this3 = _BlockchainEntity.call(this) || this;
|
|
2936
|
+
_this3.address = validateAndParseAddress(address);
|
|
2937
|
+
_this3.underlying = validateAndParseAddress(underlying);
|
|
2938
|
+
return _this3;
|
|
2936
2939
|
}
|
|
2937
2940
|
|
|
2938
2941
|
var _proto3 = MoneyMarket.prototype;
|
|
@@ -2941,10 +2944,6 @@ var MoneyMarket = /*#__PURE__*/function (_BlockchainEntity) {
|
|
|
2941
2944
|
return new MoneyMarketRead(networkConnection, this.address, this.underlying);
|
|
2942
2945
|
};
|
|
2943
2946
|
|
|
2944
|
-
_proto3.readWrite = function readWrite(networkConnection) {
|
|
2945
|
-
return new MoneyMarketReadWrite(networkConnection, this.address, this.underlying);
|
|
2946
|
-
};
|
|
2947
|
-
|
|
2948
2947
|
return MoneyMarket;
|
|
2949
2948
|
}(BlockchainEntity);
|
|
2950
2949
|
|
|
@@ -3017,7 +3016,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
3017
3016
|
var _getUserDetails = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(userAddress) {
|
|
3018
3017
|
var _this2 = this;
|
|
3019
3018
|
|
|
3020
|
-
var marketCount, userMarketDetails, assetsIn, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValues, _loop, i, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, minimumBorrowLimitAllowed, borrowableAmount, auToken, moneyMarket,
|
|
3019
|
+
var marketCount, userMarketDetails, assetsIn, promises, totalBorrowLimit, pricePromises, _loop2, _iterator, _step, underlyingPrices, depositValues, _loop, i, accountLiquidity, rewardBalancesMetadata, lockedAmount, values, borrowedvaluation, bufferedBorrowLimit, minimumBorrowLimitAllowed, borrowableAmount, auToken, moneyMarket, maxWithdrawCap;
|
|
3021
3020
|
|
|
3022
3021
|
return runtime_1.wrap(function _callee2$(_context2) {
|
|
3023
3022
|
while (1) {
|
|
@@ -3126,8 +3125,7 @@ var SdkRead = /*#__PURE__*/function (_BlockchainEntityRead) {
|
|
|
3126
3125
|
for (i = 0; i < marketCount; i++) {
|
|
3127
3126
|
auToken = networkAddresses.auTokens[i];
|
|
3128
3127
|
moneyMarket = new MoneyMarketRead(this._networkConnection, auToken.address, auToken.underlying);
|
|
3129
|
-
|
|
3130
|
-
maxWithdrawCap = borrowLimitMargin.div(userMarketDetails[i].collateralRatio).div(underlyingPrices[i]);
|
|
3128
|
+
maxWithdrawCap = totalBorrowLimit.minus(minimumBorrowLimitAllowed).div(userMarketDetails[i].collateralRatio).div(underlyingPrices[i]);
|
|
3131
3129
|
userMarketDetails[i].maxWithdrawableAmount = userMarketDetails[i].isCollateral && maxWithdrawCap.lt(userMarketDetails[i].depositBalance.formattedAmount()) ? new TokenAmount(moneyMarket.underlying, maxWithdrawCap.toFixed(24), false) : new TokenAmount(moneyMarket.underlying, userMarketDetails[i].depositBalance.rawAmount());
|
|
3132
3130
|
}
|
|
3133
3131
|
|
|
@@ -3346,7 +3344,7 @@ var SdkReadWrite = /*#__PURE__*/function (_SdkRead) {
|
|
|
3346
3344
|
while (1) {
|
|
3347
3345
|
switch (_context7.prev = _context7.next) {
|
|
3348
3346
|
case 0:
|
|
3349
|
-
return _context7.abrupt("return", this._auriFairLaunch.connect(this._networkConnection.signer).deposit(AurPlyPid, amount.rawAmount()));
|
|
3347
|
+
return _context7.abrupt("return", this._auriFairLaunch.connect(this._networkConnection.signer).deposit(AurPlyPid, amount.rawAmount(), false));
|
|
3350
3348
|
|
|
3351
3349
|
case 1:
|
|
3352
3350
|
case "end":
|