0 txs
9 calls
constructor
constructor(((address pendleMarket, address uniswapV3LikePool, address ib, uint8 slippage) poolData, address tokenA, address tokenB)[] poolsData)
functions
getPoolData
viewfunction getPoolData(address, address) view returns (address pendleMarket, address uniswapV3LikePool, address ib, uint8 slippage)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addPools
nonpayablefunction addPools(tuple[] poolsData)
algebraSwapCallback
nonpayablefunction algebraSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data)
renounceOwnership
nonpayablefunction renounceOwnership()
swapCallback
nonpayablefunction swapCallback(int256 ptToAccount, int256 syToAccount, bytes _data)
swapExactInput
nonpayablefunction swapExactInput(address recipient, address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, bytes data) returns (uint256 amountOut)
swapExactOutput
nonpayablefunction swapExactOutput(address recipient, address tokenIn, address tokenOut, uint256 maxAmountIn, uint256 amountOut, bytes data) returns (uint256 amountIn)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data)
events
NewPair
event NewPair(address indexed token0, address indexed token1, address pendleMarket, address uniswapV3LikePool, address ibToken, uint8 slippage)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
ApproxFail
error ApproxFail()
ApproximationFailed
error ApproximationFailed()
ApproxParamsInvalid
error ApproxParamsInvalid(uint256 guessMin, uint256 guessMax, uint256 eps)
InsufficientAmount
error InsufficientAmount()
MarketExchangeRateBelowOne
error MarketExchangeRateBelowOne(int256 exchangeRate)
MarketExpired
error MarketExpired()
MarketProportionMustNotEqualOne
error MarketProportionMustNotEqualOne()
MarketProportionTooHigh
error MarketProportionTooHigh(int256 proportion, int256 maxProportion)
MarketRateScalarBelowZero
error MarketRateScalarBelowZero(int256 rateScalar)
MarketZeroTotalPtOrTotalAsset
error MarketZeroTotalPtOrTotalAsset(int256 totalPt, int256 totalAsset)
NotSupported
error NotSupported()
TooMuchRequested
error TooMuchRequested()
UnknownPair
error UnknownPair()
WrongPoolInput
error WrongPoolInput()
creation bytecode
0x60806040523480156200001157600080fd5b506040516200540338038062005403833981016040819052620000349162000613565b6200003f3362000051565b6200004a816200006f565b50620007e0565b600180546001600160a01b03191690556200006c8162000502565b50565b6040805160e0810182526000606082018181526080830182905260a0830182905260c0830182905282526020820181905291810191909152815160005b81811015620004fc57838181518110620000ca57620000ca62000776565b6020026020010151925060006001600160a01b031683602001516001600160a01b0316148062000105575060408301516001600160a01b0316155b806200011a57508251516001600160a01b0316155b806200013257508251602001516001600160a01b0316155b806200014a57508251604001516001600160a01b0316155b80620001625750606483600001516060015160ff1610155b1562000181576040516325c1cddd60e01b815260040160405180910390fd5b60008360000151600001516001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f091906200078c565b50915050806001600160a01b031684602001516001600160a01b031614158015620002315750806001600160a01b031684604001516001600160a01b031614155b1562000250576040516325c1cddd60e01b815260040160405180910390fd5b83600001516002600086602001516001600160a01b03166001600160a01b03168152602001908152602001600020600086604001516001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160146101000a81548160ff021916908360ff16021790555090505083600001516002600086604001516001600160a01b03166001600160a01b03168152602001908152602001600020600086602001516001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160146101000a81548160ff021916908360ff16021790555090505083604001516001600160a01b031684602001516001600160a01b03167f445afb2a6abaf74e7a484d99dd2ce65b75776de7de2ad81f58a281fae491aebb866000015160000151876000015160200151886000015160400151896000015160600151604051620004ea94939291906001600160a01b03948516815292841660208401529216604082015260ff91909116606082015260800190565b60405180910390a350600101620000ac565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200058d576200058d62000552565b60405290565b604051608081016001600160401b03811182821017156200058d576200058d62000552565b604051601f8201601f191681016001600160401b0381118282101715620005e357620005e362000552565b604052919050565b6001600160a01b03811681146200006c57600080fd5b80516200060e81620005eb565b919050565b600060208083850312156200062757600080fd5b82516001600160401b03808211156200063f57600080fd5b818501915085601f8301126200065457600080fd5b81518181111562000669576200066962000552565b62000679848260051b01620005b8565b818152848101925060c09182028401850191888311156200069957600080fd5b938501935b828510156200076a5784890381811215620006b95760008081fd5b620006c362000568565b608080831215620006d45760008081fd5b620006de62000593565b92508751620006ed81620005eb565b835287890151620006fe81620005eb565b838a01526040888101516200071381620005eb565b8482015260608981015160ff811681146200072e5760008081fd5b908501528383526200074289830162000601565b8a8401526200075460a08a0162000601565b908301525085525093840193928501926200069e565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215620007a257600080fd5b8351620007af81620005eb565b6020850151909350620007c281620005eb565b6040850151909250620007d581620005eb565b809150509250925092565b614c1380620007f06000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063caab6ac711610081578063f2fde38b1161005b578063f2fde38b14610258578063fa461e33146100d9578063fa483e721461026b57600080fd5b8063caab6ac714610176578063e30c397814610189578063ec6390f4146101a757600080fd5b806379ba5097116100b257806379ba50971461011c5780637d4f036a146101245780638da5cb5b1461013757600080fd5b80632c8958f6146100d95780632f1ccfbe146100ee578063715018a614610114575b600080fd5b6100ec6100e7366004614129565b61027e565b005b6101016100fc3660046141a9565b610290565b6040519081526020015b60405180910390f35b6100ec610395565b6100ec6103a9565b6101016101323660046141a9565b610463565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010b565b6100ec610184366004614238565b61055a565b60015473ffffffffffffffffffffffffffffffffffffffff16610151565b6102186101b53660046142ad565b6002602081815260009384526040808520909152918352912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff928316929182169181169074010000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093169082015260ff909116606082015260800161010b565b6100ec6102663660046142e6565b6105c1565b6100ec610279366004614129565b610671565b61028a84848484610855565b50505050565b60008061029d8888610b7c565b905060006102aa82610c5c565b9050806060015173ffffffffffffffffffffffffffffffffffffffff16632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031f9190614311565b1561033b57610334818b8b8b8b8b8b8b610de9565b925061034e565b61034b818b8b8b8b8b8b8b610f78565b92505b86831115610388576040517f24df576f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050979650505050505050565b61039d611152565b6103a760006111d3565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610460816111d3565b50565b6000806104708888610b7c565b9050600061047d82610c5c565b9050806060015173ffffffffffffffffffffffffffffffffffffffff16632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f29190614311565b1561050d57610506818b8b8b8b8a8a611204565b9250610520565b61051d818b8b8b8b8b8b8b611389565b92505b85831015610388576040517f5945ea5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610562611152565b6105bd8282808060200260200160405190810160405280939291908181526020016000905b828210156105b3576105a460c083028601368190038101906143f0565b81526020019060010190610587565b5050505050611666565b5050565b6105c9611152565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561062c60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008413806106805750600083135b61068957600080fd5b600061069782840184614547565b905060006106ad82602001518360400151610b7c565b805190915073ffffffffffffffffffffffffffffffffffffffff1633146106d357600080fd5b600085131561078d5760006106e787614637565b83519091506106f65760038190555b606083015160a08401516040517f1b9d082d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691631b9d082d9161075591339186916004016146dd565b600060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b505050505061084d565b8151156107b5576107af6107a082610c5c565b336107aa88614637565b611cce565b5061084d565b6000610834308360200151846040015173ffffffffffffffffffffffffffffffffffffffff16866020015173ffffffffffffffffffffffffffffffffffffffff16108989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9e92505050565b91505061084a61084383610c5c565b3383611cce565b50505b505050505050565b60008413806108645750600083135b61086d57600080fd5b600061087b82840184614547565b602081015160408201519192509060006108958383610b7c565b9050806020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d357600080fd5b60006108de82610c5c565b90506000808a136108ef57886108f1565b895b9050816040015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109cc5785516109365760038190555b606086015160a08701516040517f1b9d082d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691631b9d082d9161099591339186916004016146dd565b600060405180830381600087803b1580156109af57600080fd5b505af11580156109c3573d6000803e3d6000fd5b50505050610b70565b8551156109e4576109de823383611e91565b50610b70565b6000826060015173ffffffffffffffffffffffffffffffffffffffff16632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a599190614311565b15610b18576000836060015173ffffffffffffffffffffffffffffffffffffffff16631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad59190614712565b90506000610aee8483670de0b6b3a76400006001611f11565b905080600381905550610b0f85606001518a60600151838c60a00151611f6e565b92505050610b62565b610b5f8330848a608001518d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061208992505050565b90505b610b6d833383611e91565b50505b50505050505050505050565b6040805160808101825260008082526020820181905291810182905260608101919091525073ffffffffffffffffffffffffffffffffffffffff828116600090815260026020818152604080842086861685528252928390208351608081018552815486168082526001830154871693820193909352920154938416928201929092527401000000000000000000000000000000000000000090920460ff166060830152610c56576040517ffee0069400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915260008260000151905060008060008373ffffffffffffffffffffffffffffffffffffffff16632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d12919061472b565b9250925092506040518060e001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876060015160ff16815250945050505050919050565b6000886040015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610f2f5760006040518060c001604052806000151581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200187815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525060a08b015160808c0151919250610f27918b919073ffffffffffffffffffffffffffffffffffffffff808c16911610610f0289614637565b85604051602001610f139190614778565b604051602081830303815290604052611d9e565b505050610f61565b6040517fa038794000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003805460009091555b9998505050505050505050565b6000806040518060c001604052806000151581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff16815260200187815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525060408b015190915073ffffffffffffffffffffffffffffffffffffffff908116908916036110965761108f898b60a001518973ffffffffffffffffffffffffffffffffffffffff168d6080015173ffffffffffffffffffffffffffffffffffffffff161088610f0290614637565b505061113b565b896000015173ffffffffffffffffffffffffffffffffffffffff16635b709f178a87846040516020016110c99190614778565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016110f6939291906146dd565b60408051808303816000875af1158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906147e5565b50505b6003805460009091559a9950505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044e565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610460816122e1565b6000876040015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610f2f5760006112858960600151338787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6e92505050565b905060006040518060c001604052806001151581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525060a08b015160808c0151604051929350611373928c929173ffffffffffffffffffffffffffffffffffffffff808d16911610908690610f13908790602001614778565b935061137e92505050565b979650505050505050565b6000806040518060c001604052806001151581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525060408b015190915073ffffffffffffffffffffffffffffffffffffffff908116908916036115d65789516040517f1b9d082d0000000000000000000000000000000000000000000000000000000081523391631b9d082d9161149e91908a9089908990600401614809565b600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50508b5160408051600080825260208201928390527f29910b110000000000000000000000000000000000000000000000000000000090925290935073ffffffffffffffffffffffffffffffffffffffff90911691506329910b11906115399030908b90602481016146dd565b60408051808303816000875af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b91906147e5565b5090506115cc8a8c60a001518a73ffffffffffffffffffffffffffffffffffffffff168e6080015173ffffffffffffffffffffffffffffffffffffffff16108486604051602001610f139190614778565b9350611659915050565b6000611626308c60a001518d6080015173ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16108a86604051602001610f139190614778565b9150506116558b8b8389866040516020016116419190614778565b604051602081830303815290604052612356565b9250505b5098975050505050505050565b6040805160e0810182526000606082018181526080830182905260a0830182905260c0830182905282526020820181905291810191909152815160005b8181101561028a578381815181106116bd576116bd61487a565b60200260200101519250600073ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff16148061171e5750604083015173ffffffffffffffffffffffffffffffffffffffff16155b8061173f575082515173ffffffffffffffffffffffffffffffffffffffff16155b80611763575082516020015173ffffffffffffffffffffffffffffffffffffffff16155b80611787575082516040015173ffffffffffffffffffffffffffffffffffffffff16155b8061179e5750606483600001516060015160ff1610155b156117d5576040517f25c1cddd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600001516000015173ffffffffffffffffffffffffffffffffffffffff16632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561182a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184e919061472b565b509150508073ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff16141580156118c257508073ffffffffffffffffffffffffffffffffffffffff16846040015173ffffffffffffffffffffffffffffffffffffffff1614155b156118f9576040517f25c1cddd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836000015160026000866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff021916908360ff160217905550905050836000015160026000866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff021916908360ff160217905550905050836040015173ffffffffffffffffffffffffffffffffffffffff16846020015173ffffffffffffffffffffffffffffffffffffffff167f445afb2a6abaf74e7a484d99dd2ce65b75776de7de2ad81f58a281fae491aebb866000015160000151876000015160200151886000015160400151896000015160600151604051611cbd949392919073ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529216604082015260ff91909116606082015260800190565b60405180910390a3506001016116a3565b6000611ce3846080015185602001518461256c565b602084015160808501516040517f20e8c56500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152918216602482015260448101859052606481018590529116906320e8c565906084015b6020604051808303816000875af1158015611d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d969190614712565b949350505050565b6000806000808773ffffffffffffffffffffffffffffffffffffffff1663128acb088a89898b611dec57611de7600173fffd8963efd1fc6a506488495d951d5263988d266148a9565b611dfc565b611dfc6401000276a360016148dd565b8a6040518663ffffffff1660e01b8152600401611e1d95949392919061490a565b60408051808303816000875af1158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906147e5565b9150915086611e775780611e7283614637565b611e81565b81611e8182614637565b909a909950975050505050505050565b602083015160808401516040517f769f8e5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905291821660448201526064810184905260006084820181905292919091169063769f8e5d9060a401611d53565b600080611f1f8686866126dc565b90506001836002811115611f3557611f35614951565b148015611f52575060008480611f4d57611f4d614980565b868809115b15611f6557611f626001826149af565b90505b95945050505050565b6040517f1b9d082d00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff851690631b9d082d90611fc7908890879087906004016146dd565b600060405180830381600087803b158015611fe157600080fd5b505af1158015611ff5573d6000803e3d6000fd5b50506040517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8816925063bcb7ea5d91506024016020604051808303816000875af1158015612065573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f659190614712565b6000808660c00151905060006040518060a001604052808360ff1660646120b091906149af565b6120be60ff861660646149c2565b6120c890896149d5565b6120d291906149ec565b81526020810187905260006040808301829052600a606084015266038d7ea4c680006080909301929092528a5191517f794052f3000000000000000000000000000000000000000000000000000000008152306004820152929350916121bf9173ffffffffffffffffffffffffffffffffffffffff169063794052f39060240161012060405180830381865afa158015612170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121949190614a0b565b6121b78b6060015173ffffffffffffffffffffffffffffffffffffffff1661280c565b89428661287f565b50509050858111156121fd576040517fd8d149ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b88516040517f29910b1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906329910b1190612256908b9085908a906004016146dd565b60408051808303816000875af1158015612274573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229891906147e5565b509350868410156122d5576040517fd8d149ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505095945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808660c00151905060006040518060a001604052808681526020018360ff16606461238391906149c2565b61239160ff861660646149af565b61239b90896149d5565b6123a591906149ec565b815260006020820152600a60408083019190915266038d7ea4c68000606090920191909152895190517f794052f300000000000000000000000000000000000000000000000000000000815230600482015291925061248d9173ffffffffffffffffffffffffffffffffffffffff9091169063794052f39060240161012060405180830381865afa15801561243e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124629190614a0b565b6124858a6060015173ffffffffffffffffffffffffffffffffffffffff1661280c565b88428561297f565b5088516040517f5b709f1700000000000000000000000000000000000000000000000000000000815291945060009173ffffffffffffffffffffffffffffffffffffffff90911690635b709f17906124ed908b9088908a906004016146dd565b60408051808303816000875af115801561250b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252f91906147e5565b509050868111156122d5576040517fd8d149ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916126039190614a8d565b6000604051808303816000865af19150503d8060008114612640576040519150601f19603f3d011682016040523d82523d6000602084013e612645565b606091505b509150915081801561266f57508051158061266f57508080602001905181019061266f9190614311565b6126d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015260640161044e565b5050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036127345783828161272a5761272a614980565b0492505050612805565b80841161279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f770000000000000000000000604482015260640161044e565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60008173ffffffffffffffffffffffffffffffffffffffff16631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af115801561285b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190614712565b600080808061288f898988612a52565b905084604001516000036128c2576128b485602001516128af8b84612b85565b612c09565b60208601526128c285612c1f565b60005b85606001518110156129415760006128dd8783612c91565b90506000806128ee8d868e86612d16565b50915091508a821061292957612909828c8b60800151612d47565b1561291d5791965094509250612974915050565b6020890183905261292d565b8289525b5050508061293a90614aa9565b90506128c5565b506040517ffa711db200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b955095509592505050565b6000808061298e888887612a52565b905083604001516000036129c0576129b284602001516128af838b60000151612d7a565b60208501526129c084612c1f565b60005b84606001518110156129415760006129db8683612c91565b90506000806129ec8c868d86612e0e565b5091509150898211612a2357612a07828b8a60800151612e40565b15612a1b57919550909350612a4892505050565b828852612a34565b612a2e6001846149c2565b60208901525b50505080612a4190614aa9565b90506129c3565b9550959350505050565b612a7d6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210612aba576040517fb2094b5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828560a00151612acc91906149c2565b9050612ad88582612e6e565b82526020850151612aea908590612ee8565b602083015284511580612aff57506020820151155b15612b4657845160208301516040517fb1c4aefb0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161044e565b612b6485600001518661010001518460200151856000015185612f3d565b604083015260c0850151612b789082612fca565b6060830152509392505050565b60008060009050600060018460200151612b9f91906149c2565b90505b808214612c015760006002612bb783856149af565b612bc29060016149af565b612bcc91906149ec565b90506000612bdf86886000015184612ffe565b1215612bf757612bf06001826149c2565b9150612bfb565b8092505b50612ba2565b509392505050565b6000818310612c185781612805565b5090919050565b602081015181511180612c3d5750670de0b6b3a76400008160800151115b15610460578051602082015160808301516040517fb301af0400000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152604482015260640161044e565b600081158015612ca45750604083015115155b15612cb457506040820151610c56565b6020830151835111612ce45760208301518351600291612cd3916149af565b612cdd91906149ec565b9050610c56565b6040517ffa711db200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008080808080612d348989612d2b8a614637565b8d929190613115565b919c909b50909950975050505050505050565b6000828410158015611d965750612d6f83612d6a84670de0b6b3a76400006149af565b613282565b909311159392505050565b600080612da7612da2856000015186604001518760600151612d9c9190614ae1565b906132a2565b6132c5565b90506000612dc7612dc0670de0b6b3a764000084614b01565b83906137f6565b90506000612de5866020015186612dde9190614b01565b83906132a2565b90506000612df38287614ae1565b90506103e8612e04826103e76149d5565b61137e91906149ec565b60008080808080612e218a8a8a8a613115565b92509250925082612e3190614637565b9a919950975095505050505050565b6000828411158015611d965750612e6383612d6a84670de0b6b3a76400006149c2565b909310159392505050565b6000612e798261381c565b612e90612e8b6201518061016d6149d5565b61381c565b8460800151612e9f9190614b29565b612ea99190614b75565b905060008113610c56576040517f1ca418760000000000000000000000000000000000000000000000000000000081526004810182905260240161044e565b60008060008312612efa576001612f1c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050612f33612e8b85612f2e8661384f565b613866565b611d969082614b29565b600080612f4a8684612fca565b9050670de0b6b3a7640000811215612f91576040517fca78c8a40000000000000000000000000000000000000000000000000000000081526004810182905260240161044e565b6000612fa7612fa0878a614b01565b89906137f6565b90506000612fb482613885565b9050612fc081876137f6565b610f6b9084614ae1565b600080612fdc6201518061016d6149d5565b612fe684866149d5565b612ff091906149ec565b9050611d96612da28261381c565b6000808285602001516130119190614ae1565b9050600061301f8585614b01565b90506000821380156130315750600081135b613097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964207074546f4d61726b65740000000000000000000000000000604482015260640161044e565b60006130c56130a68484614b29565b60208901516130b59089614b01565b6130bf9088614b29565b906137f6565b905060006130db6130d684866137f6565b6138ed565b88519091506000906130f690670de0b6b3a7640000906137f6565b905061310681612d9c8486614ae1565b8960400151610f6b9190614ae1565b6000806000806131388860000151886020015189600001518a60400151896139a8565b9050600061314e61314987846137f6565b613a84565b606089015190915060008713156131d657600061316b84836137f6565b9050670de0b6b3a76400008112156131b2576040517fca78c8a40000000000000000000000000000000000000000000000000000000081526004810182905260240161044e565b6131ce6131c783670de0b6b3a7640000614ae1565b84906132a2565b915050613203565b613200816131ec81670de0b6b3a7640000614ae1565b6131f69085614b29565b6131499190614b75565b90505b600060646132148c60e0015161381c565b61321e9084614b29565b6132289190614b75565b905060006132368385614ae1565b90506000811261324f5761324a8a82613ab0565b613259565b6132598a82613afb565b97506132658a84613ab0565b96506132718a83613ab0565b955050505050509450945094915050565b60008061328f83856149d5565b670de0b6b3a76400009004949350505050565b6000806132af8385614b29565b9050670de0b6b3a7640000815b05949350505050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc00008212158015613300575068070c1cc73b00c800008213155b613366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e7400000000000000000000000000000000604482015260640161044e565b600082121561339f5761337b826000036132c5565b6ec097ce7bc90715b34b9f10000000008161339857613398614980565b0592915050565b60006806f05b59d3b200000083126133f557507ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000090910190770195e54c5dd42177f53a27172fa9ec630262827000000000613441565b6803782dace9d9000000831261343d57507ffffffffffffffffffffffffffffffffffffffffffffffffc87d2531627000000909101906b1425982cf597cd205cef7380613441565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126134a7577fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000009093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126134f9577fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000009093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412613549577fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000009093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412613599577fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000009093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126135e8577ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000009093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412613637577ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000009093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412613686577ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800009093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126136d5577ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c00009093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b60008061380b670de0b6b3a764000085614b29565b90508281816132bc576132bc614980565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561384b57600080fd5b5090565b600080821361384b5761386182614637565b610c56565b6000670de0b6b3a764000061387b84846149d5565b61280591906149ec565b6000670de0b6b3a764000082036138c8576040517fa9c8b14d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006138e66138df84670de0b6b3a7640000614ae1565b84906137f6565b9050612805815b6000808213613958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f7574206f6620626f756e647300000000000000000000000000000000000000604482015260640161044e565b670c7d713b49da0000821380156139765750670f43fc2c04ee000082125b1561399a57670de0b6b3a764000061398d83613b46565b8161339857613398614980565b610c5682613c7e565b919050565b6000806139b58784614029565b905060006139c6612dc0888a614b01565b9050670d529ae9e8600000811315613a1b576040517ffc68d09e00000000000000000000000000000000000000000000000000000000815260048101829052670d529ae9e8600000602482015260440161044e565b6000613a2682613885565b905085613a3382896137f6565b613a3d9190614b01565b9350670de0b6b3a76400008412156122d5576040517fca78c8a40000000000000000000000000000000000000000000000000000000081526004810185905260240161044e565b6000610c56827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614b29565b60008060008312613ac2576001613ae4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050612f33612e8b85613af68661384f565b61409f565b60008060008312613b0d576001613b2f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b9050612f33612e8b85613b418661384f565b6140b4565b670de0b6b3a7640000026000806ec097ce7bc90715b34b9f1000000000808401907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f00000000085010281613b9857613b98614980565b05905060006ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215613cc057613cb7826ec097ce7bc90715b34b9f100000000081613cb157613cb1614980565b05613c7e565b60000392915050565b60007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008312613d1157770195e54c5dd42177f53a27172fa9ec630262827000000000830592506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e0000008312613d49576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312613d91576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312613dcc576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312613e0357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312613e3a57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312613e6f5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312613e9a57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312613ecf576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312613f04576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312613f38576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312613f6c576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281613f9557613f95614980565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b600081831215614095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e65676174697665000000000000000000000000000000000000000000000000604482015260640161044e565b6128058284614ae1565b60008261387b670de0b6b3a7640000846149d5565b6000826001816140cc670de0b6b3a7640000866149d5565b6140d691906149af565b61387b91906149c2565b60008083601f8401126140f257600080fd5b50813567ffffffffffffffff81111561410a57600080fd5b60208301915083602082850101111561412257600080fd5b9250929050565b6000806000806060858703121561413f57600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561416457600080fd5b614170878288016140e0565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461046057600080fd5b80356139a38161417c565b600080600080600080600060c0888a0312156141c457600080fd5b87356141cf8161417c565b965060208801356141df8161417c565b955060408801356141ef8161417c565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561421957600080fd5b6142258a828b016140e0565b989b979a50959850939692959293505050565b6000806020838503121561424b57600080fd5b823567ffffffffffffffff8082111561426357600080fd5b818501915085601f83011261427757600080fd5b81358181111561428657600080fd5b86602060c08302850101111561429b57600080fd5b60209290920196919550909350505050565b600080604083850312156142c057600080fd5b82356142cb8161417c565b915060208301356142db8161417c565b809150509250929050565b6000602082840312156142f857600080fd5b81356128058161417c565b801515811461046057600080fd5b60006020828403121561432357600080fd5b815161280581614303565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156143805761438061432e565b60405290565b6040516080810167ffffffffffffffff811182821017156143805761438061432e565b60405160c0810167ffffffffffffffff811182821017156143805761438061432e565b604051610120810167ffffffffffffffff811182821017156143805761438061432e565b600081830360c081121561440357600080fd5b61440b61435d565b608082121561441957600080fd5b614421614386565b9150833561442e8161417c565b8252602084013561443e8161417c565b602083015260408401356144518161417c565b6040830152606084013560ff8116811461446a57600080fd5b606083015281815261447e6080850161419e565b602082015261448f60a0850161419e565b6040820152949350505050565b600082601f8301126144ad57600080fd5b813567ffffffffffffffff808211156144c8576144c861432e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561450e5761450e61432e565b8160405283815286602085880101111561452757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561455957600080fd5b813567ffffffffffffffff8082111561457157600080fd5b9083019060c0828603121561458557600080fd5b61458d6143a9565b823561459881614303565b815260208301356145a88161417c565b602082015260408301356145bb8161417c565b60408201526145cc6060840161419e565b60608201526080830135608082015260a0830135828111156145ed57600080fd5b6145f98782860161449c565b60a08301525095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007f8000000000000000000000000000000000000000000000000000000000000000820361466857614668614608565b5060000390565b60005b8381101561468a578181015183820152602001614672565b50506000910152565b600081518084526146ab81602086016020860161466f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611f656060830184614693565b60006020828403121561472457600080fd5b5051919050565b60008060006060848603121561474057600080fd5b835161474b8161417c565b602085015190935061475c8161417c565b604085015190925061476d8161417c565b809150509250925092565b602081528151151560208201526000602083015173ffffffffffffffffffffffffffffffffffffffff80821660408501528060408601511660608501528060608601511660808501525050608083015160a083015260a083015160c080840152611d9660e0840182614693565b600080604083850312156147f857600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8281168282160390808211156148d6576148d6614608565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff8181168382160190808211156148d6576148d6614608565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a0608083015261137e60a0830184614693565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b80820180821115610c5657610c56614608565b81810381811115610c5657610c56614608565b8082028115828204841417610c5657610c56614608565b6000826149fb576149fb614980565b500490565b80516139a38161417c565b60006101208284031215614a1e57600080fd5b614a266143cc565b825181526020830151602082015260408301516040820152614a4a60608401614a00565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b60008251614a9f81846020870161466f565b9190910192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ada57614ada614608565b5060010190565b81810360008312801583831316838312821617156148d6576148d6614608565b8082018281126000831280158216821582161715614b2157614b21614608565b505092915050565b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615614b6157614b61614608565b8181058314821517610c5657610c56614608565b600082614b8457614b84614980565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614bd857614bd8614608565b50059056fea26469706673582212203f360972495dcc2aae0f96a678c729b14abdeca42121a0657d4259471e5ea89764736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f32e58f92e60f4b0a37a69b95d642a471365eae80000000000000000000000007a415b19932c0105c82fdb6b720bb01b0cc2cae3000000000000000000000000cd5fe23c85820f7b72d0926fc9b05b43e359b7ee0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000c69ad9bab1dee23f4605a82b3354f8e40d1e5966000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007d372819240d14fb477f17b964f95f33beb4c7040000000000000000000000007a415b19932c0105c82fdb6b720bb01b0cc2cae3000000000000000000000000cd5fe23c85820f7b72d0926fc9b05b43e359b7ee00000000000000000000000000000000000000000000000000000000000000140000000000000000000000006ee2b5e19ecba773a352e5b21415dc419a700d1d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000019588f29f9402bb508007feadd415c875ee3f19f000000000000000000000000435664008f38b0650fbc1c9fc971d0a3bc2f1e470000000000000000000000004c9edd5852cd905f086c759e8383e09bff1e68b30000000000000000000000000000000000000000000000000000000000000014000000000000000000000000a0021ef8970104c2d008f38d92f115ad56a9b8e1000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7