0 txs
0 calls
constructor
constructor(address _history, uint256 _nextStreamId, address forwarder)
functions
acceptToken
viewfunction acceptToken(address) view returns (bool)
balanceOf
viewfunction balanceOf(uint256 streamId, address who) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeCharge
viewfunction feeCharge(uint256 deposit) view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
numberOfFeeWithdraws
viewfunction numberOfFeeWithdraws() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
usdcTokenAddress
viewfunction usdcTokenAddress() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withdraws
viewfunction withdraws(uint256) view returns (uint256 amount, uint256 time, address who)
addTokenForStream
nonpayablefunction addTokenForStream(address _token)
cancelStream
nonpayablefunction cancelStream(uint256 streamId) returns (bool)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
pause
nonpayablefunction pause()
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFeeForHolders
nonpayablefunction withdrawFeeForHolders(uint256 amount, address reciver) returns (bool)
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
withdrawFee
event withdrawFee(uint256 amount, address indexed reciver)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b5060405162005427380380620054278339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b1480620009136000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806377b53ece116101045780638cd3f064116100a2578063affca93211610071578063affca9321461054a578063b160f9cc14610566578063ce1b815f14610584578063f2fde38b146105a2576101d9565b80638cd3f064146104c05780638da5cb5b146104f0578063978bbdb91461050e57806398daac831461052c576101d9565b80638456cb59116100de5780638456cb591461044e57806386d067ff14610458578063873ed48c14610474578063894e9a0d14610490576101d9565b806377b53ece146103d05780637a9b2c6c146103ee5780637c5b36481461041e576101d9565b8063486ff0cd1161017c5780635fa7b5841161014b5780635fa7b5841461035c5780636db9241b14610378578063715018a6146103a857806376cdb03b146103b2576101d9565b8063486ff0cd146102be57806355466c37146102dc578063572b6c051461030e5780635c975abb1461033e576101d9565b80631e99d569116101b85780631e99d5691461024857806328f7c3bf146102665780633656eec2146102845780633f4ba83a146102b4576101d9565b8062b98a43146101de5780630322bdef146101fc578063090d23b91461022c575b600080fd5b6101e66105be565b6040516101f39190612f8b565b60405180910390f35b6102166004803603810190610211919061302e565b6105e4565b6040516102239190613089565b60405180910390f35b610246600480360381019061024191906130a4565b610816565b005b610250610862565b60405161025d91906130e0565b60405180910390f35b61026e610868565b60405161027b91906130e0565b60405180910390f35b61029e6004803603810190610299919061302e565b61086e565b6040516102ab91906130e0565b60405180910390f35b6102bc610b18565b005b6102c6610bc2565b6040516102d3919061318b565b60405180910390f35b6102f660048036038101906102f191906131ad565b610c50565b604051610305939291906131e9565b60405180910390f35b610328600480360381019061032391906130a4565b610c9a565b6040516103359190613089565b60405180910390f35b610346610cf3565b6040516103539190613089565b60405180910390f35b610376600480360381019061037191906130a4565b610d0a565b005b610392600480360381019061038d91906131ad565b610dc3565b60405161039f9190613089565b60405180910390f35b6103b0610f9f565b005b6103ba610fb3565b6040516103c79190613220565b60405180910390f35b6103d8610fd9565b6040516103e59190613220565b60405180910390f35b6104086004803603810190610403919061323b565b610fff565b6040516104159190613089565b60405180910390f35b610438600480360381019061043391906131ad565b61146a565b60405161044591906130e0565b60405180910390f35b61045661148e565b005b610472600480360381019061046d91906133f4565b611538565b005b61048e600480360381019061048991906130a4565b611efa565b005b6104aa60048036038101906104a591906131ad565b611ff3565b6040516104b791906134d9565b60405180910390f35b6104da60048036038101906104d591906130a4565b612059565b6040516104e79190613089565b60405180910390f35b6104f8612079565b6040516105059190613220565b60405180910390f35b6105166120a3565b60405161052391906130e0565b60405180910390f35b6105346120a9565b6040516105419190613515565b60405180910390f35b610564600480360381019061055f91906131ad565b6120cf565b005b61056e612128565b60405161057b91906130e0565b60405180910390f35b61058c61212e565b6040516105999190613220565b60405180910390f35b6105bc60048036038101906105b791906130a4565b612157565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006105ee6121da565b6002548311156105fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361063657600080fd5b6000831161064357600080fd5b600c600081546106529061355f565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461070b91906135a7565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff16846040516107379061360c565b60006040518083038185875af1925050503d8060008114610774576040519150601f19603f3d011682016040523d82523d6000602084013e610779565b606091505b50509050806107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b49061366d565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b805478560405161080391906130e0565b60405180910390a2600191505092915050565b61081e6121da565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb906136d9565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b815260040161093191906130e0565b600060405180830381865afa15801561094e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109779190613990565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506109dc612ea7565b60006109e788612258565b905082604001518360000151826109fe91906139d9565b610a089190613a1b565b826000018181525050826020015184600001511115610a5c5782602001518460000151610a3591906135a7565b82602001818152505081602001518260000151610a5291906135a7565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610aa4578160000151955050505050610b11565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b085781600001518360200151610aef91906135a7565b8260400181815250508160400151955050505050610b11565b60009550505050505b5092915050565b610b206121da565b610b28610cf3565b610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90613a9b565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610bab6123e2565b604051610bb89190613220565b60405180910390a1565b60048054610bcf90613aea565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfb90613aea565b8015610c485780601f10610c1d57610100808354040283529160200191610c48565b820191906000526020600020905b815481529060010190602001808311610c2b57829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610d126121da565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d6857600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906136d9565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610e8791906130e0565b600060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ecd9190613990565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610ef26123e2565b73ffffffffffffffffffffffffffffffffffffffff161480610f4b575080610100015173ffffffffffffffffffffffffffffffffffffffff16610f336123e2565b73ffffffffffffffffffffffffffffffffffffffff16145b610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190613b8d565b60405180910390fd5b610f9385612419565b60019350505050919050565b610fa76121da565b610fb16000612857565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906136d9565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016110c391906130e0565b600060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906111099190613990565b905080610100015173ffffffffffffffffffffffffffffffffffffffff1661112f6123e2565b73ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90613bf9565b60405180910390fd5b600085036111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613c65565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b815260040161122591906130e0565b600060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061126b9190613990565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b81526004016112ca91906130e0565b602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613c85565b905042826020015167ffffffffffffffff16111561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613cfe565b60405180910390fd5b600061136f8984610100015161086e565b9050878110156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613d90565b60405180910390fd5b600083610100015190506113ca8a8a838661291d565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611427929190613db0565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b548361147d91906139d9565b6114879190613e08565b9050919050565b6114966121da565b61149e610cf3565b156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613e85565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115216123e2565b60405161152e9190613220565b60405180910390a1565b611540610cf3565b15611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613e85565b60405180910390fd5b600061158f846020013561146a565b9050662386f26fc10000846020013510156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690613ef1565b60405180910390fd5b80600254016002819055506115f26123e2565b73ffffffffffffffffffffffffffffffffffffffff1684606001602081019061161b91906130a4565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613f5d565b60405180910390fd5b6009600085600001602081019061168891906130a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690613fc9565b60405180910390fd5b60048460e00160208101906117249190613ffe565b60ff1610611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e90614077565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061179291906130a4565b73ffffffffffffffffffffffffffffffffffffffff16036117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df906140e3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061181291906130a4565b73ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f9061414f565b60405180910390fd5b6118706123e2565b73ffffffffffffffffffffffffffffffffffffffff1684604001602081019061189991906130a4565b73ffffffffffffffffffffffffffffffffffffffff16036118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e6906141bb565b60405180910390fd5b6000846020013503611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90614227565b60405180910390fd5b428460800160006003811061194e5761194d614247565b5b602002016020810190611961919061428b565b67ffffffffffffffff1610156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390614304565b60405180910390fd5b836080016000600381106119c3576119c2614247565b5b6020020160208101906119d6919061428b565b67ffffffffffffffff16846080016001600381106119f7576119f6614247565b5b602002016020810190611a0a919061428b565b67ffffffffffffffff1611611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614370565b60405180910390fd5b600084608001600260038110611a6d57611a6c614247565b5b602002016020810190611a80919061428b565b67ffffffffffffffff161480611afc575083608001600060038110611aa857611aa7614247565b5b602002016020810190611abb919061428b565b67ffffffffffffffff1684608001600260038110611adc57611adb614247565b5b602002016020810190611aef919061428b565b67ffffffffffffffff1611155b611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906143dc565b60405180910390fd5b6000846000016020810190611b5091906130a4565b9050846000016020810190611b6591906130a4565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611cdb57846000016020810190611bcc91906130a4565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611c526123e2565b308860200135600f42611c659190613a1b565b896000016020810190611c789190613ffe565b8a602001358b604001356040518863ffffffff1660e01b8152600401611ca49796959493929190614424565b600060405180830381600087803b158015611cbe57600080fd5b505af1158015611cd2573d6000803e3d6000fd5b50505050611ce0565b600080fd5b611d11333087602001358473ffffffffffffffffffffffffffffffffffffffff16612ac2909392919063ffffffff16565b611d3e3330848473ffffffffffffffffffffffffffffffffffffffff16612ac2909392919063ffffffff16565b611d46612ec8565b85608001600060038110611d5d57611d5c614247565b5b602002016020810190611d70919061428b565b86608001600160038110611d8757611d86614247565b5b602002016020810190611d9a919061428b565b0367ffffffffffffffff16816000018181525050806000015186602001351015611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df0906144df565b60405180910390fd5b60008082600001518860200135611e1091906144ff565b03611e1e5760009050611e35565b81600001518760200135611e3291906144ff565b90505b81600001518760200135611e499190613e08565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600160035401600381905550611ef0818988612b44565b5050505050505050565b611f026121da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f3b57600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611f9857600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ffb612ee2565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120d76121da565b6107d0600b54111561211e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121159061457c565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61215f6121da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c59061460e565b60405180910390fd5b6121d781612857565b50565b6121e26123e2565b73ffffffffffffffffffffffffffffffffffffffff16612200612079565b73ffffffffffffffffffffffffffffffffffffffff1614612256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224d9061467a565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff166122be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b5906136d9565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161231b91906130e0565b600060405180830381865afa158015612338573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906123619190613990565b9050806020015167ffffffffffffffff1642116123825760009250506123dc565b806040015167ffffffffffffffff164210156123ba57806020015167ffffffffffffffff16426123b291906135a7565b9250506123dc565b806020015181604001516123ce919061469a565b67ffffffffffffffff169250505b50919050565b600060146000369050101580156123fe57506123fd33610c9a565b5b1561241257601436033560601c9050612416565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161247691906130e0565b600060405180830381865afa158015612493573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124bc9190613990565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161251b91906130e0565b602060405180830381865afa158015612538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255c9190613c85565b905042826060015167ffffffffffffffff1611156125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690614722565b60405180910390fd5b42826040015167ffffffffffffffff161015612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f79061478e565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff166126236123e2565b73ffffffffffffffffffffffffffffffffffffffff1614801561264f5750600182610140015160ff1614155b80156126645750600382610140015160ff1614155b1561266e57600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff166126926123e2565b73ffffffffffffffffffffffffffffffffffffffff161480156126be5750600282610140015160ff1614155b80156126d35750600382610140015160ff1614155b156126dd57600080fd5b6000819050600081905060006126f7868660c0015161086e565b9050600061270a8787610100015161086e565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b8152600401612769929190613db0565b600060405180830381600087803b15801561278357600080fd5b505af1158015612797573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461281657612815866101000151828573ffffffffffffffffffffffffffffffffffffffff16612bda9092919063ffffffff16565b5b6000821461284e5761284d8660c00151838573ffffffffffffffffffffffffffffffffffffffff16612bda9092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600060076000878152602001908152602001600020600201549050848183602001516129a49190613a1b565b6129ae91906135a7565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612a455760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612a87856611c37937e0800088612a6191906135a7565b8373ffffffffffffffffffffffffffffffffffffffff16612bda9092919063ffffffff16565b612ab9306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612bda9092919063ffffffff16565b50505050505050565b612b3e848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612af7939291906147ae565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c59565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612ba3939291906149c9565b600060405180830381600087803b158015612bbd57600080fd5b505af1158015612bd1573d6000803e3d6000fd5b50505050505050565b612c54838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612c0d929190614a09565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c59565b505050565b6000612c84828473ffffffffffffffffffffffffffffffffffffffff16612cf090919063ffffffff16565b90506000815114158015612ca9575080806020019051810190612ca79190614a5e565b155b15612ceb57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612ce29190613220565b60405180910390fd5b505050565b6060612cfe83836000612d06565b905092915050565b606081471015612d4d57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612d449190613220565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612d769190614ac7565b60006040518083038185875af1925050503d8060008114612db3576040519150601f19603f3d011682016040523d82523d6000602084013e612db8565b606091505b5091509150612dc8868383612dd3565b925050509392505050565b606082612de857612de382612e62565b612e5a565b60008251148015612e10575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612e5257836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e499190613220565b60405180910390fd5b819050612e5b565b5b9392505050565b600081511115612e755780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f51612f4c612f4784612f0c565b612f2c565b612f0c565b9050919050565b6000612f6382612f36565b9050919050565b6000612f7582612f58565b9050919050565b612f8581612f6a565b82525050565b6000602082019050612fa06000830184612f7c565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612fcd81612fba565b8114612fd857600080fd5b50565b600081359050612fea81612fc4565b92915050565b6000612ffb82612f0c565b9050919050565b61300b81612ff0565b811461301657600080fd5b50565b60008135905061302881613002565b92915050565b6000806040838503121561304557613044612fb0565b5b600061305385828601612fdb565b925050602061306485828601613019565b9150509250929050565b60008115159050919050565b6130838161306e565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000602082840312156130ba576130b9612fb0565b5b60006130c884828501613019565b91505092915050565b6130da81612fba565b82525050565b60006020820190506130f560008301846130d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561313557808201518184015260208101905061311a565b60008484015250505050565b6000601f19601f8301169050919050565b600061315d826130fb565b6131678185613106565b9350613177818560208601613117565b61318081613141565b840191505092915050565b600060208201905081810360008301526131a58184613152565b905092915050565b6000602082840312156131c3576131c2612fb0565b5b60006131d184828501612fdb565b91505092915050565b6131e381612ff0565b82525050565b60006060820190506131fe60008301866130d1565b61320b60208301856130d1565b61321860408301846131da565b949350505050565b600060208201905061323560008301846131da565b92915050565b6000806040838503121561325257613251612fb0565b5b600061326085828601612fdb565b925050602061327185828601612fdb565b9150509250929050565b600080fd5b600061010082840312156132975761329661327b565b5b81905092915050565b6000606082840312156132b6576132b561327b565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61330182613141565b810181811067ffffffffffffffff821117156133205761331f6132c9565b5b80604052505050565b6000613333612fa6565b905061333f82826132f8565b919050565b600067ffffffffffffffff82111561335f5761335e6132c9565b5b61336882613141565b9050602081019050919050565b82818337600083830152505050565b600061339761339284613344565b613329565b9050828152602081018484840111156133b3576133b26132c4565b5b6133be848285613375565b509392505050565b600082601f8301126133db576133da6132bf565b5b81356133eb848260208601613384565b91505092915050565b6000806000610180848603121561340e5761340d612fb0565b5b600061341c86828701613280565b93505061010061342e868287016132a0565b92505061016084013567ffffffffffffffff8111156134505761344f612fb5565b5b61345c868287016133c6565b9150509250925092565b61346f81612fba565b82525050565b61347e8161306e565b82525050565b60808201600082015161349a6000850182613466565b5060208201516134ad6020850182613466565b5060408201516134c06040850182613466565b5060608201516134d36060850182613475565b50505050565b60006080820190506134ee6000830184613484565b92915050565b60006134ff82612f58565b9050919050565b61350f816134f4565b82525050565b600060208201905061352a6000830184613506565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061356a82612fba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361359c5761359b613530565b5b600182019050919050565b60006135b282612fba565b91506135bd83612fba565b92508282039050818111156135d5576135d4613530565b5b92915050565b600081905092915050565b50565b60006135f66000836135db565b9150613601826135e6565b600082019050919050565b6000613617826135e9565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613657601483613106565b915061366282613621565b602082019050919050565b600060208201905081810360008301526136868161364a565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006136c3601583613106565b91506136ce8261368d565b602082019050919050565b600060208201905081810360008301526136f2816136b6565b9050919050565b600080fd5b600080fd5b60008151905061371281612fc4565b92915050565b600067ffffffffffffffff82169050919050565b61373581613718565b811461374057600080fd5b50565b6000815190506137528161372c565b92915050565b60008151905061376781613002565b92915050565b600063ffffffff82169050919050565b6137868161376d565b811461379157600080fd5b50565b6000815190506137a38161377d565b92915050565b600060ff82169050919050565b6137bf816137a9565b81146137ca57600080fd5b50565b6000815190506137dc816137b6565b92915050565b60006137f56137f084613344565b613329565b905082815260208101848484011115613811576138106132c4565b5b61381c848285613117565b509392505050565b600082601f830112613839576138386132bf565b5b81516138498482602086016137e2565b91505092915050565b60006101808284031215613869576138686136f9565b5b613874610180613329565b9050600061388484828501613703565b600083015250602061389884828501613743565b60208301525060406138ac84828501613743565b60408301525060606138c084828501613743565b60608301525060806138d484828501613743565b60808301525060a06138e884828501613703565b60a08301525060c06138fc84828501613758565b60c08301525060e061391084828501613794565b60e08301525061010061392584828501613758565b6101008301525061012061393b848285016137cd565b61012083015250610140613951848285016137cd565b6101408301525061016082015167ffffffffffffffff811115613977576139766136fe565b5b61398384828501613824565b6101608301525092915050565b6000602082840312156139a6576139a5612fb0565b5b600082015167ffffffffffffffff8111156139c4576139c3612fb5565b5b6139d084828501613852565b91505092915050565b60006139e482612fba565b91506139ef83612fba565b92508282026139fd81612fba565b91508282048414831517613a1457613a13613530565b5b5092915050565b6000613a2682612fba565b9150613a3183612fba565b9250828201905080821115613a4957613a48613530565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613a85601483613106565b9150613a9082613a4f565b602082019050919050565b60006020820190508181036000830152613ab481613a78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0257607f821691505b602082108103613b1557613b14613abb565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b77602283613106565b9150613b8282613b1b565b604082019050919050565b60006020820190508181036000830152613ba681613b6a565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613be3601b83613106565b9150613bee82613bad565b602082019050919050565b60006020820190508181036000830152613c1281613bd6565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c4f600e83613106565b9150613c5a82613c19565b602082019050919050565b60006020820190508181036000830152613c7e81613c42565b9050919050565b600060208284031215613c9b57613c9a612fb0565b5b6000613ca984828501613758565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613ce8601283613106565b9150613cf382613cb2565b602082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d7a602483613106565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b6000604082019050613dc560008301856130d1565b613dd260208301846130d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e1382612fba565b9150613e1e83612fba565b925082613e2e57613e2d613dd9565b5b828204905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e6f601083613106565b9150613e7a82613e39565b602082019050919050565b60006020820190508181036000830152613e9e81613e62565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613edb600d83613106565b9150613ee682613ea5565b602082019050919050565b60006020820190508181036000830152613f0a81613ece565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613f47600c83613106565b9150613f5282613f11565b602082019050919050565b60006020820190508181036000830152613f7681613f3a565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b6000613fb3600b83613106565b9150613fbe82613f7d565b602082019050919050565b60006020820190508181036000830152613fe281613fa6565b9050919050565b600081359050613ff8816137b6565b92915050565b60006020828403121561401457614013612fb0565b5b600061402284828501613fe9565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b6000614061600d83613106565b915061406c8261402b565b602082019050919050565b6000602082019050818103600083015261409081614054565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b60006140cd601a83613106565b91506140d882614097565b602082019050919050565b600060208201905081810360008301526140fc816140c0565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b6000614139601d83613106565b915061414482614103565b602082019050919050565b600060208201905081810360008301526141688161412c565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006141a5601483613106565b91506141b08261416f565b602082019050919050565b600060208201905081810360008301526141d481614198565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b6000614211600f83613106565b915061421c826141db565b602082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000813590506142858161372c565b92915050565b6000602082840312156142a1576142a0612fb0565b5b60006142af84828501614276565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006142ee602083613106565b91506142f9826142b8565b602082019050919050565b6000602082019050818103600083015261431d816142e1565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b600061435a601783613106565b915061436582614324565b602082019050919050565b600060208201905081810360008301526143898161434d565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b60006143c6601183613106565b91506143d182614390565b602082019050919050565b600060208201905081810360008301526143f5816143b9565b9050919050565b614405816137a9565b82525050565b6000819050919050565b61441e8161440b565b82525050565b600060e082019050614439600083018a6131da565b61444660208301896131da565b61445360408301886130d1565b61446060608301876130d1565b61446d60808301866143fc565b61447a60a0830185614415565b61448760c0830184614415565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b60006144c9601f83613106565b91506144d482614493565b602082019050919050565b600060208201905081810360008301526144f8816144bc565b9050919050565b600061450a82612fba565b915061451583612fba565b92508261452557614524613dd9565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614566601183613106565b915061457182614530565b602082019050919050565b6000602082019050818103600083015261459581614559565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145f8602683613106565b91506146038261459c565b604082019050919050565b60006020820190508181036000830152614627816145eb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614664602083613106565b915061466f8261462e565b602082019050919050565b6000602082019050818103600083015261469381614657565b9050919050565b60006146a582613718565b91506146b083613718565b9250828203905067ffffffffffffffff8111156146d0576146cf613530565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b600061470c600e83613106565b9150614717826146d6565b602082019050919050565b6000602082019050818103600083015261473b816146ff565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b6000614778600f83613106565b915061478382614742565b602082019050919050565b600060208201905081810360008301526147a78161476b565b9050919050565b60006060820190506147c360008301866131da565b6147d060208301856131da565b6147dd60408301846130d1565b949350505050565b60006147f46020840184613019565b905092915050565b61480581612ff0565b82525050565b600061481a6020840184612fdb565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b61485681613718565b82525050565b6000614868838361484d565b60208301905092915050565b60006148836020840184614276565b905092915050565b6000602082019050919050565b6148a18161482d565b6148ab8184614838565b92506148b682614843565b8060005b838110156148ef576148cc8284614874565b6148d6878261485c565b96506148e18361488b565b9250506001810190506148ba565b505050505050565b60006149066020840184613fe9565b905092915050565b614917816137a9565b82525050565b610100820161492f60008301836147e5565b61493c60008501826147fc565b5061494a602083018361480b565b6149576020850182613466565b5061496560408301836147e5565b61497260408501826147fc565b5061498060608301836147e5565b61498d60608501826147fc565b5061499b6080830183614822565b6149a86080850182614898565b506149b660e08301836148f7565b6149c360e085018261490e565b50505050565b6000610140820190506149df60008301866130d1565b6149ec602083018561491d565b8181036101208301526149ff8184613152565b9050949350505050565b6000604082019050614a1e60008301856131da565b614a2b60208301846130d1565b9392505050565b614a3b8161306e565b8114614a4657600080fd5b50565b600081519050614a5881614a32565b92915050565b600060208284031215614a7457614a73612fb0565b5b6000614a8284828501614a49565b91505092915050565b600081519050919050565b6000614aa182614a8b565b614aab81856135db565b9350614abb818560208601613117565b80840191505092915050565b6000614ad38284614a96565b91508190509291505056fea2646970667358221220492bb26d6613892315987fc0a042bacef661b1efad835ba98fba89b21437324164736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87