UNPKG

@layerzerolabs/oft-alt-evm

Version:

LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation

1 lines 197 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_lzEndpoint","type":"address","internalType":"address"},{"name":"_delegate","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"SEND","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"SEND_AND_CALL","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"allowInitializePath","inputs":[{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"approvalRequired","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"combineOptions","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"},{"name":"_msgType","type":"uint16","internalType":"uint16"},{"name":"_extraOptions","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"credit","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amountToCreditLD","type":"uint256","internalType":"uint256"},{"name":"_srcEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"amountReceivedLD","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"debit","inputs":[{"name":"_amountToSendLD","type":"uint256","internalType":"uint256"},{"name":"_minAmountToCreditLD","type":"uint256","internalType":"uint256"},{"name":"_dstEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"amountDebitedLD","type":"uint256","internalType":"uint256"},{"name":"amountToCreditLD","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"debitView","inputs":[{"name":"_amountToSendLD","type":"uint256","internalType":"uint256"},{"name":"_minAmountToCreditLD","type":"uint256","internalType":"uint256"},{"name":"_dstEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"amountDebitedLD","type":"uint256","internalType":"uint256"},{"name":"amountToCreditLD","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimalConversionRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ILayerZeroEndpointV2"}],"stateMutability":"view"},{"type":"function","name":"enforcedOptions","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"msgType","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"enforcedOption","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"isComposeMsgSender","inputs":[{"name":"","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"","type":"bytes","internalType":"bytes"},{"name":"_sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPeer","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"},{"name":"_peer","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lzReceive","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_executor","type":"address","internalType":"address"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceiveAndRevert","inputs":[{"name":"_packets","type":"tuple[]","internalType":"struct InboundPacket[]","components":[{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"receiver","type":"address","internalType":"address"},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"executor","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceiveSimulate","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_executor","type":"address","internalType":"address"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"msgInspector","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nextNonce","inputs":[{"name":"","type":"uint32","internalType":"uint32"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"oApp","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"oAppVersion","inputs":[],"outputs":[{"name":"senderVersion","type":"uint64","internalType":"uint64"},{"name":"receiverVersion","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"oftVersion","inputs":[],"outputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"},{"name":"version","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"peers","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"peer","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"preCrime","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"quoteOFT","inputs":[{"name":"_sendParam","type":"tuple","internalType":"struct SendParam","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"amountLD","type":"uint256","internalType":"uint256"},{"name":"minAmountLD","type":"uint256","internalType":"uint256"},{"name":"extraOptions","type":"bytes","internalType":"bytes"},{"name":"composeMsg","type":"bytes","internalType":"bytes"},{"name":"oftCmd","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"oftLimit","type":"tuple","internalType":"struct OFTLimit","components":[{"name":"minAmountLD","type":"uint256","internalType":"uint256"},{"name":"maxAmountLD","type":"uint256","internalType":"uint256"}]},{"name":"oftFeeDetails","type":"tuple[]","internalType":"struct OFTFeeDetail[]","components":[{"name":"feeAmountLD","type":"int256","internalType":"int256"},{"name":"description","type":"string","internalType":"string"}]},{"name":"oftReceipt","type":"tuple","internalType":"struct OFTReceipt","components":[{"name":"amountSentLD","type":"uint256","internalType":"uint256"},{"name":"amountReceivedLD","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"quoteSend","inputs":[{"name":"_sendParam","type":"tuple","internalType":"struct SendParam","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"amountLD","type":"uint256","internalType":"uint256"},{"name":"minAmountLD","type":"uint256","internalType":"uint256"},{"name":"extraOptions","type":"bytes","internalType":"bytes"},{"name":"composeMsg","type":"bytes","internalType":"bytes"},{"name":"oftCmd","type":"bytes","internalType":"bytes"}]},{"name":"_payInLzToken","type":"bool","internalType":"bool"}],"outputs":[{"name":"msgFee","type":"tuple","internalType":"struct MessagingFee","components":[{"name":"nativeFee","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"removeDust","inputs":[{"name":"_amountLD","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountLD","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"send","inputs":[{"name":"_sendParam","type":"tuple","internalType":"struct SendParam","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"amountLD","type":"uint256","internalType":"uint256"},{"name":"minAmountLD","type":"uint256","internalType":"uint256"},{"name":"extraOptions","type":"bytes","internalType":"bytes"},{"name":"composeMsg","type":"bytes","internalType":"bytes"},{"name":"oftCmd","type":"bytes","internalType":"bytes"}]},{"name":"_fee","type":"tuple","internalType":"struct MessagingFee","components":[{"name":"nativeFee","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"}]},{"name":"_refundAddress","type":"address","internalType":"address"}],"outputs":[{"name":"msgReceipt","type":"tuple","internalType":"struct MessagingReceipt","components":[{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"},{"name":"fee","type":"tuple","internalType":"struct MessagingFee","components":[{"name":"nativeFee","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"}]}]},{"name":"oftReceipt","type":"tuple","internalType":"struct OFTReceipt","components":[{"name":"amountSentLD","type":"uint256","internalType":"uint256"},{"name":"amountReceivedLD","type":"uint256","internalType":"uint256"}]}],"stateMutability":"payable"},{"type":"function","name":"setDelegate","inputs":[{"name":"_delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEnforcedOptions","inputs":[{"name":"_enforcedOptions","type":"tuple[]","internalType":"struct EnforcedOptionParam[]","components":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"msgType","type":"uint16","internalType":"uint16"},{"name":"options","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMsgInspector","inputs":[{"name":"_msgInspector","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPeer","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"},{"name":"_peer","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPreCrime","inputs":[{"name":"_preCrime","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"sharedDecimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EnforcedOptionSet","inputs":[{"name":"_enforcedOptions","type":"tuple[]","indexed":false,"internalType":"struct EnforcedOptionParam[]","components":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"msgType","type":"uint16","internalType":"uint16"},{"name":"options","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"MsgInspectorSet","inputs":[{"name":"inspector","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OFTReceived","inputs":[{"name":"guid","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"srcEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"toAddress","type":"address","indexed":true,"internalType":"address"},{"name":"amountReceivedLD","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OFTSent","inputs":[{"name":"guid","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dstEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"fromAddress","type":"address","indexed":true,"internalType":"address"},{"name":"amountSentLD","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountReceivedLD","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PeerSet","inputs":[{"name":"eid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"peer","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"PreCrimeSet","inputs":[{"name":"preCrimeAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InvalidDelegate","inputs":[]},{"type":"error","name":"InvalidEndpointCall","inputs":[]},{"type":"error","name":"InvalidLocalDecimals","inputs":[]},{"type":"error","name":"InvalidOptions","inputs":[{"name":"options","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"LzTokenUnavailable","inputs":[]},{"type":"error","name":"NativeTokenUnavailable","inputs":[]},{"type":"error","name":"NoPeer","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"}]},{"type":"error","name":"NotEnoughNative","inputs":[{"name":"msgValue","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OFTAltCore__msg_value_not_zero","inputs":[{"name":"_msg_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlyEndpoint","inputs":[{"name":"addr","type":"address","internalType":"address"}]},{"type":"error","name":"OnlyPeer","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"OnlySelf","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SimulationResult","inputs":[{"name":"result","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"SlippageExceeded","inputs":[{"name":"amountLD","type":"uint256","internalType":"uint256"},{"name":"minAmountLD","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60e060405234801562000010575f80fd5b50604051620036fb380380620036fb833981016040819052620000339162000249565b828282826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000099919062000290565b8282818181818a6001600160a01b038116620000ce57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000d981620001d9565b506001600160a01b0380831660805281166200010857604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e1906024015f604051808303815f87803b1580156200014d575f80fd5b505af115801562000160573d5f803e3d5ffd5b5050505050505050620001786200022860201b60201c565b60ff168360ff1610156200019f576040516301e9714b60e41b815260040160405180910390fd5b620001ac600684620002cd565b620001b990600a620003e8565b60a0525050506001600160a01b0390921660c05250620003f89350505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b038116811462000244575f80fd5b919050565b5f805f606084860312156200025c575f80fd5b62000267846200022d565b925062000277602085016200022d565b915062000287604085016200022d565b90509250925092565b5f60208284031215620002a1575f80fd5b815160ff81168114620002b2575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115620002e957620002e9620002b9565b92915050565b600181815b808511156200032f57815f1904821115620003135762000313620002b9565b808516156200032157918102915b93841c9390800290620002f4565b509250929050565b5f826200034757506001620002e9565b816200035557505f620002e9565b81600181146200036e5760028114620003795762000399565b6001915050620002e9565b60ff8411156200038d576200038d620002b9565b50506001821b620002e9565b5060208310610133831016604e8410600b8410161715620003be575081810a620002e9565b620003ca8383620002ef565b805f1904821115620003e057620003e0620002b9565b029392505050565b5f620002b260ff84168362000337565b60805160a05160c051613276620004855f395f8181610797015281816116f1015261174c01525f81816105dd0152818161193a01528181611aa40152611b5501525f81816104da015281816108a801528181610ffa0152818161131b0152818161160001528181611d0b01528181611e8d01528181611f8401528181611fb301526120aa01526132765ff3fe60806040526004361061025d575f3560e01c806382413eac1161014b578063bd815db0116100c6578063d42438851161007c578063f2fde38b11610062578063f2fde38b1461076a578063fc0c546a14610789578063ff7bd03d146107bb575f80fd5b8063d42438851461072c578063f01630231461074b575f80fd5b8063c7c7f5b3116100ac578063c7c7f5b3146106d9578063ca5eb5e1146106fa578063d045a0dc14610719575f80fd5b8063bd815db0146106a7578063c0779988146106ba575f80fd5b80639f68b9641161011b578063b98bd07011610101578063b98bd0701461063e578063bb0b6a531461065d578063bc70b35414610688575f80fd5b80639f68b964146105ff578063b731ea0a14610612575f80fd5b806382413eac14610569578063857749b0146105885780638da5cb5b146105a3578063963efcaa146105cc575f80fd5b80634dba701b116101db5780635a0dfe4d116101ab5780636fc1b31e116101915780636fc1b31e146104fc578063715018a61461051b5780637d25a05e1461052f575f80fd5b80635a0dfe4d146104845780635e280f11146104c9575f80fd5b80634dba701b146103e557806352ae28791461041257806354f52414146104245780635535d46114610458575f80fd5b8063156a0d0f116102305780631f5e1334116102165780631f5e1334146103865780633400288b1461039a5780633b6f743b146103b9575f80fd5b8063156a0d0f1461032557806317442b7014610365575f80fd5b80630d35b41514610261578063111ecdad1461029857806313137d65146102e9578063134d4f25146102fe575b5f80fd5b34801561026c575f80fd5b5061028061027b366004612129565b6107da565b60405161028f939291906121c6565b60405180910390f35b3480156102a3575f80fd5b506004546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028f565b6102fc6102f73660046122f1565b6108a6565b005b348015610309575f80fd5b50610312600281565b60405161ffff909116815260200161028f565b348015610330575f80fd5b50604080517f02e49c2c000000000000000000000000000000000000000000000000000000008152600160208201520161028f565b348015610370575f80fd5b506040805160018152600260208201520161028f565b348015610391575f80fd5b50610312600181565b3480156103a5575f80fd5b506102fc6103b43660046123a2565b6109a5565b3480156103c4575f80fd5b506103d86103d33660046123d7565b6109bb565b60405161028f9190612426565b3480156103f0575f80fd5b506104046103ff36600461243d565b610a21565b60405190815260200161028f565b34801561041d575f80fd5b50306102c4565b34801561042f575f80fd5b5061044361043e366004612478565b610a37565b6040805192835260208301919091520161028f565b348015610463575f80fd5b506104776104723660046124b2565b610a52565b60405161028f91906124e3565b34801561048f575f80fd5b506104b961049e3660046123a2565b63ffffffff919091165f908152600160205260409020541490565b604051901515815260200161028f565b3480156104d4575f80fd5b506102c47f000000000000000000000000000000000000000000000000000000000000000081565b348015610507575f80fd5b506102fc6105163660046124f5565b610af4565b348015610526575f80fd5b506102fc610b76565b34801561053a575f80fd5b506105506105493660046123a2565b5f92915050565b60405167ffffffffffffffff909116815260200161028f565b348015610574575f80fd5b506104b9610583366004612510565b610b89565b348015610593575f80fd5b506040516006815260200161028f565b3480156105ae575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff166102c4565b3480156105d7575f80fd5b506104047f000000000000000000000000000000000000000000000000000000000000000081565b34801561060a575f80fd5b5060016104b9565b34801561061d575f80fd5b506002546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b348015610649575f80fd5b506102fc6106583660046125b4565b610bab565b348015610668575f80fd5b506104046106773660046125f3565b60016020525f908152604090205481565b348015610693575f80fd5b506104776106a236600461260c565b610bc5565b6102fc6106b53660046125b4565b610d7f565b3480156106c5575f80fd5b506104046106d4366004612669565b610f43565b6106ec6106e7366004612680565b610f4d565b60405161028f929190612707565b348015610705575f80fd5b506102fc6107143660046124f5565b610fad565b6102fc6107273660046122f1565b611054565b348015610737575f80fd5b506102fc6107463660046124f5565b61109c565b348015610756575f80fd5b50610443610765366004612478565b611117565b348015610775575f80fd5b506102fc6107843660046124f5565b611124565b348015610794575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102c4565b3480156107c6575f80fd5b506104b96107d5366004612759565b611187565b604080518082019091525f8082526020820152606061080a60405180604001604052805f81526020015f81525090565b6040805180820182525f80825267ffffffffffffffff602080840182905284518381529081019094529195509182610864565b604080518082019091525f81526060602082015281526020019060019003908161083d5790505b5093505f80610888604089013560608a013561088360208c018c6125f3565b6111bb565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461091c576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061093690610931908a6125f3565b61120f565b1461098d5761094860208801886125f3565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610913565b61099c87878787878787611263565b50505050505050565b6109ad6113f4565b6109b78282611446565b5050565b604080518082019091525f80825260208201525f6109e96040850135606086013561088360208801886125f3565b9150505f806109f8868461149a565b9092509050610a15610a0d60208801886125f3565b8383886115eb565b93505050505b92915050565b5f610a2d8484846116d6565b90505b9392505050565b5f80610a4533868686611720565b915091505b935093915050565b600360209081525f928352604080842090915290825290208054610a75906127a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa1906127a0565b8015610aec5780601f10610ac357610100808354040283529160200191610aec565b820191905f5260205f20905b815481529060010190602001808311610acf57829003601f168201915b505050505081565b610afc6113f4565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610b7e6113f4565b610b875f61177d565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b610bb36113f4565b6109b7610bc082846128cb565b6117f1565b63ffffffff84165f90815260036020908152604080832061ffff87168452909152812080546060929190610bf8906127a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c24906127a0565b8015610c6f5780601f10610c4657610100808354040283529160200191610c6f565b820191905f5260205f20905b815481529060010190602001808311610c5257829003601f168201915b5050505050905080515f03610cbd5783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929450610ba39350505050565b5f839003610ccc579050610ba3565b60028310610d4957610d1284848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506118f292505050565b80610d2084600281886129d4565b604051602001610d32939291906129fb565b604051602081830303815290604052915050610ba3565b83836040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610913929190612a68565b5f5b81811015610e825736838383818110610d9c57610d9c612a7b565b9050602002810190610dae9190612aa8565b9050610de0610dc060208301836125f3565b602083013563ffffffff919091165f908152600160205260409020541490565b610dea5750610e7a565b3063d045a0dc60c08301358360a0810135610e09610100830183612ae4565b610e1a610100890160e08a016124f5565b610e286101208a018a612ae4565b6040518963ffffffff1660e01b8152600401610e4a9796959493929190612b5a565b5f604051808303818588803b158015610e61575f80fd5b505af1158015610e73573d5f803e3d5ffd5b5050505050505b600101610d81565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ecb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f109190810190612bed565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161091391906124e3565b5f610a1b82611937565b610f556120cf565b604080518082019091525f80825260208201523415610fa2576040517f8036d4a3000000000000000000000000000000000000000000000000000000008152346004820152602401610913565b610a4585858561196d565b610fb56113f4565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e1906024015f604051808303815f87803b15801561103b575f80fd5b505af115801561104d573d5f803e3d5ffd5b5050505050565b33301461108d576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61099c8787878787878761098d565b6110a46113f4565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610b6b565b5f80610a458585856111bb565b61112c6113f4565b73ffffffffffffffffffffffffffffffffffffffff811661117b576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610913565b6111848161177d565b50565b5f60208201803590600190839061119e90866125f3565b63ffffffff16815260208101919091526040015f20541492915050565b5f806111c685611937565b915081905083811015610a4a576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401610913565b63ffffffff81165f9081526001602052604081205480610a1b576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610913565b5f6112746112718787611a65565b90565b90505f61129f8261128d6112888a8a611a7c565b611a9e565b61129a60208d018d6125f3565b6116d6565b90506028861115611385575f6112db6112be60608c0160408d01612c56565b6112cb60208d018d6125f3565b846112d68c8c611ad3565b611b1d565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906113569086908d905f908790600401612c71565b5f604051808303815f87803b15801561136d575f80fd5b505af115801561137f573d5f803e3d5ffd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6113cb60208d018d6125f3565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b87576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610913565b63ffffffff82165f81815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060805f6114f585602001356114af86611b4f565b6114bc60a0890189612ae4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b7a92505050565b90935090505f8161150757600161150a565b60025b905061152a61151c60208801886125f3565b826106a260808a018a612ae4565b60045490935073ffffffffffffffffffffffffffffffffffffffff1680156115e1576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb906115a09088908890600401612caf565b602060405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115df9190612cd3565b505b5050509250929050565b604080518082019091525f80825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff16815260200161165a8961120f565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b815260040161168f929190612cee565b6040805180830381865afa1580156116a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116cd9190612dbf565b95945050505050565b5f61171873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611c0c565b509092915050565b5f8061172d8585856111bb565b909250905061177473ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016873085611c92565b94509492505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5b81518110156118c25761182282828151811061181157611811612a7b565b6020026020010151604001516118f2565b81818151811061183457611834612a7b565b60200260200101516040015160035f84848151811061185557611855612a7b565b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f84848151811061188c5761188c612a7b565b60200260200101516020015161ffff1661ffff1681526020019081526020015f2090816118b99190612e1d565b506001016117f3565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610b6b9190612f39565b600281015161ffff81166003146109b757816040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161091391906124e3565b5f7f00000000000000000000000000000000000000000000000000000000000000006119638184612fe0565b610a1b9190613018565b6119756120cf565b604080518082019091525f80825260208201525f806119aa33604089013560608a01356119a560208c018c6125f3565b611720565b915091505f806119ba898461149a565b90925090506119e66119cf60208b018b6125f3565b83836119e0368d90038d018d613054565b8b611cde565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a34908d018d6125f3565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b5f611a7360208284866129d4565b610a3091613084565b5f611a8b6028602084866129d4565b611a94916130c0565b60c01c9392505050565b5f610a1b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613018565b6060611ae282602881866129d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b606084848484604051602001611b369493929190613108565b6040516020818303038152906040529050949350505050565b5f610a1b7f000000000000000000000000000000000000000000000000000000000000000083612fe0565b8051606090151580611bdb578484604051602001611bc792919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611c02565b84843385604051602001611bf29493929190613185565b6040516020818303038152906040525b9150935093915050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611c8d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611dea565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611cd89186918216906323b872dd90608401611c46565b50505050565b611ce66120cf565b8251611cf190611e89565b50602083015115611d0957611d098360200151611fb0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a4506040518060a001604052808963ffffffff168152602001611d658a61120f565b81526020018881526020018781526020015f8760200151111515815250846040518363ffffffff1660e01b8152600401611da0929190612cee565b6080604051808303815f875af1158015611dbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de091906131dd565b9695505050505050565b5f8060205f8451602086015f885af180611e09576040513d5f823e3d81fd5b50505f513d91508115611e20578060011415611e3a565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611cd8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610913565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f189190613225565b905073ffffffffffffffffffffffffffffffffffffffff8116611f67576040517f8dce522700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa973ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000086611c92565b5090919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203e9190613225565b905073ffffffffffffffffffffffffffffffffffffffff811661208d576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109b773ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611c92565b60405180606001604052805f80191681526020015f67ffffffffffffffff16815260200161210e60405180604001604052805f81526020015f81525090565b905290565b5f60e08284031215612123575f80fd5b50919050565b5f60208284031215612139575f80fd5b813567ffffffffffffffff81111561214f575f80fd5b610ba384828501612113565b5f5b8381101561217557818101518382015260200161215d565b50505f910152565b5f815180845261219481602086016020860161215b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b83518152602080850151908201525f60a08201604060a0604085015281865180845260c08601915060c08160051b870101935060208089015f5b8381101561225d578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261224a8789018261217d565b9750509382019390820190600101612200565b50508751606088015250505060208501516080850152509050610ba3565b5f60608284031215612123575f80fd5b5f8083601f84011261229b575f80fd5b50813567ffffffffffffffff8111156122b2575f80fd5b6020830191508360208285010111156122c9575f80fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114611184575f80fd5b5f805f805f805f60e0888a031215612307575f80fd5b612311898961227b565b965060608801359550608088013567ffffffffffffffff80821115612334575f80fd5b6123408b838c0161228b565b909750955060a08a01359150612355826122d0565b90935060c0890135908082111561236a575f80fd5b506123778a828b0161228b565b989b979a50959850939692959293505050565b803563ffffffff8116811461239d575f80fd5b919050565b5f80604083850312156123b3575f80fd5b6123bc8361238a565b946020939093013593505050565b8015158114611184575f80fd5b5f80604083850312156123e8575f80fd5b823567ffffffffffffffff8111156123fe575f80fd5b61240a85828601612113565b925050602083013561241b816123ca565b809150509250929050565b815181526020808301519082015260408101610a1b565b5f805f6060848603121561244f575f80fd5b833561245a816122d0565b92506020840135915061246f6040850161238a565b90509250925092565b5f805f6060848603121561248a575f80fd5b833592506020840135915061246f6040850161238a565b803561ffff8116811461239d575f80fd5b5f80604083850312156124c3575f80fd5b6124cc8361238a565b91506124da602084016124a1565b90509250929050565b602081525f610a30602083018461217d565b5f60208284031215612505575f80fd5b8135610a30816122d0565b5f805f8060a08587031215612523575f80fd5b61252d868661227b565b9350606085013567ffffffffffffffff811115612548575f80fd5b6125548782880161228b565b9094509250506080850135612568816122d0565b939692955090935050565b5f8083601f840112612583575f80fd5b50813567ffffffffffffffff81111561259a575f80fd5b6020830191508360208260051b85010111156122c9575f80fd5b5f80602083850312156125c5575f80fd5b823567ffffffffffffffff8111156125db575f80fd5b6125e785828601612573565b90969095509350505050565b5f60208284031215612603575f80fd5b610a308261238a565b5f805f806060858703121561261f575f80fd5b6126288561238a565b9350612636602086016124a1565b9250604085013567ffffffffffffffff811115612651575f80fd5b61265d8782880161228b565b95989497509550505050565b5f60208284031215612679575f80fd5b5035919050565b5f805f8385036080811215612693575f80fd5b843567ffffffffffffffff8111156126a9575f80fd5b6126b587828801612113565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156126e7575f80fd5b5060208401915060608401356126fc816122d0565b809150509250925092565b5f60c0820190508351825267ffffffffffffffff60208501511660208301526040840151612742604084018280518252602090810151910152565b5082516080830152602083015160a0830152610a30565b5f60608284031215612769575f80fd5b610a30838361227b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806127b457607f821691505b602082108103612123577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b6040516060810167ffffffffffffffff8111828210171561280e5761280e612773565b60405290565b6040805190810167ffffffffffffffff8111828210171561280e5761280e612773565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561287e5761287e612773565b604052919050565b5f67ffffffffffffffff82111561289f5761289f612773565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f67ffffffffffffffff808411156128e5576128e5612773565b8360051b60206128f6818301612837565b86815291850191818101903684111561290d575f80fd5b865b848110156129c857803586811115612925575f80fd5b88016060368290031215612937575f80fd5b61293f6127eb565b6129488261238a565b81526129558683016124a1565b868201526040808301358981111561296b575f80fd5b929092019136601f84011261297e575f80fd5b823561299161298c82612886565b612837565b81815236898387010111156129a4575f80fd5b818986018a8301375f9181018901919091529082015284525091830191830161290f565b50979650505050505050565b5f80858511156129e2575f80fd5b838611156129ee575f80fd5b5050820193919092039150565b5f8451612a0c81846020890161215b565b8201838582375f930192835250909392505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f610a2d602083018486612a21565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612ada575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b17575f80fd5b83018035915067ffffffffffffffff821115612b31575f80fd5b6020019150368190038213156122c9575f80fd5b67ffffffffffffffff81168114611184575f80fd5b63ffffffff612b688961238a565b168152602088013560208201525f6040890135612b8481612b45565b67ffffffffffffffff811660408401525087606083015260e06080830152612bb060e083018789612a21565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612bdf818587612a21565b9a9950505050505050505050565b5f60208284031215612bfd575f80fd5b815167ffffffffffffffff811115612c13575f80fd5b8201601f81018413612c23575f80fd5b8051612c3161298c82612886565b818152856020838501011115612c45575f80fd5b6116cd82602083016020860161215b565b5f60208284031215612c66575f80fd5b8135610a3081612b45565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201525f611de0608083018461217d565b604081525f612cc1604083018561217d565b82810360208401526116cd818561217d565b5f60208284031215612ce3575f80fd5b8151610a30816123ca565b6040815263ffffffff8351166040820152602083015160608201525f604084015160a06080840152612d2360e084018261217d565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612d5e828261217d565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b5f60408284031215612da1575f80fd5b612da9612814565b9050815181526020820151602082015292915050565b5f60408284031215612dcf575f80fd5b610a308383612d91565b601f821115611c8d57805f5260205f20601f840160051c81016020851015612dfe5750805b601f840160051c820191505b8181101561104d575f8155600101612e0a565b815167ffffffffffffffff811115612e3757612e37612773565b612e4b81612e4584546127a0565b84612dd9565b602080601f831160018114612e9d575f8415612e675750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612f31565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ee957888601518255948401946001909101908401612eca565b5085821015612f2557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015612fd2578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805163ffffffff1684528781015161ffff16888501528601516060878501819052612fbe8186018361217d565b968901969450505090860190600101612f60565b509098975050505050505050565b5f82613013577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082028115828204841417610a1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60408284031215613064575f80fd5b61306c612814565b82358152602083013560208201528091505092915050565b80356020831015610a1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156131005780818660080360031b1b83161692505b505092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201525f825161317581602c85016020870161215b565b91909101602c0195945050505050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b1660208201528260288201525f82516131cd81604885016020870161215b565b9190910160480195945050505050565b5f608082840312156131ed575f80fd5b6131f56127eb565b82518152602083015161320781612b45565b60208201526132198460408501612d91565b60408201529392505050565b5f60208284031215613235575f80fd5b8151610a30816122d056fea26469706673582212203e76be3d64539582413ab9311712e728deff90d117861ca6faba4f4a69afd89b64736f6c63430008160033","sourceMap":"203:1149:139:-:0;;;253:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;365:6;373:11;386:9;1539:6:0;-1:-1:-1;;;;;1524:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1559:11;1572:9;1559:11;1572:9;1559:11;1572:9;405::139;-1:-1:-1;;;;;1273:26:116;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:116;;1350:1;1322:31;;;1003:51:141;976:18;;1322:31:116;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;1047:42:55;;;;;1104:23;;1100:53;;1136:17;;-1:-1:-1;;;1136:17:55;;;;;;;;;;;1100:53;1163:8;;:31;;-1:-1:-1;;;1163:31:55;;-1:-1:-1;;;;;1021:32:141;;;1163:31:55;;;1003:51:141;1163:20:55;;;;;;976:18:141;;1163:31:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:214;;1259:83:53;;2931:16:2::1;:14;;;:16;;:::i;:::-;2914:33;;:14;:33;;;2910:68;;;2956:22;;-1:-1:-1::0;;;2956:22:2::1;;;;;;;;;;;2910:68;3019:33;4401:1:::0;3019:14;:33:::1;:::i;:::-;3012:41;::::0;:2:::1;:41;:::i;:::-;2988:65;::::0;-1:-1:-1;;;;;;;;1593:27:0;;::::1;;::::0;-1:-1:-1;203:1149:139;;-1:-1:-1;;;;203:1149:139;2912:187:116;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:116;;;-1:-1:-1;;;;;;3020:17:116;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;4322:87:2:-;4401:1;;4322:87::o;14:177:141:-;93:13;;-1:-1:-1;;;;;135:31:141;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;579:273::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;748:9;742:16;798:4;791:5;787:16;780:5;777:27;767:55;;818:1;815;808:12;767:55;841:5;579:273;-1:-1:-1;;;579:273:141:o;1065:127::-;1126:10;1121:3;1117:20;1114:1;1107:31;1157:4;1154:1;1147:15;1181:4;1178:1;1171:15;1197:151;1287:4;1280:12;;;1266;;;1262:31;;1305:14;;1302:40;;;1322:18;;:::i;:::-;1197:151;;;;:::o;1353:416::-;1442:1;1479:5;1442:1;1493:270;1514:7;1504:8;1501:21;1493:270;;;1573:4;1569:1;1565:6;1561:17;1555:4;1552:27;1549:53;;;1582:18;;:::i;:::-;1632:7;1622:8;1618:22;1615:55;;;1652:16;;;;1615:55;1731:22;;;;1691:15;;;;1493:270;;;1497:3;1353:416;;;;;:::o;1774:806::-;1823:5;1853:8;1843:80;;-1:-1:-1;1894:1:141;1908:5;;1843:80;1942:4;1932:76;;-1:-1:-1;1979:1:141;1993:5;;1932:76;2024:4;2042:1;2037:59;;;;2110:1;2105:130;;;;2017:218;;2037:59;2067:1;2058:10;;2081:5;;;2105:130;2142:3;2132:8;2129:17;2126:43;;;2149:18;;:::i;:::-;-1:-1:-1;;2205:1:141;2191:16;;2220:5;;2017:218;;2319:2;2309:8;2306:16;2300:3;2294:4;2291:13;2287:36;2281:2;2271:8;2268:16;2263:2;2257:4;2254:12;2250:35;2247:77;2244:159;;;-1:-1:-1;2356:19:141;;;2388:5;;2244:159;2435:34;2460:8;2454:4;2435:34;:::i;:::-;2505:6;2501:1;2497:6;2493:19;2484:7;2481:32;2478:58;;;2516:18;;:::i;:::-;2554:20;;1774:806;-1:-1:-1;;;1774:806:141:o;2585:140::-;2643:5;2672:47;2713:4;2703:8;2699:19;2693:4;2672:47;:::i;2585:140::-;203:1149:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061025d575f3560e01c806382413eac1161014b578063bd815db0116100c6578063d42438851161007c578063f2fde38b11610062578063f2fde38b1461076a578063fc0c546a14610789578063ff7bd03d146107bb575f80fd5b8063d42438851461072c578063f01630231461074b575f80fd5b8063c7c7f5b3116100ac578063c7c7f5b3146106d9578063ca5eb5e1146106fa578063d045a0dc14610719575f80fd5b8063bd815db0146106a7578063c0779988146106ba575f80fd5b80639f68b9641161011b578063b98bd07011610101578063b98bd0701461063e578063bb0b6a531461065d578063bc70b35414610688575f80fd5b80639f68b964146105ff578063b731ea0a14610612575f80fd5b806382413eac14610569578063857749b0146105885780638da5cb5b146105a3578063963efcaa146105cc575f80fd5b80634dba701b116101db5780635a0dfe4d116101ab5780636fc1b31e116101915780636fc1b31e146104fc578063715018a61461051b5780637d25a05e1461052f575f80fd5b80635a0dfe4d146104845780635e280f11146104c9575f80fd5b80634dba701b146103e557806352ae28791461041257806354f52414146104245780635535d46114610458575f80fd5b8063156a0d0f116102305780631f5e1334116102165780631f5e1334146103865780633400288b1461039a5780633b6f743b146103b9575f80fd5b8063156a0d0f1461032557806317442b7014610365575f80fd5b80630d35b41514610261578063111ecdad1461029857806313137d65146102e9578063134d4f25146102fe575b5f80fd5b34801561026c575f80fd5b5061028061027b366004612129565b6107da565b60405161028f939291906121c6565b60405180910390f35b3480156102a3575f80fd5b506004546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028f565b6102fc6102f73660046122f1565b6108a6565b005b348015610309575f80fd5b50610312600281565b60405161ffff909116815260200161028f565b348015610330575f80fd5b50604080517f02e49c2c000000000000000000000000000000000000000000000000000000008152600160208201520161028f565b348015610370575f80fd5b506040805160018152600260208201520161028f565b348015610391575f80fd5b50610312600181565b3480156103a5575f80fd5b506102fc6103b43660046123a2565b6109a5565b3480156103c4575f80fd5b506103d86103d33660046123d7565b6109bb565b60405161028f9190612426565b3480156103f0575f80fd5b506104046103ff36600461243d565b610a21565b60405190815260200161028f565b34801561041d575f80fd5b50306102c4565b34801561042f575f80fd5b5061044361043e366004612478565b610a37565b60408051928352602083019190915201