@meterio/sumer-js 0.2.32 → 0.2.34

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 (53) hide show
  1. package/dist/browser/sumer.min.js +8 -8
  2. package/dist/nodejs/abi.d.ts +94 -3
  3. package/dist/nodejs/abi.js +15565 -12023
  4. package/dist/nodejs/abi.js.map +1 -1
  5. package/dist/nodejs/constants/metertest.js +1 -1
  6. package/dist/nodejs/errorABIs.js +994 -135
  7. package/dist/nodejs/errorABIs.js.map +1 -1
  8. package/dist/nodejs/index.d.ts +94 -3
  9. package/dist/nodejs/typechain/contracts/CToken/CErc20.d.ts +5 -1
  10. package/dist/nodejs/typechain/contracts/CToken/CEther.d.ts +5 -1
  11. package/dist/nodejs/typechain/contracts/CToken/CToken.d.ts +5 -1
  12. package/dist/nodejs/typechain/contracts/CToken/CTokenStorage.d.ts +5 -1
  13. package/dist/nodejs/typechain/contracts/CToken/SuErc20.d.ts +5 -1
  14. package/dist/nodejs/typechain/contracts/Comptroller/CompLogic.d.ts +23 -1
  15. package/dist/nodejs/typechain/contracts/Comptroller/CompoundLens.d.ts +5 -1
  16. package/dist/nodejs/typechain/contracts/Comptroller/Comptroller.d.ts +23 -1
  17. package/dist/nodejs/typechain/contracts/Interfaces/ICompLogic.d.ts +19 -1
  18. package/dist/nodejs/typechain/factories/contracts/CToken/CErc20__factory.d.ts +11 -1
  19. package/dist/nodejs/typechain/factories/contracts/CToken/CErc20__factory.js +14 -1
  20. package/dist/nodejs/typechain/factories/contracts/CToken/CErc20__factory.js.map +1 -1
  21. package/dist/nodejs/typechain/factories/contracts/CToken/CEther__factory.d.ts +11 -1
  22. package/dist/nodejs/typechain/factories/contracts/CToken/CEther__factory.js +14 -1
  23. package/dist/nodejs/typechain/factories/contracts/CToken/CEther__factory.js.map +1 -1
  24. package/dist/nodejs/typechain/factories/contracts/CToken/CTokenStorage__factory.d.ts +10 -0
  25. package/dist/nodejs/typechain/factories/contracts/CToken/CTokenStorage__factory.js +13 -0
  26. package/dist/nodejs/typechain/factories/contracts/CToken/CTokenStorage__factory.js.map +1 -1
  27. package/dist/nodejs/typechain/factories/contracts/CToken/CToken__factory.d.ts +10 -0
  28. package/dist/nodejs/typechain/factories/contracts/CToken/CToken__factory.js +13 -0
  29. package/dist/nodejs/typechain/factories/contracts/CToken/CToken__factory.js.map +1 -1
  30. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.d.ts +11 -1
  31. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.js +14 -1
  32. package/dist/nodejs/typechain/factories/contracts/CToken/SuErc20__factory.js.map +1 -1
  33. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompLogic__factory.d.ts +373 -1
  34. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompLogic__factory.js +470 -1
  35. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompLogic__factory.js.map +1 -1
  36. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.d.ts +11 -1
  37. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.js +14 -1
  38. package/dist/nodejs/typechain/factories/contracts/Comptroller/CompoundLens__factory.js.map +1 -1
  39. package/dist/nodejs/typechain/factories/contracts/Comptroller/ComptrollerStorage__factory.d.ts +1 -1
  40. package/dist/nodejs/typechain/factories/contracts/Comptroller/ComptrollerStorage__factory.js +1 -1
  41. package/dist/nodejs/typechain/factories/contracts/Comptroller/Comptroller__factory.d.ts +37 -1
  42. package/dist/nodejs/typechain/factories/contracts/Comptroller/Comptroller__factory.js +48 -1
  43. package/dist/nodejs/typechain/factories/contracts/Comptroller/Comptroller__factory.js.map +1 -1
  44. package/dist/nodejs/typechain/factories/contracts/Comptroller/RedemptionManager__factory.d.ts +1 -1
  45. package/dist/nodejs/typechain/factories/contracts/Comptroller/RedemptionManager__factory.js +1 -1
  46. package/dist/nodejs/typechain/factories/contracts/Comptroller/SortedBorrows__factory.d.ts +1 -1
  47. package/dist/nodejs/typechain/factories/contracts/Comptroller/SortedBorrows__factory.js +1 -1
  48. package/dist/nodejs/typechain/factories/contracts/Interfaces/ICompLogic__factory.d.ts +26 -0
  49. package/dist/nodejs/typechain/factories/contracts/Interfaces/ICompLogic__factory.js +34 -0
  50. package/dist/nodejs/typechain/factories/contracts/Interfaces/ICompLogic__factory.js.map +1 -1
  51. package/dist/nodejs/typechain/factories/contracts/Timelock__factory.d.ts +1 -1
  52. package/dist/nodejs/typechain/factories/contracts/Timelock__factory.js +1 -1
  53. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
2
2
  import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common";
3
3
  export interface CTokenStorageInterface extends Interface {
4
- getFunction(nameOrSignature: "_acceptAdmin" | "_reduceReserves" | "_setComptroller" | "_setDiscountRate" | "_setInterestRateModel" | "_setPendingAdmin" | "_setReserveFactor" | "accrualBlockNumber" | "accrueInterest" | "admin" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrowBalanceCurrent" | "borrowBalanceStored" | "borrowIndex" | "borrowRatePerBlock" | "comptroller" | "decimals" | "discountRateMantissa" | "exchangeRateCurrent" | "exchangeRateStored" | "getAccountSnapshot" | "getCash" | "interestRateModel" | "isCEtherDeprecated" | "isCTokenDeprecated" | "name" | "pendingAdmin" | "protocolSeizeShareMantissa" | "reserveFactorMantissa" | "seize" | "supplyRatePerBlock" | "symbol" | "totalBorrows" | "totalBorrowsCurrent" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying" | "underlyingBalance"): FunctionFragment;
4
+ getFunction(nameOrSignature: "_acceptAdmin" | "_reduceReserves" | "_setComptroller" | "_setDiscountRate" | "_setInterestRateModel" | "_setPendingAdmin" | "_setReserveFactor" | "accrualBlockNumber" | "accrueInterest" | "admin" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrowBalanceCurrent" | "borrowBalanceStored" | "borrowIndex" | "borrowRatePerBlock" | "comptroller" | "decimals" | "discountRateMantissa" | "exchangeRateCurrent" | "exchangeRateStored" | "getAccountSnapshot" | "getCash" | "interestRateModel" | "isCEtherDeprecated" | "isCTokenDeprecated" | "name" | "pendingAdmin" | "percentScale" | "protocolSeizeShareMantissa" | "reserveFactorMantissa" | "seize" | "supplyRatePerBlock" | "symbol" | "totalBorrows" | "totalBorrowsCurrent" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying" | "underlyingBalance"): FunctionFragment;
5
5
  encodeFunctionData(functionFragment: "_acceptAdmin", values?: undefined): string;
6
6
  encodeFunctionData(functionFragment: "_reduceReserves", values: [BigNumberish]): string;
7
7
  encodeFunctionData(functionFragment: "_setComptroller", values: [AddressLike]): string;
@@ -32,6 +32,7 @@ export interface CTokenStorageInterface extends Interface {
32
32
  encodeFunctionData(functionFragment: "isCTokenDeprecated", values?: undefined): string;
33
33
  encodeFunctionData(functionFragment: "name", values?: undefined): string;
34
34
  encodeFunctionData(functionFragment: "pendingAdmin", values?: undefined): string;
35
+ encodeFunctionData(functionFragment: "percentScale", values?: undefined): string;
35
36
  encodeFunctionData(functionFragment: "protocolSeizeShareMantissa", values?: undefined): string;
36
37
  encodeFunctionData(functionFragment: "reserveFactorMantissa", values?: undefined): string;
37
38
  encodeFunctionData(functionFragment: "seize", values: [
@@ -82,6 +83,7 @@ export interface CTokenStorageInterface extends Interface {
82
83
  decodeFunctionResult(functionFragment: "isCTokenDeprecated", data: BytesLike): Result;
83
84
  decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
84
85
  decodeFunctionResult(functionFragment: "pendingAdmin", data: BytesLike): Result;
86
+ decodeFunctionResult(functionFragment: "percentScale", data: BytesLike): Result;
85
87
  decodeFunctionResult(functionFragment: "protocolSeizeShareMantissa", data: BytesLike): Result;
86
88
  decodeFunctionResult(functionFragment: "reserveFactorMantissa", data: BytesLike): Result;
87
89
  decodeFunctionResult(functionFragment: "seize", data: BytesLike): Result;
@@ -189,6 +191,7 @@ export interface CTokenStorage extends BaseContract {
189
191
  isCTokenDeprecated: TypedContractMethod<[], [boolean], "view">;
190
192
  name: TypedContractMethod<[], [string], "view">;
191
193
  pendingAdmin: TypedContractMethod<[], [string], "view">;
194
+ percentScale: TypedContractMethod<[], [bigint], "view">;
192
195
  protocolSeizeShareMantissa: TypedContractMethod<[], [bigint], "view">;
193
196
  reserveFactorMantissa: TypedContractMethod<[], [bigint], "view">;
194
197
  seize: TypedContractMethod<[
@@ -283,6 +286,7 @@ export interface CTokenStorage extends BaseContract {
283
286
  getFunction(nameOrSignature: "isCTokenDeprecated"): TypedContractMethod<[], [boolean], "view">;
284
287
  getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">;
285
288
  getFunction(nameOrSignature: "pendingAdmin"): TypedContractMethod<[], [string], "view">;
289
+ getFunction(nameOrSignature: "percentScale"): TypedContractMethod<[], [bigint], "view">;
286
290
  getFunction(nameOrSignature: "protocolSeizeShareMantissa"): TypedContractMethod<[], [bigint], "view">;
287
291
  getFunction(nameOrSignature: "reserveFactorMantissa"): TypedContractMethod<[], [bigint], "view">;
288
292
  getFunction(nameOrSignature: "seize"): TypedContractMethod<[
@@ -14,7 +14,7 @@ export declare namespace CTokenStorage {
14
14
  };
15
15
  }
16
16
  export interface SuErc20Interface extends Interface {
17
- getFunction(nameOrSignature: "_acceptAdmin" | "_addReserves" | "_reduceReserves" | "_setComptroller" | "_setDiscountRate" | "_setInterestRateModel" | "_setPendingAdmin" | "_setReserveFactor" | "_syncUnderlyingBalance" | "accrualBlockNumber" | "accrueInterest" | "admin" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrow" | "borrowAndDepositBack" | "borrowBalanceCurrent" | "borrowBalanceStored" | "borrowIndex" | "borrowRatePerBlock" | "comptroller" | "decimals" | "discountRateMantissa" | "exchangeRateCurrent" | "exchangeRateStored" | "executeRedemption" | "getAccountSnapshot" | "getBorrowSnapshot" | "getCash" | "initialize" | "interestRateModel" | "isCEther" | "isCEtherDeprecated" | "isCToken" | "isCTokenDeprecated" | "isDeprecated" | "liquidateBorrow" | "liquidateCalculateSeizeTokens" | "mint" | "mintWithPermit" | "name" | "pendingAdmin" | "protectedMint" | "protocolSeizeShareMantissa" | "redeem" | "redeemUnderlying" | "repayBorrow" | "repayBorrowBehalf" | "repayBorrowWithPermit" | "reserveFactorMantissa" | "seize" | "supplyRatePerBlock" | "sweepToken" | "symbol" | "totalBorrows" | "totalBorrowsCurrent" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying" | "underlyingBalance"): FunctionFragment;
17
+ getFunction(nameOrSignature: "_acceptAdmin" | "_addReserves" | "_reduceReserves" | "_setComptroller" | "_setDiscountRate" | "_setInterestRateModel" | "_setPendingAdmin" | "_setReserveFactor" | "_syncUnderlyingBalance" | "accrualBlockNumber" | "accrueInterest" | "admin" | "allowance" | "approve" | "balanceOf" | "balanceOfUnderlying" | "borrow" | "borrowAndDepositBack" | "borrowBalanceCurrent" | "borrowBalanceStored" | "borrowIndex" | "borrowRatePerBlock" | "comptroller" | "decimals" | "discountRateMantissa" | "exchangeRateCurrent" | "exchangeRateStored" | "executeRedemption" | "getAccountSnapshot" | "getBorrowSnapshot" | "getCash" | "initialize" | "interestRateModel" | "isCEther" | "isCEtherDeprecated" | "isCToken" | "isCTokenDeprecated" | "isDeprecated" | "liquidateBorrow" | "liquidateCalculateSeizeTokens" | "mint" | "mintWithPermit" | "name" | "pendingAdmin" | "percentScale" | "protectedMint" | "protocolSeizeShareMantissa" | "redeem" | "redeemUnderlying" | "repayBorrow" | "repayBorrowBehalf" | "repayBorrowWithPermit" | "reserveFactorMantissa" | "seize" | "supplyRatePerBlock" | "sweepToken" | "symbol" | "totalBorrows" | "totalBorrowsCurrent" | "totalReserves" | "totalSupply" | "transfer" | "transferFrom" | "underlying" | "underlyingBalance"): FunctionFragment;
18
18
  getEvent(nameOrSignatureOrTopic: "AccrueInterest" | "Approval" | "Borrow" | "Initialized" | "LiquidateBorrow" | "Mint" | "NewAdmin" | "NewComptroller" | "NewDiscountRate" | "NewMarketInterestRateModel" | "NewPendingAdmin" | "NewReserveFactor" | "Redeem" | "RedeemFaceValue" | "RepayBorrow" | "ReservesAdded" | "ReservesReduced" | "Transfer"): EventFragment;
19
19
  encodeFunctionData(functionFragment: "_acceptAdmin", values?: undefined): string;
20
20
  encodeFunctionData(functionFragment: "_addReserves", values: [BigNumberish]): string;
@@ -76,6 +76,7 @@ export interface SuErc20Interface extends Interface {
76
76
  encodeFunctionData(functionFragment: "mintWithPermit", values: [BigNumberish, BigNumberish, BytesLike]): string;
77
77
  encodeFunctionData(functionFragment: "name", values?: undefined): string;
78
78
  encodeFunctionData(functionFragment: "pendingAdmin", values?: undefined): string;
79
+ encodeFunctionData(functionFragment: "percentScale", values?: undefined): string;
79
80
  encodeFunctionData(functionFragment: "protectedMint", values: [AddressLike, BigNumberish, BigNumberish]): string;
80
81
  encodeFunctionData(functionFragment: "protocolSeizeShareMantissa", values?: undefined): string;
81
82
  encodeFunctionData(functionFragment: "redeem", values: [BigNumberish]): string;
@@ -147,6 +148,7 @@ export interface SuErc20Interface extends Interface {
147
148
  decodeFunctionResult(functionFragment: "mintWithPermit", data: BytesLike): Result;
148
149
  decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
149
150
  decodeFunctionResult(functionFragment: "pendingAdmin", data: BytesLike): Result;
151
+ decodeFunctionResult(functionFragment: "percentScale", data: BytesLike): Result;
150
152
  decodeFunctionResult(functionFragment: "protectedMint", data: BytesLike): Result;
151
153
  decodeFunctionResult(functionFragment: "protocolSeizeShareMantissa", data: BytesLike): Result;
152
154
  decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result;
@@ -686,6 +688,7 @@ export interface SuErc20 extends BaseContract {
686
688
  ], "nonpayable">;
687
689
  name: TypedContractMethod<[], [string], "view">;
688
690
  pendingAdmin: TypedContractMethod<[], [string], "view">;
691
+ percentScale: TypedContractMethod<[], [bigint], "view">;
689
692
  protectedMint: TypedContractMethod<[
690
693
  cTokenCollateral: AddressLike,
691
694
  cBorrowAmount: BigNumberish,
@@ -876,6 +879,7 @@ export interface SuErc20 extends BaseContract {
876
879
  ], "nonpayable">;
877
880
  getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">;
878
881
  getFunction(nameOrSignature: "pendingAdmin"): TypedContractMethod<[], [string], "view">;
882
+ getFunction(nameOrSignature: "percentScale"): TypedContractMethod<[], [bigint], "view">;
879
883
  getFunction(nameOrSignature: "protectedMint"): TypedContractMethod<[
880
884
  cTokenCollateral: AddressLike,
881
885
  cBorrowAmount: BigNumberish,
@@ -9,7 +9,7 @@ export declare namespace ExponentialNoErrorNew {
9
9
  };
10
10
  }
11
11
  export interface CompLogicInterface extends Interface {
12
- getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "_grantComp" | "_setCompSpeeds" | "_setContributorCompSpeed" | "calculateComp" | "claimSumer(address[],address[],bool,bool)" | "claimSumer(address)" | "claimSumer(address,address[])" | "comp" | "compAccrued" | "compBorrowSpeeds" | "compBorrowState" | "compBorrowerIndex" | "compContributorSpeeds" | "compInitialIndex" | "compSupplierIndex" | "compSupplySpeeds" | "compSupplyState" | "comptroller" | "distributeBorrowerComp" | "distributeSupplierComp" | "getRoleAdmin" | "getRoleMember" | "getRoleMemberCount" | "grantRole" | "hasRole" | "initialize" | "initializeMarket" | "lastContributorBlock" | "renounceRole" | "revokeRole" | "setCompSpeed" | "setComptroller" | "supportsInterface" | "updateCompBorrowIndex" | "updateCompSupplyIndex" | "updateContributorRewards"): FunctionFragment;
12
+ getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "_grantComp" | "_setCompSpeeds" | "_setContributorCompSpeed" | "calculateComp" | "claimSumer(address[],address[],bool,bool)" | "claimSumer(address)" | "claimSumer(address,address[])" | "comp" | "compAccrued" | "compBorrowSpeeds" | "compBorrowState" | "compBorrowerIndex" | "compContributorSpeeds" | "compInitialIndex" | "compSupplierIndex" | "compSupplySpeeds" | "compSupplyState" | "comptroller" | "distributeBorrowerComp" | "distributeSupplierComp" | "getHypotheticalSafeLimit" | "getRoleAdmin" | "getRoleMember" | "getRoleMemberCount" | "grantRole" | "hasRole" | "initialize" | "initializeMarket" | "lastContributorBlock" | "percentScale" | "renounceRole" | "revokeRole" | "setCompSpeed" | "setComptroller" | "supportsInterface" | "updateCompBorrowIndex" | "updateCompSupplyIndex" | "updateContributorRewards"): FunctionFragment;
13
13
  getEvent(nameOrSignatureOrTopic: "CompBorrowSpeedUpdated" | "CompGranted" | "CompSupplySpeedUpdated" | "ContributorCompSpeedUpdated" | "DistributedBorrowerComp" | "DistributedSupplierComp" | "Initialized" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "SetComptroller"): EventFragment;
14
14
  encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
15
15
  encodeFunctionData(functionFragment: "_grantComp", values: [AddressLike, BigNumberish]): string;
@@ -32,6 +32,7 @@ export interface CompLogicInterface extends Interface {
32
32
  encodeFunctionData(functionFragment: "comptroller", values?: undefined): string;
33
33
  encodeFunctionData(functionFragment: "distributeBorrowerComp", values: [AddressLike, AddressLike, ExponentialNoErrorNew.ExpStruct]): string;
34
34
  encodeFunctionData(functionFragment: "distributeSupplierComp", values: [AddressLike, AddressLike]): string;
35
+ encodeFunctionData(functionFragment: "getHypotheticalSafeLimit", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
35
36
  encodeFunctionData(functionFragment: "getRoleAdmin", values: [BytesLike]): string;
36
37
  encodeFunctionData(functionFragment: "getRoleMember", values: [BytesLike, BigNumberish]): string;
37
38
  encodeFunctionData(functionFragment: "getRoleMemberCount", values: [BytesLike]): string;
@@ -40,6 +41,7 @@ export interface CompLogicInterface extends Interface {
40
41
  encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike]): string;
41
42
  encodeFunctionData(functionFragment: "initializeMarket", values: [AddressLike, BigNumberish]): string;
42
43
  encodeFunctionData(functionFragment: "lastContributorBlock", values: [AddressLike]): string;
44
+ encodeFunctionData(functionFragment: "percentScale", values?: undefined): string;
43
45
  encodeFunctionData(functionFragment: "renounceRole", values: [BytesLike, AddressLike]): string;
44
46
  encodeFunctionData(functionFragment: "revokeRole", values: [BytesLike, AddressLike]): string;
45
47
  encodeFunctionData(functionFragment: "setCompSpeed", values: [AddressLike, BigNumberish, BigNumberish]): string;
@@ -69,6 +71,7 @@ export interface CompLogicInterface extends Interface {
69
71
  decodeFunctionResult(functionFragment: "comptroller", data: BytesLike): Result;
70
72
  decodeFunctionResult(functionFragment: "distributeBorrowerComp", data: BytesLike): Result;
71
73
  decodeFunctionResult(functionFragment: "distributeSupplierComp", data: BytesLike): Result;
74
+ decodeFunctionResult(functionFragment: "getHypotheticalSafeLimit", data: BytesLike): Result;
72
75
  decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
73
76
  decodeFunctionResult(functionFragment: "getRoleMember", data: BytesLike): Result;
74
77
  decodeFunctionResult(functionFragment: "getRoleMemberCount", data: BytesLike): Result;
@@ -77,6 +80,7 @@ export interface CompLogicInterface extends Interface {
77
80
  decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
78
81
  decodeFunctionResult(functionFragment: "initializeMarket", data: BytesLike): Result;
79
82
  decodeFunctionResult(functionFragment: "lastContributorBlock", data: BytesLike): Result;
83
+ decodeFunctionResult(functionFragment: "percentScale", data: BytesLike): Result;
80
84
  decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result;
81
85
  decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result;
82
86
  decodeFunctionResult(functionFragment: "setCompSpeed", data: BytesLike): Result;
@@ -364,6 +368,14 @@ export interface CompLogic extends BaseContract {
364
368
  ], [
365
369
  void
366
370
  ], "nonpayable">;
371
+ getHypotheticalSafeLimit: TypedContractMethod<[
372
+ account: AddressLike,
373
+ cTokenModify: AddressLike,
374
+ intraSafeLimitMantissa: BigNumberish,
375
+ interSafeLimitMantissa: BigNumberish
376
+ ], [
377
+ bigint
378
+ ], "view">;
367
379
  getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">;
368
380
  getRoleMember: TypedContractMethod<[
369
381
  role: BytesLike,
@@ -401,6 +413,7 @@ export interface CompLogic extends BaseContract {
401
413
  ], [
402
414
  bigint
403
415
  ], "view">;
416
+ percentScale: TypedContractMethod<[], [bigint], "view">;
404
417
  renounceRole: TypedContractMethod<[
405
418
  role: BytesLike,
406
419
  account: AddressLike
@@ -531,6 +544,14 @@ export interface CompLogic extends BaseContract {
531
544
  ], [
532
545
  void
533
546
  ], "nonpayable">;
547
+ getFunction(nameOrSignature: "getHypotheticalSafeLimit"): TypedContractMethod<[
548
+ account: AddressLike,
549
+ cTokenModify: AddressLike,
550
+ intraSafeLimitMantissa: BigNumberish,
551
+ interSafeLimitMantissa: BigNumberish
552
+ ], [
553
+ bigint
554
+ ], "view">;
534
555
  getFunction(nameOrSignature: "getRoleAdmin"): TypedContractMethod<[role: BytesLike], [string], "view">;
535
556
  getFunction(nameOrSignature: "getRoleMember"): TypedContractMethod<[
536
557
  role: BytesLike,
@@ -564,6 +585,7 @@ export interface CompLogic extends BaseContract {
564
585
  void
565
586
  ], "nonpayable">;
566
587
  getFunction(nameOrSignature: "lastContributorBlock"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
588
+ getFunction(nameOrSignature: "percentScale"): TypedContractMethod<[], [bigint], "view">;
567
589
  getFunction(nameOrSignature: "renounceRole"): TypedContractMethod<[
568
590
  role: BytesLike,
569
591
  account: AddressLike
@@ -301,7 +301,7 @@ export declare namespace CompoundLens {
301
301
  };
302
302
  }
303
303
  export interface CompoundLensInterface extends Interface {
304
- getFunction(nameOrSignature: "cTokenBalances" | "cTokenBalancesAll" | "cTokenMetadata" | "cTokenMetadataAll" | "cTokenUnderlyingPrice" | "cTokenUnderlyingPriceAll" | "calcBorrowAmountForProtectedMint" | "getAccountLimits" | "getCollateralRate" | "getCompBalanceMetadata" | "getCompBalanceMetadataExt" | "getCompVotes" | "getGovBravoProposals" | "getGovBravoReceipts" | "getGovProposals" | "getGovReceipts"): FunctionFragment;
304
+ getFunction(nameOrSignature: "cTokenBalances" | "cTokenBalancesAll" | "cTokenMetadata" | "cTokenMetadataAll" | "cTokenUnderlyingPrice" | "cTokenUnderlyingPriceAll" | "calcBorrowAmountForProtectedMint" | "getAccountLimits" | "getCollateralRate" | "getCompBalanceMetadata" | "getCompBalanceMetadataExt" | "getCompVotes" | "getGovBravoProposals" | "getGovBravoReceipts" | "getGovProposals" | "getGovReceipts" | "percentScale"): FunctionFragment;
305
305
  encodeFunctionData(functionFragment: "cTokenBalances", values: [AddressLike, AddressLike]): string;
306
306
  encodeFunctionData(functionFragment: "cTokenBalancesAll", values: [AddressLike[], AddressLike]): string;
307
307
  encodeFunctionData(functionFragment: "cTokenMetadata", values: [AddressLike]): string;
@@ -318,6 +318,7 @@ export interface CompoundLensInterface extends Interface {
318
318
  encodeFunctionData(functionFragment: "getGovBravoReceipts", values: [AddressLike, AddressLike, BigNumberish[]]): string;
319
319
  encodeFunctionData(functionFragment: "getGovProposals", values: [AddressLike, BigNumberish[]]): string;
320
320
  encodeFunctionData(functionFragment: "getGovReceipts", values: [AddressLike, AddressLike, BigNumberish[]]): string;
321
+ encodeFunctionData(functionFragment: "percentScale", values?: undefined): string;
321
322
  decodeFunctionResult(functionFragment: "cTokenBalances", data: BytesLike): Result;
322
323
  decodeFunctionResult(functionFragment: "cTokenBalancesAll", data: BytesLike): Result;
323
324
  decodeFunctionResult(functionFragment: "cTokenMetadata", data: BytesLike): Result;
@@ -334,6 +335,7 @@ export interface CompoundLensInterface extends Interface {
334
335
  decodeFunctionResult(functionFragment: "getGovBravoReceipts", data: BytesLike): Result;
335
336
  decodeFunctionResult(functionFragment: "getGovProposals", data: BytesLike): Result;
336
337
  decodeFunctionResult(functionFragment: "getGovReceipts", data: BytesLike): Result;
338
+ decodeFunctionResult(functionFragment: "percentScale", data: BytesLike): Result;
337
339
  }
338
340
  export interface CompoundLens extends BaseContract {
339
341
  connect(runner?: ContractRunner | null): CompoundLens;
@@ -447,6 +449,7 @@ export interface CompoundLens extends BaseContract {
447
449
  ], [
448
450
  CompoundLens.GovReceiptStructOutput[]
449
451
  ], "view">;
452
+ percentScale: TypedContractMethod<[], [bigint], "view">;
450
453
  getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
451
454
  getFunction(nameOrSignature: "cTokenBalances"): TypedContractMethod<[
452
455
  cToken: AddressLike,
@@ -547,5 +550,6 @@ export interface CompoundLens extends BaseContract {
547
550
  ], [
548
551
  CompoundLens.GovReceiptStructOutput[]
549
552
  ], "view">;
553
+ getFunction(nameOrSignature: "percentScale"): TypedContractMethod<[], [bigint], "view">;
550
554
  filters: {};
551
555
  }
@@ -35,7 +35,7 @@ export type LiquidationIncentiveStructOutput = [
35
35
  sutokenPercent: bigint;
36
36
  };
37
37
  export interface ComptrollerInterface extends Interface {
38
- getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "PAUSER_ROLE" | "_pause" | "_setCaps" | "_setGlobalConfig" | "_setGovTokenAddress" | "_setLiquidationIncentive" | "_setPauseGuardian" | "_setPriceOracle" | "_setTimelock" | "_supportMarket" | "accountAssets" | "allMarkets" | "assetGroup" | "borrowAllowed" | "borrowVerify" | "compLogic" | "enterMarkets" | "exitMarket" | "getAllMarkets" | "getAssetsIn" | "getHypotheticalAccountLiquidity" | "getRoleAdmin" | "getUnderlyingPriceNormalized" | "globalConfig" | "governanceToken" | "grantRole" | "hasRole" | "initialize" | "isComptroller" | "isListed" | "lastBorrowedAt" | "liquidateBorrowAllowed" | "liquidationIncentive" | "marketConfig" | "markets" | "mintAllowed" | "oracle" | "pauseGuardian" | "redeemAllowed" | "redemptionManager" | "removeAssetGroup" | "renounceRole" | "repayBorrowAllowed" | "revokeRole" | "seizeAllowed" | "setAssetGroup" | "supportsInterface" | "timelock" | "transferAllowed"): FunctionFragment;
38
+ getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "PAUSER_ROLE" | "_pause" | "_setCaps" | "_setGlobalConfig" | "_setGovTokenAddress" | "_setLiquidationIncentive" | "_setPauseGuardian" | "_setPriceOracle" | "_setTimelock" | "_supportMarket" | "accountAssets" | "allMarkets" | "assetGroup" | "borrowAllowed" | "borrowVerify" | "compLogic" | "enterMarkets" | "exitMarket" | "getAccountSafeLimit" | "getAllMarkets" | "getAssetsIn" | "getHypotheticalAccountLiquidity" | "getRoleAdmin" | "getUnderlyingPriceNormalized" | "globalConfig" | "governanceToken" | "grantRole" | "hasRole" | "initialize" | "isComptroller" | "isListed" | "lastBorrowedAt" | "liquidateBorrowAllowed" | "liquidationIncentive" | "marketConfig" | "markets" | "mintAllowed" | "oracle" | "pauseGuardian" | "redeemAllowed" | "redemptionManager" | "removeAssetGroup" | "renounceRole" | "repayBorrowAllowed" | "revokeRole" | "seizeAllowed" | "setAssetGroup" | "supportsInterface" | "timelock" | "transferAllowed" | "version"): FunctionFragment;
39
39
  getEvent(nameOrSignatureOrTopic: "Initialized" | "MarketEntered" | "MarketExited" | "MarketListed" | "NewAssetGroup" | "NewCap" | "NewDependencies" | "NewGlobalConfig" | "NewLiquidationIncentive" | "NewPause" | "NewPauseGuardian" | "NewPriceOracle" | "NewTimelock" | "RemoveAssetGroup" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked"): EventFragment;
40
40
  encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
41
41
  encodeFunctionData(functionFragment: "PAUSER_ROLE", values?: undefined): string;
@@ -56,6 +56,7 @@ export interface ComptrollerInterface extends Interface {
56
56
  encodeFunctionData(functionFragment: "compLogic", values?: undefined): string;
57
57
  encodeFunctionData(functionFragment: "enterMarkets", values: [AddressLike[]]): string;
58
58
  encodeFunctionData(functionFragment: "exitMarket", values: [AddressLike]): string;
59
+ encodeFunctionData(functionFragment: "getAccountSafeLimit", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
59
60
  encodeFunctionData(functionFragment: "getAllMarkets", values?: undefined): string;
60
61
  encodeFunctionData(functionFragment: "getAssetsIn", values: [AddressLike]): string;
61
62
  encodeFunctionData(functionFragment: "getHypotheticalAccountLiquidity", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
@@ -101,6 +102,7 @@ export interface ComptrollerInterface extends Interface {
101
102
  encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string;
102
103
  encodeFunctionData(functionFragment: "timelock", values?: undefined): string;
103
104
  encodeFunctionData(functionFragment: "transferAllowed", values: [AddressLike, AddressLike, AddressLike, BigNumberish]): string;
105
+ encodeFunctionData(functionFragment: "version", values?: undefined): string;
104
106
  decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
105
107
  decodeFunctionResult(functionFragment: "PAUSER_ROLE", data: BytesLike): Result;
106
108
  decodeFunctionResult(functionFragment: "_pause", data: BytesLike): Result;
@@ -120,6 +122,7 @@ export interface ComptrollerInterface extends Interface {
120
122
  decodeFunctionResult(functionFragment: "compLogic", data: BytesLike): Result;
121
123
  decodeFunctionResult(functionFragment: "enterMarkets", data: BytesLike): Result;
122
124
  decodeFunctionResult(functionFragment: "exitMarket", data: BytesLike): Result;
125
+ decodeFunctionResult(functionFragment: "getAccountSafeLimit", data: BytesLike): Result;
123
126
  decodeFunctionResult(functionFragment: "getAllMarkets", data: BytesLike): Result;
124
127
  decodeFunctionResult(functionFragment: "getAssetsIn", data: BytesLike): Result;
125
128
  decodeFunctionResult(functionFragment: "getHypotheticalAccountLiquidity", data: BytesLike): Result;
@@ -151,6 +154,7 @@ export interface ComptrollerInterface extends Interface {
151
154
  decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
152
155
  decodeFunctionResult(functionFragment: "timelock", data: BytesLike): Result;
153
156
  decodeFunctionResult(functionFragment: "transferAllowed", data: BytesLike): Result;
157
+ decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
154
158
  }
155
159
  export declare namespace InitializedEvent {
156
160
  type InputTuple = [version: BigNumberish];
@@ -564,6 +568,14 @@ export interface Comptroller extends BaseContract {
564
568
  ], [
565
569
  void
566
570
  ], "nonpayable">;
571
+ getAccountSafeLimit: TypedContractMethod<[
572
+ account: AddressLike,
573
+ cTokenModify: AddressLike,
574
+ intraSafeLimitMantissa: BigNumberish,
575
+ interSafeLimitMantissa: BigNumberish
576
+ ], [
577
+ bigint
578
+ ], "view">;
567
579
  getAllMarkets: TypedContractMethod<[], [string[]], "view">;
568
580
  getAssetsIn: TypedContractMethod<[account: AddressLike], [string[]], "view">;
569
581
  getHypotheticalAccountLiquidity: TypedContractMethod<[
@@ -750,6 +762,7 @@ export interface Comptroller extends BaseContract {
750
762
  ], [
751
763
  void
752
764
  ], "nonpayable">;
765
+ version: TypedContractMethod<[], [bigint], "view">;
753
766
  getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
754
767
  getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE"): TypedContractMethod<[], [string], "view">;
755
768
  getFunction(nameOrSignature: "PAUSER_ROLE"): TypedContractMethod<[], [string], "view">;
@@ -833,6 +846,14 @@ export interface Comptroller extends BaseContract {
833
846
  getFunction(nameOrSignature: "compLogic"): TypedContractMethod<[], [string], "view">;
834
847
  getFunction(nameOrSignature: "enterMarkets"): TypedContractMethod<[cTokens: AddressLike[]], [void], "nonpayable">;
835
848
  getFunction(nameOrSignature: "exitMarket"): TypedContractMethod<[cTokenAddress: AddressLike], [void], "nonpayable">;
849
+ getFunction(nameOrSignature: "getAccountSafeLimit"): TypedContractMethod<[
850
+ account: AddressLike,
851
+ cTokenModify: AddressLike,
852
+ intraSafeLimitMantissa: BigNumberish,
853
+ interSafeLimitMantissa: BigNumberish
854
+ ], [
855
+ bigint
856
+ ], "view">;
836
857
  getFunction(nameOrSignature: "getAllMarkets"): TypedContractMethod<[], [string[]], "view">;
837
858
  getFunction(nameOrSignature: "getAssetsIn"): TypedContractMethod<[account: AddressLike], [string[]], "view">;
838
859
  getFunction(nameOrSignature: "getHypotheticalAccountLiquidity"): TypedContractMethod<[
@@ -1007,6 +1028,7 @@ export interface Comptroller extends BaseContract {
1007
1028
  ], [
1008
1029
  void
1009
1030
  ], "nonpayable">;
1031
+ getFunction(nameOrSignature: "version"): TypedContractMethod<[], [bigint], "view">;
1010
1032
  getEvent(key: "Initialized"): TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
1011
1033
  getEvent(key: "MarketEntered"): TypedContractEvent<MarketEnteredEvent.InputTuple, MarketEnteredEvent.OutputTuple, MarketEnteredEvent.OutputObject>;
1012
1034
  getEvent(key: "MarketExited"): TypedContractEvent<MarketExitedEvent.InputTuple, MarketExitedEvent.OutputTuple, MarketExitedEvent.OutputObject>;
@@ -9,15 +9,17 @@ export declare namespace ICompLogic {
9
9
  };
10
10
  }
11
11
  export interface ICompLogicInterface extends Interface {
12
- getFunction(nameOrSignature: "distributeBorrowerComp" | "distributeSupplierComp" | "initializeMarket" | "setCompSpeed" | "updateCompBorrowIndex" | "updateCompSupplyIndex"): FunctionFragment;
12
+ getFunction(nameOrSignature: "distributeBorrowerComp" | "distributeSupplierComp" | "getHypotheticalSafeLimit" | "initializeMarket" | "setCompSpeed" | "updateCompBorrowIndex" | "updateCompSupplyIndex"): FunctionFragment;
13
13
  encodeFunctionData(functionFragment: "distributeBorrowerComp", values: [AddressLike, AddressLike, ICompLogic.ExpStruct]): string;
14
14
  encodeFunctionData(functionFragment: "distributeSupplierComp", values: [AddressLike, AddressLike]): string;
15
+ encodeFunctionData(functionFragment: "getHypotheticalSafeLimit", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
15
16
  encodeFunctionData(functionFragment: "initializeMarket", values: [AddressLike, BigNumberish]): string;
16
17
  encodeFunctionData(functionFragment: "setCompSpeed", values: [AddressLike, BigNumberish, BigNumberish]): string;
17
18
  encodeFunctionData(functionFragment: "updateCompBorrowIndex", values: [AddressLike, ICompLogic.ExpStruct]): string;
18
19
  encodeFunctionData(functionFragment: "updateCompSupplyIndex", values: [AddressLike]): string;
19
20
  decodeFunctionResult(functionFragment: "distributeBorrowerComp", data: BytesLike): Result;
20
21
  decodeFunctionResult(functionFragment: "distributeSupplierComp", data: BytesLike): Result;
22
+ decodeFunctionResult(functionFragment: "getHypotheticalSafeLimit", data: BytesLike): Result;
21
23
  decodeFunctionResult(functionFragment: "initializeMarket", data: BytesLike): Result;
22
24
  decodeFunctionResult(functionFragment: "setCompSpeed", data: BytesLike): Result;
23
25
  decodeFunctionResult(functionFragment: "updateCompBorrowIndex", data: BytesLike): Result;
@@ -49,6 +51,14 @@ export interface ICompLogic extends BaseContract {
49
51
  ], [
50
52
  void
51
53
  ], "nonpayable">;
54
+ getHypotheticalSafeLimit: TypedContractMethod<[
55
+ account: AddressLike,
56
+ cTokenModify: AddressLike,
57
+ intraSafeLimitMantissa: BigNumberish,
58
+ interSafeLimitMantissa: BigNumberish
59
+ ], [
60
+ bigint
61
+ ], "view">;
52
62
  initializeMarket: TypedContractMethod<[
53
63
  cToken: AddressLike,
54
64
  blockNumber: BigNumberish
@@ -87,6 +97,14 @@ export interface ICompLogic extends BaseContract {
87
97
  ], [
88
98
  void
89
99
  ], "nonpayable">;
100
+ getFunction(nameOrSignature: "getHypotheticalSafeLimit"): TypedContractMethod<[
101
+ account: AddressLike,
102
+ cTokenModify: AddressLike,
103
+ intraSafeLimitMantissa: BigNumberish,
104
+ interSafeLimitMantissa: BigNumberish
105
+ ], [
106
+ bigint
107
+ ], "view">;
90
108
  getFunction(nameOrSignature: "initializeMarket"): TypedContractMethod<[
91
109
  cToken: AddressLike,
92
110
  blockNumber: BigNumberish
@@ -14,7 +14,7 @@ export declare class CErc20__factory extends ContractFactory {
14
14
  deploymentTransaction(): ContractTransactionResponse;
15
15
  }>;
16
16
  connect(runner: ContractRunner | null): CErc20__factory;
17
- static readonly bytecode = "0x60808060405234620000d257670de0b6b3a76400006011556013549060ff8260081c1662000080575060ff8082161062000044575b604051614b979081620000d88239f35b60ff90811916176013557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000034565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146103f25780630786f223146103ed578063095ea7b3146103e85780630e752702146103e3578063134131a2146103de578063173b9904146103d957806317bfdfbc146103d457806318160ddd146103cf578063182df0f5146103ca5780631be19560146103c557806323b872dd146103c05780632608f818146103bb57806326782247146103b65780632826c1a1146103b15780632d7183f6146103ac578063313ce567146103a75780633af9e669146103a25780633b1d21a21461037f5780633e9410101461039d5780634000fbad1461039857806341e340061461039357806342f3251a1461038e5780634576b5db1461038957806347bd37181461038457806359356c5c1461037f5780635fe3b5671461037a578063601a0bf1146103755780636752e702146103705780636c540baf1461036b5780636f307dc31461036657806370a082311461036157806373acee981461035c578063852a12e3146103575780638f840ddd1461035257806395d89b411461034d57806395dd9193146103485780639b1a5bf4146103435780639e2116411461033e578063a0712d6814610339578063a3e94ddd14610334578063a6afed951461032f578063a9059cbb1461032a578063aa5af0fd14610325578063ac784ddc14610320578063ae9d70b01461031b578063b586638214610316578063b71d1a0c14610311578063bd6d894d1461030c578063c37f68e214610307578063c5ebeaec14610302578063c7178230146102fd578063d4af8de2146102f8578063db006a75146102f3578063dd62ed3e146102ee578063e9c714f2146102e9578063f2b3abbd146102e4578063f3fdb15a146102df578063f5e3c462146102da578063f851a440146102d5578063f8f9da28146102d0578063fca7820b146102cb5763fe9c44ae146102c657600080fd5b612805565b61273a565b6126e1565b6126b4565b612321565b6122f8565b6121f0565b6120c8565b612065565b611fa2565b611f0d565b611dbd565b611bda565b611b67565b611b4c565b611aa2565b611a0b565b611969565b61194d565b61192f565b6118e0565b6118c5565b611851565b611808565b61175f565b61173c565b611715565b61166e565b611650565b61149c565b61144c565b61140f565b6113e2565b6113c4565b6113a1565b611285565b61125c565b610f40565b61123e565b611131565b611113565b6110ca565b611049565b610f5e565b610ed6565b610eb5565b610e02565b610d37565b610c68565b610c11565b610ba4565b6109b5565b610992565b610974565b610911565b6108f3565b610723565b6106c7565b610638565b610601565b61051e565b600091031261040257565b600080fd5b90600182811c92168015610437575b602083101461042157565b634e487b7160e01b600052602260045260246000fd5b91607f1691610416565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161046b57604052565b610441565b6020810190811067ffffffffffffffff82111761046b57604052565b6040810190811067ffffffffffffffff82111761046b57604052565b90601f8019910116810190811067ffffffffffffffff82111761046b57604052565b919082519283825260005b8481106104f6575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016104d5565b90602061051b9281815201906104ca565b90565b34610402576000806003193601126105fe576040519080600180549161054383610407565b808652928281169081156105d4575060011461057a575b6105768561056a818703826104a8565b6040519182918261050a565b0390f35b92508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106105bc57505050810160200161056a8261057661055a565b805460208587018101919091529093019281016105a1565b8695506105769693506020925061056a94915060ff191682840152151560051b820101929361055a565b80fd5b3461040257600036600319011261040257602060ff60005460081c166040519015158152f35b6001600160a01b0381160361040257565b346104025760403660031901126104025760043561065581610627565b6024359033600052600f602052816106838260406000209060018060a01b0316600052602052604060002090565b556040519182526001600160a01b03169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3602060405160018152f35b346104025760203660031901126104025760206000546106ec60ff8260101c16612e2c565b62ff0000199081166000556106ff6131b8565b50620100006107116004353333613d9f565b50916000541617600055604051908152f35b34610402576040806003193601126104025760049081359161074483610627565b60005461075660ff8260101c16612e2c565b62ff000019166000558151637f4e225760e11b815260209081818481335afa908115610895576000916108d6575b506108c7576005546107ac906107a0906001600160a01b031681565b6001600160a01b031690565b8351637bca031760e11b808252338583019081529091908490829081906020010381865afa908115610895576000916108aa575b501561089a57845190815230848201908152909183918391908290819060200103915afa91821561089557600092610868575b50501561085a57506105769161083590602435906001600160a01b0316614868565b9061084c6201000062ff0000196000541617600055565b519081529081906020820190565b90516334b04fe360e11b8152fd5b6108879250803d1061088e575b61087f81836104a8565b810190614303565b3880610813565b503d610875565b612b36565b84516334b04fe360e11b81528490fd5b6108c19150843d861161088e5761087f81836104a8565b386107e0565b509051634a8af12d60e01b8152fd5b6108ed9150823d841161088e5761087f81836104a8565b38610784565b34610402576000366003190112610402576020600854604051908152f35b3461040257602036600319011261040257602060043561093081610627565b620100006109636000549261094a60ff8560101c16612e2c565b62ff00001993841660005561095d6131b8565b506130e9565b916000541617600055604051908152f35b34610402576000366003190112610402576020600d54604051908152f35b346104025760003660031901126104025760206109ad613169565b604051908152f35b34610402576020806003193601126104025760048035916109d583610627565b6000805490936001600160a01b039081169160181c16808214610b93576040516370a0823160e01b80825230868301908152919390929091859185918290819060200103915afa928315610895578693610b74575b50604051828152308682019081528590829081906020010381855afa80156108955787918291610b57575b5060035460081c6001600160a01b031692803b15610b53576040805163a9059cbb60e01b81526001600160a01b03909516898601908152602081019390935284928391859183910103925af1801561089557610b3a575b5084548390610ac8906107a09060181c6001600160a01b031681565b604051928352308684019081528391908290819060200103915afa928315610895578593610b0b575b505003610afc575080f35b6040516346edcd5360e11b8152fd5b610b2b929350803d10610b33575b610b2381836104a8565b810190612b27565b903880610af1565b503d610b19565b80610b47610b4d92610457565b806103f7565b38610aac565b8280fd5b610b6e9150863d8811610b3357610b2381836104a8565b38610a55565b610b8c919350843d8611610b3357610b2381836104a8565b9138610a2a565b604051632f028cfb60e01b81528490fd5b34610402576060366003190112610402576020600435610bc381610627565b62010000610bff60243592610bd784610627565b60005493610bea60ff8660101c16612e2c565b62ff0000199485166000556044359133612eaa565b15916000541617600055604051908152f35b34610402576040366003190112610402576020600435610c3081610627565b6201000061071160005492610c4a60ff8560101c16612e2c565b62ff000019938416600055610c5d6131b8565b506024359033613d9f565b34610402576000366003190112610402576004546040516001600160a01b039091168152602090f35b60405190610c9e82610470565b565b67ffffffffffffffff811161046b57601f01601f191660200190565b929192610cc882610ca0565b91610cd660405193846104a8565b829481845281830111610402578281602093846000960137010152565b60606003198201126104025760043591602435916044359067ffffffffffffffff821161040257806023830112156104025781602461051b93600401359101610cbc565b3461040257610d4536610cf3565b60008054919392909160181c6001600160a01b031690813b15610b5357938291610d899583604051809881958294639fd5a6cf60e01b84528a303360048701612b42565b03925af19283156108955761057693610de9575b5062010000610dd0825493610db760ff8660101c16612e2c565b62ff0000199485168455610dc96131b8565b5033613326565b5092825416179055604051918291829190602083019252565b610df290610457565b38610d9d565b8015150361040257565b346104025760c036600319011261040257610576600435610e2281610627565b62010000610e8a602435610e3581610627565b608435610e4181610df8565b60a4359160005495610e5860ff8860101c16612e2c565b62ff0000199687166000558315610eac575b670de0b6b3a7640000808511610ea4575b50606435916044359133614153565b916000541617600055604051918291829190602083019252565b935038610e7b565b60009350610e6a565b3461040257600036600319011261040257602060ff60035416604051908152f35b34610402576020366003190112610402576020670de0b6b3a7640000610f36600435610f0181610627565b610f0961312b565b9060405191610f1783610470565b82526001600160a01b03166000908152600e8552604090205490614ab5565b5104604051908152f35b34610402576000366003190112610402576020601254604051908152f35b3461040257602036600319011261040257600054610f8160ff8260101c16612e2c565b62ff00001916600055610f926131b8565b50600954430361103757610fa860043533613552565b600c548181019081811161103257811061102057600c8190556040805133815260208101939093528201527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59080606081015b0390a16110146201000062ff0000196000541617600055565b60405160008152602090f35b6040516335c973c760e21b8152600490fd5b612e65565b604051639d4e8c1b60e01b8152600490fd5b34610402576020366003190112610402576003546004359060081c6001600160a01b031633036110b857601180549082905560408051918252602080830184905292917f68e61dbc80efc8af787740901509a321d0fc29f4e432fae6c4e175867b9614439190a1604051908152f35b604051634755657960e01b8152600490fd5b34610402576040366003190112610402576105766110f66004356110ed81610627565b602435906144ee565b604080519384526020840192909252908201529081906060820190565b34610402576000366003190112610402576020601154604051908152f35b346104025760203660031901126104025760043561114e81610627565b6003546001600160a01b03919060081c821633036110b8576005546004906020906001600160a01b03169360405192838092623f1ee960e11b825286165afa90811561089557600091611220575b501561120e57600580546001600160a01b0319166001600160a01b0383161790557f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d915b604080516001600160a01b039283168152929091166020830152819081015b0390a160405160008152602090f35b6040516383aebebd60e01b8152600490fd5b611238915060203d811161088e5761087f81836104a8565b3861119c565b34610402576000366003190112610402576020600b54604051908152f35b34610402576000366003190112610402576005546040516001600160a01b039091168152602090f35b34610402576020366003190112610402576004356000546112ab60ff8260101c16612e2c565b62ff000019166000556112bc6131b8565b5060035460081c6001600160a01b031633036110b857600954430361138f57806012541061137d57600c549081811161136b5761131a817f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e93612e7b565b61132381600c55565b60035461133d90839060081c6001600160a01b0316613a2d565b6003546040805160089290921c6001600160a01b031682526020820193909352918201528060608101610ffb565b60405163152125f760e21b8152600490fd5b604051633345e99960e01b8152600490fd5b604051631747e30360e21b8152600490fd5b34610402576000366003190112610402576020604051670429d069189e00008152f35b34610402576000366003190112610402576020600954604051908152f35b346104025760003660031901126104025760005460405160189190911c6001600160a01b03168152602090f35b346104025760203660031901126104025760043561142c81610627565b60018060a01b0316600052600e6020526020604060002054604051908152f35b34610402576000806003193601126105fe5780602091549061147360ff8360101c16612e2c565b62ff00001991821681556114856131b8565b5062010000600b5492825416179055604051908152f35b3461040257602036600319011261040257600435600080546114c360ff8260101c16612e2c565b62ff00001990811682556114d56131b8565b506114f26114e1613169565b6114e9610c91565b90815284614b1c565b600554611509906107a0906001600160a01b031681565b93843b1561164c576040805163eabe7d9160e01b815230600482015233602482015260448101849052909585908290606490829084905af1801561089557611639575b50600954430361162857806012541061161757817fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299161159b611596620100009695600d54612e7b565b600d55565b336000908152600e602052604090206115b79083905b54612e7b565b336000908152600e60205260409020556115d18133613b3e565b865182815230903390600080516020614b4283398151915290602090a3865133815260208101919091526040810191909152606090a18254161790555160008152602090f35b84516391240a1b60e01b8152600490fd5b845163a17754ef60e01b8152600490fd5b80610b4761164692610457565b3861154c565b8380fd5b34610402576000366003190112610402576020600c54604051908152f35b34610402576000806003193601126105fe57604051908060025461169181610407565b808552916001918083169081156105d457506001146116ba576105768561056a818703826104a8565b9250600283527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b8284106116fd57505050810160200161056a8261057661055a565b805460208587018101919091529093019281016116e2565b346104025760203660031901126104025760206109ad60043561173781610627565b6130e9565b3461040257600036600319011261040257602060ff600054166040519015158152f35b346104025761176d36610cf3565b60008054919392909160181c6001600160a01b031690813b15610b53579382916117b19583604051809881958294639fd5a6cf60e01b84528a303360048701612b42565b03925af192831561089557610576936117f9575b5062010000610dd08254936117df60ff8660101c16612e2c565b62ff00001994851684556117f16131b8565b503333613d9f565b61180290610457565b386117c5565b3461040257602036600319011261040257602060005461182d60ff8260101c16612e2c565b62ff0000199081166000556118406131b8565b506201000061071160043533613326565b346104025760203660031901126104025760043561186e81610627565b6000602060405161187e8161048c565b82815201526001600160a01b03166000908152601060205260409081902081516118a78161048c565b60206001835493848452015491019081528251918252516020820152f35b346104025760003660031901126104025760206109ad6131b8565b346104025760403660031901126104025760206004356118ff81610627565b62010000610bff6000549261191960ff8560101c16612e2c565b62ff000019938416600055602435903380612eaa565b34610402576000366003190112610402576020600a54604051908152f35b3461040257600036600319011261040257602060405160008152f35b3461040257600036600319011261040257600654601254600b54600c54600854604051635c0b440b60e11b815260048101949094526024840192909252604483015260648201529060209082906001600160a01b03168180608481015b03915afa801561089557610576916000916119ed575b506040519081529081906020820190565b611a05915060203d8111610b3357610b2381836104a8565b386119dc565b34610402576000806003193601126105fe576003546001600160a01b039060081c811633036110b85781546040516370a0823160e01b8152306004820152916020918391602491839160189190911c165afa801561089557611a74918391611a77575b50601255565b80f35b611a8f915060203d8111610b3357610b2381836104a8565b38611a6e565b60e43590610c9e82610627565b3461040257602036600319011261040257600435611abf81610627565b6003546001600160a01b039060081c811633036110b8576004548183168015611b3a576001600160a01b0319821617600455604080516001600160a01b0393909216831682529190921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99190819081016111ff565b60405163e6c4247b60e01b8152600490fd5b346104025760003660031901126104025760206109ad61312b565b3461040257602036600319011261040257600435611b8481610627565b6001600160a01b0381166000908152600e602052604090205490611ba7906130e9565b90610576611bb3613169565b60115490604051948594859094939260609260808301968352602083015260408201520152565b346104025760203660031901126104025760043560008054611c0160ff8260101c16612e2c565b62ff0000199081168255611c136131b8565b50600554611c2b906107a0906001600160a01b031681565b92833b15610b53576040805163368f515360e21b815230600482015233602482015260448101839052909484908290606490829084905af1801561089557611daa575b506009544303611d99578060125410611d88577f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80611cb482611caf336130e9565b612e9d565b611cc083600b54612e9d565b336000908152601060205260409020828155600a54600190910155600b81905590611ceb8433613c92565b86513381526020810185905260408101919091526060810191909152608090a1600554611d22906107a0906001600160a01b031681565b90813b1561164c578451631407e28160e01b81523360048201526024810191909152919083908390604490829084905af1918215610895576201000092611d75575b508254161790555160008152602090f35b80610b47611d8292610457565b38611d64565b83516348c2588160e01b8152600490fd5b8351630a42bc3960e41b8152600490fd5b80610b47611db792610457565b38611c6e565b3461040257600036600319011261040257600554611de5906107a0906001600160a01b031681565b604051638e8f294b60e01b8152306004820152606081602481855afa80156108955760ff91600091611eb6575b5016159081611e43575b5080611e30575b6040519015158152602090f35b50600854670de0b6b3a764000014611e23565b604051632068e5f960e21b8152306004820152915060c090829060249082905afa90811561089557611e8291602091600091611e88575b500151151590565b38611e1c565b611ea9915060c03d8111611eaf575b611ea181836104a8565b810190614367565b38611e7a565b503d611e97565b611ed7915060603d8111611ee0575b611ecf81836104a8565b810190614318565b50905038611e12565b503d611ec5565b9080601f830112156104025781602061051b93359101610cbc565b60ff81160361040257565b346104025761010036600319011261040257600435611f2b81610627565b602435611f3781610627565b604435611f4381610627565b67ffffffffffffffff9260843584811161040257611f65903690600401611ee7565b60a43594851161040257611f80611fa0953690600401611ee7565b9160c43593611f8e85611f02565b611f96611a95565b9560643592612821565b005b346104025760203660031901126104025760043560008054611fc960ff8260101c16612e2c565b62ff0000199081168255611fdb6131b8565b5082151592838061205e575b61204c57611ff3613169565b93611ffc610c91565b9485521561203957612012816120219295614ab5565b670de0b6b3a764000090510490565b92600554611509906107a0906001600160a01b031681565b509161204490614b11565b9181926114f2565b60405163431f269d60e01b8152600490fd5b5082611fe7565b346104025760403660031901126104025760206120bf60043561208781610627565b6024359061209482610627565b60018060a01b0316600052600f835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b34610402576000366003190112610402576004546001600160a01b0316803381148015906121e8575b6121d6576003547fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc9161217d906121559060081c6001600160a01b03166107a0565b60038054610100600160a81b03191660089490941b610100600160a81b031693909317909255565b600480546001600160a01b0319169055600354604080516001600160a01b03938416815260089290921c9092166020820152a1600454604080516001600160a01b039384168152929091166020830152819081016111ff565b60405163d1ec4b2360e01b8152600490fd5b5033156120f1565b346104025760203660031901126104025760043561220d81610627565b6122156131b8565b506003546001600160a01b03919060081c821633036110b85760095443036122e6576006546004906020906001600160a01b031693604051928380926310c8fc9560e11b825287165afa908115610895576000916122c8575b50156122b657600680546001600160a01b0319166001600160a01b0383161790557fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926916111e0565b60405163ee39b72560e01b8152600490fd5b6122e0915060203d811161088e5761087f81836104a8565b3861226e565b604051637b964b3b60e01b8152600490fd5b34610402576000366003190112610402576006546040516001600160a01b039091168152602090f35b3461040257606036600319011261040257600480359061234082610627565b602435916044359061235182610627565b600092835461236560ff8260101c16612e2c565b62ff0000191684556123756131b8565b506040805163a6afed9560e01b815290956001600160a01b0385811695926020929190838187818c8c5af1801561089557612697575b506005546123c3906107a0906001600160a01b031681565b803b1561269357888a518092632fe3f38f60e11b825281806123ed888d8d8d339130908701613f1a565b03915afa801561089557612680575b506009544303612670578851636c540baf60e01b8152838187818c8c5af1908115610895578991612653575b504303612643578516331461263357801561262357600019811461261357612451908533613d9f565b95905061245e86846144ee565b8a516370a0823160e01b81526001600160a01b038916818901908152919a9297929350908590829081906020010381875afa801561089557879184916125f6575b50106125e85730830361253e57505050509061251b916124e37f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529683863330613f4c565b505b86513381526001600160a01b039485166020820152604081019590955290921660608401526080830191909152819060a0820190565b0390a16125346201000062ff0000196000541617600055565b5160008152602090f35b89516316b8c1fb60e11b8152339181019182526001600160a01b038816602083015260408201879052606082019990995260006080820181905260a082015292949392859289929183900360c0019183915af1928315610895577f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529661251b946125ca575b50506124e5565b816125e092903d10610b3357610b2381836104a8565b5038806125c3565b8951630e7a24eb60e11b8152fd5b61260d9150863d8811610b3357610b2381836104a8565b3861249f565b875163f72ef4e160e01b81528490fd5b875163b2f72f4760e01b81528490fd5b875163039f861b60e51b81528490fd5b8851633e88627b60e11b81528590fd5b61266a9150843d8611610b3357610b2381836104a8565b38612428565b885163fbf3ea7960e01b81528590fd5b80610b4761268d92610457565b386123fc565b8880fd5b6126ad90843d8611610b3357610b2381836104a8565b50386123ab565b346104025760003660031901126104025760035460405160089190911c6001600160a01b03168152602090f35b3461040257600036600319011261040257600654601254600b54600c546040516315f2405360e01b81526004810193909352602483019190915260448201529060209082906001600160a01b03168180606481016119c6565b346104025760203660031901126104025760043560005461276060ff8260101c16612e2c565b62ff000019166000556127716131b8565b5060035460081c6001600160a01b031633036110b85760095443036127f357670de0b6b3a764000081116127e15760088054908290556040805191825260208201929092527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f8214609181908101610ffb565b604051631b9bc96960e11b8152600490fd5b604051637b452e8160e11b8152600490fd5b3461040257600036600319011261040257602060405160018152f35b95939196949290966013549760ff8960081c16158099819a612945575b8115612925575b50156128c95761286b9789612862600160ff196013541617601355565b6128b057612953565b61287157565b61288161ff001960135416601355565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6128c461010061ff00196013541617601355565b612953565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081612937575b5038612845565b6001915060ff161438612930565b600160ff821610915061283e565b60038054610100600160a81b03191660089990991b610100600160a81b0316989098179097559294939092909160095415801590612b1c575b612b0a5760075560075415612af857612aa8947fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926612a8b612a98957f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d612a4e612a9396612a00670de0b6b3a7640000601155565b612a1167016345785d8a0000600855565b600580546001600160a01b0319166001600160a01b0383161790555b60408051600081526001600160a01b03909216602083015290918291820190565b0390a1612a5a43600955565b612a6b670de0b6b3a7640000600a55565b600680546001600160a01b0319166001600160a01b038316179055612a2d565b0390a1612c5a565b612d42565b60ff1660ff196003541617600355565b612abe6201000062ff0000196000541617600055565b6001600160a01b03811615611b3a57600080546301000000600160b81b03191660189290921b6301000000600160b81b0316919091179055565b60405163a2ec3a5560e01b8152600490fd5b604051634743547560e01b8152600490fd5b50600a54151561298c565b90816020910312610402575190565b6040513d6000823e3d90fd5b919261051b95949160a094600180871b0380921685521660208401526040830152606082015281608082015201906104ca565b90601f8211612b82575050565b6001916000908382527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f850160051c83019410612bdf575b601f0160051c01915b828110612bd55750505050565b8181558301612bc8565b9092508290612bbf565b601f8111612bf5575050565b600090600282527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906020601f850160051c83019410612c50575b601f0160051c01915b828110612c4557505050565b818155600101612c39565b9092508290612c30565b90815167ffffffffffffffff811161046b57600190612c8281612c7d8454610407565b612b75565b602080601f8311600114612cbd575081929394600092612cb2575b5050600019600383901b1c191690821b179055565b015190503880612c9d565b90601f19831695612cf060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b926000905b888210612d2b5750508385969710612d12575b505050811b019055565b015160001960f88460031b161c19169055388080612d08565b808785968294968601518155019501930190612cf5565b90815167ffffffffffffffff811161046b57612d6881612d63600254610407565b612be9565b602080601f8311600114612da45750819293600092612d99575b50508160011b916000199060031b1c191617600255565b015190503880612d82565b90601f19831694612dd760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90565b926000905b878210612e14575050836001959610612dfb575b505050811b01600255565b015160001960f88460031b161c19169055388080612df0565b80600185968294968601518155019501930190612ddc565b15612e3357565b60405162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b9190820391821161103257565b90670de0b6b3a7640000820180921161103257565b9190820180921161103257565b909192612ec46107a06107a060055460018060a01b031690565b803b15610402576040516317b9b84b60e31b81523060048201526001600160a01b0385811660248301528616604482015260648101839052906000908290608490829084905af180156108955761306a575b506001600160a01b03848116948482169491929185871461305857600080516020614b4283398151915294612fe8948116870361302f576000195b612f5b8582612e7b565b93612fce612f7f876115b18760018060a01b0316600052600e602052604060002090565b91612fa688612fa08360018060a01b0316600052600e602052604060002090565b54612e9d565b6001600160a01b038781166000908152600e6020526040808220969096559216825292902090565b5519612ff0575b5050604051918252509081906020820190565b0390a3600090565b61300f6130269260018060a01b0316600052600f602052604060002090565b9060018060a01b0316600052602052604060002090565b55388080612fd5565b6001600160a01b0382166000908152600f6020526040902061305290829061300f565b54612f51565b604051638cd22d1960e01b8152600490fd5b80610b4761307792610457565b38612f16565b90662386f26fc100009182810292818404149015171561103257565b90670429d069189e00009182810292818404149015171561103257565b8181029291811591840414171561103257565b81156130d3570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03166000908152601060205260409020805490811561312457600161311b61051b93600a54906130b6565b910154906130c9565b5050600090565b6000549061313e60ff8360101c16612e2c565b62ff0000199182166000556131516131b8565b506201000061315e613169565b926000541617600055565b600d5480613178575060075490565b60125490600b54820180921161103257600c54918281039281841161103257670de0b6b3a764000080850294850414911417156110325761051b916130c9565b60095443811461332057601254600b5490600c5492600a54926131e86107a06107a060065460018060a01b031690565b6040516315f2405360e01b81526004810185905260248101839052604481018790529590602090879060649082905afa958615610895576132b086611caf61201261329e996132aa6132817f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049d6132f49b6132d1996000926132fc575b506132709043612e7b565b90613279610c91565b908152614ab5565b97611caf6120126132956120128d8d614ab5565b9e8f9c8d612e9d565b9b600854613279610c91565b96614ab5565b916132ba43600955565b6132c383600a55565b6132cc84600b55565b600c55565b604051948594859094939260609260808301968352602083015260408201520152565b0390a1600090565b6132709192506133199060203d8111610b3357610b2381836104a8565b9190613265565b50600090565b600554919291613340906107a0906001600160a01b031681565b803b1561040257604051634ef4c3e160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108955761348e575b50600954430361347c576133bb6133b46133a2613169565b946133ab610c91565b95865283613552565b9384614b1c565b6133ca61159682600d54612e9d565b6001600160a01b0382166000908152600e602052604090206133ed908290612fa0565b6001600160a01b0383166000908152600e6020526040902055604080516001600160a01b0384168152602081018690529081018290527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a16040519081526001600160a01b0391909116903090600080516020614b4283398151915290602090a360009190565b604051633393b25760e01b8152600490fd5b80610b4761349b92610457565b3861338a565b6005549192916134bb906107a0906001600160a01b031681565b803b1561040257604051634ef4c3e160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108955761353f575b50600954430361347c576133bb61351a613169565b613522610c91565b90815261353961353486601254612e9d565b601255565b84614b1c565b80610b4761354c92610457565b38613505565b60008054909291906001600160a01b03906135719060181c82166107a0565b6040516370a0823160e01b808252306004830152909490936020939192909116908386602481855afa9586156108955787966136c2575b50813b156136be576040516323b872dd60e01b81526001600160a01b03919091166004820152306024820152604481019290925285908290606490829084905af18015610895576136ab575b503d80156136a257602014613607578380fd5b8084803e83515b15613671578354819061362e906107a09060181c6001600160a01b031681565b604051938452306004850152839060249082905afa9384156108955793613683575b50508082106136715761366291612e7b565b61051b61353482601254612e9d565b60405163065559c560e51b8152600490fd5b61369a929350803d10610b3357610b2381836104a8565b903880613650565b5060001961360e565b80610b476136b892610457565b386135f4565b8680fd5b6136da919650843d8611610b3357610b2381836104a8565b94386135a8565b8115159182806138a3575b61204c576136f8613169565b92613701610c91565b9384521561388f57612012816137179294614ab5565b905b600554613730906107a0906001600160a01b031681565b803b156104025760405163eabe7d9160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108955761387c575b50600954430361386a578160125410613858576132f4836137c16115967fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92996600d54612e7b565b6001600160a01b0383166000908152600e602052604090206137e49082906115b1565b6001600160a01b0384166000908152600e60205260409020556138078484613a2d565b60405181815230906001600160a01b03851690600080516020614b428339815191529080602081015b0390a360405193849384604091949392606082019560018060a01b0316825260208201520152565b6040516391240a1b60e01b8152600490fd5b60405163a17754ef60e01b8152600490fd5b80610b4761388992610457565b3861377a565b509061389a90614b11565b90600090613719565b5060006136ec565b811515918280613a25575b61204c576138c2613169565b926138cb610c91565b93845215613a1157612012816138e19294614ab5565b905b6005546138fa906107a0906001600160a01b031681565b803b156104025760405163eabe7d9160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af18015610895576139fe575b50600954430361386a578160125410613858576132f48361398b6115967fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92996600d54612e7b565b6001600160a01b0383166000908152600e602052604090206139ae9082906115b1565b6001600160a01b0384166000908152600e60205260409020556001600160a01b0383166139db8582613b3e565b604051828152309190600080516020614b42833981519152908060208101613830565b80610b47613a0b92610457565b38613944565b5090613a1c90614b11565b906000906138e3565b5060006138b6565b60008054909392908490613a4e906107a09060181c6001600160a01b031681565b92833b15613af55760405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101839052928390604490829084905af190811561089557613aa49261353492613ae2575b50601254612e7b565b3d8015613ad757602014613ab6575080fd5b90602081803e515b15613ac557565b604051637308799360e11b8152600490fd5b509050600019613abe565b80610b47613aef92610457565b38613a9b565b5080fd5b90816020910312610402575161051b81610627565b3d15613b39573d90613b1f82610ca0565b91613b2d60405193846104a8565b82523d6000602084013e565b606090565b600554909190613b58906107a0906001600160a01b031681565b60405180916334cc866d60e21b825281600460209485935afa90811561089557600091613c65575b506040516379befbd160e01b83820190815260248201859052600091829190613bb681604481015b03601f1981018352826104a8565b519082855af1613bc4613b0e565b5015613bdf5750610c9e926001600160a01b03169050613a2d565b9092613c3a9284926001600160a01b031690613bfb8183613a2d565b604051633033674760e11b81526001600482015260248101919091526001600160a01b0390921660448301529092839190829060009082906064820190565b03925af1801561089557613c4c575050565b81613c6292903d10610b3357610b2381836104a8565b50565b613c859150823d8411613c8b575b613c7d81836104a8565b810190613af9565b38613b80565b503d613c73565b600554909190613cac906107a0906001600160a01b031681565b60405180916334cc866d60e21b825281600460209485935afa90811561089557600091613d82575b506040516379befbd160e01b83820190815260248201859052600091829190613d008160448101613ba8565b519082855af1613d0e613b0e565b5015613d295750610c9e926001600160a01b03169050613a2d565b9092613c3a9284926001600160a01b031690613d458183613a2d565b604051633033674760e11b815260006004820181905260248201929092526001600160a01b03909316604484015291938492839182906064820190565b613d999150823d8411613c8b57613c7d81836104a8565b38613cd4565b600554929392909190613dbc906107a0906001600160a01b031681565b803b1561040257604051631200453160e11b81523060048201526001600160a01b0384811660248301528316604482015260648101869052906000908290608490829084905af1801561089557613f07575b506009544303613ef5577f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a191613eec613e63613e5c613e56613e4f866130e9565b8099614a6a565b84613552565b8097612e7b565b613e6f87600b54612e7b565b9080613e8d8660018060a01b03166000526010602052604060002090565b55600a546001600160a01b038616600090815260106020526040902060010155613eb682600b55565b876040519586958691959493909260809360a084019760018060a01b038092168552166020840152604083015260608201520152565b0390a160009190565b60405163c714a2d560e01b8152600490fd5b80610b47613f1492610457565b38613e0e565b6001600160a01b0391821681529181166020830152918216604082015291166060820152608081019190915260a00190565b6005549095949193919290613f6b906107a0906001600160a01b031681565b803b15610402576000828492878360409b613f9c8d519788968795869463d02f735160e01b86523060048701613f1a565b03925af1801561089557614140575b506001600160a01b03848116939082169081851461412f57613fe7670de0b6b3a764000091670429d069189e0000613fe1610c91565b52613099565b049081841061411e57613320969782614116926140278796957fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc598612e7b565b9861403f61201284614037613169565b613279610c91565b956140a461408861405289600c54612e9d565b9961405c8b600c55565b61406b61159688600d54612e7b565b6001600160a01b0384166000908152600e602052604090206115b1565b6001600160a01b039092166000908152600e6020526040902090565b556140c86140888b612fa08460018060a01b0316600052600e602052604060002090565b558251898152600080516020614b428339815191529089908390839080602081015b0390a383519283523092602090a351308152602081019290925260408201929092529081906060820190565b0390a16136e1565b8751632c3508cb60e21b8152600490fd5b8751637a2d3db360e01b8152600490fd5b80610b4761414d92610457565b38613fab565b600554919594909161416f906107a0906001600160a01b031681565b803b1561040257600084869289836040976141a089519788968795869463d02f735160e01b86523060048701613f1a565b03925af18015610895576142f0575b506001600160a01b0386811697908416918289146142df57670de0b6b3a7640000919087156142c25750806141ed916141e6610c91565b52866130b6565b04905b8185106142b157918185949361422a614297947fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc598612e7b565b9861423a61201284614037613169565b9561424d61408861405289600c54612e9d565b556142716140888b612fa08460018060a01b0316600052600e602052604060002090565b558251898152600080516020614b42833981519152908b908390839080602081016140ea565b0390a1156142a857613320916138ab565b613320916136e1565b8251632c3508cb60e21b8152600490fd5b6142d89150670429d069189e0000613fe1610c91565b04906141f0565b8351637a2d3db360e01b8152600490fd5b80610b476142fd92610457565b386141af565b90816020910312610402575161051b81610df8565b9081606091031261040257805161432e81610df8565b916040602083015161433f81611f02565b92015161051b81610df8565b51906effffffffffffffffffffffffffffff8216820361040257565b908160c0910312610402576040519060c0820182811067ffffffffffffffff82111761046b576143f49160a09160405280516143a281610df8565b845260208101516143b281610df8565b602085015260408101516143c581610df8565b604085015260608101516143d881610df8565b60608501526143e96080820161434b565b60808501520161434b565b60a082015290565b1561440357565b60405162461bcd60e51b81526020600482015260166024820152751c995c185e481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b1561444857565b60405162461bcd60e51b81526020600482015260166024820152751cd95a5e99481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b519061ffff8216820361040257565b9081606091031261040257604051906060820182811067ffffffffffffffff82111761046b576144e69160409182526144cd81614486565b84526144db60208201614486565b602085015201614486565b604082015290565b600554919291614508906107a0906001600160a01b031681565b60408051638e8f294b60e01b80825230600480840191909152939690939092909160609081816024818c5afa908115610895576000908192614845575b5061454f906143fc565b82519586526001600160a01b03871684870190815282908790819060200103818c5afa958615610895576000908197614822575b5061458d90614441565b825163231d97a560e21b8152828186818d5afa928315610895576000936147f3575b505060ff806145d26145cd6145c6865161ffff1690565b61ffff1690565b61307d565b9716911614614771575b5080516312bdd04160e31b8082523084830190815291966020939092909190849089908190830103818d5afa97881561089557600098614750575b5081519081526001600160a01b038316858201908152909984918b91908290819060200103915afa9889156108955760009961472d575b505163182df0f560e01b815292829184919082906001600160a01b03165afa8015610895576146f6612012956146f06146e987946147029a6146fc9861201298600093614708575b50506146e0906146c46146a887612e88565b6146b0610c91565b9081526146bb610c91565b90838252614a7c565b956146cd610c91565b9081526146d8610c91565b918252614a7c565b9c6146cd610c91565b8092614adc565b99614adc565b97614ab5565b94614ab5565b60009291565b6146e0929350908161472592903d10610b3357610b2381836104a8565b919038614696565b839291995061474890833d8511610b3357610b2381836104a8565b98909161464e565b8491985061476a90823d8411610b3357610b2381836104a8565b9790614617565b8151637f4e225760e11b8152919450906020818481305afa80156108955785916000916147d5575b506147b95701516147b1906145cd9061ffff166145c6565b925b386145dc565b506145cd6145c660206147cf93015161ffff1690565b926147b3565b6147ed915060203d811161088e5761087f81836104a8565b38614799565b614813929350803d1061481b575b61480b81836104a8565b810190614495565b9038806145af565b503d614801565b61458d975061483e9150833d8511611ee057611ecf81836104a8565b5096614583565b61454f92506148619150833d8511611ee057611ecf81836104a8565b5091614545565b906148716131b8565b50600554614889906107a0906001600160a01b031681565b91823b156104025760405163368f515360e21b81523060048201526001600160a01b03821660248201526044810183905260009384908290606490829084905af1801561089557614a57575b506009544303614a45578160125410614a33576001600160a01b038116907f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab8061492184611caf856130e9565b61492d85600b54612e9d565b908061494b8560018060a01b03166000526010602052604060002090565b55600a546001600160a01b03851660009081526010602052604090206001015561497482600b55565b61498361353487601254612e7b565b604080516001600160a01b038616815260208101889052908101919091526060810191909152608090a16005546149c4906107a0906001600160a01b031681565b90813b15614a2f57604051631407e28160e01b81526001600160a01b039190911660048201526024810184905292919084908490604490829084905af192831561089557614a1793614a1c575b506134a1565b505090565b80610b47614a2992610457565b38614a11565b8480fd5b6040516348c2588160e01b8152600490fd5b604051630a42bc3960e41b8152600490fd5b80610b47614a6492610457565b386148d5565b9080821015614a77575090565b905090565b670de0b6b3a764000091614aa2916000604051614a9881610470565b52519051906130b6565b0460405190614ab082610470565b815290565b90614acf916000604051614ac881610470565b52516130b6565b60405190614ab082610470565b6000604051614aea81610470565b5251670de0b6b3a76400009081810291818304149015171561103257614acf9151906130c9565b51156130d357600090565b670de0b6b3a7640000908181029181830414901517156110325761051b9151906130c956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122080dae855bb7b291b45342292e86cc4219f4958ecec962abe0830e5e38f7d3e8f64736f6c63430008130033";
17
+ static readonly bytecode = "0x60808060405234620000d257670de0b6b3a76400006011556013549060ff8260081c1662000080575060ff8082161062000044575b604051614bc79081620000d88239f35b60ff90811916176013557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000034565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806306fdde03146104025780630786f223146103fd578063095ea7b3146103f85780630e752702146103f3578063134131a2146103ee578063173b9904146103e957806317bfdfbc146103e457806318160ddd146103df578063182df0f5146103da5780631be19560146103d557806323b872dd146103d05780632608f818146103cb57806326782247146103c65780632826c1a1146103c15780632d7183f6146103bc578063313ce567146103b75780633af9e669146103b25780633b1d21a21461038f5780633e941010146103ad5780634000fbad146103a857806341e34006146103a357806342f3251a1461039e5780634576b5db1461039957806347bd37181461039457806359356c5c1461038f5780635fe3b5671461038a578063601a0bf1146103855780636752e702146103805780636c540baf1461037b5780636f307dc31461037657806370a082311461037157806373acee981461036c578063852a12e3146103675780638f840ddd1461036257806395d89b411461035d57806395dd9193146103585780639b1a5bf4146103535780639e2116411461034e578063a0712d6814610349578063a3e94ddd14610344578063a6afed951461033f578063a9059cbb1461033a578063aa5af0fd14610335578063ac784ddc14610330578063ae9d70b01461032b578063b586638214610326578063b71d1a0c14610321578063bd6d894d1461031c578063c37f68e214610317578063c5ebeaec14610312578063c71782301461030d578063d4af8de214610308578063db006a7514610303578063dd62ed3e146102fe578063e9c714f2146102f9578063eac1fed0146102f4578063f2b3abbd146102ef578063f3fdb15a146102ea578063f5e3c462146102e5578063f851a440146102e0578063f8f9da28146102db578063fca7820b146102d65763fe9c44ae146102d157600080fd5b612836565b61276b565b612712565b6126e5565b612352565b612329565b612221565b612200565b6120d8565b612075565b611fb2565b611f1d565b611dcd565b611bea565b611b77565b611b5c565b611ab2565b611a1b565b611979565b61195d565b61193f565b6118f0565b6118d5565b611861565b611818565b61176f565b61174c565b611725565b61167e565b611660565b6114ac565b61145c565b61141f565b6113f2565b6113d4565b6113b1565b611295565b61126c565b610f50565b61124e565b611141565b611123565b6110da565b611059565b610f6e565b610ee6565b610ec5565b610e12565b610d47565b610c78565b610c21565b610bb4565b6109c5565b6109a2565b610984565b610921565b610903565b610733565b6106d7565b610648565b610611565b61052e565b600091031261041257565b600080fd5b90600182811c92168015610447575b602083101461043157565b634e487b7160e01b600052602260045260246000fd5b91607f1691610426565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161047b57604052565b610451565b6020810190811067ffffffffffffffff82111761047b57604052565b6040810190811067ffffffffffffffff82111761047b57604052565b90601f8019910116810190811067ffffffffffffffff82111761047b57604052565b919082519283825260005b848110610506575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016104e5565b90602061052b9281815201906104da565b90565b346104125760008060031936011261060e576040519080600180549161055383610417565b808652928281169081156105e4575060011461058a575b6105868561057a818703826104b8565b6040519182918261051a565b0390f35b92508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106105cc57505050810160200161057a8261058661056a565b805460208587018101919091529093019281016105b1565b8695506105869693506020925061057a94915060ff191682840152151560051b820101929361056a565b80fd5b3461041257600036600319011261041257602060ff60005460081c166040519015158152f35b6001600160a01b0381160361041257565b346104125760403660031901126104125760043561066581610637565b6024359033600052600f602052816106938260406000209060018060a01b0316600052602052604060002090565b556040519182526001600160a01b03169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3602060405160018152f35b346104125760203660031901126104125760206000546106fc60ff8260101c16612e5d565b62ff00001990811660005561070f6131e8565b50620100006107216004353333613dcf565b50916000541617600055604051908152f35b34610412576040806003193601126104125760049081359161075483610637565b60005461076660ff8260101c16612e5d565b62ff000019166000558151637f4e225760e11b815260209081818481335afa9081156108a5576000916108e6575b506108d7576005546107bc906107b0906001600160a01b031681565b6001600160a01b031690565b8351637bca031760e11b808252338583019081529091908490829081906020010381865afa9081156108a5576000916108ba575b50156108aa57845190815230848201908152909183918391908290819060200103915afa9182156108a557600092610878575b50501561086a57506105869161084590602435906001600160a01b0316614898565b9061085c6201000062ff0000196000541617600055565b519081529081906020820190565b90516334b04fe360e11b8152fd5b6108979250803d1061089e575b61088f81836104b8565b810190614333565b3880610823565b503d610885565b612b67565b84516334b04fe360e11b81528490fd5b6108d19150843d861161089e5761088f81836104b8565b386107f0565b509051634a8af12d60e01b8152fd5b6108fd9150823d841161089e5761088f81836104b8565b38610794565b34610412576000366003190112610412576020600854604051908152f35b3461041257602036600319011261041257602060043561094081610637565b620100006109736000549261095a60ff8560101c16612e5d565b62ff00001993841660005561096d6131e8565b50613119565b916000541617600055604051908152f35b34610412576000366003190112610412576020600d54604051908152f35b346104125760003660031901126104125760206109bd613199565b604051908152f35b34610412576020806003193601126104125760048035916109e583610637565b6000805490936001600160a01b039081169160181c16808214610ba3576040516370a0823160e01b80825230868301908152919390929091859185918290819060200103915afa9283156108a5578693610b84575b50604051828152308682019081528590829081906020010381855afa80156108a55787918291610b67575b5060035460081c6001600160a01b031692803b15610b63576040805163a9059cbb60e01b81526001600160a01b03909516898601908152602081019390935284928391859183910103925af180156108a557610b4a575b5084548390610ad8906107b09060181c6001600160a01b031681565b604051928352308684019081528391908290819060200103915afa9283156108a5578593610b1b575b505003610b0c575080f35b6040516346edcd5360e11b8152fd5b610b3b929350803d10610b43575b610b3381836104b8565b810190612b58565b903880610b01565b503d610b29565b80610b57610b5d92610467565b80610407565b38610abc565b8280fd5b610b7e9150863d8811610b4357610b3381836104b8565b38610a65565b610b9c919350843d8611610b4357610b3381836104b8565b9138610a3a565b604051632f028cfb60e01b81528490fd5b34610412576060366003190112610412576020600435610bd381610637565b62010000610c0f60243592610be784610637565b60005493610bfa60ff8660101c16612e5d565b62ff0000199485166000556044359133612edb565b15916000541617600055604051908152f35b34610412576040366003190112610412576020600435610c4081610637565b6201000061072160005492610c5a60ff8560101c16612e5d565b62ff000019938416600055610c6d6131e8565b506024359033613dcf565b34610412576000366003190112610412576004546040516001600160a01b039091168152602090f35b60405190610cae82610480565b565b67ffffffffffffffff811161047b57601f01601f191660200190565b929192610cd882610cb0565b91610ce660405193846104b8565b829481845281830111610412578281602093846000960137010152565b60606003198201126104125760043591602435916044359067ffffffffffffffff821161041257806023830112156104125781602461052b93600401359101610ccc565b3461041257610d5536610d03565b60008054919392909160181c6001600160a01b031690813b15610b6357938291610d999583604051809881958294639fd5a6cf60e01b84528a303360048701612b73565b03925af19283156108a55761058693610df9575b5062010000610de0825493610dc760ff8660101c16612e5d565b62ff0000199485168455610dd96131e8565b5033613356565b5092825416179055604051918291829190602083019252565b610e0290610467565b38610dad565b8015150361041257565b346104125760c036600319011261041257610586600435610e3281610637565b62010000610e9a602435610e4581610637565b608435610e5181610e08565b60a4359160005495610e6860ff8860101c16612e5d565b62ff0000199687166000558315610ebc575b670de0b6b3a7640000808511610eb4575b50606435916044359133614183565b916000541617600055604051918291829190602083019252565b935038610e8b565b60009350610e7a565b3461041257600036600319011261041257602060ff60035416604051908152f35b34610412576020366003190112610412576020670de0b6b3a7640000610f46600435610f1181610637565b610f1961315b565b9060405191610f2783610480565b82526001600160a01b03166000908152600e8552604090205490614ae5565b5104604051908152f35b34610412576000366003190112610412576020601254604051908152f35b3461041257602036600319011261041257600054610f9160ff8260101c16612e5d565b62ff00001916600055610fa26131e8565b50600954430361104757610fb860043533613582565b600c548181019081811161104257811061103057600c8190556040805133815260208101939093528201527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59080606081015b0390a16110246201000062ff0000196000541617600055565b60405160008152602090f35b6040516335c973c760e21b8152600490fd5b612e96565b604051639d4e8c1b60e01b8152600490fd5b34610412576020366003190112610412576003546004359060081c6001600160a01b031633036110c857601180549082905560408051918252602080830184905292917f68e61dbc80efc8af787740901509a321d0fc29f4e432fae6c4e175867b9614439190a1604051908152f35b604051634755657960e01b8152600490fd5b34610412576040366003190112610412576105866111066004356110fd81610637565b6024359061451e565b604080519384526020840192909252908201529081906060820190565b34610412576000366003190112610412576020601154604051908152f35b346104125760203660031901126104125760043561115e81610637565b6003546001600160a01b03919060081c821633036110c8576005546004906020906001600160a01b03169360405192838092623f1ee960e11b825286165afa9081156108a557600091611230575b501561121e57600580546001600160a01b0319166001600160a01b0383161790557f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d915b604080516001600160a01b039283168152929091166020830152819081015b0390a160405160008152602090f35b6040516383aebebd60e01b8152600490fd5b611248915060203d811161089e5761088f81836104b8565b386111ac565b34610412576000366003190112610412576020600b54604051908152f35b34610412576000366003190112610412576005546040516001600160a01b039091168152602090f35b34610412576020366003190112610412576004356000546112bb60ff8260101c16612e5d565b62ff000019166000556112cc6131e8565b5060035460081c6001600160a01b031633036110c857600954430361139f57806012541061138d57600c549081811161137b5761132a817f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e93612eac565b61133381600c55565b60035461134d90839060081c6001600160a01b0316613a5d565b6003546040805160089290921c6001600160a01b03168252602082019390935291820152806060810161100b565b60405163152125f760e21b8152600490fd5b604051633345e99960e01b8152600490fd5b604051631747e30360e21b8152600490fd5b34610412576000366003190112610412576020604051670429d069189e00008152f35b34610412576000366003190112610412576020600954604051908152f35b346104125760003660031901126104125760005460405160189190911c6001600160a01b03168152602090f35b346104125760203660031901126104125760043561143c81610637565b60018060a01b0316600052600e6020526020604060002054604051908152f35b346104125760008060031936011261060e5780602091549061148360ff8360101c16612e5d565b62ff00001991821681556114956131e8565b5062010000600b5492825416179055604051908152f35b3461041257602036600319011261041257600435600080546114d360ff8260101c16612e5d565b62ff00001990811682556114e56131e8565b506115026114f1613199565b6114f9610ca1565b90815284614b4c565b600554611519906107b0906001600160a01b031681565b93843b1561165c576040805163eabe7d9160e01b815230600482015233602482015260448101849052909585908290606490829084905af180156108a557611649575b50600954430361163857806012541061162757817fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929916115ab6115a6620100009695600d54612eac565b600d55565b336000908152600e602052604090206115c79083905b54612eac565b336000908152600e60205260409020556115e18133613b6e565b865182815230903390600080516020614b7283398151915290602090a3865133815260208101919091526040810191909152606090a18254161790555160008152602090f35b84516391240a1b60e01b8152600490fd5b845163a17754ef60e01b8152600490fd5b80610b5761165692610467565b3861155c565b8380fd5b34610412576000366003190112610412576020600c54604051908152f35b346104125760008060031936011261060e5760405190806002546116a181610417565b808552916001918083169081156105e457506001146116ca576105868561057a818703826104b8565b9250600283527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b82841061170d57505050810160200161057a8261058661056a565b805460208587018101919091529093019281016116f2565b346104125760203660031901126104125760206109bd60043561174781610637565b613119565b3461041257600036600319011261041257602060ff600054166040519015158152f35b346104125761177d36610d03565b60008054919392909160181c6001600160a01b031690813b15610b63579382916117c19583604051809881958294639fd5a6cf60e01b84528a303360048701612b73565b03925af19283156108a55761058693611809575b5062010000610de08254936117ef60ff8660101c16612e5d565b62ff00001994851684556118016131e8565b503333613dcf565b61181290610467565b386117d5565b3461041257602036600319011261041257602060005461183d60ff8260101c16612e5d565b62ff0000199081166000556118506131e8565b506201000061072160043533613356565b346104125760203660031901126104125760043561187e81610637565b6000602060405161188e8161049c565b82815201526001600160a01b03166000908152601060205260409081902081516118b78161049c565b60206001835493848452015491019081528251918252516020820152f35b346104125760003660031901126104125760206109bd6131e8565b3461041257604036600319011261041257602060043561190f81610637565b62010000610c0f6000549261192960ff8560101c16612e5d565b62ff000019938416600055602435903380612edb565b34610412576000366003190112610412576020600a54604051908152f35b3461041257600036600319011261041257602060405160008152f35b3461041257600036600319011261041257600654601254600b54600c54600854604051635c0b440b60e11b815260048101949094526024840192909252604483015260648201529060209082906001600160a01b03168180608481015b03915afa80156108a557610586916000916119fd575b506040519081529081906020820190565b611a15915060203d8111610b4357610b3381836104b8565b386119ec565b346104125760008060031936011261060e576003546001600160a01b039060081c811633036110c85781546040516370a0823160e01b8152306004820152916020918391602491839160189190911c165afa80156108a557611a84918391611a87575b50601255565b80f35b611a9f915060203d8111610b4357610b3381836104b8565b38611a7e565b60e43590610cae82610637565b3461041257602036600319011261041257600435611acf81610637565b6003546001600160a01b039060081c811633036110c8576004548183168015611b4a576001600160a01b0319821617600455604080516001600160a01b0393909216831682529190921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991908190810161120f565b60405163e6c4247b60e01b8152600490fd5b346104125760003660031901126104125760206109bd61315b565b3461041257602036600319011261041257600435611b9481610637565b6001600160a01b0381166000908152600e602052604090205490611bb790613119565b90610586611bc3613199565b60115490604051948594859094939260609260808301968352602083015260408201520152565b346104125760203660031901126104125760043560008054611c1160ff8260101c16612e5d565b62ff0000199081168255611c236131e8565b50600554611c3b906107b0906001600160a01b031681565b92833b15610b63576040805163368f515360e21b815230600482015233602482015260448101839052909484908290606490829084905af180156108a557611dba575b506009544303611da9578060125410611d98577f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80611cc482611cbf33613119565b612ece565b611cd083600b54612ece565b336000908152601060205260409020828155600a54600190910155600b81905590611cfb8433613cc2565b86513381526020810185905260408101919091526060810191909152608090a1600554611d32906107b0906001600160a01b031681565b90813b1561165c578451631407e28160e01b81523360048201526024810191909152919083908390604490829084905af19182156108a5576201000092611d85575b508254161790555160008152602090f35b80610b57611d9292610467565b38611d74565b83516348c2588160e01b8152600490fd5b8351630a42bc3960e41b8152600490fd5b80610b57611dc792610467565b38611c7e565b3461041257600036600319011261041257600554611df5906107b0906001600160a01b031681565b604051638e8f294b60e01b8152306004820152606081602481855afa80156108a55760ff91600091611ec6575b5016159081611e53575b5080611e40575b6040519015158152602090f35b50600854670de0b6b3a764000014611e33565b604051632068e5f960e21b8152306004820152915060c090829060249082905afa9081156108a557611e9291602091600091611e98575b500151151590565b38611e2c565b611eb9915060c03d8111611ebf575b611eb181836104b8565b810190614397565b38611e8a565b503d611ea7565b611ee7915060603d8111611ef0575b611edf81836104b8565b810190614348565b50905038611e22565b503d611ed5565b9080601f830112156104125781602061052b93359101610ccc565b60ff81160361041257565b346104125761010036600319011261041257600435611f3b81610637565b602435611f4781610637565b604435611f5381610637565b67ffffffffffffffff9260843584811161041257611f75903690600401611ef7565b60a43594851161041257611f90611fb0953690600401611ef7565b9160c43593611f9e85611f12565b611fa6611aa5565b9560643592612852565b005b346104125760203660031901126104125760043560008054611fd960ff8260101c16612e5d565b62ff0000199081168255611feb6131e8565b5082151592838061206e575b61205c57612003613199565b9361200c610ca1565b9485521561204957612022816120319295614ae5565b670de0b6b3a764000090510490565b92600554611519906107b0906001600160a01b031681565b509161205490614b41565b918192611502565b60405163431f269d60e01b8152600490fd5b5082611ff7565b346104125760403660031901126104125760206120cf60043561209781610637565b602435906120a482610637565b60018060a01b0316600052600f835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b34610412576000366003190112610412576004546001600160a01b0316803381148015906121f8575b6121e6576003547fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc9161218d906121659060081c6001600160a01b03166107b0565b60038054610100600160a81b03191660089490941b610100600160a81b031693909317909255565b600480546001600160a01b0319169055600354604080516001600160a01b03938416815260089290921c9092166020820152a1600454604080516001600160a01b0393841681529290911660208301528190810161120f565b60405163d1ec4b2360e01b8152600490fd5b503315612101565b34610412576000366003190112610412576020604051655af3107a40008152f35b346104125760203660031901126104125760043561223e81610637565b6122466131e8565b506003546001600160a01b03919060081c821633036110c8576009544303612317576006546004906020906001600160a01b031693604051928380926310c8fc9560e11b825287165afa9081156108a5576000916122f9575b50156122e757600680546001600160a01b0319166001600160a01b0383161790557fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926916111f0565b60405163ee39b72560e01b8152600490fd5b612311915060203d811161089e5761088f81836104b8565b3861229f565b604051637b964b3b60e01b8152600490fd5b34610412576000366003190112610412576006546040516001600160a01b039091168152602090f35b3461041257606036600319011261041257600480359061237182610637565b602435916044359061238282610637565b600092835461239660ff8260101c16612e5d565b62ff0000191684556123a66131e8565b506040805163a6afed9560e01b815290956001600160a01b0385811695926020929190838187818c8c5af180156108a5576126c8575b506005546123f4906107b0906001600160a01b031681565b803b156126c457888a518092632fe3f38f60e11b8252818061241e888d8d8d339130908701613f4a565b03915afa80156108a5576126b1575b5060095443036126a1578851636c540baf60e01b8152838187818c8c5af19081156108a5578991612684575b504303612674578516331461266457801561265457600019811461264457612482908533613dcf565b95905061248f868461451e565b8a516370a0823160e01b81526001600160a01b038916818901908152919a9297929350908590829081906020010381875afa80156108a55787918491612627575b50106126195730830361256f57505050509061254c916125147f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529683863330613f7c565b505b86513381526001600160a01b039485166020820152604081019590955290921660608401526080830191909152819060a0820190565b0390a16125656201000062ff0000196000541617600055565b5160008152602090f35b89516316b8c1fb60e11b8152339181019182526001600160a01b038816602083015260408201879052606082019990995260006080820181905260a082015292949392859289929183900360c0019183915af19283156108a5577f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529661254c946125fb575b5050612516565b8161261192903d10610b4357610b3381836104b8565b5038806125f4565b8951630e7a24eb60e11b8152fd5b61263e9150863d8811610b4357610b3381836104b8565b386124d0565b875163f72ef4e160e01b81528490fd5b875163b2f72f4760e01b81528490fd5b875163039f861b60e51b81528490fd5b8851633e88627b60e11b81528590fd5b61269b9150843d8611610b4357610b3381836104b8565b38612459565b885163fbf3ea7960e01b81528590fd5b80610b576126be92610467565b3861242d565b8880fd5b6126de90843d8611610b4357610b3381836104b8565b50386123dc565b346104125760003660031901126104125760035460405160089190911c6001600160a01b03168152602090f35b3461041257600036600319011261041257600654601254600b54600c546040516315f2405360e01b81526004810193909352602483019190915260448201529060209082906001600160a01b03168180606481016119d6565b346104125760203660031901126104125760043560005461279160ff8260101c16612e5d565b62ff000019166000556127a26131e8565b5060035460081c6001600160a01b031633036110c857600954430361282457670de0b6b3a764000081116128125760088054908290556040805191825260208201929092527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460918190810161100b565b604051631b9bc96960e11b8152600490fd5b604051637b452e8160e11b8152600490fd5b3461041257600036600319011261041257602060405160018152f35b95939196949290966013549760ff8960081c16158099819a612976575b8115612956575b50156128fa5761289c9789612893600160ff196013541617601355565b6128e157612984565b6128a257565b6128b261ff001960135416601355565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b6128f561010061ff00196013541617601355565b612984565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081612968575b5038612876565b6001915060ff161438612961565b600160ff821610915061286f565b60038054610100600160a81b03191660089990991b610100600160a81b0316989098179097559294939092909160095415801590612b4d575b612b3b5760075560075415612b2957612ad9947fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926612abc612ac9957f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d612a7f612ac496612a31670de0b6b3a7640000601155565b612a4267016345785d8a0000600855565b600580546001600160a01b0319166001600160a01b0383161790555b60408051600081526001600160a01b03909216602083015290918291820190565b0390a1612a8b43600955565b612a9c670de0b6b3a7640000600a55565b600680546001600160a01b0319166001600160a01b038316179055612a5e565b0390a1612c8b565b612d73565b60ff1660ff196003541617600355565b612aef6201000062ff0000196000541617600055565b6001600160a01b03811615611b4a57600080546301000000600160b81b03191660189290921b6301000000600160b81b0316919091179055565b60405163a2ec3a5560e01b8152600490fd5b604051634743547560e01b8152600490fd5b50600a5415156129bd565b90816020910312610412575190565b6040513d6000823e3d90fd5b919261052b95949160a094600180871b0380921685521660208401526040830152606082015281608082015201906104da565b90601f8211612bb3575050565b6001916000908382527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f850160051c83019410612c10575b601f0160051c01915b828110612c065750505050565b8181558301612bf9565b9092508290612bf0565b601f8111612c26575050565b600090600282527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906020601f850160051c83019410612c81575b601f0160051c01915b828110612c7657505050565b818155600101612c6a565b9092508290612c61565b90815167ffffffffffffffff811161047b57600190612cb381612cae8454610417565b612ba6565b602080601f8311600114612cee575081929394600092612ce3575b5050600019600383901b1c191690821b179055565b015190503880612cce565b90601f19831695612d2160016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b926000905b888210612d5c5750508385969710612d43575b505050811b019055565b015160001960f88460031b161c19169055388080612d39565b808785968294968601518155019501930190612d26565b90815167ffffffffffffffff811161047b57612d9981612d94600254610417565b612c1a565b602080601f8311600114612dd55750819293600092612dca575b50508160011b916000199060031b1c191617600255565b015190503880612db3565b90601f19831694612e0860026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90565b926000905b878210612e45575050836001959610612e2c575b505050811b01600255565b015160001960f88460031b161c19169055388080612e21565b80600185968294968601518155019501930190612e0d565b15612e6457565b60405162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b9190820391821161104257565b90670de0b6b3a7640000820180921161104257565b9190820180921161104257565b909192612ef56107b06107b060055460018060a01b031690565b803b15610412576040516317b9b84b60e31b81523060048201526001600160a01b0385811660248301528616604482015260648101839052906000908290608490829084905af180156108a55761309b575b506001600160a01b03848116948482169491929185871461308957600080516020614b72833981519152946130199481168703613060576000195b612f8c8582612eac565b93612fff612fb0876115c18760018060a01b0316600052600e602052604060002090565b91612fd788612fd18360018060a01b0316600052600e602052604060002090565b54612ece565b6001600160a01b038781166000908152600e6020526040808220969096559216825292902090565b5519613021575b5050604051918252509081906020820190565b0390a3600090565b6130406130579260018060a01b0316600052600f602052604060002090565b9060018060a01b0316600052602052604060002090565b55388080613006565b6001600160a01b0382166000908152600f60205260409020613083908290613040565b54612f82565b604051638cd22d1960e01b8152600490fd5b80610b576130a892610467565b38612f47565b90655af3107a40009182810292818404149015171561104257565b90670429d069189e00009182810292818404149015171561104257565b8181029291811591840414171561104257565b8115613103570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b03166000908152601060205260409020805490811561315457600161314b61052b93600a54906130e6565b910154906130f9565b5050600090565b6000549061316e60ff8360101c16612e5d565b62ff0000199182166000556131816131e8565b506201000061318e613199565b926000541617600055565b600d54806131a8575060075490565b60125490600b54820180921161104257600c54918281039281841161104257670de0b6b3a764000080850294850414911417156110425761052b916130f9565b60095443811461335057601254600b5490600c5492600a54926132186107b06107b060065460018060a01b031690565b6040516315f2405360e01b81526004810185905260248101839052604481018790529590602090879060649082905afa9586156108a5576132e086611cbf6120226132ce996132da6132b17f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049d6133249b6133019960009261332c575b506132a09043612eac565b906132a9610ca1565b908152614ae5565b97611cbf6120226132c56120228d8d614ae5565b9e8f9c8d612ece565b9b6008546132a9610ca1565b96614ae5565b916132ea43600955565b6132f383600a55565b6132fc84600b55565b600c55565b604051948594859094939260609260808301968352602083015260408201520152565b0390a1600090565b6132a09192506133499060203d8111610b4357610b3381836104b8565b9190613295565b50600090565b600554919291613370906107b0906001600160a01b031681565b803b1561041257604051634ef4c3e160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108a5576134be575b5060095443036134ac576133eb6133e46133d2613199565b946133db610ca1565b95865283613582565b9384614b4c565b6133fa6115a682600d54612ece565b6001600160a01b0382166000908152600e6020526040902061341d908290612fd1565b6001600160a01b0383166000908152600e6020526040902055604080516001600160a01b0384168152602081018690529081018290527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9080606081010390a16040519081526001600160a01b0391909116903090600080516020614b7283398151915290602090a360009190565b604051633393b25760e01b8152600490fd5b80610b576134cb92610467565b386133ba565b6005549192916134eb906107b0906001600160a01b031681565b803b1561041257604051634ef4c3e160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108a55761356f575b5060095443036134ac576133eb61354a613199565b613552610ca1565b90815261356961356486601254612ece565b601255565b84614b4c565b80610b5761357c92610467565b38613535565b60008054909291906001600160a01b03906135a19060181c82166107b0565b6040516370a0823160e01b808252306004830152909490936020939192909116908386602481855afa9586156108a55787966136f2575b50813b156136ee576040516323b872dd60e01b81526001600160a01b03919091166004820152306024820152604481019290925285908290606490829084905af180156108a5576136db575b503d80156136d257602014613637578380fd5b8084803e83515b156136a1578354819061365e906107b09060181c6001600160a01b031681565b604051938452306004850152839060249082905afa9384156108a557936136b3575b50508082106136a15761369291612eac565b61052b61356482601254612ece565b60405163065559c560e51b8152600490fd5b6136ca929350803d10610b4357610b3381836104b8565b903880613680565b5060001961363e565b80610b576136e892610467565b38613624565b8680fd5b61370a919650843d8611610b4357610b3381836104b8565b94386135d8565b8115159182806138d3575b61205c57613728613199565b92613731610ca1565b938452156138bf57612022816137479294614ae5565b905b600554613760906107b0906001600160a01b031681565b803b156104125760405163eabe7d9160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108a5576138ac575b50600954430361389a57816012541061388857613324836137f16115a67fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92996600d54612eac565b6001600160a01b0383166000908152600e602052604090206138149082906115c1565b6001600160a01b0384166000908152600e60205260409020556138378484613a5d565b60405181815230906001600160a01b03851690600080516020614b728339815191529080602081015b0390a360405193849384604091949392606082019560018060a01b0316825260208201520152565b6040516391240a1b60e01b8152600490fd5b60405163a17754ef60e01b8152600490fd5b80610b576138b992610467565b386137aa565b50906138ca90614b41565b90600090613749565b50600061371c565b811515918280613a55575b61205c576138f2613199565b926138fb610ca1565b93845215613a4157612022816139119294614ae5565b905b60055461392a906107b0906001600160a01b031681565b803b156104125760405163eabe7d9160e01b81523060048201526001600160a01b038316602482015260448101859052906000908290606490829084905af180156108a557613a2e575b50600954430361389a57816012541061388857613324836139bb6115a67fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a92996600d54612eac565b6001600160a01b0383166000908152600e602052604090206139de9082906115c1565b6001600160a01b0384166000908152600e60205260409020556001600160a01b038316613a0b8582613b6e565b604051828152309190600080516020614b72833981519152908060208101613860565b80610b57613a3b92610467565b38613974565b5090613a4c90614b41565b90600090613913565b5060006138e6565b60008054909392908490613a7e906107b09060181c6001600160a01b031681565b92833b15613b255760405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101839052928390604490829084905af19081156108a557613ad49261356492613b12575b50601254612eac565b3d8015613b0757602014613ae6575080fd5b90602081803e515b15613af557565b604051637308799360e11b8152600490fd5b509050600019613aee565b80610b57613b1f92610467565b38613acb565b5080fd5b90816020910312610412575161052b81610637565b3d15613b69573d90613b4f82610cb0565b91613b5d60405193846104b8565b82523d6000602084013e565b606090565b600554909190613b88906107b0906001600160a01b031681565b60405180916334cc866d60e21b825281600460209485935afa9081156108a557600091613c95575b506040516379befbd160e01b83820190815260248201859052600091829190613be681604481015b03601f1981018352826104b8565b519082855af1613bf4613b3e565b5015613c0f5750610cae926001600160a01b03169050613a5d565b9092613c6a9284926001600160a01b031690613c2b8183613a5d565b604051633033674760e11b81526001600482015260248101919091526001600160a01b0390921660448301529092839190829060009082906064820190565b03925af180156108a557613c7c575050565b81613c9292903d10610b4357610b3381836104b8565b50565b613cb59150823d8411613cbb575b613cad81836104b8565b810190613b29565b38613bb0565b503d613ca3565b600554909190613cdc906107b0906001600160a01b031681565b60405180916334cc866d60e21b825281600460209485935afa9081156108a557600091613db2575b506040516379befbd160e01b83820190815260248201859052600091829190613d308160448101613bd8565b519082855af1613d3e613b3e565b5015613d595750610cae926001600160a01b03169050613a5d565b9092613c6a9284926001600160a01b031690613d758183613a5d565b604051633033674760e11b815260006004820181905260248201929092526001600160a01b03909316604484015291938492839182906064820190565b613dc99150823d8411613cbb57613cad81836104b8565b38613d04565b600554929392909190613dec906107b0906001600160a01b031681565b803b1561041257604051631200453160e11b81523060048201526001600160a01b0384811660248301528316604482015260648101869052906000908290608490829084905af180156108a557613f37575b506009544303613f25577f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a191613f1c613e93613e8c613e86613e7f86613119565b8099614a9a565b84613582565b8097612eac565b613e9f87600b54612eac565b9080613ebd8660018060a01b03166000526010602052604060002090565b55600a546001600160a01b038616600090815260106020526040902060010155613ee682600b55565b876040519586958691959493909260809360a084019760018060a01b038092168552166020840152604083015260608201520152565b0390a160009190565b60405163c714a2d560e01b8152600490fd5b80610b57613f4492610467565b38613e3e565b6001600160a01b0391821681529181166020830152918216604082015291166060820152608081019190915260a00190565b6005549095949193919290613f9b906107b0906001600160a01b031681565b803b15610412576000828492878360409b613fcc8d519788968795869463d02f735160e01b86523060048701613f4a565b03925af180156108a557614170575b506001600160a01b03848116939082169081851461415f57614017670de0b6b3a764000091670429d069189e0000614011610ca1565b526130c9565b049081841061414e57613350969782614146926140578796957fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc598612eac565b9861406f61202284614067613199565b6132a9610ca1565b956140d46140b861408289600c54612ece565b9961408c8b600c55565b61409b6115a688600d54612eac565b6001600160a01b0384166000908152600e602052604090206115c1565b6001600160a01b039092166000908152600e6020526040902090565b556140f86140b88b612fd18460018060a01b0316600052600e602052604060002090565b558251898152600080516020614b728339815191529089908390839080602081015b0390a383519283523092602090a351308152602081019290925260408201929092529081906060820190565b0390a1613711565b8751632c3508cb60e21b8152600490fd5b8751637a2d3db360e01b8152600490fd5b80610b5761417d92610467565b38613fdb565b600554919594909161419f906107b0906001600160a01b031681565b803b1561041257600084869289836040976141d089519788968795869463d02f735160e01b86523060048701613f4a565b03925af180156108a557614320575b506001600160a01b03868116979084169182891461430f57670de0b6b3a7640000919087156142f257508061421d91614216610ca1565b52866130e6565b04905b8185106142e157918185949361425a6142c7947fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc598612eac565b9861426a61202284614067613199565b9561427d6140b861408289600c54612ece565b556142a16140b88b612fd18460018060a01b0316600052600e602052604060002090565b558251898152600080516020614b72833981519152908b9083908390806020810161411a565b0390a1156142d857613350916138db565b61335091613711565b8251632c3508cb60e21b8152600490fd5b6143089150670429d069189e0000614011610ca1565b0490614220565b8351637a2d3db360e01b8152600490fd5b80610b5761432d92610467565b386141df565b90816020910312610412575161052b81610e08565b9081606091031261041257805161435e81610e08565b916040602083015161436f81611f12565b92015161052b81610e08565b51906effffffffffffffffffffffffffffff8216820361041257565b908160c0910312610412576040519060c0820182811067ffffffffffffffff82111761047b576144249160a09160405280516143d281610e08565b845260208101516143e281610e08565b602085015260408101516143f581610e08565b6040850152606081015161440881610e08565b60608501526144196080820161437b565b60808501520161437b565b60a082015290565b1561443357565b60405162461bcd60e51b81526020600482015260166024820152751c995c185e481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b1561447857565b60405162461bcd60e51b81526020600482015260166024820152751cd95a5e99481d1bdad95b881b9bdd081b1a5cdd195960521b6044820152606490fd5b519061ffff8216820361041257565b9081606091031261041257604051906060820182811067ffffffffffffffff82111761047b576145169160409182526144fd816144b6565b845261450b602082016144b6565b6020850152016144b6565b604082015290565b600554919291614538906107b0906001600160a01b031681565b60408051638e8f294b60e01b80825230600480840191909152939690939092909160609081816024818c5afa9081156108a5576000908192614875575b5061457f9061442c565b82519586526001600160a01b03871684870190815282908790819060200103818c5afa9586156108a5576000908197614852575b506145bd90614471565b825163231d97a560e21b8152828186818d5afa9283156108a557600093614823575b505060ff806146026145fd6145f6865161ffff1690565b61ffff1690565b6130ae565b97169116146147a1575b5080516312bdd04160e31b8082523084830190815291966020939092909190849089908190830103818d5afa9788156108a557600098614780575b5081519081526001600160a01b038316858201908152909984918b91908290819060200103915afa9889156108a55760009961475d575b505163182df0f560e01b815292829184919082906001600160a01b03165afa80156108a5576147266120229561472061471987946147329a61472c9861202298600093614738575b5050614710906146f46146d887612eb9565b6146e0610ca1565b9081526146eb610ca1565b90838252614aac565b956146fd610ca1565b908152614708610ca1565b918252614aac565b9c6146fd610ca1565b8092614b0c565b99614b0c565b97614ae5565b94614ae5565b60009291565b614710929350908161475592903d10610b4357610b3381836104b8565b9190386146c6565b839291995061477890833d8511610b4357610b3381836104b8565b98909161467e565b8491985061479a90823d8411610b4357610b3381836104b8565b9790614647565b8151637f4e225760e11b8152919450906020818481305afa80156108a5578591600091614805575b506147e95701516147e1906145fd9061ffff166145f6565b925b3861460c565b506145fd6145f660206147ff93015161ffff1690565b926147e3565b61481d915060203d811161089e5761088f81836104b8565b386147c9565b614843929350803d1061484b575b61483b81836104b8565b8101906144c5565b9038806145df565b503d614831565b6145bd975061486e9150833d8511611ef057611edf81836104b8565b50966145b3565b61457f92506148919150833d8511611ef057611edf81836104b8565b5091614575565b906148a16131e8565b506005546148b9906107b0906001600160a01b031681565b91823b156104125760405163368f515360e21b81523060048201526001600160a01b03821660248201526044810183905260009384908290606490829084905af180156108a557614a87575b506009544303614a75578160125410614a63576001600160a01b038116907f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab8061495184611cbf85613119565b61495d85600b54612ece565b908061497b8560018060a01b03166000526010602052604060002090565b55600a546001600160a01b0385166000908152601060205260409020600101556149a482600b55565b6149b361356487601254612eac565b604080516001600160a01b038616815260208101889052908101919091526060810191909152608090a16005546149f4906107b0906001600160a01b031681565b90813b15614a5f57604051631407e28160e01b81526001600160a01b039190911660048201526024810184905292919084908490604490829084905af19283156108a557614a4793614a4c575b506134d1565b505090565b80610b57614a5992610467565b38614a41565b8480fd5b6040516348c2588160e01b8152600490fd5b604051630a42bc3960e41b8152600490fd5b80610b57614a9492610467565b38614905565b9080821015614aa7575090565b905090565b670de0b6b3a764000091614ad2916000604051614ac881610480565b52519051906130e6565b0460405190614ae082610480565b815290565b90614aff916000604051614af881610480565b52516130e6565b60405190614ae082610480565b6000604051614b1a81610480565b5251670de0b6b3a76400009081810291818304149015171561104257614aff9151906130f9565b511561310357600090565b670de0b6b3a7640000908181029181830414901517156110425761052b9151906130f956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220332e6070926ca36486989d2f75fedaf781a96d8bef43b3dcbf30ceb2e0d0568f64736f6c63430008130033";
18
18
  static readonly abi: readonly [{
19
19
  readonly inputs: readonly [];
20
20
  readonly stateMutability: "nonpayable";
@@ -1319,6 +1319,16 @@ export declare class CErc20__factory extends ContractFactory {
1319
1319
  }];
1320
1320
  readonly stateMutability: "view";
1321
1321
  readonly type: "function";
1322
+ }, {
1323
+ readonly inputs: readonly [];
1324
+ readonly name: "percentScale";
1325
+ readonly outputs: readonly [{
1326
+ readonly internalType: "uint256";
1327
+ readonly name: "";
1328
+ readonly type: "uint256";
1329
+ }];
1330
+ readonly stateMutability: "view";
1331
+ readonly type: "function";
1322
1332
  }, {
1323
1333
  readonly inputs: readonly [];
1324
1334
  readonly name: "protocolSeizeShareMantissa";