@across-protocol/contracts 5.0.11 → 5.0.12-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/contracts/external/interfaces/CCTPInterfaces.sol +18 -0
  2. package/contracts/interfaces/SponsoredCCTPInterface.sol +11 -0
  3. package/contracts/libraries/SponsoredCCTPQuoteLib.sol +22 -0
  4. package/contracts/periphery/mintburn/ArbitraryEVMFlowExecutor.sol +38 -15
  5. package/contracts/periphery/mintburn/sponsored-cctp/SponsoredCCTPDstPeriphery.sol +41 -12
  6. package/contracts/test/MockCCTP.sol +10 -0
  7. package/dist/broadcast/deployed-addresses.json +172 -102
  8. package/dist/evm/artifacts/Arbitrum_Adapter.sol/Arbitrum_Adapter.json +1 -1
  9. package/dist/evm/artifacts/Arbitrum_CustomGasToken_Adapter.sol/Arbitrum_CustomGasToken_Adapter.json +1 -1
  10. package/dist/evm/artifacts/Arbitrum_RescueAdapter.sol/Arbitrum_RescueAdapter.json +1 -1
  11. package/dist/evm/artifacts/Arbitrum_SendTokensAdapter.sol/Arbitrum_SendTokensAdapter.json +1 -1
  12. package/dist/evm/artifacts/Arbitrum_SpokePool.sol/Arbitrum_SpokePool.json +1 -1
  13. package/dist/evm/artifacts/Arbitrum_WithdrawalHelper.sol/Arbitrum_WithdrawalHelper.json +1 -1
  14. package/dist/evm/artifacts/Base_Adapter.sol/Base_Adapter.json +1 -1
  15. package/dist/evm/artifacts/Blast_Adapter.sol/Blast_Adapter.json +1 -1
  16. package/dist/evm/artifacts/Blast_SpokePool.sol/Blast_SpokePool.json +1 -1
  17. package/dist/evm/artifacts/Boba_SpokePool.sol/Boba_SpokePool.json +1 -1
  18. package/dist/evm/artifacts/CCTPInterfaces.sol/ITokenMessengerV2.json +1 -1
  19. package/dist/evm/artifacts/CCTPInterfaces.sol/ITokenMinter.json +1 -1
  20. package/dist/evm/artifacts/Cher_SpokePool.sol/Cher_SpokePool.json +1 -1
  21. package/dist/evm/artifacts/CircleCCTPAdapter.sol/CircleDomainIds.json +1 -1
  22. package/dist/evm/artifacts/CounterfactualDepositCCTP.sol/CounterfactualDepositCCTP.json +1 -1
  23. package/dist/evm/artifacts/DoctorWho_Adapter.sol/DoctorWho_Adapter.json +1 -1
  24. package/dist/evm/artifacts/DstOFTHandler.sol/DstOFTHandler.json +1 -1
  25. package/dist/evm/artifacts/Ink_SpokePool.sol/Ink_SpokePool.json +1 -1
  26. package/dist/evm/artifacts/Lens_SpokePool.sol/Lens_SpokePool.json +1 -1
  27. package/dist/evm/artifacts/Linea_Adapter.sol/Linea_Adapter.json +1 -1
  28. package/dist/evm/artifacts/Linea_SpokePool.sol/Linea_SpokePool.json +1 -1
  29. package/dist/evm/artifacts/Lisk_Adapter.sol/Lisk_Adapter.json +1 -1
  30. package/dist/evm/artifacts/Lisk_SpokePool.sol/Lisk_SpokePool.json +1 -1
  31. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockCrossDomainMessenger.json +1 -1
  32. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockL1StandardBridge.json +1 -1
  33. package/dist/evm/artifacts/MockBedrockStandardBridge.sol/MockBedrockL2StandardBridge.json +1 -1
  34. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessageTransmitter.json +1 -1
  35. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessenger.json +1 -1
  36. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMessengerV2.json +1 -1
  37. package/dist/evm/artifacts/MockCCTP.sol/MockCCTPMinter.json +1 -1
  38. package/dist/evm/artifacts/MockOptimism_SpokePool.sol/MockOptimism_SpokePool.json +1 -1
  39. package/dist/evm/artifacts/Mode_Adapter.sol/Mode_Adapter.json +1 -1
  40. package/dist/evm/artifacts/OP_Adapter.sol/OP_Adapter.json +1 -1
  41. package/dist/evm/artifacts/OP_SpokePool.sol/OP_SpokePool.json +1 -1
  42. package/dist/evm/artifacts/Optimism_Adapter.sol/Optimism_Adapter.json +1 -1
  43. package/dist/evm/artifacts/Optimism_SpokePool.sol/Optimism_SpokePool.json +1 -1
  44. package/dist/evm/artifacts/Ovm_SpokePool.sol/Ovm_SpokePool.json +1 -1
  45. package/dist/evm/artifacts/Ovm_WithdrawalHelper.sol/Ovm_WithdrawalHelper.json +1 -1
  46. package/dist/evm/artifacts/Polygon_Adapter.sol/Polygon_Adapter.json +1 -1
  47. package/dist/evm/artifacts/Polygon_SpokePool.sol/Polygon_SpokePool.json +1 -1
  48. package/dist/evm/artifacts/Solana_Adapter.sol/Solana_Adapter.json +1 -1
  49. package/dist/evm/artifacts/SponsoredCCTPDstPeriphery.sol/SponsoredCCTPDstPeriphery.json +1 -1
  50. package/dist/evm/artifacts/SponsoredCCTPInterface.sol/SponsoredCCTPInterface.json +1 -1
  51. package/dist/evm/artifacts/SponsoredCCTPSrcPeriphery.sol/SponsoredCCTPSrcPeriphery.json +1 -1
  52. package/dist/evm/artifacts/SponsoredOFTSrcPeriphery.sol/SponsoredOFTSrcPeriphery.json +1 -1
  53. package/dist/evm/artifacts/Tron_SpokePool.sol/Tron_SpokePool.json +1 -1
  54. package/dist/evm/artifacts/Universal_Adapter.sol/Universal_Adapter.json +1 -1
  55. package/dist/evm/artifacts/Universal_SpokePool.sol/Universal_SpokePool.json +1 -1
  56. package/dist/evm/artifacts/WorldChain_SpokePool.sol/WorldChain_SpokePool.json +1 -1
  57. package/dist/evm/artifacts/ZkStack_Adapter.sol/ZkStack_Adapter.json +1 -1
  58. package/dist/evm/artifacts/ZkStack_CustomGasToken_Adapter.sol/ZkStack_CustomGasToken_Adapter.json +1 -1
  59. package/dist/evm/artifacts/ZkSync_SpokePool.sol/ZkSync_SpokePool.json +1 -1
  60. package/dist/evm/artifacts/Zora_Adapter.sol/Zora_Adapter.json +1 -1
  61. package/dist/evm/artifacts/eraVM_EIP7702.sol/SimpleContract.json +1 -1
  62. package/dist/evm/artifacts/eraVM_EIP7702.sol/SpokePoolEIP7702Test.json +1 -1
  63. package/dist/evm/artifacts/eraVM_EIP7702.sol/TestableMockSpokePool.json +1 -1
  64. package/package.json +1 -1
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[{"name":"_store","type":"address","internalType":"contract HubPoolStore"},{"name":"_l1Usdc","type":"address","internalType":"contract IERC20"},{"name":"_cctpTokenMessenger","type":"address","internalType":"contract ITokenMessenger"},{"name":"_cctpDestinationDomainId","type":"uint32","internalType":"uint32"},{"name":"_adapterStore","type":"address","internalType":"address"},{"name":"_oftDstEid","type":"uint32","internalType":"uint32"},{"name":"_oftFeeCap","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"DATA_STORE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HubPoolStore"}],"stateMutability":"view"},{"type":"function","name":"EMPTY_MSG_BYTES","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"OFT_ADAPTER_STORE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AdapterStore"}],"stateMutability":"view"},{"type":"function","name":"OFT_DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"OFT_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cctpTokenMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"view"},{"type":"function","name":"cctpV2","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recipientCircleDomainId","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"relayTokens","inputs":[{"name":"l1Token","type":"address","internalType":"address"},{"name":"l2Token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdcToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"event","name":"MessageRelayed","inputs":[{"name":"target","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TokensRelayed","inputs":[{"name":"l1Token","type":"address","indexed":false,"internalType":"address"},{"name":"l2Token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"OftFeeCapExceeded","inputs":[]},{"type":"error","name":"OftIncorrectAmountReceivedLD","inputs":[]},{"type":"error","name":"OftIncorrectAmountSentLD","inputs":[]},{"type":"error","name":"OftInsufficientBalanceForFee","inputs":[]},{"type":"error","name":"OftLzFeeNotZero","inputs":[]}],"bytecode":"0x610180806040523461022a5760e0816112368038038091610020828561022e565b83398101031261022a578051906001600160a01b038216820361022a5760208101516001600160a01b038116810361022a5760408201516001600160a01b038116929083810361022a5761007660608301610251565b60808301516001600160a01b038116959192919086900361022a575f92839260c06100a360a08801610251565b9601519660a05260c052608052604051602081019063011a412160e61b8252600481526100d160248261022e565b51915afa3d15610223573d6001600160401b03811161020f5760405190610102601f8201601f19166020018361022e565b81523d5f602083013e5b81610203575b816101cd575b5060e05261012052610100526101405261016052604051610fd3908161026382396080518181816103db015281816106bd0152610765015260a05181818161055f01528181610c6b0152610cd0015260c05181818161031f015261052b015260e05181818161035a015261066401526101005181818161041601526109b801526101205181818161039b01526104b10152610140518181816102dc01526104f001526101605181818161011c01526102550152f35b90506020815191015190602081106101f2575b506001600160a01b031615155f610118565b5f199060200360031b1b165f6101e0565b80516020149150610112565b634e487b7160e01b5f52604160045260245ffd5b606061010c565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761020f57604052565b519063ffffffff8216820361022a5756fe6080806040526004361015610012575f80fd5b5f3560e01c90816311eac85514610cb35750806352c8c75c1461043957806361a04d30146103ff5780636e400983146103bf5780636fd5c10e1461037f578063775c0d03146103435780639748cf7c14610300578063a6ec815e146102bd578063b4c0d7ab14610279578063c1d07cc2146102365763e6eb8ade14610095575f80fd5b6040366003190112610201576100a9610cf4565b60243567ffffffffffffffff811161020157366023820112156102015780600401359067ffffffffffffffff8211610201576024810190602483369201011161020157604051638da5cb5b60e01b815290602082600481305afa9182156101f6575f92610205575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610201576001600160a01b035f959186926040519788809481936316d462af60e31b83521697886004830152606060248301526001600160a01b03610188606484018c8b610dbd565b91163314604483015203925af19081156101f6577f9e6c52944e331ba6270e7fe4cea2a4086bae8f7a27e1cdba07f416806f5d0ac4946101e1926101e6575b506040519384938452604060208501526040840191610dbd565b0390a1005b5f6101f091610d58565b5f6101c7565b6040513d5f823e3d90fd5b5f80fd5b61022891925060203d60201161022f575b6102208183610d58565b810190610d9e565b905f610111565b503d610216565b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760405160206102988183610d58565b5f8252601f19810136828401376102b9604051928284938452830190610d7a565b0390f35b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b34610201575f36600319011261020157602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f36600319011261020157602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b60803660031901126102015761044d610cf4565b610455610d0a565b50604435606435916001600160a01b03831680930361020157604051906323df66fb60e21b82527f4f46545f4d455353454e4745520000000000000000000000000000000000000060048301526001600160a01b0363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000169182602485015216908160448401526020836064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101f6575f93610c92575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169283151580610c60575b1561089a575050507f0000000000000000000000000000000000000000000000000000000000000000926001600160a01b03841693604051636eb1769f60e11b8152306004820152836024820152602081604481895afa9081156101f6575f91610868575b508481018091116107275760405163095ea7b360e01b60208201526001600160a01b0385166024820152604480820192909252908152610604916105ff606483610d58565b610ee1565b6040516332dd704760e21b8152602081600481865afa9081156101f6575f91610823575b509260206001600160a01b03946024604051809781936352b7631960e11b83528a6004840152165afa9384156101f6575f946107ef575b5092937f000000000000000000000000000000000000000000000000000000000000000093805b61068c57005b858111156107e957855b851561074b57843b1561020157604051634701287760e11b815281600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528460448201528360648201525f60848201525f60a48201526107d060c48201525f8160e481838a5af180156101f65761073b575b505b81039081116107275780610686565b634e487b7160e01b5f52601160045260245ffd5b5f61074591610d58565b87610716565b6040516337e9a82760e11b815281600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528460448201528360648201526020816084815f8a5af180156101f6576107b1575b50610718565b6020813d82116107e1575b816107c960209383610d58565b81010312610201576107da90610e75565b50876107ab565b3d91506107bc565b80610696565b9093506020813d60201161081b575b8161080b60209383610d58565b810103126102015751928561065f565b3d91506107fe565b90506020813d602011610860575b8161083e60209383610d58565b810103126102015751926001600160a01b038416840361020157926020610628565b3d9150610831565b90506020813d602011610892575b8161088360209383610d58565b810103126102015751866105ba565b3d9150610876565b6001600160a01b03919295935016928315155f14610c5157606060c06040516108c281610d20565b5f81525f60208201525f60408201525f838201528260808201528260a082015201525f60206040516108f381610d3c565b82815201526040516020936109088583610d58565b5f8252601f19850191823687830137604051916109258784610d58565b5f83528336888501376040519361093c8886610d58565b5f855236888601376040519561095187610d20565b86528686015260408501938085526060860152608085015260a084015260c083015260405193633b6f743b60e01b855260406004860152604085806109996044820187610e05565b5f60248301520381845afa9485156101f6575f95610c16575b508451917f00000000000000000000000000000000000000000000000000000000000000008311610c0757478311610bf857848601928351610be957905160405163095ea7b360e01b8782019081526001600160a01b038516602483015260448083018490528252919860c096610a7f94939092905f908190610a36606485610d58565b83519082865af1610a45610e8a565b81610bb9575b5080610baf575b15610b71575b505060405163c7c7f5b360e01b815260806004820152978895869485936084850190610e05565b9151602484015251604483015230606483015203925af19182156101f6575f92610ad3575b508101518203610ac4575103610ab657005b623c548b60ea1b5f5260045ffd5b631bfc3cb560e11b5f5260045ffd5b90915060c03d60c011610b6a575b610aeb8183610d58565b810181810360c08112610201576080136102015760405191606083019083821067ffffffffffffffff831117610b5657610b4f9360809260405281518152610b34868301610e75565b868201526040610b4685828501610ddd565b91015201610ddd565b9083610aa4565b634e487b7160e01b5f52604160045260245ffd5b503d610ae1565b610ba8916105ff60405163095ea7b360e01b8c8201528860248201525f604482015260448152610ba2606482610d58565b82610ee1565b8980610a58565b50813b1515610a52565b8051801592508b908315610bd1575b5050508c610a4b565b610be19350820181019101610ec9565b8c8a81610bc8565b630e282ec960e21b5f5260045ffd5b63a6226f8560e01b5f5260045ffd5b631754d7a960e01b5f5260045ffd5b90945060403d604011610c4a575b610c2e8183610d58565b810160408282031261020157610c4391610ddd565b93866109b2565b503d610c24565b63d623472560e01b5f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168314610555565b610cac91935060203d60201161022f576102208183610d58565b9185610520565b34610201575f366003190112610201576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361020157565b602435906001600160a01b038216820361020157565b60e0810190811067ffffffffffffffff821117610b5657604052565b6040810190811067ffffffffffffffff821117610b5657604052565b90601f8019910116810190811067ffffffffffffffff821117610b5657604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9081602091031261020157516001600160a01b03811681036102015790565b908060209392818452848401375f828201840152601f01601f1916010190565b919082604091031261020157604051610df581610d3c565b6020808294805184520151910152565b610e729163ffffffff825116815260208201516020820152604082015160408201526060820151606082015260c0610e61610e4f608085015160e0608086015260e0850190610d7a565b60a085015184820360a0860152610d7a565b9201519060c0818403910152610d7a565b90565b519067ffffffffffffffff8216820361020157565b3d15610ec4573d9067ffffffffffffffff8211610b565760405191610eb9601f8201601f191660200184610d58565b82523d5f602084013e565b606090565b90816020910312610201575180151581036102015790565b906001600160a01b03610f4292165f8060405193610f00604086610d58565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1610f3c610e8a565b91610f72565b8051908115918215610f58575b50501561020157565b610f6b9250602080918301019101610ec9565b5f80610f4f565b91925015610f8e57815115610f85575090565b3b156102015790565b50805190811561020157602001fdfea264697066735822122090f59b698652f5bfa6668fc46fa774ac145ced347a3b9251b38c82699cc1272464736f6c634300081e0033"}
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"_store","type":"address","internalType":"contract HubPoolStore"},{"name":"_l1Usdc","type":"address","internalType":"contract IERC20"},{"name":"_cctpTokenMessenger","type":"address","internalType":"contract ITokenMessenger"},{"name":"_cctpDestinationDomainId","type":"uint32","internalType":"uint32"},{"name":"_adapterStore","type":"address","internalType":"address"},{"name":"_oftDstEid","type":"uint32","internalType":"uint32"},{"name":"_oftFeeCap","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"DATA_STORE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HubPoolStore"}],"stateMutability":"view"},{"type":"function","name":"EMPTY_MSG_BYTES","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"OFT_ADAPTER_STORE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract AdapterStore"}],"stateMutability":"view"},{"type":"function","name":"OFT_DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"OFT_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cctpTokenMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITokenMessenger"}],"stateMutability":"view"},{"type":"function","name":"cctpV2","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"recipientCircleDomainId","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"relayTokens","inputs":[{"name":"l1Token","type":"address","internalType":"address"},{"name":"l2Token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"usdcToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"event","name":"MessageRelayed","inputs":[{"name":"target","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TokensRelayed","inputs":[{"name":"l1Token","type":"address","indexed":false,"internalType":"address"},{"name":"l2Token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"NotImplemented","inputs":[]},{"type":"error","name":"OftFeeCapExceeded","inputs":[]},{"type":"error","name":"OftIncorrectAmountReceivedLD","inputs":[]},{"type":"error","name":"OftIncorrectAmountSentLD","inputs":[]},{"type":"error","name":"OftInsufficientBalanceForFee","inputs":[]},{"type":"error","name":"OftLzFeeNotZero","inputs":[]}],"bytecode":"0x610180806040523461022a5760e0816112368038038091610020828561022e565b83398101031261022a578051906001600160a01b038216820361022a5760208101516001600160a01b038116810361022a5760408201516001600160a01b038116929083810361022a5761007660608301610251565b60808301516001600160a01b038116959192919086900361022a575f92839260c06100a360a08801610251565b9601519660a05260c052608052604051602081019063011a412160e61b8252600481526100d160248261022e565b51915afa3d15610223573d6001600160401b03811161020f5760405190610102601f8201601f19166020018361022e565b81523d5f602083013e5b81610203575b816101cd575b5060e05261012052610100526101405261016052604051610fd3908161026382396080518181816103db015281816106bd0152610765015260a05181818161055f01528181610c6b0152610cd0015260c05181818161031f015261052b015260e05181818161035a015261066401526101005181818161041601526109b801526101205181818161039b01526104b10152610140518181816102dc01526104f001526101605181818161011c01526102550152f35b90506020815191015190602081106101f2575b506001600160a01b031615155f610118565b5f199060200360031b1b165f6101e0565b80516020149150610112565b634e487b7160e01b5f52604160045260245ffd5b606061010c565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761020f57604052565b519063ffffffff8216820361022a5756fe6080806040526004361015610012575f80fd5b5f3560e01c90816311eac85514610cb35750806352c8c75c1461043957806361a04d30146103ff5780636e400983146103bf5780636fd5c10e1461037f578063775c0d03146103435780639748cf7c14610300578063a6ec815e146102bd578063b4c0d7ab14610279578063c1d07cc2146102365763e6eb8ade14610095575f80fd5b6040366003190112610201576100a9610cf4565b60243567ffffffffffffffff811161020157366023820112156102015780600401359067ffffffffffffffff8211610201576024810190602483369201011161020157604051638da5cb5b60e01b815290602082600481305afa9182156101f6575f92610205575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610201576001600160a01b035f959186926040519788809481936316d462af60e31b83521697886004830152606060248301526001600160a01b03610188606484018c8b610dbd565b91163314604483015203925af19081156101f6577f9e6c52944e331ba6270e7fe4cea2a4086bae8f7a27e1cdba07f416806f5d0ac4946101e1926101e6575b506040519384938452604060208501526040840191610dbd565b0390a1005b5f6101f091610d58565b5f6101c7565b6040513d5f823e3d90fd5b5f80fd5b61022891925060203d60201161022f575b6102208183610d58565b810190610d9e565b905f610111565b503d610216565b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760405160206102988183610d58565b5f8252601f19810136828401376102b9604051928284938452830190610d7a565b0390f35b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b34610201575f36600319011261020157602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f36600319011261020157602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610201575f3660031901126102015760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b60803660031901126102015761044d610cf4565b610455610d0a565b50604435606435916001600160a01b03831680930361020157604051906323df66fb60e21b82527f4f46545f4d455353454e4745520000000000000000000000000000000000000060048301526001600160a01b0363ffffffff7f0000000000000000000000000000000000000000000000000000000000000000169182602485015216908160448401526020836064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9283156101f6575f93610c92575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169283151580610c60575b1561089a575050507f0000000000000000000000000000000000000000000000000000000000000000926001600160a01b03841693604051636eb1769f60e11b8152306004820152836024820152602081604481895afa9081156101f6575f91610868575b508481018091116107275760405163095ea7b360e01b60208201526001600160a01b0385166024820152604480820192909252908152610604916105ff606483610d58565b610ee1565b6040516332dd704760e21b8152602081600481865afa9081156101f6575f91610823575b509260206001600160a01b03946024604051809781936352b7631960e11b83528a6004840152165afa9384156101f6575f946107ef575b5092937f000000000000000000000000000000000000000000000000000000000000000093805b61068c57005b858111156107e957855b851561074b57843b1561020157604051634701287760e11b815281600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528460448201528360648201525f60848201525f60a48201526107d060c48201525f8160e481838a5af180156101f65761073b575b505b81039081116107275780610686565b634e487b7160e01b5f52601160045260245ffd5b5f61074591610d58565b87610716565b6040516337e9a82760e11b815281600482015263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660248201528460448201528360648201526020816084815f8a5af180156101f6576107b1575b50610718565b6020813d82116107e1575b816107c960209383610d58565b81010312610201576107da90610e75565b50876107ab565b3d91506107bc565b80610696565b9093506020813d60201161081b575b8161080b60209383610d58565b810103126102015751928561065f565b3d91506107fe565b90506020813d602011610860575b8161083e60209383610d58565b810103126102015751926001600160a01b038416840361020157926020610628565b3d9150610831565b90506020813d602011610892575b8161088360209383610d58565b810103126102015751866105ba565b3d9150610876565b6001600160a01b03919295935016928315155f14610c5157606060c06040516108c281610d20565b5f81525f60208201525f60408201525f838201528260808201528260a082015201525f60206040516108f381610d3c565b82815201526040516020936109088583610d58565b5f8252601f19850191823687830137604051916109258784610d58565b5f83528336888501376040519361093c8886610d58565b5f855236888601376040519561095187610d20565b86528686015260408501938085526060860152608085015260a084015260c083015260405193633b6f743b60e01b855260406004860152604085806109996044820187610e05565b5f60248301520381845afa9485156101f6575f95610c16575b508451917f00000000000000000000000000000000000000000000000000000000000000008311610c0757478311610bf857848601928351610be957905160405163095ea7b360e01b8782019081526001600160a01b038516602483015260448083018490528252919860c096610a7f94939092905f908190610a36606485610d58565b83519082865af1610a45610e8a565b81610bb9575b5080610baf575b15610b71575b505060405163c7c7f5b360e01b815260806004820152978895869485936084850190610e05565b9151602484015251604483015230606483015203925af19182156101f6575f92610ad3575b508101518203610ac4575103610ab657005b623c548b60ea1b5f5260045ffd5b631bfc3cb560e11b5f5260045ffd5b90915060c03d60c011610b6a575b610aeb8183610d58565b810181810360c08112610201576080136102015760405191606083019083821067ffffffffffffffff831117610b5657610b4f9360809260405281518152610b34868301610e75565b868201526040610b4685828501610ddd565b91015201610ddd565b9083610aa4565b634e487b7160e01b5f52604160045260245ffd5b503d610ae1565b610ba8916105ff60405163095ea7b360e01b8c8201528860248201525f604482015260448152610ba2606482610d58565b82610ee1565b8980610a58565b50813b1515610a52565b8051801592508b908315610bd1575b5050508c610a4b565b610be19350820181019101610ec9565b8c8a81610bc8565b630e282ec960e21b5f5260045ffd5b63a6226f8560e01b5f5260045ffd5b631754d7a960e01b5f5260045ffd5b90945060403d604011610c4a575b610c2e8183610d58565b810160408282031261020157610c4391610ddd565b93866109b2565b503d610c24565b63d623472560e01b5f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168314610555565b610cac91935060203d60201161022f576102208183610d58565b9185610520565b34610201575f366003190112610201576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361020157565b602435906001600160a01b038216820361020157565b60e0810190811067ffffffffffffffff821117610b5657604052565b6040810190811067ffffffffffffffff821117610b5657604052565b90601f8019910116810190811067ffffffffffffffff821117610b5657604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9081602091031261020157516001600160a01b03811681036102015790565b908060209392818452848401375f828201840152601f01601f1916010190565b919082604091031261020157604051610df581610d3c565b6020808294805184520151910152565b610e729163ffffffff825116815260208201516020820152604082015160408201526060820151606082015260c0610e61610e4f608085015160e0608086015260e0850190610d7a565b60a085015184820360a0860152610d7a565b9201519060c0818403910152610d7a565b90565b519067ffffffffffffffff8216820361020157565b3d15610ec4573d9067ffffffffffffffff8211610b565760405191610eb9601f8201601f191660200184610d58565b82523d5f602084013e565b606090565b90816020910312610201575180151581036102015790565b906001600160a01b03610f4292165f8060405193610f00604086610d58565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1610f3c610e8a565b91610f72565b8051908115918215610f58575b50501561020157565b610f6b9250602080918301019101610ec9565b5f80610f4f565b91925015610f8e57815115610f85575090565b3b156102015790565b50805190811561020157602001fdfea2646970667358221220b97c81abf1a36f4c03b21817bc9a9d2988404270da8b8e102065046b9a34d03264736f6c634300081e0033"}