@venusprotocol/isolated-pools 1.0.0-dev.6 → 1.0.0-dev.8

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 (219) hide show
  1. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  3. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  5. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  7. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  11. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  27. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  31. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  43. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  61. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  67. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  75. package/artifacts/build-info/8c02b3a8e3642dffe55772a8d2bed46f.json +1 -0
  76. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  77. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  79. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  81. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  85. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  87. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  89. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  91. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.dbg.json +4 -0
  92. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.json +50 -0
  93. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.dbg.json +4 -0
  94. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.json +191 -0
  95. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.dbg.json +4 -0
  96. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.json +35 -0
  97. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  98. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  99. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  100. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  101. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  102. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  103. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  104. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  105. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  106. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  107. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  108. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +923 -0
  109. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  110. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  111. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.dbg.json +4 -0
  112. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.json +113 -0
  113. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  114. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  115. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  116. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  117. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  118. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  119. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  120. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  121. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  122. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  123. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  124. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +615 -0
  125. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  126. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  127. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  128. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +756 -0
  129. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  130. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  131. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  132. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  133. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  134. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  135. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  136. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  137. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  138. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  139. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  140. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  141. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  142. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  144. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  145. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  146. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  147. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  148. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  149. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  150. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  151. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  152. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  153. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  154. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  155. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  156. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  157. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  158. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  159. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  160. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  161. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  162. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  163. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  164. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  165. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  166. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  167. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  168. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  182. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  183. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  184. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  185. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  186. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  187. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  188. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  189. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  190. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  191. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  192. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  193. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  194. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  195. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  196. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  197. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  198. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  199. package/contracts/BaseJumpRateModelV2.sol +4 -3
  200. package/contracts/Comptroller.sol +27 -11
  201. package/contracts/ComptrollerInterface.sol +10 -0
  202. package/contracts/ComptrollerStorage.sol +5 -0
  203. package/contracts/ErrorReporter.sol +5 -0
  204. package/contracts/Lens/PoolLens.sol +13 -0
  205. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  206. package/contracts/Pool/PoolRegistry.sol +19 -1
  207. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  208. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  209. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  210. package/contracts/RiskFund/IRiskFund.sol +5 -0
  211. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  212. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  213. package/contracts/RiskFund/RiskFund.sol +3 -0
  214. package/contracts/Shortfall/IShortfall.sol +5 -0
  215. package/contracts/Shortfall/Shortfall.sol +10 -2
  216. package/contracts/VToken.sol +24 -2
  217. package/contracts/VTokenInterfaces.sol +10 -0
  218. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  219. package/package.json +1 -1
@@ -0,0 +1,1850 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "VToken",
4
+ "sourceName": "contracts/VToken.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "actualAddAmount",
16
+ "type": "uint256"
17
+ }
18
+ ],
19
+ "name": "AddReservesFactorFreshCheck",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "BorrowCashNotAvailable",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "BorrowFreshnessCheck",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ForceLiquidateBorrowUnauthorized",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "HealBorrowUnauthorized",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "inputs": [
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "errorCode",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "LiquidateAccrueCollateralInterestFailed",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "LiquidateCloseAmountIsUintMax",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "LiquidateCloseAmountIsZero",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "LiquidateCollateralFreshnessCheck",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [],
70
+ "name": "LiquidateFreshnessCheck",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "LiquidateLiquidatorIsBorrower",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [],
80
+ "name": "LiquidateSeizeLiquidatorIsBorrower",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "MintFreshnessCheck",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "ProtocolSeizeShareTooBig",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "RedeemFreshnessCheck",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "RedeemTransferOutNotPossible",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "ReduceReservesCashNotAvailable",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "ReduceReservesCashValidation",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "ReduceReservesFreshCheck",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "RepayBorrowFreshnessCheck",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "SetInterestRateModelFreshCheck",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "SetReserveFactorBoundsCheck",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "SetReserveFactorFreshCheck",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "TransferNotAllowed",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [
145
+ {
146
+ "internalType": "address",
147
+ "name": "sender",
148
+ "type": "address"
149
+ },
150
+ {
151
+ "internalType": "address",
152
+ "name": "calledContract",
153
+ "type": "address"
154
+ },
155
+ {
156
+ "internalType": "string",
157
+ "name": "methodSignature",
158
+ "type": "string"
159
+ }
160
+ ],
161
+ "name": "Unauthorized",
162
+ "type": "error"
163
+ },
164
+ {
165
+ "inputs": [],
166
+ "name": "ZeroAddressNotAllowed",
167
+ "type": "error"
168
+ },
169
+ {
170
+ "anonymous": false,
171
+ "inputs": [
172
+ {
173
+ "indexed": false,
174
+ "internalType": "uint256",
175
+ "name": "cashPrior",
176
+ "type": "uint256"
177
+ },
178
+ {
179
+ "indexed": false,
180
+ "internalType": "uint256",
181
+ "name": "interestAccumulated",
182
+ "type": "uint256"
183
+ },
184
+ {
185
+ "indexed": false,
186
+ "internalType": "uint256",
187
+ "name": "borrowIndex",
188
+ "type": "uint256"
189
+ },
190
+ {
191
+ "indexed": false,
192
+ "internalType": "uint256",
193
+ "name": "totalBorrows",
194
+ "type": "uint256"
195
+ }
196
+ ],
197
+ "name": "AccrueInterest",
198
+ "type": "event"
199
+ },
200
+ {
201
+ "anonymous": false,
202
+ "inputs": [
203
+ {
204
+ "indexed": true,
205
+ "internalType": "address",
206
+ "name": "owner",
207
+ "type": "address"
208
+ },
209
+ {
210
+ "indexed": true,
211
+ "internalType": "address",
212
+ "name": "spender",
213
+ "type": "address"
214
+ },
215
+ {
216
+ "indexed": false,
217
+ "internalType": "uint256",
218
+ "name": "amount",
219
+ "type": "uint256"
220
+ }
221
+ ],
222
+ "name": "Approval",
223
+ "type": "event"
224
+ },
225
+ {
226
+ "anonymous": false,
227
+ "inputs": [
228
+ {
229
+ "indexed": true,
230
+ "internalType": "address",
231
+ "name": "borrower",
232
+ "type": "address"
233
+ },
234
+ {
235
+ "indexed": false,
236
+ "internalType": "uint256",
237
+ "name": "badDebtDelta",
238
+ "type": "uint256"
239
+ },
240
+ {
241
+ "indexed": false,
242
+ "internalType": "uint256",
243
+ "name": "badDebtOld",
244
+ "type": "uint256"
245
+ },
246
+ {
247
+ "indexed": false,
248
+ "internalType": "uint256",
249
+ "name": "badDebtNew",
250
+ "type": "uint256"
251
+ }
252
+ ],
253
+ "name": "BadDebtIncreased",
254
+ "type": "event"
255
+ },
256
+ {
257
+ "anonymous": false,
258
+ "inputs": [
259
+ {
260
+ "indexed": false,
261
+ "internalType": "uint256",
262
+ "name": "badDebtOld",
263
+ "type": "uint256"
264
+ },
265
+ {
266
+ "indexed": false,
267
+ "internalType": "uint256",
268
+ "name": "badDebtNew",
269
+ "type": "uint256"
270
+ }
271
+ ],
272
+ "name": "BadDebtRecovered",
273
+ "type": "event"
274
+ },
275
+ {
276
+ "anonymous": false,
277
+ "inputs": [
278
+ {
279
+ "indexed": true,
280
+ "internalType": "address",
281
+ "name": "borrower",
282
+ "type": "address"
283
+ },
284
+ {
285
+ "indexed": false,
286
+ "internalType": "uint256",
287
+ "name": "borrowAmount",
288
+ "type": "uint256"
289
+ },
290
+ {
291
+ "indexed": false,
292
+ "internalType": "uint256",
293
+ "name": "accountBorrows",
294
+ "type": "uint256"
295
+ },
296
+ {
297
+ "indexed": false,
298
+ "internalType": "uint256",
299
+ "name": "totalBorrows",
300
+ "type": "uint256"
301
+ }
302
+ ],
303
+ "name": "Borrow",
304
+ "type": "event"
305
+ },
306
+ {
307
+ "anonymous": false,
308
+ "inputs": [
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "payer",
313
+ "type": "address"
314
+ },
315
+ {
316
+ "indexed": true,
317
+ "internalType": "address",
318
+ "name": "borrower",
319
+ "type": "address"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "uint256",
324
+ "name": "repayAmount",
325
+ "type": "uint256"
326
+ }
327
+ ],
328
+ "name": "HealBorrow",
329
+ "type": "event"
330
+ },
331
+ {
332
+ "anonymous": false,
333
+ "inputs": [
334
+ {
335
+ "indexed": false,
336
+ "internalType": "uint8",
337
+ "name": "version",
338
+ "type": "uint8"
339
+ }
340
+ ],
341
+ "name": "Initialized",
342
+ "type": "event"
343
+ },
344
+ {
345
+ "anonymous": false,
346
+ "inputs": [
347
+ {
348
+ "indexed": true,
349
+ "internalType": "address",
350
+ "name": "liquidator",
351
+ "type": "address"
352
+ },
353
+ {
354
+ "indexed": true,
355
+ "internalType": "address",
356
+ "name": "borrower",
357
+ "type": "address"
358
+ },
359
+ {
360
+ "indexed": false,
361
+ "internalType": "uint256",
362
+ "name": "repayAmount",
363
+ "type": "uint256"
364
+ },
365
+ {
366
+ "indexed": true,
367
+ "internalType": "address",
368
+ "name": "vTokenCollateral",
369
+ "type": "address"
370
+ },
371
+ {
372
+ "indexed": false,
373
+ "internalType": "uint256",
374
+ "name": "seizeTokens",
375
+ "type": "uint256"
376
+ }
377
+ ],
378
+ "name": "LiquidateBorrow",
379
+ "type": "event"
380
+ },
381
+ {
382
+ "anonymous": false,
383
+ "inputs": [
384
+ {
385
+ "indexed": true,
386
+ "internalType": "address",
387
+ "name": "minter",
388
+ "type": "address"
389
+ },
390
+ {
391
+ "indexed": false,
392
+ "internalType": "uint256",
393
+ "name": "mintAmount",
394
+ "type": "uint256"
395
+ },
396
+ {
397
+ "indexed": false,
398
+ "internalType": "uint256",
399
+ "name": "mintTokens",
400
+ "type": "uint256"
401
+ },
402
+ {
403
+ "indexed": false,
404
+ "internalType": "uint256",
405
+ "name": "accountBalance",
406
+ "type": "uint256"
407
+ }
408
+ ],
409
+ "name": "Mint",
410
+ "type": "event"
411
+ },
412
+ {
413
+ "anonymous": false,
414
+ "inputs": [
415
+ {
416
+ "indexed": false,
417
+ "internalType": "address",
418
+ "name": "oldAccessControlManager",
419
+ "type": "address"
420
+ },
421
+ {
422
+ "indexed": false,
423
+ "internalType": "address",
424
+ "name": "newAccessControlManager",
425
+ "type": "address"
426
+ }
427
+ ],
428
+ "name": "NewAccessControlManager",
429
+ "type": "event"
430
+ },
431
+ {
432
+ "anonymous": false,
433
+ "inputs": [
434
+ {
435
+ "indexed": true,
436
+ "internalType": "contract ComptrollerInterface",
437
+ "name": "oldComptroller",
438
+ "type": "address"
439
+ },
440
+ {
441
+ "indexed": true,
442
+ "internalType": "contract ComptrollerInterface",
443
+ "name": "newComptroller",
444
+ "type": "address"
445
+ }
446
+ ],
447
+ "name": "NewComptroller",
448
+ "type": "event"
449
+ },
450
+ {
451
+ "anonymous": false,
452
+ "inputs": [
453
+ {
454
+ "indexed": true,
455
+ "internalType": "contract InterestRateModel",
456
+ "name": "oldInterestRateModel",
457
+ "type": "address"
458
+ },
459
+ {
460
+ "indexed": true,
461
+ "internalType": "contract InterestRateModel",
462
+ "name": "newInterestRateModel",
463
+ "type": "address"
464
+ }
465
+ ],
466
+ "name": "NewMarketInterestRateModel",
467
+ "type": "event"
468
+ },
469
+ {
470
+ "anonymous": false,
471
+ "inputs": [
472
+ {
473
+ "indexed": false,
474
+ "internalType": "uint256",
475
+ "name": "oldProtocolSeizeShareMantissa",
476
+ "type": "uint256"
477
+ },
478
+ {
479
+ "indexed": false,
480
+ "internalType": "uint256",
481
+ "name": "newProtocolSeizeShareMantissa",
482
+ "type": "uint256"
483
+ }
484
+ ],
485
+ "name": "NewProtocolSeizeShare",
486
+ "type": "event"
487
+ },
488
+ {
489
+ "anonymous": false,
490
+ "inputs": [
491
+ {
492
+ "indexed": true,
493
+ "internalType": "address",
494
+ "name": "oldProtocolShareReserve",
495
+ "type": "address"
496
+ },
497
+ {
498
+ "indexed": true,
499
+ "internalType": "address",
500
+ "name": "newProtocolShareReserve",
501
+ "type": "address"
502
+ }
503
+ ],
504
+ "name": "NewProtocolShareReserve",
505
+ "type": "event"
506
+ },
507
+ {
508
+ "anonymous": false,
509
+ "inputs": [
510
+ {
511
+ "indexed": false,
512
+ "internalType": "uint256",
513
+ "name": "oldReserveFactorMantissa",
514
+ "type": "uint256"
515
+ },
516
+ {
517
+ "indexed": false,
518
+ "internalType": "uint256",
519
+ "name": "newReserveFactorMantissa",
520
+ "type": "uint256"
521
+ }
522
+ ],
523
+ "name": "NewReserveFactor",
524
+ "type": "event"
525
+ },
526
+ {
527
+ "anonymous": false,
528
+ "inputs": [
529
+ {
530
+ "indexed": true,
531
+ "internalType": "address",
532
+ "name": "oldShortfall",
533
+ "type": "address"
534
+ },
535
+ {
536
+ "indexed": true,
537
+ "internalType": "address",
538
+ "name": "newShortfall",
539
+ "type": "address"
540
+ }
541
+ ],
542
+ "name": "NewShortfallContract",
543
+ "type": "event"
544
+ },
545
+ {
546
+ "anonymous": false,
547
+ "inputs": [
548
+ {
549
+ "indexed": true,
550
+ "internalType": "address",
551
+ "name": "previousOwner",
552
+ "type": "address"
553
+ },
554
+ {
555
+ "indexed": true,
556
+ "internalType": "address",
557
+ "name": "newOwner",
558
+ "type": "address"
559
+ }
560
+ ],
561
+ "name": "OwnershipTransferStarted",
562
+ "type": "event"
563
+ },
564
+ {
565
+ "anonymous": false,
566
+ "inputs": [
567
+ {
568
+ "indexed": true,
569
+ "internalType": "address",
570
+ "name": "previousOwner",
571
+ "type": "address"
572
+ },
573
+ {
574
+ "indexed": true,
575
+ "internalType": "address",
576
+ "name": "newOwner",
577
+ "type": "address"
578
+ }
579
+ ],
580
+ "name": "OwnershipTransferred",
581
+ "type": "event"
582
+ },
583
+ {
584
+ "anonymous": false,
585
+ "inputs": [
586
+ {
587
+ "indexed": true,
588
+ "internalType": "address",
589
+ "name": "redeemer",
590
+ "type": "address"
591
+ },
592
+ {
593
+ "indexed": false,
594
+ "internalType": "uint256",
595
+ "name": "redeemAmount",
596
+ "type": "uint256"
597
+ },
598
+ {
599
+ "indexed": false,
600
+ "internalType": "uint256",
601
+ "name": "redeemTokens",
602
+ "type": "uint256"
603
+ },
604
+ {
605
+ "indexed": false,
606
+ "internalType": "uint256",
607
+ "name": "accountBalance",
608
+ "type": "uint256"
609
+ }
610
+ ],
611
+ "name": "Redeem",
612
+ "type": "event"
613
+ },
614
+ {
615
+ "anonymous": false,
616
+ "inputs": [
617
+ {
618
+ "indexed": true,
619
+ "internalType": "address",
620
+ "name": "payer",
621
+ "type": "address"
622
+ },
623
+ {
624
+ "indexed": true,
625
+ "internalType": "address",
626
+ "name": "borrower",
627
+ "type": "address"
628
+ },
629
+ {
630
+ "indexed": false,
631
+ "internalType": "uint256",
632
+ "name": "repayAmount",
633
+ "type": "uint256"
634
+ },
635
+ {
636
+ "indexed": false,
637
+ "internalType": "uint256",
638
+ "name": "accountBorrows",
639
+ "type": "uint256"
640
+ },
641
+ {
642
+ "indexed": false,
643
+ "internalType": "uint256",
644
+ "name": "totalBorrows",
645
+ "type": "uint256"
646
+ }
647
+ ],
648
+ "name": "RepayBorrow",
649
+ "type": "event"
650
+ },
651
+ {
652
+ "anonymous": false,
653
+ "inputs": [
654
+ {
655
+ "indexed": true,
656
+ "internalType": "address",
657
+ "name": "benefactor",
658
+ "type": "address"
659
+ },
660
+ {
661
+ "indexed": false,
662
+ "internalType": "uint256",
663
+ "name": "addAmount",
664
+ "type": "uint256"
665
+ },
666
+ {
667
+ "indexed": false,
668
+ "internalType": "uint256",
669
+ "name": "newTotalReserves",
670
+ "type": "uint256"
671
+ }
672
+ ],
673
+ "name": "ReservesAdded",
674
+ "type": "event"
675
+ },
676
+ {
677
+ "anonymous": false,
678
+ "inputs": [
679
+ {
680
+ "indexed": true,
681
+ "internalType": "address",
682
+ "name": "admin",
683
+ "type": "address"
684
+ },
685
+ {
686
+ "indexed": false,
687
+ "internalType": "uint256",
688
+ "name": "reduceAmount",
689
+ "type": "uint256"
690
+ },
691
+ {
692
+ "indexed": false,
693
+ "internalType": "uint256",
694
+ "name": "newTotalReserves",
695
+ "type": "uint256"
696
+ }
697
+ ],
698
+ "name": "ReservesReduced",
699
+ "type": "event"
700
+ },
701
+ {
702
+ "anonymous": false,
703
+ "inputs": [
704
+ {
705
+ "indexed": true,
706
+ "internalType": "address",
707
+ "name": "token",
708
+ "type": "address"
709
+ }
710
+ ],
711
+ "name": "SweepToken",
712
+ "type": "event"
713
+ },
714
+ {
715
+ "anonymous": false,
716
+ "inputs": [
717
+ {
718
+ "indexed": true,
719
+ "internalType": "address",
720
+ "name": "from",
721
+ "type": "address"
722
+ },
723
+ {
724
+ "indexed": true,
725
+ "internalType": "address",
726
+ "name": "to",
727
+ "type": "address"
728
+ },
729
+ {
730
+ "indexed": false,
731
+ "internalType": "uint256",
732
+ "name": "amount",
733
+ "type": "uint256"
734
+ }
735
+ ],
736
+ "name": "Transfer",
737
+ "type": "event"
738
+ },
739
+ {
740
+ "inputs": [],
741
+ "name": "NO_ERROR",
742
+ "outputs": [
743
+ {
744
+ "internalType": "uint256",
745
+ "name": "",
746
+ "type": "uint256"
747
+ }
748
+ ],
749
+ "stateMutability": "view",
750
+ "type": "function"
751
+ },
752
+ {
753
+ "inputs": [],
754
+ "name": "acceptOwnership",
755
+ "outputs": [],
756
+ "stateMutability": "nonpayable",
757
+ "type": "function"
758
+ },
759
+ {
760
+ "inputs": [],
761
+ "name": "accessControlManager",
762
+ "outputs": [
763
+ {
764
+ "internalType": "contract IAccessControlManagerV8",
765
+ "name": "",
766
+ "type": "address"
767
+ }
768
+ ],
769
+ "stateMutability": "view",
770
+ "type": "function"
771
+ },
772
+ {
773
+ "inputs": [],
774
+ "name": "accrualBlockNumber",
775
+ "outputs": [
776
+ {
777
+ "internalType": "uint256",
778
+ "name": "",
779
+ "type": "uint256"
780
+ }
781
+ ],
782
+ "stateMutability": "view",
783
+ "type": "function"
784
+ },
785
+ {
786
+ "inputs": [],
787
+ "name": "accrueInterest",
788
+ "outputs": [
789
+ {
790
+ "internalType": "uint256",
791
+ "name": "",
792
+ "type": "uint256"
793
+ }
794
+ ],
795
+ "stateMutability": "nonpayable",
796
+ "type": "function"
797
+ },
798
+ {
799
+ "inputs": [
800
+ {
801
+ "internalType": "uint256",
802
+ "name": "addAmount",
803
+ "type": "uint256"
804
+ }
805
+ ],
806
+ "name": "addReserves",
807
+ "outputs": [],
808
+ "stateMutability": "nonpayable",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "address",
815
+ "name": "owner",
816
+ "type": "address"
817
+ },
818
+ {
819
+ "internalType": "address",
820
+ "name": "spender",
821
+ "type": "address"
822
+ }
823
+ ],
824
+ "name": "allowance",
825
+ "outputs": [
826
+ {
827
+ "internalType": "uint256",
828
+ "name": "",
829
+ "type": "uint256"
830
+ }
831
+ ],
832
+ "stateMutability": "view",
833
+ "type": "function"
834
+ },
835
+ {
836
+ "inputs": [
837
+ {
838
+ "internalType": "address",
839
+ "name": "spender",
840
+ "type": "address"
841
+ },
842
+ {
843
+ "internalType": "uint256",
844
+ "name": "amount",
845
+ "type": "uint256"
846
+ }
847
+ ],
848
+ "name": "approve",
849
+ "outputs": [
850
+ {
851
+ "internalType": "bool",
852
+ "name": "",
853
+ "type": "bool"
854
+ }
855
+ ],
856
+ "stateMutability": "nonpayable",
857
+ "type": "function"
858
+ },
859
+ {
860
+ "inputs": [],
861
+ "name": "badDebt",
862
+ "outputs": [
863
+ {
864
+ "internalType": "uint256",
865
+ "name": "",
866
+ "type": "uint256"
867
+ }
868
+ ],
869
+ "stateMutability": "view",
870
+ "type": "function"
871
+ },
872
+ {
873
+ "inputs": [
874
+ {
875
+ "internalType": "uint256",
876
+ "name": "recoveredAmount_",
877
+ "type": "uint256"
878
+ }
879
+ ],
880
+ "name": "badDebtRecovered",
881
+ "outputs": [],
882
+ "stateMutability": "nonpayable",
883
+ "type": "function"
884
+ },
885
+ {
886
+ "inputs": [
887
+ {
888
+ "internalType": "address",
889
+ "name": "owner",
890
+ "type": "address"
891
+ }
892
+ ],
893
+ "name": "balanceOf",
894
+ "outputs": [
895
+ {
896
+ "internalType": "uint256",
897
+ "name": "",
898
+ "type": "uint256"
899
+ }
900
+ ],
901
+ "stateMutability": "view",
902
+ "type": "function"
903
+ },
904
+ {
905
+ "inputs": [
906
+ {
907
+ "internalType": "address",
908
+ "name": "owner",
909
+ "type": "address"
910
+ }
911
+ ],
912
+ "name": "balanceOfUnderlying",
913
+ "outputs": [
914
+ {
915
+ "internalType": "uint256",
916
+ "name": "",
917
+ "type": "uint256"
918
+ }
919
+ ],
920
+ "stateMutability": "nonpayable",
921
+ "type": "function"
922
+ },
923
+ {
924
+ "inputs": [
925
+ {
926
+ "internalType": "uint256",
927
+ "name": "borrowAmount",
928
+ "type": "uint256"
929
+ }
930
+ ],
931
+ "name": "borrow",
932
+ "outputs": [
933
+ {
934
+ "internalType": "uint256",
935
+ "name": "",
936
+ "type": "uint256"
937
+ }
938
+ ],
939
+ "stateMutability": "nonpayable",
940
+ "type": "function"
941
+ },
942
+ {
943
+ "inputs": [
944
+ {
945
+ "internalType": "address",
946
+ "name": "account",
947
+ "type": "address"
948
+ }
949
+ ],
950
+ "name": "borrowBalanceCurrent",
951
+ "outputs": [
952
+ {
953
+ "internalType": "uint256",
954
+ "name": "",
955
+ "type": "uint256"
956
+ }
957
+ ],
958
+ "stateMutability": "nonpayable",
959
+ "type": "function"
960
+ },
961
+ {
962
+ "inputs": [
963
+ {
964
+ "internalType": "address",
965
+ "name": "account",
966
+ "type": "address"
967
+ }
968
+ ],
969
+ "name": "borrowBalanceStored",
970
+ "outputs": [
971
+ {
972
+ "internalType": "uint256",
973
+ "name": "",
974
+ "type": "uint256"
975
+ }
976
+ ],
977
+ "stateMutability": "view",
978
+ "type": "function"
979
+ },
980
+ {
981
+ "inputs": [],
982
+ "name": "borrowIndex",
983
+ "outputs": [
984
+ {
985
+ "internalType": "uint256",
986
+ "name": "",
987
+ "type": "uint256"
988
+ }
989
+ ],
990
+ "stateMutability": "view",
991
+ "type": "function"
992
+ },
993
+ {
994
+ "inputs": [],
995
+ "name": "borrowRatePerBlock",
996
+ "outputs": [
997
+ {
998
+ "internalType": "uint256",
999
+ "name": "",
1000
+ "type": "uint256"
1001
+ }
1002
+ ],
1003
+ "stateMutability": "view",
1004
+ "type": "function"
1005
+ },
1006
+ {
1007
+ "inputs": [],
1008
+ "name": "comptroller",
1009
+ "outputs": [
1010
+ {
1011
+ "internalType": "contract ComptrollerInterface",
1012
+ "name": "",
1013
+ "type": "address"
1014
+ }
1015
+ ],
1016
+ "stateMutability": "view",
1017
+ "type": "function"
1018
+ },
1019
+ {
1020
+ "inputs": [],
1021
+ "name": "decimals",
1022
+ "outputs": [
1023
+ {
1024
+ "internalType": "uint8",
1025
+ "name": "",
1026
+ "type": "uint8"
1027
+ }
1028
+ ],
1029
+ "stateMutability": "view",
1030
+ "type": "function"
1031
+ },
1032
+ {
1033
+ "inputs": [
1034
+ {
1035
+ "internalType": "address",
1036
+ "name": "spender",
1037
+ "type": "address"
1038
+ },
1039
+ {
1040
+ "internalType": "uint256",
1041
+ "name": "subtractedValue",
1042
+ "type": "uint256"
1043
+ }
1044
+ ],
1045
+ "name": "decreaseAllowance",
1046
+ "outputs": [
1047
+ {
1048
+ "internalType": "bool",
1049
+ "name": "",
1050
+ "type": "bool"
1051
+ }
1052
+ ],
1053
+ "stateMutability": "nonpayable",
1054
+ "type": "function"
1055
+ },
1056
+ {
1057
+ "inputs": [],
1058
+ "name": "exchangeRateCurrent",
1059
+ "outputs": [
1060
+ {
1061
+ "internalType": "uint256",
1062
+ "name": "",
1063
+ "type": "uint256"
1064
+ }
1065
+ ],
1066
+ "stateMutability": "nonpayable",
1067
+ "type": "function"
1068
+ },
1069
+ {
1070
+ "inputs": [],
1071
+ "name": "exchangeRateStored",
1072
+ "outputs": [
1073
+ {
1074
+ "internalType": "uint256",
1075
+ "name": "",
1076
+ "type": "uint256"
1077
+ }
1078
+ ],
1079
+ "stateMutability": "view",
1080
+ "type": "function"
1081
+ },
1082
+ {
1083
+ "inputs": [
1084
+ {
1085
+ "internalType": "address",
1086
+ "name": "liquidator",
1087
+ "type": "address"
1088
+ },
1089
+ {
1090
+ "internalType": "address",
1091
+ "name": "borrower",
1092
+ "type": "address"
1093
+ },
1094
+ {
1095
+ "internalType": "uint256",
1096
+ "name": "repayAmount",
1097
+ "type": "uint256"
1098
+ },
1099
+ {
1100
+ "internalType": "contract VTokenInterface",
1101
+ "name": "vTokenCollateral",
1102
+ "type": "address"
1103
+ },
1104
+ {
1105
+ "internalType": "bool",
1106
+ "name": "skipLiquidityCheck",
1107
+ "type": "bool"
1108
+ }
1109
+ ],
1110
+ "name": "forceLiquidateBorrow",
1111
+ "outputs": [],
1112
+ "stateMutability": "nonpayable",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [
1117
+ {
1118
+ "internalType": "address",
1119
+ "name": "account",
1120
+ "type": "address"
1121
+ }
1122
+ ],
1123
+ "name": "getAccountSnapshot",
1124
+ "outputs": [
1125
+ {
1126
+ "internalType": "uint256",
1127
+ "name": "error",
1128
+ "type": "uint256"
1129
+ },
1130
+ {
1131
+ "internalType": "uint256",
1132
+ "name": "vTokenBalance",
1133
+ "type": "uint256"
1134
+ },
1135
+ {
1136
+ "internalType": "uint256",
1137
+ "name": "borrowBalance",
1138
+ "type": "uint256"
1139
+ },
1140
+ {
1141
+ "internalType": "uint256",
1142
+ "name": "exchangeRate",
1143
+ "type": "uint256"
1144
+ }
1145
+ ],
1146
+ "stateMutability": "view",
1147
+ "type": "function"
1148
+ },
1149
+ {
1150
+ "inputs": [],
1151
+ "name": "getCash",
1152
+ "outputs": [
1153
+ {
1154
+ "internalType": "uint256",
1155
+ "name": "",
1156
+ "type": "uint256"
1157
+ }
1158
+ ],
1159
+ "stateMutability": "view",
1160
+ "type": "function"
1161
+ },
1162
+ {
1163
+ "inputs": [
1164
+ {
1165
+ "internalType": "address",
1166
+ "name": "payer",
1167
+ "type": "address"
1168
+ },
1169
+ {
1170
+ "internalType": "address",
1171
+ "name": "borrower",
1172
+ "type": "address"
1173
+ },
1174
+ {
1175
+ "internalType": "uint256",
1176
+ "name": "repayAmount",
1177
+ "type": "uint256"
1178
+ }
1179
+ ],
1180
+ "name": "healBorrow",
1181
+ "outputs": [],
1182
+ "stateMutability": "nonpayable",
1183
+ "type": "function"
1184
+ },
1185
+ {
1186
+ "inputs": [
1187
+ {
1188
+ "internalType": "address",
1189
+ "name": "spender",
1190
+ "type": "address"
1191
+ },
1192
+ {
1193
+ "internalType": "uint256",
1194
+ "name": "addedValue",
1195
+ "type": "uint256"
1196
+ }
1197
+ ],
1198
+ "name": "increaseAllowance",
1199
+ "outputs": [
1200
+ {
1201
+ "internalType": "bool",
1202
+ "name": "",
1203
+ "type": "bool"
1204
+ }
1205
+ ],
1206
+ "stateMutability": "nonpayable",
1207
+ "type": "function"
1208
+ },
1209
+ {
1210
+ "inputs": [
1211
+ {
1212
+ "internalType": "address",
1213
+ "name": "underlying_",
1214
+ "type": "address"
1215
+ },
1216
+ {
1217
+ "internalType": "contract ComptrollerInterface",
1218
+ "name": "comptroller_",
1219
+ "type": "address"
1220
+ },
1221
+ {
1222
+ "internalType": "contract InterestRateModel",
1223
+ "name": "interestRateModel_",
1224
+ "type": "address"
1225
+ },
1226
+ {
1227
+ "internalType": "uint256",
1228
+ "name": "initialExchangeRateMantissa_",
1229
+ "type": "uint256"
1230
+ },
1231
+ {
1232
+ "internalType": "string",
1233
+ "name": "name_",
1234
+ "type": "string"
1235
+ },
1236
+ {
1237
+ "internalType": "string",
1238
+ "name": "symbol_",
1239
+ "type": "string"
1240
+ },
1241
+ {
1242
+ "internalType": "uint8",
1243
+ "name": "decimals_",
1244
+ "type": "uint8"
1245
+ },
1246
+ {
1247
+ "internalType": "address",
1248
+ "name": "admin_",
1249
+ "type": "address"
1250
+ },
1251
+ {
1252
+ "internalType": "address",
1253
+ "name": "accessControlManager_",
1254
+ "type": "address"
1255
+ },
1256
+ {
1257
+ "components": [
1258
+ {
1259
+ "internalType": "address",
1260
+ "name": "shortfall",
1261
+ "type": "address"
1262
+ },
1263
+ {
1264
+ "internalType": "address payable",
1265
+ "name": "protocolShareReserve",
1266
+ "type": "address"
1267
+ }
1268
+ ],
1269
+ "internalType": "struct VTokenInterface.RiskManagementInit",
1270
+ "name": "riskManagement",
1271
+ "type": "tuple"
1272
+ },
1273
+ {
1274
+ "internalType": "uint256",
1275
+ "name": "reserveFactorMantissa_",
1276
+ "type": "uint256"
1277
+ }
1278
+ ],
1279
+ "name": "initialize",
1280
+ "outputs": [],
1281
+ "stateMutability": "nonpayable",
1282
+ "type": "function"
1283
+ },
1284
+ {
1285
+ "inputs": [],
1286
+ "name": "interestRateModel",
1287
+ "outputs": [
1288
+ {
1289
+ "internalType": "contract InterestRateModel",
1290
+ "name": "",
1291
+ "type": "address"
1292
+ }
1293
+ ],
1294
+ "stateMutability": "view",
1295
+ "type": "function"
1296
+ },
1297
+ {
1298
+ "inputs": [],
1299
+ "name": "isVToken",
1300
+ "outputs": [
1301
+ {
1302
+ "internalType": "bool",
1303
+ "name": "",
1304
+ "type": "bool"
1305
+ }
1306
+ ],
1307
+ "stateMutability": "pure",
1308
+ "type": "function"
1309
+ },
1310
+ {
1311
+ "inputs": [
1312
+ {
1313
+ "internalType": "address",
1314
+ "name": "borrower",
1315
+ "type": "address"
1316
+ },
1317
+ {
1318
+ "internalType": "uint256",
1319
+ "name": "repayAmount",
1320
+ "type": "uint256"
1321
+ },
1322
+ {
1323
+ "internalType": "contract VTokenInterface",
1324
+ "name": "vTokenCollateral",
1325
+ "type": "address"
1326
+ }
1327
+ ],
1328
+ "name": "liquidateBorrow",
1329
+ "outputs": [
1330
+ {
1331
+ "internalType": "uint256",
1332
+ "name": "",
1333
+ "type": "uint256"
1334
+ }
1335
+ ],
1336
+ "stateMutability": "nonpayable",
1337
+ "type": "function"
1338
+ },
1339
+ {
1340
+ "inputs": [
1341
+ {
1342
+ "internalType": "uint256",
1343
+ "name": "mintAmount",
1344
+ "type": "uint256"
1345
+ }
1346
+ ],
1347
+ "name": "mint",
1348
+ "outputs": [
1349
+ {
1350
+ "internalType": "uint256",
1351
+ "name": "",
1352
+ "type": "uint256"
1353
+ }
1354
+ ],
1355
+ "stateMutability": "nonpayable",
1356
+ "type": "function"
1357
+ },
1358
+ {
1359
+ "inputs": [
1360
+ {
1361
+ "internalType": "address",
1362
+ "name": "minter",
1363
+ "type": "address"
1364
+ },
1365
+ {
1366
+ "internalType": "uint256",
1367
+ "name": "mintAmount",
1368
+ "type": "uint256"
1369
+ }
1370
+ ],
1371
+ "name": "mintBehalf",
1372
+ "outputs": [
1373
+ {
1374
+ "internalType": "uint256",
1375
+ "name": "",
1376
+ "type": "uint256"
1377
+ }
1378
+ ],
1379
+ "stateMutability": "nonpayable",
1380
+ "type": "function"
1381
+ },
1382
+ {
1383
+ "inputs": [],
1384
+ "name": "name",
1385
+ "outputs": [
1386
+ {
1387
+ "internalType": "string",
1388
+ "name": "",
1389
+ "type": "string"
1390
+ }
1391
+ ],
1392
+ "stateMutability": "view",
1393
+ "type": "function"
1394
+ },
1395
+ {
1396
+ "inputs": [],
1397
+ "name": "owner",
1398
+ "outputs": [
1399
+ {
1400
+ "internalType": "address",
1401
+ "name": "",
1402
+ "type": "address"
1403
+ }
1404
+ ],
1405
+ "stateMutability": "view",
1406
+ "type": "function"
1407
+ },
1408
+ {
1409
+ "inputs": [],
1410
+ "name": "pendingOwner",
1411
+ "outputs": [
1412
+ {
1413
+ "internalType": "address",
1414
+ "name": "",
1415
+ "type": "address"
1416
+ }
1417
+ ],
1418
+ "stateMutability": "view",
1419
+ "type": "function"
1420
+ },
1421
+ {
1422
+ "inputs": [],
1423
+ "name": "protocolSeizeShareMantissa",
1424
+ "outputs": [
1425
+ {
1426
+ "internalType": "uint256",
1427
+ "name": "",
1428
+ "type": "uint256"
1429
+ }
1430
+ ],
1431
+ "stateMutability": "view",
1432
+ "type": "function"
1433
+ },
1434
+ {
1435
+ "inputs": [],
1436
+ "name": "protocolShareReserve",
1437
+ "outputs": [
1438
+ {
1439
+ "internalType": "address payable",
1440
+ "name": "",
1441
+ "type": "address"
1442
+ }
1443
+ ],
1444
+ "stateMutability": "view",
1445
+ "type": "function"
1446
+ },
1447
+ {
1448
+ "inputs": [
1449
+ {
1450
+ "internalType": "uint256",
1451
+ "name": "redeemTokens",
1452
+ "type": "uint256"
1453
+ }
1454
+ ],
1455
+ "name": "redeem",
1456
+ "outputs": [
1457
+ {
1458
+ "internalType": "uint256",
1459
+ "name": "",
1460
+ "type": "uint256"
1461
+ }
1462
+ ],
1463
+ "stateMutability": "nonpayable",
1464
+ "type": "function"
1465
+ },
1466
+ {
1467
+ "inputs": [
1468
+ {
1469
+ "internalType": "uint256",
1470
+ "name": "redeemAmount",
1471
+ "type": "uint256"
1472
+ }
1473
+ ],
1474
+ "name": "redeemUnderlying",
1475
+ "outputs": [
1476
+ {
1477
+ "internalType": "uint256",
1478
+ "name": "",
1479
+ "type": "uint256"
1480
+ }
1481
+ ],
1482
+ "stateMutability": "nonpayable",
1483
+ "type": "function"
1484
+ },
1485
+ {
1486
+ "inputs": [
1487
+ {
1488
+ "internalType": "uint256",
1489
+ "name": "reduceAmount",
1490
+ "type": "uint256"
1491
+ }
1492
+ ],
1493
+ "name": "reduceReserves",
1494
+ "outputs": [],
1495
+ "stateMutability": "nonpayable",
1496
+ "type": "function"
1497
+ },
1498
+ {
1499
+ "inputs": [],
1500
+ "name": "renounceOwnership",
1501
+ "outputs": [],
1502
+ "stateMutability": "nonpayable",
1503
+ "type": "function"
1504
+ },
1505
+ {
1506
+ "inputs": [
1507
+ {
1508
+ "internalType": "uint256",
1509
+ "name": "repayAmount",
1510
+ "type": "uint256"
1511
+ }
1512
+ ],
1513
+ "name": "repayBorrow",
1514
+ "outputs": [
1515
+ {
1516
+ "internalType": "uint256",
1517
+ "name": "",
1518
+ "type": "uint256"
1519
+ }
1520
+ ],
1521
+ "stateMutability": "nonpayable",
1522
+ "type": "function"
1523
+ },
1524
+ {
1525
+ "inputs": [
1526
+ {
1527
+ "internalType": "address",
1528
+ "name": "borrower",
1529
+ "type": "address"
1530
+ },
1531
+ {
1532
+ "internalType": "uint256",
1533
+ "name": "repayAmount",
1534
+ "type": "uint256"
1535
+ }
1536
+ ],
1537
+ "name": "repayBorrowBehalf",
1538
+ "outputs": [
1539
+ {
1540
+ "internalType": "uint256",
1541
+ "name": "",
1542
+ "type": "uint256"
1543
+ }
1544
+ ],
1545
+ "stateMutability": "nonpayable",
1546
+ "type": "function"
1547
+ },
1548
+ {
1549
+ "inputs": [],
1550
+ "name": "reserveFactorMantissa",
1551
+ "outputs": [
1552
+ {
1553
+ "internalType": "uint256",
1554
+ "name": "",
1555
+ "type": "uint256"
1556
+ }
1557
+ ],
1558
+ "stateMutability": "view",
1559
+ "type": "function"
1560
+ },
1561
+ {
1562
+ "inputs": [
1563
+ {
1564
+ "internalType": "address",
1565
+ "name": "liquidator",
1566
+ "type": "address"
1567
+ },
1568
+ {
1569
+ "internalType": "address",
1570
+ "name": "borrower",
1571
+ "type": "address"
1572
+ },
1573
+ {
1574
+ "internalType": "uint256",
1575
+ "name": "seizeTokens",
1576
+ "type": "uint256"
1577
+ }
1578
+ ],
1579
+ "name": "seize",
1580
+ "outputs": [],
1581
+ "stateMutability": "nonpayable",
1582
+ "type": "function"
1583
+ },
1584
+ {
1585
+ "inputs": [
1586
+ {
1587
+ "internalType": "address",
1588
+ "name": "accessControlManager_",
1589
+ "type": "address"
1590
+ }
1591
+ ],
1592
+ "name": "setAccessControlManager",
1593
+ "outputs": [],
1594
+ "stateMutability": "nonpayable",
1595
+ "type": "function"
1596
+ },
1597
+ {
1598
+ "inputs": [
1599
+ {
1600
+ "internalType": "contract InterestRateModel",
1601
+ "name": "newInterestRateModel",
1602
+ "type": "address"
1603
+ }
1604
+ ],
1605
+ "name": "setInterestRateModel",
1606
+ "outputs": [],
1607
+ "stateMutability": "nonpayable",
1608
+ "type": "function"
1609
+ },
1610
+ {
1611
+ "inputs": [
1612
+ {
1613
+ "internalType": "uint256",
1614
+ "name": "newProtocolSeizeShareMantissa_",
1615
+ "type": "uint256"
1616
+ }
1617
+ ],
1618
+ "name": "setProtocolSeizeShare",
1619
+ "outputs": [],
1620
+ "stateMutability": "nonpayable",
1621
+ "type": "function"
1622
+ },
1623
+ {
1624
+ "inputs": [
1625
+ {
1626
+ "internalType": "address payable",
1627
+ "name": "protocolShareReserve_",
1628
+ "type": "address"
1629
+ }
1630
+ ],
1631
+ "name": "setProtocolShareReserve",
1632
+ "outputs": [],
1633
+ "stateMutability": "nonpayable",
1634
+ "type": "function"
1635
+ },
1636
+ {
1637
+ "inputs": [
1638
+ {
1639
+ "internalType": "uint256",
1640
+ "name": "newReserveFactorMantissa",
1641
+ "type": "uint256"
1642
+ }
1643
+ ],
1644
+ "name": "setReserveFactor",
1645
+ "outputs": [],
1646
+ "stateMutability": "nonpayable",
1647
+ "type": "function"
1648
+ },
1649
+ {
1650
+ "inputs": [
1651
+ {
1652
+ "internalType": "address",
1653
+ "name": "shortfall_",
1654
+ "type": "address"
1655
+ }
1656
+ ],
1657
+ "name": "setShortfallContract",
1658
+ "outputs": [],
1659
+ "stateMutability": "nonpayable",
1660
+ "type": "function"
1661
+ },
1662
+ {
1663
+ "inputs": [],
1664
+ "name": "shortfall",
1665
+ "outputs": [
1666
+ {
1667
+ "internalType": "address",
1668
+ "name": "",
1669
+ "type": "address"
1670
+ }
1671
+ ],
1672
+ "stateMutability": "view",
1673
+ "type": "function"
1674
+ },
1675
+ {
1676
+ "inputs": [],
1677
+ "name": "supplyRatePerBlock",
1678
+ "outputs": [
1679
+ {
1680
+ "internalType": "uint256",
1681
+ "name": "",
1682
+ "type": "uint256"
1683
+ }
1684
+ ],
1685
+ "stateMutability": "view",
1686
+ "type": "function"
1687
+ },
1688
+ {
1689
+ "inputs": [
1690
+ {
1691
+ "internalType": "contract IERC20Upgradeable",
1692
+ "name": "token",
1693
+ "type": "address"
1694
+ }
1695
+ ],
1696
+ "name": "sweepToken",
1697
+ "outputs": [],
1698
+ "stateMutability": "nonpayable",
1699
+ "type": "function"
1700
+ },
1701
+ {
1702
+ "inputs": [],
1703
+ "name": "symbol",
1704
+ "outputs": [
1705
+ {
1706
+ "internalType": "string",
1707
+ "name": "",
1708
+ "type": "string"
1709
+ }
1710
+ ],
1711
+ "stateMutability": "view",
1712
+ "type": "function"
1713
+ },
1714
+ {
1715
+ "inputs": [],
1716
+ "name": "totalBorrows",
1717
+ "outputs": [
1718
+ {
1719
+ "internalType": "uint256",
1720
+ "name": "",
1721
+ "type": "uint256"
1722
+ }
1723
+ ],
1724
+ "stateMutability": "view",
1725
+ "type": "function"
1726
+ },
1727
+ {
1728
+ "inputs": [],
1729
+ "name": "totalBorrowsCurrent",
1730
+ "outputs": [
1731
+ {
1732
+ "internalType": "uint256",
1733
+ "name": "",
1734
+ "type": "uint256"
1735
+ }
1736
+ ],
1737
+ "stateMutability": "nonpayable",
1738
+ "type": "function"
1739
+ },
1740
+ {
1741
+ "inputs": [],
1742
+ "name": "totalReserves",
1743
+ "outputs": [
1744
+ {
1745
+ "internalType": "uint256",
1746
+ "name": "",
1747
+ "type": "uint256"
1748
+ }
1749
+ ],
1750
+ "stateMutability": "view",
1751
+ "type": "function"
1752
+ },
1753
+ {
1754
+ "inputs": [],
1755
+ "name": "totalSupply",
1756
+ "outputs": [
1757
+ {
1758
+ "internalType": "uint256",
1759
+ "name": "",
1760
+ "type": "uint256"
1761
+ }
1762
+ ],
1763
+ "stateMutability": "view",
1764
+ "type": "function"
1765
+ },
1766
+ {
1767
+ "inputs": [
1768
+ {
1769
+ "internalType": "address",
1770
+ "name": "dst",
1771
+ "type": "address"
1772
+ },
1773
+ {
1774
+ "internalType": "uint256",
1775
+ "name": "amount",
1776
+ "type": "uint256"
1777
+ }
1778
+ ],
1779
+ "name": "transfer",
1780
+ "outputs": [
1781
+ {
1782
+ "internalType": "bool",
1783
+ "name": "",
1784
+ "type": "bool"
1785
+ }
1786
+ ],
1787
+ "stateMutability": "nonpayable",
1788
+ "type": "function"
1789
+ },
1790
+ {
1791
+ "inputs": [
1792
+ {
1793
+ "internalType": "address",
1794
+ "name": "src",
1795
+ "type": "address"
1796
+ },
1797
+ {
1798
+ "internalType": "address",
1799
+ "name": "dst",
1800
+ "type": "address"
1801
+ },
1802
+ {
1803
+ "internalType": "uint256",
1804
+ "name": "amount",
1805
+ "type": "uint256"
1806
+ }
1807
+ ],
1808
+ "name": "transferFrom",
1809
+ "outputs": [
1810
+ {
1811
+ "internalType": "bool",
1812
+ "name": "",
1813
+ "type": "bool"
1814
+ }
1815
+ ],
1816
+ "stateMutability": "nonpayable",
1817
+ "type": "function"
1818
+ },
1819
+ {
1820
+ "inputs": [
1821
+ {
1822
+ "internalType": "address",
1823
+ "name": "newOwner",
1824
+ "type": "address"
1825
+ }
1826
+ ],
1827
+ "name": "transferOwnership",
1828
+ "outputs": [],
1829
+ "stateMutability": "nonpayable",
1830
+ "type": "function"
1831
+ },
1832
+ {
1833
+ "inputs": [],
1834
+ "name": "underlying",
1835
+ "outputs": [
1836
+ {
1837
+ "internalType": "address",
1838
+ "name": "",
1839
+ "type": "address"
1840
+ }
1841
+ ],
1842
+ "stateMutability": "view",
1843
+ "type": "function"
1844
+ }
1845
+ ],
1846
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000111565b600054610100900460ff1615620000565760405162461bcd60e51b81526004016200004d90620000af565b60405180910390fd5b60005460ff90811614620000ad576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a49162000101565b60405180910390a15b565b60208082528101620000fb81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000fb565b614b4980620001216000396000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c8063757212f0116101ff578063ae9d70b01161011a578063dd62ed3e116100ad578063f2fde38b1161007c578063f2fde38b14610817578063f3fdb15a1461082a578063f5e3c4621461083d578063f8f9da281461085057600080fd5b8063dd62ed3e146107a2578063e30c3978146107db578063e9a44fd9146107ec578063ef60450c1461080457600080fd5b8063bd6d894d116100e9578063bd6d894d14610751578063c37f68e214610759578063c5ebeaec1461077c578063db006a751461078f57600080fd5b8063ae9d70b01461071c578063b2a02ff114610724578063b4a0bdf314610737578063bbcac5571461074857600080fd5b80638f840ddd11610192578063a457c2d711610161578063a457c2d7146106e5578063a6afed95146106f8578063a9059cbb14610700578063aa5af0fd1461071357600080fd5b80638f840ddd146106ae57806395d89b41146106b757806395dd9193146106bf578063a0712d68146106d257600080fd5b80638a42c319116101ce5780638a42c319146106645780638bbdb6db146106775780638bcd40161461068a5780638da5cb5b1461069d57600080fd5b8063757212f0146106235780637821a5141461063657806379ba509714610649578063852a12e31461065157600080fd5b8063313ce567116102ef5780635fe3b567116102825780636f307dc3116102515780636f307dc3146105d257806370a08231146105ea578063715018a61461061357806373acee981461061b57600080fd5b80635fe3b567146105985780636752e702146105b857806369ab3250146105c15780636c540baf146105c957600080fd5b80633d9ea3a1116102be5780633d9ea3a11461056257806341f641ee1461056957806344fe6ffe1461057c57806347bd37181461058f57600080fd5b8063313ce5671461051a57806339509351146105345780633af9e669146105475780633b1d21a21461055a57600080fd5b806318160ddd116103675780631c446983116103365780631c446983146104ce57806323323e03146104e157806323b872dd146104f45780632608f8181461050757600080fd5b806318160ddd1461048a578063182df0f51461049357806319b1faef1461049b5780631be19560146104bb57600080fd5b80630e752702116103a35780630e7527021461043b578063107568df1461045b578063173b99041461046e57806317bfdfbc1461047757600080fd5b806306fdde03146103d557806307e27959146103f3578063095ea7b3146104085780630e32cb8614610428575b600080fd5b6103dd610858565b6040516103ea9190613a8f565b60405180910390f35b610406610401366004613ab8565b6108e6565b005b61041b610416366004613afe565b61093d565b6040516103ea9190613b45565b610406610436366004613b53565b6109b5565b61044e610449366004613ab8565b6109c9565b6040516103ea9190613b7a565b610406610469366004613b53565b610a23565b61044e60d05481565b61044e610485366004613b53565b610a34565b61044e60d55481565b61044e610a89565b60db546104ae906001600160a01b031681565b6040516103ea9190613b91565b6104066104c9366004613bbe565b610a98565b6104066104dc366004613ab8565b610bc5565b61044e6104ef366004613afe565b610c40565b61041b610502366004613bdf565b610ca2565b61044e610515366004613afe565b610cf4565b60cc546105279060ff1681565b6040516103ea9190613c38565b61041b610542366004613afe565b610d4f565b61044e610555366004613b53565b610dfb565b61044e610e41565b600161041b565b610406610577366004613b53565b610e4b565b61040661058a366004613bdf565b610e5c565b61044e60d35481565b60cd546105ab906001600160a01b031681565b6040516103ea9190613c88565b61044e60da5481565b61044e600081565b61044e60d15481565b60c9546104ae9061010090046001600160a01b031681565b61044e6105f8366004613b53565b6001600160a01b0316600090815260d7602052604090205490565b6104066110f1565b61044e611105565b610406610631366004613ab8565b611151565b610406610644366004613ab8565b611278565b6104066112c7565b61044e61065f366004613ab8565b6112fc565b610406610672366004613def565b611355565b610406610685366004613f29565b611443565b610406610698366004613bbe565b611482565b6033546001600160a01b03166104ae565b61044e60d45481565b6103dd6114d2565b61044e6106cd366004613b53565b6114df565b61044e6106e0366004613ab8565b6114ea565b61041b6106f3366004613afe565b61152d565b61044e6115dc565b61041b61070e366004613afe565b61178e565b61044e60d25481565b61044e6117df565b610406610732366004613bdf565b611868565b6097546001600160a01b03166105ab565b61044e60d65481565b61044e6118b2565b61076c610767366004613b53565b611904565b6040516103ea9493929190613fa1565b61044e61078a366004613ab8565b611945565b61044e61079d366004613ab8565b611987565b61044e6107b0366004613fd6565b6001600160a01b03918216600090815260d86020908152604080832093909416825291909152205490565b6065546001600160a01b03166104ae565b60cc546104ae9061010090046001600160a01b031681565b610406610812366004613ab8565b6119cb565b610406610825366004613b53565b611a60565b60ce546105ab906001600160a01b031681565b61044e61084b366004614009565b611ad1565b61044e611aeb565b60ca805461086590614065565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614065565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b60c95460ff166109115760405162461bcd60e51b8152600401610908906140b5565b60405180910390fd5b60c9805460ff191690556109236115dc565b5061092d81611b2f565b5060c9805460ff19166001179055565b600061094883611ca2565b33600081815260d8602090815260408083206001600160a01b038816808552925291829020859055905182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a1908790613b7a565b60405180910390a360019150505b92915050565b6109bd611cc9565b6109c681611cf3565b50565b60c95460009060ff166109ee5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a006115dc565b50610a0c333384611d78565b506000905060c9805460ff19166001179055919050565b610a2b611cc9565b6109c681611ecd565b60c95460009060ff16610a595760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a6b6115dc565b50610a7582611f30565b905060c9805460ff19166001179055919050565b6000610a93611fa0565b905090565b6033546001600160a01b03163314610ac25760405162461bcd60e51b815260040161090890614114565b60c9546001600160a01b03610100909104811690821603610af55760405162461bcd60e51b815260040161090890614173565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b24903090600401613b91565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061418e565b9050610b8d610b7c6033546001600160a01b031690565b6001600160a01b0384169083612015565b6040516001600160a01b038316907f35ce4c546a473796a8e70ec2d4af4f2031afe357afa7057b6ea7fa340730e1b290600090a25050565b60c95460ff16610be75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905560408051808201909152601981527f73657452657365727665466163746f722875696e7432353629000000000000006020820152610c2e90612070565b610c366115dc565b5061092d8161210e565b60c95460009060ff16610c655760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610c7883611ca2565b610c806115dc565b50610c8c338484612193565b50600060c9805460ff1916600117905592915050565b60c95460009060ff16610cc75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610cdd33858585612329565b50600160c9805460ff191660011790559392505050565b60c95460009060ff16610d195760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610d2b6115dc565b50610d37338484611d78565b506000905060c9805460ff1916600117905592915050565b6000610d5a83611ca2565b33600081815260d8602090815260408083206001600160a01b0388168452909152902054610d8884826141c5565b6001600160a01b03808416600081815260d860209081526040808320948b1680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60405180910390a3506001949350505050565b6000806040518060200160405280610e116118b2565b90526001600160a01b038416600090815260d76020526040902054909150610e3a908290612508565b9392505050565b6000610a93612520565b610e53611cc9565b6109c68161259f565b60c95460ff16610e7e5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690558015610ef35760cd5460405163eade3eed60e01b81526001600160a01b039091169063eade3eed90610ec090309086906004016141dd565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050505b60cd546001600160a01b03163314610f1e57604051632c40292560e01b815260040160405180910390fd5b6000610f2983611f30565b60d35490915060008315610fa257610f4186856125fa565b9050610f4d81836141f8565b91506001600160a01b038086169087167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a183610f8981886141f8565b86604051610f999392919061420f565b60405180910390a35b6000610fae82856141f8565b905080156110725760d6546000610fc583836141c5565b9050610fd183866141f8565b94508060d681905550876001600160a01b0316306001600160a01b03167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1856000896040516110229392919061424c565b60405180910390a3876001600160a01b03167f90125ffdb441e57c4f6bf69789206424859f206bea5727f2d81ad2470826ef6a8484846040516110679392919061420f565b60405180910390a250505b6001600160a01b03808716600081815260d9602052604080822091825560d25460019092019190915560d38690555190918916907f9fe0294717a8efbc6ace1c151b73a4c89982339b2228a27d1ca21394e348986f906110d3908990613b7a565b60405180910390a3505060c9805460ff191660011790555050505050565b6110f9611cc9565b6111036000612712565b565b60c95460009060ff1661112a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561113c6115dc565b505060d35460c9805460ff1916600117905590565b61118f6040518060400160405280601e81526020017f73657450726f746f636f6c5365697a6553686172652875696e74323536290000815250612070565b60cd5460408051634ada90af60e01b815290516000926001600160a01b031691634ada90af9160048083019260209291908290030181865afa1580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd919061418e565b905080611212670de0b6b3a7640000846141c5565b11156112315760405163034dd2c160e11b815260040160405180910390fd5b60da8054908390556040517ff5815f353a60e815cce7553e4f60c533a59d26b1b5504ea4b6db8d60da3e4da29061126b9083908690614267565b60405180910390a1505050565b60c95460ff1661129a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556112ac6115dc565b506112b68161272b565b505060c9805460ff19166001179055565b60655433906001600160a01b031681146112f35760405162461bcd60e51b8152600401610908906142c8565b6109c681612712565b60c95460009060ff166113215760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556113336115dc565b50611340336000846127b8565b50600060c9805460ff19166001179055919050565b600054610100900460ff16158080156113755750600054600160ff909116105b8061138f5750303b15801561138f575060005460ff166001145b6113ab5760405162461bcd60e51b815260040161090890614323565b6000805460ff1916600117905580156113ce576000805461ff0019166101001790555b6113d785611ca2565b6113ea8c8c8c8c8c8c8c8c8c8c8c612a34565b8015611435576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061142c90600190614347565b60405180910390a15b505050505050505050505050565b60cd546001600160a01b0316331461146e57604051635c85a5e760e01b815260040160405180910390fd5b61147b8585858585612bf0565b5050505050565b6114c06040518060400160405280601d81526020017f736574496e746572657374526174654d6f64656c286164647265737329000000815250612070565b6114c86115dc565b506109c681612cd0565b60cb805461086590614065565b60006109af82611f30565b60c95460009060ff1661150f5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556115216115dc565b50611340333384612193565b600061153883611ca2565b33600081815260d8602090815260408083206001600160a01b03881684529091529020548381101561157c5760405162461bcd60e51b815260040161090890614389565b6001600160a01b03808316600081815260d860209081526040808320948a1680845294909152908190209387900393849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60d15460009043908181036115f45760009250505090565b60006115fe612520565b60d35460d45460d25460ce5460d6546040516301cee29d60e21b81529596509394929391926000926001600160a01b039092169163073b8a749161164a91899189918991600401613fa1565b602060405180830381865afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b919061418e565b905065048c273950008111156116b35760405162461bcd60e51b8152600401610908906143cd565b60006116bf87896141f8565b905060006116db60405180602001604052808581525083612ddb565b905060006116e98288612508565b905060006116f788836141c5565b90506000611716604051806020016040528060d054815250848a612e0c565b9050600061172585898a612e0c565b60d18e905560d281905560d384905560d48390556040519091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc0490611772908d90879085908890613fa1565b60405180910390a160009d505050505050505050505050505090565b60c95460009060ff166117b35760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556117c933808585612329565b50600160c9805460ff1916600117905592915050565b60ce546000906001600160a01b0316630cde8d1c6117fb612520565b60d35460d45460d05460d6546040518663ffffffff1660e01b81526004016118279594939291906143dd565b602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061418e565b60c95460ff1661188a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118a033848484612e2d565b505060c9805460ff1916600117905550565b60c95460009060ff166118d75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118e96115dc565b506118f2611fa0565b905060c9805460ff1916600117905590565b6001600160a01b038116600090815260d76020526040812054819081908190819061192e87611f30565b611936611fa0565b93509350935093509193509193565b60c95460009060ff1661196a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561197c6115dc565b506113403383613066565b60c95460009060ff166119ac5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556119be6115dc565b50611340338360006127b8565b60db546001600160a01b031633146119f55760405162461bcd60e51b815260040161090890614467565b60d654811115611a175760405162461bcd60e51b8152600401610908906144bd565b60d6546000611a2683836141f8565b90508060d6819055507f9e19ec7d2b8f8a94df8cc0072453ace318d221e3cbb2731d0eaa0baac856520f828260405161126b929190614267565b611a68611cc9565b606580546001600160a01b0383166001600160a01b03199091168117909155611a996033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ae1338585856000612bf0565b5060009392505050565b60ce546000906001600160a01b031663073b8a74611b07612520565b60d35460d45460d6546040518563ffffffff1660e01b81526004016118279493929190613fa1565b60004360d15414611b5357604051630dff50cb60e41b815260040160405180910390fd5b81611b5c612520565b1015611b7b57604051633345e99960e01b815260040160405180910390fd5b60d454821115611b9e576040516378d2980560e11b815260040160405180910390fd5b8160d454611bac91906141f8565b60d481905560cc54909150611bcf9061010090046001600160a01b0316836131d5565b60cc5460cd5460c95460405163aac59a7560e01b81526001600160a01b036101009485900481169463aac59a7594611c149490831693919004909116906004016141dd565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b5050505060cc60019054906101000a90046001600160a01b03166001600160a01b03167f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e8383604051611c96929190614267565b60405180910390a25050565b6001600160a01b0381166109c6576040516342bcdf7f60e11b815260040160405180910390fd5b6033546001600160a01b031633146111035760405162461bcd60e51b8152600401610908906144ff565b6001600160a01b038116611d195760405162461bcd60e51b815260040161090890614551565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090611d6c90839085906141dd565b60405180910390a15050565b60cd5460405163eade3eed60e01b81526000916001600160a01b03169063eade3eed90611dab90309087906004016141dd565b600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b50505050611de44390565b60d15414611e055760405163c9021e2f60e01b815260040160405180910390fd5b6000611e1084611f30565b9050600081841015611e225783611e24565b815b90506000611e3287836125fa565b90506000611e4082856141f8565b905060008260d354611e5291906141f8565b6001600160a01b03808a16600081815260d960205260409081902086815560d25460019091015560d38490555192935091908b16907f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a190611eb89087908790879061420f565b60405180910390a35090979650505050505050565b611ed681611ca2565b60cc80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b90600090a35050565b6001600160a01b038116600090815260d9602090815260408083208151808301909252805480835260019091015492820192909252908203611f755750600092915050565b60d2548151600091611f8691614561565b9050816020015181611f989190614596565b949350505050565b60d554600090808203611fb557505060cf5490565b6000611fbf612520565b9050600060d45460d65460d35484611fd791906141c5565b611fe191906141c5565b611feb91906141f8565b9050600083612002670de0b6b3a764000084614561565b61200c9190614596565b95945050505050565b61206b8363a9059cbb60e01b84846040516024016120349291906145aa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131f1565b505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906120a390339086906004016145b8565b602060405180830381865afa1580156120c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e491906145e3565b90508061210a57333083604051634a3fa29360e01b815260040161090893929190614604565b5050565b4360d1541461213057604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008111156121595760405163717220f360e11b815260040160405180910390fd5b60d08054908290556040517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146090611d6c9083908590614267565b60cd5460405163c0891ba960e01b81526001600160a01b039091169063c0891ba9906121c790309086908690600401614631565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050506122004390565b60d15414612221576040516338d8859760e01b815260040160405180910390fd5b60006040518060200160405280612236611fa0565b90529050600061224685846125fa565b905060006122548284613283565b90508060d55461226491906141c5565b60d5556001600160a01b038516600090815260d7602052604081205461228b9083906141c5565b6001600160a01b038716600081815260d760205260409081902083905551919250907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb906122de9086908690869061420f565b60405180910390a2856001600160a01b031660006001600160a01b0316600080516020614af4833981519152846040516123189190613b7a565b60405180910390a350505050505050565b60cd54604051636d0be88d60e01b81526001600160a01b0390911690636d0be88d9061235f90309087908790879060040161464c565b600060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b0316036123c357604051638cd22d1960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b0316036123e7575060001961240f565b506001600160a01b03808416600090815260d860209081526040808320938816835292905220545b600061241b83836141f8565b6001600160a01b038616600090815260d76020526040812054919250906124439085906141f8565b6001600160a01b038616600090815260d760205260408120549192509061246b9086906141c5565b6001600160a01b03808916600090815260d76020526040808220869055918916815220819055905060001984146124c5576001600160a01b03808816600090815260d860209081526040808320938c168352929052208390555b856001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516124f69190613b7a565b60405180910390a35050505050505050565b6000806125158484612ddb565b9050611f98816132a1565b60c9546040516370a0823160e01b815260009161010090046001600160a01b03169081906370a0823190612558903090600401613b91565b602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612599919061418e565b91505090565b6125a881611ca2565b60db80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6dbf1ff28f860de5edafa4c6505e37c0aba213288cc4166c5352b6d3776c79ef90600090a35050565b60c9546040516370a0823160e01b815260009161010090046001600160a01b031690829082906370a0823190612634903090600401613b91565b602060405180830381865afa158015612651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612675919061418e565b905061268c6001600160a01b0383168630876132b9565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906126bb903090600401613b91565b602060405180830381865afa1580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc919061418e565b905061270882826141f8565b9695505050505050565b606580546001600160a01b03191690556109c6816132e0565b600080804360d1541461275357806040516338acf79960e01b81526004016109089190613b7a565b61275d33856125fa565b90508060d45461276d91906141c5565b60d481905560405190925033907fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5906127a99084908690614267565b60405180910390a29392505050565b8115806127c3575080155b6127df5760405162461bcd60e51b8152600401610908906146c5565b4360d15414612801576040516397b5cfcd60e01b815260040160405180910390fd5b60006040518060200160405280612816611fa0565b905290506000808415612837578491506128308386612508565b9050612878565b6128418484613283565b9150600061284f8385613332565b905080158015906128605750848114155b15612873578261286f816146d5565b9350505b849150505b811580156128865750600081115b8061289957508115801590612899575080155b156128b65760405162461bcd60e51b815260040161090890614730565b60cd54604051634732387560e11b81526001600160a01b0390911690638e6470ea906128ea9030908a908790600401614631565b600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050508060d454612928612520565b61293291906141f8565b1015612951576040516391240a1b60e01b815260040160405180910390fd5b8160d55461295f91906141f8565b60d5556001600160a01b038616600090815260d760205260408120546129869084906141f8565b6001600160a01b038816600090815260d76020526040902081905590506129ad87836131d5565b306001600160a01b0316876001600160a01b0316600080516020614af4833981519152856040516129de9190613b7a565b60405180910390a3866001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838584604051612a239392919061420f565b60405180910390a250505050505050565b600054610100900460ff16612a5b5760405162461bcd60e51b815260040161090890614788565b612a63613355565b612a6c83613384565b60d154158015612a7c575060d254155b612a985760405162461bcd60e51b8152600401610908906147d8565b60cf88905587612aba5760405162461bcd60e51b815260040161090890614835565b612ac38a6133ab565b4360d155670de0b6b3a764000060d255612adc89612cd0565b612ae58161210e565b8651612af89060ca9060208a0190613998565b508551612b0c9060cb906020890190613998565b5060cc805460ff191660ff87161790558151612b279061259f565b612b348260200151611ecd565b66b1a2bc2ec5000060da5560c98054610100600160a81b0319166101006001600160a01b038e811682029290921792839055604080516318160ddd60e01b8152905191909304909116916318160ddd9160048083019260209291908290030181865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc919061418e565b5060c9805460ff19166001179055612be384612712565b5050505050505050505050565b60c95460ff16612c125760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055612c246115dc565b506000826001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b919061418e565b90508015612cae5780604051633eea49b760e11b81526004016109089190613b7a565b612cbb8686868686613486565b505060c9805460ff1916600117905550505050565b60004360d15414612cf457604051630be2a5cb60e11b815260040160405180910390fd5b60ce60009054906101000a90046001600160a01b03169050816001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906145e3565b612d8a5760405162461bcd60e51b815260040161090890614879565b60ce80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92690600090a35050565b6040805160208101909152600081526040518060200160405280612e0385600001518561382b565b90529392505050565b600080612e198585612ddb565b905061200c612e27826132a1565b84613837565b60cd5460405163037883e560e31b81526001600160a01b0390911690631bc41f2890612e63903090889088908890600401614889565b600060405180830381600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b50505050826001600160a01b0316826001600160a01b031603612ec757604051633a94626760e11b815260040160405180910390fd5b6000612ee382604051806020016040528060da54815250613332565b90506000612ef182846141f8565b905060006040518060200160405280612f08611fa0565b905290506000612f188285612508565b905060008160d454612f2a91906141c5565b60d481905560d554909150612f409086906141f8565b60d5556001600160a01b038716600090815260d76020526040902054612f679087906141f8565b6001600160a01b03808916600090815260d7602052604080822093909355908a1681522054612f979085906141c5565b6001600160a01b03808a16600081815260d760205260409081902093909355915190891690600080516020614af483398151915290612fd7908890613b7a565b60405180910390a3306001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516130109190613b7a565b60405180910390a3306001600160a01b03167fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc58383604051613053929190614267565b60405180910390a2505050505050505050565b60cd5460405163df71403b60e01b81526001600160a01b039091169063df71403b9061309a90309086908690600401614631565b600060405180830381600087803b1580156130b457600080fd5b505af11580156130c8573d6000803e3d6000fd5b505050506130d34390565b60d154146130f457604051630e8d8c6160e21b815260040160405180910390fd5b8060d454613100612520565b61310a91906141f8565b1015613129576040516348c2588160e01b815260040160405180910390fd5b600061313483611f30565b9050600061314283836141c5565b905060008360d35461315491906141c5565b6001600160a01b038616600090815260d96020526040902083815560d25460019091015560d3819055905061318985856131d5565b846001600160a01b03167f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab808584846040516131c69392919061420f565b60405180910390a25050505050565b60c95461010090046001600160a01b031661206b818484612015565b6000613246826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138439092919063ffffffff16565b905080516000148061326757508080602001905181019061326791906145e3565b61206b5760405162461bcd60e51b815260040161090890614905565b6000610e3a61329a84670de0b6b3a764000061382b565b8351613852565b80516000906109af90670de0b6b3a764000090614596565b6132da846323b872dd60e01b85858560405160240161203493929190614631565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000061334b84846000015161382b565b610e3a9190614596565b600054610100900460ff1661337c5760405162461bcd60e51b815260040161090890614788565b61110361385e565b600054610100900460ff166109bd5760405162461bcd60e51b815260040161090890614788565b60cd5460408051623f1ee960e11b815290516001600160a01b0392831692841691627e3dd29160048083019260209291908290030181865afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341991906145e3565b6134355760405162461bcd60e51b815260040161090890614879565b60cd80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d90600090a35050565b60cd5460405163e89d51ad60e01b81526001600160a01b039091169063e89d51ad906134be9030908690899089908890600401614915565b600060405180830381600087803b1580156134d857600080fd5b505af11580156134ec573d6000803e3d6000fd5b505050506134f74390565b60d15414613518576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357b919061418e565b1461359957604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b0316036135cb57604051631bd1a62160e21b815260040160405180910390fd5b826000036135ec5760405163d29da7ef60e01b815260040160405180910390fd5b600019830361360e57604051635982c5bb60e11b815260040160405180910390fd5b600061361b868686611d78565b60cd5460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b9061365590309089908890600401614631565b6040805180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190614957565b91509150600082146136b95760405162461bcd60e51b8152600401610908906149da565b6040516370a0823160e01b815281906001600160a01b038716906370a08231906136e7908b90600401613b91565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061418e565b10156137465760405162461bcd60e51b815260040161090890614a1e565b306001600160a01b038616036137675761376230898984612e2d565b6137ca565b60405163b2a02ff160e01b81526001600160a01b0386169063b2a02ff190613797908b908b908690600401614631565b600060405180830381600087803b1580156137b157600080fd5b505af11580156137c5573d6000803e3d6000fd5b505050505b846001600160a01b0316876001600160a01b0316896001600160a01b03167f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528685604051613819929190614267565b60405180910390a45050505050505050565b6000610e3a8284614561565b6000610e3a82846141c5565b6060611f98848460008561388e565b6000610e3a8284614596565b600054610100900460ff166138855760405162461bcd60e51b815260040161090890614788565b61110333612712565b6060824710156138b05760405162461bcd60e51b815260040161090890614a71565b600080866001600160a01b031685876040516138cc9190614aa3565b60006040518083038185875af1925050503d8060008114613909576040519150601f19603f3d011682016040523d82523d6000602084013e61390e565b606091505b509150915061391f8783838761392a565b979650505050505050565b60608315613969578251600003613962576001600160a01b0385163b6139625760405162461bcd60e51b815260040161090890614ae3565b5081611f98565b611f98838381511561397e5781518083602001fd5b8060405162461bcd60e51b81526004016109089190613a8f565b8280546139a490614065565b90600052602060002090601f0160209004810192826139c65760008555613a0c565b82601f106139df57805160ff1916838001178555613a0c565b82800160010185558215613a0c579182015b82811115613a0c5782518255916020019190600101906139f1565b50613a18929150613a1c565b5090565b5b80821115613a185760008155600101613a1d565b60005b83811015613a4c578181015183820152602001613a34565b838111156132da5750506000910152565b6000613a67825190565b808452602084019350613a7e818560208601613a31565b601f01601f19169290920192915050565b60208082528101610e3a8184613a5d565b805b81146109c657600080fd5b80356109af81613aa0565b600060208284031215613acd57613acd600080fd5b6000611f988484613aad565b60006001600160a01b0382166109af565b613aa281613ad9565b80356109af81613aea565b60008060408385031215613b1457613b14600080fd5b6000613b208585613af3565b9250506020613b3185828601613aad565b9150509250929050565b8015155b82525050565b602081016109af8284613b3b565b600060208284031215613b6857613b68600080fd5b6000611f988484613af3565b80613b3f565b602081016109af8284613b74565b613b3f81613ad9565b602081016109af8284613b88565b60006109af82613ad9565b613aa281613b9f565b80356109af81613baa565b600060208284031215613bd357613bd3600080fd5b6000611f988484613bb3565b600080600060608486031215613bf757613bf7600080fd5b6000613c038686613af3565b9350506020613c1486828701613af3565b9250506040613c2586828701613aad565b9150509250925092565b60ff8116613b3f565b602081016109af8284613c2f565b60006109af6001600160a01b038316613c5d565b90565b6001600160a01b031690565b60006109af82613c46565b60006109af82613c69565b613b3f81613c74565b602081016109af8284613c7f565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613cd257613cd2613c96565b6040525050565b6000613ce460405190565b9050613cf08282613cac565b919050565b600067ffffffffffffffff821115613d0f57613d0f613c96565b601f19601f83011660200192915050565b82818337506000910152565b6000613d3f613d3a84613cf5565b613cd9565b905082815260208101848484011115613d5a57613d5a600080fd5b613d65848285613d20565b509392505050565b600082601f830112613d8157613d81600080fd5b8135611f98848260208601613d2c565b60ff8116613aa2565b80356109af81613d91565b600060408284031215613dba57613dba600080fd5b613dc46040613cd9565b90506000613dd28484613af3565b8252506020613de384848301613af3565b60208301525092915050565b60008060008060008060008060008060006101808c8e031215613e1457613e14600080fd5b6000613e208e8e613af3565b9b50506020613e318e828f01613bb3565b9a50506040613e428e828f01613bb3565b9950506060613e538e828f01613aad565b98505060808c013567ffffffffffffffff811115613e7357613e73600080fd5b613e7f8e828f01613d6d565b97505060a08c013567ffffffffffffffff811115613e9f57613e9f600080fd5b613eab8e828f01613d6d565b96505060c0613ebc8e828f01613d9a565b95505060e0613ecd8e828f01613af3565b945050610100613edf8e828f01613af3565b935050610120613ef18e828f01613da5565b925050610160613f038e828f01613aad565b9150509295989b509295989b9093969950565b801515613aa2565b80356109af81613f16565b600080600080600060a08688031215613f4457613f44600080fd5b6000613f508888613af3565b9550506020613f6188828901613af3565b9450506040613f7288828901613aad565b9350506060613f8388828901613bb3565b9250506080613f9488828901613f1e565b9150509295509295909350565b60808101613faf8287613b74565b613fbc6020830186613b74565b613fc96040830185613b74565b61200c6060830184613b74565b60008060408385031215613fec57613fec600080fd5b6000613ff88585613af3565b9250506020613b3185828601613af3565b60008060006060848603121561402157614021600080fd5b600061402d8686613af3565b935050602061403e86828701613aad565b9250506040613c2586828701613bb3565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061407957607f821691505b60208210810361408b5761408b61404f565b50919050565b600a8152600060208201691c994b595b9d195c995960b21b815291505b5060200190565b602080825281016109af81614091565b602f81526000602082017f56546f6b656e3a3a7377656570546f6b656e3a206f6e6c792061646d696e206381526e616e20737765657020746f6b656e7360881b602082015291505b5060400190565b602080825281016109af816140c5565b603281526000602082017f56546f6b656e3a3a7377656570546f6b656e3a2063616e206e6f74207377656581527138103ab73232b9363cb4b733903a37b5b2b760711b6020820152915061410d565b602080825281016109af81614124565b80516109af81613aa0565b6000602082840312156141a3576141a3600080fd5b6000611f988484614183565b634e487b7160e01b600052601160045260246000fd5b600082198211156141d8576141d86141af565b500190565b604081016141eb8285613b88565b610e3a6020830184613b88565b60008282101561420a5761420a6141af565b500390565b6060810161421d8286613b74565b61422a6020830185613b74565b611f986040830184613b74565b60006109af613c5a8381565b613b3f81614237565b6060810161425a8286613b74565b61422a6020830185614243565b604081016142758285613b74565b610e3a6020830184613b74565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061410d565b602080825281016109af81614282565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061410d565b602080825281016109af816142d8565b600060ff82166109af565b613b3f81614333565b602081016109af828461433e565b601e81526000602082017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000815291506140ae565b602080825281016109af81614355565b601c81526000602082017f626f72726f772072617465206973206162737572646c79206869676800000000815291506140ae565b602080825281016109af81614399565b60a081016143eb8288613b74565b6143f86020830187613b74565b6144056040830186613b74565b6144126060830185613b74565b6127086080830184613b74565b602b81526000602082017f6f6e6c792073686f727466616c6c20636f6e74726163742063616e207570646181526a1d1948189859081919589d60aa1b6020820152915061410d565b602080825281016109af8161441f565b602981526000602082017f6d6f7265207468616e206261642064656274207265636f76657265642066726f815268369030bab1ba34b7b760b91b6020820152915061410d565b602080825281016109af81614477565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006140ae565b602080825281016109af816144cd565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061410d565b602080825281016109af8161450f565b600081600019048311821515161561457b5761457b6141af565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826145a5576145a5614580565b500490565b604081016142758285613b88565b604081016145c68285613b88565b8181036020830152611f988184613a5d565b80516109af81613f16565b6000602082840312156145f8576145f8600080fd5b6000611f9884846145d8565b606081016146128286613b88565b61461f6020830185613b88565b818103604083015261200c8184613a5d565b6060810161463f8286613b88565b61422a6020830185613b88565b6080810161465a8287613b88565b6146676020830186613b88565b613fc96040830185613b88565b603481526000602082017f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d418152736d6f756e74496e206d757374206265207a65726f60601b6020820152915061410d565b602080825281016109af81614674565b600060001982036146e8576146e86141af565b5060010190565b602481526000602082017f72656465656d546f6b656e73206f722072656465656d416d6f756e74206973208152637a65726f60e01b6020820152915061410d565b602080825281016109af816146ef565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061410d565b602080825281016109af81614740565b602381526000602082017f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f8152626e636560e81b6020820152915061410d565b602080825281016109af81614798565b603081526000602082017f696e697469616c2065786368616e67652072617465206d75737420626520677281526f32b0ba32b9103a3430b7103d32b9379760811b6020820152915061410d565b602080825281016109af816147e8565b601c81526000602082017f6d61726b6572206d6574686f642072657475726e65642066616c736500000000815291506140ae565b602080825281016109af81614845565b608081016148978287613b88565b6148a46020830186613b88565b6148b16040830185613b88565b61200c6060830184613b88565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061410d565b602080825281016109af816148be565b60a081016149238288613b88565b6149306020830187613b88565b61493d6040830186613b88565b61494a6060830185613b74565b6127086080830184613b3b565b6000806040838503121561496d5761496d600080fd5b60006149798585614183565b9250506020613b3185828601614183565b603381526000602082017f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f815272105353d5539517d4d152569157d19052531151606a1b6020820152915061410d565b602080825281016109af8161498a565b601881526000602082017f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000815291506140ae565b602080825281016109af816149ea565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061410d565b602080825281016109af81614a2e565b6000614a8b825190565b614a99818560208601613a31565b9290920192915050565b6000610e3a8284614a81565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506140ae565b602080825281016109af81614aaf56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f7af5d406a0d6eb47b6f0fa65c83048c657d631cb3e2518b60b8306977f15f9364736f6c634300080d0033",
1847
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103d05760003560e01c8063757212f0116101ff578063ae9d70b01161011a578063dd62ed3e116100ad578063f2fde38b1161007c578063f2fde38b14610817578063f3fdb15a1461082a578063f5e3c4621461083d578063f8f9da281461085057600080fd5b8063dd62ed3e146107a2578063e30c3978146107db578063e9a44fd9146107ec578063ef60450c1461080457600080fd5b8063bd6d894d116100e9578063bd6d894d14610751578063c37f68e214610759578063c5ebeaec1461077c578063db006a751461078f57600080fd5b8063ae9d70b01461071c578063b2a02ff114610724578063b4a0bdf314610737578063bbcac5571461074857600080fd5b80638f840ddd11610192578063a457c2d711610161578063a457c2d7146106e5578063a6afed95146106f8578063a9059cbb14610700578063aa5af0fd1461071357600080fd5b80638f840ddd146106ae57806395d89b41146106b757806395dd9193146106bf578063a0712d68146106d257600080fd5b80638a42c319116101ce5780638a42c319146106645780638bbdb6db146106775780638bcd40161461068a5780638da5cb5b1461069d57600080fd5b8063757212f0146106235780637821a5141461063657806379ba509714610649578063852a12e31461065157600080fd5b8063313ce567116102ef5780635fe3b567116102825780636f307dc3116102515780636f307dc3146105d257806370a08231146105ea578063715018a61461061357806373acee981461061b57600080fd5b80635fe3b567146105985780636752e702146105b857806369ab3250146105c15780636c540baf146105c957600080fd5b80633d9ea3a1116102be5780633d9ea3a11461056257806341f641ee1461056957806344fe6ffe1461057c57806347bd37181461058f57600080fd5b8063313ce5671461051a57806339509351146105345780633af9e669146105475780633b1d21a21461055a57600080fd5b806318160ddd116103675780631c446983116103365780631c446983146104ce57806323323e03146104e157806323b872dd146104f45780632608f8181461050757600080fd5b806318160ddd1461048a578063182df0f51461049357806319b1faef1461049b5780631be19560146104bb57600080fd5b80630e752702116103a35780630e7527021461043b578063107568df1461045b578063173b99041461046e57806317bfdfbc1461047757600080fd5b806306fdde03146103d557806307e27959146103f3578063095ea7b3146104085780630e32cb8614610428575b600080fd5b6103dd610858565b6040516103ea9190613a8f565b60405180910390f35b610406610401366004613ab8565b6108e6565b005b61041b610416366004613afe565b61093d565b6040516103ea9190613b45565b610406610436366004613b53565b6109b5565b61044e610449366004613ab8565b6109c9565b6040516103ea9190613b7a565b610406610469366004613b53565b610a23565b61044e60d05481565b61044e610485366004613b53565b610a34565b61044e60d55481565b61044e610a89565b60db546104ae906001600160a01b031681565b6040516103ea9190613b91565b6104066104c9366004613bbe565b610a98565b6104066104dc366004613ab8565b610bc5565b61044e6104ef366004613afe565b610c40565b61041b610502366004613bdf565b610ca2565b61044e610515366004613afe565b610cf4565b60cc546105279060ff1681565b6040516103ea9190613c38565b61041b610542366004613afe565b610d4f565b61044e610555366004613b53565b610dfb565b61044e610e41565b600161041b565b610406610577366004613b53565b610e4b565b61040661058a366004613bdf565b610e5c565b61044e60d35481565b60cd546105ab906001600160a01b031681565b6040516103ea9190613c88565b61044e60da5481565b61044e600081565b61044e60d15481565b60c9546104ae9061010090046001600160a01b031681565b61044e6105f8366004613b53565b6001600160a01b0316600090815260d7602052604090205490565b6104066110f1565b61044e611105565b610406610631366004613ab8565b611151565b610406610644366004613ab8565b611278565b6104066112c7565b61044e61065f366004613ab8565b6112fc565b610406610672366004613def565b611355565b610406610685366004613f29565b611443565b610406610698366004613bbe565b611482565b6033546001600160a01b03166104ae565b61044e60d45481565b6103dd6114d2565b61044e6106cd366004613b53565b6114df565b61044e6106e0366004613ab8565b6114ea565b61041b6106f3366004613afe565b61152d565b61044e6115dc565b61041b61070e366004613afe565b61178e565b61044e60d25481565b61044e6117df565b610406610732366004613bdf565b611868565b6097546001600160a01b03166105ab565b61044e60d65481565b61044e6118b2565b61076c610767366004613b53565b611904565b6040516103ea9493929190613fa1565b61044e61078a366004613ab8565b611945565b61044e61079d366004613ab8565b611987565b61044e6107b0366004613fd6565b6001600160a01b03918216600090815260d86020908152604080832093909416825291909152205490565b6065546001600160a01b03166104ae565b60cc546104ae9061010090046001600160a01b031681565b610406610812366004613ab8565b6119cb565b610406610825366004613b53565b611a60565b60ce546105ab906001600160a01b031681565b61044e61084b366004614009565b611ad1565b61044e611aeb565b60ca805461086590614065565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614065565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b60c95460ff166109115760405162461bcd60e51b8152600401610908906140b5565b60405180910390fd5b60c9805460ff191690556109236115dc565b5061092d81611b2f565b5060c9805460ff19166001179055565b600061094883611ca2565b33600081815260d8602090815260408083206001600160a01b038816808552925291829020859055905182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a1908790613b7a565b60405180910390a360019150505b92915050565b6109bd611cc9565b6109c681611cf3565b50565b60c95460009060ff166109ee5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a006115dc565b50610a0c333384611d78565b506000905060c9805460ff19166001179055919050565b610a2b611cc9565b6109c681611ecd565b60c95460009060ff16610a595760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610a6b6115dc565b50610a7582611f30565b905060c9805460ff19166001179055919050565b6000610a93611fa0565b905090565b6033546001600160a01b03163314610ac25760405162461bcd60e51b815260040161090890614114565b60c9546001600160a01b03610100909104811690821603610af55760405162461bcd60e51b815260040161090890614173565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610b24903090600401613b91565b602060405180830381865afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b65919061418e565b9050610b8d610b7c6033546001600160a01b031690565b6001600160a01b0384169083612015565b6040516001600160a01b038316907f35ce4c546a473796a8e70ec2d4af4f2031afe357afa7057b6ea7fa340730e1b290600090a25050565b60c95460ff16610be75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905560408051808201909152601981527f73657452657365727665466163746f722875696e7432353629000000000000006020820152610c2e90612070565b610c366115dc565b5061092d8161210e565b60c95460009060ff16610c655760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610c7883611ca2565b610c806115dc565b50610c8c338484612193565b50600060c9805460ff1916600117905592915050565b60c95460009060ff16610cc75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610cdd33858585612329565b50600160c9805460ff191660011790559392505050565b60c95460009060ff16610d195760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055610d2b6115dc565b50610d37338484611d78565b506000905060c9805460ff1916600117905592915050565b6000610d5a83611ca2565b33600081815260d8602090815260408083206001600160a01b0388168452909152902054610d8884826141c5565b6001600160a01b03808416600081815260d860209081526040808320948b1680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60405180910390a3506001949350505050565b6000806040518060200160405280610e116118b2565b90526001600160a01b038416600090815260d76020526040902054909150610e3a908290612508565b9392505050565b6000610a93612520565b610e53611cc9565b6109c68161259f565b60c95460ff16610e7e5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690558015610ef35760cd5460405163eade3eed60e01b81526001600160a01b039091169063eade3eed90610ec090309086906004016141dd565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050505b60cd546001600160a01b03163314610f1e57604051632c40292560e01b815260040160405180910390fd5b6000610f2983611f30565b60d35490915060008315610fa257610f4186856125fa565b9050610f4d81836141f8565b91506001600160a01b038086169087167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a183610f8981886141f8565b86604051610f999392919061420f565b60405180910390a35b6000610fae82856141f8565b905080156110725760d6546000610fc583836141c5565b9050610fd183866141f8565b94508060d681905550876001600160a01b0316306001600160a01b03167f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1856000896040516110229392919061424c565b60405180910390a3876001600160a01b03167f90125ffdb441e57c4f6bf69789206424859f206bea5727f2d81ad2470826ef6a8484846040516110679392919061420f565b60405180910390a250505b6001600160a01b03808716600081815260d9602052604080822091825560d25460019092019190915560d38690555190918916907f9fe0294717a8efbc6ace1c151b73a4c89982339b2228a27d1ca21394e348986f906110d3908990613b7a565b60405180910390a3505060c9805460ff191660011790555050505050565b6110f9611cc9565b6111036000612712565b565b60c95460009060ff1661112a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561113c6115dc565b505060d35460c9805460ff1916600117905590565b61118f6040518060400160405280601e81526020017f73657450726f746f636f6c5365697a6553686172652875696e74323536290000815250612070565b60cd5460408051634ada90af60e01b815290516000926001600160a01b031691634ada90af9160048083019260209291908290030181865afa1580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd919061418e565b905080611212670de0b6b3a7640000846141c5565b11156112315760405163034dd2c160e11b815260040160405180910390fd5b60da8054908390556040517ff5815f353a60e815cce7553e4f60c533a59d26b1b5504ea4b6db8d60da3e4da29061126b9083908690614267565b60405180910390a1505050565b60c95460ff1661129a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556112ac6115dc565b506112b68161272b565b505060c9805460ff19166001179055565b60655433906001600160a01b031681146112f35760405162461bcd60e51b8152600401610908906142c8565b6109c681612712565b60c95460009060ff166113215760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556113336115dc565b50611340336000846127b8565b50600060c9805460ff19166001179055919050565b600054610100900460ff16158080156113755750600054600160ff909116105b8061138f5750303b15801561138f575060005460ff166001145b6113ab5760405162461bcd60e51b815260040161090890614323565b6000805460ff1916600117905580156113ce576000805461ff0019166101001790555b6113d785611ca2565b6113ea8c8c8c8c8c8c8c8c8c8c8c612a34565b8015611435576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061142c90600190614347565b60405180910390a15b505050505050505050505050565b60cd546001600160a01b0316331461146e57604051635c85a5e760e01b815260040160405180910390fd5b61147b8585858585612bf0565b5050505050565b6114c06040518060400160405280601d81526020017f736574496e746572657374526174654d6f64656c286164647265737329000000815250612070565b6114c86115dc565b506109c681612cd0565b60cb805461086590614065565b60006109af82611f30565b60c95460009060ff1661150f5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556115216115dc565b50611340333384612193565b600061153883611ca2565b33600081815260d8602090815260408083206001600160a01b03881684529091529020548381101561157c5760405162461bcd60e51b815260040161090890614389565b6001600160a01b03808316600081815260d860209081526040808320948a1680845294909152908190209387900393849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610de8908590613b7a565b60d15460009043908181036115f45760009250505090565b60006115fe612520565b60d35460d45460d25460ce5460d6546040516301cee29d60e21b81529596509394929391926000926001600160a01b039092169163073b8a749161164a91899189918991600401613fa1565b602060405180830381865afa158015611667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168b919061418e565b905065048c273950008111156116b35760405162461bcd60e51b8152600401610908906143cd565b60006116bf87896141f8565b905060006116db60405180602001604052808581525083612ddb565b905060006116e98288612508565b905060006116f788836141c5565b90506000611716604051806020016040528060d054815250848a612e0c565b9050600061172585898a612e0c565b60d18e905560d281905560d384905560d48390556040519091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc0490611772908d90879085908890613fa1565b60405180910390a160009d505050505050505050505050505090565b60c95460009060ff166117b35760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556117c933808585612329565b50600160c9805460ff1916600117905592915050565b60ce546000906001600160a01b0316630cde8d1c6117fb612520565b60d35460d45460d05460d6546040518663ffffffff1660e01b81526004016118279594939291906143dd565b602060405180830381865afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a93919061418e565b60c95460ff1661188a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118a033848484612e2d565b505060c9805460ff1916600117905550565b60c95460009060ff166118d75760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556118e96115dc565b506118f2611fa0565b905060c9805460ff1916600117905590565b6001600160a01b038116600090815260d76020526040812054819081908190819061192e87611f30565b611936611fa0565b93509350935093509193509193565b60c95460009060ff1661196a5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff1916905561197c6115dc565b506113403383613066565b60c95460009060ff166119ac5760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff191690556119be6115dc565b50611340338360006127b8565b60db546001600160a01b031633146119f55760405162461bcd60e51b815260040161090890614467565b60d654811115611a175760405162461bcd60e51b8152600401610908906144bd565b60d6546000611a2683836141f8565b90508060d6819055507f9e19ec7d2b8f8a94df8cc0072453ace318d221e3cbb2731d0eaa0baac856520f828260405161126b929190614267565b611a68611cc9565b606580546001600160a01b0383166001600160a01b03199091168117909155611a996033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611ae1338585856000612bf0565b5060009392505050565b60ce546000906001600160a01b031663073b8a74611b07612520565b60d35460d45460d6546040518563ffffffff1660e01b81526004016118279493929190613fa1565b60004360d15414611b5357604051630dff50cb60e41b815260040160405180910390fd5b81611b5c612520565b1015611b7b57604051633345e99960e01b815260040160405180910390fd5b60d454821115611b9e576040516378d2980560e11b815260040160405180910390fd5b8160d454611bac91906141f8565b60d481905560cc54909150611bcf9061010090046001600160a01b0316836131d5565b60cc5460cd5460c95460405163aac59a7560e01b81526001600160a01b036101009485900481169463aac59a7594611c149490831693919004909116906004016141dd565b600060405180830381600087803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b5050505060cc60019054906101000a90046001600160a01b03166001600160a01b03167f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e8383604051611c96929190614267565b60405180910390a25050565b6001600160a01b0381166109c6576040516342bcdf7f60e11b815260040160405180910390fd5b6033546001600160a01b031633146111035760405162461bcd60e51b8152600401610908906144ff565b6001600160a01b038116611d195760405162461bcd60e51b815260040161090890614551565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090611d6c90839085906141dd565b60405180910390a15050565b60cd5460405163eade3eed60e01b81526000916001600160a01b03169063eade3eed90611dab90309087906004016141dd565b600060405180830381600087803b158015611dc557600080fd5b505af1158015611dd9573d6000803e3d6000fd5b50505050611de44390565b60d15414611e055760405163c9021e2f60e01b815260040160405180910390fd5b6000611e1084611f30565b9050600081841015611e225783611e24565b815b90506000611e3287836125fa565b90506000611e4082856141f8565b905060008260d354611e5291906141f8565b6001600160a01b03808a16600081815260d960205260409081902086815560d25460019091015560d38490555192935091908b16907f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a190611eb89087908790879061420f565b60405180910390a35090979650505050505050565b611ed681611ca2565b60cc80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907fafec95c8612496c3ecf5dddc71e393528fe29bd145fbaf9c6b496d78d7e2d79b90600090a35050565b6001600160a01b038116600090815260d9602090815260408083208151808301909252805480835260019091015492820192909252908203611f755750600092915050565b60d2548151600091611f8691614561565b9050816020015181611f989190614596565b949350505050565b60d554600090808203611fb557505060cf5490565b6000611fbf612520565b9050600060d45460d65460d35484611fd791906141c5565b611fe191906141c5565b611feb91906141f8565b9050600083612002670de0b6b3a764000084614561565b61200c9190614596565b95945050505050565b61206b8363a9059cbb60e01b84846040516024016120349291906145aa565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526131f1565b505050565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906120a390339086906004016145b8565b602060405180830381865afa1580156120c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e491906145e3565b90508061210a57333083604051634a3fa29360e01b815260040161090893929190614604565b5050565b4360d1541461213057604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008111156121595760405163717220f360e11b815260040160405180910390fd5b60d08054908290556040517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146090611d6c9083908590614267565b60cd5460405163c0891ba960e01b81526001600160a01b039091169063c0891ba9906121c790309086908690600401614631565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050506122004390565b60d15414612221576040516338d8859760e01b815260040160405180910390fd5b60006040518060200160405280612236611fa0565b90529050600061224685846125fa565b905060006122548284613283565b90508060d55461226491906141c5565b60d5556001600160a01b038516600090815260d7602052604081205461228b9083906141c5565b6001600160a01b038716600081815260d760205260409081902083905551919250907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb906122de9086908690869061420f565b60405180910390a2856001600160a01b031660006001600160a01b0316600080516020614af4833981519152846040516123189190613b7a565b60405180910390a350505050505050565b60cd54604051636d0be88d60e01b81526001600160a01b0390911690636d0be88d9061235f90309087908790879060040161464c565b600060405180830381600087803b15801561237957600080fd5b505af115801561238d573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b0316036123c357604051638cd22d1960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b0316036123e7575060001961240f565b506001600160a01b03808416600090815260d860209081526040808320938816835292905220545b600061241b83836141f8565b6001600160a01b038616600090815260d76020526040812054919250906124439085906141f8565b6001600160a01b038616600090815260d760205260408120549192509061246b9086906141c5565b6001600160a01b03808916600090815260d76020526040808220869055918916815220819055905060001984146124c5576001600160a01b03808816600090815260d860209081526040808320938c168352929052208390555b856001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516124f69190613b7a565b60405180910390a35050505050505050565b6000806125158484612ddb565b9050611f98816132a1565b60c9546040516370a0823160e01b815260009161010090046001600160a01b03169081906370a0823190612558903090600401613b91565b602060405180830381865afa158015612575573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612599919061418e565b91505090565b6125a881611ca2565b60db80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f6dbf1ff28f860de5edafa4c6505e37c0aba213288cc4166c5352b6d3776c79ef90600090a35050565b60c9546040516370a0823160e01b815260009161010090046001600160a01b031690829082906370a0823190612634903090600401613b91565b602060405180830381865afa158015612651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612675919061418e565b905061268c6001600160a01b0383168630876132b9565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906126bb903090600401613b91565b602060405180830381865afa1580156126d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fc919061418e565b905061270882826141f8565b9695505050505050565b606580546001600160a01b03191690556109c6816132e0565b600080804360d1541461275357806040516338acf79960e01b81526004016109089190613b7a565b61275d33856125fa565b90508060d45461276d91906141c5565b60d481905560405190925033907fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5906127a99084908690614267565b60405180910390a29392505050565b8115806127c3575080155b6127df5760405162461bcd60e51b8152600401610908906146c5565b4360d15414612801576040516397b5cfcd60e01b815260040160405180910390fd5b60006040518060200160405280612816611fa0565b905290506000808415612837578491506128308386612508565b9050612878565b6128418484613283565b9150600061284f8385613332565b905080158015906128605750848114155b15612873578261286f816146d5565b9350505b849150505b811580156128865750600081115b8061289957508115801590612899575080155b156128b65760405162461bcd60e51b815260040161090890614730565b60cd54604051634732387560e11b81526001600160a01b0390911690638e6470ea906128ea9030908a908790600401614631565b600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050508060d454612928612520565b61293291906141f8565b1015612951576040516391240a1b60e01b815260040160405180910390fd5b8160d55461295f91906141f8565b60d5556001600160a01b038616600090815260d760205260408120546129869084906141f8565b6001600160a01b038816600090815260d76020526040902081905590506129ad87836131d5565b306001600160a01b0316876001600160a01b0316600080516020614af4833981519152856040516129de9190613b7a565b60405180910390a3866001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838584604051612a239392919061420f565b60405180910390a250505050505050565b600054610100900460ff16612a5b5760405162461bcd60e51b815260040161090890614788565b612a63613355565b612a6c83613384565b60d154158015612a7c575060d254155b612a985760405162461bcd60e51b8152600401610908906147d8565b60cf88905587612aba5760405162461bcd60e51b815260040161090890614835565b612ac38a6133ab565b4360d155670de0b6b3a764000060d255612adc89612cd0565b612ae58161210e565b8651612af89060ca9060208a0190613998565b508551612b0c9060cb906020890190613998565b5060cc805460ff191660ff87161790558151612b279061259f565b612b348260200151611ecd565b66b1a2bc2ec5000060da5560c98054610100600160a81b0319166101006001600160a01b038e811682029290921792839055604080516318160ddd60e01b8152905191909304909116916318160ddd9160048083019260209291908290030181865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc919061418e565b5060c9805460ff19166001179055612be384612712565b5050505050505050505050565b60c95460ff16612c125760405162461bcd60e51b8152600401610908906140b5565b60c9805460ff19169055612c246115dc565b506000826001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8b919061418e565b90508015612cae5780604051633eea49b760e11b81526004016109089190613b7a565b612cbb8686868686613486565b505060c9805460ff1916600117905550505050565b60004360d15414612cf457604051630be2a5cb60e11b815260040160405180910390fd5b60ce60009054906101000a90046001600160a01b03169050816001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e91906145e3565b612d8a5760405162461bcd60e51b815260040161090890614879565b60ce80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92690600090a35050565b6040805160208101909152600081526040518060200160405280612e0385600001518561382b565b90529392505050565b600080612e198585612ddb565b905061200c612e27826132a1565b84613837565b60cd5460405163037883e560e31b81526001600160a01b0390911690631bc41f2890612e63903090889088908890600401614889565b600060405180830381600087803b158015612e7d57600080fd5b505af1158015612e91573d6000803e3d6000fd5b50505050826001600160a01b0316826001600160a01b031603612ec757604051633a94626760e11b815260040160405180910390fd5b6000612ee382604051806020016040528060da54815250613332565b90506000612ef182846141f8565b905060006040518060200160405280612f08611fa0565b905290506000612f188285612508565b905060008160d454612f2a91906141c5565b60d481905560d554909150612f409086906141f8565b60d5556001600160a01b038716600090815260d76020526040902054612f679087906141f8565b6001600160a01b03808916600090815260d7602052604080822093909355908a1681522054612f979085906141c5565b6001600160a01b03808a16600081815260d760205260409081902093909355915190891690600080516020614af483398151915290612fd7908890613b7a565b60405180910390a3306001600160a01b0316876001600160a01b0316600080516020614af4833981519152876040516130109190613b7a565b60405180910390a3306001600160a01b03167fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc58383604051613053929190614267565b60405180910390a2505050505050505050565b60cd5460405163df71403b60e01b81526001600160a01b039091169063df71403b9061309a90309086908690600401614631565b600060405180830381600087803b1580156130b457600080fd5b505af11580156130c8573d6000803e3d6000fd5b505050506130d34390565b60d154146130f457604051630e8d8c6160e21b815260040160405180910390fd5b8060d454613100612520565b61310a91906141f8565b1015613129576040516348c2588160e01b815260040160405180910390fd5b600061313483611f30565b9050600061314283836141c5565b905060008360d35461315491906141c5565b6001600160a01b038616600090815260d96020526040902083815560d25460019091015560d3819055905061318985856131d5565b846001600160a01b03167f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab808584846040516131c69392919061420f565b60405180910390a25050505050565b60c95461010090046001600160a01b031661206b818484612015565b6000613246826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138439092919063ffffffff16565b905080516000148061326757508080602001905181019061326791906145e3565b61206b5760405162461bcd60e51b815260040161090890614905565b6000610e3a61329a84670de0b6b3a764000061382b565b8351613852565b80516000906109af90670de0b6b3a764000090614596565b6132da846323b872dd60e01b85858560405160240161203493929190614631565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000061334b84846000015161382b565b610e3a9190614596565b600054610100900460ff1661337c5760405162461bcd60e51b815260040161090890614788565b61110361385e565b600054610100900460ff166109bd5760405162461bcd60e51b815260040161090890614788565b60cd5460408051623f1ee960e11b815290516001600160a01b0392831692841691627e3dd29160048083019260209291908290030181865afa1580156133f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341991906145e3565b6134355760405162461bcd60e51b815260040161090890614879565b60cd80546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d90600090a35050565b60cd5460405163e89d51ad60e01b81526001600160a01b039091169063e89d51ad906134be9030908690899089908890600401614915565b600060405180830381600087803b1580156134d857600080fd5b505af11580156134ec573d6000803e3d6000fd5b505050506134f74390565b60d15414613518576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357b919061418e565b1461359957604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b0316036135cb57604051631bd1a62160e21b815260040160405180910390fd5b826000036135ec5760405163d29da7ef60e01b815260040160405180910390fd5b600019830361360e57604051635982c5bb60e11b815260040160405180910390fd5b600061361b868686611d78565b60cd5460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b9061365590309089908890600401614631565b6040805180830381865afa158015613671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136959190614957565b91509150600082146136b95760405162461bcd60e51b8152600401610908906149da565b6040516370a0823160e01b815281906001600160a01b038716906370a08231906136e7908b90600401613b91565b602060405180830381865afa158015613704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613728919061418e565b10156137465760405162461bcd60e51b815260040161090890614a1e565b306001600160a01b038616036137675761376230898984612e2d565b6137ca565b60405163b2a02ff160e01b81526001600160a01b0386169063b2a02ff190613797908b908b908690600401614631565b600060405180830381600087803b1580156137b157600080fd5b505af11580156137c5573d6000803e3d6000fd5b505050505b846001600160a01b0316876001600160a01b0316896001600160a01b03167f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528685604051613819929190614267565b60405180910390a45050505050505050565b6000610e3a8284614561565b6000610e3a82846141c5565b6060611f98848460008561388e565b6000610e3a8284614596565b600054610100900460ff166138855760405162461bcd60e51b815260040161090890614788565b61110333612712565b6060824710156138b05760405162461bcd60e51b815260040161090890614a71565b600080866001600160a01b031685876040516138cc9190614aa3565b60006040518083038185875af1925050503d8060008114613909576040519150601f19603f3d011682016040523d82523d6000602084013e61390e565b606091505b509150915061391f8783838761392a565b979650505050505050565b60608315613969578251600003613962576001600160a01b0385163b6139625760405162461bcd60e51b815260040161090890614ae3565b5081611f98565b611f98838381511561397e5781518083602001fd5b8060405162461bcd60e51b81526004016109089190613a8f565b8280546139a490614065565b90600052602060002090601f0160209004810192826139c65760008555613a0c565b82601f106139df57805160ff1916838001178555613a0c565b82800160010185558215613a0c579182015b82811115613a0c5782518255916020019190600101906139f1565b50613a18929150613a1c565b5090565b5b80821115613a185760008155600101613a1d565b60005b83811015613a4c578181015183820152602001613a34565b838111156132da5750506000910152565b6000613a67825190565b808452602084019350613a7e818560208601613a31565b601f01601f19169290920192915050565b60208082528101610e3a8184613a5d565b805b81146109c657600080fd5b80356109af81613aa0565b600060208284031215613acd57613acd600080fd5b6000611f988484613aad565b60006001600160a01b0382166109af565b613aa281613ad9565b80356109af81613aea565b60008060408385031215613b1457613b14600080fd5b6000613b208585613af3565b9250506020613b3185828601613aad565b9150509250929050565b8015155b82525050565b602081016109af8284613b3b565b600060208284031215613b6857613b68600080fd5b6000611f988484613af3565b80613b3f565b602081016109af8284613b74565b613b3f81613ad9565b602081016109af8284613b88565b60006109af82613ad9565b613aa281613b9f565b80356109af81613baa565b600060208284031215613bd357613bd3600080fd5b6000611f988484613bb3565b600080600060608486031215613bf757613bf7600080fd5b6000613c038686613af3565b9350506020613c1486828701613af3565b9250506040613c2586828701613aad565b9150509250925092565b60ff8116613b3f565b602081016109af8284613c2f565b60006109af6001600160a01b038316613c5d565b90565b6001600160a01b031690565b60006109af82613c46565b60006109af82613c69565b613b3f81613c74565b602081016109af8284613c7f565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613cd257613cd2613c96565b6040525050565b6000613ce460405190565b9050613cf08282613cac565b919050565b600067ffffffffffffffff821115613d0f57613d0f613c96565b601f19601f83011660200192915050565b82818337506000910152565b6000613d3f613d3a84613cf5565b613cd9565b905082815260208101848484011115613d5a57613d5a600080fd5b613d65848285613d20565b509392505050565b600082601f830112613d8157613d81600080fd5b8135611f98848260208601613d2c565b60ff8116613aa2565b80356109af81613d91565b600060408284031215613dba57613dba600080fd5b613dc46040613cd9565b90506000613dd28484613af3565b8252506020613de384848301613af3565b60208301525092915050565b60008060008060008060008060008060006101808c8e031215613e1457613e14600080fd5b6000613e208e8e613af3565b9b50506020613e318e828f01613bb3565b9a50506040613e428e828f01613bb3565b9950506060613e538e828f01613aad565b98505060808c013567ffffffffffffffff811115613e7357613e73600080fd5b613e7f8e828f01613d6d565b97505060a08c013567ffffffffffffffff811115613e9f57613e9f600080fd5b613eab8e828f01613d6d565b96505060c0613ebc8e828f01613d9a565b95505060e0613ecd8e828f01613af3565b945050610100613edf8e828f01613af3565b935050610120613ef18e828f01613da5565b925050610160613f038e828f01613aad565b9150509295989b509295989b9093969950565b801515613aa2565b80356109af81613f16565b600080600080600060a08688031215613f4457613f44600080fd5b6000613f508888613af3565b9550506020613f6188828901613af3565b9450506040613f7288828901613aad565b9350506060613f8388828901613bb3565b9250506080613f9488828901613f1e565b9150509295509295909350565b60808101613faf8287613b74565b613fbc6020830186613b74565b613fc96040830185613b74565b61200c6060830184613b74565b60008060408385031215613fec57613fec600080fd5b6000613ff88585613af3565b9250506020613b3185828601613af3565b60008060006060848603121561402157614021600080fd5b600061402d8686613af3565b935050602061403e86828701613aad565b9250506040613c2586828701613bb3565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061407957607f821691505b60208210810361408b5761408b61404f565b50919050565b600a8152600060208201691c994b595b9d195c995960b21b815291505b5060200190565b602080825281016109af81614091565b602f81526000602082017f56546f6b656e3a3a7377656570546f6b656e3a206f6e6c792061646d696e206381526e616e20737765657020746f6b656e7360881b602082015291505b5060400190565b602080825281016109af816140c5565b603281526000602082017f56546f6b656e3a3a7377656570546f6b656e3a2063616e206e6f74207377656581527138103ab73232b9363cb4b733903a37b5b2b760711b6020820152915061410d565b602080825281016109af81614124565b80516109af81613aa0565b6000602082840312156141a3576141a3600080fd5b6000611f988484614183565b634e487b7160e01b600052601160045260246000fd5b600082198211156141d8576141d86141af565b500190565b604081016141eb8285613b88565b610e3a6020830184613b88565b60008282101561420a5761420a6141af565b500390565b6060810161421d8286613b74565b61422a6020830185613b74565b611f986040830184613b74565b60006109af613c5a8381565b613b3f81614237565b6060810161425a8286613b74565b61422a6020830185614243565b604081016142758285613b74565b610e3a6020830184613b74565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061410d565b602080825281016109af81614282565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061410d565b602080825281016109af816142d8565b600060ff82166109af565b613b3f81614333565b602081016109af828461433e565b601e81526000602082017f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000815291506140ae565b602080825281016109af81614355565b601c81526000602082017f626f72726f772072617465206973206162737572646c79206869676800000000815291506140ae565b602080825281016109af81614399565b60a081016143eb8288613b74565b6143f86020830187613b74565b6144056040830186613b74565b6144126060830185613b74565b6127086080830184613b74565b602b81526000602082017f6f6e6c792073686f727466616c6c20636f6e74726163742063616e207570646181526a1d1948189859081919589d60aa1b6020820152915061410d565b602080825281016109af8161441f565b602981526000602082017f6d6f7265207468616e206261642064656274207265636f76657265642066726f815268369030bab1ba34b7b760b91b6020820152915061410d565b602080825281016109af81614477565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006140ae565b602080825281016109af816144cd565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061410d565b602080825281016109af8161450f565b600081600019048311821515161561457b5761457b6141af565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826145a5576145a5614580565b500490565b604081016142758285613b88565b604081016145c68285613b88565b8181036020830152611f988184613a5d565b80516109af81613f16565b6000602082840312156145f8576145f8600080fd5b6000611f9884846145d8565b606081016146128286613b88565b61461f6020830185613b88565b818103604083015261200c8184613a5d565b6060810161463f8286613b88565b61422a6020830185613b88565b6080810161465a8287613b88565b6146676020830186613b88565b613fc96040830185613b88565b603481526000602082017f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d418152736d6f756e74496e206d757374206265207a65726f60601b6020820152915061410d565b602080825281016109af81614674565b600060001982036146e8576146e86141af565b5060010190565b602481526000602082017f72656465656d546f6b656e73206f722072656465656d416d6f756e74206973208152637a65726f60e01b6020820152915061410d565b602080825281016109af816146ef565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061410d565b602080825281016109af81614740565b602381526000602082017f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f8152626e636560e81b6020820152915061410d565b602080825281016109af81614798565b603081526000602082017f696e697469616c2065786368616e67652072617465206d75737420626520677281526f32b0ba32b9103a3430b7103d32b9379760811b6020820152915061410d565b602080825281016109af816147e8565b601c81526000602082017f6d61726b6572206d6574686f642072657475726e65642066616c736500000000815291506140ae565b602080825281016109af81614845565b608081016148978287613b88565b6148a46020830186613b88565b6148b16040830185613b88565b61200c6060830184613b88565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061410d565b602080825281016109af816148be565b60a081016149238288613b88565b6149306020830187613b88565b61493d6040830186613b88565b61494a6060830185613b74565b6127086080830184613b3b565b6000806040838503121561496d5761496d600080fd5b60006149798585614183565b9250506020613b3185828601614183565b603381526000602082017f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f815272105353d5539517d4d152569157d19052531151606a1b6020820152915061410d565b602080825281016109af8161498a565b601881526000602082017f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000815291506140ae565b602080825281016109af816149ea565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061410d565b602080825281016109af81614a2e565b6000614a8b825190565b614a99818560208601613a31565b9290920192915050565b6000610e3a8284614a81565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506140ae565b602080825281016109af81614aaf56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f7af5d406a0d6eb47b6f0fa65c83048c657d631cb3e2518b60b8306977f15f9364736f6c634300080d0033",
1848
+ "linkReferences": {},
1849
+ "deployedLinkReferences": {}
1850
+ }