{"abi":[{"type":"constructor","inputs":[{"name":"_endpoint","type":"address","internalType":"address"},{"name":"_oft","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"CORE_WRITER_VERSION","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE_CHAIN_ID_MAINNET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HYPE_CHAIN_ID_TESTNET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"HYPE_INDEX_MAINNET","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HYPE_INDEX_TESTNET","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"SPOT_SEND_ACTION_ID","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"SPOT_SEND_HEADER","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"balanceOfHyperCore","inputs":[{"name":"_user","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getErrorPayload","inputs":[{"name":"_err","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"getHypeAsset","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAsset","components":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}]}],"stateMutability":"view"},{"type":"function","name":"getOFTAsset","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAsset","components":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}]}],"stateMutability":"view"},{"type":"function","name":"hypeAsset","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"hypeIndexByChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IOFT"}],"stateMutability":"view"},{"type":"function","name":"oftAsset","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"quoteHyperCoreAmount","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_isOFT","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IHyperAssetAmount","components":[{"name":"evm","type":"uint256","internalType":"uint256"},{"name":"dust","type":"uint256","internalType":"uint256"},{"name":"core","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"refundERC20","inputs":[{"name":"_refundAddress","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refundNativeTokens","inputs":[{"name":"_refundAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"validate_addresses_or_refund","inputs":[{"name":"_maybeReceiver","type":"bytes","internalType":"bytes"},{"name":"_senderBytes32","type":"bytes32","internalType":"bytes32"},{"name":"_amountLD","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"validate_message","inputs":[{"name":"_composeMessage","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"event","name":"ErrorERC20_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ErrorHYPE_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ErrorMessage","inputs":[{"name":"reason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ErrorSpot_FailedToSend","inputs":[{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"tokenId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"errorMessage","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ExcessHYPE_Refund","inputs":[{"name":"refundTo","type":"address","indexed":false,"internalType":"address"},{"name":"refundAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ErrorMsg","inputs":[{"name":"errorMessage","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"HyperLiquidComposerCore_SpotBalanceRead_Failed","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"tokenId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HyperLiquidComposer_FailedToRefund_HYPE","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress","inputs":[{"name":"receivedEndpointAddress","type":"address","internalType":"address"}]},{"type":"error","name":"HyperLiquidComposer_InvalidCall_NotComposer","inputs":[{"name":"notComposerAddress","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e060405234801562000010575f80fd5b5060405162001b6338038062001b6383398101604081905262000033916200017c565b6001600160a01b0382166200006a5760405163fb82c1f160e01b81526001600160a01b038316600482015260240160405180910390fd5b6001600160a01b03808316608052811660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015620000b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000df9190620001b2565b6001600160a01b031660c05250505f60208190527f2802b8ca0a4d9948ac89ce9ba15f4015f0f68c52469c4df23bbaf374f1d4604080546001600160401b0319908116610451179091556103e79091527f332eac5de6beffe8ee7761a0342c75594c3acb5fdde0a2555227e56aa65d414180549091166096179055620001d5565b80516001600160a01b038116811462000177575f80fd5b919050565b5f80604083850312156200018e575f80fd5b620001998362000160565b9150620001a96020840162000160565b90509250929050565b5f60208284031215620001c3575f80fd5b620001ce8262000160565b9392505050565b60805160a05160c05161195c620002075f395f81816107150152610ae801525f61055901525f610407015261195c5ff3fe608060405260043610610183575f3560e01c806381e8dcb4116100d1578063bc963bc71161007c578063f6e6b24011610057578063f6e6b24014610661578063f9716faf146106b9578063fc0c546a14610704575f80fd5b8063bc963bc714610619578063d00b1ad51461062e578063ebaeefd614610642575f80fd5b80639b5215f6116100ac5780639b5215f614610548578063aae12e461461057b578063ba87267914610604575f80fd5b806381e8dcb4146104e65780638483bc00146105055780639180b7441461051a575f80fd5b80634bd162df116101315780635e280f111161010c5780635e280f11146103f6578063765008a1146104295780637ecd9ac3146104bf575f80fd5b80634bd162df1461034f5780635241b4961461039d5780635b9a2373146103e1575f80fd5b806320d9af9a1161016157806320d9af9a1461021657806322dbe29c146102395780632d0e315c14610281575f80fd5b806303be2050146101875780630d1995e0146101bc5780631f8164d914610202575b5f80fd5b348015610192575f80fd5b506101a66101a13660046111cd565b610737565b6040516101b391906112a4565b60405180910390f35b3480156101c7575f80fd5b506101a66040518060400160405280600381526020017d06000000000000000000000000000000000000000000000000000000000081525081565b34801561020d575f80fd5b506101a661074c565b348015610221575f80fd5b5061022b6103e681565b6040519081526020016101b3565b348015610244575f80fd5b506101a66040518060400160405280600181526020017f010000000000000000000000000000000000000000000000000000000000000081525081565b34801561028c575f80fd5b5061030a604080516060810182525f8082526020820181905291810191909152506040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260025460070b9181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015160070b908201526060016101b3565b34801561035a575f80fd5b506103846103693660046112b6565b5f6020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101b3565b3480156103a8575f80fd5b506103bc6103b7366004611349565b6107d0565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b3565b3480156103ec575f80fd5b5061022b6103e781565b348015610401575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610434575f80fd5b506001546002546104819173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b908201526060016101b3565b3480156104ca575f80fd5b506103bc73333333333333333333333333333333333333333381565b3480156104f1575f80fd5b50610384610500366004611443565b61090a565b610518610513366004611478565b610915565b005b348015610525575f80fd5b506105396105343660046111cd565b610a32565b6040516101b393929190611491565b348015610553575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610586575f80fd5b5061030a604080516060810182525f8082526020820181905291810191909152506040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260045460070b9181019190915290565b34801561060f575f80fd5b506103bc61080181565b348015610624575f80fd5b5061038461045181565b348015610639575f80fd5b50610384609681565b34801561064d575f80fd5b5061051861065c3660046114af565b610a6a565b34801561066c575f80fd5b506003546004546104819173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b3480156106c4575f80fd5b506106d86106d33660046114d7565b610b0f565b6040805182518152602080840151908201529181015167ffffffffffffffff16908201526060016101b3565b34801561070f575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b60606107438383610c45565b90505b92915050565b604080518082018252600181527f010000000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292516107be9391016114fe565b60405160208183030381529060405281565b5f806107db84610c8f565b90505f6107e786610cba565b905073ffffffffffffffffffffffffffffffffffffffff81166109015785516040515f917f09b34731000000000000000000000000000000000000000000000000000000009161083b918a9160240161152c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506108c5818487610d1d565b6040517f4f9520330000000000000000000000000000000000000000000000000000000081526004016108f891906112a4565b60405180910390fd5b95945050505050565b5f6107438383610d78565b333014610950576040517f5950c85e0000000000000000000000000000000000000000000000000000000081523360048201526024016108f8565b5f34118015610974575073ffffffffffffffffffffffffffffffffffffffff811615155b15610a2f575f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f81146109cf576040519150601f19603f3d011682016040523d82523d5f602084013e6109d4565b606091505b5050905080610a2d576040517fc8ee485e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201523460248201526044016108f8565b505b50565b5f8060605f610a418686610e8c565b90505f610a4e8787610ea4565b90505f610a5b8888610eb3565b92989197509195509350505050565b333014610aa5576040517f5950c85e0000000000000000000000000000000000000000000000000000000081523360048201526024016108f8565b5f81118015610ac9575073ffffffffffffffffffffffffffffffffffffffff821615155b15610a2d57610a2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610ec2565b610b3a60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b604080516060810182525f80825260208201819052918101829052908315610bcd576040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260025460070b93830193909352909350610bc691610d78565b9050610c3a565b6040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260045460070b93830193909352909350610c3791610d78565b90505b610901858284610f54565b6060610c54826044818661154d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff8111610cb25792915050565b505f92915050565b80515f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8101610cf857610cee83611574565b60601c9392505050565b60208103610cb2575f610d0a846115c3565b9050610d1581610c8f565b949350505050565b606060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200185815250604051602001610d609190611605565b60405160208183030381529060405290509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015267ffffffffffffffff8316818301528151808203830181526060918201928390525f9283929161080191610dcc9190611649565b5f60405180830381855afa9150503d805f8114610e04576040519150601f19603f3d011682016040523d82523d5f602084013e610e09565b606091505b50909250905081610e6e576040517fa91ed72100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015267ffffffffffffffff851660248201526044016108f8565b80806020019051810190610e829190611664565b5195945050505050565b5f610e9b602c600c848661154d565b610743916116d4565b5f610e9b604c602c848661154d565b6060610c5482604c818661154d565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f4f90849061102f565b505050565b610f7f60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b5f805f80610f958767ffffffffffffffff6110d4565b90505f866040015160070b1315610fc157610fb5888288604001516110fc565b91955093509150611003565b610ffb888288604001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ff6919061173d565b611175565b919550935091505b5060408051606081018252938452602084019290925267ffffffffffffffff1690820152949350505050565b5f8060205f8451602086015f885af18061104e576040513d5f823e3d81fd5b50505f513d9150811561106557806001141561107f565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156110ce576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108f8565b50505050565b5f8167ffffffffffffffff168367ffffffffffffffff16116110f65782610743565b50919050565b5f80808061110b85600a611881565b90505f6111228267ffffffffffffffff8916611896565b905061112e82896118da565b935061113a84896118ed565b975061114688826111bf565b945061115285896118ed565b61115c9085611900565b93506111688286611913565b9250505093509350939050565b5f80808061118485600a611881565b90505f61119b8267ffffffffffffffff8916611913565b90506111a788826111bf565b94506111b385896118ed565b93506111688286611896565b5f8183116110f65782610743565b5f80602083850312156111de575f80fd5b823567ffffffffffffffff808211156111f5575f80fd5b818501915085601f830112611208575f80fd5b813581811115611216575f80fd5b866020828501011115611227575f80fd5b60209290920196919550909350505050565b5f5b8381101561125357818101518382015260200161123b565b50505f910152565b5f8151808452611272816020860160208601611239565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610743602083018461125b565b5f602082840312156112c6575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611341576113416112cd565b604052919050565b5f805f6060848603121561135b575f80fd5b833567ffffffffffffffff80821115611372575f80fd5b818601915086601f830112611385575f80fd5b8135602082821115611399576113996112cd565b6113c9817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016112fa565b925081835288818386010111156113de575f80fd5b81818501828501375f9183018101919091529097908601359650604090950135949350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611429575f80fd5b919050565b67ffffffffffffffff81168114610a2f575f80fd5b5f8060408385031215611454575f80fd5b61145d83611406565b9150602083013561146d8161142e565b809150509250929050565b5f60208284031215611488575f80fd5b61074382611406565b838152826020820152606060408201525f610901606083018461125b565b5f80604083850312156114c0575f80fd5b6114c983611406565b946020939093013593505050565b5f80604083850312156114e8575f80fd5b823591506020830135801515811461146d575f80fd5b5f835161150f818460208801611239565b835190830190611523818360208801611239565b01949350505050565b604081525f61153e604083018561125b565b90508260208301529392505050565b5f808585111561155b575f80fd5b83861115611567575f80fd5b5050820193919092039150565b5f815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156115bb5780818460140360031b1b83161693505b505050919050565b805160208083015191908110156110f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152610d15608084018261125b565b5f825161165a818460208701611239565b9190910192915050565b5f60608284031215611674575f80fd5b6040516060810181811067ffffffffffffffff82111715611697576116976112cd565b60405282516116a58161142e565b815260208301516116b58161142e565b602082015260408301516116c88161142e565b60408201529392505050565b80356020831015610746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260070b8260070b028060070b915080821461175c5761175c611710565b5092915050565b600181815b808511156117bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156117a2576117a2611710565b808516156117af57918102915b93841c9390800290611768565b509250929050565b5f826117d257506001610746565b816117de57505f610746565b81600181146117f457600281146117fe5761181a565b6001915050610746565b60ff84111561180f5761180f611710565b50506001821b610746565b5060208310610133831016604e8410600b841016171561183d575081810a610746565b6118478383611763565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561187957611879611710565b029392505050565b5f61074367ffffffffffffffff8416836117c4565b808202811582820484141761074657610746611710565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826118e8576118e86118ad565b500690565b8181038181111561074657610746611710565b8082018082111561074657610746611710565b5f82611921576119216118ad565b50049056fea2646970667358221220e242f388039aaf936317a7762f3a92beb458f4960c8b06da6a97bfc4cfd97ac664736f6c63430008160033","sourceMap":"731:10908:1:-:0;;;2336:556;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2395:23:1;;2391:195;;2441:134;;-1:-1:-1;;;2441:134:1;;-1:-1:-1;;;;;658:32:84;;2441:134:1;;;640:51:84;613:18;;2441:134:1;;;;;;;2391:195;-1:-1:-1;;;;;2595:20:1;;;;;2687:16;;;;;;2728:11;;;-1:-1:-1;;;2728:11:1;;;;:9;;:11;;;;;;;;;;;;;;;2687:16;2728:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2713:27:1;;;-1:-1:-1;;2751:18:1;:41;;;;;:62;;-1:-1:-1;;;;;;2751:62:1;;;1953:4;2751:62;;;;1806:3;2823:41;;;;:62;;;;;2092:3;2823:62;;;731:10908;;14:177:84;93:13;;-1:-1:-1;;;;;135:31:84;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;702:208::-;772:6;825:2;813:9;804:7;800:23;796:32;793:52;;;841:1;838;831:12;793:52;864:40;894:9;864:40;:::i;:::-;854:50;702:208;-1:-1:-1;;;702:208:84:o;:::-;731:10908:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610183575f3560e01c806381e8dcb4116100d1578063bc963bc71161007c578063f6e6b24011610057578063f6e6b24014610661578063f9716faf146106b9578063fc0c546a14610704575f80fd5b8063bc963bc714610619578063d00b1ad51461062e578063ebaeefd614610642575f80fd5b80639b5215f6116100ac5780639b5215f614610548578063aae12e461461057b578063ba87267914610604575f80fd5b806381e8dcb4146104e65780638483bc00146105055780639180b7441461051a575f80fd5b80634bd162df116101315780635e280f111161010c5780635e280f11146103f6578063765008a1146104295780637ecd9ac3146104bf575f80fd5b80634bd162df1461034f5780635241b4961461039d5780635b9a2373146103e1575f80fd5b806320d9af9a1161016157806320d9af9a1461021657806322dbe29c146102395780632d0e315c14610281575f80fd5b806303be2050146101875780630d1995e0146101bc5780631f8164d914610202575b5f80fd5b348015610192575f80fd5b506101a66101a13660046111cd565b610737565b6040516101b391906112a4565b60405180910390f35b3480156101c7575f80fd5b506101a66040518060400160405280600381526020017d06000000000000000000000000000000000000000000000000000000000081525081565b34801561020d575f80fd5b506101a661074c565b348015610221575f80fd5b5061022b6103e681565b6040519081526020016101b3565b348015610244575f80fd5b506101a66040518060400160405280600181526020017f010000000000000000000000000000000000000000000000000000000000000081525081565b34801561028c575f80fd5b5061030a604080516060810182525f8082526020820181905291810191909152506040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260025460070b9181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015160070b908201526060016101b3565b34801561035a575f80fd5b506103846103693660046112b6565b5f6020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101b3565b3480156103a8575f80fd5b506103bc6103b7366004611349565b6107d0565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b3565b3480156103ec575f80fd5b5061022b6103e781565b348015610401575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610434575f80fd5b506001546002546104819173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845267ffffffffffffffff909216602084015260070b908201526060016101b3565b3480156104ca575f80fd5b506103bc73333333333333333333333333333333333333333381565b3480156104f1575f80fd5b50610384610500366004611443565b61090a565b610518610513366004611478565b610915565b005b348015610525575f80fd5b506105396105343660046111cd565b610a32565b6040516101b393929190611491565b348015610553575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610586575f80fd5b5061030a604080516060810182525f8082526020820181905291810191909152506040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900467ffffffffffffffff16602082015260045460070b9181019190915290565b34801561060f575f80fd5b506103bc61080181565b348015610624575f80fd5b5061038461045181565b348015610639575f80fd5b50610384609681565b34801561064d575f80fd5b5061051861065c3660046114af565b610a6a565b34801561066c575f80fd5b506003546004546104819173ffffffffffffffffffffffffffffffffffffffff8116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b3480156106c4575f80fd5b506106d86106d33660046114d7565b610b0f565b6040805182518152602080840151908201529181015167ffffffffffffffff16908201526060016101b3565b34801561070f575f80fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b60606107438383610c45565b90505b92915050565b604080518082018252600181527f010000000000000000000000000000000000000000000000000000000000000060208083019190915282518084018452600381527d0600000000000000000000000000000000000000000000000000000000008183015292516107be9391016114fe565b60405160208183030381529060405281565b5f806107db84610c8f565b90505f6107e786610cba565b905073ffffffffffffffffffffffffffffffffffffffff81166109015785516040515f917f09b34731000000000000000000000000000000000000000000000000000000009161083b918a9160240161152c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506108c5818487610d1d565b6040517f4f9520330000000000000000000000000000000000000000000000000000000081526004016108f891906112a4565b60405180910390fd5b95945050505050565b5f6107438383610d78565b333014610950576040517f5950c85e0000000000000000000000000000000000000000000000000000000081523360048201526024016108f8565b5f34118015610974575073ffffffffffffffffffffffffffffffffffffffff811615155b15610a2f575f8173ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f81146109cf576040519150601f19603f3d011682016040523d82523d5f602084013e6109d4565b606091505b5050905080610a2d576040517fc8ee485e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201523460248201526044016108f8565b505b50565b5f8060605f610a418686610e8c565b90505f610a4e8787610ea4565b90505f610a5b8888610eb3565b92989197509195509350505050565b333014610aa5576040517f5950c85e0000000000000000000000000000000000000000000000000000000081523360048201526024016108f8565b5f81118015610ac9575073ffffffffffffffffffffffffffffffffffffffff821615155b15610a2d57610a2d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610ec2565b610b3a60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b604080516060810182525f80825260208201819052918101829052908315610bcd576040805160608101825260015473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260025460070b93830193909352909350610bc691610d78565b9050610c3a565b6040805160608101825260035473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff166020830181905260045460070b93830193909352909350610c3791610d78565b90505b610901858284610f54565b6060610c54826044818661154d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b5f8173ffffffffffffffffffffffffffffffffffffffff8111610cb25792915050565b505f92915050565b80515f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec8101610cf857610cee83611574565b60601c9392505050565b60208103610cb2575f610d0a846115c3565b9050610d1581610c8f565b949350505050565b606060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200185815250604051602001610d609190611605565b60405160208183030381529060405290509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015267ffffffffffffffff8316818301528151808203830181526060918201928390525f9283929161080191610dcc9190611649565b5f60405180830381855afa9150503d805f8114610e04576040519150601f19603f3d011682016040523d82523d5f602084013e610e09565b606091505b50909250905081610e6e576040517fa91ed72100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015267ffffffffffffffff851660248201526044016108f8565b80806020019051810190610e829190611664565b5195945050505050565b5f610e9b602c600c848661154d565b610743916116d4565b5f610e9b604c602c848661154d565b6060610c5482604c818661154d565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610f4f90849061102f565b505050565b610f7f60405180606001604052805f81526020015f81526020015f67ffffffffffffffff1681525090565b5f805f80610f958767ffffffffffffffff6110d4565b90505f866040015160070b1315610fc157610fb5888288604001516110fc565b91955093509150611003565b610ffb888288604001517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ff6919061173d565b611175565b919550935091505b5060408051606081018252938452602084019290925267ffffffffffffffff1690820152949350505050565b5f8060205f8451602086015f885af18061104e576040513d5f823e3d81fd5b50505f513d9150811561106557806001141561107f565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156110ce576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016108f8565b50505050565b5f8167ffffffffffffffff168367ffffffffffffffff16116110f65782610743565b50919050565b5f80808061110b85600a611881565b90505f6111228267ffffffffffffffff8916611896565b905061112e82896118da565b935061113a84896118ed565b975061114688826111bf565b945061115285896118ed565b61115c9085611900565b93506111688286611913565b9250505093509350939050565b5f80808061118485600a611881565b90505f61119b8267ffffffffffffffff8916611913565b90506111a788826111bf565b94506111b385896118ed565b93506111688286611896565b5f8183116110f65782610743565b5f80602083850312156111de575f80fd5b823567ffffffffffffffff808211156111f5575f80fd5b818501915085601f830112611208575f80fd5b813581811115611216575f80fd5b866020828501011115611227575f80fd5b60209290920196919550909350505050565b5f5b8381101561125357818101518382015260200161123b565b50505f910152565b5f8151808452611272816020860160208601611239565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610743602083018461125b565b5f602082840312156112c6575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611341576113416112cd565b604052919050565b5f805f6060848603121561135b575f80fd5b833567ffffffffffffffff80821115611372575f80fd5b818601915086601f830112611385575f80fd5b8135602082821115611399576113996112cd565b6113c9817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016112fa565b925081835288818386010111156113de575f80fd5b81818501828501375f9183018101919091529097908601359650604090950135949350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611429575f80fd5b919050565b67ffffffffffffffff81168114610a2f575f80fd5b5f8060408385031215611454575f80fd5b61145d83611406565b9150602083013561146d8161142e565b809150509250929050565b5f60208284031215611488575f80fd5b61074382611406565b838152826020820152606060408201525f610901606083018461125b565b5f80604083850312156114c0575f80fd5b6114c983611406565b946020939093013593505050565b5f80604083850312156114e8575f80fd5b823591506020830135801515811461146d575f80fd5b5f835161150f818460208801611239565b835190830190611523818360208801611239565b01949350505050565b604081525f61153e604083018561125b565b90508260208301529392505050565b5f808585111561155b575f80fd5b83861115611567575f80fd5b5050820193919092039150565b5f815160208301517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808216935060148310156115bb5780818460140360031b1b83161693505b505050919050565b805160208083015191908110156110f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152610d15608084018261125b565b5f825161165a818460208701611239565b9190910192915050565b5f60608284031215611674575f80fd5b6040516060810181811067ffffffffffffffff82111715611697576116976112cd565b60405282516116a58161142e565b815260208301516116b58161142e565b602082015260408301516116c88161142e565b60408201529392505050565b80356020831015610746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260070b8260070b028060070b915080821461175c5761175c611710565b5092915050565b600181815b808511156117bc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156117a2576117a2611710565b808516156117af57918102915b93841c9390800290611768565b509250929050565b5f826117d257506001610746565b816117de57505f610746565b81600181146117f457600281146117fe5761181a565b6001915050610746565b60ff84111561180f5761180f611710565b50506001821b610746565b5060208310610133831016604e8410600b841016171561183d575081810a610746565b6118478383611763565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561187957611879611710565b029392505050565b5f61074367ffffffffffffffff8416836117c4565b808202811582820484141761074657610746611710565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826118e8576118e86118ad565b500690565b8181038181111561074657610746611710565b8082018082111561074657610746611710565b5f82611921576119216118ad565b50049056fea2646970667358221220e242f388039aaf936317a7762f3a92beb458f4960c8b06da6a97bfc4cfd97ac664736f6c63430008160033","sourceMap":"731:10908:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:133;;;;;;;;;;-1:-1:-1;11504:133:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1235:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:99;;;;;;;;;;;;;:::i;1701:51::-;;;;;;;;;;;;1749:3;1701:51;;;;;1567:25:84;;;1555:2;1540:18;1701:51:1;1421:177:84;1178:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10906:98;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;10982:15:1;;;;;;;;10989:8;10982:15;;;;;;;;;;;;;;;;;;;;;;;;;;;10906:98;;;;;1829:13:84;;1844:42;1825:62;1807:81;;1948:4;1936:17;;;1930:24;1956:18;1926:49;1904:20;;;1897:79;2034:17;;;2028:24;2025:1;2014:39;1992:20;;;1985:69;1795:2;1780:18;10906:98:1;1603:457:84;2102:52:1;;;;;;;;;;-1:-1:-1;2102:52:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;2424:18:84;2412:31;;;2394:50;;2382:2;2367:18;2102:52:1;2250:200:84;3636:1090:1;;;;;;;;;;-1:-1:-1;3636:1090:1;;;;;:::i;:::-;;:::i;:::-;;;4124:42:84;4112:55;;;4094:74;;4082:2;4067:18;3636:1090:1;3948:226:84;1758:51:1;;;;;;;;;;;;1806:3;1758:51;;2161:33;;;;;;;;;;;;;;;2268:27;;;;;;;;;;-1:-1:-1;2268:27:1;;;;;;;;;;;;;;;;;;;;;;;;;4405:42:84;4393:55;;;4375:74;;4497:18;4485:31;;;4480:2;4465:18;;4458:59;4564:1;4553:21;4533:18;;;4526:49;4363:2;4348:18;2268:27:1;4179:402:84;1416:84:1;;;;;;;;;;;;1458:42;1416:84;;6006:151;;;;;;;;;;-1:-1:-1;6006:151:1;;;;;:::i;:::-;;:::i;10504:396::-;;;;;;:::i;:::-;;:::i;:::-;;2898:732;;;;;;;;;;-1:-1:-1;2898:732:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2201:25::-;;;;;;;;;;;;;;;11010:100;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;11087:16:1;;;;;;;;11094:9;11087:16;;;;;;;;;;;;;;;;;;;;;;;;;;;11010:100;1506:101;;;;;;;;;;;;1565:42;1506:101;;1909:48;;;;;;;;;;;;1953:4;1909:48;;2048:47;;;;;;;;;;;;2092:3;2048:47;;9450:217;;;;;;;;;;-1:-1:-1;9450:217:1;;;;;:::i;:::-;;:::i;2301:28::-;;;;;;;;;;-1:-1:-1;2301:28:1;;;;;;;;;;;;;;;;;;;;;5141:604;;;;;;;;;;-1:-1:-1;5141:604:1;;;;;:::i;:::-;;:::i;:::-;;;;6883:13:84;;6865:32;;6953:4;6941:17;;;6935:24;6913:20;;;6906:54;7008:17;;;7002:24;7028:18;6998:49;6976:20;;;6969:79;6853:2;6838:18;5141:604:1;6649:405:84;2232:29:1;;;;;;;;;;;;;;;11504:133;11573:12;11604:26;:4;;:24;:26::i;:::-;11597:33;;11504:133;;;;;:::o;1296:99::-;1354:19;;;;;;;;;;;;;;;;;;;;1375;;;;;;;;;;;;;;;1337:58;;;;1375:19;1337:58;;:::i;:::-;;;;;;;;;;;;;1296:99;:::o;3636:1090::-;3799:7;3997:14;4014:40;:14;:38;:40::i;:::-;3997:57;;4064:16;4083:40;:14;:38;:40::i;:::-;4064:59;-1:-1:-1;4303:22:1;;;4299:395;;4546:21;;4363:218;;4341:19;;4403:93;;4363:218;;4514:14;;4363:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4638:44:1;4363:218;4664:6;4672:9;4638:25;:44::i;:::-;4602:81;;;;;;;;;;;:::i;:::-;;;;;;;;4299:395;4711:8;3636:1090;-1:-1:-1;;;;;3636:1090:1:o;6006:151::-;6089:6;6114:36;6134:5;6141:8;6114:19;:36::i;10504:396::-;1012:10;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4094:74:84;4067:18;;1062:82:1;3948:226:84;1008:147:1;10612:1:::1;10600:9;:13;:45;;;;-1:-1:-1::0;10617:28:1::1;::::0;::::1;::::0;::::1;10600:45;10596:298;;;10662:12;10680:14;:19;;10708:9;10680:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10661:62;;;10742:7;10737:147;;10776:93;::::0;::::1;::::0;;8510:42:84;8498:55;;10776:93:1::1;::::0;::::1;8480:74:84::0;10859:9:1::1;8570:18:84::0;;;8563:34;8453:18;;10776:93:1::1;8306:297:84::0;10737:147:1::1;10647:247;10596:298;10504:396:::0;:::o;2898:732::-;2979:7;2988;2997:12;3210:16;3229:44;3257:15;;3229:27;:44::i;:::-;3210:63;;3283:26;3312:47;3343:15;;3312:30;:47::i;:::-;3283:76;;3485:26;3514:46;3544:15;;3514:29;:46::i;:::-;3579:8;;3589:18;;-1:-1:-1;3579:8:1;;-1:-1:-1;2898:732:1;-1:-1:-1;;;;2898:732:1:o;9450:217::-;1012:10;1034:4;1012:27;1008:147;;1062:82;;;;;1133:10;1062:82;;;4094:74:84;4067:18;;1062:82:1;3948:226:84;1008:147:1;9558:1:::1;9548:7;:11;:43;;;;-1:-1:-1::0;9563:28:1::1;::::0;::::1;::::0;::::1;9548:43;9544:117;;;9607:43;:18;:5;:18;9626:14:::0;9642:7;9607:18:::1;:43::i;5141:604::-:0;5222:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;5222:24:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;5334:325:1;;;;5360:16;;;;;;;;5368:8;5360:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5417:70:1;;:19;:70::i;:::-;5390:97;;5334:325;;;5518:17;;;;;;;;5526:9;5518:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5576:72:1;;:19;:72::i;:::-;5549:99;;5334:325;5676:62;:7;5706:24;5732:5;5676:29;:62::i;9725:124:7:-;9798:12;9829:13;:4;9834:6;9829:4;;:13;:::i;:::-;9822:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9822:20:7;;9725:124;-1:-1:-1;;;;;;9725:124:7:o;8217:302::-;8299:7;8352:16;8402:17;8383:36;;8379:107;;8458:15;8217:302;-1:-1:-1;;8217:302:7:o;8379:107::-;-1:-1:-1;8510:1:7;;8217:302;-1:-1:-1;;8217:302:7:o;8825:492::-;8946:21;;8910:7;;8981:45;;;8977:307;;9057:23;9065:14;9057:23;:::i;:::-;9049:32;;;8825:492;-1:-1:-1;;;8825:492:7:o;8977:307::-;1004:2;9102:6;:45;9098:186;;9163:23;9189;9197:14;9189:23;:::i;:::-;9163:49;;9233:40;9257:15;9233:23;:40::i;:::-;9226:47;8825:492;-1:-1:-1;;;;8825:492:7:o;10228:333::-;10373:12;10444:96;;;;;;;;10476:7;10444:96;;;;;;10499:9;10444:96;;;;10524:13;10444:96;;;10416:138;;;;;;;;:::i;:::-;;;;;;;;;;;;;10397:157;;10228:333;;;;;:::o;6418:480:1:-;6635:27;;;6591:43;10448:55:84;;6635:27:1;;;10430:74:84;10552:18;10540:31;;10520:18;;;10513:59;6635:27:1;;;;;;;;;6542:19;10403:18:84;;;6635:27:1;;;;-1:-1:-1;;;;6542:19:1;1565:42;;6591:72;;6635:27;6591:72;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6571:92:1;;-1:-1:-1;6571:92:1;-1:-1:-1;6571:92:1;6673:136;;6708:90;;;;;10460:42:84;10448:55;;6708:90:1;;;10430:74:84;10552:18;10540:31;;10520:18;;;10513:59;10403:18;;6708:90:1;10258:320:84;6673:136:1;6836:6;6825:60;;;;;;;;;;;;:::i;:::-;:66;;6418:480;-1:-1:-1;;;;;6418:480:1:o;1676:150:36:-;1738:7;1780:37;282:2;232;1780:4;;:37;:::i;:::-;1772:46;;;:::i;1989:149::-;2054:7;2088:42;335:2;282;2088:4;;:42;:::i;2273:128::-;2337:12;2368:26;:4;335:2;2368:4;;:26;:::i;1271:160:69:-;1380:43;;;1395:14;8498:55:84;;1380:43:69;;;8480:74:84;8570:18;;;;8563:34;;;1380:43:69;;;;;;;;;;8453:18:84;;;;1380:43:69;;;;;;;;;;;;;;1353:71;;1373:5;;1353:19;:71::i;:::-;1271:160;;;:::o;3017:1788:7:-;3172:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;3172:24:7;3208:17;3235:12;3257:17;3285:32;3320:66;3328:18;533:16;3320:7;:66::i;:::-;3285:101;;4237:1;4216:6;:18;;;:22;;;4212:502;;;4286:174;4352:7;4377:25;4427:6;:18;;;4286:48;:174::i;:::-;4254:206;;-1:-1:-1;4254:206:7;-1:-1:-1;4254:206:7;-1:-1:-1;4212:502:7;;;4523:180;4590:7;4615:25;4670:6;:18;;;4665:2;:23;;;;:::i;:::-;4523:49;:180::i;:::-;4491:212;;-1:-1:-1;4491:212:7;-1:-1:-1;4491:212:7;-1:-1:-1;4212:502:7;-1:-1:-1;4731:67:7;;;;;;;;;;;;;;;;;;;;;;;;;3017:1788;-1:-1:-1;;;;3017:1788:7:o;7738:720:69:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:69;8278:8;8234:16;;-1:-1:-1;8310:15:69;;:68;;8362:11;8377:1;8362:16;;8310:68;;;8328:26;;;;:31;8310:68;8306:146;;;8401:40;;;;;4124:42:84;4112:55;;8401:40:69;;;4094:74:84;4067:18;;8401:40:69;3948:226:84;8306:146:69;7808:650;;7738:720;;:::o;10684:107:7:-;10744:6;10774:1;10770:5;;:1;:5;;;:13;;10782:1;10770:13;;;-1:-1:-1;10778:1:7;10684:107;-1:-1:-1;10684:107:7:o;5356:1098::-;5545:17;;;;5623:23;5629:17;5623:2;:23;:::i;:::-;5607:39;-1:-1:-1;5656:31:7;5690:34;5607:39;5690:34;;;;:::i;:::-;5656:68;-1:-1:-1;5883:15:7;5893:5;5883:7;:15;:::i;:::-;5876:22;-1:-1:-1;5918:14:7;5876:22;5918:7;:14;:::i;:::-;5908:24;;6183:42;6192:7;6201:23;6183:8;:42::i;:::-;6171:54;-1:-1:-1;6250:19:7;6171:54;6250:7;:19;:::i;:::-;6242:28;;:4;:28;:::i;:::-;6235:35;-1:-1:-1;6429:17:7;6441:5;6429:9;:17;:::i;:::-;6409:38;;5597:857;;5356:1098;;;;;;;:::o;6989:915::-;7179:17;;;;7257:23;7263:17;7257:2;:23;:::i;:::-;7241:39;-1:-1:-1;7290:31:7;7324:34;7241:39;7324:34;;;;:::i;:::-;7290:68;;7642:42;7651:7;7660:23;7642:8;:42::i;:::-;7630:54;-1:-1:-1;7701:19:7;7630:54;7701:7;:19;:::i;:::-;7694:26;-1:-1:-1;7879:17:7;7891:5;7879:9;:17;:::i;10567:111::-;10630:7;10661:1;10657;:5;:13;;10669:1;10657:13;;14:591:84;84:6;92;145:2;133:9;124:7;120:23;116:32;113:52;;;161:1;158;151:12;113:52;201:9;188:23;230:18;271:2;263:6;260:14;257:34;;;287:1;284;277:12;257:34;325:6;314:9;310:22;300:32;;370:7;363:4;359:2;355:13;351:27;341:55;;392:1;389;382:12;341:55;432:2;419:16;458:2;450:6;447:14;444:34;;;474:1;471;464:12;444:34;519:7;514:2;505:6;501:2;497:15;493:24;490:37;487:57;;;540:1;537;530:12;487:57;571:2;563:11;;;;;593:6;;-1:-1:-1;14:591:84;;-1:-1:-1;;;;14:591:84:o;610:250::-;695:1;705:113;719:6;716:1;713:13;705:113;;;795:11;;;789:18;776:11;;;769:39;741:2;734:10;705:113;;;-1:-1:-1;;852:1:84;834:16;;827:27;610:250::o;865:329::-;906:3;944:5;938:12;971:6;966:3;959:19;987:76;1056:6;1049:4;1044:3;1040:14;1033:4;1026:5;1022:16;987:76;:::i;:::-;1108:2;1096:15;1113:66;1092:88;1083:98;;;;1183:4;1079:109;;865:329;-1:-1:-1;;865:329:84:o;1199:217::-;1346:2;1335:9;1328:21;1309:4;1366:44;1406:2;1395:9;1391:18;1383:6;1366:44;:::i;2065:180::-;2124:6;2177:2;2165:9;2156:7;2152:23;2148:32;2145:52;;;2193:1;2190;2183:12;2145:52;-1:-1:-1;2216:23:84;;2065:180;-1:-1:-1;2065:180:84:o;2455:184::-;2507:77;2504:1;2497:88;2604:4;2601:1;2594:15;2628:4;2625:1;2618:15;2644:334;2715:2;2709:9;2771:2;2761:13;;2776:66;2757:86;2745:99;;2874:18;2859:34;;2895:22;;;2856:62;2853:88;;;2921:18;;:::i;:::-;2957:2;2950:22;2644:334;;-1:-1:-1;2644:334:84:o;2983:960::-;3069:6;3077;3085;3138:2;3126:9;3117:7;3113:23;3109:32;3106:52;;;3154:1;3151;3144:12;3106:52;3194:9;3181:23;3223:18;3264:2;3256:6;3253:14;3250:34;;;3280:1;3277;3270:12;3250:34;3318:6;3307:9;3303:22;3293:32;;3363:7;3356:4;3352:2;3348:13;3344:27;3334:55;;3385:1;3382;3375:12;3334:55;3421:2;3408:16;3443:4;3466:2;3462;3459:10;3456:36;;;3472:18;;:::i;:::-;3514:112;3622:2;3553:66;3546:4;3542:2;3538:13;3534:86;3530:95;3514:112;:::i;:::-;3501:125;;3649:2;3642:5;3635:17;3689:7;3684:2;3679;3675;3671:11;3667:20;3664:33;3661:53;;;3710:1;3707;3700:12;3661:53;3765:2;3760;3756;3752:11;3747:2;3740:5;3736:14;3723:45;3809:1;3788:14;;;3784:23;;3777:34;;;;3792:5;;3867:18;;;3854:32;;-1:-1:-1;3933:2:84;3918:18;;;3905:32;;2983:960;-1:-1:-1;;;;2983:960:84:o;4586:196::-;4654:20;;4714:42;4703:54;;4693:65;;4683:93;;4772:1;4769;4762:12;4683:93;4586:196;;;:::o;4787:129::-;4872:18;4865:5;4861:30;4854:5;4851:41;4841:69;;4906:1;4903;4896:12;4921:319;4988:6;4996;5049:2;5037:9;5028:7;5024:23;5020:32;5017:52;;;5065:1;5062;5055:12;5017:52;5088:29;5107:9;5088:29;:::i;:::-;5078:39;;5167:2;5156:9;5152:18;5139:32;5180:30;5204:5;5180:30;:::i;:::-;5229:5;5219:15;;;4921:319;;;;;:::o;5245:186::-;5304:6;5357:2;5345:9;5336:7;5332:23;5328:32;5325:52;;;5373:1;5370;5363:12;5325:52;5396:29;5415:9;5396:29;:::i;5436:359::-;5639:6;5628:9;5621:25;5682:6;5677:2;5666:9;5662:18;5655:34;5725:2;5720;5709:9;5705:18;5698:30;5602:4;5745:44;5785:2;5774:9;5770:18;5762:6;5745:44;:::i;6044:254::-;6112:6;6120;6173:2;6161:9;6152:7;6148:23;6144:32;6141:52;;;6189:1;6186;6179:12;6141:52;6212:29;6231:9;6212:29;:::i;:::-;6202:39;6288:2;6273:18;;;;6260:32;;-1:-1:-1;;;6044:254:84:o;6303:341::-;6368:6;6376;6429:2;6417:9;6408:7;6404:23;6400:32;6397:52;;;6445:1;6442;6435:12;6397:52;6481:9;6468:23;6458:33;;6541:2;6530:9;6526:18;6513:32;6588:5;6581:13;6574:21;6567:5;6564:32;6554:60;;6610:1;6607;6600:12;7306:492;7481:3;7519:6;7513:13;7535:66;7594:6;7589:3;7582:4;7574:6;7570:17;7535:66;:::i;:::-;7664:13;;7623:16;;;;7686:70;7664:13;7623:16;7733:4;7721:17;;7686:70;:::i;:::-;7772:20;;7306:492;-1:-1:-1;;;;7306:492:84:o;7803:288::-;7978:2;7967:9;7960:21;7941:4;7998:44;8038:2;8027:9;8023:18;8015:6;7998:44;:::i;:::-;7990:52;;8078:6;8073:2;8062:9;8058:18;8051:34;7803:288;;;;;:::o;8608:331::-;8713:9;8724;8766:8;8754:10;8751:24;8748:44;;;8788:1;8785;8778:12;8748:44;8817:6;8807:8;8804:20;8801:40;;;8837:1;8834;8827:12;8801:40;-1:-1:-1;;8863:23:84;;;8908:25;;;;;-1:-1:-1;8608:331:84:o;8944:410::-;9028:5;9068;9062:12;9110:4;9103:5;9099:16;9093:23;9135:66;9227:2;9223;9219:11;9210:20;;9253:2;9245:6;9242:14;9239:109;;;9335:2;9329;9319:6;9315:2;9311:15;9308:1;9304:23;9300:32;9296:2;9292:41;9288:50;9279:59;;9239:109;;;;8944:410;;;:::o;9359:357::-;9477:12;;9524:4;9513:16;;;9507:23;;9477:12;9542:16;;9539:171;;;9632:66;9616:4;9612:17;;;;9609:1;9605:25;9601:98;9590:110;;9359:357;-1:-1:-1;9359:357:84:o;9721:532::-;9924:2;9913:9;9906:21;9982:42;9973:6;9967:13;9963:62;9958:2;9947:9;9943:18;9936:90;10080:2;10072:6;10068:15;10062:22;10057:2;10046:9;10042:18;10035:50;9887:4;10132:2;10124:6;10120:15;10114:22;10174:4;10167;10156:9;10152:20;10145:34;10196:51;10242:3;10231:9;10227:19;10213:12;10196:51;:::i;10583:287::-;10712:3;10750:6;10744:13;10766:66;10825:6;10820:3;10813:4;10805:6;10801:17;10766:66;:::i;:::-;10848:16;;;;;10583:287;-1:-1:-1;;10583:287:84:o;10875:774::-;10974:6;11027:2;11015:9;11006:7;11002:23;10998:32;10995:52;;;11043:1;11040;11033:12;10995:52;11076:2;11070:9;11118:2;11110:6;11106:15;11187:6;11175:10;11172:22;11151:18;11139:10;11136:34;11133:62;11130:88;;;11198:18;;:::i;:::-;11234:2;11227:22;11271:16;;11296:30;11271:16;11296:30;:::i;:::-;11335:21;;11401:2;11386:18;;11380:25;11414:32;11380:25;11414:32;:::i;:::-;11474:2;11462:15;;11455:32;11532:2;11517:18;;11511:25;11545:32;11511:25;11545:32;:::i;:::-;11605:2;11593:15;;11586:32;11597:6;10875:774;-1:-1:-1;;;10875:774:84:o;11654:315::-;11774:19;;11813:2;11805:11;;11802:161;;;11885:66;11874:2;11870:12;;;11867:1;11863:20;11859:93;11848:105;11654:315;;;;:::o;11974:184::-;12026:77;12023:1;12016:88;12123:4;12120:1;12113:15;12147:4;12144:1;12137:15;12163:237;12201:7;12278:1;12275;12264:16;12260:1;12257;12246:16;12242:39;12315:11;12312:1;12301:26;12290:37;;12358:11;12349:7;12346:24;12336:58;;12374:18;;:::i;:::-;12336:58;12163:237;;;;:::o;12405:476::-;12494:1;12531:5;12494:1;12545:330;12566:7;12556:8;12553:21;12545:330;;;12685:4;12617:66;12613:77;12607:4;12604:87;12601:113;;;12694:18;;:::i;:::-;12744:7;12734:8;12730:22;12727:55;;;12764:16;;;;12727:55;12843:22;;;;12803:15;;;;12545:330;;;12549:3;12405:476;;;;;:::o;12886:866::-;12935:5;12965:8;12955:80;;-1:-1:-1;13006:1:84;13020:5;;12955:80;13054:4;13044:76;;-1:-1:-1;13091:1:84;13105:5;;13044:76;13136:4;13154:1;13149:59;;;;13222:1;13217:130;;;;13129:218;;13149:59;13179:1;13170:10;;13193:5;;;13217:130;13254:3;13244:8;13241:17;13238:43;;;13261:18;;:::i;:::-;-1:-1:-1;;13317:1:84;13303:16;;13332:5;;13129:218;;13431:2;13421:8;13418:16;13412:3;13406:4;13403:13;13399:36;13393:2;13383:8;13380:16;13375:2;13369:4;13366:12;13362:35;13359:77;13356:159;;;-1:-1:-1;13468:19:84;;;13500:5;;13356:159;13547:34;13572:8;13566:4;13547:34;:::i;:::-;13677:6;13609:66;13605:79;13596:7;13593:92;13590:118;;;13688:18;;:::i;:::-;13726:20;;12886:866;-1:-1:-1;;;12886:866:84:o;13757:155::-;13816:5;13845:61;13886:18;13876:8;13872:33;13866:4;13845:61;:::i;13917:168::-;13990:9;;;14021;;14038:15;;;14032:22;;14018:37;14008:71;;14059:18;;:::i;14090:184::-;14142:77;14139:1;14132:88;14239:4;14236:1;14229:15;14263:4;14260:1;14253:15;14279:112;14311:1;14337;14327:35;;14342:18;;:::i;:::-;-1:-1:-1;14376:9:84;;14279:112::o;14396:128::-;14463:9;;;14484:11;;;14481:37;;;14498:18;;:::i;14529:125::-;14594:9;;;14615:10;;;14612:36;;;14628:18;;:::i;14659:120::-;14699:1;14725;14715:35;;14730:18;;:::i;:::-;-1:-1:-1;14764:9:84;;14659:120::o","linkReferences":{},"immutableReferences":{"584":[{"start":1031,"length":32}],"587":[{"start":1369,"length":32}],"590":[{"start":1813,"length":32},{"start":2792,"length":32}]}},"methodIdentifiers":{"CORE_WRITER_VERSION()":"22dbe29c","HLP_CORE_WRITER()":"7ecd9ac3","HLP_PRECOMPILE_READ_SPOT_BALANCE()":"ba872679","HYPE_CHAIN_ID_MAINNET()":"5b9a2373","HYPE_CHAIN_ID_TESTNET()":"20d9af9a","HYPE_INDEX_MAINNET()":"d00b1ad5","HYPE_INDEX_TESTNET()":"bc963bc7","SPOT_SEND_ACTION_ID()":"0d1995e0","SPOT_SEND_HEADER()":"1f8164d9","balanceOfHyperCore(address,uint64)":"81e8dcb4","endpoint()":"5e280f11","getErrorPayload(bytes)":"03be2050","getHypeAsset()":"aae12e46","getOFTAsset()":"2d0e315c","hypeAsset()":"f6e6b240","hypeIndexByChainId(uint256)":"4bd162df","oft()":"9b5215f6","oftAsset()":"765008a1","quoteHyperCoreAmount(uint256,bool)":"f9716faf","refundERC20(address,uint256)":"ebaeefd6","refundNativeTokens(address)":"8483bc00","token()":"fc0c546a","validate_addresses_or_refund(bytes,bytes32,uint256)":"5241b496","validate_message(bytes)":"9180b744"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_endpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oft\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"errorMessage\",\"type\":\"bytes\"}],\"name\":\"ErrorMsg\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"tokenId\",\"type\":\"uint64\"}],\"name\":\"HyperLiquidComposerCore_SpotBalanceRead_Failed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"HyperLiquidComposer_FailedToRefund_HYPE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receivedEndpointAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"notComposerAddress\",\"type\":\"address\"}],\"name\":\"HyperLiquidComposer_InvalidCall_NotComposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ErrorERC20_Refund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ErrorHYPE_Refund\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"ErrorMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"tokenId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"errorMessage\",\"type\":\"bytes\"}],\"name\":\"ErrorSpot_FailedToSend\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"ExcessHYPE_Refund\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CORE_WRITER_VERSION\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HLP_CORE_WRITER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HLP_PRECOMPILE_READ_SPOT_BALANCE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_CHAIN_ID_MAINNET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_CHAIN_ID_TESTNET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_INDEX_MAINNET\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HYPE_INDEX_TESTNET\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SPOT_SEND_ACTION_ID\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SPOT_SEND_HEADER\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_tokenId\",\"type\":\"uint64\"}],\"name\":\"balanceOfHyperCore\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_err\",\"type\":\"bytes\"}],\"name\":\"getErrorPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHypeAsset\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"internalType\":\"struct IHyperAsset\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOFTAsset\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"internalType\":\"struct IHyperAsset\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hypeAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"hypeIndexByChainId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oft\",\"outputs\":[{\"internalType\":\"contract IOFT\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetBridgeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"coreIndexId\",\"type\":\"uint64\"},{\"internalType\":\"int64\",\"name\":\"decimalDiff\",\"type\":\"int64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isOFT\",\"type\":\"bool\"}],\"name\":\"quoteHyperCoreAmount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"evm\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dust\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"core\",\"type\":\"uint64\"}],\"internalType\":\"struct IHyperAssetAmount\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"refundERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"refundNativeTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_maybeReceiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_senderBytes32\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_amountLD\",\"type\":\"uint256\"}],\"name\":\"validate_addresses_or_refund\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_composeMessage\",\"type\":\"bytes\"}],\"name\":\"validate_message\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"balanceOfHyperCore(address,uint64)\":{\"params\":{\"_tokenId\":\"The token id of the hypercore\",\"_user\":\"The address of the user\"},\"returns\":{\"_0\":\"The balance of the user in the hypercore\"}},\"getErrorPayload(bytes)\":{\"details\":\"Strips out the revert message to extract the payload ErrorMsg(bytes errorMessage) - ('0x' + 32 bytes) * 2 = 64 bytes\",\"params\":{\"_err\":\"The bytes array to extract the error payload from\"},\"returns\":{\"_0\":\"The error payload\"}},\"quoteHyperCoreAmount(uint256,bool)\":{\"params\":{\"_amount\":\"The amount of tokens to send\",\"_isOFT\":\"Whether the amount is an OFT amount or a HYPE amount\"},\"returns\":{\"_0\":\"IHyperAssetAmount - The amount of tokens to send to HyperCore (scaled on evm), dust (to be refunded), and the swap amount (of the tokens scaled on hypercore)\"}},\"refundERC20(address,uint256)\":{\"details\":\"If the refund address is set to the zero address - it means that the transaction sender is a non-evm address and the receiver is malformed.In this case, the tokens are locked in the composer.\",\"params\":{\"_amount\":\"The amount of tokens to refund\",\"_refundAddress\":\"The address to refund the ERC20 tokens to\"}},\"refundNativeTokens(address)\":{\"details\":\"It is possible that the refund address is a contract without fallback or receive functions - in that case the transfer fails and tokens will be locked in the contract.Since this is an external function - the msg.value can be different to the msg.value sent to the lzCompose function by tx.originIt is different in the case of a partial refund where the call is:`this.refundNativeTokens{ value: amounts.dust }(_receiver)`In this case, the msg.value is the amount of the dust and not the msg.value sent to the lzCompose function by tx.origin\",\"params\":{\"_refundAddress\":\"The address to refund the native tokens to\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOfHyperCore(address,uint64)\":{\"notice\":\"External function to read the balance of the user in the hypercore\"},\"getErrorPayload(bytes)\":{\"notice\":\"Extracts the error payload from a bytes arrayThis function is called by the HyperLiquidComposer contract\"},\"quoteHyperCoreAmount(uint256,bool)\":{\"notice\":\"External function to quote the conversion of evm tokens to hypercore tokens\"},\"refundERC20(address,uint256)\":{\"notice\":\"Refunds the ERC20 tokens to the refund addressThis function is called by the refundTokens function\"},\"refundNativeTokens(address)\":{\"notice\":\"Refunds the native tokens to the refund addressThis function is called by the refundTokens function\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/HyperLiquidComposerCore.sol\":\"HyperLiquidComposerCore\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":hardhat/=node_modules/hardhat/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/HyperLiquidComposerCore.sol\":{\"keccak256\":\"0xb4f46777d68405b375325b28dc5beff5c682fa03476b576101b474cd8aea761e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61ee6c72bd4120d066ed5cb7b80b784a56e5980eaf086bec009408f89dc1228a\",\"dweb:/ipfs/QmZuHbHVDFHk2wSubAouxjNGEMrZNNfPT1Pew3UVPMqk9Q\"]},\"contracts/interfaces/IHyperLiquidComposerCore.sol\":{\"keccak256\":\"0x33755a174cead02c8cb31ff8fa5ed9c72594c41538e7a4c84ee50e93fa0900d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a20aa9d707e340b63d7aadb47354cd70d11b958113f10b0042dab4a29dd4640\",\"dweb:/ipfs/QmWnyLZrAQVSBsFBsePQakpRs9VJ5yVCSrV1gF8QQpH3TC\"]},\"contracts/interfaces/IHyperLiquidComposerErrors.sol\":{\"keccak256\":\"0x49a19161f2daf10880cd130bc098222d48774973b3a3df3cb4fbc30ba4015c10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265f8eaab7ba5c2aac6d4b71dd416b4b59f06f743e97fa3d4a6d6ffd69be23ec\",\"dweb:/ipfs/QmQKJRdAPvexsNtASwJozZNmV365kNP1ZVqknF1w8KprAJ\"]},\"contracts/interfaces/IHyperLiquidReadPrecompile.sol\":{\"keccak256\":\"0x3a6df8d89dca4f7547bbdc912c92315020f88b50c648c55f04fcb3ecb47d9ae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://836bc90fe0705ca588329e218253e375bc76752d762b76e31c5f568be1b9409f\",\"dweb:/ipfs/QmYMRCYqsKho9fHZcC8f4JBPSxx9p6a4zLL7nX8CDoZsXc\"]},\"contracts/library/HyperLiquidComposerCodec.sol\":{\"keccak256\":\"0x8bc30169039c218cb4a47098bc607b41d7630ae36f27cb29481befb32fc47366\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f18928ec2d8b30f233fd0828edc3fbce337ed36a6a4c12c40276d9547062be52\",\"dweb:/ipfs/QmcjKkLEpQUVw7YTzVdq8HJjEYkE5CkaBEBRguV18cjSjW\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol\":{\"keccak256\":\"0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d\",\"dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4\",\"dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.22+commit.4fc1097e"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_endpoint","type":"address"},{"internalType":"address","name":"_oft","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"errorMessage","type":"bytes"}],"type":"error","name":"ErrorMsg"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint64","name":"tokenId","type":"uint64"}],"type":"error","name":"HyperLiquidComposerCore_SpotBalanceRead_Failed"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"type":"error","name":"HyperLiquidComposer_FailedToRefund_HYPE"},{"inputs":[{"internalType":"address","name":"receivedEndpointAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidArgument_EndpointShouldNotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"notComposerAddress","type":"address"}],"type":"error","name":"HyperLiquidComposer_InvalidCall_NotComposer"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ErrorERC20_Refund","anonymous":false},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ErrorHYPE_Refund","anonymous":false},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes","indexed":false}],"type":"event","name":"ErrorMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint64","name":"tokenId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"errorMessage","type":"bytes","indexed":false}],"type":"event","name":"ErrorSpot_FailedToSend","anonymous":false},{"inputs":[{"internalType":"address","name":"refundTo","type":"address","indexed":false},{"internalType":"uint256","name":"refundAmount","type":"uint256","indexed":false}],"type":"event","name":"ExcessHYPE_Refund","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"CORE_WRITER_VERSION","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HLP_CORE_WRITER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_CHAIN_ID_MAINNET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_CHAIN_ID_TESTNET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_INDEX_MAINNET","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HYPE_INDEX_TESTNET","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SPOT_SEND_ACTION_ID","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SPOT_SEND_HEADER","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint64","name":"_tokenId","type":"uint64"}],"stateMutability":"view","type":"function","name":"balanceOfHyperCore","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"endpoint","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_err","type":"bytes"}],"stateMutability":"pure","type":"function","name":"getErrorPayload","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getHypeAsset","outputs":[{"internalType":"struct IHyperAsset","name":"","type":"tuple","components":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getOFTAsset","outputs":[{"internalType":"struct IHyperAsset","name":"","type":"tuple","components":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"hypeAsset","outputs":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"hypeIndexByChainId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oft","outputs":[{"internalType":"contract IOFT","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oftAsset","outputs":[{"internalType":"address","name":"assetBridgeAddress","type":"address"},{"internalType":"uint64","name":"coreIndexId","type":"uint64"},{"internalType":"int64","name":"decimalDiff","type":"int64"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_isOFT","type":"bool"}],"stateMutability":"view","type":"function","name":"quoteHyperCoreAmount","outputs":[{"internalType":"struct IHyperAssetAmount","name":"","type":"tuple","components":[{"internalType":"uint256","name":"evm","type":"uint256"},{"internalType":"uint256","name":"dust","type":"uint256"},{"internalType":"uint64","name":"core","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"_refundAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"refundERC20"},{"inputs":[{"internalType":"address","name":"_refundAddress","type":"address"}],"stateMutability":"payable","type":"function","name":"refundNativeTokens"},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_maybeReceiver","type":"bytes"},{"internalType":"bytes32","name":"_senderBytes32","type":"bytes32"},{"internalType":"uint256","name":"_amountLD","type":"uint256"}],"stateMutability":"pure","type":"function","name":"validate_addresses_or_refund","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_composeMessage","type":"bytes"}],"stateMutability":"pure","type":"function","name":"validate_message","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"balanceOfHyperCore(address,uint64)":{"params":{"_tokenId":"The token id of the hypercore","_user":"The address of the user"},"returns":{"_0":"The balance of the user in the hypercore"}},"getErrorPayload(bytes)":{"details":"Strips out the revert message to extract the payload ErrorMsg(bytes errorMessage) - ('0x' + 32 bytes) * 2 = 64 bytes","params":{"_err":"The bytes array to extract the error payload from"},"returns":{"_0":"The error payload"}},"quoteHyperCoreAmount(uint256,bool)":{"params":{"_amount":"The amount of tokens to send","_isOFT":"Whether the amount is an OFT amount or a HYPE amount"},"returns":{"_0":"IHyperAssetAmount - The amount of tokens to send to HyperCore (scaled on evm), dust (to be refunded), and the swap amount (of the tokens scaled on hypercore)"}},"refundERC20(address,uint256)":{"details":"If the refund address is set to the zero address - it means that the transaction sender is a non-evm address and the receiver is malformed.In this case, the tokens are locked in the composer.","params":{"_amount":"The amount of tokens to refund","_refundAddress":"The address to refund the ERC20 tokens to"}},"refundNativeTokens(address)":{"details":"It is possible that the refund address is a contract without fallback or receive functions - in that case the transfer fails and tokens will be locked in the contract.Since this is an external function - the msg.value can be different to the msg.value sent to the lzCompose function by tx.originIt is different in the case of a partial refund where the call is:`this.refundNativeTokens{ value: amounts.dust }(_receiver)`In this case, the msg.value is the amount of the dust and not the msg.value sent to the lzCompose function by tx.origin","params":{"_refundAddress":"The address to refund the native tokens to"}}},"version":1},"userdoc":{"kind":"user","methods":{"balanceOfHyperCore(address,uint64)":{"notice":"External function to read the balance of the user in the hypercore"},"getErrorPayload(bytes)":{"notice":"Extracts the error payload from a bytes arrayThis function is called by the HyperLiquidComposer contract"},"quoteHyperCoreAmount(uint256,bool)":{"notice":"External function to quote the conversion of evm tokens to hypercore tokens"},"refundERC20(address,uint256)":{"notice":"Refunds the ERC20 tokens to the refund addressThis function is called by the refundTokens function"},"refundNativeTokens(address)":{"notice":"Refunds the native tokens to the refund addressThis function is called by the refundTokens function"}},"version":1}},"settings":{"remappings":["@layerzerolabs/=node_modules/@layerzerolabs/","@openzeppelin/=node_modules/@openzeppelin/","ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/","forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/","hardhat/=node_modules/hardhat/","solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/"],"optimizer":{"enabled":true,"runs":20000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/HyperLiquidComposerCore.sol":"HyperLiquidComposerCore"},"evmVersion":"shanghai","libraries":{}},"sources":{"contracts/HyperLiquidComposerCore.sol":{"keccak256":"0xb4f46777d68405b375325b28dc5beff5c682fa03476b576101b474cd8aea761e","urls":["bzz-raw://61ee6c72bd4120d066ed5cb7b80b784a56e5980eaf086bec009408f89dc1228a","dweb:/ipfs/QmZuHbHVDFHk2wSubAouxjNGEMrZNNfPT1Pew3UVPMqk9Q"],"license":"MIT"},"contracts/interfaces/IHyperLiquidComposerCore.sol":{"keccak256":"0x33755a174cead02c8cb31ff8fa5ed9c72594c41538e7a4c84ee50e93fa0900d9","urls":["bzz-raw://0a20aa9d707e340b63d7aadb47354cd70d11b958113f10b0042dab4a29dd4640","dweb:/ipfs/QmWnyLZrAQVSBsFBsePQakpRs9VJ5yVCSrV1gF8QQpH3TC"],"license":"MIT"},"contracts/interfaces/IHyperLiquidComposerErrors.sol":{"keccak256":"0x49a19161f2daf10880cd130bc098222d48774973b3a3df3cb4fbc30ba4015c10","urls":["bzz-raw://265f8eaab7ba5c2aac6d4b71dd416b4b59f06f743e97fa3d4a6d6ffd69be23ec","dweb:/ipfs/QmQKJRdAPvexsNtASwJozZNmV365kNP1ZVqknF1w8KprAJ"],"license":"MIT"},"contracts/interfaces/IHyperLiquidReadPrecompile.sol":{"keccak256":"0x3a6df8d89dca4f7547bbdc912c92315020f88b50c648c55f04fcb3ecb47d9ae0","urls":["bzz-raw://836bc90fe0705ca588329e218253e375bc76752d762b76e31c5f568be1b9409f","dweb:/ipfs/QmYMRCYqsKho9fHZcC8f4JBPSxx9p6a4zLL7nX8CDoZsXc"],"license":"MIT"},"contracts/library/HyperLiquidComposerCodec.sol":{"keccak256":"0x8bc30169039c218cb4a47098bc607b41d7630ae36f27cb29481befb32fc47366","urls":["bzz-raw://f18928ec2d8b30f233fd0828edc3fbce337ed36a6a4c12c40276d9547062be52","dweb:/ipfs/QmcjKkLEpQUVw7YTzVdq8HJjEYkE5CkaBEBRguV18cjSjW"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol":{"keccak256":"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49","urls":["bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf","dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"keccak256":"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3","urls":["bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083","dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"keccak256":"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc","urls":["bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b","dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"keccak256":"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972","urls":["bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927","dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"keccak256":"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901","urls":["bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d","dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk"],"license":"MIT"},"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"keccak256":"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e","urls":["bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6","dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"keccak256":"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc","urls":["bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0","dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"keccak256":"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20","urls":["bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2","dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol":{"keccak256":"0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae","urls":["bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d","dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx"],"license":"MIT"},"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"keccak256":"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58","urls":["bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd","dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv"],"license":"MIT"},"node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"keccak256":"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8","urls":["bzz-raw://cfbd447f2e8a730bd46a14c3c3e6a0b2bf7446145579603a9793ba5ac1dd38b4","dweb:/ipfs/QmZ4nx4iGrFmBHvYFgki5TXFdCHz4Co38hgdgwpRaM7NLs"],"license":"MIT"},"node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"keccak256":"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5","urls":["bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e","dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"}},"version":1},"id":1}