2 txs
7 calls
constructor
constructor(string _name, string _symbol, address _nlp)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
feeRecipient
viewfunction feeRecipient() view returns (address)
getNlpByWnlp
viewfunction getNlpByWnlp(uint256 wNLPAmount) view returns (uint256)
getWnlpByNlp
viewfunction getWnlpByNlp(uint256 _nlpAmount) view returns (uint256)
instantRedeemEnabled
viewfunction instantRedeemEnabled() view returns (bool)
instantRedeemFeeBips
viewfunction instantRedeemFeeBips() view returns (uint256)
MIN_INSTANT_REDEEM_AMOUNT
viewfunction MIN_INSTANT_REDEEM_AMOUNT() view returns (uint256)
name
viewfunction name() view returns (string)
nlp
viewfunction nlp() view returns (address)
nlpPerToken
viewfunction nlpPerToken() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
redeemWhitelist
viewfunction redeemWhitelist(address) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokensPerNlp
viewfunction tokensPerNlp() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
withdrawQueue
viewfunction withdrawQueue() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
depositAndWrap
nonpayablefunction depositAndWrap(address to, uint256 amount) returns (uint256 wNLPAmount)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
instantRedeem
nonpayablefunction instantRedeem(uint256 wNLPAmount, address to) returns (uint256 underlyingAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeRecipient
nonpayablefunction setFeeRecipient(address _feeRecipient)
setInstantRedeemEnabled
nonpayablefunction setInstantRedeemEnabled(bool _enabled)
setInstantRedeemFeeBips
nonpayablefunction setInstantRedeemFeeBips(uint256 _instantRedeemFeeBips)
setRedeemWhitelist
nonpayablefunction setRedeemWhitelist(address[] accounts, bool[] statuses)
setWithdrawQueue
nonpayablefunction setWithdrawQueue(address _withdrawQueue)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapAndRedeem
nonpayablefunction unwrapAndRedeem(uint256 wNLPAmount, address to) returns (uint256 underlyingAmount)
wrap
nonpayablefunction wrap(uint256 amount) returns (uint256 wNLPAmount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
DepositAndWrapped
event DepositAndWrapped(address indexed from, address indexed to, uint256 underlyingAmount, uint256 wNLPAmount)
FeeRecipientUpdated
event FeeRecipientUpdated(address indexed oldRecipient, address indexed newRecipient)
InstantRedeemed
event InstantRedeemed(address indexed user, uint256 wNLPAmount, uint256 underlyingAmount, uint256 feeAmount)
InstantRedeemEnabledUpdated
event InstantRedeemEnabledUpdated(bool enabled)
InstantRedeemFeeBipsUpdated
event InstantRedeemFeeBipsUpdated(uint256 oldFeeBips, uint256 newFeeBips)
InstantRedeemFeeCollected
event InstantRedeemFeeCollected(address indexed user, uint256 feeAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
RedeemWhitelistUpdated
event RedeemWhitelistUpdated(address indexed account, bool status)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UnwrappedAndRedeemed
event UnwrappedAndRedeemed(address indexed from, address indexed to, uint256 wNLPAmount, uint256 underlyingAmount)
WithdrawQueueUpdated
event WithdrawQueueUpdated(address indexed oldQueue, address indexed newQueue)
Wrapped
event Wrapped(address indexed user, uint256 nlpAmount, uint256 wNLPAmount)
errors
InvalidFeeBips
error InvalidFeeBips()
NotTrustedOperator
error NotTrustedOperator()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60c06040526006805460ff60a01b1916600160a01b179055348015610022575f5ffd5b50604051612ffd380380612ffd83398101604081905261004191610293565b8282600361004f838261038f565b50600461005c828261038f565b50505061007561007061017160201b60201c565b610175565b6001600160a01b038116608081905260408051636f307dc360e01b81529051636f307dc3916004808201926020929091908290030181865afa1580156100bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e19190610449565b6001600160a01b0390811660a052600780546001600160a01b031916331790556080516040805163416f405960e01b81529051919092169163416f40599160048083019260209291908290030181865afa158015610141573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610165919061046b565b60095550610482915050565b3390565b600680546001600160a01b031916905561018e81610191565b50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610205575f5ffd5b81516001600160401b0381111561021e5761021e6101e2565b604051601f8201601f19908116603f011681016001600160401b038111828210171561024c5761024c6101e2565b604052818152838201602001851015610263575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b6001600160a01b038116811461018e575f5ffd5b5f5f5f606084860312156102a5575f5ffd5b83516001600160401b038111156102ba575f5ffd5b6102c6868287016101f6565b602086015190945090506001600160401b038111156102e3575f5ffd5b6102ef868287016101f6565b92505060408401516103008161027f565b809150509250925092565b600181811c9082168061031f57607f821691505b60208210810361033d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561038a57805f5260205f20601f840160051c810160208510156103685750805b601f840160051c820191505b81811015610387575f8155600101610374565b50505b505050565b81516001600160401b038111156103a8576103a86101e2565b6103bc816103b6845461030b565b84610343565b6020601f8211600181146103ee575f83156103d75750848201515b5f19600385901b1c1916600184901b178455610387565b5f84815260208120601f198516915b8281101561041d57878501518255602094850194600190920191016103fd565b508482101561043a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610459575f5ffd5b81516104648161027f565b9392505050565b5f6020828403121561047b575f5ffd5b5051919050565b60805160a051612af161050c5f395f81816103fd015281816109ac01528181610a2501528181610d670152610da901525f81816104d0015281816108dc01528181610aec01528181610b6e01528181610c7a01528181610dcb01528181610e1f015281816111a201528181611466015281816117690152818161181c01526118b60152612af15ff3fe608060405234801561000f575f5ffd5b5060043610610269575f3560e01c80637943b47611610157578063a82d9d6f116100d2578063e74b981b11610088578063ea598cb01161006e578063ea598cb0146105b2578063f2fde38b146105c5578063f74a81e3146105d8575f5ffd5b8063e74b981b14610597578063ea094089146105aa575f5ffd5b8063c9e6f05b116100b8578063c9e6f05b14610521578063dd62ed3e14610534578063e30c397814610579575f5ffd5b8063a82d9d6f14610505578063a9059cbb1461050e575f5ffd5b80638da5cb5b1161012757806395d89b411161010d57806395d89b41146104c3578063a30d7938146104cb578063a457c2d7146104f2575f5ffd5b80638da5cb5b1461049257806393ab4051146104b0575f5ffd5b80637943b4761461045c57806379ba50971461046f5780637c99bfb714610477578063886b9ca51461047f575f5ffd5b8063313ce567116101e757806351a2d6d1116101b75780636f307dc31161019d5780636f307dc3146103f857806370a082311461041f578063715018a614610454575f5ffd5b806351a2d6d1146103c557806357aa3d60146103e5575f5ffd5b8063313ce56714610340578063395093511461035a578063469048401461036d5780634d08124e146103b2575f5ffd5b80630b1b90571161023c5780632292820811610222578063229282081461030757806323b872dd1461031a578063265f3e0e1461032d575f5ffd5b80630b1b9057146102e857806318160ddd146102ff575f5ffd5b80630276775e1461026d57806306fdde03146102825780630754f9ff146102a0578063095ea7b3146102d5575b5f5ffd5b61028061027b366004612601565b6105fa565b005b61028a610683565b6040516102979190612618565b60405180910390f35b6006546102c59074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610297565b6102c56102e336600461268e565b610713565b6102f16103e881565b604051908152602001610297565b6002546102f1565b6102f16103153660046126b6565b61072c565b6102c56103283660046126e0565b610a98565b6102f161033b366004612601565b610abb565b610348610b6b565b60405160ff9091168152602001610297565b6102c561036836600461268e565b610bfe565b60075461038d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610297565b6102f16103c0366004612601565b610c49565b60085461038d9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f16103f336600461268e565b610cbe565b61038d7f000000000000000000000000000000000000000000000000000000000000000081565b6102f161042d36600461271a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b610280610f06565b61028061046a366004612782565b610f19565b6102806110ea565b6102f161119f565b61028061048d36600461271a565b61124c565b60055473ffffffffffffffffffffffffffffffffffffffff1661038d565b6102f16104be3660046126b6565b611317565b61028a611523565b61038d7f000000000000000000000000000000000000000000000000000000000000000081565b6102c561050036600461268e565b611532565b6102f160095481565b6102c561051c36600461268e565b611602565b61028061052f3660046127ee565b61160f565b6102f161054236600461280d565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b60065473ffffffffffffffffffffffffffffffffffffffff1661038d565b6102806105a536600461271a565b61169b565b6102f1611766565b6102f16105c0366004612601565b6117ab565b6102806105d336600461271a565b611930565b6102c56105e636600461271a565b600a6020525f908152604090205460ff1681565b6106026119e0565b6109c481111561063e576040517f82c9638200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980549082905560408051828152602081018490527fe302c0679385367140d29e5bc1d46b58ffc6fd78d66f91f714b56b444c8a7bf6910160405180910390a15050565b60606003805461069290612835565b80601f01602080910402602001604051908101604052809291908181526020018280546106be90612835565b80156107095780601f106106e057610100808354040283529160200191610709565b820191905f5260205f20905b8154815290600101906020018083116106ec57829003601f168201915b5050505050905090565b5f33610720818585611a61565b60019150505b92915050565b5f610735611c14565b60065474010000000000000000000000000000000000000000900460ff166107be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e7374616e742072656465656d2064697361626c656400000000000000000060448201526064015b60405180910390fd5b6103e8831015610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f42656c6f77206d696e696d756d20696e7374616e742072656465656d20616d6f60448201527f756e74000000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff821661089d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108a73384611c98565b6040517f52c08bb4000000000000000000000000000000000000000000000000000000008152600481018490523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906352c08bb4906044016020604051808303815f875af1158015610937573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095b9190612886565b90505f6127106009548361096f91906128ca565b61097991906128e1565b90508015610a0b5761098b8183612919565b6007549092506109d59073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116911683611e57565b60405181815233907ff8fe800807696a9a2dcdee59c61535983587cdd138b3910884db69bb21f367049060200160405180910390a25b610a4c73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168484611e57565b604080518581526020810184905290810182905233907f0d4b6ab46396cca0d73dc6444c5d13c358986fb808ec77b65849b70678cf7fe79060600160405180910390a250610726611ed8565b5f33610aa5858285611f02565b610ab0858585611fd8565b506001949350505050565b6040517fbfcd2542000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063bfcd2542906024015b602060405180830381865afa158015610b47573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107269190612886565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf9919061292c565b905090565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906107209082908690610c4490879061294c565b611a61565b6040517f761487e0000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063761487e090602401610b2c565b5f610cc7611c14565b5f8211610d00576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610d4d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d8f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085612245565b610df073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008461228b565b6040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b6b55f25906024016020604051808303815f875af1158015610e7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9e9190612886565b9050610eaa8382612296565b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff85169133917fbae7758ba4868f9d245e173161e3a2c80a61be78bd7e8fb07ae11ab27698600d91015b60405180910390a3610726611ed8565b610f0e6119e0565b610f175f612387565b565b610f216119e0565b5f5b838110156110e3575f858583818110610f3e57610f3e61295f565b9050602002016020810190610f53919061271a565b73ffffffffffffffffffffffffffffffffffffffff1603610fa0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828282818110610fb257610fb261295f565b9050602002016020810190610fc791906127ee565b600a5f878785818110610fdc57610fdc61295f565b9050602002016020810190610ff1919061271a565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558484828181106110555761105561295f565b905060200201602081019061106a919061271a565b73ffffffffffffffffffffffffffffffffffffffff167f541e28b0ac65f8b0bfbd49f345fa87f069d4baf4e45c227204f061377b0449f48484848181106110b3576110b361295f565b90506020020160208101906110c891906127ee565b604051901515815260200160405180910390a2600101610f23565b5050505050565b600654339073ffffffffffffffffffffffffffffffffffffffff168114611193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084016107b5565b61119c81612387565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663761487e06111e4610b6b565b6111ef90600a612aad565b6040518263ffffffff1660e01b815260040161120d91815260200190565b602060405180830381865afa158015611228573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf99190612886565b6112546119e0565b73ffffffffffffffffffffffffffffffffffffffff81166112a1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f2fd9137397adbddb5f4c7dbe4cc92776b10bc6abf4dde54943452db10d288972905f90a35050565b5f611320611c14565b5f8311611359576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166113a6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff163314806113da5750335f908152600a602052604090205460ff165b611410576040517ffb837df400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141a3384611c98565b6040517f52c08bb40000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff83811660248301527f000000000000000000000000000000000000000000000000000000000000000016906352c08bb4906044016020604051808303815f875af11580156114ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d09190612886565b604080518581526020810183905291925073ffffffffffffffffffffffffffffffffffffffff84169133917f8b435b3d3be1de64d28878a178b40681db793bf446a4d1394fbefb51b7c070449101610ef6565b60606004805461069290612835565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156115f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107b5565b610ab08286868403611a61565b5f33610720818585611fd8565b6116176119e0565b6006805482151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9091161790556040517f2248c6c850aa6eda2e54da649e52540979849861243f4231ad6175eb7b0a1f829061169090831515815260200190565b60405180910390a150565b6116a36119e0565b73ffffffffffffffffffffffffffffffffffffffff81166116f0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d3905f90a35050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bfcd25426111e4610b6b565b5f6117b4611c14565b5f82116117ed576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f761487e0000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063761487e090602401602060405180830381865afa158015611876573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190612886565b90506118de73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085612245565b6118e83382612296565b604080518381526020810183905233917f727200b48f3c812bfb404b578574e1c03694edb122d80fa6dcb352a9e4f8a938910160405180910390a261192b611ed8565b919050565b6119386119e0565b6006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561199b60055473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b5565b73ffffffffffffffffffffffffffffffffffffffff8316611b03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff8216611ba6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611c6d576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f177f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060016123b8565b73ffffffffffffffffffffffffffffffffffffffff8216611d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090205481811015611df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff83165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c07565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611e5291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123bf565b610f177f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005f6123b8565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611fd25781811015611fc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107b5565b611fd28484848403611a61565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661207b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff821661211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260208190526040902054818110156121d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107b5565b73ffffffffffffffffffffffffffffffffffffffff8481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611fd2565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611fd29186918216906323b872dd90608401611e91565b611e5283838361245e565b73ffffffffffffffffffffffffffffffffffffffff8216612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b5565b8060025f828254612324919061294c565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561119c81612535565b80825d5050565b5f5f60205f8451602086015f885af1806123de576040513d5f823e3d81fd5b50505f513d915081156123f557806001141561240f565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611fd2576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526124ea84826125ab565b611fd25760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f604483015261252b91869182169063095ea7b390606401611e91565b611fd284826123bf565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156125f7575081156125dc57806001146125f7565b5f8673ffffffffffffffffffffffffffffffffffffffff163b115b9695505050505050565b5f60208284031215612611575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461192b575f5ffd5b5f5f6040838503121561269f575f5ffd5b6126a88361266b565b946020939093013593505050565b5f5f604083850312156126c7575f5ffd5b823591506126d76020840161266b565b90509250929050565b5f5f5f606084860312156126f2575f5ffd5b6126fb8461266b565b92506127096020850161266b565b929592945050506040919091013590565b5f6020828403121561272a575f5ffd5b6127338261266b565b9392505050565b5f5f83601f84011261274a575f5ffd5b50813567ffffffffffffffff811115612761575f5ffd5b6020830191508360208260051b850101111561277b575f5ffd5b9250929050565b5f5f5f5f60408587031215612795575f5ffd5b843567ffffffffffffffff8111156127ab575f5ffd5b6127b78782880161273a565b909550935050602085013567ffffffffffffffff8111156127d6575f5ffd5b6127e28782880161273a565b95989497509550505050565b5f602082840312156127fe575f5ffd5b81358015158114612733575f5ffd5b5f5f6040838503121561281e575f5ffd5b6128278361266b565b91506126d76020840161266b565b600181811c9082168061284957607f821691505b602082108103612880577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215612896575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176107265761072661289d565b5f82612914577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b818103818111156107265761072661289d565b5f6020828403121561293c575f5ffd5b815160ff81168114612733575f5ffd5b808201808211156107265761072661289d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6001815b60018411156129c7578085048111156129ab576129ab61289d565b60018416156129b957908102905b60019390931c928002612990565b935093915050565b5f826129dd57506001610726565b816129e957505f610726565b81600181146129ff5760028114612a0957612a25565b6001915050610726565b60ff841115612a1a57612a1a61289d565b50506001821b610726565b5060208310610133831016604e8410600b8410161715612a48575081810a610726565b612a737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461298c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612aa557612aa561289d565b029392505050565b5f61273360ff8416836129cf56fea2646970667358221220842387d86693754e0df3156c0c7d4c99a9ba6c90b35b91832567ffa20404d3ea64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000096a068b3936bffd6b29ca7d451206ad5c5049080000000000000000000000000000000000000000000000000000000000000001157726170706564204e4c503a20555344540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009774e4c502d555344540000000000000000000000000000000000000000000000