0 txs
19 calls
constructor
constructor(address _lzEndpoint, address _owner, address _trustedBroadcaster, uint32 _trustedChainId)
functions
allowInitializePath
viewfunction allowInitializePath(tuple origin) view returns (bool)
endpoint
viewfunction endpoint() view returns (address)
executor
viewfunction executor() view returns (address)
getVaultConfig
viewfunction getVaultConfig(address vault) view returns (tuple)
isComposeMsgSender
viewfunction isComposeMsgSender(tuple, bytes, address _sender) view returns (bool)
isRebalanceInitiated
viewfunction isRebalanceInitiated() view returns (bool)
isVaultActionInitiated
viewfunction isVaultActionInitiated() view returns (bool)
nextNonce
viewfunction nextNonce(uint32, bytes32) view returns (uint64 nonce)
oAppVersion
purefunction oAppVersion() pure returns (uint64 senderVersion, uint64 receiverVersion)
owner
viewfunction owner() view returns (address)
peers
viewfunction peers(uint32 eid) view returns (bytes32 peer)
setPeer
purefunction setPeer(uint32, bytes32) pure
strategyConfig
viewfunction strategyConfig(address) view returns (address control)
TRUSTED_BROADCASTER_ADDRESS
viewfunction TRUSTED_BROADCASTER_ADDRESS() view returns (address)
TRUSTED_BROADCASTER
viewfunction TRUSTED_BROADCASTER() view returns (bytes32)
TRUSTED_CHAIN_ID
viewfunction TRUSTED_CHAIN_ID() view returns (uint32)
executeRebalance
nonpayablefunction executeRebalance(address safe, address vault, tuple[] rebalanceData)
executeVaultAction
nonpayablefunction executeVaultAction(address safe, address vault, address actionController, bytes data)
lzReceive
payablefunction lzReceive(tuple _origin, bytes32 _guid, bytes _message, address _executor, bytes _extraData) payable
processSameChainCall
nonpayablefunction processSameChainCall(bytes message)
renounceOwnership
nonpayablefunction renounceOwnership()
setDelegate
nonpayablefunction setDelegate(address _delegate)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ExecutorSet
event ExecutorSet(address indexed executor)
MessageReceived
event MessageReceived(bytes32 indexed messageId, bytes message)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PeerSet
event PeerSet(uint32 eid, bytes32 peer)
RebalanceExecuted
event RebalanceExecuted(address indexed safe, address indexed vault)
VaultActionExecuted
event VaultActionExecuted(address indexed safe, address indexed vault)
errors
AlreadyInitiated
error AlreadyInitiated()
InvalidActionController
error InvalidActionController()
InvalidBroadcaster
error InvalidBroadcaster()
InvalidDelegate
error InvalidDelegate()
InvalidEndpointCall
error InvalidEndpointCall()
InvalidMessagePayload
error InvalidMessagePayload()
InvalidSelector
error InvalidSelector()
InvalidSourceChain
error InvalidSourceChain()
InvalidVault
error InvalidVault()
InvalidVaultConfig
error InvalidVaultConfig()
LzTokenUnavailable
error LzTokenUnavailable()
NoPeer
error NoPeer(uint32 eid)
NOT_SUPPORTED
error NOT_SUPPORTED()
NotEnoughNative
error NotEnoughNative(uint256 msgValue)
NotExecutor
error NotExecutor()
OnlyEndpoint
error OnlyEndpoint(address addr)
OnlyPeer
error OnlyPeer(uint32 eid, bytes32 sender)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeExecutionError
error SafeExecutionError()
UnauthorizedSameChainCall
error UnauthorizedSameChainCall()
creation bytecode
0x61010080604052346101ba575f90608081613dad803803809161002282856101d1565b8339810103126101ba5761003581610208565b9061004260208201610208565b90606061005160408301610208565b9101519063ffffffff8216928383036101ba576001600160a01b031680156101be575f80546001600160a01b0319811683178255604051969183916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36001600160a01b03166080819052803b156101ba576024865f8193819563ca5eb5e160e01b845260048401525af19384156101af577f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9560409561019d575b85915060018060a01b0383169384938460a05260e05260c0528481526001602052205582519182526020820152a1604051613b90908161021d8239608051818181610dd7015281816121f4015261234d015260a05181818161218701526123d8015260c0518181816110d201526123af015260e051818181610fab01526112250152f35b505f6101a8916101d1565b835f610119565b6040513d5f823e3d90fd5b5f80fd5b631e4fbdf760e01b5f525f60045260245ffd5b601f909101601f19168101906001600160401b038211908210176101f457604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101ba5756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816303e5483a14613639575080630af162231461322e57806313137d65146122b757806317442b70146122785780633400288b146122185780635e280f11146121aa57806362ea91c314612152578063715018a6146120b857806376e9505f146111bf5780637d25a05e1461117d57806382413eac146110f65780638d56ad67146110985780638da5cb5b1461104857806391450e6314610fcf578063947496db14610f61578063b16af32314610f1e578063bb0b6a5314610ecb578063c34c08e514610e77578063ca5eb5e114610d80578063de1eb9a3146109e8578063f2fde38b146108fa578063f996603e146101755763ff7bd03d1461011b575f80fd5b346101725760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760209060409063ffffffff61015d6138bb565b16815260018352205460405190602435148152f35b80fd5b50346101725760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610172576101ad613676565b6101b5613699565b906044359073ffffffffffffffffffffffffffffffffffffffff82168092036108f65760643567ffffffffffffffff81116108f2576101f89036906004016136df565b90926003549473ffffffffffffffffffffffffffffffffffffffff8660101c1633036108ca5773ffffffffffffffffffffffffffffffffffffffff1692838752600260205273ffffffffffffffffffffffffffffffffffffffff604088205416156108a25783156108a257838752600260205260408720956040519661027d886137cf565b73ffffffffffffffffffffffffffffffffffffffff81541688526001810180546102a6816138ce565b916102b46040519384613823565b8183528b526020808c208c9184015b83831061083557505050509060029160208a0152019687546102e4816138ce565b986102f26040519a8b613823565b818a528a526020808b208b918b015b8383106107eb5750505050604081019788525173ffffffffffffffffffffffffffffffffffffffff16156107c35787885b885180518210156107b45773ffffffffffffffffffffffffffffffffffffffff61035d8388936139f5565b5151161461036d57600101610332565b50509091929394955060015b1561078c5760ff8160081c16610764577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61010091161760035583865260026020526040862094604051956103cd876137cf565b73ffffffffffffffffffffffffffffffffffffffff81541687526001810180546103f6816138ce565b916104046040519384613823565b8183528a526020808b208b9184015b8383106106f7575050505090600291602089015201958654610434816138ce565b97610442604051998a613823565b81895289526020808a208a918a015b8383106106ad5750505050604001958652606095875b8151805182101561067c5773ffffffffffffffffffffffffffffffffffffffff6104928388936139f5565b515116146104a257600101610467565b6105b195969750926105516020959373ffffffffffffffffffffffffffffffffffffffff876104d86105219861057d97516139f5565b510151935b16986040519687947facacf004000000000000000000000000000000000000000000000000000000008a8701528c6024870152606060448701526084860190613720565b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858403016064860152613791565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283613823565b60405193849283927f468721a70000000000000000000000000000000000000000000000000000000084526004840161387c565b038187865af1908115610671578491610642575b501561061a577f546c2ffffe2ec87c66852f6357e0dbd6742fd292a85ae4932bd5373f2a6d31658380a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff6003541660035580f35b6004837fe540c1c8000000000000000000000000000000000000000000000000000000008152fd5b610664915060203d60201161066a575b61065c8183613823565b810190613864565b5f6105c5565b503d610652565b6040513d86823e3d90fd5b5050509161057d6105b194959661055160209573ffffffffffffffffffffffffffffffffffffffff610521966104dd565b600260206001926040516106c081613807565b73ffffffffffffffffffffffffffffffffffffffff86541681526106e5858701613937565b83820152815201920192019190610451565b6005602060019260405161070a816137eb565b8554815273ffffffffffffffffffffffffffffffffffffffff8587015416838201526002860154604082015260ff6003870154161515606082015261075160048701613937565b6080820152815201920192019190610413565b6004877f36d80ace000000000000000000000000000000000000000000000000000000008152fd5b6004877f9028fe1e000000000000000000000000000000000000000000000000000000008152fd5b50509091929394959650610379565b6004887fd03a6320000000000000000000000000000000000000000000000000000000008152fd5b600260206001926040516107fe81613807565b73ffffffffffffffffffffffffffffffffffffffff8654168152610823858701613937565b83820152815201920192019190610301565b60056020600192604051610848816137eb565b8554815273ffffffffffffffffffffffffffffffffffffffff8587015416838201526002860154604082015260ff6003870154161515606082015261088f60048701613937565b60808201528152019201920191906102c3565b6004877fd03a6320000000000000000000000000000000000000000000000000000000008152fd5b6004877fc32d1d76000000000000000000000000000000000000000000000000000000008152fd5b8480fd5b8380fd5b50346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725773ffffffffffffffffffffffffffffffffffffffff610947613676565b61094f613a36565b1680156109bc5773ffffffffffffffffffffffffffffffffffffffff8254827fffffffffffffffffffffffff00000000000000000000000000000000000000008216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b50346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725773ffffffffffffffffffffffffffffffffffffffff610a35613676565b606060408051610a44816137cf565b8581528260208201520152168152600260205260408120604051610a67816137cf565b73ffffffffffffffffffffffffffffffffffffffff825416815260018201918254610a91816138ce565b93610a9f6040519586613823565b81855285526020808620869186015b838310610d0b57505050506002906020830193845201928354610ad0816138ce565b94610ade6040519687613823565b81865282526020808320839187015b838310610cb75750505050604082019384526040519384936020855273ffffffffffffffffffffffffffffffffffffffff608086019451166020860152519260606040860152835180915260a0850190602060a08260051b88010195019184905b828210610c21575050505051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848203016060850152825190818152602081016020808460051b840101950193915b838310610bab5786860387f35b919395509193602080610c0f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff815116845201519181858201520190613720565b97019301930190928695949293610b9e565b919394956020610ca5827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60600195979b84950301865260a060808c518051845273ffffffffffffffffffffffffffffffffffffffff868201511686850152604081015160408501526060810151151560608501520151918160808201520190613720565b98019201920187969594939192610b4e565b6002602060019260409a9798999a51610ccf81613807565b73ffffffffffffffffffffffffffffffffffffffff8654168152610cf4858701613937565b838201528152019201920191909695949396610aed565b6005602060019260409a98999a51610d22816137eb565b8554815273ffffffffffffffffffffffffffffffffffffffff8587015416838201526002860154604082015260ff60038701541615156060820152610d6960048701613937565b608082015281520192019201919096959496610aae565b5034610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357610db8613676565b610dc0613a36565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610e735773ffffffffffffffffffffffffffffffffffffffff60245f928360405195869485937fca5eb5e10000000000000000000000000000000000000000000000000000000085521660048401525af18015610e6857610e5a575080f35b610e6691505f90613823565b005b6040513d5f823e3d90fd5b5f80fd5b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602073ffffffffffffffffffffffffffffffffffffffff60035460101c16604051908152f35b34610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735763ffffffff610f0761370d565b165f526001602052602060405f2054604051908152f35b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602060ff60035460081c166040519015158152f35b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735773ffffffffffffffffffffffffffffffffffffffff61101b613676565b165f526002602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610e73577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160a08112610e7357606013610e735760643567ffffffffffffffff8111610e735761114d9036906004016136df565b505060843573ffffffffffffffffffffffffffffffffffffffff8116809103610e73576020906040519030148152f35b34610e735760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e73576111b461370d565b5060206040515f8152f35b34610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735760043567ffffffffffffffff8111610e735761120e9036906004016136df565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303612090577fffffffff000000000000000000000000000000000000000000000000000000008235818116906004841061207c575b50167f45fbb41d000000000000000000000000000000000000000000000000000000008103611f1357509081600411610e73578181019060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8284030112610e73576112ea60048201613763565b90602481013567ffffffffffffffff8111610e735781019260607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030112610e73576040519461133b866137cf565b600485013573ffffffffffffffffffffffffffffffffffffffff81168103610e73578652602485013567ffffffffffffffff8111610e73576004908601019482601f87011215610e7357853595611391876138ce565b9661139f6040519889613823565b80885260208089019160051b83010191858311610e735760208101915b838310611e46575050505060208701958652604481013567ffffffffffffffff8111610e735760049101019180601f84011215610e73578235926113ff846138ce565b9361140d6040519586613823565b80855260208086019160051b83010191838311610e735760208101915b838310611db55750505050506040860191825273ffffffffffffffffffffffffffffffffffffffff8651161561154a575f5b855180518210156115725781611471916139f5565b5151805f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260ff60405f20541661154a575f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055670de0b6b3a7640000604061150f8389516139f5565b5101511061154a5773ffffffffffffffffffffffffffffffffffffffff60206115398389516139f5565b510151161561154a5760010161145c565b7f9d282ec9000000000000000000000000000000000000000000000000000000005f5260045ffd5b50509290939491945f5b8551805182101561165f576115a68273ffffffffffffffffffffffffffffffffffffffff926139f5565b515116805f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260ff60405f20541661154a575f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff61164f8288516139f5565b5151161561154a5760010161157c565b5050919490925f5b835180518210156116d7579061167f816001936139f5565b51515f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905501611667565b505091939092945f5b82518051821015611766579073ffffffffffffffffffffffffffffffffffffffff61170d826001946139f5565b5151165f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055016116e0565b5050919390929473ffffffffffffffffffffffffffffffffffffffff165f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20935116167fffffffffffffffffffffffff0000000000000000000000000000000000000000835416178255600182019051805190680100000000000000008211611a51578254828455808310611d55575b50602001915f5260205f205f925b828410611b3657505050506002019051805190680100000000000000008211611a51578254828455808310611a7e575b50602001915f5260205f205f925b82841061188d57505050505f917f915533958a6ea84059c1e9af4fdeab1eb5c1b2ac3b8b0498dae77eae7b88b375915b611888604051928392602084526020840191613791565b0390a2005b805173ffffffffffffffffffffffffffffffffffffffff80825116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835560206001840191015180519067ffffffffffffffff8211611a51576118f583546138e6565b601f8111611a16575b50602090601f831160011461196f579261195583602094600197946002975f92611964575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b90555b01920193019290611841565b015190508d80611923565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691845f52815f20925f5b8181106119fe5750936001969360029693889383602098106119c7575b505050811b019055611958565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558c80806119ba565b9293602060018192878601518155019501930161199d565b611a4190845f5260205f20601f850160051c81019160208610611a47575b601f0160051c0190613af6565b896118fe565b9091508190611a34565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103611b09577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168303611b0957835f5260205f209060011b8101908360011b015b818110611af15750611833565b805f60029255611b0360018201613b0c565b01611ae4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80518051835573ffffffffffffffffffffffffffffffffffffffff60208201511673ffffffffffffffffffffffffffffffffffffffff6001850191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560408101516002840155611be160608201511515600385019060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b608001518051600484019167ffffffffffffffff8211611a5157611c0583546138e6565b601f8111611d25575b50602090601f8311600114611c7e5792611c6483602094600197946005975f92611c735750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b90555b01920193019290611803565b015190508f80611923565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691845f52815f20925f5b818110611d0d575093600196936005969388938360209810611cd6575b505050811b019055611c67565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558e8080611cc9565b92936020600181928786015181550195019301611cac565b611d4f90845f5260205f20601f850160051c81019160208610611a4757601f0160051c0190613af6565b8b611c0e565b80600502906005820403611b095782600502600581048403611b0957845f5260205f2091820191015b818110611d8b57506117f5565b6005905f81555f60018201555f60028201555f6003820155611daf60048201613b0c565b01611d7e565b823567ffffffffffffffff8111610e735782019060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08388030112610e735760405190611e0282613807565b611e0e60208401613763565b825260408301359167ffffffffffffffff8311610e7357611e3788602080969581960101613a82565b8382015281520192019161142a565b823567ffffffffffffffff8111610e735782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838a030112610e735760405190611e93826137eb565b60208301358252604083013573ffffffffffffffffffffffffffffffffffffffff81168103610e7357602083015260608301356040830152611ed760808401613784565b606083015260a08301359167ffffffffffffffff8311610e7357611f038a602080969581960101613a82565b60808201528152019201916113bc565b7f1c3c0ea80000000000000000000000000000000000000000000000000000000003612054576024810361202c5780600411610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83838101030112610e7357817f915533958a6ea84059c1e9af4fdeab1eb5c1b2ac3b8b0498dae77eae7b88b3759173ffffffffffffffffffffffffffffffffffffffff611fbc60045f9601613763565b6003547fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff00008360101b16911617600355167f3e3c5e6d5b512eaa5d5a80669846cfbaf8bde70fc6f7a3be9828cffc9ba5f1db8580a2611871565b7f5bcc3fa0000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f7352d91c000000000000000000000000000000000000000000000000000000005f5260045ffd5b828092508460040360031b1b16168461127b565b7fd2b4727e000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e73576120ee613a36565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610e735760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735761224f61370d565b507ff1b06c8d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357604080516001815260026020820152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e08112610e7357606013610e735760843567ffffffffffffffff8111610e73576123099036906004016136df565b906123126136bc565b5060c43567ffffffffffffffff8111610e73576123339036906004016136df565b50503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016036132025763ffffffff61237f6138bb565b16805f52600160205260405f20549081156131d7575060243580910361319b576123a76138bb565b63ffffffff807f000000000000000000000000000000000000000000000000000000000000000016911603613173577f00000000000000000000000000000000000000000000000000000000000000000361314b577fffffffff0000000000000000000000000000000000000000000000000000000081358181169060048510613137575b50167f45fbb41d00000000000000000000000000000000000000000000000000000000810361301d57509080600411610e73578082019060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8484030112610e735761249b60048401613763565b90602484013567ffffffffffffffff8111610e735784019260607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8583030112610e7357604051946124ec866137cf565b600485013573ffffffffffffffffffffffffffffffffffffffff81168103610e73578652602485013567ffffffffffffffff8111610e73576004908601019482601f87011215610e7357853595612542876138ce565b966125506040519889613823565b80885260208089019160051b83010191858311610e735760208101915b838310612f50575050505060208701958652604481013567ffffffffffffffff8111610e735760049101019180601f84011215610e73578235926125b0846138ce565b936125be6040519586613823565b80855260208086019160051b83010191838311610e735760208101915b838310612ebf5750505050506040860191825273ffffffffffffffffffffffffffffffffffffffff8651161561154a575f5b855180518210156126fb5781612622916139f5565b5151805f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260ff60405f20541661154a575f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055670de0b6b3a764000060406126c08389516139f5565b5101511061154a5773ffffffffffffffffffffffffffffffffffffffff60206126ea8389516139f5565b510151161561154a5760010161260d565b50509290939491945f5b855180518210156127e85761272f8273ffffffffffffffffffffffffffffffffffffffff926139f5565b515116805f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260ff60405f20541661154a575f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff6127d88288516139f5565b5151161561154a57600101612705565b5050919490925f5b835180518210156128605790612808816001936139f5565b51515f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008154169055016127f0565b505091939092945f5b825180518210156128ef579073ffffffffffffffffffffffffffffffffffffffff612896826001946139f5565b5151165f527f73098076a4177950d302018162bc218d60dcb1c879a2d6d37a8d96d6d8ad1ef760205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905501612869565b5050919390929473ffffffffffffffffffffffffffffffffffffffff165f52600260205273ffffffffffffffffffffffffffffffffffffffff8060405f20935116167fffffffffffffffffffffffff0000000000000000000000000000000000000000835416178255600182019051805190680100000000000000008211611a51578254828455808310612e5f575b50602001915f5260205f205f925b828410612c4b57505050506002019051805190680100000000000000008211611a51578254828455808310612bc0575b50602001915f5260205f205f925b828410612a1357505050506118887f915533958a6ea84059c1e9af4fdeab1eb5c1b2ac3b8b0498dae77eae7b88b375915b60405191829160208352606435956020840191613791565b805173ffffffffffffffffffffffffffffffffffffffff80825116167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835560206001840191015180519067ffffffffffffffff8211611a5157612a7b83546138e6565b601f8111612b90575b50602090601f8311600114612ae95792612ada83602094600197946002975f926119645750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b90555b019201930192906129ca565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691845f52815f20925f5b818110612b78575093600196936002969388938360209810612b41575b505050811b019055612add565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558c8080612b34565b92936020600181928786015181550195019301612b17565b612bba90845f5260205f20601f850160051c81019160208610611a4757601f0160051c0190613af6565b89612a84565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103611b09577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168303611b0957835f5260205f209060011b8101908360011b015b818110612c3357506129bc565b805f60029255612c4560018201613b0c565b01612c26565b80518051835573ffffffffffffffffffffffffffffffffffffffff60208201511673ffffffffffffffffffffffffffffffffffffffff6001850191167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560408101516002840155612cf660608201511515600385019060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b608001518051600484019167ffffffffffffffff8211611a5157612d1a83546138e6565b601f8111612e2f575b50602090601f8311600114612d885792612d7983602094600197946005975f92611c735750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b90555b0192019301929061298c565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691845f52815f20925f5b818110612e17575093600196936005969388938360209810612de0575b505050811b019055612d7c565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558e8080612dd3565b92936020600181928786015181550195019301612db6565b612e5990845f5260205f20601f850160051c81019160208610611a4757601f0160051c0190613af6565b8b612d23565b80600502906005820403611b095782600502600581048403611b0957845f5260205f2091820191015b818110612e95575061297e565b6005905f81555f60018201555f60028201555f6003820155612eb960048201613b0c565b01612e88565b823567ffffffffffffffff8111610e735782019060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08388030112610e735760405190612f0c82613807565b612f1860208401613763565b825260408301359167ffffffffffffffff8311610e7357612f4188602080969581960101613a82565b838201528152019201916125db565b823567ffffffffffffffff8111610e735782019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838a030112610e735760405190612f9d826137eb565b60208301358252604083013573ffffffffffffffffffffffffffffffffffffffff81168103610e7357602083015260608301356040830152612fe160808401613784565b606083015260a08301359167ffffffffffffffff8311610e735761300d8a602080969581960101613a82565b608082015281520192019161256d565b7f1c3c0ea80000000000000000000000000000000000000000000000000000000003612054576024820361202c5781600411610e735760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82848101030112610e73576118888173ffffffffffffffffffffffffffffffffffffffff6130c760047f915533958a6ea84059c1e9af4fdeab1eb5c1b2ac3b8b0498dae77eae7b88b3759501613763565b6003547fffffffffffffffffffff0000000000000000000000000000000000000000ffff75ffffffffffffffffffffffffffffffffffffffff00008360101b16911617600355167f3e3c5e6d5b512eaa5d5a80669846cfbaf8bde70fc6f7a3be9828cffc9ba5f1db5f80a26129fb565b828092508560040360031b1b16168461242c565b7f1299faca000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f9284b197000000000000000000000000000000000000000000000000000000005f5260045ffd5b63ffffffff6131a86138bb565b7fc26bebcc000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b7ff6ff4fb7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f91ac5e4f000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b34610e735760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e7357613265613676565b61326d613699565b60443567ffffffffffffffff8111610e735736602382011215610e7357806004013567ffffffffffffffff8111610e73578060051b923660248585010111610e73576003549073ffffffffffffffffffffffffffffffffffffffff8260101c1633036136115773ffffffffffffffffffffffffffffffffffffffff1694855f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416156135e95760ff82166135c15760017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff9395949516176003551692845f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f20541691604051937f69476b8a000000000000000000000000000000000000000000000000000000006020860152806064860188602488015260406044880152526084808601938601019260248301925f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d813603015b8483106134e5578a8a61343660208c8c61057d828e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283613823565b03815f865af1908115610e68575f916134c6575b501561349e577f2d8105dfd1efc4a5e6720bede730fe484d04de1d53b1b7488cedbb31455760f25f80a3600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055005b7fe540c1c8000000000000000000000000000000000000000000000000000000005f5260045ffd5b6134df915060203d60201161066a5761065c8183613823565b8361344a565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c898203018552863582811215610e735783016024810135825261353160448201613784565b15156020830152606481013560408301526084810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd3682900301821215610e735760249101016020813591019067ffffffffffffffff8111610e73578036038213610e73576135b3602092839260808681606060019901520191613791565b9801969501930191906133f5565b7f36d80ace000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fd03a6320000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fc32d1d76000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610e73575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610e735760209060ff6003541615158152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610e7357565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610e7357565b60a4359073ffffffffffffffffffffffffffffffffffffffff82168203610e7357565b9181601f84011215610e735782359167ffffffffffffffff8311610e735760208381860195010111610e7357565b6004359063ffffffff82168203610e7357565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b359073ffffffffffffffffffffffffffffffffffffffff82168203610e7357565b35908115158203610e7357565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6060810190811067ffffffffffffffff821117611a5157604052565b60a0810190811067ffffffffffffffff821117611a5157604052565b6040810190811067ffffffffffffffff821117611a5157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611a5157604052565b90816020910312610e7357518015158103610e735790565b92916138b660609173ffffffffffffffffffffffffffffffffffffffff6001941686525f6020870152608060408701526080860190613720565b930152565b60043563ffffffff81168103610e735790565b67ffffffffffffffff8111611a515760051b60200190565b90600182811c9216801561392d575b602083101461390057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916138f5565b9060405191825f82549261394a846138e6565b80845293600181169081156139b55750600114613971575b5061396f92500383613823565b565b90505f9291925260205f20905f915b81831061399957505090602061396f928201015f613962565b6020919350806001915483858901015201910190918492613980565b6020935061396f9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f613962565b8051821015613a095760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff5f54163303613a5657565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b81601f82011215610e735780359067ffffffffffffffff8211611a515760405192613ad560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185613823565b82845260208383010111610e7357815f926020809301838601378301015290565b818110613b01575050565b5f8155600101613af6565b613b1681546138e6565b9081613b20575050565b81601f5f9311600114613b31575055565b81835260208320613b4d91601f0160051c810190600101613af6565b808252816020812091555556fea2646970667358221220493346c5cee62a377cb826ee2ae3b4e8f128db038652af982149e1d529674be564736f6c634300081c00330000000000000000000000001a44076050125825900e736c501f859c50fe728c0000000000000000000000002711895b2c57e4d0623d296c7e6ec4d7c8f96feb0000000000000000000000007559ba313ee4b912f14331f886e01c07e969508f00000000000000000000000000000000000000000000000000000000000075c1