@arbitrum/nitro-contracts 2.0.0 → 2.1.1-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. package/LICENSE.md +1 -1
  2. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  12. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  14. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  18. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  21. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +4 -0
  22. package/build/contracts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +10 -0
  23. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.dbg.json +4 -0
  24. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol/AccessControlEnumerableUpgradeable.json +258 -0
  25. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  26. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.dbg.json +4 -0
  27. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol/IAccessControlEnumerableUpgradeable.json +226 -0
  28. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  29. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.dbg.json +4 -0
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol/ERC20Upgradeable.json +281 -0
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.dbg.json +4 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol/ERC20BurnableUpgradeable.json +312 -0
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.dbg.json +4 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol/IERC20MetadataUpgradeable.json +233 -0
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.dbg.json +4 -0
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol/ECDSAUpgradeable.json +10 -0
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +4 -0
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/cryptography/draft-EIP712Upgradeable.sol/EIP712Upgradeable.json +10 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  51. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  54. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  55. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +2 -2
  56. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  57. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +2 -2
  58. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  59. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +2 -2
  60. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  61. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  62. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  63. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  64. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  65. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  66. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  67. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  70. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  72. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  73. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  74. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +2 -2
  75. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  76. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  77. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  78. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  79. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +2 -2
  80. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  81. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +2 -2
  82. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
  83. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
  84. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +2 -2
  85. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
  86. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
  87. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.dbg.json +4 -0
  88. package/build/contracts/src/express-lane-auction/Balance.sol/BalanceLib.json +10 -0
  89. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.dbg.json +4 -0
  90. package/build/contracts/src/express-lane-auction/Burner.sol/Burner.json +47 -0
  91. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.dbg.json +4 -0
  92. package/build/contracts/src/express-lane-auction/ELCRound.sol/LatestELCRoundsLib.json +10 -0
  93. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.dbg.json +4 -0
  94. package/build/contracts/src/express-lane-auction/ExpressLaneAuction.sol/ExpressLaneAuction.json +1588 -0
  95. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.dbg.json +4 -0
  96. package/build/contracts/src/express-lane-auction/IExpressLaneAuction.sol/IExpressLaneAuction.json +1296 -0
  97. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.dbg.json +4 -0
  98. package/build/contracts/src/express-lane-auction/RoundTimingInfo.sol/RoundTimingInfoLib.json +10 -0
  99. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  100. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  101. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  102. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  103. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  104. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  105. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  106. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  107. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  108. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  109. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  110. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  111. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  112. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  113. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  114. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  115. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  116. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +2 -2
  117. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  118. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
  119. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.dbg.json +4 -0
  120. package/build/contracts/src/mocks/CreateTest.sol/CreateTest.json +15 -0
  121. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.dbg.json +4 -0
  122. package/build/contracts/src/mocks/HostioTest.sol/HostioTest.json +513 -0
  123. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  124. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  125. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
  126. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  127. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  128. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  129. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  130. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  131. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  132. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  133. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  134. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +2 -2
  135. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  136. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  137. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  138. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  139. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
  140. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +2 -2
  141. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
  142. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +2 -2
  143. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  144. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  145. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  146. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  147. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  148. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  149. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  150. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  151. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  152. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  154. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  155. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  156. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  157. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  159. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  160. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  161. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  162. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  163. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  164. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +4 -4
  169. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  170. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  171. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  172. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  173. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  174. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  175. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  176. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  177. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  178. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  179. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  180. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  181. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  182. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  183. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  184. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  185. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  186. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  187. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  188. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +5 -0
  189. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
  190. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +5 -0
  191. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
  192. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +5 -0
  193. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
  194. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  195. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +2 -2
  196. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  197. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  198. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
  199. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  200. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  201. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  203. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  204. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
  205. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +5 -0
  206. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
  207. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +7 -2
  208. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  209. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +7 -2
  210. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
  211. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
  212. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  213. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +2 -2
  214. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  215. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  216. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  217. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  218. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  219. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  220. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  221. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  222. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  223. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  224. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  225. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  226. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  227. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  228. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  229. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  230. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  231. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +2 -2
  232. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  233. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  234. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  235. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  236. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  237. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  238. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  239. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  240. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  241. package/package.json +6 -3
  242. package/src/express-lane-auction/Balance.sol +142 -0
  243. package/src/express-lane-auction/Burner.sol +25 -0
  244. package/src/express-lane-auction/ELCRound.sol +73 -0
  245. package/src/express-lane-auction/Errors.sol +31 -0
  246. package/src/express-lane-auction/ExpressLaneAuction.sol +565 -0
  247. package/src/express-lane-auction/IExpressLaneAuction.sol +421 -0
  248. package/src/express-lane-auction/RoundTimingInfo.sol +115 -0
  249. package/src/libraries/Error.sol +0 -9
  250. package/src/mocks/BridgeUnproxied.sol +2 -0
  251. package/src/mocks/CreateTest.sol +42 -0
  252. package/src/mocks/HostioTest.sol +196 -0
  253. package/src/precompiles/ArbSys.sol +2 -1
  254. package/src/precompiles/ArbWasm.sol +1 -1
  255. package/src/rollup/IRollupLogic.sol +5 -1
  256. package/src/rollup/RollupCreator.sol +4 -4
  257. package/src/rollup/RollupUserLogic.sol +10 -8
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -648,8 +648,8 @@
648
648
  "type": "receive"
649
649
  }
650
650
  ],
651
- "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516113f761002d600039600050506113f76000f3fe60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220ec153ecbd8c7c453b731522ea563c33d530fd85c1c0cea1935c3c75cd4a53b2a64736f6c63430008090033",
652
- "deployedBytecode": "0x60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220ec153ecbd8c7c453b731522ea563c33d530fd85c1c0cea1935c3c75cd4a53b2a64736f6c63430008090033",
651
+ "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516113f761002d600039600050506113f76000f3fe60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220c4ae51fe13f074428edcbf1d14f0c2d7324a9384d1962213f12810bd06e136d264736f6c63430008090033",
652
+ "deployedBytecode": "0x60806040526004361061014e5760003560e01c8063ab5d8943116100b6578063d5719dc21161006f578063d5719dc21461043f578063e1758bd81461045f578063e76f5c8d1461047f578063e77145f41461020a578063eca067ad1461049f578063ee35f327146104b457600080fd5b8063ab5d89431461035a578063ad48cb5e1461036f578063ae60bd13146103a2578063c4d66de8146103df578063cb23bcb5146103ff578063cee3d7281461041f57600080fd5b80637a88b107116101085780637a88b1071461024257806386598a56146102655780638db5993b146102af578063919cc706146102c2578063945e1147146102ff5780639e5d4c491461032c57600080fd5b806284120c1461015a57806316bf55791461017e578063413b35bd1461019e57806347fb24c5146101ea5780634f61f8501461020c5780635fca4a161461022c57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b50600a545b6040519081526020015b60405180910390f35b34801561018a57600080fd5b5061016b6101993660046110b6565b6104d4565b3480156101aa57600080fd5b506101da6101b93660046110e7565b6001600160a01b031660009081526002602052604090206001015460ff1690565b6040519015158152602001610175565b3480156101f657600080fd5b5061020a61020536600461110b565b6104f5565b005b34801561021857600080fd5b5061020a6102273660046110e7565b610800565b34801561023857600080fd5b5061016b600b5481565b34801561024e57600080fd5b5061016b61025d366004611149565b600092915050565b34801561027157600080fd5b5061028f610280366004611175565b50600093849350839250829150565b604080519485526020850193909352918301526060820152608001610175565b61016b6102bd3660046111a7565b610925565b3480156102ce57600080fd5b5061020a6102dd3660046110e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b34801561030b57600080fd5b5061031f61031a3660046110b6565b610970565b60405161017591906111ee565b34801561033857600080fd5b5061034c610347366004611202565b61099a565b60405161017592919061128b565b34801561036657600080fd5b5061031f610af2565b34801561037b57600080fd5b5060085461039090600160a01b900460ff1681565b60405160ff9091168152602001610175565b3480156103ae57600080fd5b506101da6103bd3660046110e7565b6001600160a01b03166000908152600160208190526040909120015460ff1690565b3480156103eb57600080fd5b5061020a6103fa3660046110e7565b610b1f565b34801561040b57600080fd5b5060065461031f906001600160a01b031681565b34801561042b57600080fd5b5061020a61043a36600461110b565b610c05565b34801561044b57600080fd5b5061016b61045a3660046110b6565b610f07565b34801561046b57600080fd5b5060085461031f906001600160a01b031681565b34801561048b57600080fd5b5061031f61049a3660046110b6565b610f17565b3480156104ab57600080fd5b5060095461016b565b3480156104c057600080fd5b5060075461031f906001600160a01b031681565b600a81815481106104e457600080fd5b600091825260209091200154905081565b6006546001600160a01b031633146105cd5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561054c57600080fd5b505afa158015610560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058491906112ea565b9050336001600160a01b038216146105cb57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b60405180910390fd5b505b6001600160a01b0382166000818152600160208181526040928390209182015492518515158152919360ff90931692917f6675ce8882cb71637de5903a193d218cc0544be9c0650cb83e0955f6aa2bf521910160405180910390a28080156106325750825b80610644575080158015610644575082155b1561064f5750505050565b82156106dd57604080518082018252600380548252600160208084018281526001600160a01b038a166000818152928490529582209451855551938201805460ff1916941515949094179093558154908101825591527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556107f9565b600380546106ed9060019061132a565b815481106106fd576106fd61134f565b6000918252602090912001548254600380546001600160a01b0390931692909190811061072c5761072c61134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816000015460016000600385600001548154811061077a5761077a61134f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560038054806107b0576107b0611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526001908190526040822091825501805460ff191690555b50505b5050565b6006546001600160a01b031633146108cf5760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561085757600080fd5b505afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f91906112ea565b9050336001600160a01b038216146108cd57600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b600780546001600160a01b0319166001600160a01b0383161790556040517f8c1e6003ed33ca6748d4ad3dd4ecc949065c89dceb31fdf546a5289202763c6a9061091a9083906111ee565b60405180910390a150565b3360009081526001602081905260408220015460ff1661095a573360405163b6c60ea360e01b81526004016105c291906111ee565b610968848443424887610f27565b949350505050565b6004818154811061098057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526002602052604081206001015460609060ff166109d257336040516332ea82ab60e01b81526004016105c291906111ee565b82158015906109e957506001600160a01b0386163b155b15610a09578560405163b5cf5b8f60e01b81526004016105c291906111ee565b600580546001600160a01b0319811633179091556040516001600160a01b03918216918816908790610a3e908890889061137b565b60006040518083038185875af1925050503d8060008114610a7b576040519150601f19603f3d011682016040523d82523d6000602084013e610a80565b606091505b50600580546001600160a01b0319166001600160a01b038581169190911790915560405192955090935088169033907f2d9d115ef3e4a606d698913b1eae831a3cdfe20d9a83d48007b0526749c3d46690610ae0908a908a908a9061138b565b60405180910390a35094509492505050565b6005546000906001600160a01b039081161415610b0f5750600090565b506005546001600160a01b031690565b600054610100900460ff16610b3a5760005460ff1615610b3e565b303b155b610ba15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b600054610100900460ff16158015610bc3576000805461ffff19166101011790555b600580546001600160a01b036001600160a01b031991821681179092556006805490911691841691909117905580156107fc576000805461ff00191690555050565b6006546001600160a01b03163314610cd45760065460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906112ea565b9050336001600160a01b03821614610cd257600654604051630739600760e01b81526105c29133916001600160a01b03909116908490600401611307565b505b6001600160a01b038216600081815260026020908152604091829020600181015492518515158152909360ff90931692917f49477e7356dbcb654ab85d7534b50126772d938130d1350e23e2540370c8dffa910160405180910390a2808015610d3a5750825b80610d4c575080158015610d4c575082155b15610d575750505050565b8215610de657604080518082018252600480548252600160208084018281526001600160a01b038a16600081815260029093529582209451855551938201805460ff1916941515949094179093558154908101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556107f9565b60048054610df69060019061132a565b81548110610e0657610e0661134f565b6000918252602090912001548254600480546001600160a01b03909316929091908110610e3557610e3561134f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508160000154600260006004856000015481548110610e8357610e8361134f565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610eb957610eb9611365565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03861682526002905260408120908155600101805460ff1916905550505050565b600981815481106104e457600080fd5b6003818154811061098057600080fd5b600954604080516001600160f81b031960f88a901b166020808301919091526bffffffffffffffffffffffff1960608a901b1660218301526001600160c01b031960c089811b8216603585015288901b16603d830152604582018490526065820186905260858083018690528351808403909101815260a590920190925280519101206000919060008215610fe1576009610fc360018561132a565b81548110610fd357610fd361134f565b906000526020600020015490505b6040805160208082018490528183018590528251808303840181526060830180855281519190920120600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015533905260ff8c1660808201526001600160a01b038b1660a082015260c0810187905260e0810188905267ffffffffffffffff89166101008201529051829185917f5e3c1311ea442664e8b1611bfabef659120ea7a0a2cfc0667700bebc69cbffe1918190036101200190a3509098975050505050505050565b6000602082840312156110c857600080fd5b5035919050565b6001600160a01b03811681146110e457600080fd5b50565b6000602082840312156110f957600080fd5b8135611104816110cf565b9392505050565b6000806040838503121561111e57600080fd5b8235611129816110cf565b91506020830135801515811461113e57600080fd5b809150509250929050565b6000806040838503121561115c57600080fd5b8235611167816110cf565b946020939093013593505050565b6000806000806080858703121561118b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156111bc57600080fd5b833560ff811681146111cd57600080fd5b925060208401356111dd816110cf565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b6000806000806060858703121561121857600080fd5b8435611223816110cf565b935060208501359250604085013567ffffffffffffffff8082111561124757600080fd5b818701915087601f83011261125b57600080fd5b81358181111561126a57600080fd5b88602082850101111561127c57600080fd5b95989497505060200194505050565b821515815260006020604081840152835180604085015260005b818110156112c1578581018301518582016060015282016112a5565b818111156112d3576000606083870101525b50601f01601f191692909201606001949350505050565b6000602082840312156112fc57600080fd5b8151611104816110cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008282101561134a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220c4ae51fe13f074428edcbf1d14f0c2d7324a9384d1962213f12810bd06e136d264736f6c63430008090033",
653
653
  "linkReferences": {},
654
654
  "deployedLinkReferences": {}
655
655
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -543,8 +543,8 @@
543
543
  "type": "function"
544
544
  }
545
545
  ],
546
- "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161130b61003060003960006106a2015261130b6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c806395fcea78116100ad578063c4d66de811610071578063c4d66de81461026d578063c75184df14610280578063cb23bcb5146102a0578063d5b5cc23146102b3578063e78cea92146102c657600080fd5b806395fcea78146101695780639f0c04bf14610216578063a04cee6014610229578063ae6dead71461023c578063b0f305371461025c57600080fd5b80635a129efe116100f45780635a129efe146101965780636ae71f12146101c957806372f2a8c7146101d157806380648b02146101d95780638515bc6a146101fe57600080fd5b80627436d31461013057806308635a9514610156578063119852711461016b578063288e5b10146101725780634654779014610185575b600080fd5b61014361013e366004610c79565b6102d9565b6040519081526020015b60405180910390f35b610169610164366004610d9e565b610316565b005b6000610143565b610169610180366004610e92565b610658565b6004546001600160801b0316610143565b6101b96101a4366004610f2d565b60026020526000908152604090205460ff1681565b604051901515815260200161014d565b610169610697565b600654610143565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b600454600160801b90046001600160801b0316610143565b610143610224366004610f46565b61082c565b610169610237366004610fd4565b610871565b61014361024a366004610f2d565b60036020526000908152604090205481565b6005546001600160801b0316610143565b61016961027b366004610ff6565b6108b0565b610288600281565b6040516001600160801b03909116815260200161014d565b6000546101e6906001600160a01b031681565b6101436102c1366004610f2d565b610989565b6001546101e6906001600160a01b031681565b600061030e8484846040516020016102f391815260200190565b604051602081830303815290604052805190602001206109c5565b949350505050565b6000806103298a8a8a8a8a8a8a8a61082c565b905061036b8d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610a689050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e6040516103b491815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506105e3898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b6b92505050565b805160208201516001600160801b03918216600160801b91831691909102176004556040820151600580546001600160801b03191691909216179055606081015160065560800151600780546001600160a01b0319166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b5c1b195b595b9d1959608a1b60448201526064015b60405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107255760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161068e565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461078257604051631194af8760e11b81523360048201526001600160a01b038216602482015260440161068e565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610808919061101a565b600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6000888888888888888860405160200161084d989796959493929190611037565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156108da57604051633bcd329760e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b15801561092e57600080fd5b505afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610966919061101a565b600080546001600160a01b0319166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d253541311535155115160921b604482015260009060640161068e565b82516000906101008111156109f857604051637ed6198f60e11b815260048101829052610100602482015260440161068e565b8260005b82811015610a5e576000878281518110610a1857610a18611090565b60200260200101519050816001901b871660001415610a4557826000528060205260406000209250610a55565b8060005282602052604060002092505b506001016109fc565b5095945050505050565b6000610100845110610a9257835160405163ab6a068360e01b815260040161068e91815260200190565b8351610a9f9060026111a2565b8310610ad6578284516002610ab491906111a2565b604051630b8a724b60e01b81526004810192909252602482015260440161068e565b6000610ae38585856102d9565b600081815260036020526040902054909150610b15576040516310e61af960e31b81526004810182905260240161068e565b60008481526002602052604090205460ff1615610b4857604051639715b8d360e01b81526004810185905260240161068e565b50506000828152600260205260409020805460ff19166001179055819392505050565b600154604051639e5d4c4960e01b815260009182916001600160a01b0390911690639e5d4c4990610ba4908890889088906004016111de565b600060405180830381600087803b158015610bbe57600080fd5b505af1158015610bd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfa9190810190611227565b9150915081610c2c57805115610c135780518082602001fd5b604051631bb7daad60e11b815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c7157610c71610c33565b604052919050565b600080600060608486031215610c8e57600080fd5b83356001600160401b0380821115610ca557600080fd5b818601915086601f830112610cb957600080fd5b8135602082821115610ccd57610ccd610c33565b8160051b9250610cde818401610c49565b828152928401810192818101908a851115610cf857600080fd5b948201945b84861015610d1657853582529482019490820190610cfd565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610d4357600080fd5b50565b8035610d5181610d2e565b919050565b60008083601f840112610d6857600080fd5b5081356001600160401b03811115610d7f57600080fd5b602083019150836020828501011115610d9757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610dc057600080fd5b8b356001600160401b0380821115610dd757600080fd5b818e0191508e601f830112610deb57600080fd5b813581811115610dfa57600080fd5b8f60208260051b8501011115610e0f57600080fd5b60208381019e50909c508e01359a50610e2a60408f01610d46565b9950610e3860608f01610d46565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e0135915080821115610e6b57600080fd5b50610e788e828f01610d56565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c031215610eb157600080fd5b8935985060208a0135610ec381610d2e565b975060408a0135610ed381610d2e565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115610f0a57600080fd5b610f168c828d01610d56565b915080935050809150509295985092959850929598565b600060208284031215610f3f57600080fd5b5035919050565b60008060008060008060008060e0898b031215610f6257600080fd5b8835610f6d81610d2e565b97506020890135610f7d81610d2e565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b03811115610fb457600080fd5b610fc08b828c01610d56565b999c989b5096995094979396929594505050565b60008060408385031215610fe757600080fd5b50508035926020909101359150565b60006020828403121561100857600080fd5b813561101381610d2e565b9392505050565b60006020828403121561102c57600080fd5b815161101381610d2e565b60006bffffffffffffffffffffffff19808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156110f75781600019048211156110dd576110dd6110a6565b808516156110ea57918102915b93841c93908002906110c1565b509250929050565b60008261110e5750600161119c565b8161111b5750600061119c565b8160018114611131576002811461113b57611157565b600191505061119c565b60ff84111561114c5761114c6110a6565b50506001821b61119c565b5060208310610133831016604e8410600b841016171561117a575081810a61119c565b61118483836110bc565b8060001904821115611198576111986110a6565b0290505b92915050565b600061101383836110ff565b60005b838110156111c95781810151838201526020016111b1565b838111156111d8576000848401525b50505050565b60018060a01b038416815282602082015260606040820152600082518060608401526112118160808501602087016111ae565b601f01601f191691909101608001949350505050565b6000806040838503121561123a57600080fd5b8251801515811461124a57600080fd5b60208401519092506001600160401b038082111561126757600080fd5b818501915085601f83011261127b57600080fd5b81518181111561128d5761128d610c33565b6112a0601f8201601f1916602001610c49565b91508082528660208285010111156112b757600080fd5b6112c88160208401602086016111ae565b508092505050925092905056fea2646970667358221220506d19e333877b7983601d5e422713d715ebbd702882a87b8237c40844bf50e764736f6c63430008090033",
547
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012b5760003560e01c806395fcea78116100ad578063c4d66de811610071578063c4d66de81461026d578063c75184df14610280578063cb23bcb5146102a0578063d5b5cc23146102b3578063e78cea92146102c657600080fd5b806395fcea78146101695780639f0c04bf14610216578063a04cee6014610229578063ae6dead71461023c578063b0f305371461025c57600080fd5b80635a129efe116100f45780635a129efe146101965780636ae71f12146101c957806372f2a8c7146101d157806380648b02146101d95780638515bc6a146101fe57600080fd5b80627436d31461013057806308635a9514610156578063119852711461016b578063288e5b10146101725780634654779014610185575b600080fd5b61014361013e366004610c79565b6102d9565b6040519081526020015b60405180910390f35b610169610164366004610d9e565b610316565b005b6000610143565b610169610180366004610e92565b610658565b6004546001600160801b0316610143565b6101b96101a4366004610f2d565b60026020526000908152604090205460ff1681565b604051901515815260200161014d565b610169610697565b600654610143565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b600454600160801b90046001600160801b0316610143565b610143610224366004610f46565b61082c565b610169610237366004610fd4565b610871565b61014361024a366004610f2d565b60036020526000908152604090205481565b6005546001600160801b0316610143565b61016961027b366004610ff6565b6108b0565b610288600281565b6040516001600160801b03909116815260200161014d565b6000546101e6906001600160a01b031681565b6101436102c1366004610f2d565b610989565b6001546101e6906001600160a01b031681565b600061030e8484846040516020016102f391815260200190565b604051602081830303815290604052805190602001206109c5565b949350505050565b6000806103298a8a8a8a8a8a8a8a61082c565b905061036b8d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610a689050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e6040516103b491815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506105e3898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b6b92505050565b805160208201516001600160801b03918216600160801b91831691909102176004556040820151600580546001600160801b03191691909216179055606081015160065560800151600780546001600160a01b0319166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b5c1b195b595b9d1959608a1b60448201526064015b60405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107255760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161068e565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461078257604051631194af8760e11b81523360048201526001600160a01b038216602482015260440161068e565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610808919061101a565b600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6000888888888888888860405160200161084d989796959493929190611037565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156108da57604051633bcd329760e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b15801561092e57600080fd5b505afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610966919061101a565b600080546001600160a01b0319166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d253541311535155115160921b604482015260009060640161068e565b82516000906101008111156109f857604051637ed6198f60e11b815260048101829052610100602482015260440161068e565b8260005b82811015610a5e576000878281518110610a1857610a18611090565b60200260200101519050816001901b871660001415610a4557826000528060205260406000209250610a55565b8060005282602052604060002092505b506001016109fc565b5095945050505050565b6000610100845110610a9257835160405163ab6a068360e01b815260040161068e91815260200190565b8351610a9f9060026111a2565b8310610ad6578284516002610ab491906111a2565b604051630b8a724b60e01b81526004810192909252602482015260440161068e565b6000610ae38585856102d9565b600081815260036020526040902054909150610b15576040516310e61af960e31b81526004810182905260240161068e565b60008481526002602052604090205460ff1615610b4857604051639715b8d360e01b81526004810185905260240161068e565b50506000828152600260205260409020805460ff19166001179055819392505050565b600154604051639e5d4c4960e01b815260009182916001600160a01b0390911690639e5d4c4990610ba4908890889088906004016111de565b600060405180830381600087803b158015610bbe57600080fd5b505af1158015610bd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfa9190810190611227565b9150915081610c2c57805115610c135780518082602001fd5b604051631bb7daad60e11b815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c7157610c71610c33565b604052919050565b600080600060608486031215610c8e57600080fd5b83356001600160401b0380821115610ca557600080fd5b818601915086601f830112610cb957600080fd5b8135602082821115610ccd57610ccd610c33565b8160051b9250610cde818401610c49565b828152928401810192818101908a851115610cf857600080fd5b948201945b84861015610d1657853582529482019490820190610cfd565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610d4357600080fd5b50565b8035610d5181610d2e565b919050565b60008083601f840112610d6857600080fd5b5081356001600160401b03811115610d7f57600080fd5b602083019150836020828501011115610d9757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610dc057600080fd5b8b356001600160401b0380821115610dd757600080fd5b818e0191508e601f830112610deb57600080fd5b813581811115610dfa57600080fd5b8f60208260051b8501011115610e0f57600080fd5b60208381019e50909c508e01359a50610e2a60408f01610d46565b9950610e3860608f01610d46565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e0135915080821115610e6b57600080fd5b50610e788e828f01610d56565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c031215610eb157600080fd5b8935985060208a0135610ec381610d2e565b975060408a0135610ed381610d2e565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115610f0a57600080fd5b610f168c828d01610d56565b915080935050809150509295985092959850929598565b600060208284031215610f3f57600080fd5b5035919050565b60008060008060008060008060e0898b031215610f6257600080fd5b8835610f6d81610d2e565b97506020890135610f7d81610d2e565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b03811115610fb457600080fd5b610fc08b828c01610d56565b999c989b5096995094979396929594505050565b60008060408385031215610fe757600080fd5b50508035926020909101359150565b60006020828403121561100857600080fd5b813561101381610d2e565b9392505050565b60006020828403121561102c57600080fd5b815161101381610d2e565b60006bffffffffffffffffffffffff19808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156110f75781600019048211156110dd576110dd6110a6565b808516156110ea57918102915b93841c93908002906110c1565b509250929050565b60008261110e5750600161119c565b8161111b5750600061119c565b8160018114611131576002811461113b57611157565b600191505061119c565b60ff84111561114c5761114c6110a6565b50506001821b61119c565b5060208310610133831016604e8410600b841016171561117a575081810a61119c565b61118483836110bc565b8060001904821115611198576111986110a6565b0290505b92915050565b600061101383836110ff565b60005b838110156111c95781810151838201526020016111b1565b838111156111d8576000848401525b50505050565b60018060a01b038416815282602082015260606040820152600082518060608401526112118160808501602087016111ae565b601f01601f191691909101608001949350505050565b6000806040838503121561123a57600080fd5b8251801515811461124a57600080fd5b60208401519092506001600160401b038082111561126757600080fd5b818501915085601f83011261127b57600080fd5b81518181111561128d5761128d610c33565b6112a0601f8201601f1916602001610c49565b91508082528660208285010111156112b757600080fd5b6112c88160208401602086016111ae565b508092505050925092905056fea2646970667358221220506d19e333877b7983601d5e422713d715ebbd702882a87b8237c40844bf50e764736f6c63430008090033",
546
+ "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161130b61003060003960006106a2015261130b6000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c806395fcea78116100ad578063c4d66de811610071578063c4d66de81461026d578063c75184df14610280578063cb23bcb5146102a0578063d5b5cc23146102b3578063e78cea92146102c657600080fd5b806395fcea78146101695780639f0c04bf14610216578063a04cee6014610229578063ae6dead71461023c578063b0f305371461025c57600080fd5b80635a129efe116100f45780635a129efe146101965780636ae71f12146101c957806372f2a8c7146101d157806380648b02146101d95780638515bc6a146101fe57600080fd5b80627436d31461013057806308635a9514610156578063119852711461016b578063288e5b10146101725780634654779014610185575b600080fd5b61014361013e366004610c79565b6102d9565b6040519081526020015b60405180910390f35b610169610164366004610d9e565b610316565b005b6000610143565b610169610180366004610e92565b610658565b6004546001600160801b0316610143565b6101b96101a4366004610f2d565b60026020526000908152604090205460ff1681565b604051901515815260200161014d565b610169610697565b600654610143565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b600454600160801b90046001600160801b0316610143565b610143610224366004610f46565b61082c565b610169610237366004610fd4565b610871565b61014361024a366004610f2d565b60036020526000908152604090205481565b6005546001600160801b0316610143565b61016961027b366004610ff6565b6108b0565b610288600281565b6040516001600160801b03909116815260200161014d565b6000546101e6906001600160a01b031681565b6101436102c1366004610f2d565b610989565b6001546101e6906001600160a01b031681565b600061030e8484846040516020016102f391815260200190565b604051602081830303815290604052805190602001206109c5565b949350505050565b6000806103298a8a8a8a8a8a8a8a61082c565b905061036b8d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610a689050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e6040516103b491815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506105e3898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b6b92505050565b805160208201516001600160801b03918216600160801b91831691909102176004556040820151600580546001600160801b03191691909216179055606081015160065560800151600780546001600160a01b0319166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b5c1b195b595b9d1959608a1b60448201526064015b60405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107255760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161068e565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461078257604051631194af8760e11b81523360048201526001600160a01b038216602482015260440161068e565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610808919061101a565b600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6000888888888888888860405160200161084d989796959493929190611037565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156108da57604051633bcd329760e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b15801561092e57600080fd5b505afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610966919061101a565b600080546001600160a01b0319166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d253541311535155115160921b604482015260009060640161068e565b82516000906101008111156109f857604051637ed6198f60e11b815260048101829052610100602482015260440161068e565b8260005b82811015610a5e576000878281518110610a1857610a18611090565b60200260200101519050816001901b871660001415610a4557826000528060205260406000209250610a55565b8060005282602052604060002092505b506001016109fc565b5095945050505050565b6000610100845110610a9257835160405163ab6a068360e01b815260040161068e91815260200190565b8351610a9f9060026111a2565b8310610ad6578284516002610ab491906111a2565b604051630b8a724b60e01b81526004810192909252602482015260440161068e565b6000610ae38585856102d9565b600081815260036020526040902054909150610b15576040516310e61af960e31b81526004810182905260240161068e565b60008481526002602052604090205460ff1615610b4857604051639715b8d360e01b81526004810185905260240161068e565b50506000828152600260205260409020805460ff19166001179055819392505050565b600154604051639e5d4c4960e01b815260009182916001600160a01b0390911690639e5d4c4990610ba4908890889088906004016111de565b600060405180830381600087803b158015610bbe57600080fd5b505af1158015610bd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfa9190810190611227565b9150915081610c2c57805115610c135780518082602001fd5b604051631bb7daad60e11b815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c7157610c71610c33565b604052919050565b600080600060608486031215610c8e57600080fd5b83356001600160401b0380821115610ca557600080fd5b818601915086601f830112610cb957600080fd5b8135602082821115610ccd57610ccd610c33565b8160051b9250610cde818401610c49565b828152928401810192818101908a851115610cf857600080fd5b948201945b84861015610d1657853582529482019490820190610cfd565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610d4357600080fd5b50565b8035610d5181610d2e565b919050565b60008083601f840112610d6857600080fd5b5081356001600160401b03811115610d7f57600080fd5b602083019150836020828501011115610d9757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610dc057600080fd5b8b356001600160401b0380821115610dd757600080fd5b818e0191508e601f830112610deb57600080fd5b813581811115610dfa57600080fd5b8f60208260051b8501011115610e0f57600080fd5b60208381019e50909c508e01359a50610e2a60408f01610d46565b9950610e3860608f01610d46565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e0135915080821115610e6b57600080fd5b50610e788e828f01610d56565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c031215610eb157600080fd5b8935985060208a0135610ec381610d2e565b975060408a0135610ed381610d2e565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115610f0a57600080fd5b610f168c828d01610d56565b915080935050809150509295985092959850929598565b600060208284031215610f3f57600080fd5b5035919050565b60008060008060008060008060e0898b031215610f6257600080fd5b8835610f6d81610d2e565b97506020890135610f7d81610d2e565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b03811115610fb457600080fd5b610fc08b828c01610d56565b999c989b5096995094979396929594505050565b60008060408385031215610fe757600080fd5b50508035926020909101359150565b60006020828403121561100857600080fd5b813561101381610d2e565b9392505050565b60006020828403121561102c57600080fd5b815161101381610d2e565b60006bffffffffffffffffffffffff19808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156110f75781600019048211156110dd576110dd6110a6565b808516156110ea57918102915b93841c93908002906110c1565b509250929050565b60008261110e5750600161119c565b8161111b5750600061119c565b8160018114611131576002811461113b57611157565b600191505061119c565b60ff84111561114c5761114c6110a6565b50506001821b61119c565b5060208310610133831016604e8410600b841016171561117a575081810a61119c565b61118483836110bc565b8060001904821115611198576111986110a6565b0290505b92915050565b600061101383836110ff565b60005b838110156111c95781810151838201526020016111b1565b838111156111d8576000848401525b50505050565b60018060a01b038416815282602082015260606040820152600082518060608401526112118160808501602087016111ae565b601f01601f191691909101608001949350505050565b6000806040838503121561123a57600080fd5b8251801515811461124a57600080fd5b60208401519092506001600160401b038082111561126757600080fd5b818501915085601f83011261127b57600080fd5b81518181111561128d5761128d610c33565b6112a0601f8201601f1916602001610c49565b91508082528660208285010111156112b757600080fd5b6112c88160208401602086016111ae565b508092505050925092905056fea264697066735822122085a1e096a6c93ac33950140d1f6bd826d1e767475bb5f2e9d3dcb9d2799f148f64736f6c63430008090033",
547
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012b5760003560e01c806395fcea78116100ad578063c4d66de811610071578063c4d66de81461026d578063c75184df14610280578063cb23bcb5146102a0578063d5b5cc23146102b3578063e78cea92146102c657600080fd5b806395fcea78146101695780639f0c04bf14610216578063a04cee6014610229578063ae6dead71461023c578063b0f305371461025c57600080fd5b80635a129efe116100f45780635a129efe146101965780636ae71f12146101c957806372f2a8c7146101d157806380648b02146101d95780638515bc6a146101fe57600080fd5b80627436d31461013057806308635a9514610156578063119852711461016b578063288e5b10146101725780634654779014610185575b600080fd5b61014361013e366004610c79565b6102d9565b6040519081526020015b60405180910390f35b610169610164366004610d9e565b610316565b005b6000610143565b610169610180366004610e92565b610658565b6004546001600160801b0316610143565b6101b96101a4366004610f2d565b60026020526000908152604090205460ff1681565b604051901515815260200161014d565b610169610697565b600654610143565b6007546001600160a01b03165b6040516001600160a01b03909116815260200161014d565b600454600160801b90046001600160801b0316610143565b610143610224366004610f46565b61082c565b610169610237366004610fd4565b610871565b61014361024a366004610f2d565b60036020526000908152604090205481565b6005546001600160801b0316610143565b61016961027b366004610ff6565b6108b0565b610288600281565b6040516001600160801b03909116815260200161014d565b6000546101e6906001600160a01b031681565b6101436102c1366004610f2d565b610989565b6001546101e6906001600160a01b031681565b600061030e8484846040516020016102f391815260200190565b604051602081830303815290604052805190602001206109c5565b949350505050565b6000806103298a8a8a8a8a8a8a8a61082c565b905061036b8d8d808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508f9250859150610a689050565b915060008a6001600160a01b03168a6001600160a01b03167f20af7f3bbfe38132b8900ae295cd9c8d1914be7052d061a511f3f728dab189648e6040516103b491815260200190565b60405180910390a450600060046040518060a00160405290816000820160009054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016000820160109054906101000a90046001600160801b03166001600160801b03166001600160801b031681526020016001820160009054906101000a90046001600160801b03166001600160801b03166001600160801b03168152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060a00160405280896001600160801b03168152602001886001600160801b03168152602001876001600160801b031681526020018381526020018b6001600160a01b0316815250600460008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b031602179055506060820151816002015560808201518160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506105e3898686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b6b92505050565b805160208201516001600160801b03918216600160801b91831691909102176004556040820151600580546001600160801b03191691909216179055606081015160065560800151600780546001600160a01b0319166001600160a01b03909216919091179055505050505050505050505050565b60405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b5c1b195b595b9d1959608a1b60448201526064015b60405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107255760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b606482015260840161068e565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038054336001600160a01b0382161461078257604051631194af8760e11b81523360048201526001600160a01b038216602482015260440161068e565b600160009054906101000a90046001600160a01b03166001600160a01b031663cb23bcb56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610808919061101a565b600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6000888888888888888860405160200161084d989796959493929190611037565b60405160208183030381529060405280519060200120905098975050505050505050565b60008281526003602052604080822083905551829184917fb4df3847300f076a369cd76d2314b470a1194d9e8a6bb97f1860aee88a5f67489190a35050565b6001546001600160a01b0316156108da57604051633bcd329760e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040805163cb23bcb560e01b8152905163cb23bcb591600480820192602092909190829003018186803b15801561092e57600080fd5b505afa158015610942573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610966919061101a565b600080546001600160a01b0319166001600160a01b039290921691909117905550565b60405162461bcd60e51b815260206004820152600e60248201526d1393d517d253541311535155115160921b604482015260009060640161068e565b82516000906101008111156109f857604051637ed6198f60e11b815260048101829052610100602482015260440161068e565b8260005b82811015610a5e576000878281518110610a1857610a18611090565b60200260200101519050816001901b871660001415610a4557826000528060205260406000209250610a55565b8060005282602052604060002092505b506001016109fc565b5095945050505050565b6000610100845110610a9257835160405163ab6a068360e01b815260040161068e91815260200190565b8351610a9f9060026111a2565b8310610ad6578284516002610ab491906111a2565b604051630b8a724b60e01b81526004810192909252602482015260440161068e565b6000610ae38585856102d9565b600081815260036020526040902054909150610b15576040516310e61af960e31b81526004810182905260240161068e565b60008481526002602052604090205460ff1615610b4857604051639715b8d360e01b81526004810185905260240161068e565b50506000828152600260205260409020805460ff19166001179055819392505050565b600154604051639e5d4c4960e01b815260009182916001600160a01b0390911690639e5d4c4990610ba4908890889088906004016111de565b600060405180830381600087803b158015610bbe57600080fd5b505af1158015610bd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bfa9190810190611227565b9150915081610c2c57805115610c135780518082602001fd5b604051631bb7daad60e11b815260040160405180910390fd5b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c7157610c71610c33565b604052919050565b600080600060608486031215610c8e57600080fd5b83356001600160401b0380821115610ca557600080fd5b818601915086601f830112610cb957600080fd5b8135602082821115610ccd57610ccd610c33565b8160051b9250610cde818401610c49565b828152928401810192818101908a851115610cf857600080fd5b948201945b84861015610d1657853582529482019490820190610cfd565b9a918901359950506040909701359695505050505050565b6001600160a01b0381168114610d4357600080fd5b50565b8035610d5181610d2e565b919050565b60008083601f840112610d6857600080fd5b5081356001600160401b03811115610d7f57600080fd5b602083019150836020828501011115610d9757600080fd5b9250929050565b60008060008060008060008060008060006101208c8e031215610dc057600080fd5b8b356001600160401b0380821115610dd757600080fd5b818e0191508e601f830112610deb57600080fd5b813581811115610dfa57600080fd5b8f60208260051b8501011115610e0f57600080fd5b60208381019e50909c508e01359a50610e2a60408f01610d46565b9950610e3860608f01610d46565b985060808e0135975060a08e0135965060c08e0135955060e08e013594506101008e0135915080821115610e6b57600080fd5b50610e788e828f01610d56565b915080935050809150509295989b509295989b9093969950565b60008060008060008060008060006101008a8c031215610eb157600080fd5b8935985060208a0135610ec381610d2e565b975060408a0135610ed381610d2e565b965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a01356001600160401b03811115610f0a57600080fd5b610f168c828d01610d56565b915080935050809150509295985092959850929598565b600060208284031215610f3f57600080fd5b5035919050565b60008060008060008060008060e0898b031215610f6257600080fd5b8835610f6d81610d2e565b97506020890135610f7d81610d2e565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b03811115610fb457600080fd5b610fc08b828c01610d56565b999c989b5096995094979396929594505050565b60008060408385031215610fe757600080fd5b50508035926020909101359150565b60006020828403121561100857600080fd5b813561101381610d2e565b9392505050565b60006020828403121561102c57600080fd5b815161101381610d2e565b60006bffffffffffffffffffffffff19808b60601b168352808a60601b16601484015250876028830152866048830152856068830152846088830152828460a8840137506000910160a801908152979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156110f75781600019048211156110dd576110dd6110a6565b808516156110ea57918102915b93841c93908002906110c1565b509250929050565b60008261110e5750600161119c565b8161111b5750600061119c565b8160018114611131576002811461113b57611157565b600191505061119c565b60ff84111561114c5761114c6110a6565b50506001821b61119c565b5060208310610133831016604e8410600b841016171561117a575081810a61119c565b61118483836110bc565b8060001904821115611198576111986110a6565b0290505b92915050565b600061101383836110ff565b60005b838110156111c95781810151838201526020016111b1565b838111156111d8576000848401525b50505050565b60018060a01b038416815282602082015260606040820152600082518060608401526112118160808501602087016111ae565b601f01601f191691909101608001949350505050565b6000806040838503121561123a57600080fd5b8251801515811461124a57600080fd5b60208401519092506001600160401b038082111561126757600080fd5b818501915085601f83011261127b57600080fd5b81518181111561128d5761128d610c33565b6112a0601f8201601f1916602001610c49565b91508082528660208285010111156112b757600080fd5b6112c88160208401602086016111ae565b508092505050925092905056fea264697066735822122085a1e096a6c93ac33950140d1f6bd826d1e767475bb5f2e9d3dcb9d2799f148f64736f6c63430008090033",
548
548
  "linkReferences": {},
549
549
  "deployedLinkReferences": {}
550
550
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/c1d194c598f27e74e5febef0e822787e.json"
3
+ "buildInfo": "../../../build-info/671b0778dc33f2c1b20cf41504c8e4d9.json"
4
4
  }
@@ -1 +1 @@
1
- {"abi":null,"bytecode":{"object":"0x605f80600d600039806000f3fe3415600957600080fd5b6000803560e01c63e83a2d828114602857631f6d6ef781146057578182fd5b815b804980603557506045565b600582901b60400152600101602a565b602083528060205260408160051b0183f35b4a8252602082f3","sourceMap":"76:19:0:-:0;;53:21;50:1;41:55;115:19;50:1;105:30","linkReferences":{}},"deployedBytecode":{"object":"0x3415600957600080fd5b6000803560e01c63e83a2d828114602857631f6d6ef781146057578182fd5b815b804980603557506045565b600582901b60400152600101602a565b602083528060205260408160051b0183f35b4a8252602082f3","sourceMap":"250:11:0:-:0;247:31;;;274:1;;264:12;247:31;400:1;;387:15;381:4;377:26;470:10;465:486;;;;1019:10;1014:216;;;;400:1;;1294:12;465:486;400:1;526:304;675:1;651:26;708:4;698:25;;716:5;;;698:25;755:10;;;;767:2;751:19;744:33;810:1;803:9;526:304;;;762:2;400:1;847:13;888:1;762:2;877:13;767:2;925:1;755:10;921;917:19;400:1;907:30;1014:216;1124:23;400:1;1164:22;1213:2;400:1;1203:13","linkReferences":{}},"methodIdentifiers":{}}
1
+ {"abi":null,"bytecode":{"object":"0x605780600a5f395ff3fe346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"76:19:0:-:0;53:21;;50:1;41:55;50:1;105:30","linkReferences":{}},"deployedBytecode":{"object":"0x346053575f3560e01c8063e83a2d8214602757631f6d6ef714601f575f80fd5b4a5f5260205ff35b5f5b804990811560415760019160408260051b0152016029565b60409060205f528060205260051b015ff35b5f80fd","sourceMap":"250:11:0:-:0;247:31;;400:1;387:15;381:4;377:26;465:486;470:10;465:486;;;1019:10;1014:216;;;400:1;1294:12;;1030:200;1124:23;400:1;1164:22;1213:2;400:1;1203:13;481:470;400:1;559:271;651:26;;701:12;;;698:25;;810:1;755:10;767:2;755:10;;;751:19;744:33;803:9;539:3;;714:9;767:2;716:5;762:2;400:1;847:13;877;762:2;877:13;755:10;921;917:19;400:1;907:30;262:16;274:1;264:12;","linkReferences":{}},"methodIdentifiers":{}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbitrum/nitro-contracts",
3
- "version": "2.0.0",
3
+ "version": "2.1.1-beta.0",
4
4
  "description": "Layer 2 precompiles and rollup for Arbitrum Nitro",
5
5
  "author": "Offchain Labs, Inc.",
6
6
  "license": "BUSL-1.1",
@@ -26,7 +26,7 @@
26
26
  "build:forge:sol": "forge build --skip *.yul",
27
27
  "build:forge:yul": "FOUNDRY_PROFILE=yul forge build --skip *.sol",
28
28
  "build:forge": "yarn build:forge:sol && yarn build:forge:yul",
29
- "contract:size": "STRICT=true hardhat size-contracts",
29
+ "contract:size": "hardhat size-contracts",
30
30
  "lint:test": "eslint ./test",
31
31
  "solhint": "solhint -f table src/**/*.sol",
32
32
  "prettier:solidity": "prettier --write src/**/*.sol",
@@ -39,6 +39,9 @@
39
39
  "test:storage": "./test/storage/test.bash",
40
40
  "test:signatures": "./test/signatures/test-sigs.bash",
41
41
  "test:e2e": "hardhat test test/e2e/*.ts",
42
+ "test:update": "yarn run test:signatures || yarn run test:storage",
43
+ "metadatahash": "yarn build:all && hardhat run scripts/printMetadataHashes.ts",
44
+ "upload-4bytes": "forge build && find ./out -type f -name \"*.json\" -exec cast upload-signature {} + | grep -v Duplicated:",
42
45
  "postinstall": "patch-package",
43
46
  "deploy-factory": "hardhat run scripts/deployment.ts",
44
47
  "deploy-eth-rollup": "hardhat run scripts/createEthRollup.ts",
@@ -57,8 +60,8 @@
57
60
  "devDependencies": {
58
61
  "@arbitrum/sdk": "^3.4.1",
59
62
  "@ethersproject/providers": "^5.7.2",
63
+ "@nomicfoundation/hardhat-verify": "^2.0.9",
60
64
  "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@^0.3.0-beta.13",
61
- "@nomiclabs/hardhat-etherscan": "^3.1.0",
62
65
  "@nomiclabs/hardhat-waffle": "^2.0.1",
63
66
  "@tovarishfin/hardhat-yul": "^3.0.5",
64
67
  "@typechain/ethers-v5": "^10.0.0",
@@ -0,0 +1,142 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ import "./Errors.sol";
5
+
6
+ /// @notice Account balance and the round at which it can be withdrawn
7
+ /// Balances are withdrawn as part of a two step process - initiation and finalization
8
+ /// This is so that a bidder can't withdraw their balance after making a bid
9
+ /// Instead, if they initiate their withdrawal in round r, they must wait until the beginning of
10
+ /// round r+2 before they can withdraw the balance. In the mean time their balance can be used to
11
+ /// resolve an auction if it is part of a valid bid, however the auctioneer may choose to
12
+ /// reject bids from accounts with an initiated balance withdrawal
13
+ struct Balance {
14
+ /// @notice The amount of balance in the account
15
+ uint256 balance;
16
+ /// @notice The round at which all of the balance can be withdrawn
17
+ /// Is set to uint64.max when no withdrawal has been intiated
18
+ uint64 withdrawalRound;
19
+ }
20
+
21
+ /// @notice Balance mutation and view functionality. This is in it's own library so that we can
22
+ // reason about and test how the different ways balance mutations interact with each other
23
+ library BalanceLib {
24
+ /// @notice The available balance at the supplied round. Returns 0 if a withdrawal has been initiated and has
25
+ /// past the withdrawal round.
26
+ /// @param bal The balance to query
27
+ /// @param round The round to check the balance in
28
+ function balanceAtRound(Balance storage bal, uint64 round) internal view returns (uint256) {
29
+ return bal.balance - withdrawableBalanceAtRound(bal, round);
30
+ }
31
+
32
+ /// @notice The withdrawable balance at the supplied round. If a withdrawal has been initiated, the
33
+ /// supplied round is past the withdrawal round and has yet to be finalized, then the balance
34
+ /// of this account is returned. Otherwise 0.
35
+ /// @param bal The balance to query
36
+ /// @param round The round to check the withdrawable balance in
37
+ function withdrawableBalanceAtRound(Balance storage bal, uint64 round)
38
+ internal
39
+ view
40
+ returns (uint256)
41
+ {
42
+ return round >= bal.withdrawalRound ? bal.balance : 0;
43
+ }
44
+
45
+ /// @notice Increase a balance by a specified amount
46
+ /// Will cancel a withdrawal if called after a withdrawal has been initiated
47
+ /// @param bal The balance info
48
+ /// @param amount The amount to increase the balance by
49
+ function increase(Balance storage bal, uint256 amount) internal {
50
+ // no point increasing if no amount is being supplied
51
+ if (amount == 0) {
52
+ revert ZeroAmount();
53
+ }
54
+
55
+ // if the balance have never been used before then balance and withdrawal round will be 0
56
+ // in this case we initialize the balance by setting the withdrawal round into the future
57
+ // if a withdrawal for the balance has been initialized (withdrawal round != 0 and != max)
58
+ // then we cancel that initiated withdrawal. We do this since if a increase is being made that
59
+ // means a user wishes to increase their balance, not withdraw it.
60
+ if (bal.withdrawalRound != type(uint64).max) {
61
+ bal.withdrawalRound = type(uint64).max;
62
+ }
63
+
64
+ bal.balance += amount;
65
+ }
66
+
67
+ /// @notice Reduce a balance immediately. The balance must already be greater than the amount
68
+ /// and a withdrawal has been initiated for this balance it must be occuring in
69
+ /// a round after the supplied round. Withdrawals earlier than that will block this reduce.
70
+ /// @param bal The balance to reduce
71
+ /// @param amount The amount to reduce by
72
+ /// @param round The round to check withdrawals against. A withdrawal after this round will be ignored
73
+ /// and the balance reduced anyway, withdrawals before or on this round will be respected
74
+ /// and the reduce will revert
75
+ function reduce(
76
+ Balance storage bal,
77
+ uint256 amount,
78
+ uint64 round
79
+ ) internal {
80
+ uint256 balRnd = balanceAtRound(bal, round);
81
+ // we add a zero check since it's possible for the amount to be zero
82
+ // but even in that case the user must have some balance
83
+ // to enforce that parties that havent done the deposit step cannot take part in the auction
84
+ if (balRnd == 0 || balRnd < amount) {
85
+ revert InsufficientBalance(amount, balRnd);
86
+ }
87
+
88
+ bal.balance -= amount;
89
+ }
90
+
91
+ /// @notice Initiate a withdrawal. A withdrawal is a reduction of the full amount.
92
+ /// Withdrawal is a two step process initialization and finalization. Finalization is only
93
+ /// after the supplied round parameter. The expected usage is to specify a round that is 2
94
+ /// in the future to ensure that the balance cannot be reduced unexpectedly without notice.
95
+ // An external observer can see that a withdrawal has been initiated, and will therefore
96
+ /// be able to take it into account and not rely on the balance being there.
97
+ /// In the case of the auction contract this allows the bidders to withdraw their
98
+ /// balance, but an auctioneer will know not to accept there bids in the mean time
99
+ /// @param bal The balance to iniate a reduction on
100
+ /// @param round The round that the withdrawal will be available in. Cannot be specified as the max round
101
+ function initiateWithdrawal(Balance storage bal, uint64 round) internal {
102
+ if (bal.balance == 0) {
103
+ revert ZeroAmount();
104
+ }
105
+
106
+ if (round == type(uint64).max) {
107
+ // we use max round to specify that a withdrawal is not taking place
108
+ // so we dont allow it as a withdrawal round. In practice max round should never
109
+ // be reached so this isnt an issue, we just put this here as an additional
110
+ // safety check
111
+ revert WithdrawalMaxRound();
112
+ }
113
+
114
+ if (bal.withdrawalRound != type(uint64).max) {
115
+ revert WithdrawalInProgress();
116
+ }
117
+
118
+ bal.withdrawalRound = round;
119
+ }
120
+
121
+ /// @notice Finalize an already initialized withdrawal. Reduces the balance to 0.
122
+ /// Can only be called two round after the withdrawal was initiated.
123
+ /// @param bal The balance to finalize
124
+ /// @param round The round to check whether withdrawal is valid in. Usually the current round. Cannot be max round.
125
+ function finalizeWithdrawal(Balance storage bal, uint64 round) internal returns (uint256) {
126
+ if (round == type(uint64).max) {
127
+ // we use max round to specify that a withdrawal is not taking place
128
+ // so we dont allow it as a withdrawal round. In practice max round should never
129
+ // be reached so this isnt an issue, we just put this here as an additional
130
+ // safety check
131
+ revert WithdrawalMaxRound();
132
+ }
133
+
134
+ uint256 withdrawableBalance = withdrawableBalanceAtRound(bal, round);
135
+ if (withdrawableBalance == 0) {
136
+ revert NothingToWithdraw();
137
+ }
138
+
139
+ bal.balance = 0;
140
+ return withdrawableBalance;
141
+ }
142
+ }
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity ^0.8.0;
3
+
4
+ import {
5
+ ERC20BurnableUpgradeable
6
+ } from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
7
+ import "./Errors.sol";
8
+
9
+ /// @notice A simple contract that can burn any tokens that are transferred to it
10
+ /// Token must support the ERC20BurnableUpgradeable.burn(uint256) interface
11
+ contract Burner {
12
+ ERC20BurnableUpgradeable public immutable token;
13
+
14
+ constructor(address _token) {
15
+ if (_token == address(0)) {
16
+ revert ZeroAddress();
17
+ }
18
+ token = ERC20BurnableUpgradeable(_token);
19
+ }
20
+
21
+ /// @notice Can be called at any time by anyone to burn any tokens held by this burner
22
+ function burn() external {
23
+ token.burn(token.balanceOf(address(this)));
24
+ }
25
+ }