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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  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/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  28. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  29. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  30. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  31. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  52. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  53. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  54. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  55. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +13 -0
  56. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  57. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  58. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  59. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  60. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  61. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  62. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +15 -2
  63. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  64. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  65. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  66. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  67. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  68. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  69. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  70. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  71. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  72. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  73. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  74. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  75. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  76. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  77. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +15 -2
  78. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  79. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  80. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  81. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +2 -2
  82. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +4 -0
  83. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +490 -0
  84. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +1 -1
  85. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.json +2 -2
  86. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +1 -1
  87. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +50 -2
  88. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +1 -1
  89. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +55 -0
  90. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +1 -1
  91. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  92. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  93. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  94. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  95. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  96. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  97. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  98. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  99. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  100. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  101. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  102. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  103. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  104. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +4 -0
  105. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +46 -0
  106. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  107. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  108. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +15 -2
  109. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  110. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +1 -1
  111. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +2 -2
  112. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +4 -0
  113. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +71 -0
  114. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +4 -0
  115. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +36 -0
  116. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +4 -0
  117. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +142 -0
  118. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  119. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  120. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +4 -0
  121. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +25 -0
  122. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  123. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +2 -2
  124. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  125. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +4 -0
  126. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +37 -0
  127. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  128. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  129. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +1 -1
  130. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +50 -2
  131. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +1 -1
  132. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +50 -2
  133. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  134. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  135. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  136. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  137. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  138. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  139. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +48 -0
  140. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  141. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  142. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  143. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +88 -0
  144. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  145. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +50 -2
  146. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  147. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +90 -2
  148. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  149. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +90 -2
  150. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  151. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +90 -2
  152. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  153. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +90 -2
  154. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  155. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  156. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  157. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  158. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.json +7 -0
  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/ArbOwner.sol/ArbOwner.json +161 -0
  164. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  165. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  166. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  167. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  168. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +4 -0
  169. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.json +453 -0
  170. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +4 -0
  171. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.json +113 -0
  172. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  173. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  174. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  175. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  176. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +2 -2
  177. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  178. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  179. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  180. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  181. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  182. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  183. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  184. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +1 -1
  185. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +1 -1
  186. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +1 -1
  187. package/build/contracts/src/rollup/Node.sol/NodeLib.json +2 -2
  188. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  189. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +15 -2
  190. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  191. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +13 -0
  192. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  193. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +2 -2
  194. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  195. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  196. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  197. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  198. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +2 -2
  199. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +1 -1
  200. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +13 -0
  201. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +1 -1
  202. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +15 -2
  203. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  204. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +15 -2
  205. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +1 -1
  206. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +2 -2
  207. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  208. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -2
  209. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  210. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  211. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  212. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  213. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  214. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  215. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  216. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  217. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  218. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  219. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  220. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  221. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  222. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  223. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  224. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  225. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +4 -0
  226. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +10 -0
  227. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  228. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  229. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  230. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  231. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  232. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  233. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  234. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  235. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  236. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  237. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  238. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  239. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  240. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  241. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  242. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  243. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  244. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  245. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  246. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  247. package/package.json +13 -7
  248. package/src/chain/CacheManager.sol +283 -0
  249. package/src/challenge/ChallengeLib.sol +0 -45
  250. package/src/challenge/ChallengeManager.sol +24 -9
  251. package/src/challenge/IChallengeManager.sol +13 -0
  252. package/src/mocks/Benchmarks.sol +52 -0
  253. package/src/mocks/MultiCallTest.sol +117 -0
  254. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +29 -0
  255. package/src/mocks/Program.sol +126 -0
  256. package/src/mocks/SdkStorage.sol +176 -0
  257. package/src/mocks/SimpleCacheManager.sol +22 -0
  258. package/src/osp/IOneStepProofEntry.sol +10 -0
  259. package/src/osp/OneStepProofEntry.sol +81 -7
  260. package/src/osp/OneStepProver0.sol +64 -20
  261. package/src/osp/OneStepProverHostIo.sol +201 -2
  262. package/src/osp/OneStepProverMemory.sol +4 -33
  263. package/src/precompiles/ArbDebug.sol +2 -0
  264. package/src/precompiles/ArbOwner.sol +51 -9
  265. package/src/precompiles/ArbWasm.sol +119 -0
  266. package/src/precompiles/ArbWasmCache.sol +33 -0
  267. package/src/state/Deserialize.sol +88 -47
  268. package/src/state/Instructions.sol +38 -3
  269. package/src/state/Machine.sol +92 -15
  270. package/src/state/MerkleProof.sol +22 -4
  271. package/src/state/Module.sol +3 -1
  272. package/src/state/ModuleMemory.sol +54 -0
  273. package/src/state/MultiStack.sol +58 -0
  274. package/src/state/StackFrame.sol +6 -1
  275. package/src/state/Value.sol +13 -1
  276. package/src/state/ValueStack.sol +6 -1
@@ -8,6 +8,19 @@
8
8
  "stateMutability": "nonpayable",
9
9
  "type": "constructor"
10
10
  },
11
+ {
12
+ "anonymous": false,
13
+ "inputs": [
14
+ {
15
+ "indexed": false,
16
+ "internalType": "uint8",
17
+ "name": "version",
18
+ "type": "uint8"
19
+ }
20
+ ],
21
+ "name": "Initialized",
22
+ "type": "event"
23
+ },
11
24
  {
12
25
  "anonymous": false,
13
26
  "inputs": [
@@ -343,8 +356,8 @@
343
356
  "type": "function"
344
357
  }
345
358
  ],
346
- "bytecode": "0x608060405234801561001057600080fd5b506001609755600054610100900460ff166100315760005460ff1615610039565b6100396100da565b6100a05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff161580156100c2576000805461ffff19166101011790555b80156100d4576000805461ff00191690555b50610104565b60006100ef306100f560201b6106aa1760201c565b15905090565b6001600160a01b03163b151590565b6111be806101136000396000f3fe6080604052600436106100a75760003560e01c806375b238fc1161006457806375b238fc1461019657806391d14854146101b8578063946d9204146101d8578063a217fddf146101f8578063bca8c7b51461020d578063d547741f1461022057600080fd5b806301ffc9a7146100ac57806307bd0265146100e15780631cff79cd14610111578063248a9ca3146101265780632f2ff15d1461015657806336568abe14610176575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610cbe565b610240565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b5061010360008051602061114983398151915281565b6040519081526020016100d8565b61012461011f366004610d4b565b610277565b005b34801561013257600080fd5b50610103610141366004610df1565b60009081526065602052604090206001015490565b34801561016257600080fd5b50610124610171366004610e0a565b610340565b34801561018257600080fd5b50610124610191366004610e0a565b61036b565b3480156101a257600080fd5b5061010360008051602061116983398151915281565b3480156101c457600080fd5b506100cc6101d3366004610e0a565b6103e9565b3480156101e457600080fd5b506101246101f3366004610e36565b610414565b34801561020457600080fd5b50610103600081565b61012461021b366004610d4b565b6105d4565b34801561022c57600080fd5b5061012461023b366004610e0a565b610684565b60006001600160e01b03198216637965db0b60e01b148061027157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061114983398151915261029081336106b9565b600260975414156102bc5760405162461bcd60e51b81526004016102b390610ef6565b60405180910390fd5b60026097819055506102f2826040518060600160405280603a815260200161110f603a91396001600160a01b038616919061071d565b50826001600160a01b03167f49f6851d1cd01a518db5bdea5cffbbe90276baa2595f74250b7472b96806302e348460405161032e929190610f89565b60405180910390a25050600160975550565b60008281526065602052604090206001015461035c81336106b9565b61036683836107fa565b505050565b6001600160a01b03811633146103db5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016102b3565b6103e58282610880565b5050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff1661042f5760005460ff1615610437565b6104376108e7565b61049a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102b3565b600054610100900460ff161580156104bc576000805461ffff19166101011790555b6001600160a01b0383166105125760405162461bcd60e51b815260206004820152601b60248201527f557067726164654578656375746f723a207a65726f2061646d696e000000000060448201526064016102b3565b61051a6108f8565b61053260008051602061116983398151915280610965565b610558600080516020611149833981519152600080516020611169833981519152610965565b610570600080516020611169833981519152846109b0565b60005b82518110156105bd576105ad6000805160206111498339815191528483815181106105a0576105a0610faa565b60200260200101516109b0565b6105b681610fd6565b9050610573565b508015610366576000805461ff0019169055505050565b6000805160206111498339815191526105ed81336106b9565b600260975414156106105760405162461bcd60e51b81526004016102b390610ef6565b600260978190555061064882346040518060600160405280603181526020016110de603191396001600160a01b0387169291906109ba565b50826001600160a01b03167f4d7dbdcc249630ec373f584267f10abf44938de920c32562f5aee93959c25258348460405161032e929190610f89565b6000828152606560205260409020600101546106a081336106b9565b6103668383610880565b6001600160a01b03163b151590565b6106c382826103e9565b6103e5576106db816001600160a01b03166014610ae9565b6106e6836020610ae9565b6040516020016106f7929190610ff1565b60408051601f198184030181529082905262461bcd60e51b82526102b391600401611060565b6060610728846106aa565b6107835760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b3565b600080856001600160a01b03168560405161079e9190611073565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50915091506107ee828286610c85565b925050505b9392505050565b61080482826103e9565b6103e55760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561083c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61088a82826103e9565b156103e55760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108f2306106aa565b15905090565b600054610100900460ff166109635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102b3565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6103e582826107fa565b606082471015610a1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b3565b610a24856106aa565b610a705760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b3565b600080866001600160a01b03168587604051610a8c9190611073565b60006040518083038185875af1925050503d8060008114610ac9576040519150601f19603f3d011682016040523d82523d6000602084013e610ace565b606091505b5091509150610ade828286610c85565b979650505050505050565b60606000610af883600261108f565b610b039060026110ae565b67ffffffffffffffff811115610b1b57610b1b610d04565b6040519080825280601f01601f191660200182016040528015610b45576020820181803683370190505b509050600360fc1b81600081518110610b6057610b60610faa565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610b8f57610b8f610faa565b60200101906001600160f81b031916908160001a9053506000610bb384600261108f565b610bbe9060016110ae565b90505b6001811115610c36576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610bf257610bf2610faa565b1a60f81b828281518110610c0857610c08610faa565b60200101906001600160f81b031916908160001a90535060049490941c93610c2f816110c6565b9050610bc1565b5083156107f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102b3565b60608315610c945750816107f3565b825115610ca45782518084602001fd5b8160405162461bcd60e51b81526004016102b39190611060565b600060208284031215610cd057600080fd5b81356001600160e01b0319811681146107f357600080fd5b80356001600160a01b0381168114610cff57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d4357610d43610d04565b604052919050565b60008060408385031215610d5e57600080fd5b610d6783610ce8565b915060208084013567ffffffffffffffff80821115610d8557600080fd5b818601915086601f830112610d9957600080fd5b813581811115610dab57610dab610d04565b610dbd601f8201601f19168501610d1a565b91508082528784828501011115610dd357600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215610e0357600080fd5b5035919050565b60008060408385031215610e1d57600080fd5b82359150610e2d60208401610ce8565b90509250929050565b60008060408385031215610e4957600080fd5b610e5283610ce8565b915060208084013567ffffffffffffffff80821115610e7057600080fd5b818601915086601f830112610e8457600080fd5b813581811115610e9657610e96610d04565b8060051b9150610ea7848301610d1a565b8181529183018401918481019089841115610ec157600080fd5b938501935b83851015610ee657610ed785610ce8565b82529385019390850190610ec6565b8096505050505050509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60005b83811015610f48578181015183820152602001610f30565b83811115610f57576000848401525b50505050565b60008151808452610f75816020860160208601610f2d565b601f01601f19169290920160200192915050565b828152604060208201526000610fa26040830184610f5d565b949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610fea57610fea610fc0565b5060010190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351611023816017850160208801610f2d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611054816028840160208801610f2d565b01602801949350505050565b6020815260006107f36020830184610f5d565b60008251611085818460208701610f2d565b9190910192915050565b60008160001904831182151516156110a9576110a9610fc0565b500290565b600082198211156110c1576110c1610fc0565b500190565b6000816110d5576110d5610fc0565b50600019019056fe557067726164654578656375746f723a20696e6e65722063616c6c206661696c656420776974686f757420726561736f6e557067726164654578656375746f723a20696e6e65722064656c65676174652063616c6c206661696c656420776974686f757420726561736f6ed8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212207c7bb36c56b18e18a8a08b30621a289f6d30eeb188a328b1908bbe17ae24db4464736f6c63430008090033",
347
- "deployedBytecode": "0x6080604052600436106100a75760003560e01c806375b238fc1161006457806375b238fc1461019657806391d14854146101b8578063946d9204146101d8578063a217fddf146101f8578063bca8c7b51461020d578063d547741f1461022057600080fd5b806301ffc9a7146100ac57806307bd0265146100e15780631cff79cd14610111578063248a9ca3146101265780632f2ff15d1461015657806336568abe14610176575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610cbe565b610240565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b5061010360008051602061114983398151915281565b6040519081526020016100d8565b61012461011f366004610d4b565b610277565b005b34801561013257600080fd5b50610103610141366004610df1565b60009081526065602052604090206001015490565b34801561016257600080fd5b50610124610171366004610e0a565b610340565b34801561018257600080fd5b50610124610191366004610e0a565b61036b565b3480156101a257600080fd5b5061010360008051602061116983398151915281565b3480156101c457600080fd5b506100cc6101d3366004610e0a565b6103e9565b3480156101e457600080fd5b506101246101f3366004610e36565b610414565b34801561020457600080fd5b50610103600081565b61012461021b366004610d4b565b6105d4565b34801561022c57600080fd5b5061012461023b366004610e0a565b610684565b60006001600160e01b03198216637965db0b60e01b148061027157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061114983398151915261029081336106b9565b600260975414156102bc5760405162461bcd60e51b81526004016102b390610ef6565b60405180910390fd5b60026097819055506102f2826040518060600160405280603a815260200161110f603a91396001600160a01b038616919061071d565b50826001600160a01b03167f49f6851d1cd01a518db5bdea5cffbbe90276baa2595f74250b7472b96806302e348460405161032e929190610f89565b60405180910390a25050600160975550565b60008281526065602052604090206001015461035c81336106b9565b61036683836107fa565b505050565b6001600160a01b03811633146103db5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016102b3565b6103e58282610880565b5050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff1661042f5760005460ff1615610437565b6104376108e7565b61049a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102b3565b600054610100900460ff161580156104bc576000805461ffff19166101011790555b6001600160a01b0383166105125760405162461bcd60e51b815260206004820152601b60248201527f557067726164654578656375746f723a207a65726f2061646d696e000000000060448201526064016102b3565b61051a6108f8565b61053260008051602061116983398151915280610965565b610558600080516020611149833981519152600080516020611169833981519152610965565b610570600080516020611169833981519152846109b0565b60005b82518110156105bd576105ad6000805160206111498339815191528483815181106105a0576105a0610faa565b60200260200101516109b0565b6105b681610fd6565b9050610573565b508015610366576000805461ff0019169055505050565b6000805160206111498339815191526105ed81336106b9565b600260975414156106105760405162461bcd60e51b81526004016102b390610ef6565b600260978190555061064882346040518060600160405280603181526020016110de603191396001600160a01b0387169291906109ba565b50826001600160a01b03167f4d7dbdcc249630ec373f584267f10abf44938de920c32562f5aee93959c25258348460405161032e929190610f89565b6000828152606560205260409020600101546106a081336106b9565b6103668383610880565b6001600160a01b03163b151590565b6106c382826103e9565b6103e5576106db816001600160a01b03166014610ae9565b6106e6836020610ae9565b6040516020016106f7929190610ff1565b60408051601f198184030181529082905262461bcd60e51b82526102b391600401611060565b6060610728846106aa565b6107835760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b3565b600080856001600160a01b03168560405161079e9190611073565b600060405180830381855af49150503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b50915091506107ee828286610c85565b925050505b9392505050565b61080482826103e9565b6103e55760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561083c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61088a82826103e9565b156103e55760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108f2306106aa565b15905090565b600054610100900460ff166109635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102b3565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6103e582826107fa565b606082471015610a1b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b3565b610a24856106aa565b610a705760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b3565b600080866001600160a01b03168587604051610a8c9190611073565b60006040518083038185875af1925050503d8060008114610ac9576040519150601f19603f3d011682016040523d82523d6000602084013e610ace565b606091505b5091509150610ade828286610c85565b979650505050505050565b60606000610af883600261108f565b610b039060026110ae565b67ffffffffffffffff811115610b1b57610b1b610d04565b6040519080825280601f01601f191660200182016040528015610b45576020820181803683370190505b509050600360fc1b81600081518110610b6057610b60610faa565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610b8f57610b8f610faa565b60200101906001600160f81b031916908160001a9053506000610bb384600261108f565b610bbe9060016110ae565b90505b6001811115610c36576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610bf257610bf2610faa565b1a60f81b828281518110610c0857610c08610faa565b60200101906001600160f81b031916908160001a90535060049490941c93610c2f816110c6565b9050610bc1565b5083156107f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102b3565b60608315610c945750816107f3565b825115610ca45782518084602001fd5b8160405162461bcd60e51b81526004016102b39190611060565b600060208284031215610cd057600080fd5b81356001600160e01b0319811681146107f357600080fd5b80356001600160a01b0381168114610cff57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d4357610d43610d04565b604052919050565b60008060408385031215610d5e57600080fd5b610d6783610ce8565b915060208084013567ffffffffffffffff80821115610d8557600080fd5b818601915086601f830112610d9957600080fd5b813581811115610dab57610dab610d04565b610dbd601f8201601f19168501610d1a565b91508082528784828501011115610dd357600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215610e0357600080fd5b5035919050565b60008060408385031215610e1d57600080fd5b82359150610e2d60208401610ce8565b90509250929050565b60008060408385031215610e4957600080fd5b610e5283610ce8565b915060208084013567ffffffffffffffff80821115610e7057600080fd5b818601915086601f830112610e8457600080fd5b813581811115610e9657610e96610d04565b8060051b9150610ea7848301610d1a565b8181529183018401918481019089841115610ec157600080fd5b938501935b83851015610ee657610ed785610ce8565b82529385019390850190610ec6565b8096505050505050509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60005b83811015610f48578181015183820152602001610f30565b83811115610f57576000848401525b50505050565b60008151808452610f75816020860160208601610f2d565b601f01601f19169290920160200192915050565b828152604060208201526000610fa26040830184610f5d565b949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415610fea57610fea610fc0565b5060010190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351611023816017850160208801610f2d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611054816028840160208801610f2d565b01602801949350505050565b6020815260006107f36020830184610f5d565b60008251611085818460208701610f2d565b9190910192915050565b60008160001904831182151516156110a9576110a9610fc0565b500290565b600082198211156110c1576110c1610fc0565b500190565b6000816110d5576110d5610fc0565b50600019019056fe557067726164654578656375746f723a20696e6e65722063616c6c206661696c656420776974686f757420726561736f6e557067726164654578656375746f723a20696e6e65722064656c65676174652063616c6c206661696c656420776974686f757420726561736f6ed8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a26469706673582212207c7bb36c56b18e18a8a08b30621a289f6d30eeb188a328b1908bbe17ae24db4464736f6c63430008090033",
359
+ "bytecode": "0x608060405234801561001057600080fd5b506001609755600054610100900460ff16158080156100365750600054600160ff909116105b80610061575061004f3061013760201b6106f91760201c565b158015610061575060005460ff166001145b6100c85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156100eb576000805461ff0019166101001790555b8015610131576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50610146565b6001600160a01b03163b151590565b611209806101556000396000f3fe6080604052600436106100a75760003560e01c806375b238fc1161006457806375b238fc1461019657806391d14854146101b8578063946d9204146101d8578063a217fddf146101f8578063bca8c7b51461020d578063d547741f1461022057600080fd5b806301ffc9a7146100ac57806307bd0265146100e15780631cff79cd14610111578063248a9ca3146101265780632f2ff15d1461015657806336568abe14610176575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610d09565b610240565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b5061010360008051602061119483398151915281565b6040519081526020016100d8565b61012461011f366004610d96565b610277565b005b34801561013257600080fd5b50610103610141366004610e3c565b60009081526065602052604090206001015490565b34801561016257600080fd5b50610124610171366004610e55565b61033f565b34801561018257600080fd5b50610124610191366004610e55565b610369565b3480156101a257600080fd5b506101036000805160206111b483398151915281565b3480156101c457600080fd5b506100cc6101d3366004610e55565b6103e7565b3480156101e457600080fd5b506101246101f3366004610e81565b610412565b34801561020457600080fd5b50610103600081565b61012461021b366004610d96565b610625565b34801561022c57600080fd5b5061012461023b366004610e55565b6106d4565b60006001600160e01b03198216637965db0b60e01b148061027157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061119483398151915261028f81610708565b600260975414156102bb5760405162461bcd60e51b81526004016102b290610f41565b60405180910390fd5b60026097819055506102f1826040518060600160405280603a815260200161115a603a91396001600160a01b0386169190610715565b50826001600160a01b03167f49f6851d1cd01a518db5bdea5cffbbe90276baa2595f74250b7472b96806302e348460405161032d929190610fd4565b60405180910390a25050600160975550565b60008281526065602052604090206001015461035a81610708565b61036483836107f2565b505050565b6001600160a01b03811633146103d95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016102b2565b6103e38282610878565b5050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff16158080156104325750600054600160ff909116105b806104535750610441306106f9565b158015610453575060005460ff166001145b6104b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102b2565b6000805460ff1916600117905580156104d9576000805461ff0019166101001790555b6001600160a01b03831661052f5760405162461bcd60e51b815260206004820152601b60248201527f557067726164654578656375746f723a207a65726f2061646d696e000000000060448201526064016102b2565b6105376108df565b61054f6000805160206111b48339815191528061094c565b6105756000805160206111948339815191526000805160206111b483398151915261094c565b61058d6000805160206111b483398151915284610997565b60005b82518110156105da576105ca6000805160206111948339815191528483815181106105bd576105bd610ff5565b6020026020010151610997565b6105d381611021565b9050610590565b508015610364576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60008051602061119483398151915261063d81610708565b600260975414156106605760405162461bcd60e51b81526004016102b290610f41565b60026097819055506106988234604051806060016040528060318152602001611129603191396001600160a01b0387169291906109a1565b50826001600160a01b03167f4d7dbdcc249630ec373f584267f10abf44938de920c32562f5aee93959c25258348460405161032d929190610fd4565b6000828152606560205260409020600101546106ef81610708565b6103648383610878565b6001600160a01b03163b151590565b6107128133610ad0565b50565b6060610720846106f9565b61077b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b2565b600080856001600160a01b031685604051610796919061103c565b600060405180830381855af49150503d80600081146107d1576040519150601f19603f3d011682016040523d82523d6000602084013e6107d6565b606091505b50915091506107e6828286610b34565b925050505b9392505050565b6107fc82826103e7565b6103e35760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556108343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61088282826103e7565b156103e35760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661094a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102b2565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6103e382826107f2565b606082471015610a025760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b2565b610a0b856106f9565b610a575760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b2565b600080866001600160a01b03168587604051610a73919061103c565b60006040518083038185875af1925050503d8060008114610ab0576040519150601f19603f3d011682016040523d82523d6000602084013e610ab5565b606091505b5091509150610ac5828286610b34565b979650505050505050565b610ada82826103e7565b6103e357610af2816001600160a01b03166014610b6d565b610afd836020610b6d565b604051602001610b0e929190611058565b60408051601f198184030181529082905262461bcd60e51b82526102b2916004016110c7565b60608315610b435750816107eb565b825115610b535782518084602001fd5b8160405162461bcd60e51b81526004016102b291906110c7565b60606000610b7c8360026110da565b610b879060026110f9565b67ffffffffffffffff811115610b9f57610b9f610d4f565b6040519080825280601f01601f191660200182016040528015610bc9576020820181803683370190505b509050600360fc1b81600081518110610be457610be4610ff5565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610c1357610c13610ff5565b60200101906001600160f81b031916908160001a9053506000610c378460026110da565b610c429060016110f9565b90505b6001811115610cba576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610c7657610c76610ff5565b1a60f81b828281518110610c8c57610c8c610ff5565b60200101906001600160f81b031916908160001a90535060049490941c93610cb381611111565b9050610c45565b5083156107eb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102b2565b600060208284031215610d1b57600080fd5b81356001600160e01b0319811681146107eb57600080fd5b80356001600160a01b0381168114610d4a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8e57610d8e610d4f565b604052919050565b60008060408385031215610da957600080fd5b610db283610d33565b915060208084013567ffffffffffffffff80821115610dd057600080fd5b818601915086601f830112610de457600080fd5b813581811115610df657610df6610d4f565b610e08601f8201601f19168501610d65565b91508082528784828501011115610e1e57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215610e4e57600080fd5b5035919050565b60008060408385031215610e6857600080fd5b82359150610e7860208401610d33565b90509250929050565b60008060408385031215610e9457600080fd5b610e9d83610d33565b915060208084013567ffffffffffffffff80821115610ebb57600080fd5b818601915086601f830112610ecf57600080fd5b813581811115610ee157610ee1610d4f565b8060051b9150610ef2848301610d65565b8181529183018401918481019089841115610f0c57600080fd5b938501935b83851015610f3157610f2285610d33565b82529385019390850190610f11565b8096505050505050509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60005b83811015610f93578181015183820152602001610f7b565b83811115610fa2576000848401525b50505050565b60008151808452610fc0816020860160208601610f78565b601f01601f19169290920160200192915050565b828152604060208201526000610fed6040830184610fa8565b949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110355761103561100b565b5060010190565b6000825161104e818460208701610f78565b9190910192915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161108a816017850160208801610f78565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516110bb816028840160208801610f78565b01602801949350505050565b6020815260006107eb6020830184610fa8565b60008160001904831182151516156110f4576110f461100b565b500290565b6000821982111561110c5761110c61100b565b500190565b6000816111205761112061100b565b50600019019056fe557067726164654578656375746f723a20696e6e65722063616c6c206661696c656420776974686f757420726561736f6e557067726164654578656375746f723a20696e6e65722064656c65676174652063616c6c206661696c656420776974686f757420726561736f6ed8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220c72b51b4593968911f4246e8db6c33d6b17a4b6ad5e99bd415197cd957e1433a64736f6c63430008090033",
360
+ "deployedBytecode": "0x6080604052600436106100a75760003560e01c806375b238fc1161006457806375b238fc1461019657806391d14854146101b8578063946d9204146101d8578063a217fddf146101f8578063bca8c7b51461020d578063d547741f1461022057600080fd5b806301ffc9a7146100ac57806307bd0265146100e15780631cff79cd14610111578063248a9ca3146101265780632f2ff15d1461015657806336568abe14610176575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610d09565b610240565b60405190151581526020015b60405180910390f35b3480156100ed57600080fd5b5061010360008051602061119483398151915281565b6040519081526020016100d8565b61012461011f366004610d96565b610277565b005b34801561013257600080fd5b50610103610141366004610e3c565b60009081526065602052604090206001015490565b34801561016257600080fd5b50610124610171366004610e55565b61033f565b34801561018257600080fd5b50610124610191366004610e55565b610369565b3480156101a257600080fd5b506101036000805160206111b483398151915281565b3480156101c457600080fd5b506100cc6101d3366004610e55565b6103e7565b3480156101e457600080fd5b506101246101f3366004610e81565b610412565b34801561020457600080fd5b50610103600081565b61012461021b366004610d96565b610625565b34801561022c57600080fd5b5061012461023b366004610e55565b6106d4565b60006001600160e01b03198216637965db0b60e01b148061027157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061119483398151915261028f81610708565b600260975414156102bb5760405162461bcd60e51b81526004016102b290610f41565b60405180910390fd5b60026097819055506102f1826040518060600160405280603a815260200161115a603a91396001600160a01b0386169190610715565b50826001600160a01b03167f49f6851d1cd01a518db5bdea5cffbbe90276baa2595f74250b7472b96806302e348460405161032d929190610fd4565b60405180910390a25050600160975550565b60008281526065602052604090206001015461035a81610708565b61036483836107f2565b505050565b6001600160a01b03811633146103d95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016102b2565b6103e38282610878565b5050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600054610100900460ff16158080156104325750600054600160ff909116105b806104535750610441306106f9565b158015610453575060005460ff166001145b6104b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102b2565b6000805460ff1916600117905580156104d9576000805461ff0019166101001790555b6001600160a01b03831661052f5760405162461bcd60e51b815260206004820152601b60248201527f557067726164654578656375746f723a207a65726f2061646d696e000000000060448201526064016102b2565b6105376108df565b61054f6000805160206111b48339815191528061094c565b6105756000805160206111948339815191526000805160206111b483398151915261094c565b61058d6000805160206111b483398151915284610997565b60005b82518110156105da576105ca6000805160206111948339815191528483815181106105bd576105bd610ff5565b6020026020010151610997565b6105d381611021565b9050610590565b508015610364576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60008051602061119483398151915261063d81610708565b600260975414156106605760405162461bcd60e51b81526004016102b290610f41565b60026097819055506106988234604051806060016040528060318152602001611129603191396001600160a01b0387169291906109a1565b50826001600160a01b03167f4d7dbdcc249630ec373f584267f10abf44938de920c32562f5aee93959c25258348460405161032d929190610fd4565b6000828152606560205260409020600101546106ef81610708565b6103648383610878565b6001600160a01b03163b151590565b6107128133610ad0565b50565b6060610720846106f9565b61077b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016102b2565b600080856001600160a01b031685604051610796919061103c565b600060405180830381855af49150503d80600081146107d1576040519150601f19603f3d011682016040523d82523d6000602084013e6107d6565b606091505b50915091506107e6828286610b34565b925050505b9392505050565b6107fc82826103e7565b6103e35760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556108343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61088282826103e7565b156103e35760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661094a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016102b2565b565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6103e382826107f2565b606082471015610a025760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102b2565b610a0b856106f9565b610a575760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b2565b600080866001600160a01b03168587604051610a73919061103c565b60006040518083038185875af1925050503d8060008114610ab0576040519150601f19603f3d011682016040523d82523d6000602084013e610ab5565b606091505b5091509150610ac5828286610b34565b979650505050505050565b610ada82826103e7565b6103e357610af2816001600160a01b03166014610b6d565b610afd836020610b6d565b604051602001610b0e929190611058565b60408051601f198184030181529082905262461bcd60e51b82526102b2916004016110c7565b60608315610b435750816107eb565b825115610b535782518084602001fd5b8160405162461bcd60e51b81526004016102b291906110c7565b60606000610b7c8360026110da565b610b879060026110f9565b67ffffffffffffffff811115610b9f57610b9f610d4f565b6040519080825280601f01601f191660200182016040528015610bc9576020820181803683370190505b509050600360fc1b81600081518110610be457610be4610ff5565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610c1357610c13610ff5565b60200101906001600160f81b031916908160001a9053506000610c378460026110da565b610c429060016110f9565b90505b6001811115610cba576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610c7657610c76610ff5565b1a60f81b828281518110610c8c57610c8c610ff5565b60200101906001600160f81b031916908160001a90535060049490941c93610cb381611111565b9050610c45565b5083156107eb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016102b2565b600060208284031215610d1b57600080fd5b81356001600160e01b0319811681146107eb57600080fd5b80356001600160a01b0381168114610d4a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8e57610d8e610d4f565b604052919050565b60008060408385031215610da957600080fd5b610db283610d33565b915060208084013567ffffffffffffffff80821115610dd057600080fd5b818601915086601f830112610de457600080fd5b813581811115610df657610df6610d4f565b610e08601f8201601f19168501610d65565b91508082528784828501011115610e1e57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215610e4e57600080fd5b5035919050565b60008060408385031215610e6857600080fd5b82359150610e7860208401610d33565b90509250929050565b60008060408385031215610e9457600080fd5b610e9d83610d33565b915060208084013567ffffffffffffffff80821115610ebb57600080fd5b818601915086601f830112610ecf57600080fd5b813581811115610ee157610ee1610d4f565b8060051b9150610ef2848301610d65565b8181529183018401918481019089841115610f0c57600080fd5b938501935b83851015610f3157610f2285610d33565b82529385019390850190610f11565b8096505050505050509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60005b83811015610f93578181015183820152602001610f7b565b83811115610fa2576000848401525b50505050565b60008151808452610fc0816020860160208601610f78565b601f01601f19169290920160200192915050565b828152604060208201526000610fed6040830184610fa8565b949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156110355761103561100b565b5060010190565b6000825161104e818460208701610f78565b9190910192915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161108a816017850160208801610f78565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516110bb816028840160208801610f78565b01602801949350505050565b6020815260006107eb6020830184610fa8565b60008160001904831182151516156110f4576110f461100b565b500290565b6000821982111561110c5761110c61100b565b500190565b6000816111205761112061100b565b50600019019056fe557067726164654578656375746f723a20696e6e65722063616c6c206661696c656420776974686f757420726561736f6e557067726164654578656375746f723a20696e6e65722064656c65676174652063616c6c206661696c656420776974686f757420726561736f6ed8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220c72b51b4593968911f4246e8db6c33d6b17a4b6ad5e99bd415197cd957e1433a64736f6c63430008090033",
348
361
  "linkReferences": {},
349
362
  "deployedLinkReferences": {}
350
363
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -3,6 +3,54 @@
3
3
  "contractName": "IOneStepProofEntry",
4
4
  "sourceName": "src/osp/IOneStepProofEntry.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "enum MachineStatus",
10
+ "name": "status",
11
+ "type": "uint8"
12
+ },
13
+ {
14
+ "internalType": "bytes32",
15
+ "name": "globalStateHash",
16
+ "type": "bytes32"
17
+ }
18
+ ],
19
+ "name": "getEndMachineHash",
20
+ "outputs": [
21
+ {
22
+ "internalType": "bytes32",
23
+ "name": "",
24
+ "type": "bytes32"
25
+ }
26
+ ],
27
+ "stateMutability": "pure",
28
+ "type": "function"
29
+ },
30
+ {
31
+ "inputs": [
32
+ {
33
+ "internalType": "bytes32",
34
+ "name": "globalStateHash",
35
+ "type": "bytes32"
36
+ },
37
+ {
38
+ "internalType": "bytes32",
39
+ "name": "wasmModuleRoot",
40
+ "type": "bytes32"
41
+ }
42
+ ],
43
+ "name": "getStartMachineHash",
44
+ "outputs": [
45
+ {
46
+ "internalType": "bytes32",
47
+ "name": "",
48
+ "type": "bytes32"
49
+ }
50
+ ],
51
+ "stateMutability": "pure",
52
+ "type": "function"
53
+ },
6
54
  {
7
55
  "inputs": [
8
56
  {
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -3,8 +3,8 @@
3
3
  "contractName": "OneStepProofEntryLib",
4
4
  "sourceName": "src/osp/IOneStepProofEntry.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220995bc75fd3882c2ddc7f079b12262d41b3a96596d620dafd8f32afd385ba28e164736f6c63430008090033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220995bc75fd3882c2ddc7f079b12262d41b3a96596d620dafd8f32afd385ba28e164736f6c63430008090033",
6
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220223fd026c9ded55afa397377c4fd1d09617b50854daf739261c2555ea51d443264736f6c63430008090033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220223fd026c9ded55afa397377c4fd1d09617b50854daf739261c2555ea51d443264736f6c63430008090033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -65,6 +65,23 @@
65
65
  "name": "valueStack",
66
66
  "type": "tuple"
67
67
  },
68
+ {
69
+ "components": [
70
+ {
71
+ "internalType": "bytes32",
72
+ "name": "inactiveStackHash",
73
+ "type": "bytes32"
74
+ },
75
+ {
76
+ "internalType": "bytes32",
77
+ "name": "remainingHash",
78
+ "type": "bytes32"
79
+ }
80
+ ],
81
+ "internalType": "struct MultiStack",
82
+ "name": "valueMultiStack",
83
+ "type": "tuple"
84
+ },
68
85
  {
69
86
  "components": [
70
87
  {
@@ -152,6 +169,23 @@
152
169
  "name": "frameStack",
153
170
  "type": "tuple"
154
171
  },
172
+ {
173
+ "components": [
174
+ {
175
+ "internalType": "bytes32",
176
+ "name": "inactiveStackHash",
177
+ "type": "bytes32"
178
+ },
179
+ {
180
+ "internalType": "bytes32",
181
+ "name": "remainingHash",
182
+ "type": "bytes32"
183
+ }
184
+ ],
185
+ "internalType": "struct MultiStack",
186
+ "name": "frameMultiStack",
187
+ "type": "tuple"
188
+ },
155
189
  {
156
190
  "internalType": "bytes32",
157
191
  "name": "globalStateHash",
@@ -172,6 +206,11 @@
172
206
  "name": "functionPc",
173
207
  "type": "uint32"
174
208
  },
209
+ {
210
+ "internalType": "bytes32",
211
+ "name": "recoveryPc",
212
+ "type": "bytes32"
213
+ },
175
214
  {
176
215
  "internalType": "bytes32",
177
216
  "name": "modulesRoot",
@@ -221,6 +260,11 @@
221
260
  "name": "functionsMerkleRoot",
222
261
  "type": "bytes32"
223
262
  },
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "extraHash",
266
+ "type": "bytes32"
267
+ },
224
268
  {
225
269
  "internalType": "uint32",
226
270
  "name": "internalsOffset",
@@ -299,6 +343,23 @@
299
343
  "name": "valueStack",
300
344
  "type": "tuple"
301
345
  },
346
+ {
347
+ "components": [
348
+ {
349
+ "internalType": "bytes32",
350
+ "name": "inactiveStackHash",
351
+ "type": "bytes32"
352
+ },
353
+ {
354
+ "internalType": "bytes32",
355
+ "name": "remainingHash",
356
+ "type": "bytes32"
357
+ }
358
+ ],
359
+ "internalType": "struct MultiStack",
360
+ "name": "valueMultiStack",
361
+ "type": "tuple"
362
+ },
302
363
  {
303
364
  "components": [
304
365
  {
@@ -386,6 +447,23 @@
386
447
  "name": "frameStack",
387
448
  "type": "tuple"
388
449
  },
450
+ {
451
+ "components": [
452
+ {
453
+ "internalType": "bytes32",
454
+ "name": "inactiveStackHash",
455
+ "type": "bytes32"
456
+ },
457
+ {
458
+ "internalType": "bytes32",
459
+ "name": "remainingHash",
460
+ "type": "bytes32"
461
+ }
462
+ ],
463
+ "internalType": "struct MultiStack",
464
+ "name": "frameMultiStack",
465
+ "type": "tuple"
466
+ },
389
467
  {
390
468
  "internalType": "bytes32",
391
469
  "name": "globalStateHash",
@@ -406,6 +484,11 @@
406
484
  "name": "functionPc",
407
485
  "type": "uint32"
408
486
  },
487
+ {
488
+ "internalType": "bytes32",
489
+ "name": "recoveryPc",
490
+ "type": "bytes32"
491
+ },
409
492
  {
410
493
  "internalType": "bytes32",
411
494
  "name": "modulesRoot",
@@ -455,6 +538,11 @@
455
538
  "name": "functionsMerkleRoot",
456
539
  "type": "bytes32"
457
540
  },
541
+ {
542
+ "internalType": "bytes32",
543
+ "name": "extraHash",
544
+ "type": "bytes32"
545
+ },
458
546
  {
459
547
  "internalType": "uint32",
460
548
  "name": "internalsOffset",
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7de232cc334b063903f669aaef0a3136.json"
3
+ "buildInfo": "../../../build-info/83d3fd0b633e3a3120fc5455f62bf6b6.json"
4
4
  }
@@ -29,6 +29,54 @@
29
29
  "stateMutability": "nonpayable",
30
30
  "type": "constructor"
31
31
  },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "enum MachineStatus",
36
+ "name": "status",
37
+ "type": "uint8"
38
+ },
39
+ {
40
+ "internalType": "bytes32",
41
+ "name": "globalStateHash",
42
+ "type": "bytes32"
43
+ }
44
+ ],
45
+ "name": "getEndMachineHash",
46
+ "outputs": [
47
+ {
48
+ "internalType": "bytes32",
49
+ "name": "",
50
+ "type": "bytes32"
51
+ }
52
+ ],
53
+ "stateMutability": "pure",
54
+ "type": "function"
55
+ },
56
+ {
57
+ "inputs": [
58
+ {
59
+ "internalType": "bytes32",
60
+ "name": "globalStateHash",
61
+ "type": "bytes32"
62
+ },
63
+ {
64
+ "internalType": "bytes32",
65
+ "name": "wasmModuleRoot",
66
+ "type": "bytes32"
67
+ }
68
+ ],
69
+ "name": "getStartMachineHash",
70
+ "outputs": [
71
+ {
72
+ "internalType": "bytes32",
73
+ "name": "",
74
+ "type": "bytes32"
75
+ }
76
+ ],
77
+ "stateMutability": "pure",
78
+ "type": "function"
79
+ },
32
80
  {
33
81
  "inputs": [
34
82
  {
@@ -128,8 +176,8 @@
128
176
  "type": "function"
129
177
  }
130
178
  ],
131
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002378380380620023788339810160408190526200003491620000a5565b600080546001600160a01b039586166001600160a01b031991821617909155600180549486169482169490941790935560028054928516928416929092179091556003805491909316911617905562000102565b80516001600160a01b0381168114620000a057600080fd5b919050565b60008060008060808587031215620000bc57600080fd5b620000c78562000088565b9350620000d76020860162000088565b9250620000e76040860162000088565b9150620000f76060860162000088565b905092959194509250565b61226680620001126000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631f128bc01461005c57806330a5509f1461008c5780635d3adcfb1461009f5780635f52fd7c146100c057806366e5d9c3146100d3575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60005461006f906001600160a01b031681565b6100b26100ad3660046117fb565b6100e6565b604051908152602001610083565b60035461006f906001600160a01b031681565b60025461006f906001600160a01b031681565b60006100f06116f7565b6100f8611769565b6040805160208101909152606081526040805180820190915260008082526020820152600061012888888361069c565b9095509050886101378661086b565b1461017f5760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b60008551600381111561019457610194611896565b146101ae576101a28561086b565b95505050505050610693565b650800000000006101c08b60016118c2565b14156101d357600285526101a28561086b565b6101de888883610a5a565b90945090506101ee888883610b06565b809250819450505084610100015161021b8660a0015163ffffffff168686610be09092919063ffffffff16565b146102575760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610176565b6040805160208101909152606081526040805160208101909152606081526102808a8a85610c29565b90945092506102908a8a85610b06565b9350915061029f8a8a85610b06565b809450819250505060006102c88860e0015163ffffffff168685610c839092919063ffffffff16565b905060006102eb8960c0015163ffffffff168385610cc99092919063ffffffff16565b9050876060015181146103355760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610176565b506103489250899150839050818b6118da565b975097505060008460a0015163ffffffff16905060018560e00181815161036f9190611904565b63ffffffff1690525081516000602861ffff8316108015906103965750603561ffff831611155b806103b65750603661ffff8316108015906103b65750603e61ffff831611155b806103c5575061ffff8216603f145b806103d4575061ffff82166040145b156103eb57506001546001600160a01b03166105e0565b61ffff821660451480610402575061ffff82166050145b806104305750604661ffff83161080159061043057506104246009604661192c565b61ffff168261ffff1611155b8061045e5750606761ffff83161080159061045e57506104526002606761192c565b61ffff168261ffff1611155b8061047e5750606a61ffff83161080159061047e5750607861ffff831611155b806104ac5750605161ffff8316108015906104ac57506104a06009605161192c565b61ffff168261ffff1611155b806104da5750607961ffff8316108015906104da57506104ce6002607961192c565b61ffff168261ffff1611155b806104fa5750607c61ffff8316108015906104fa5750608a61ffff831611155b80610509575061ffff821660a7145b80610526575061ffff821660ac1480610526575061ffff821660ad145b80610546575060c061ffff831610801590610546575060c461ffff831611155b80610566575060bc61ffff831610801590610566575060bf61ffff831611155b1561057d57506002546001600160a01b03166105e0565b61801061ffff831610801590610599575061801361ffff831611155b806105bb575061802061ffff8316108015906105bb575061802261ffff831611155b156105d257506003546001600160a01b03166105e0565b506000546001600160a01b03165b806001600160a01b031663da78e7d18e8989888f8f6040518763ffffffff1660e01b815260040161061696959493929190611a8b565b60006040518083038186803b15801561062e57600080fd5b505afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190612042565b909750955061067a858488610be0565b6101008801526106898761086b565b9750505050505050505b95945050505050565b6106a46116f7565b816000806106b3878785610d3e565b9350905060ff81166106c85760009150610745565b8060ff16600114156106dd5760019150610745565b8060ff16600214156106f25760029150610745565b8060ff16600314156107075760039150610745565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610176565b5061074e6117ba565b6107566117ba565b60008060008061077760408051808201909152606081526000602082015290565b60006107848e8e8c610d74565b9a5097506107938e8e8c610d74565b9a5096506107a28e8e8c610e73565b9a5091506107b18e8e8c610f9b565b9a5095506107c08e8e8c610fb7565b9a5094506107cf8e8e8c610fb7565b9a5093506107de8e8e8c610fb7565b9a5092506107ed8e8e8c610f9b565b809b5081925050506040518061012001604052808a600381111561081357610813611896565b81526020018981526020018881526020018381526020018781526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff168152602001828152509a50505050505050505050935093915050565b6000808251600381111561088157610881611896565b141561095057610894826020015161101b565b6108a1836040015161101b565b6108ae84606001516110a0565b608085015160a086015160c087015160e0808901516101008a01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088019590955260908701939093526001600160e01b031991831b821660b0870152821b811660b486015291901b1660b883015260bc82015260dc015b604051602081830303815290604052805190602001209050919050565b60018251600381111561096557610965611896565b141561099d5760808201516040517026b0b1b434b732903334b734b9b432b21d60791b60208201526031810191909152605101610933565b6002825160038111156109b2576109b2611896565b14156109dc576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610933565b6003825160038111156109f1576109f1611896565b1415610a1b576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610933565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610176565b919050565b610a62611769565b604080516060810182526000808252602082018190529181018290528391906000806000610a918a8a88610f9b565b96509450610aa08a8a88611139565b96509350610aaf8a8a88610f9b565b96509250610abe8a8a88610f9b565b96509150610acd8a8a88610fb7565b6040805160a08101825297885260208801969096529486019390935250606084015263ffffffff16608083015290969095509350505050565b604080516020810190915260608152816000610b23868684610d3e565b92509050600060ff82166001600160401b03811115610b4457610b44611c19565b604051908082528060200260200182016040528015610b6d578160200160208202803683370190505b50905060005b8260ff168160ff161015610bc457610b8c888886610f9b565b838360ff1681518110610ba157610ba1612164565b602002602001018196508281525050508080610bbc9061217a565b915050610b73565b5060405180602001604052808281525093505050935093915050565b6000610c218484610bf0856111b4565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b815250611221565b949350505050565b604080518082019091526000808252602082015281600080610c4c8787856112f3565b93509150610c5b87878561134c565b6040805180820190915261ffff90941684526020840191909152919791965090945050505050565b6000610c218484610c93856113a1565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b815250611221565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061069385858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b815250611221565b600081848482818110610d5357610d53612164565b919091013560f81c9250819050610d698161219a565b915050935093915050565b610d7c6117ba565b816000610d8a868684610f9b565b925090506000610d9b87878561134c565b935090506000816001600160401b03811115610db957610db9611c19565b604051908082528060200260200182016040528015610dfe57816020015b6040805180820190915260008082526020820152815260200190600190039081610dd75790505b50905060005b8151811015610e4c57610e188989876113eb565b838381518110610e2a57610e2a612164565b6020026020010181975082905250508080610e449061219a565b915050610e04565b50604080516060810182529081019182529081526020810192909252509590945092505050565b604080518082019091526060815260006020820152816000610e96868684610f9b565b925090506060868684818110610eae57610eae612164565b909101356001600160f81b031916159050610f365782610ecd8161219a565b604080516001808252818301909252919550909150816020015b610eef6117d8565b815260200190600190039081610ee7579050509050610f0f8787856114e7565b82600081518110610f2257610f22612164565b602002602001018195508290525050610f7a565b82610f408161219a565b60408051600080825260208201909252919550909150610f76565b610f636117d8565b815260200190600190039081610f5b5790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181610faa86868461134c565b9097909650945050505050565b600081815b60048110156110125760088363ffffffff16901b9250858583818110610fe457610fe4612164565b919091013560f81c93909317925081610ffc8161219a565b925050808061100a9061219a565b915050610fbc565b50935093915050565b60208101518151515160005b818110156110995783516110449061103f9083611580565b6115b8565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806110919061219a565b915050611027565b5050919050565b602081015160005b825151811015611133576110d8836000015182815181106110cb576110cb612164565b60200260200101516115d5565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061112b9061219a565b9150506110a8565b50919050565b60408051606081018252600080825260208201819052918101919091528160008080611166888886611645565b94509250611175888886611645565b94509150611184888886610f9b565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516111c883602001516116a3565b6040848101516060860151608087015192516626b7b23ab6329d60c91b6020820152602781019590955260478501939093526067840152608783019190915260e01b6001600160e01b03191660a782015260ab01610933565b8160005b8551518110156112ea57600185166112865782828760000151838151811061124f5761124f612164565b6020026020010151604051602001611269939291906121b5565b6040516020818303038152906040528051906020012091506112d1565b828660000151828151811061129d5761129d612164565b6020026020010151836040516020016112b8939291906121b5565b6040516020818303038152906040528051906020012091505b60019490941c93806112e28161219a565b915050611225565b50949350505050565b600081815b60028110156110125760088361ffff16901b925085858381811061131e5761131e612164565b919091013560f81c939093179250816113368161219a565b92505080806113449061219a565b9150506112f8565b600081815b602081101561101257600883901b925085858381811061137357611373612164565b919091013560f81c9390931792508161138b8161219a565b92505080806113999061219a565b915050611351565b6000816000015182602001516040516020016109339291906b24b739ba393ab1ba34b7b71d60a11b815260f09290921b6001600160f01b031916600c830152600e820152602e0190565b604080518082019091526000808252602082015281600085858381811061141457611414612164565b919091013560f81c915082905061142a8161219a565b925050611435600690565b600681111561144657611446611896565b60ff168160ff16111561148c5760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610176565b600061149987878561134c565b809450819250505060405180604001604052808360ff1660068111156114c1576114c1611896565b60068111156114d2576114d2611896565b81526020018281525093505050935093915050565b6114ef6117d8565b8161150a604080518082019091526000808252602082015290565b600080600061151a8989876113eb565b95509350611529898987610f9b565b95509250611538898987610fb7565b95509150611547898987610fb7565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b604080518082019091526000808252602082015282518051839081106115a8576115a8612164565b6020026020010151905092915050565b6000816000015182602001516040516020016109339291906121fb565b60006115e482600001516115b8565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610933565b600081815b6008811015611012576008836001600160401b0316901b925085858381811061167557611675612164565b919091013560f81c9390931792508161168d8161219a565b925050808061169b9061219a565b91505061164a565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610933565b60408051610120810190915280600081526020016117136117ba565b81526020016117206117ba565b815260200161174060408051808201909152606081526000602082015290565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b6040805160a08101909152600081526020810161179f604080516060810182526000808252602082018190529181019190915290565b81526000602082018190526040820181905260609091015290565b60408051606080820183529181019182529081526000602082015290565b6040805160c0810190915260006080820181815260a0830191909152819061179f565b600080600080600085870360a081121561181457600080fd5b604081121561182257600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561184e57600080fd5b818801915088601f83011261186257600080fd5b81358181111561187157600080fd5b89602082850101111561188357600080fd5b9699959850939650602001949392505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156118d5576118d56118ac565b500190565b600080858511156118ea57600080fd5b838611156118f757600080fd5b5050820193919092039150565b600063ffffffff808316818516808303821115611923576119236118ac565b01949350505050565b600061ffff808316818516808303821115611923576119236118ac565b6004811061195957611959611896565b9052565b80516007811061196f5761196f611896565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b808410156119cc576119b882865161195d565b9382019360019390930192908501906119a5565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611a4b578451611a1785825161195d565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611a02565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101a060208901356001600160a01b038116808214611aaf57600080fd5b8060208601525050806040840152611aca8184018951611949565b5060208701516101206101c0840152611ae76102c084018261197c565b9050604088015161019f1980858403016101e0860152611b07838361197c565b925060608a01519150808584030161020086015250611b2682826119e0565b915050608088015161022084015260a0880151611b4c61024085018263ffffffff169052565b5060c088015163ffffffff81166102608501525060e088015163ffffffff8116610280850152506101008801516102a0840152611be160608401888051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b855161ffff166101408401526020860151610160840152828103610180840152611c0c818587611a62565b9998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611c5157611c51611c19565b60405290565b604051602081016001600160401b0381118282101715611c5157611c51611c19565b604051608081016001600160401b0381118282101715611c5157611c51611c19565b60405160a081016001600160401b0381118282101715611c5157611c51611c19565b604051606081016001600160401b0381118282101715611c5157611c51611c19565b60405161012081016001600160401b0381118282101715611c5157611c51611c19565b604051601f8201601f191681016001600160401b0381118282101715611d2a57611d2a611c19565b604052919050565b805160048110610a5557600080fd5b60006001600160401b03821115611d5a57611d5a611c19565b5060051b60200190565b600060408284031215611d7657600080fd5b611d7e611c2f565b9050815160078110611d8f57600080fd5b808252506020820151602082015292915050565b60006040808385031215611db657600080fd5b611dbe611c2f565b915082516001600160401b0380821115611dd757600080fd5b81850191506020808388031215611ded57600080fd5b611df5611c57565b835183811115611e0457600080fd5b80850194505087601f850112611e1957600080fd5b83519250611e2e611e2984611d41565b611d02565b83815260069390931b84018201928281019089851115611e4d57600080fd5b948301945b84861015611e7357611e648a87611d64565b82529486019490830190611e52565b8252508552948501519484019490945250909392505050565b805163ffffffff81168114610a5557600080fd5b60006040808385031215611eb357600080fd5b611ebb611c2f565b915082516001600160401b03811115611ed357600080fd5b8301601f81018513611ee457600080fd5b80516020611ef4611e2983611d41565b82815260a09283028401820192828201919089851115611f1357600080fd5b948301945b84861015611f7c5780868b031215611f305760008081fd5b611f38611c79565b611f428b88611d64565b815287870151858201526060611f59818901611e8c565b89830152611f6960808901611e8c565b9082015283529485019491830191611f18565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610a5557600080fd5b600081830360e0811215611fbe57600080fd5b611fc6611c9b565b8351815291506060601f1982011215611fde57600080fd5b50611fe7611cbd565b611ff360208401611f94565b815261200160408401611f94565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015261203760c08301611e8c565b608082015292915050565b60008061010080848603121561205757600080fd5b83516001600160401b038082111561206e57600080fd5b90850190610120828803121561208357600080fd5b61208b611cdf565b61209483611d32565b81526020830151828111156120a857600080fd5b6120b489828601611da3565b6020830152506040830151828111156120cc57600080fd5b6120d889828601611da3565b6040830152506060830151828111156120f057600080fd5b6120fc89828601611ea0565b6060830152506080830151608082015261211860a08401611e8c565b60a082015261212960c08401611e8c565b60c082015261213a60e08401611e8c565b60e082015283830151848201528095505050505061215b8460208501611fab565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612191576121916118ac565b60010192915050565b60006000198214156121ae576121ae6118ac565b5060010190565b6000845160005b818110156121d657602081880181015185830152016121bc565b818111156121e5576000828501525b5091909101928352506020820152604001919050565b652b30b63ab29d60d11b815260006007841061221957612219611896565b5060f89290921b600683015260078201526027019056fea2646970667358221220700823cc910eeee191650902368f52a36b4136c62bc727da6ef5233ea8d9d43e64736f6c63430008090033",
132
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631f128bc01461005c57806330a5509f1461008c5780635d3adcfb1461009f5780635f52fd7c146100c057806366e5d9c3146100d3575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60005461006f906001600160a01b031681565b6100b26100ad3660046117fb565b6100e6565b604051908152602001610083565b60035461006f906001600160a01b031681565b60025461006f906001600160a01b031681565b60006100f06116f7565b6100f8611769565b6040805160208101909152606081526040805180820190915260008082526020820152600061012888888361069c565b9095509050886101378661086b565b1461017f5760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b60008551600381111561019457610194611896565b146101ae576101a28561086b565b95505050505050610693565b650800000000006101c08b60016118c2565b14156101d357600285526101a28561086b565b6101de888883610a5a565b90945090506101ee888883610b06565b809250819450505084610100015161021b8660a0015163ffffffff168686610be09092919063ffffffff16565b146102575760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610176565b6040805160208101909152606081526040805160208101909152606081526102808a8a85610c29565b90945092506102908a8a85610b06565b9350915061029f8a8a85610b06565b809450819250505060006102c88860e0015163ffffffff168685610c839092919063ffffffff16565b905060006102eb8960c0015163ffffffff168385610cc99092919063ffffffff16565b9050876060015181146103355760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610176565b506103489250899150839050818b6118da565b975097505060008460a0015163ffffffff16905060018560e00181815161036f9190611904565b63ffffffff1690525081516000602861ffff8316108015906103965750603561ffff831611155b806103b65750603661ffff8316108015906103b65750603e61ffff831611155b806103c5575061ffff8216603f145b806103d4575061ffff82166040145b156103eb57506001546001600160a01b03166105e0565b61ffff821660451480610402575061ffff82166050145b806104305750604661ffff83161080159061043057506104246009604661192c565b61ffff168261ffff1611155b8061045e5750606761ffff83161080159061045e57506104526002606761192c565b61ffff168261ffff1611155b8061047e5750606a61ffff83161080159061047e5750607861ffff831611155b806104ac5750605161ffff8316108015906104ac57506104a06009605161192c565b61ffff168261ffff1611155b806104da5750607961ffff8316108015906104da57506104ce6002607961192c565b61ffff168261ffff1611155b806104fa5750607c61ffff8316108015906104fa5750608a61ffff831611155b80610509575061ffff821660a7145b80610526575061ffff821660ac1480610526575061ffff821660ad145b80610546575060c061ffff831610801590610546575060c461ffff831611155b80610566575060bc61ffff831610801590610566575060bf61ffff831611155b1561057d57506002546001600160a01b03166105e0565b61801061ffff831610801590610599575061801361ffff831611155b806105bb575061802061ffff8316108015906105bb575061802261ffff831611155b156105d257506003546001600160a01b03166105e0565b506000546001600160a01b03165b806001600160a01b031663da78e7d18e8989888f8f6040518763ffffffff1660e01b815260040161061696959493929190611a8b565b60006040518083038186803b15801561062e57600080fd5b505afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190612042565b909750955061067a858488610be0565b6101008801526106898761086b565b9750505050505050505b95945050505050565b6106a46116f7565b816000806106b3878785610d3e565b9350905060ff81166106c85760009150610745565b8060ff16600114156106dd5760019150610745565b8060ff16600214156106f25760029150610745565b8060ff16600314156107075760039150610745565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610176565b5061074e6117ba565b6107566117ba565b60008060008061077760408051808201909152606081526000602082015290565b60006107848e8e8c610d74565b9a5097506107938e8e8c610d74565b9a5096506107a28e8e8c610e73565b9a5091506107b18e8e8c610f9b565b9a5095506107c08e8e8c610fb7565b9a5094506107cf8e8e8c610fb7565b9a5093506107de8e8e8c610fb7565b9a5092506107ed8e8e8c610f9b565b809b5081925050506040518061012001604052808a600381111561081357610813611896565b81526020018981526020018881526020018381526020018781526020018663ffffffff1681526020018563ffffffff1681526020018463ffffffff168152602001828152509a50505050505050505050935093915050565b6000808251600381111561088157610881611896565b141561095057610894826020015161101b565b6108a1836040015161101b565b6108ae84606001516110a0565b608085015160a086015160c087015160e0808901516101008a01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088019590955260908701939093526001600160e01b031991831b821660b0870152821b811660b486015291901b1660b883015260bc82015260dc015b604051602081830303815290604052805190602001209050919050565b60018251600381111561096557610965611896565b141561099d5760808201516040517026b0b1b434b732903334b734b9b432b21d60791b60208201526031810191909152605101610933565b6002825160038111156109b2576109b2611896565b14156109dc576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610933565b6003825160038111156109f1576109f1611896565b1415610a1b576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610933565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610176565b919050565b610a62611769565b604080516060810182526000808252602082018190529181018290528391906000806000610a918a8a88610f9b565b96509450610aa08a8a88611139565b96509350610aaf8a8a88610f9b565b96509250610abe8a8a88610f9b565b96509150610acd8a8a88610fb7565b6040805160a08101825297885260208801969096529486019390935250606084015263ffffffff16608083015290969095509350505050565b604080516020810190915260608152816000610b23868684610d3e565b92509050600060ff82166001600160401b03811115610b4457610b44611c19565b604051908082528060200260200182016040528015610b6d578160200160208202803683370190505b50905060005b8260ff168160ff161015610bc457610b8c888886610f9b565b838360ff1681518110610ba157610ba1612164565b602002602001018196508281525050508080610bbc9061217a565b915050610b73565b5060405180602001604052808281525093505050935093915050565b6000610c218484610bf0856111b4565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b815250611221565b949350505050565b604080518082019091526000808252602082015281600080610c4c8787856112f3565b93509150610c5b87878561134c565b6040805180820190915261ffff90941684526020840191909152919791965090945050505050565b6000610c218484610c93856113a1565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b815250611221565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061069385858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b815250611221565b600081848482818110610d5357610d53612164565b919091013560f81c9250819050610d698161219a565b915050935093915050565b610d7c6117ba565b816000610d8a868684610f9b565b925090506000610d9b87878561134c565b935090506000816001600160401b03811115610db957610db9611c19565b604051908082528060200260200182016040528015610dfe57816020015b6040805180820190915260008082526020820152815260200190600190039081610dd75790505b50905060005b8151811015610e4c57610e188989876113eb565b838381518110610e2a57610e2a612164565b6020026020010181975082905250508080610e449061219a565b915050610e04565b50604080516060810182529081019182529081526020810192909252509590945092505050565b604080518082019091526060815260006020820152816000610e96868684610f9b565b925090506060868684818110610eae57610eae612164565b909101356001600160f81b031916159050610f365782610ecd8161219a565b604080516001808252818301909252919550909150816020015b610eef6117d8565b815260200190600190039081610ee7579050509050610f0f8787856114e7565b82600081518110610f2257610f22612164565b602002602001018195508290525050610f7a565b82610f408161219a565b60408051600080825260208201909252919550909150610f76565b610f636117d8565b815260200190600190039081610f5b5790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181610faa86868461134c565b9097909650945050505050565b600081815b60048110156110125760088363ffffffff16901b9250858583818110610fe457610fe4612164565b919091013560f81c93909317925081610ffc8161219a565b925050808061100a9061219a565b915050610fbc565b50935093915050565b60208101518151515160005b818110156110995783516110449061103f9083611580565b6115b8565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806110919061219a565b915050611027565b5050919050565b602081015160005b825151811015611133576110d8836000015182815181106110cb576110cb612164565b60200260200101516115d5565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061112b9061219a565b9150506110a8565b50919050565b60408051606081018252600080825260208201819052918101919091528160008080611166888886611645565b94509250611175888886611645565b94509150611184888886610f9b565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516111c883602001516116a3565b6040848101516060860151608087015192516626b7b23ab6329d60c91b6020820152602781019590955260478501939093526067840152608783019190915260e01b6001600160e01b03191660a782015260ab01610933565b8160005b8551518110156112ea57600185166112865782828760000151838151811061124f5761124f612164565b6020026020010151604051602001611269939291906121b5565b6040516020818303038152906040528051906020012091506112d1565b828660000151828151811061129d5761129d612164565b6020026020010151836040516020016112b8939291906121b5565b6040516020818303038152906040528051906020012091505b60019490941c93806112e28161219a565b915050611225565b50949350505050565b600081815b60028110156110125760088361ffff16901b925085858381811061131e5761131e612164565b919091013560f81c939093179250816113368161219a565b92505080806113449061219a565b9150506112f8565b600081815b602081101561101257600883901b925085858381811061137357611373612164565b919091013560f81c9390931792508161138b8161219a565b92505080806113999061219a565b915050611351565b6000816000015182602001516040516020016109339291906b24b739ba393ab1ba34b7b71d60a11b815260f09290921b6001600160f01b031916600c830152600e820152602e0190565b604080518082019091526000808252602082015281600085858381811061141457611414612164565b919091013560f81c915082905061142a8161219a565b925050611435600690565b600681111561144657611446611896565b60ff168160ff16111561148c5760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610176565b600061149987878561134c565b809450819250505060405180604001604052808360ff1660068111156114c1576114c1611896565b60068111156114d2576114d2611896565b81526020018281525093505050935093915050565b6114ef6117d8565b8161150a604080518082019091526000808252602082015290565b600080600061151a8989876113eb565b95509350611529898987610f9b565b95509250611538898987610fb7565b95509150611547898987610fb7565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b604080518082019091526000808252602082015282518051839081106115a8576115a8612164565b6020026020010151905092915050565b6000816000015182602001516040516020016109339291906121fb565b60006115e482600001516115b8565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610933565b600081815b6008811015611012576008836001600160401b0316901b925085858381811061167557611675612164565b919091013560f81c9390931792508161168d8161219a565b925050808061169b9061219a565b91505061164a565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610933565b60408051610120810190915280600081526020016117136117ba565b81526020016117206117ba565b815260200161174060408051808201909152606081526000602082015290565b815260006020820181905260408201819052606082018190526080820181905260a09091015290565b6040805160a08101909152600081526020810161179f604080516060810182526000808252602082018190529181019190915290565b81526000602082018190526040820181905260609091015290565b60408051606080820183529181019182529081526000602082015290565b6040805160c0810190915260006080820181815260a0830191909152819061179f565b600080600080600085870360a081121561181457600080fd5b604081121561182257600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561184e57600080fd5b818801915088601f83011261186257600080fd5b81358181111561187157600080fd5b89602082850101111561188357600080fd5b9699959850939650602001949392505050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156118d5576118d56118ac565b500190565b600080858511156118ea57600080fd5b838611156118f757600080fd5b5050820193919092039150565b600063ffffffff808316818516808303821115611923576119236118ac565b01949350505050565b600061ffff808316818516808303821115611923576119236118ac565b6004811061195957611959611896565b9052565b80516007811061196f5761196f611896565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b808410156119cc576119b882865161195d565b9382019360019390930192908501906119a5565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b82811015611a4b578451611a1785825161195d565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a090930192600101611a02565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101a060208901356001600160a01b038116808214611aaf57600080fd5b8060208601525050806040840152611aca8184018951611949565b5060208701516101206101c0840152611ae76102c084018261197c565b9050604088015161019f1980858403016101e0860152611b07838361197c565b925060608a01519150808584030161020086015250611b2682826119e0565b915050608088015161022084015260a0880151611b4c61024085018263ffffffff169052565b5060c088015163ffffffff81166102608501525060e088015163ffffffff8116610280850152506101008801516102a0840152611be160608401888051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a083015263ffffffff60808201511660c08301525050565b855161ffff166101408401526020860151610160840152828103610180840152611c0c818587611a62565b9998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611c5157611c51611c19565b60405290565b604051602081016001600160401b0381118282101715611c5157611c51611c19565b604051608081016001600160401b0381118282101715611c5157611c51611c19565b60405160a081016001600160401b0381118282101715611c5157611c51611c19565b604051606081016001600160401b0381118282101715611c5157611c51611c19565b60405161012081016001600160401b0381118282101715611c5157611c51611c19565b604051601f8201601f191681016001600160401b0381118282101715611d2a57611d2a611c19565b604052919050565b805160048110610a5557600080fd5b60006001600160401b03821115611d5a57611d5a611c19565b5060051b60200190565b600060408284031215611d7657600080fd5b611d7e611c2f565b9050815160078110611d8f57600080fd5b808252506020820151602082015292915050565b60006040808385031215611db657600080fd5b611dbe611c2f565b915082516001600160401b0380821115611dd757600080fd5b81850191506020808388031215611ded57600080fd5b611df5611c57565b835183811115611e0457600080fd5b80850194505087601f850112611e1957600080fd5b83519250611e2e611e2984611d41565b611d02565b83815260069390931b84018201928281019089851115611e4d57600080fd5b948301945b84861015611e7357611e648a87611d64565b82529486019490830190611e52565b8252508552948501519484019490945250909392505050565b805163ffffffff81168114610a5557600080fd5b60006040808385031215611eb357600080fd5b611ebb611c2f565b915082516001600160401b03811115611ed357600080fd5b8301601f81018513611ee457600080fd5b80516020611ef4611e2983611d41565b82815260a09283028401820192828201919089851115611f1357600080fd5b948301945b84861015611f7c5780868b031215611f305760008081fd5b611f38611c79565b611f428b88611d64565b815287870151858201526060611f59818901611e8c565b89830152611f6960808901611e8c565b9082015283529485019491830191611f18565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610a5557600080fd5b600081830360e0811215611fbe57600080fd5b611fc6611c9b565b8351815291506060601f1982011215611fde57600080fd5b50611fe7611cbd565b611ff360208401611f94565b815261200160408401611f94565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015261203760c08301611e8c565b608082015292915050565b60008061010080848603121561205757600080fd5b83516001600160401b038082111561206e57600080fd5b90850190610120828803121561208357600080fd5b61208b611cdf565b61209483611d32565b81526020830151828111156120a857600080fd5b6120b489828601611da3565b6020830152506040830151828111156120cc57600080fd5b6120d889828601611da3565b6040830152506060830151828111156120f057600080fd5b6120fc89828601611ea0565b6060830152506080830151608082015261211860a08401611e8c565b60a082015261212960c08401611e8c565b60c082015261213a60e08401611e8c565b60e082015283830151848201528095505050505061215b8460208501611fab565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612191576121916118ac565b60010192915050565b60006000198214156121ae576121ae6118ac565b5060010190565b6000845160005b818110156121d657602081880181015185830152016121bc565b818111156121e5576000828501525b5091909101928352506020820152604001919050565b652b30b63ab29d60d11b815260006007841061221957612219611896565b5060f89290921b600683015260078201526027019056fea2646970667358221220700823cc910eeee191650902368f52a36b4136c62bc727da6ef5233ea8d9d43e64736f6c63430008090033",
179
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162002f2f38038062002f2f8339810160408190526200003491620000a5565b600080546001600160a01b039586166001600160a01b031991821617909155600180549486169482169490941790935560028054928516928416929092179091556003805491909316911617905562000102565b80516001600160a01b0381168114620000a057600080fd5b919050565b60008060008060808587031215620000bc57600080fd5b620000c78562000088565b9350620000d76020860162000088565b9250620000e76040860162000088565b9150620000f76060860162000088565b905092959194509250565b612e1d80620001126000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c806304997be4146100725780631f128bc01461009857806330a5509f146100c35780635d3adcfb146100d65780635f52fd7c146100e957806366e5d9c3146100fc578063d8558b871461010f575b600080fd5b6100856100803660046121c8565b610122565b6040519081526020015b60405180910390f35b6001546100ab906001600160a01b031681565b6040516001600160a01b03909116815260200161008f565b6000546100ab906001600160a01b031681565b6100856100e43660046121ea565b6102c8565b6003546100ab906001600160a01b031681565b6002546100ab906001600160a01b031681565b61008561011d366004612295565b61095a565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161013d57505060408051808201825260008082526020918201819052825180840190935260048352908201529091508160008151811061019f5761019f6122d7565b60200260200101819052506101b46000610a5b565b816001815181106101c7576101c76122d7565b60200260200101819052506101dc6000610a5b565b816002815181106101ef576101ef6122d7565b6020908102919091018101919091526040805180830182528381528151808301909252808252600092820192909252610226612067565b604080518082018252606080825260006020808401829052845180860186528082018390526000198082528651610180810188528481529283018990529582018190529281018690526080810184905260a0810183905260c081018c905260e081018290526101008101829052610120810191909152610140810193909352610160830189905290916102b881610a8e565b9750505050505050505b92915050565b60006102d2612085565b6102da61213c565b6040805160208101909152606081526040805180820190915260008082526020820152600061030a888883610ccc565b90955090508861031986610a8e565b146103615760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b600085516003811115610376576103766122ed565b146103905761038485610a8e565b95505050505050610951565b650800000000006103a28b6001612319565b14156103b5576002855261038485610a8e565b6103c0888883610f28565b90945090506103d0888883610fec565b80925081945050508461016001516103fd8660e0015163ffffffff1686866110c69092919063ffffffff16565b146104395760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610358565b60606104516040518060200160405280606081525090565b60408051602081019091526060815261046b8b8b86611111565b9450925061047a8b8b86610fec565b945091506104898b8b86610fec565b809550819250505060006104bf60408a61012001516104a89190612347565b63ffffffff1685856112109092919063ffffffff16565b905060006104e38a610100015163ffffffff1683856112569092919063ffffffff16565b90508860600151811461052d5760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610358565b8460408b6101200151610540919061236a565b63ffffffff1681518110610556576105566122d7565b6020026020010151965050505050508787829080926105779392919061238d565b975097505060008460e0015163ffffffff1690506001856101200181815161059f91906123b7565b63ffffffff1690525081516000602861ffff8316108015906105c65750603561ffff831611155b806105e65750603661ffff8316108015906105e65750603e61ffff831611155b806105f5575061ffff8216603f145b80610604575061ffff82166040145b1561061b57506001546001600160a01b0316610832565b61ffff821660451480610632575061ffff82166050145b806106605750604661ffff8316108015906106605750610654600960466123df565b61ffff168261ffff1611155b8061068e5750606761ffff83161080159061068e5750610682600260676123df565b61ffff168261ffff1611155b806106ae5750606a61ffff8316108015906106ae5750607861ffff831611155b806106dc5750605161ffff8316108015906106dc57506106d0600960516123df565b61ffff168261ffff1611155b8061070a5750607961ffff83161080159061070a57506106fe600260796123df565b61ffff168261ffff1611155b8061072a5750607c61ffff83161080159061072a5750608a61ffff831611155b80610739575061ffff821660a7145b80610756575061ffff821660ac1480610756575061ffff821660ad145b80610776575060c061ffff831610801590610776575060c461ffff831611155b80610796575060bc61ffff831610801590610796575060bf61ffff831611155b156107ad57506002546001600160a01b0316610832565b61801061ffff8316108015906107c9575061801361ffff831611155b806107eb575061802061ffff8316108015906107eb575061802461ffff831611155b8061080d575061803061ffff83161080159061080d575061803261ffff831611155b1561082457506003546001600160a01b0316610832565b506000546001600160a01b03165b806001600160a01b0316633604366f8e8989888f8f6040518763ffffffff1660e01b81526004016108689695949392919061253e565b60006040518083038186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190612b67565b9097509550600061ffff831661802314806108dc575061ffff8316618024145b15905080156108f7576108f08685896110c6565b6101608901525b60028851600381111561090c5761090c6122ed565b148015610920575061014088015160001914155b1561093d5761092e886112cb565b6109378861134f565b50600088525b61094688610a8e565b985050505050505050505b95945050505050565b60006001836003811115610970576109706122ed565b14156109a457816040516020016109879190612cc1565b6040516020818303038152906040528051906020012090506102c2565b60028360038111156109b8576109b86122ed565b14156109e2576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610987565b60038360038111156109f6576109f66122ed565b1415610a20576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610987565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610358565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b60008082516003811115610aa457610aa46122ed565b1415610bc2576000610ad3610abc846020015161137f565b610140850151604086015191906000191415611404565b90506000610afe610ae785608001516114f7565b61014086015160a087015191906000191415611404565b9050600082610b10866060015161137f565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088018a905260908801959095526001600160e01b031992841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516003811115610bd757610bd76122ed565b1415610c0f578160c00151604051602001610bf29190612cc1565b604051602081830303815290604052805190602001209050919050565b600282516003811115610c2457610c246122ed565b1415610c4e576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610bf2565b600382516003811115610c6357610c636122ed565b1415610c8d576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610bf2565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610358565b919050565b610cd4612085565b81600080610ce3878785611590565b9350905060ff8116610cf85760009150610d75565b8060ff1660011415610d0d5760019150610d75565b8060ff1660021415610d225760029150610d75565b8060ff1660031415610d375760039150610d75565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610358565b50610d7e612067565b610d86612067565b60408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610dce8b8b896115c6565b97509450610ddd8b8b896116c5565b97509250610dec8b8b896115c6565b97509350610dfb8b8b8961171b565b97509150610e0a8b8b896116c5565b8098508192505050604051806101800160405280876003811115610e3057610e306122ed565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e08301819052610100830181905261012083018190526101408301819052610160909201919091529250610e989050858583611843565b60c08401919091529050610ead85858361185f565b63ffffffff90911660e08401529050610ec785858361185f565b63ffffffff9091166101008401529050610ee285858361185f565b63ffffffff9091166101208401529050610efd858583611843565b6101408401919091529050610f13858583611843565b61016084019190915291959194509092505050565b610f3061213c565b60408051606081018252600080825260208201819052918101829052839190600080600080610f608b8b89611843565b97509550610f6f8b8b896118c3565b97509450610f7e8b8b89611843565b97509350610f8d8b8b89611843565b97509250610f9c8b8b89611843565b97509150610fab8b8b8961185f565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b604080516020810190915260608152816000611009868684611590565b92509050600060ff82166001600160401b0381111561102a5761102a6122c1565b604051908082528060200260200182016040528015611053578160200160208202803683370190505b50905060005b8260ff168160ff1610156110aa57611072888886611843565b838360ff1681518110611087576110876122d7565b6020026020010181965082815250505080806110a290612ce6565b915050611059565b5060405180602001604052808281525093505050935093915050565b600061110784846110d68561193e565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b8152506119ba565b90505b9392505050565b6060816000611121868684611590565b9250905060ff81166001600160401b03811115611140576111406122c1565b60405190808252806020026020018201604052801561118557816020015b604080518082019091526000808252602082015281526020019060019003908161115e5790505b50925060005b8160ff16811015611206576000806111a4898987611acc565b955091506111b3898987611b25565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106111e6576111e66122d7565b6020026020010181905250505080806111fe90612d06565b91505061118b565b5050935093915050565b6000611107848461122085611b7a565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b8152506119ba565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061095185858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b8152506119ba565b60408101515160a0820151516000198114806112e8575060001982145b156112f557505060029052565b61130283608001516114f7565b60a08401515260208301516113169061137f565b60408401515260808301516113319082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006113638283610140015160001c611d19565b61136f57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156113fd5783516113a8906113a39083611d5b565b611d93565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806113f590612d06565b91505061138b565b5050919050565b60006000198314156114545760405162461bcd60e51b81526020600482015260196024820152784d554c5449535441434b5f4e4f535441434b5f41435449564560381b6044820152606401610358565b81156114dd57835160001914156114a75760405162461bcd60e51b815260206004820152601760248201527626aaa62a24a9aa20a1a5afa727a9aa20a1a5afa6a0a4a760491b6044820152606401610358565b83516020808601516040516114c0939287929101612d21565b60405160208183030381529060405280519060200120905061110a565b83516020808601516040516114c093879390929101612d21565b602081015160005b82515181101561158a5761152f83600001518281518110611522576115226122d7565b6020026020010151611db0565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061158290612d06565b9150506114ff565b50919050565b6000818484828181106115a5576115a56122d7565b919091013560f81c92508190506115bb81612d06565b915050935093915050565b6115ce612067565b8160006115dc868684611843565b9250905060006115ed878785611b25565b935090506000816001600160401b0381111561160b5761160b6122c1565b60405190808252806020026020018201604052801561165057816020015b60408051808201909152600080825260208201528152602001906001900390816116295790505b50905060005b815181101561169e5761166a898987611e20565b83838151811061167c5761167c6122d7565b602002602001018197508290525050808061169690612d06565b915050611656565b50604080516060810182529081019182529081526020810192909252509590945092505050565b60408051808201909152600080825260208201528160006116e7868684611843565b9250905060006116f8878785611843565b604080518082019091529384526020840191909152919791965090945050505050565b60408051808201909152606081526000602082015281600061173e868684611843565b925090506060868684818110611756576117566122d7565b909101356001600160f81b0319161590506117de578261177581612d06565b604080516001808252818301909252919550909150816020015b611797612194565b81526020019060019003908161178f5790505090506117b7878785611f1c565b826000815181106117ca576117ca6122d7565b602002602001018195508290525050611822565b826117e881612d06565b6040805160008082526020820190925291955090915061181e565b61180b612194565b8152602001906001900390816118035790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611852868684611b25565b9097909650945050505050565b600081815b60048110156118ba5760088363ffffffff16901b925085858381811061188c5761188c6122d7565b919091013560f81c939093179250816118a481612d06565b92505080806118b290612d06565b915050611864565b50935093915050565b604080516060810182526000808252602082018190529181019190915281600080806118f0888886611fb5565b945092506118ff888886611fb5565b9450915061190e888886611843565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516119528360200151612013565b6040808501516060860151608087015160a08801519351610bf2969594906020016626b7b23ab6329d60c91b81526007810196909652602786019490945260478501929092526067840152608783015260e01b6001600160e01b03191660a782015260ab0190565b8160005b855151811015611a835760018516611a1f578282876000015183815181106119e8576119e86122d7565b6020026020010151604051602001611a0293929190612d4d565b604051602081830303815290604052805190602001209150611a6a565b8286600001518281518110611a3657611a366122d7565b602002602001015183604051602001611a5193929190612d4d565b6040516020818303038152906040528051906020012091505b60019490941c9380611a7b81612d06565b9150506119be565b508315611ac45760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610358565b949350505050565b600081815b60028110156118ba5760088361ffff16901b9250858583818110611af757611af76122d7565b919091013560f81c93909317925081611b0f81612d06565b9250508080611b1d90612d06565b915050611ad1565b600081815b60208110156118ba57600883901b9250858583818110611b4c57611b4c6122d7565b919091013560f81c93909317925081611b6481612d06565b9250508080611b7290612d06565b915050611b2a565b60008082516022611b8b9190612d93565b611b9690600e612319565b6001600160401b03811115611bad57611bad6122c1565b6040519080825280601f01601f191660200182016040528015611bd7576020820181803683370190505b5090506c24b739ba393ab1ba34b7b7399d60991b60208201526000600d9050835160f81b828281518110611c0d57611c0d6122d7565b60200101906001600160f81b031916908160001a90535080611c2e81612d06565b91505060005b8451811015611d09576000858281518110611c5157611c516122d7565b602002602001015190506008816000015161ffff16901c60f81b848481518110611c7d57611c7d6122d7565b60200101906001600160f81b031916908160001a905350805160f81b84611ca5856001612319565b81518110611cb557611cb56122d7565b60200101906001600160f81b031916908160001a905350611cd7600284612319565b6020808301518683018201819052919450611cf29085612319565b935050508080611d0190612d06565b915050611c34565b5050805160209091012092915050565b6000606082901c15611d2d575060006102c2565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b60408051808201909152600080825260208201528251805183908110611d8357611d836122d7565b6020026020010151905092915050565b600081600001518260200151604051602001610bf2929190612db2565b6000611dbf8260000151611d93565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610bf2565b6040805180820190915260008082526020820152816000858583818110611e4957611e496122d7565b919091013560f81c9150829050611e5f81612d06565b925050611e6a600690565b6006811115611e7b57611e7b6122ed565b60ff168160ff161115611ec15760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610358565b6000611ece878785611b25565b809450819250505060405180604001604052808360ff166006811115611ef657611ef66122ed565b6006811115611f0757611f076122ed565b81526020018281525093505050935093915050565b611f24612194565b81611f3f604080518082019091526000808252602082015290565b6000806000611f4f898987611e20565b95509350611f5e898987611843565b95509250611f6d89898761185f565b95509150611f7c89898761185f565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b600081815b60088110156118ba576008836001600160401b0316901b9250858583818110611fe557611fe56122d7565b919091013560f81c93909317925081611ffd81612d06565b925050808061200b90612d06565b915050611fba565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610bf2565b60408051606080820183529181019182529081526000602082015290565b60408051610180810190915280600081526020016120a1612067565b81526020016120c0604080518082019091526000808252602082015290565b81526020016120cd612067565b81526020016120ed60408051808201909152606081526000602082015290565b815260200161210c604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6040805160c081019091526000815260208101612172604080516060810182526000808252602082018190529181019190915290565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160c08101825260006080820181815260a08301829052825260208201819052918101829052606081019190915290565b600080604083850312156121db57600080fd5b50508035926020909101359150565b600080600080600085870360a081121561220357600080fd5b604081121561221157600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561223d57600080fd5b818801915088601f83011261225157600080fd5b81358181111561226057600080fd5b89602082850101111561227257600080fd5b9699959850939650602001949392505050565b6004811061229257600080fd5b50565b600080604083850312156122a857600080fd5b82356122b381612285565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232c5761232c612303565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061235e5761235e612331565b92169190910492915050565b600063ffffffff8084168061238157612381612331565b92169190910692915050565b6000808585111561239d57600080fd5b838611156123aa57600080fd5b5050820193919092039150565b600063ffffffff8083168185168083038211156123d6576123d6612303565b01949350505050565b600061ffff8083168185168083038211156123d6576123d6612303565b6004811061240c5761240c6122ed565b9052565b805160078110612422576124226122ed565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b8084101561247f5761246b828651612410565b938201936001939093019290850190612458565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b828110156124fe5784516124ca858251612410565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016124b5565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101c060208901356001600160a01b03811680821461256257600080fd5b806020860152505080604084015261257d81840189516123fc565b6020880151816101e085015261259761038085018261242f565b91505060408801516125b761020085018280518252602090810151910152565b5060608801516101bf1980858403016102408601526125d6838361242f565b925060808a015191508085840301610260860152506125f58282612493565b91505060a088015161261561028085018280518252602090810151910152565b5060c08801516102c084015260e088015163ffffffff81166102e08501525061010088015163ffffffff81166103008501525061012088015163ffffffff811661032085015250610140880151610340840152610160808901516103608501526126e160608501898051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b6126fb81850188805161ffff168252602090810151910152565b508281036101a0840152612710818587612515565b9998505050505050505050565b604080519081016001600160401b038111828210171561273f5761273f6122c1565b60405290565b604051602081016001600160401b038111828210171561273f5761273f6122c1565b604051608081016001600160401b038111828210171561273f5761273f6122c1565b60405160c081016001600160401b038111828210171561273f5761273f6122c1565b604051606081016001600160401b038111828210171561273f5761273f6122c1565b60405161018081016001600160401b038111828210171561273f5761273f6122c1565b604051601f8201601f191681016001600160401b0381118282101715612818576128186122c1565b604052919050565b8051610cc781612285565b60006001600160401b03821115612844576128446122c1565b5060051b60200190565b60006040828403121561286057600080fd5b61286861271d565b905081516007811061287957600080fd5b808252506020820151602082015292915050565b600060408083850312156128a057600080fd5b6128a861271d565b915082516001600160401b03808211156128c157600080fd5b818501915060208083880312156128d757600080fd5b6128df612745565b8351838111156128ee57600080fd5b80850194505087601f85011261290357600080fd5b835192506129186129138461282b565b6127f0565b83815260069390931b8401820192828101908985111561293757600080fd5b948301945b8486101561295d5761294e8a8761284e565b8252948601949083019061293c565b8252508552948501519484019490945250909392505050565b60006040828403121561298857600080fd5b61299061271d565b9050815181526020820151602082015292915050565b805163ffffffff81168114610cc757600080fd5b600060408083850312156129cd57600080fd5b6129d561271d565b915082516001600160401b038111156129ed57600080fd5b8301601f810185136129fe57600080fd5b80516020612a0e6129138361282b565b82815260a09283028401820192828201919089851115612a2d57600080fd5b948301945b84861015612a965780868b031215612a4a5760008081fd5b612a52612767565b612a5c8b8861284e565b815287870151858201526060612a738189016129a6565b89830152612a83608089016129a6565b9082015283529485019491830191612a32565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610cc757600080fd5b6000818303610100811215612ad957600080fd5b612ae1612789565b8351815291506060601f1982011215612af957600080fd5b50612b026127ab565b612b0e60208401612aae565b8152612b1c60408401612aae565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015260c08201516080820152612b5c60e083016129a6565b60a082015292915050565b600080610120808486031215612b7c57600080fd5b83516001600160401b0380821115612b9357600080fd5b908501906101c08288031215612ba857600080fd5b612bb06127cd565b612bb983612820565b8152602083015182811115612bcd57600080fd5b612bd98982860161288d565b602083015250612bec8860408501612976565b6040820152608083015182811115612c0357600080fd5b612c0f8982860161288d565b60608301525060a083015182811115612c2757600080fd5b612c33898286016129ba565b608083015250612c468860c08501612976565b60a082015261010091508183015160c0820152612c648484016129a6565b60e0820152610140612c778185016129a6565b838301526101609250612c8b8385016129a6565b8583015261018084015181830152506101a08301518282015280955050505050612cb88460208501612ac5565b90509250929050565b7026b0b1b434b732903334b734b9b432b21d60791b8152601181019190915260310190565b600060ff821660ff811415612cfd57612cfd612303565b60010192915050565b6000600019821415612d1a57612d1a612303565b5060010190565b6a36bab63a34b9ba30b1b59d60a91b8152600b810193909352602b830191909152604b820152606b0190565b6000845160005b81811015612d6e5760208188018101518583015201612d54565b81811115612d7d576000828501525b5091909101928352506020820152604001919050565b6000816000190483118215151615612dad57612dad612303565b500290565b652b30b63ab29d60d11b8152600060078410612dd057612dd06122ed565b5060f89290921b600683015260078201526027019056fea26469706673582212206630cc3ca936424a379d3ba5328e6633b67f26f2f4c58f0334dbe3c122002ad364736f6c63430008090033",
180
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061006d5760003560e01c806304997be4146100725780631f128bc01461009857806330a5509f146100c35780635d3adcfb146100d65780635f52fd7c146100e957806366e5d9c3146100fc578063d8558b871461010f575b600080fd5b6100856100803660046121c8565b610122565b6040519081526020015b60405180910390f35b6001546100ab906001600160a01b031681565b6040516001600160a01b03909116815260200161008f565b6000546100ab906001600160a01b031681565b6100856100e43660046121ea565b6102c8565b6003546100ab906001600160a01b031681565b6002546100ab906001600160a01b031681565b61008561011d366004612295565b61095a565b60408051600380825260808201909252600091829190816020015b604080518082019091526000808252602082015281526020019060019003908161013d57505060408051808201825260008082526020918201819052825180840190935260048352908201529091508160008151811061019f5761019f6122d7565b60200260200101819052506101b46000610a5b565b816001815181106101c7576101c76122d7565b60200260200101819052506101dc6000610a5b565b816002815181106101ef576101ef6122d7565b6020908102919091018101919091526040805180830182528381528151808301909252808252600092820192909252610226612067565b604080518082018252606080825260006020808401829052845180860186528082018390526000198082528651610180810188528481529283018990529582018190529281018690526080810184905260a0810183905260c081018c905260e081018290526101008101829052610120810191909152610140810193909352610160830189905290916102b881610a8e565b9750505050505050505b92915050565b60006102d2612085565b6102da61213c565b6040805160208101909152606081526040805180820190915260008082526020820152600061030a888883610ccc565b90955090508861031986610a8e565b146103615760405162461bcd60e51b815260206004820152601360248201527209a828690929c8abe848a8c9ea48abe9082a69606b1b60448201526064015b60405180910390fd5b600085516003811115610376576103766122ed565b146103905761038485610a8e565b95505050505050610951565b650800000000006103a28b6001612319565b14156103b5576002855261038485610a8e565b6103c0888883610f28565b90945090506103d0888883610fec565b80925081945050508461016001516103fd8660e0015163ffffffff1686866110c69092919063ffffffff16565b146104395760405162461bcd60e51b815260206004820152600c60248201526b1353d115531154d7d493d3d560a21b6044820152606401610358565b60606104516040518060200160405280606081525090565b60408051602081019091526060815261046b8b8b86611111565b9450925061047a8b8b86610fec565b945091506104898b8b86610fec565b809550819250505060006104bf60408a61012001516104a89190612347565b63ffffffff1685856112109092919063ffffffff16565b905060006104e38a610100015163ffffffff1683856112569092919063ffffffff16565b90508860600151811461052d5760405162461bcd60e51b815260206004820152601260248201527110905117d1955390d51253d394d7d493d3d560721b6044820152606401610358565b8460408b6101200151610540919061236a565b63ffffffff1681518110610556576105566122d7565b6020026020010151965050505050508787829080926105779392919061238d565b975097505060008460e0015163ffffffff1690506001856101200181815161059f91906123b7565b63ffffffff1690525081516000602861ffff8316108015906105c65750603561ffff831611155b806105e65750603661ffff8316108015906105e65750603e61ffff831611155b806105f5575061ffff8216603f145b80610604575061ffff82166040145b1561061b57506001546001600160a01b0316610832565b61ffff821660451480610632575061ffff82166050145b806106605750604661ffff8316108015906106605750610654600960466123df565b61ffff168261ffff1611155b8061068e5750606761ffff83161080159061068e5750610682600260676123df565b61ffff168261ffff1611155b806106ae5750606a61ffff8316108015906106ae5750607861ffff831611155b806106dc5750605161ffff8316108015906106dc57506106d0600960516123df565b61ffff168261ffff1611155b8061070a5750607961ffff83161080159061070a57506106fe600260796123df565b61ffff168261ffff1611155b8061072a5750607c61ffff83161080159061072a5750608a61ffff831611155b80610739575061ffff821660a7145b80610756575061ffff821660ac1480610756575061ffff821660ad145b80610776575060c061ffff831610801590610776575060c461ffff831611155b80610796575060bc61ffff831610801590610796575060bf61ffff831611155b156107ad57506002546001600160a01b0316610832565b61801061ffff8316108015906107c9575061801361ffff831611155b806107eb575061802061ffff8316108015906107eb575061802461ffff831611155b8061080d575061803061ffff83161080159061080d575061803261ffff831611155b1561082457506003546001600160a01b0316610832565b506000546001600160a01b03165b806001600160a01b0316633604366f8e8989888f8f6040518763ffffffff1660e01b81526004016108689695949392919061253e565b60006040518083038186803b15801561088057600080fd5b505afa158015610894573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190612b67565b9097509550600061ffff831661802314806108dc575061ffff8316618024145b15905080156108f7576108f08685896110c6565b6101608901525b60028851600381111561090c5761090c6122ed565b148015610920575061014088015160001914155b1561093d5761092e886112cb565b6109378861134f565b50600088525b61094688610a8e565b985050505050505050505b95945050505050565b60006001836003811115610970576109706122ed565b14156109a457816040516020016109879190612cc1565b6040516020818303038152906040528051906020012090506102c2565b60028360038111156109b8576109b86122ed565b14156109e2576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610987565b60038360038111156109f6576109f66122ed565b1415610a20576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610987565b60405162461bcd60e51b815260206004820152601060248201526f4241445f424c4f434b5f53544154555360801b6044820152606401610358565b604080518082019091526000808252602082015250604080518082019091526000815263ffffffff909116602082015290565b60008082516003811115610aa457610aa46122ed565b1415610bc2576000610ad3610abc846020015161137f565b610140850151604086015191906000191415611404565b90506000610afe610ae785608001516114f7565b61014086015160a087015191906000191415611404565b9050600082610b10866060015161137f565b60c087015160e0808901516101008a01516101208b01516101408c01516101608d01516040516f26b0b1b434b73290393ab73734b7339d60811b602082015260308101999099526050890197909752607088018a905260908801959095526001600160e01b031992841b831660b088015290831b821660b487015290911b1660b884015260bc83015260dc82015260fc0160408051601f19818403018152919052805160209091012095945050505050565b600182516003811115610bd757610bd76122ed565b1415610c0f578160c00151604051602001610bf29190612cc1565b604051602081830303815290604052805190602001209050919050565b600282516003811115610c2457610c246122ed565b1415610c4e576040516f26b0b1b434b7329032b93937b932b21d60811b6020820152603001610bf2565b600382516003811115610c6357610c636122ed565b1415610c8d576040516f26b0b1b434b732903a37b7903330b91d60811b6020820152603001610bf2565b60405162461bcd60e51b815260206004820152600f60248201526e4241445f4d4143485f53544154555360881b6044820152606401610358565b919050565b610cd4612085565b81600080610ce3878785611590565b9350905060ff8116610cf85760009150610d75565b8060ff1660011415610d0d5760019150610d75565b8060ff1660021415610d225760029150610d75565b8060ff1660031415610d375760039150610d75565b60405162461bcd60e51b8152602060048201526013602482015272554e4b4e4f574e5f4d4143485f53544154555360681b6044820152606401610358565b50610d7e612067565b610d86612067565b60408051808201909152600080825260208201526040805180820190915260608152600060208201526040805180820190915260008082526020820152610dce8b8b896115c6565b97509450610ddd8b8b896116c5565b97509250610dec8b8b896115c6565b97509350610dfb8b8b8961171b565b97509150610e0a8b8b896116c5565b8098508192505050604051806101800160405280876003811115610e3057610e306122ed565b8152602081019690965260408601939093526060850193909352608084015260a0830191909152600060c0830181905260e08301819052610100830181905261012083018190526101408301819052610160909201919091529250610e989050858583611843565b60c08401919091529050610ead85858361185f565b63ffffffff90911660e08401529050610ec785858361185f565b63ffffffff9091166101008401529050610ee285858361185f565b63ffffffff9091166101208401529050610efd858583611843565b6101408401919091529050610f13858583611843565b61016084019190915291959194509092505050565b610f3061213c565b60408051606081018252600080825260208201819052918101829052839190600080600080610f608b8b89611843565b97509550610f6f8b8b896118c3565b97509450610f7e8b8b89611843565b97509350610f8d8b8b89611843565b97509250610f9c8b8b89611843565b97509150610fab8b8b8961185f565b6040805160c081018252988952602089019790975295870194909452506060850191909152608084015263ffffffff1660a083015290969095509350505050565b604080516020810190915260608152816000611009868684611590565b92509050600060ff82166001600160401b0381111561102a5761102a6122c1565b604051908082528060200260200182016040528015611053578160200160208202803683370190505b50905060005b8260ff168160ff1610156110aa57611072888886611843565b838360ff1681518110611087576110876122d7565b6020026020010181965082815250505080806110a290612ce6565b915050611059565b5060405180602001604052808281525093505050935093915050565b600061110784846110d68561193e565b6040518060400160405280601381526020017226b7b23ab6329036b2b935b632903a3932b29d60691b8152506119ba565b90505b9392505050565b6060816000611121868684611590565b9250905060ff81166001600160401b03811115611140576111406122c1565b60405190808252806020026020018201604052801561118557816020015b604080518082019091526000808252602082015281526020019060019003908161115e5790505b50925060005b8160ff16811015611206576000806111a4898987611acc565b955091506111b3898987611b25565b809650819250505060405180604001604052808361ffff168152602001828152508684815181106111e6576111e66122d7565b6020026020010181905250505080806111fe90612d06565b91505061118b565b5050935093915050565b6000611107848461122085611b7a565b6040518060400160405280601881526020017724b739ba393ab1ba34b7b71036b2b935b632903a3932b29d60411b8152506119ba565b60405168233ab731ba34b7b71d60b91b602082015260298101829052600090819060490160405160208183030381529060405280519060200120905061095185858360405180604001604052806015815260200174233ab731ba34b7b71036b2b935b632903a3932b29d60591b8152506119ba565b60408101515160a0820151516000198114806112e8575060001982145b156112f557505060029052565b61130283608001516114f7565b60a08401515260208301516113169061137f565b60408401515260808301516113319082602082015260609052565b50602091820151808301919091526040805192830190526060825252565b60006113638283610140015160001c611d19565b61136f57506000919050565b5060001961014090910152600190565b60208101518151515160005b818110156113fd5783516113a8906113a39083611d5b565b611d93565b6040516b2b30b63ab29039ba30b1b59d60a11b6020820152602c810191909152604c8101849052606c0160405160208183030381529060405280519060200120925080806113f590612d06565b91505061138b565b5050919050565b60006000198314156114545760405162461bcd60e51b81526020600482015260196024820152784d554c5449535441434b5f4e4f535441434b5f41435449564560381b6044820152606401610358565b81156114dd57835160001914156114a75760405162461bcd60e51b815260206004820152601760248201527626aaa62a24a9aa20a1a5afa727a9aa20a1a5afa6a0a4a760491b6044820152606401610358565b83516020808601516040516114c0939287929101612d21565b60405160208183030381529060405280519060200120905061110a565b83516020808601516040516114c093879390929101612d21565b602081015160005b82515181101561158a5761152f83600001518281518110611522576115226122d7565b6020026020010151611db0565b6040517129ba30b1b590333930b6b29039ba30b1b59d60711b6020820152603281019190915260528101839052607201604051602081830303815290604052805190602001209150808061158290612d06565b9150506114ff565b50919050565b6000818484828181106115a5576115a56122d7565b919091013560f81c92508190506115bb81612d06565b915050935093915050565b6115ce612067565b8160006115dc868684611843565b9250905060006115ed878785611b25565b935090506000816001600160401b0381111561160b5761160b6122c1565b60405190808252806020026020018201604052801561165057816020015b60408051808201909152600080825260208201528152602001906001900390816116295790505b50905060005b815181101561169e5761166a898987611e20565b83838151811061167c5761167c6122d7565b602002602001018197508290525050808061169690612d06565b915050611656565b50604080516060810182529081019182529081526020810192909252509590945092505050565b60408051808201909152600080825260208201528160006116e7868684611843565b9250905060006116f8878785611843565b604080518082019091529384526020840191909152919791965090945050505050565b60408051808201909152606081526000602082015281600061173e868684611843565b925090506060868684818110611756576117566122d7565b909101356001600160f81b0319161590506117de578261177581612d06565b604080516001808252818301909252919550909150816020015b611797612194565b81526020019060019003908161178f5790505090506117b7878785611f1c565b826000815181106117ca576117ca6122d7565b602002602001018195508290525050611822565b826117e881612d06565b6040805160008082526020820190925291955090915061181e565b61180b612194565b8152602001906001900390816118035790505b5090505b60405180604001604052808281526020018381525093505050935093915050565b60008181611852868684611b25565b9097909650945050505050565b600081815b60048110156118ba5760088363ffffffff16901b925085858381811061188c5761188c6122d7565b919091013560f81c939093179250816118a481612d06565b92505080806118b290612d06565b915050611864565b50935093915050565b604080516060810182526000808252602082018190529181019190915281600080806118f0888886611fb5565b945092506118ff888886611fb5565b9450915061190e888886611843565b604080516060810182526001600160401b0396871681529490951660208501529383015250969095509350505050565b600081600001516119528360200151612013565b6040808501516060860151608087015160a08801519351610bf2969594906020016626b7b23ab6329d60c91b81526007810196909652602786019490945260478501929092526067840152608783015260e01b6001600160e01b03191660a782015260ab0190565b8160005b855151811015611a835760018516611a1f578282876000015183815181106119e8576119e86122d7565b6020026020010151604051602001611a0293929190612d4d565b604051602081830303815290604052805190602001209150611a6a565b8286600001518281518110611a3657611a366122d7565b602002602001015183604051602001611a5193929190612d4d565b6040516020818303038152906040528051906020012091505b60019490941c9380611a7b81612d06565b9150506119be565b508315611ac45760405162461bcd60e51b815260206004820152600f60248201526e141493d3d197d513d3d7d4d213d495608a1b6044820152606401610358565b949350505050565b600081815b60028110156118ba5760088361ffff16901b9250858583818110611af757611af76122d7565b919091013560f81c93909317925081611b0f81612d06565b9250508080611b1d90612d06565b915050611ad1565b600081815b60208110156118ba57600883901b9250858583818110611b4c57611b4c6122d7565b919091013560f81c93909317925081611b6481612d06565b9250508080611b7290612d06565b915050611b2a565b60008082516022611b8b9190612d93565b611b9690600e612319565b6001600160401b03811115611bad57611bad6122c1565b6040519080825280601f01601f191660200182016040528015611bd7576020820181803683370190505b5090506c24b739ba393ab1ba34b7b7399d60991b60208201526000600d9050835160f81b828281518110611c0d57611c0d6122d7565b60200101906001600160f81b031916908160001a90535080611c2e81612d06565b91505060005b8451811015611d09576000858281518110611c5157611c516122d7565b602002602001015190506008816000015161ffff16901c60f81b848481518110611c7d57611c7d6122d7565b60200101906001600160f81b031916908160001a905350805160f81b84611ca5856001612319565b81518110611cb557611cb56122d7565b60200101906001600160f81b031916908160001a905350611cd7600284612319565b6020808301518683018201819052919450611cf29085612319565b935050508080611d0190612d06565b915050611c34565b5050805160209091012092915050565b6000606082901c15611d2d575060006102c2565b5063ffffffff818116610120840152602082901c811661010084015260409190911c1660e090910152600190565b60408051808201909152600080825260208201528251805183908110611d8357611d836122d7565b6020026020010151905092915050565b600081600001518260200151604051602001610bf2929190612db2565b6000611dbf8260000151611d93565b602080840151604080860151606087015191516b29ba30b1b590333930b6b29d60a11b94810194909452602c840194909452604c8301919091526001600160e01b031960e093841b8116606c840152921b9091166070820152607401610bf2565b6040805180820190915260008082526020820152816000858583818110611e4957611e496122d7565b919091013560f81c9150829050611e5f81612d06565b925050611e6a600690565b6006811115611e7b57611e7b6122ed565b60ff168160ff161115611ec15760405162461bcd60e51b815260206004820152600e60248201526d4241445f56414c55455f5459504560901b6044820152606401610358565b6000611ece878785611b25565b809450819250505060405180604001604052808360ff166006811115611ef657611ef66122ed565b6006811115611f0757611f076122ed565b81526020018281525093505050935093915050565b611f24612194565b81611f3f604080518082019091526000808252602082015290565b6000806000611f4f898987611e20565b95509350611f5e898987611843565b95509250611f6d89898761185f565b95509150611f7c89898761185f565b60408051608081018252968752602087019590955263ffffffff9384169486019490945290911660608401525090969095509350505050565b600081815b60088110156118ba576008836001600160401b0316901b9250858583818110611fe557611fe56122d7565b919091013560f81c93909317925081611ffd81612d06565b925050808061200b90612d06565b915050611fba565b805160208083015160408085015190516626b2b6b7b93c9d60c91b938101939093526001600160c01b031960c094851b811660278501529190931b16602f8201526037810191909152600090605701610bf2565b60408051606080820183529181019182529081526000602082015290565b60408051610180810190915280600081526020016120a1612067565b81526020016120c0604080518082019091526000808252602082015290565b81526020016120cd612067565b81526020016120ed60408051808201909152606081526000602082015290565b815260200161210c604080518082019091526000808252602082015290565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6040805160c081019091526000815260208101612172604080516060810182526000808252602082018190529181019190915290565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160c08101825260006080820181815260a08301829052825260208201819052918101829052606081019190915290565b600080604083850312156121db57600080fd5b50508035926020909101359150565b600080600080600085870360a081121561220357600080fd5b604081121561221157600080fd5b50859450604086013593506060860135925060808601356001600160401b038082111561223d57600080fd5b818801915088601f83011261225157600080fd5b81358181111561226057600080fd5b89602082850101111561227257600080fd5b9699959850939650602001949392505050565b6004811061229257600080fd5b50565b600080604083850312156122a857600080fd5b82356122b381612285565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561232c5761232c612303565b500190565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061235e5761235e612331565b92169190910492915050565b600063ffffffff8084168061238157612381612331565b92169190910692915050565b6000808585111561239d57600080fd5b838611156123aa57600080fd5b5050820193919092039150565b600063ffffffff8083168185168083038211156123d6576123d6612303565b01949350505050565b600061ffff8083168185168083038211156123d6576123d6612303565b6004811061240c5761240c6122ed565b9052565b805160078110612422576124226122ed565b8252602090810151910152565b805160408084529051602084830181905281516060860181905260009392820191849160808801905b8084101561247f5761246b828651612410565b938201936001939093019290850190612458565b509581015196019590955250919392505050565b8051604080845281518482018190526000926060916020918201918388019190865b828110156124fe5784516124ca858251612410565b80830151858901528781015163ffffffff90811688870152908701511660808501529381019360a0909301926001016124b5565b509687015197909601969096525093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8635815260006101c060208901356001600160a01b03811680821461256257600080fd5b806020860152505080604084015261257d81840189516123fc565b6020880151816101e085015261259761038085018261242f565b91505060408801516125b761020085018280518252602090810151910152565b5060608801516101bf1980858403016102408601526125d6838361242f565b925060808a015191508085840301610260860152506125f58282612493565b91505060a088015161261561028085018280518252602090810151910152565b5060c08801516102c084015260e088015163ffffffff81166102e08501525061010088015163ffffffff81166103008501525061012088015163ffffffff811661032085015250610140880151610340840152610160808901516103608501526126e160608501898051825260208101516001600160401b0380825116602085015280602083015116604085015250604081015160608401525060408101516080830152606081015160a0830152608081015160c083015263ffffffff60a08201511660e08301525050565b6126fb81850188805161ffff168252602090810151910152565b508281036101a0840152612710818587612515565b9998505050505050505050565b604080519081016001600160401b038111828210171561273f5761273f6122c1565b60405290565b604051602081016001600160401b038111828210171561273f5761273f6122c1565b604051608081016001600160401b038111828210171561273f5761273f6122c1565b60405160c081016001600160401b038111828210171561273f5761273f6122c1565b604051606081016001600160401b038111828210171561273f5761273f6122c1565b60405161018081016001600160401b038111828210171561273f5761273f6122c1565b604051601f8201601f191681016001600160401b0381118282101715612818576128186122c1565b604052919050565b8051610cc781612285565b60006001600160401b03821115612844576128446122c1565b5060051b60200190565b60006040828403121561286057600080fd5b61286861271d565b905081516007811061287957600080fd5b808252506020820151602082015292915050565b600060408083850312156128a057600080fd5b6128a861271d565b915082516001600160401b03808211156128c157600080fd5b818501915060208083880312156128d757600080fd5b6128df612745565b8351838111156128ee57600080fd5b80850194505087601f85011261290357600080fd5b835192506129186129138461282b565b6127f0565b83815260069390931b8401820192828101908985111561293757600080fd5b948301945b8486101561295d5761294e8a8761284e565b8252948601949083019061293c565b8252508552948501519484019490945250909392505050565b60006040828403121561298857600080fd5b61299061271d565b9050815181526020820151602082015292915050565b805163ffffffff81168114610cc757600080fd5b600060408083850312156129cd57600080fd5b6129d561271d565b915082516001600160401b038111156129ed57600080fd5b8301601f810185136129fe57600080fd5b80516020612a0e6129138361282b565b82815260a09283028401820192828201919089851115612a2d57600080fd5b948301945b84861015612a965780868b031215612a4a5760008081fd5b612a52612767565b612a5c8b8861284e565b815287870151858201526060612a738189016129a6565b89830152612a83608089016129a6565b9082015283529485019491830191612a32565b50808752505080860151818601525050505092915050565b80516001600160401b0381168114610cc757600080fd5b6000818303610100811215612ad957600080fd5b612ae1612789565b8351815291506060601f1982011215612af957600080fd5b50612b026127ab565b612b0e60208401612aae565b8152612b1c60408401612aae565b602082015260608301516040820152806020830152506080820151604082015260a0820151606082015260c08201516080820152612b5c60e083016129a6565b60a082015292915050565b600080610120808486031215612b7c57600080fd5b83516001600160401b0380821115612b9357600080fd5b908501906101c08288031215612ba857600080fd5b612bb06127cd565b612bb983612820565b8152602083015182811115612bcd57600080fd5b612bd98982860161288d565b602083015250612bec8860408501612976565b6040820152608083015182811115612c0357600080fd5b612c0f8982860161288d565b60608301525060a083015182811115612c2757600080fd5b612c33898286016129ba565b608083015250612c468860c08501612976565b60a082015261010091508183015160c0820152612c648484016129a6565b60e0820152610140612c778185016129a6565b838301526101609250612c8b8385016129a6565b8583015261018084015181830152506101a08301518282015280955050505050612cb88460208501612ac5565b90509250929050565b7026b0b1b434b732903334b734b9b432b21d60791b8152601181019190915260310190565b600060ff821660ff811415612cfd57612cfd612303565b60010192915050565b6000600019821415612d1a57612d1a612303565b5060010190565b6a36bab63a34b9ba30b1b59d60a91b8152600b810193909352602b830191909152604b820152606b0190565b6000845160005b81811015612d6e5760208188018101518583015201612d54565b81811115612d7d576000828501525b5091909101928352506020820152604001919050565b6000816000190483118215151615612dad57612dad612303565b500290565b652b30b63ab29d60d11b8152600060078410612dd057612dd06122ed565b5060f89290921b600683015260078201526027019056fea26469706673582212206630cc3ca936424a379d3ba5328e6633b67f26f2f4c58f0334dbe3c122002ad364736f6c63430008090033",
133
181
  "linkReferences": {},
134
182
  "deployedLinkReferences": {}
135
183
  }