0 txs
0 calls
constructor
constructor(address _history, address _bank, uint256 _streamId)
functions
balanceOf
viewfunction balanceOf(uint256 streamId, address who, tuple stream) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
forwarder
viewfunction forwarder() view returns (address)
getMSg
viewfunction getMSg() view returns (address)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
getValue
purefunction getValue(uint256 _value) pure returns (uint256)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
minDeposit
viewfunction minDeposit() view returns (uint256)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
token
viewfunction token() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withDrawFee
viewfunction withDrawFee() view returns (uint256)
cancelStream
nonpayablefunction cancelStream(uint256 streamId)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
emergencyEtherWithdraw
nonpayablefunction emergencyEtherWithdraw(uint256 _amount, address _to)
emergencyTokenWithdraw
nonpayablefunction emergencyTokenWithdraw(address _token, uint256 _amount, address _to)
pause
nonpayablefunction pause()
setBank
nonpayablefunction setBank(address _newBank)
setForwarder
nonpayablefunction setForwarder(address _newForwarder)
setMinDeposit
nonpayablefunction setMinDeposit(uint256 _minDeposit)
setWithdrawFee
nonpayablefunction setWithdrawFee(uint256 _withDrawFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
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
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600590816200004a91906200069f565b50620186a060065560646007556103e8600855733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b2b5841dbef766d4b521221732f9b618fcf34a87600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011457600080fd5b50604051620053f8380380620053f883398181016040528101906200013a919062000821565b6200014a6200029160201b60201c565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f390620008de565b60405180910390fd5b82600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000270600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620002d360201b60201c565b62000281826200031660201b60201c565b8060038190555050505062000972565b60006014600036905010158015620002b65750620002b533620003cc60201b60201c565b5b15620002cc57601436033560601c9050620002d0565b3390505b90565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000388576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037f9062000950565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004a757607f821691505b602082108103620004bd57620004bc6200045f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004e8565b620005338683620004e8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005806200057a62000574846200054b565b62000555565b6200054b565b9050919050565b6000819050919050565b6200059c836200055f565b620005b4620005ab8262000587565b848454620004f5565b825550505050565b600090565b620005cb620005bc565b620005d881848462000591565b505050565b5b818110156200060057620005f4600082620005c1565b600181019050620005de565b5050565b601f8211156200064f576200061981620004c3565b6200062484620004d8565b8101602085101562000634578190505b6200064c6200064385620004d8565b830182620005dd565b50505b505050565b600082821c905092915050565b6000620006746000198460080262000654565b1980831691505092915050565b60006200068f838362000661565b9150826002028217905092915050565b620006aa8262000425565b67ffffffffffffffff811115620006c657620006c562000430565b5b620006d282546200048e565b620006df82828562000604565b600060209050601f83116001811462000717576000841562000702578287015190505b6200070e858262000681565b8655506200077e565b601f1984166200072786620004c3565b60005b8281101562000751578489015182556001820191506020850194506020810190506200072a565b868310156200077157848901516200076d601f89168262000661565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007b8826200078b565b9050919050565b620007ca81620007ab565b8114620007d657600080fd5b50565b600081519050620007ea81620007bf565b92915050565b620007fb816200054b565b81146200080757600080fd5b50565b6000815190506200081b81620007f0565b92915050565b6000806000606084860312156200083d576200083c62000786565b5b60006200084d86828701620007d9565b93505060206200086086828701620007d9565b925050604062000873868287016200080a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000620008c6600c836200087d565b9150620008d3826200088e565b602082019050919050565b60006020820190508181036000830152620008f981620008b7565b9050919050565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b6000620009386011836200087d565b9150620009458262000900565b602082019050919050565b600060208201905081810360008301526200096b8162000929565b9050919050565b614a7680620009826000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c80638da5cb5b1161010f578063b9998a24116100a2578063f645d4f911610071578063f645d4f914610548578063f95654a714610566578063fc0c546a14610584578063fe265e55146105a2576101ef565b8063b9998a24146104d4578063ce1b815f146104f0578063eea5bf4b1461050e578063f2fde38b1461052c576101ef565b8063affca932116100de578063affca93214610462578063b160f9cc1461047e578063b6ac642a1461049c578063b6c65c83146104b8576101ef565b80638da5cb5b146103ec5780638fcc9cfb1461040a578063978bbdb91461042657806398daac8314610444576101ef565b80635c975abb116101875780637a9b2c6c116101565780637a9b2c6c146103665780638456cb5914610396578063894e9a0d146103a05780638bc103e2146103d0576101ef565b80635c975abb146102f25780636441edf6146103105780636db9241b1461032c57806376cdb03b14610348576101ef565b80633f4ba83a116101c35780633f4ba83a1461027c57806341b3d18514610286578063486ff0cd146102a4578063572b6c05146102c2576101ef565b8062b98a43146101f4578063090d23b9146102125780630ff4c9161461022e5780631e99d5691461025e575b600080fd5b6101fc6105d2565b6040516102099190612d92565b60405180910390f35b61022c60048036038101906102279190612dff565b6105f8565b005b61024860048036038101906102439190612e62565b6106ab565b6040516102559190612e9e565b60405180910390f35b6102666106b5565b6040516102739190612e9e565b60405180910390f35b6102846106bb565b005b61028e6107b7565b60405161029b9190612e9e565b60405180910390f35b6102ac6107bd565b6040516102b99190612f49565b60405180910390f35b6102dc60048036038101906102d79190612dff565b61084b565b6040516102e99190612f86565b60405180910390f35b6102fa6108a4565b6040516103079190612f86565b60405180910390f35b61032a60048036038101906103259190612fa1565b6108bb565b005b61034660048036038101906103419190612e62565b6109c3565b005b610350610b97565b60405161035d9190613003565b60405180910390f35b610380600480360381019061037b919061301e565b610bbd565b60405161038d9190612f86565b60405180910390f35b61039e610fde565b005b6103ba60048036038101906103b59190612e62565b6110da565b6040516103c791906130d1565b60405180910390f35b6103ea60048036038101906103e5919061341f565b611140565b005b6103f46117cd565b6040516104019190613003565b60405180910390f35b610424600480360381019061041f9190612e62565b6117f3565b005b61042e611857565b60405161043b9190612e9e565b60405180910390f35b61044c61185d565b60405161045991906134b2565b60405180910390f35b61047c60048036038101906104779190612e62565b611883565b005b61048661192e565b6040516104939190612e9e565b60405180910390f35b6104b660048036038101906104b19190612e62565b611934565b005b6104d260048036038101906104cd91906134cd565b611998565b005b6104ee60048036038101906104e99190612dff565b611b21565b005b6104f8611c2e565b6040516105059190613003565b60405180910390f35b610516611c57565b6040516105239190612e9e565b60405180910390f35b61054660048036038101906105419190612dff565b611c5d565b005b610550611cd8565b60405161055d9190613003565b60405180910390f35b61056e611cfe565b60405161057b9190613003565b60405180910390f35b61058c611d0d565b604051610599919061352e565b60405180910390f35b6105bc60048036038101906105b791906135ed565b611d25565b6040516105c99190612e9e565b60405180910390f35b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065e9061368c565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071557600080fd5b61071d6108a4565b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610753906136f8565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6107a0611f64565b6040516107ad9190613003565b60405180910390a1565b60065481565b600580546107ca90613747565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690613747565b80156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b68015af1d78b58c40000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016109129190613003565b602060405180830381865afa15801561092f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610953919061378d565b11610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90613806565b60405180910390fd5b6109be81838573ffffffffffffffffffffffffffffffffffffffff16611f9b9092919063ffffffff16565b505050565b80600b600082815260200190815260200160002060030160009054906101000a900460ff16610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90613872565b60405180910390fd5b816000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610a859190612e9e565b600060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610acb9190613abb565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610af0611f64565b73ffffffffffffffffffffffffffffffffffffffff161480610b49575080610100015173ffffffffffffffffffffffffffffffffffffffff16610b31611f64565b73ffffffffffffffffffffffffffffffffffffffff16145b610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f90613b76565b60405180910390fd5b610b918461201a565b50505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600b600082815260200190815260200160002060030160009054906101000a900460ff16610c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1a90613872565b60405180910390fd5b836000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610c819190612e9e565b600060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cc79190613abb565b905080610100015173ffffffffffffffffffffffffffffffffffffffff16610ced611f64565b73ffffffffffffffffffffffffffffffffffffffff1614610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90613be2565b60405180910390fd5b6000600b60008881526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060008603610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd890613c4e565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75896040518263ffffffff1660e01b8152600401610e3e9190612e9e565b600060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e849190613abb565b905042816020015167ffffffffffffffff161115610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90613cba565b60405180910390fd5b6000610ee98983610100015185611d25565b905087811015610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613d4c565b60405180910390fd5b610f3f898984610100015186612431565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878a8a6040518363ffffffff1660e01b8152600401610f9c929190613d6c565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b505050506001965050505050505092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103857600080fd5b6110406108a4565b15611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613de1565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c3611f64565b6040516110d09190613003565b60405180910390a1565b6110e2612cae565b600b60008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b6111486108a4565b15611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117f90613de1565b60405180910390fd5b611195836040015161256e565b61119d611f64565b73ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff161461120e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120590613e4d565b60405180910390fd5b60065483602001511015611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90613eb9565b60405180910390fd5b600061126684602001516125c1565b9050611271836125e5565b8060025461127f9190613f08565b60028190555060048460a0015160ff16106112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c690613f88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff1603611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133990613ff4565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff16036113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90614060565b60405180910390fd5b6113bc611f64565b73ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611424906140cc565b60405180910390fd5b6000846020015103611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90614138565b60405180910390fd5b6000846080015160006003811061148e5761148d614158565b5b602002015167ffffffffffffffff16036114df574284608001516000600381106114bb576114ba614158565b5b602002019067ffffffffffffffff16908167ffffffffffffffff1681525050611553565b4267ffffffffffffffff16846080015160006003811061150257611501614158565b5b602002015167ffffffffffffffff161015611552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611549906141d3565b60405180910390fd5b5b836080015160006003811061156b5761156a614158565b5b602002015167ffffffffffffffff16846080015160016003811061159257611591614158565b5b602002015167ffffffffffffffff16116115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d89061423f565b60405180910390fd5b61162d6115ec611f64565b308660200151733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff166126aa909392919063ffffffff16565b611697611638611f64565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff166126aa909392919063ffffffff16565b61169f612cd8565b84608001516000600381106116b7576116b6614158565b5b602002015185608001516001600381106116d4576116d3614158565b5b60200201510367ffffffffffffffff16816000018181525050600081600001518660200151611703919061428e565b90508160000151866020015161171991906142bf565b826020018181525050600060035490506040518060800160405280846020015181526020018860200151815260200183815260200160011515815250600b600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600360008154600101919050819055506117c481888761272c565b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184d57600080fd5b8060068190555050565b60075481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118dd57600080fd5b6107d06007541115611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b9061433c565b60405180910390fd5b8060078190555050565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461198e57600080fd5b8060088190555050565b68015af1d78b58c40000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016119ef9190613003565b602060405180830381865afa158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a30919061378d565b11611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613806565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1683604051611a969061438d565b60006040518083038185875af1925050503d8060008114611ad3576040519150601f19603f3d011682016040523d82523d6000602084013e611ad8565b606091505b5050905080611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b13906143ee565b60405180910390fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be19061445a565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc3906144ec565b60405180910390fd5b611cd5816127c2565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611d08611f64565b905090565b733c499c542cef5e3811e1192ce70d8cc03d5c335981565b600083600b600082815260200190815260200160002060030160009054906101000a900460ff16611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8290613872565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75876040518263ffffffff1660e01b8152600401611de89190612e9e565b600060405180830381865afa158015611e05573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e2e9190613abb565b9050611e38612cf2565b6000611e43886128d6565b90508560400151866000015182611e5a919061450c565b611e649190613f08565b826000018181525050856020015183600001511115611eaa57856020015183600001518360000151611e96919061454e565b611ea09190613f08565b8260000181815250505b82610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611ef15781600001519450505050611f5c565b8260c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611f545781600001518660200151611f3c919061454e565b82604001818152505081604001519450505050611f5c565b600094505050505b509392505050565b60006014600036905010158015611f805750611f7f3361084b565b5b15611f9457601436033560601c9050611f98565b3390505b90565b612015838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611fce929190614582565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a60565b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016120779190612e9e565b600060405180830381865afa158015612094573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120bd9190613abb565b905042816060015167ffffffffffffffff161115612110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612107906145f7565b60405180910390fd5b42816040015167ffffffffffffffff161015612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890614663565b60405180910390fd5b8060c0015173ffffffffffffffffffffffffffffffffffffffff16612184611f64565b73ffffffffffffffffffffffffffffffffffffffff161480156121b05750600181610140015160ff1614155b80156121c55750600381610140015160ff1614155b156121cf57600080fd5b80610100015173ffffffffffffffffffffffffffffffffffffffff166121f3611f64565b73ffffffffffffffffffffffffffffffffffffffff1614801561221f5750600281610140015160ff1614155b80156122345750600381610140015160ff1614155b1561223e57600080fd5b6000600b60008481526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060006122aa848460c0015184611d25565b905060006122be8585610100015185611d25565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f86836040518363ffffffff1660e01b815260040161231d929190613d6c565b600060405180830381600087803b15801561233757600080fd5b505af115801561234b573d6000803e3d6000fd5b50505050600b6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff02191690555050600081146123de576123dd84610100015182733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611f9b9092919063ffffffff16565b5b6000821461242a576124298460c0015183733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611f9b9092919063ffffffff16565b5b5050505050565b6000816040015190508381836020015161244b9190613f08565b612455919061454e565b826020018181525050600082604001818152505060008260200151036124b857600b6000868152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b61250483600854866124ca919061454e565b733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611f9b9092919063ffffffff16565b612567600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854733c499c542cef5e3811e1192ce70d8cc03d5c335973ffffffffffffffffffffffffffffffffffffffff16611f9b9092919063ffffffff16565b5050505050565b6000813b905060008163ffffffff16146125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b4906146cf565b60405180910390fd5b5050565b6000612710600754836125d4919061450c565b6125de91906142bf565b9050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf61262b611f64565b308460800135856060013586600001602081019061264991906146ef565b876020013588604001356040518863ffffffff1660e01b81526004016126759796959493929190614744565b600060405180830381600087803b15801561268f57600080fd5b505af11580156126a3573d6000803e3d6000fd5b5050505050565b612726848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016126df939291906147b3565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a60565b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b815260040161278b9392919061492f565b600060405180830381600087803b1580156127a557600080fd5b505af11580156127b9573d6000803e3d6000fd5b50505050505050565b6000732a9dd7d856b18abe62b030d56f8b130c349a6dea73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016128119190613003565b602060405180830381865afa15801561282e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612852919061378d565b03612892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288990613806565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081600b600082815260200190815260200160002060030160009054906101000a900460ff1661293c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293390613872565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b81526004016129999190612e9e565b600060405180830381865afa1580156129b6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906129df9190613abb565b9050806020015167ffffffffffffffff164211612a00576000925050612a5a565b806040015167ffffffffffffffff16421015612a3857806020015167ffffffffffffffff1642612a30919061454e565b925050612a5a565b80602001518160400151612a4c919061496f565b67ffffffffffffffff169250505b50919050565b6000612a8b828473ffffffffffffffffffffffffffffffffffffffff16612af790919063ffffffff16565b90506000815114158015612ab0575080806020019051810190612aae91906149c0565b155b15612af257826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612ae99190613003565b60405180910390fd5b505050565b6060612b0583836000612b0d565b905092915050565b606081471015612b5457306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612b4b9190613003565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612b7d9190614a29565b60006040518083038185875af1925050503d8060008114612bba576040519150601f19603f3d011682016040523d82523d6000602084013e612bbf565b606091505b5091509150612bcf868383612bda565b925050509392505050565b606082612bef57612bea82612c69565b612c61565b60008251148015612c17575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612c5957836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612c509190613003565b60405180910390fd5b819050612c62565b5b9392505050565b600081511115612c7c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d58612d53612d4e84612d13565b612d33565b612d13565b9050919050565b6000612d6a82612d3d565b9050919050565b6000612d7c82612d5f565b9050919050565b612d8c81612d71565b82525050565b6000602082019050612da76000830184612d83565b92915050565b6000604051905090565b600080fd5b600080fd5b6000612dcc82612d13565b9050919050565b612ddc81612dc1565b8114612de757600080fd5b50565b600081359050612df981612dd3565b92915050565b600060208284031215612e1557612e14612db7565b5b6000612e2384828501612dea565b91505092915050565b6000819050919050565b612e3f81612e2c565b8114612e4a57600080fd5b50565b600081359050612e5c81612e36565b92915050565b600060208284031215612e7857612e77612db7565b5b6000612e8684828501612e4d565b91505092915050565b612e9881612e2c565b82525050565b6000602082019050612eb36000830184612e8f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ef3578082015181840152602081019050612ed8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f1b82612eb9565b612f258185612ec4565b9350612f35818560208601612ed5565b612f3e81612eff565b840191505092915050565b60006020820190508181036000830152612f638184612f10565b905092915050565b60008115159050919050565b612f8081612f6b565b82525050565b6000602082019050612f9b6000830184612f77565b92915050565b600080600060608486031215612fba57612fb9612db7565b5b6000612fc886828701612dea565b9350506020612fd986828701612e4d565b9250506040612fea86828701612dea565b9150509250925092565b612ffd81612dc1565b82525050565b60006020820190506130186000830184612ff4565b92915050565b6000806040838503121561303557613034612db7565b5b600061304385828601612e4d565b925050602061305485828601612e4d565b9150509250929050565b61306781612e2c565b82525050565b61307681612f6b565b82525050565b608082016000820151613092600085018261305e565b5060208201516130a5602085018261305e565b5060408201516130b8604085018261305e565b5060608201516130cb606085018261306d565b50505050565b60006080820190506130e6600083018461307c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61312982612eff565b810181811067ffffffffffffffff82111715613148576131476130f1565b5b80604052505050565b600061315b612dad565b90506131678282613120565b919050565b600080fd5b600080fd5b600067ffffffffffffffff821115613191576131906130f1565b5b602082029050919050565b600080fd5b600067ffffffffffffffff82169050919050565b6131be816131a1565b81146131c957600080fd5b50565b6000813590506131db816131b5565b92915050565b60006131f46131ef84613176565b613151565b9050806020840283018581111561320e5761320d61319c565b5b835b81811015613237578061322388826131cc565b845260208401935050602081019050613210565b5050509392505050565b600082601f83011261325657613255613171565b5b60036132638482856131e1565b91505092915050565b600060ff82169050919050565b6132828161326c565b811461328d57600080fd5b50565b60008135905061329f81613279565b92915050565b600061010082840312156132bc576132bb6130ec565b5b6132c660c0613151565b905060006132d684828501612dea565b60008301525060206132ea84828501612e4d565b60208301525060406132fe84828501612dea565b604083015250606061331284828501612dea565b606083015250608061332684828501613241565b60808301525060e061333a84828501613290565b60a08301525092915050565b600080fd5b600060a0828403121561336157613360613346565b5b81905092915050565b600080fd5b600067ffffffffffffffff82111561338a576133896130f1565b5b61339382612eff565b9050602081019050919050565b82818337600083830152505050565b60006133c26133bd8461336f565b613151565b9050828152602081018484840111156133de576133dd61336a565b5b6133e98482856133a0565b509392505050565b600082601f83011261340657613405613171565b5b81356134168482602086016133af565b91505092915050565b60008060006101c0848603121561343957613438612db7565b5b6000613447868287016132a5565b9350506101006134598682870161334b565b9250506101a084013567ffffffffffffffff81111561347b5761347a612dbc565b5b613487868287016133f1565b9150509250925092565b600061349c82612d5f565b9050919050565b6134ac81613491565b82525050565b60006020820190506134c760008301846134a3565b92915050565b600080604083850312156134e4576134e3612db7565b5b60006134f285828601612e4d565b925050602061350385828601612dea565b9150509250929050565b600061351882612d5f565b9050919050565b6135288161350d565b82525050565b6000602082019050613543600083018461351f565b92915050565b61355281612f6b565b811461355d57600080fd5b50565b60008135905061356f81613549565b92915050565b60006080828403121561358b5761358a6130ec565b5b6135956080613151565b905060006135a584828501612e4d565b60008301525060206135b984828501612e4d565b60208301525060406135cd84828501612e4d565b60408301525060606135e184828501613560565b60608301525092915050565b600080600060c0848603121561360657613605612db7565b5b600061361486828701612e4d565b935050602061362586828701612dea565b925050604061363686828701613575565b9150509250925092565b7f62616e6b207a65726f2061646472657373000000000000000000000000000000600082015250565b6000613676601183612ec4565b915061368182613640565b602082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006136e2601483612ec4565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061375f57607f821691505b60208210810361377257613771613718565b5b50919050565b60008151905061378781612e36565b92915050565b6000602082840312156137a3576137a2612db7565b5b60006137b184828501613778565b91505092915050565b7f6f6e6c79204374726c5800000000000000000000000000000000000000000000600082015250565b60006137f0600a83612ec4565b91506137fb826137ba565b602082019050919050565b6000602082019050818103600083015261381f816137e3565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b600061385c601583612ec4565b915061386782613826565b602082019050919050565b6000602082019050818103600083015261388b8161384f565b9050919050565b6000815190506138a1816131b5565b92915050565b6000815190506138b681612dd3565b92915050565b600063ffffffff82169050919050565b6138d5816138bc565b81146138e057600080fd5b50565b6000815190506138f2816138cc565b92915050565b60008151905061390781613279565b92915050565b600061392061391b8461336f565b613151565b90508281526020810184848401111561393c5761393b61336a565b5b613947848285612ed5565b509392505050565b600082601f83011261396457613963613171565b5b815161397484826020860161390d565b91505092915050565b60006101808284031215613994576139936130ec565b5b61399f610180613151565b905060006139af84828501613778565b60008301525060206139c384828501613892565b60208301525060406139d784828501613892565b60408301525060606139eb84828501613892565b60608301525060806139ff84828501613892565b60808301525060a0613a1384828501613778565b60a08301525060c0613a27848285016138a7565b60c08301525060e0613a3b848285016138e3565b60e083015250610100613a50848285016138a7565b61010083015250610120613a66848285016138f8565b61012083015250610140613a7c848285016138f8565b6101408301525061016082015167ffffffffffffffff811115613aa257613aa161316c565b5b613aae8482850161394f565b6101608301525092915050565b600060208284031215613ad157613ad0612db7565b5b600082015167ffffffffffffffff811115613aef57613aee612dbc565b5b613afb8482850161397d565b91505092915050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b60602283612ec4565b9150613b6b82613b04565b604082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613bcc601b83612ec4565b9150613bd782613b96565b602082019050919050565b60006020820190508181036000830152613bfb81613bbf565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c38600e83612ec4565b9150613c4382613c02565b602082019050919050565b60006020820190508181036000830152613c6781613c2b565b9050919050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613ca4601283612ec4565b9150613caf82613c6e565b602082019050919050565b60006020820190508181036000830152613cd381613c97565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d36602483612ec4565b9150613d4182613cda565b604082019050919050565b60006020820190508181036000830152613d6581613d29565b9050919050565b6000604082019050613d816000830185612e8f565b613d8e6020830184612e8f565b9392505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613dcb601083612ec4565b9150613dd682613d95565b602082019050919050565b60006020820190508181036000830152613dfa81613dbe565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613e37600c83612ec4565b9150613e4282613e01565b602082019050919050565b60006020820190508181036000830152613e6681613e2a565b9050919050565b7f546f206c6974746c65206465706f736974000000000000000000000000000000600082015250565b6000613ea3601183612ec4565b9150613eae82613e6d565b602082019050919050565b60006020820190508181036000830152613ed281613e96565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f1382612e2c565b9150613f1e83612e2c565b9250828201905080821115613f3657613f35613ed9565b5b92915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b6000613f72600d83612ec4565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f53747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b6000613fde601a83612ec4565b9150613fe982613fa8565b602082019050919050565b6000602082019050818103600083015261400d81613fd1565b9050919050565b7f53747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b600061404a601d83612ec4565b915061405582614014565b602082019050919050565b600060208201905081810360008301526140798161403d565b9050919050565b7f53747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006140b6601483612ec4565b91506140c182614080565b602082019050919050565b600060208201905081810360008301526140e5816140a9565b9050919050565b7f4465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b6000614122600f83612ec4565b915061412d826140ec565b602082019050919050565b6000602082019050818103600083015261415181614115565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006141bd602083612ec4565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b6000614229601783612ec4565b9150614234826141f3565b602082019050919050565b600060208201905081810360008301526142588161421c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061429982612e2c565b91506142a483612e2c565b9250826142b4576142b361425f565b5b828206905092915050565b60006142ca82612e2c565b91506142d583612e2c565b9250826142e5576142e461425f565b5b828204905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b6000614326601183612ec4565b9150614331826142f0565b602082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b600081905092915050565b50565b600061437760008361435c565b915061438282614367565b600082019050919050565b60006143988261436a565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006143d8601483612ec4565b91506143e3826143a2565b602082019050919050565b60006020820190508181036000830152614407816143cb565b9050919050565b7f20666f72776172646572207a65726f2061646472657373000000000000000000600082015250565b6000614444601783612ec4565b915061444f8261440e565b602082019050919050565b6000602082019050818103600083015261447381614437565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144d6602683612ec4565b91506144e18261447a565b604082019050919050565b60006020820190508181036000830152614505816144c9565b9050919050565b600061451782612e2c565b915061452283612e2c565b925082820261453081612e2c565b9150828204841483151761454757614546613ed9565b5b5092915050565b600061455982612e2c565b915061456483612e2c565b925082820390508181111561457c5761457b613ed9565b5b92915050565b60006040820190506145976000830185612ff4565b6145a46020830184612e8f565b9392505050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b60006145e1600e83612ec4565b91506145ec826145ab565b602082019050919050565b60006020820190508181036000830152614610816145d4565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b600061464d600f83612ec4565b915061465882614617565b602082019050919050565b6000602082019050818103600083015261467c81614640565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b60006146b9600c83612ec4565b91506146c482614683565b602082019050919050565b600060208201905081810360008301526146e8816146ac565b9050919050565b60006020828403121561470557614704612db7565b5b600061471384828501613290565b91505092915050565b6147258161326c565b82525050565b6000819050919050565b61473e8161472b565b82525050565b600060e082019050614759600083018a612ff4565b6147666020830189612ff4565b6147736040830188612e8f565b6147806060830187612e8f565b61478d608083018661471c565b61479a60a0830185614735565b6147a760c0830184614735565b98975050505050505050565b60006060820190506147c86000830186612ff4565b6147d56020830185612ff4565b6147e26040830184612e8f565b949350505050565b6147f381612dc1565b82525050565b600060039050919050565b600081905092915050565b6000819050919050565b614822816131a1565b82525050565b60006148348383614819565b60208301905092915050565b6000602082019050919050565b614856816147f9565b6148608184614804565b925061486b8261480f565b8060005b8381101561489c5781516148838782614828565b965061488e83614840565b92505060018101905061486f565b505050505050565b6148ad8161326c565b82525050565b610100820160008201516148ca60008501826147ea565b5060208201516148dd602085018261305e565b5060408201516148f060408501826147ea565b50606082015161490360608501826147ea565b506080820151614916608085018261484d565b5060a082015161492960e08501826148a4565b50505050565b6000610140820190506149456000830186612e8f565b61495260208301856148b3565b8181036101208301526149658184612f10565b9050949350505050565b600061497a826131a1565b9150614985836131a1565b9250828203905067ffffffffffffffff8111156149a5576149a4613ed9565b5b92915050565b6000815190506149ba81613549565b92915050565b6000602082840312156149d6576149d5612db7565b5b60006149e4848285016149ab565b91505092915050565b600081519050919050565b6000614a03826149ed565b614a0d818561435c565b9350614a1d818560208601612ed5565b80840191505092915050565b6000614a3582846149f8565b91508190509291505056fea2646970667358221220ea8e238c4f842a5133c7b235928d8af397adbe4f8fd889f612328accca6bf3bc64736f6c63430008130033000000000000000000000000de90006d73593650d8c7b9b16afd04e0bc2d813b00000000000000000000000064c47f5fb776c41ef357274b27897cc5088330c60000000000000000000000000000000000000000000000000000000000000001