0 txs
1 call
constructor
constructor(address _token, address _lzEndpoint, address _delegate)
functions
allowInitializePath
viewfunction allowInitializePath(tuple origin) view returns (bool)
approvalRequired
purefunction approvalRequired() pure returns (bool)
combineOptions
viewfunction combineOptions(uint32 _eid, uint16 _msgType, bytes _extraOptions) view returns (bytes)
decimalConversionRate
viewfunction decimalConversionRate() view returns (uint256)
endpoint
viewfunction endpoint() view returns (address)
enforcedOptions
viewfunction enforcedOptions(uint32 eid, uint16 msgType) view returns (bytes enforcedOption)
gasForDestinationLzReceive
viewfunction gasForDestinationLzReceive() view returns (uint128)
getEstimateGasFees
viewfunction getEstimateGasFees(uint32 _dstEid, uint128 _dstGasCost, uint256 _amount, uint256 _minAmount, address _receiver) view returns (tuple fee)
isComposeMsgSender
viewfunction isComposeMsgSender(tuple, bytes, address _sender) view returns (bool)
isPeer
viewfunction isPeer(uint32 _eid, bytes32 _peer) view returns (bool)
msgInspector
viewfunction msgInspector() view returns (address)
nextNonce
viewfunction nextNonce(uint32, bytes32) view returns (uint64 nonce)
oApp
viewfunction oApp() view returns (address)
oAppVersion
purefunction oAppVersion() pure returns (uint64 senderVersion, uint64 receiverVersion)
oftVersion
purefunction oftVersion() pure returns (bytes4 interfaceId, uint64 version)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
peers
viewfunction peers(uint32 eid) view returns (bytes32 peer)
preCrime
viewfunction preCrime() view returns (address)
quoteOFT
viewfunction quoteOFT(tuple _sendParam) view returns (tuple oftLimit, tuple[] oftFeeDetails, tuple oftReceipt)
quoteSend
viewfunction quoteSend(tuple _sendParam, bool _payInLzToken) view returns (tuple msgFee)
SEND_AND_CALL
viewfunction SEND_AND_CALL() view returns (uint16)
SEND
viewfunction SEND() view returns (uint16)
sharedDecimals
viewfunction sharedDecimals() view returns (uint8)
token
viewfunction token() view returns (address)
bridgeToken
payablefunction bridgeToken(uint32 _dstEid, uint128 _dstGasCost, uint256 _amountLD, uint256 _minAmountLD, address _receiver, address _refundAddress) payable
lzReceive
payablefunction lzReceive(tuple _origin, bytes32 _guid, bytes _message, address _executor, bytes _extraData) payable
lzReceiveAndRevert
payablefunction lzReceiveAndRevert(tuple[] _packets) payable
lzReceiveSimulate
payablefunction lzReceiveSimulate(tuple _origin, bytes32 _guid, bytes _message, address _executor, bytes _extraData) payable
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
send
payablefunction send(tuple _sendParam, tuple _fee, address _refundAddress) payable returns (tuple msgReceipt, tuple oftReceipt)
setDelegate
nonpayablefunction setDelegate(address _delegate)
setEnforcedOptions
nonpayablefunction setEnforcedOptions(tuple[] _enforcedOptions)
setMsgInspector
nonpayablefunction setMsgInspector(address _msgInspector)
setPeer
nonpayablefunction setPeer(uint32 _eid, bytes32 _peer)
setPreCrime
nonpayablefunction setPreCrime(address _preCrime)
transferLockedAsset
nonpayablefunction transferLockedAsset(address _to, uint256 _amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateGasForDestinationLzReceive
nonpayablefunction updateGasForDestinationLzReceive(uint128 _gasForDestinationLzReceive)
events
EnforcedOptionSet
event EnforcedOptionSet((uint32 eid, uint16 msgType, bytes options)[] _enforcedOptions)
GasForDestinationLzReceiveUpdated
event GasForDestinationLzReceiveUpdated(uint128 gas)
MsgInspectorSet
event MsgInspectorSet(address inspector)
OFTReceived
event OFTReceived(bytes32 indexed guid, uint32 srcEid, address indexed toAddress, uint256 amountReceivedLD)
OFTSent
event OFTSent(bytes32 indexed guid, uint32 dstEid, address indexed fromAddress, uint256 amountSentLD, uint256 amountReceivedLD)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PeerSet
event PeerSet(uint32 eid, bytes32 peer)
PreCrimeSet
event PreCrimeSet(address preCrimeAddress)
TokenBridged
event TokenBridged(address indexed from, uint32 indexed dstEid, uint256 amountSent, uint256 amountReceived, bytes32 indexed guid, address refundAddress)
TokenReceived
event TokenReceived(uint32 indexed srcEid, address indexed to, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AddressZero
error AddressZero()
InvalidDelegate
error InvalidDelegate()
InvalidEndpointCall
error InvalidEndpointCall()
InvalidGasForDestinationValue
error InvalidGasForDestinationValue()
InvalidLocalDecimals
error InvalidLocalDecimals()
InvalidOptions
error InvalidOptions(bytes options)
InvalidOptionType
error InvalidOptionType(uint16 optionType)
LzTokenUnavailable
error LzTokenUnavailable()
NoPeer
error NoPeer(uint32 eid)
NotEnoughNative
error NotEnoughNative(uint256 msgValue)
OnlyEndpoint
error OnlyEndpoint(address addr)
OnlyPeer
error OnlyPeer(uint32 eid, bytes32 sender)
OnlySelf
error OnlySelf()
SimulationResult
error SimulationResult(bytes result)
SlippageExceeded
error SlippageExceeded(uint256 amountLD, uint256 minAmountLD)
creation bytecode
0x60e0604052620cf850600660016101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503480156200004c575f80fd5b50604051620062be380380620062be83398181016040528101906200007291906200046c565b8282828273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000e5919062000500565b8282818181816200010b620000ff6200033760201b60201c565b6200033e60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001a5576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60805173ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b8152600401620001e2919062000541565b5f604051808303815f87803b158015620001fa575f80fd5b505af11580156200020d573d5f803e3d5ffd5b505050505050505062000225620003ff60201b60201c565b60ff168360ff16101562000265576040517f1e9714b000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000275620003ff60201b60201c565b8362000282919062000589565b600a6200029091906200071d565b60a081815250505050508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505060016005819055505f60065f6101000a81548160ff021916908315150217905550620cf850600660016101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050506200076d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6006905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000436826200040b565b9050919050565b62000448816200042a565b811462000453575f80fd5b50565b5f8151905062000466816200043d565b92915050565b5f805f6060848603121562000486576200048562000407565b5b5f620004958682870162000456565b9350506020620004a88682870162000456565b9250506040620004bb8682870162000456565b9150509250925092565b5f60ff82169050919050565b620004dc81620004c5565b8114620004e7575f80fd5b50565b5f81519050620004fa81620004d1565b92915050565b5f6020828403121562000518576200051762000407565b5b5f6200052784828501620004ea565b91505092915050565b6200053b816200042a565b82525050565b5f602082019050620005565f83018462000530565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200059582620004c5565b9150620005a283620004c5565b9250828203905060ff811115620005be57620005bd6200055c565b5b92915050565b5f8160011c9050919050565b5f808291508390505b60018511156200062157808604811115620005f957620005f86200055c565b5b6001851615620006095780820291505b80810290506200061985620005c4565b9450620005d9565b94509492505050565b5f826200063b57600190506200070d565b816200064a575f90506200070d565b81600181146200066357600281146200066e57620006a4565b60019150506200070d565b60ff8411156200068357620006826200055c565b5b8360020a9150848211156200069d576200069c6200055c565b5b506200070d565b5060208310610133831016604e8410600b8410161715620006de5782820a905083811115620006d857620006d76200055c565b5b6200070d565b620006ed8484846001620005d0565b925090508184048111156200070757620007066200055c565b5b81810290505b9392505050565b5f819050919050565b5f620007298262000714565b91506200073683620004c5565b9250620007657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200062a565b905092915050565b60805160a05160c051615acb620007f35f395f81816118d2015281816125fe0152612eb001525f818161109a0152818161264f01528181612944015281816129650152612a0901525f8181610b8501528181610f5f015281816116a501528181611b6b01528181611db901528181611ebc015281816127fe01526128f60152615acb5ff3fe608060405260043610610245575f3560e01c80637d25a05e11610138578063bb0b6a53116100b5578063d045a0dc11610079578063d045a0dc14610842578063d42438851461085e578063f2fde38b14610886578063f3234f40146108ae578063fc0c546a146108d8578063ff7bd03d1461090257610245565b8063bb0b6a5314610755578063bc70b35414610791578063bd815db0146107cd578063c7c7f5b3146107e9578063ca5eb5e11461081a57610245565b8063963efcaa116100fc578063963efcaa146106875780639bbdee99146106b15780639f68b964146106d9578063b731ea0a14610703578063b98bd0701461072d57610245565b80637d25a05e146105a557806382413eac146105e15780638456cb591461061d578063857749b0146106335780638da5cb5b1461065d57610245565b80633b6f743b116101c65780635a0dfe4d1161018a5780635a0dfe4d146104d75780635c975abb146105135780635e280f111461053d5780636fc1b31e14610567578063715018a61461058f57610245565b80633b6f743b146103f75780633f4ba83a14610433578063480440631461044957806352ae2879146104715780635535d4611461049b57610245565b8063156a0d0f1161020d578063156a0d0f14610313578063170d3c5d1461033e57806317442b701461037a5780631f5e1334146103a55780633400288b146103cf57610245565b806305478dc1146102495780630d35b41514610265578063111ecdad146102a357806313137d65146102cd578063134d4f25146102e9575b5f80fd5b610263600480360381019061025e91906132c2565b61093e565b005b348015610270575f80fd5b5061028b6004803603810190610286919061336d565b610a6d565b60405161029a939291906135b4565b60405180910390f35b3480156102ae575f80fd5b506102b7610b47565b6040516102c491906135ff565b60405180910390f35b6102e760048036038101906102e291906136ca565b610b6c565b005b3480156102f4575f80fd5b506102fd610c8c565b60405161030a919061379d565b60405180910390f35b34801561031e575f80fd5b50610327610c91565b604051610335929190613812565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190613839565b610cbe565b60405161037191906138dd565b60405180910390f35b348015610385575f80fd5b5061038e610d09565b60405161039c9291906138f6565b60405180910390f35b3480156103b0575f80fd5b506103b9610d17565b6040516103c6919061379d565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f0919061391d565b610d1c565b005b348015610402575f80fd5b5061041d60048036038101906104189190613990565b610d32565b60405161042a91906138dd565b60405180910390f35b34801561043e575f80fd5b50610447610d9a565b005b348015610454575f80fd5b5061046f600480360381019061046a91906139ea565b610dac565b005b34801561047c575f80fd5b50610485610e72565b60405161049291906135ff565b60405180910390f35b3480156104a6575f80fd5b506104c160048036038101906104bc9190613a3f565b610e79565b6040516104ce9190613acf565b60405180910390f35b3480156104e2575f80fd5b506104fd60048036038101906104f8919061391d565b610f1f565b60405161050a9190613afe565b60405180910390f35b34801561051e575f80fd5b50610527610f48565b6040516105349190613afe565b60405180910390f35b348015610548575f80fd5b50610551610f5d565b60405161055e9190613b72565b60405180910390f35b348015610572575f80fd5b5061058d60048036038101906105889190613b8b565b610f81565b005b34801561059a575f80fd5b506105a3611003565b005b3480156105b0575f80fd5b506105cb60048036038101906105c6919061391d565b611016565b6040516105d89190613bb6565b60405180910390f35b3480156105ec575f80fd5b5061060760048036038101906106029190613bcf565b61101d565b6040516106149190613afe565b60405180910390f35b348015610628575f80fd5b50610631611057565b005b34801561063e575f80fd5b50610647611069565b6040516106549190613c5b565b60405180910390f35b348015610668575f80fd5b50610671611071565b60405161067e91906135ff565b60405180910390f35b348015610692575f80fd5b5061069b611098565b6040516106a89190613c83565b60405180910390f35b3480156106bc575f80fd5b506106d760048036038101906106d29190613c9c565b6110bc565b005b3480156106e4575f80fd5b506106ed61115f565b6040516106fa9190613afe565b60405180910390f35b34801561070e575f80fd5b50610717611167565b60405161072491906135ff565b60405180910390f35b348015610738575f80fd5b50610753600480360381019061074e9190613d2f565b61118c565b005b348015610760575f80fd5b5061077b60048036038101906107769190613d7a565b6111ad565b6040516107889190613db4565b60405180910390f35b34801561079c575f80fd5b506107b760048036038101906107b29190613dcd565b6111c2565b6040516107c49190613acf565b60405180910390f35b6107e760048036038101906107e29190613e93565b6113c4565b005b61080360048036038101906107fe9190613efc565b611596565b604051610811929190613ff3565b60405180910390f35b348015610825575f80fd5b50610840600480360381019061083b9190613b8b565b61169b565b005b61085c600480360381019061085791906136ca565b61172c565b005b348015610869575f80fd5b50610884600480360381019061087f9190613b8b565b6117a9565b005b348015610891575f80fd5b506108ac60048036038101906108a79190613b8b565b61182b565b005b3480156108b9575f80fd5b506108c26118ad565b6040516108cf9190614029565b60405180910390f35b3480156108e3575f80fd5b506108ec6118cf565b6040516108f991906135ff565b60405180910390f35b34801561090d575f80fd5b5061092860048036038101906109239190614042565b6118f6565b6040516109359190613afe565b60405180910390f35b610946611933565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109ab576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806109b93387878b611982565b915091505f806109d38a846109cd8c6119a5565b89611a1d565b915091505f6109f98b848460405180604001604052803481526020015f8152508a611b38565b9050805f01518b63ffffffff163373ffffffffffffffffffffffffffffffffffffffff167f97ae8fdf081972292c6f89c93b1417e05e45d4a2d0aacd296c7d8e91ec74e1fd88888b604051610a509392919061406d565b60405180910390a45050505050610a65611c4e565b505050505050565b610a75613113565b6060610a7f61312b565b5f8067ffffffffffffffff8016905060405180604001604052808381526020018281525094505f67ffffffffffffffff811115610abf57610abe6140a2565b5b604051908082528060200260200182016040528015610af857816020015b610ae5613143565b815260200190600190039081610add5790505b5093505f80610b21886040013589606001358a5f016020810190610b1c9190613d7a565b611c58565b915091506040518060400160405280838152602001828152509450505050509193909250565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610bfc57336040517f91ac5e4f000000000000000000000000000000000000000000000000000000008152600401610bf391906135ff565b60405180910390fd5b8660200135610c1b885f016020810190610c169190613d7a565b611cb7565b14610c7457865f016020810190610c329190613d7a565b87602001356040517fc26bebcc000000000000000000000000000000000000000000000000000000008152600401610c6b9291906140de565b60405180910390fd5b610c8387878787878787611d28565b50505050505050565b600281565b5f807f02e49c2c000000000000000000000000000000000000000000000000000000006001915091509091565b610cc661315c565b5f610cd2858589611c58565b9150505f80610ceb8984610ce58b6119a5565b88611a1d565b91509150610cfb8983835f611eb2565b935050505095945050505050565b5f8060016002915091509091565b600181565b610d24611f93565b610d2e8282612011565b5050565b610d3a61315c565b5f610d5f84604001358560600135865f016020810190610d5a9190613d7a565b611c58565b9150505f80610d6e8684612070565b91509150610d8f865f016020810190610d879190613d7a565b838388611eb2565b935050505092915050565b610da2611f93565b610daa612201565b565b610db4611f93565b5f816fffffffffffffffffffffffffffffffff1603610dff576040517ff70ce9cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660016101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fd93b4e37994dda43626c50764f3440ccc5542fd4041b49a94b5f5da023ef32b981604051610e679190614029565b60405180910390a150565b5f30905090565b6003602052815f5260405f20602052805f5260405f205f91509150508054610ea090614132565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecc90614132565b8015610f175780601f10610eee57610100808354040283529160200191610f17565b820191905f5260205f20905b815481529060010190602001808311610efa57829003601f168201915b505050505081565b5f8160015f8563ffffffff1663ffffffff1681526020019081526020015f205414905092915050565b5f60065f9054906101000a900460ff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f89611f93565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419781604051610ff891906135ff565b60405180910390a150565b61100b611f93565b6110145f612262565b565b5f92915050565b5f3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050949350505050565b61105f611f93565b611067612323565b565b5f6006905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110c4611f93565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611129576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115b82826111366118cf565b73ffffffffffffffffffffffffffffffffffffffff166123859092919063ffffffff16565b5050565b5f6001905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611194611f93565b6111a98282906111a49190614393565b61240b565b5050565b6001602052805f5260405f205f915090505481565b60605f60035f8763ffffffff1663ffffffff1681526020019081526020015f205f8661ffff1661ffff1681526020019081526020015f20805461120490614132565b80601f016020809104026020016040519081016040528092919081815260200182805461123090614132565b801561127b5780601f106112525761010080835404028352916020019161127b565b820191905f5260205f20905b81548152906001019060200180831161125e57829003601f168201915b505050505090505f8151036112d65783838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050509150506113bc565b5f84849050036112e957809150506113bc565b6002848490501061137d5761134084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612526565b8084846002908092611354939291906143af565b60405160200161136693929190614447565b6040516020818303038152906040529150506113bc565b83836040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016113b3929190614498565b60405180910390fd5b949350505050565b5f5b828290508110156114e957368383838181106113e5576113e46144ba565b5b90506020028101906113f791906144f3565b905061141c815f015f0160208101906114109190613d7a565b825f0160200135610f1f565b61142657506114d6565b3073ffffffffffffffffffffffffffffffffffffffff1663d045a0dc8260c00135835f018460a0013585806101000190611460919061451b565b8760e00160208101906114739190613b8b565b88806101200190611484919061451b565b6040518963ffffffff1660e01b81526004016114a69796959493929190614650565b5f604051808303818588803b1580156114bd575f80fd5b505af11580156114cf573d5f803e3d5ffd5b5050505050505b80806114e1906146e0565b9150506113c6565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b81526004015f60405180830381865afa158015611532573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061155a9190614795565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161158d9190613acf565b60405180910390fd5b61159e613174565b6115a661312b565b5f806115cd33886040013589606001358a5f0160208101906115c89190613d7a565b611982565b915091505f806115dd8984612070565b9150915061160f895f0160208101906115f69190613d7a565b83838b8036038101906116099190614829565b8b611b38565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff16865f01517f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a8b5f0160208101906116769190613d7a565b878760405161168793929190614854565b60405180910390a350505050935093915050565b6116a3611f93565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca5eb5e1826040518263ffffffff1660e01b81526004016116fc91906135ff565b5f604051808303815f87803b158015611713575f80fd5b505af1158015611725573d5f803e3d5ffd5b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611791576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a08787878787878761257f565b50505050505050565b6117b1611f93565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277608160405161182091906135ff565b60405180910390a150565b611833611f93565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189890614909565b60405180910390fd5b6118aa81612262565b50565b600660019054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f7f0000000000000000000000000000000000000000000000000000000000000000905090565b5f816020013560015f845f0160208101906119119190613d7a565b63ffffffff1663ffffffff1681526020019081526020015f2054149050919050565b600260055403611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90614971565b60405180910390fd5b6002600581905550565b5f8061198c612597565b611998868686866125e1565b9150915094509492505050565b5f600660019054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1611156119f65781611a16565b600660019054906101000a90046fffffffffffffffffffffffffffffffff165b9050919050565b606080611a978373ffffffffffffffffffffffffffffffffffffffff165f1b611a458761264c565b5f67ffffffffffffffff811115611a5f57611a5e6140a2565b5b6040519080825280601f01601f191660200182016040528015611a915781602001600182028036833780820191505090505b50612680565b50809250503073ffffffffffffffffffffffffffffffffffffffff1663bc70b354876001611acd611ac66126ee565b895f612716565b6040518463ffffffff1660e01b8152600401611aeb9392919061498f565b5f60405180830381865afa158015611b05573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611b2d9190614795565b905094509492505050565b611b40613174565b5f611b4d845f01516127ae565b90505f84602001511115611b6957611b6884602001516127fb565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611bc68c611cb7565b81526020018a81526020018981526020015f8960200151111515815250866040518463ffffffff1660e01b8152600401611c01929190614a9c565b60806040518083038185885af1158015611c1d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c429190614bb4565b91505095945050505050565b6001600581905550565b5f80611c6385612941565b915081905083811015611caf5780846040517f71c4efed000000000000000000000000000000000000000000000000000000008152600401611ca6929190614bdf565b60405180910390fd5b935093915050565b5f8060015f8463ffffffff1663ffffffff1681526020019081526020015f205490505f801b8103611d1f57826040517ff6ff4fb7000000000000000000000000000000000000000000000000000000008152600401611d169190614c06565b60405180910390fd5b80915050919050565b5f611d3b611d3687876129a0565b6129ca565b90505f611d6b82611d54611d4f8a8a6129d5565b612a06565b8b5f016020810190611d669190613d7a565b612a44565b9050611d778787612ab6565b15611e45575f611db58a6040016020810190611d939190614c1f565b8b5f016020810190611da59190613d7a565b84611db08c8c612ac9565b612b2b565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637cb59012848b5f856040518563ffffffff1660e01b8152600401611e169493929190614c83565b5f604051808303815f87803b158015611e2d575f80fd5b505af1158015611e3f573d5f803e3d5ffd5b50505050505b8173ffffffffffffffffffffffffffffffffffffffff16887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c8b5f016020810190611e909190613d7a565b84604051611e9f929190614ccd565b60405180910390a3505050505050505050565b611eba61315c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611f1689611cb7565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611f4b929190614a9c565b6040805180830381865afa158015611f65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f899190614cf4565b9050949350505050565b611f9b612b5d565b73ffffffffffffffffffffffffffffffffffffffff16611fb9611071565b73ffffffffffffffffffffffffffffffffffffffff161461200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200690614d69565b60405180910390fd5b565b8060015f8463ffffffff1663ffffffff1681526020019081526020015f20819055507f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b82826040516120649291906140de565b60405180910390a15050565b6060805f6120dc85602001356120858661264c565b878060a00190612095919061451b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612680565b80925081945050505f816120f15760016120f4565b60025b9050612121865f01602081019061210b9190613d7a565b8288806080019061211c919061451b565b6111c2565b92505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121f7578073ffffffffffffffffffffffffffffffffffffffff1663043a78eb86866040518363ffffffff1660e01b81526004016121b6929190614d87565b602060405180830381865afa1580156121d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f59190614dd0565b505b5050509250929050565b612209612b64565b5f60065f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61224b612b5d565b60405161225891906135ff565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61232b612597565b600160065f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861236e612b5d565b60405161237b91906135ff565b60405180910390a1565b6124068363a9059cbb60e01b84846040516024016123a4929190614dfb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bad565b505050565b5f5b81518110156124eb5761243d82828151811061242c5761242b6144ba565b5b602002602001015160400151612526565b8181815181106124505761244f6144ba565b5b60200260200101516040015160035f848481518110612472576124716144ba565b5b60200260200101515f015163ffffffff1663ffffffff1681526020019081526020015f205f8484815181106124aa576124a96144ba565b5b60200260200101516020015161ffff1661ffff1681526020019081526020015f2090816124d79190614fb6565b5080806124e3906146e0565b91505061240d565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748160405161251b919061519c565b60405180910390a150565b5f60028201519050600361ffff168161ffff161461257b57816040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016125729190613acf565b60405180910390fd5b5050565b61258e87878787878787611d28565b50505050505050565b61259f610f48565b156125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d690615206565b60405180910390fd5b565b5f806125ee858585611c58565b80925081935050506126438630847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612c73909392919063ffffffff16565b94509492505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000826126799190615251565b9050919050565b60605f808351119050806126b55784846040516020016126a19291906152d5565b6040516020818303038152906040526126e4565b84846126c033612cfc565b856040516020016126d49493929190615300565b6040516020818303038152906040525b9150935093915050565b60606003604051602001612702919061537d565b604051602081830303815290604052905090565b606083600361ffff166127325f83612d1d90919063ffffffff16565b61ffff161461278a5761274e5f82612d1d90919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401612781919061379d565b60405180910390fd5b5f6127958585612d82565b90506127a386600183612ded565b925050509392505050565b5f8134146127f357346040517f9f7041200000000000000000000000000000000000000000000000000000000081526004016127ea9190613c83565b60405180910390fd5b819050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612865573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061288991906153ab565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128f0576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61293d337f0000000000000000000000000000000000000000000000000000000000000000848473ffffffffffffffffffffffffffffffffffffffff16612c73909392919063ffffffff16565b5050565b5f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008361298f9190615251565b61299991906153d6565b9050919050565b5f82825f90602060ff16926129b7939291906143af565b906129c29190615421565b905092915050565b5f815f1c9050919050565b5f8282602060ff1690602860ff16926129f0939291906143af565b906129fb91906154aa565b60c01c905092915050565b5f7f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff16612a3d91906153d6565b9050919050565b5f612a4d612597565b8373ffffffffffffffffffffffffffffffffffffffff168263ffffffff167f08edfb0e605a596618e56e1d5b5768452e50dd04d9b5703b9ca6e39594913ca385604051612a9a9190613c83565b60405180910390a3612aad848484612ea8565b90509392505050565b5f602860ff168383905011905092915050565b60608282602860ff16908092612ae1939291906143af565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050905092915050565b606084848484604051602001612b44949392919061555c565b6040516020818303038152906040529050949350505050565b5f33905090565b612b6c610f48565b612bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba2906155ef565b60405180910390fd5b565b5f612c0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612efe9092919063ffffffff16565b90505f81511480612c2f575080806020019051810190612c2e9190614dd0565b5b612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c659061567d565b60405180910390fd5b505050565b612cf6846323b872dd60e01b858585604051602401612c949392919061569b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bad565b50505050565b5f8173ffffffffffffffffffffffffffffffffffffffff165f1b9050919050565b5f600282612d2b91906156d0565b83511015612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d659061574d565b60405180910390fd5b5f8260028501015190508091505092915050565b60605f826fffffffffffffffffffffffffffffffff1614612dc4578282604051602001612db092919061579f565b604051602081830303815290604052612de5565b82604051602001612dd591906157ca565b6040516020818303038152906040525b905092915050565b606083600361ffff16612e095f83612d1d90919063ffffffff16565b61ffff1614612e6157612e255f82612d1d90919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401612e58919061379d565b60405180910390fd5b84600180612e6f8651612f15565b612e7991906157e4565b8686604051602001612e8f95949392919061584d565b6040516020818303038152906040529150509392505050565b5f612ef484847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166123859092919063ffffffff16565b8290509392505050565b6060612f0c84845f85612f65565b90509392505050565b5f61ffff8016821115612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5490615913565b60405180910390fd5b819050919050565b606082471015612faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa1906159a1565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff168587604051612fd291906159bf565b5f6040518083038185875af1925050503d805f811461300c576040519150601f19603f3d011682016040523d82523d5f602084013e613011565b606091505b50915091506130228783838761302e565b92505050949350505050565b6060831561308f575f83510361308757613047856130a2565b613086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307d90615a1f565b60405180910390fd5b5b82905061309a565b61309983836130c4565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156130d65781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310a9190615a75565b60405180910390fd5b60405180604001604052805f81526020015f81525090565b60405180604001604052805f81526020015f81525090565b60405180604001604052805f8152602001606081525090565b60405180604001604052805f81526020015f81525090565b60405180606001604052805f80191681526020015f67ffffffffffffffff1681526020016131a061315c565b81525090565b5f604051905090565b5f80fd5b5f80fd5b5f63ffffffff82169050919050565b6131cf816131b7565b81146131d9575f80fd5b50565b5f813590506131ea816131c6565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b613214816131f0565b811461321e575f80fd5b50565b5f8135905061322f8161320b565b92915050565b5f819050919050565b61324781613235565b8114613251575f80fd5b50565b5f813590506132628161323e565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61329182613268565b9050919050565b6132a181613287565b81146132ab575f80fd5b50565b5f813590506132bc81613298565b92915050565b5f805f805f8060c087890312156132dc576132db6131af565b5b5f6132e989828a016131dc565b96505060206132fa89828a01613221565b955050604061330b89828a01613254565b945050606061331c89828a01613254565b935050608061332d89828a016132ae565b92505060a061333e89828a016132ae565b9150509295509295509295565b5f80fd5b5f60e082840312156133645761336361334b565b5b81905092915050565b5f60208284031215613382576133816131af565b5b5f82013567ffffffffffffffff81111561339f5761339e6131b3565b5b6133ab8482850161334f565b91505092915050565b6133bd81613235565b82525050565b604082015f8201516133d75f8501826133b4565b5060208201516133ea60208501826133b4565b50505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61342b81613419565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561346857808201518184015260208101905061344d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61348d82613431565b613497818561343b565b93506134a781856020860161344b565b6134b081613473565b840191505092915050565b5f604083015f8301516134d05f860182613422565b50602083015184820360208601526134e88282613483565b9150508091505092915050565b5f61350083836134bb565b905092915050565b5f602082019050919050565b5f61351e826133f0565b61352881856133fa565b93508360208202850161353a8561340a565b805f5b85811015613575578484038952815161355685826134f5565b945061356183613508565b925060208a0199505060018101905061353d565b50829750879550505050505092915050565b604082015f82015161359b5f8501826133b4565b5060208201516135ae60208501826133b4565b50505050565b5f60a0820190506135c75f8301866133c3565b81810360408301526135d98185613514565b90506135e86060830184613587565b949350505050565b6135f981613287565b82525050565b5f6020820190506136125f8301846135f0565b92915050565b5f6060828403121561362d5761362c61334b565b5b81905092915050565b5f819050919050565b61364881613636565b8114613652575f80fd5b50565b5f813590506136638161363f565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261368a57613689613669565b5b8235905067ffffffffffffffff8111156136a7576136a661366d565b5b6020830191508360018202830111156136c3576136c2613671565b5b9250929050565b5f805f805f805f60e0888a0312156136e5576136e46131af565b5b5f6136f28a828b01613618565b97505060606137038a828b01613655565b965050608088013567ffffffffffffffff811115613724576137236131b3565b5b6137308a828b01613675565b955095505060a06137438a828b016132ae565b93505060c088013567ffffffffffffffff811115613764576137636131b3565b5b6137708a828b01613675565b925092505092959891949750929550565b5f61ffff82169050919050565b61379781613781565b82525050565b5f6020820190506137b05f83018461378e565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6137ea816137b6565b82525050565b5f67ffffffffffffffff82169050919050565b61380c816137f0565b82525050565b5f6040820190506138255f8301856137e1565b6138326020830184613803565b9392505050565b5f805f805f60a08688031215613852576138516131af565b5b5f61385f888289016131dc565b955050602061387088828901613221565b945050604061388188828901613254565b935050606061389288828901613254565b92505060806138a3888289016132ae565b9150509295509295909350565b604082015f8201516138c45f8501826133b4565b5060208201516138d760208501826133b4565b50505050565b5f6040820190506138f05f8301846138b0565b92915050565b5f6040820190506139095f830185613803565b6139166020830184613803565b9392505050565b5f8060408385031215613933576139326131af565b5b5f613940858286016131dc565b925050602061395185828601613655565b9150509250929050565b5f8115159050919050565b61396f8161395b565b8114613979575f80fd5b50565b5f8135905061398a81613966565b92915050565b5f80604083850312156139a6576139a56131af565b5b5f83013567ffffffffffffffff8111156139c3576139c26131b3565b5b6139cf8582860161334f565b92505060206139e08582860161397c565b9150509250929050565b5f602082840312156139ff576139fe6131af565b5b5f613a0c84828501613221565b91505092915050565b613a1e81613781565b8114613a28575f80fd5b50565b5f81359050613a3981613a15565b92915050565b5f8060408385031215613a5557613a546131af565b5b5f613a62858286016131dc565b9250506020613a7385828601613a2b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f613aa182613a7d565b613aab8185613a87565b9350613abb81856020860161344b565b613ac481613473565b840191505092915050565b5f6020820190508181035f830152613ae78184613a97565b905092915050565b613af88161395b565b82525050565b5f602082019050613b115f830184613aef565b92915050565b5f819050919050565b5f613b3a613b35613b3084613268565b613b17565b613268565b9050919050565b5f613b4b82613b20565b9050919050565b5f613b5c82613b41565b9050919050565b613b6c81613b52565b82525050565b5f602082019050613b855f830184613b63565b92915050565b5f60208284031215613ba057613b9f6131af565b5b5f613bad848285016132ae565b91505092915050565b5f602082019050613bc95f830184613803565b92915050565b5f805f8060a08587031215613be757613be66131af565b5b5f613bf487828801613618565b945050606085013567ffffffffffffffff811115613c1557613c146131b3565b5b613c2187828801613675565b93509350506080613c34878288016132ae565b91505092959194509250565b5f60ff82169050919050565b613c5581613c40565b82525050565b5f602082019050613c6e5f830184613c4c565b92915050565b613c7d81613235565b82525050565b5f602082019050613c965f830184613c74565b92915050565b5f8060408385031215613cb257613cb16131af565b5b5f613cbf858286016132ae565b9250506020613cd085828601613254565b9150509250929050565b5f8083601f840112613cef57613cee613669565b5b8235905067ffffffffffffffff811115613d0c57613d0b61366d565b5b602083019150836020820283011115613d2857613d27613671565b5b9250929050565b5f8060208385031215613d4557613d446131af565b5b5f83013567ffffffffffffffff811115613d6257613d616131b3565b5b613d6e85828601613cda565b92509250509250929050565b5f60208284031215613d8f57613d8e6131af565b5b5f613d9c848285016131dc565b91505092915050565b613dae81613636565b82525050565b5f602082019050613dc75f830184613da5565b92915050565b5f805f8060608587031215613de557613de46131af565b5b5f613df2878288016131dc565b9450506020613e0387828801613a2b565b935050604085013567ffffffffffffffff811115613e2457613e236131b3565b5b613e3087828801613675565b925092505092959194509250565b5f8083601f840112613e5357613e52613669565b5b8235905067ffffffffffffffff811115613e7057613e6f61366d565b5b602083019150836020820283011115613e8c57613e8b613671565b5b9250929050565b5f8060208385031215613ea957613ea86131af565b5b5f83013567ffffffffffffffff811115613ec657613ec56131b3565b5b613ed285828601613e3e565b92509250509250929050565b5f60408284031215613ef357613ef261334b565b5b81905092915050565b5f805f60808486031215613f1357613f126131af565b5b5f84013567ffffffffffffffff811115613f3057613f2f6131b3565b5b613f3c8682870161334f565b9350506020613f4d86828701613ede565b9250506060613f5e868287016132ae565b9150509250925092565b613f7181613636565b82525050565b613f80816137f0565b82525050565b604082015f820151613f9a5f8501826133b4565b506020820151613fad60208501826133b4565b50505050565b608082015f820151613fc75f850182613f68565b506020820151613fda6020850182613f77565b506040820151613fed6040850182613f86565b50505050565b5f60c0820190506140065f830185613fb3565b6140136080830184613587565b9392505050565b614023816131f0565b82525050565b5f60208201905061403c5f83018461401a565b92915050565b5f60608284031215614057576140566131af565b5b5f61406484828501613618565b91505092915050565b5f6060820190506140805f830186613c74565b61408d6020830185613c74565b61409a60408301846135f0565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140d8816131b7565b82525050565b5f6040820190506140f15f8301856140cf565b6140fe6020830184613da5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061414957607f821691505b60208210810361415c5761415b614105565b5b50919050565b61416b82613473565b810181811067ffffffffffffffff8211171561418a576141896140a2565b5b80604052505050565b5f61419c6131a6565b90506141a88282614162565b919050565b5f67ffffffffffffffff8211156141c7576141c66140a2565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156141fe576141fd6140a2565b5b61420782613473565b9050602081019050919050565b828183375f83830152505050565b5f61423461422f846141e4565b614193565b9050828152602081018484840111156142505761424f6141e0565b5b61425b848285614214565b509392505050565b5f82601f83011261427757614276613669565b5b8135614287848260208601614222565b91505092915050565b5f606082840312156142a5576142a46141d8565b5b6142af6060614193565b90505f6142be848285016131dc565b5f8301525060206142d184828501613a2b565b602083015250604082013567ffffffffffffffff8111156142f5576142f46141dc565b5b61430184828501614263565b60408301525092915050565b5f61431f61431a846141ad565b614193565b9050808382526020820190506020840283018581111561434257614341613671565b5b835b8181101561438957803567ffffffffffffffff81111561436757614366613669565b5b8086016143748982614290565b85526020850194505050602081019050614344565b5050509392505050565b5f61439f36848461430d565b905092915050565b5f80fd5b5f80fd5b5f80858511156143c2576143c16143a7565b5b838611156143d3576143d26143ab565b5b6001850283019150848603905094509492505050565b5f81905092915050565b5f6143fd82613a7d565b61440781856143e9565b935061441781856020860161344b565b80840191505092915050565b5f61442e83856143e9565b935061443b838584614214565b82840190509392505050565b5f61445282866143f3565b915061445f828486614423565b9150819050949350505050565b5f6144778385613a87565b9350614484838584614214565b61448d83613473565b840190509392505050565b5f6020820190508181035f8301526144b181848661446c565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f823560016101400383360303811261450f5761450e6144e7565b5b80830191505092915050565b5f8083356001602003843603038112614537576145366144e7565b5b80840192508235915067ffffffffffffffff821115614559576145586144eb565b5b602083019250600182023603831315614575576145746144ef565b5b509250929050565b5f61458b60208401846131dc565b905092915050565b61459c816131b7565b82525050565b5f6145b06020840184613655565b905092915050565b6145c1816137f0565b81146145cb575f80fd5b50565b5f813590506145dc816145b8565b92915050565b5f6145f060208401846145ce565b905092915050565b606082016146085f83018361457d565b6146145f850182614593565b5061462260208301836145a2565b61462f6020850182613f68565b5061463d60408301836145e2565b61464a6040850182613f77565b50505050565b5f60e0820190506146635f83018a6145f8565b6146706060830189613da5565b818103608083015261468381878961446c565b905061469260a08301866135f0565b81810360c08301526146a581848661446c565b905098975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6146ea82613235565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361471c5761471b6146b3565b5b600182019050919050565b5f614739614734846141e4565b614193565b905082815260208101848484011115614755576147546141e0565b5b61476084828561344b565b509392505050565b5f82601f83011261477c5761477b613669565b5b815161478c848260208601614727565b91505092915050565b5f602082840312156147aa576147a96131af565b5b5f82015167ffffffffffffffff8111156147c7576147c66131b3565b5b6147d384828501614768565b91505092915050565b5f604082840312156147f1576147f06141d8565b5b6147fb6040614193565b90505f61480a84828501613254565b5f83015250602061481d84828501613254565b60208301525092915050565b5f6040828403121561483e5761483d6131af565b5b5f61484b848285016147dc565b91505092915050565b5f6060820190506148675f8301866140cf565b6148746020830185613c74565b6148816040830184613c74565b949350505050565b5f82825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6148f3602683614889565b91506148fe82614899565b604082019050919050565b5f6020820190508181035f830152614920816148e7565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f61495b601f83614889565b915061496682614927565b602082019050919050565b5f6020820190508181035f8301526149888161494f565b9050919050565b5f6060820190506149a25f8301866140cf565b6149af602083018561378e565b81810360408301526149c18184613a97565b9050949350505050565b5f82825260208201905092915050565b5f6149e582613a7d565b6149ef81856149cb565b93506149ff81856020860161344b565b614a0881613473565b840191505092915050565b614a1c8161395b565b82525050565b5f60a083015f830151614a375f860182614593565b506020830151614a4a6020860182613f68565b5060408301518482036040860152614a6282826149db565b91505060608301518482036060860152614a7c82826149db565b9150506080830151614a916080860182614a13565b508091505092915050565b5f6040820190508181035f830152614ab48185614a22565b9050614ac360208301846135f0565b9392505050565b5f81519050614ad88161363f565b92915050565b5f81519050614aec816145b8565b92915050565b5f81519050614b008161323e565b92915050565b5f60408284031215614b1b57614b1a6141d8565b5b614b256040614193565b90505f614b3484828501614af2565b5f830152506020614b4784828501614af2565b60208301525092915050565b5f60808284031215614b6857614b676141d8565b5b614b726060614193565b90505f614b8184828501614aca565b5f830152506020614b9484828501614ade565b6020830152506040614ba884828501614b06565b60408301525092915050565b5f60808284031215614bc957614bc86131af565b5b5f614bd684828501614b53565b91505092915050565b5f604082019050614bf25f830185613c74565b614bff6020830184613c74565b9392505050565b5f602082019050614c195f8301846140cf565b92915050565b5f60208284031215614c3457614c336131af565b5b5f614c41848285016145ce565b91505092915050565b5f819050919050565b5f614c6d614c68614c6384614c4a565b613b17565b613781565b9050919050565b614c7d81614c53565b82525050565b5f608082019050614c965f8301876135f0565b614ca36020830186613da5565b614cb06040830185614c74565b8181036060830152614cc28184613a97565b905095945050505050565b5f604082019050614ce05f8301856140cf565b614ced6020830184613c74565b9392505050565b5f60408284031215614d0957614d086131af565b5b5f614d1684828501614b06565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614d53602083614889565b9150614d5e82614d1f565b602082019050919050565b5f6020820190508181035f830152614d8081614d47565b9050919050565b5f6040820190508181035f830152614d9f8185613a97565b90508181036020830152614db38184613a97565b90509392505050565b5f81519050614dca81613966565b92915050565b5f60208284031215614de557614de46131af565b5b5f614df284828501614dbc565b91505092915050565b5f604082019050614e0e5f8301856135f0565b614e1b6020830184613c74565b9392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614e7e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614e43565b614e888683614e43565b95508019841693508086168417925050509392505050565b5f614eba614eb5614eb084613235565b613b17565b613235565b9050919050565b5f819050919050565b614ed383614ea0565b614ee7614edf82614ec1565b848454614e4f565b825550505050565b5f90565b614efb614eef565b614f06818484614eca565b505050565b5b81811015614f2957614f1e5f82614ef3565b600181019050614f0c565b5050565b601f821115614f6e57614f3f81614e22565b614f4884614e34565b81016020851015614f57578190505b614f6b614f6385614e34565b830182614f0b565b50505b505050565b5f82821c905092915050565b5f614f8e5f1984600802614f73565b1980831691505092915050565b5f614fa68383614f7f565b9150826002028217905092915050565b614fbf82613a7d565b67ffffffffffffffff811115614fd857614fd76140a2565b5b614fe28254614132565b614fed828285614f2d565b5f60209050601f83116001811461501e575f841561500c578287015190505b6150168582614f9b565b86555061507d565b601f19841661502c86614e22565b5f5b828110156150535784890151825560018201915060208501945060208101905061502e565b86831015615070578489015161506c601f891682614f7f565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6150b781613781565b82525050565b5f606083015f8301516150d25f860182614593565b5060208301516150e560208601826150ae565b50604083015184820360408601526150fd82826149db565b9150508091505092915050565b5f61511583836150bd565b905092915050565b5f602082019050919050565b5f61513382615085565b61513d818561508f565b93508360208202850161514f8561509f565b805f5b8581101561518a578484038952815161516b858261510a565b94506151768361511d565b925060208a01995050600181019050615152565b50829750879550505050505092915050565b5f6020820190508181035f8301526151b48184615129565b905092915050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6151f0601083614889565b91506151fb826151bc565b602082019050919050565b5f6020820190508181035f83015261521d816151e4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61525b82613235565b915061526683613235565b92508261527657615275615224565b5b828204905092915050565b5f819050919050565b61529b61529682613636565b615281565b82525050565b5f8160c01b9050919050565b5f6152b7826152a1565b9050919050565b6152cf6152ca826137f0565b6152ad565b82525050565b5f6152e0828561528a565b6020820191506152f082846152be565b6008820191508190509392505050565b5f61530b828761528a565b60208201915061531b82866152be565b60088201915061532b828561528a565b60208201915061533b82846143f3565b915081905095945050505050565b5f8160f01b9050919050565b5f61535f82615349565b9050919050565b61537761537282613781565b615355565b82525050565b5f6153888284615366565b60028201915081905092915050565b5f815190506153a581613298565b92915050565b5f602082840312156153c0576153bf6131af565b5b5f6153cd84828501615397565b91505092915050565b5f6153e082613235565b91506153eb83613235565b92508282026153f981613235565b915082820484148315176154105761540f6146b3565b5b5092915050565b5f82905092915050565b5f61542c8383615417565b826154378135613636565b92506020821015615477576154727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802614e43565b831692505b505092915050565b5f7fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b5f6154b58383615417565b826154c0813561547f565b92506008821015615500576154fb7fffffffffffffffff00000000000000000000000000000000000000000000000083600803600802614e43565b831692505b505092915050565b5f8160e01b9050919050565b5f61551e82615508565b9050919050565b615536615531826131b7565b615514565b82525050565b5f819050919050565b61555661555182613235565b61553c565b82525050565b5f61556782876152be565b6008820191506155778286615525565b6004820191506155878285615545565b60208201915061559782846143f3565b915081905095945050505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f6155d9601483614889565b91506155e4826155a5565b602082019050919050565b5f6020820190508181035f830152615606816155cd565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f615667602a83614889565b91506156728261560d565b604082019050919050565b5f6020820190508181035f8301526156948161565b565b9050919050565b5f6060820190506156ae5f8301866135f0565b6156bb60208301856135f0565b6156c86040830184613c74565b949350505050565b5f6156da82613235565b91506156e583613235565b92508282019050808211156156fd576156fc6146b3565b5b92915050565b7f746f55696e7431365f6f75744f66426f756e64730000000000000000000000005f82015250565b5f615737601483614889565b915061574282615703565b602082019050919050565b5f6020820190508181035f8301526157648161572b565b9050919050565b5f8160801b9050919050565b5f6157818261576b565b9050919050565b615799615794826131f0565b615777565b82525050565b5f6157aa8285615788565b6010820191506157ba8284615788565b6010820191508190509392505050565b5f6157d58284615788565b60108201915081905092915050565b5f6157ee82613781565b91506157f983613781565b9250828201905061ffff811115615813576158126146b3565b5b92915050565b5f8160f81b9050919050565b5f61582f82615819565b9050919050565b61584761584282613c40565b615825565b82525050565b5f61585882886143f3565b91506158648287615836565b6001820191506158748286615366565b6002820191506158848285615836565b60018201915061589482846143f3565b91508190509695505050505050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20315f8201527f3620626974730000000000000000000000000000000000000000000000000000602082015250565b5f6158fd602683614889565b9150615908826158a3565b604082019050919050565b5f6020820190508181035f83015261592a816158f1565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f61598b602683614889565b915061599682615931565b604082019050919050565b5f6020820190508181035f8301526159b88161597f565b9050919050565b5f6159ca82846143f3565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f615a09601d83614889565b9150615a14826159d5565b602082019050919050565b5f6020820190508181035f830152615a36816159fd565b9050919050565b5f615a4782613431565b615a518185614889565b9350615a6181856020860161344b565b615a6a81613473565b840191505092915050565b5f6020820190508181035f830152615a8d8184615a3d565b90509291505056fea2646970667358221220fe2c9342a4053ada8a880e90e96af3c909addcbb22651217579e45c5dcbebdaa64736f6c63430008150033000000000000000000000000a61f74247455a40b01b0559ff6274441fafa22a30000000000000000000000001a44076050125825900e736c501f859c50fe728c0000000000000000000000000cdb34e6a4d635142bb92fe403d38f636bbb77b8