2 txs
3 calls
constructor
constructor(address initialOwner, address receiver, address tokenAddress, address m)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
checkpoints
viewfunction checkpoints(address, uint32) view returns (uint128 fromBlock, uint64 votes)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getCurrentVotes
viewfunction getCurrentVotes(address account) view returns (uint64)
getPriorVotes
viewfunction getPriorVotes(address account, uint256 blockNumber) view returns (uint64)
getReceipt
viewfunction getReceipt(uint32 proposalId, address voter) view returns (tuple)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
numCheckpoints
viewfunction numCheckpoints(address) view returns (uint32)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
PROPOSAL_STAKING
viewfunction PROPOSAL_STAKING() view returns (uint256)
staking
viewfunction staking() view returns (address)
state
viewfunction state(uint32 proposalId) view returns (uint8)
subBalances
viewfunction subBalances(address) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasuryProposals
viewfunction treasuryProposals(uint32) view returns (address proposer, address tokenAddress, address receiver, uint32 id, uint64 startBlock, uint64 endBlock, uint96 amount, uint64 quorum, uint64 forVotes, uint64 againstVotes, bool executed)
treasuryProposalsCount
viewfunction treasuryProposalsCount() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(address account, uint256 num)
castVote
nonpayablefunction castVote(uint32 proposalId, bool support)
execute
nonpayablefunction execute(uint32 proposalId)
renounceOwnership
nonpayablefunction renounceOwnership()
safeMint
nonpayablefunction safeMint(address to, uint256 num)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string uri)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
treasuryPropose
nonpayablefunction treasuryPropose(address tokenAddress, address receiver, uint96 amount, uint64 startBlock, uint64 endBlock, uint64 quorum) returns (uint32)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TreasuryProposalCreated
event TreasuryProposalCreated(uint32 id, address proposer, address tokenAddress, address receiver, uint96 amount, uint64 startBlock, uint64 endBlock, uint64 quorum)
TreasuryProposalExecuted
event TreasuryProposalExecuted(uint32 id)
VoteCast
event VoteCast(address voter, uint32 proposalId, bool support, uint64 votes)
VotesChanged
event VotesChanged(address indexed account, uint256 previousBalance, uint256 newBalance)
errors
AlreadyVoted
error AlreadyVoted()
BurnLess
error BurnLess()
CannotTransfer
error CannotTransfer()
EndLessThanStart
error EndLessThanStart()
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
InvalidProposalId
error InvalidProposalId()
NftNotEnough
error NftNotEnough()
NoActive
error NoActive()
NoRight
error NoRight()
NoSucceeded
error NoSucceeded()
NotYetDetermined
error NotYetDetermined()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StakingNotEnough
error StakingNotEnough()
StartBlockLessThanNow
error StartBlockLessThanNow()
TokenError
error TokenError()
creation bytecode
0x608080604052346109eb576080816147e2803803809161001f82856109f0565b8339810103126109eb5761003281610a13565b9061003f60208201610a13565b90610058606061005160408401610a13565b9201610a13565b92610061610a27565b610069610a27565b815190916001600160401b03821161023d5760005490600182811c921680156109e1575b60208310146108e15781601f849311610972575b50602090601f831160011461090c57600092610901575b50508160011b916000199060031b1c1916176000555b8051906001600160401b03821161023d5760015490600182811c921680156108f7575b60208310146108e15781601f849311610871575b50602090601f8311600114610809576000926107fe575b50508160011b916000199060031b1c1916176001555b6001600160a01b031680156107e857600b80546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600c80546001600160a01b0319166001600160a01b03928316908117909155919081168015919082159060015b60028111156102535760405186610d068083018a6001600160401b0382118583101761023d576060938593613abc853982523060208301526001600160a01b031660408201520301906000f0801561023157600d80546001600160a01b0319166001600160a01b0392909216919091179055604051612e3f9081610c7d8239f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b61025e601354610a4c565b806013556020906040519661027383896109f0565b600088526107d25760008181526002835260409020546001600160a01b0316968715801590878261079e575b610785575b6000848152600286526040812080546001600160a01b03191689179055849088908c907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9080a415610701576008548360005260098552806040600020556801000000000000000081101561023d576001810160085560006008548210156106ed5790858260088794522001555b600098868114158061069d575b60038510156104fd575b50506104e957863b610367575b50505061036290610a4c565b6101b0565b9091809996949798959392604051928391630a85bd0160e11b83523360048401528b6024840152604483015260806064830152805190816084840152838c5b8381106104d15750505081818c60a4809484010152601f801991011681010301818b8b5af188918161048d575b5061044d578888883d15610446573d6001600160401b0381116104325760405190610407601f8201601f19168601836109f0565b81523d838583013e5b8051938461042c57633250574960e11b84526004839052602484fd5b84925001fd5b634e487b7160e01b83526041600452602483fd5b6060610410565b94975092959491939092906001600160e01b03191663757a42ff60e11b01610479576103623880610356565b633250574960e11b85526004829052602485fd5b9091508981813d83116104ca575b6104a581836109f0565b810103126104c657516001600160e01b0319811681036104c65790386103d3565b8880fd5b503d61049b565b82810182015187820160a401528694508591016103a6565b6339e3563760e11b88526004889052602488fd5b8880610696575b610687579082828a939061067f575b819061055e575b50610544575b5061052d575b3880610349565b858952601284526040892060018154019055610526565b8a5250601284526040892080546000190190558638610520565b6105ff575b8261056f575b8061051a565b50878b52600f865260408b205490915063ffffffff1680156105f957878b52600e865260408b2063ffffffff6105a483610a71565b168c52865260408b205460801c6001600160401b03165b6001600160401b03818116600101929083116105e5578a939285926105e0928e610a8a565b610569565b634e487b7160e01b8d52601160045260248dfd5b8a6105bb565b50808b52600f865260408b205490915063ffffffff16801561067957818b52600e865260408b2063ffffffff61063483610a71565b168c52865260408b205460801c6001600160401b03165b6001600160401b0381811660001901929083116105e557610673849386938d96938794610a8a565b50610563565b8a61064b565b506001610513565b63cc7744d560e01b8b5260048bfd5b5082610504565b6106a68a610c46565b60001981019081116106d957888c526006875260408c20818d5287528560408d2055858c526007875260408c205561033f565b634e487b7160e01b8c52601160045260248cfd5b634e487b7160e01b81526032600452602490fd5b8886146103325761071189610c46565b8360005260078552604060002054908a60005260068652604060002091818103610757575b50846000526007865260006040812055600052845260006040812055610332565b8160005282875260406000205481600052838852806040600020556000526007875260406000205538610736565b86600052600385526040600020600181540190556102a4565b50600084815260048652604080822080546001600160a01b03191690558b825260038752902080546000190190558761029f565b633250574960e11b600052600060045260246000fd5b631e4fbdf760e01b600052600060045260246000fd5b01519050388061011c565b600160009081528281209350601f198516905b8181106108595750908460019594939210610840575b505050811b01600155610132565b015160001960f88460031b161c19169055388080610832565b9293602060018192878601518155019501930161081c565b60016000529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c810191602085106108d7575b90601f859493920160051c01905b8181106108c85750610105565b600081558493506001016108bb565b90915081906108ad565b634e487b7160e01b600052602260045260246000fd5b91607f16916100f1565b0151905038806100b8565b60008080528281209350601f198516905b81811061095a5750908460019594939210610941575b505050811b016000556100ce565b015160001960f88460031b161c19169055388080610933565b9293602060018192878601518155019501930161091d565b600080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f840160051c810191602085106109d7575b90601f859493920160051c01905b8181106109c857506100a1565b600081558493506001016109bb565b90915081906109ad565b91607f169161008d565b600080fd5b601f909101601f19168101906001600160401b0382119082101761023d57604052565b51906001600160a01b03821682036109eb57565b60405190610a366040836109f0565b60078252661313d3d413919560ca1b6020830152565b6000198114610a5b5760010190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff6000199116019063ffffffff8211610a5b57565b9092919263ffffffff811680151580610c02575b15610b315750906000805160206147c28339815191529260409260018060a01b038316600052600e60205263ffffffff610adb8560002092610a71565b1660009081526020919091528390208054600160801b600160c01b031916608083901b600160801b600160c01b03161790555b82516000196001851b019586168152941660208501526001600160a01b031692a2565b604080519392508301906001600160401b0382118483101761023d5760409182526001600160801b0343811685526001600160401b03861660208087019182526001600160a01b0386166000818152600e8352868120868252909252949020955186549151600160801b600160c01b0360809190911b1692166001600160c01b03199091161717909355916001019263ffffffff8411610a5b576000805160206147c283398151915293604093600052600f60205263ffffffff84600020911663ffffffff19825416179055610b0e565b506001600160a01b0383166000908152600e6020526040902063ffffffff610c2984610a71565b16600052602052604060002060018060801b039054164314610a9e565b6001600160a01b03168015610c6657600052600360205260406000205490565b6322718ad960e21b600052600060045260246000fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146120de5750806304bb0ec3146120c057806306fdde031461201b578063081812fc14611fdd578063095ea7b314611eee5780631184ce3914611ec957806318160ddd14611eab57806318aa244514611cf657806323b872dd14611cdf5780632f745c5914611cb857806342842e0e14611c885780634cf088d914611c5f5780634f6ccce714611c0e57806355f804b314611a745780636352211e14611a445780636c0360eb146119ae5780636fcfff451461196e57806370a0823114611943578063715018a6146118e6578063718b5f28146118ac578063782d6fe1146118855780638da5cb5b1461185c57806395d89b411461178f5780639dc29fac146113b2578063a144819414610e48578063a22cb46514610da7578063b4b5ea5714610d16578063b88d4fde14610ca9578063c4c2e70214610b7d578063c87b56dd146108e4578063c9319268146107fe578063e067da4d14610768578063e985e9c51461070d578063f1127ed814610698578063f2fde38b1461060e578063f86c135b14610239578063fc0c546a146102105763fe476686146101c157600080fd5b3461020b57602036600319011261020b576101e26101dd6121f1565b612995565b60405160058210156101f5576020918152f35b634e487b7160e01b600052602160045260246000fd5b600080fd5b3461020b57600036600319011261020b57600c546040516001600160a01b039091168152602090f35b3461020b5760c036600319011261020b576102526121c5565b61025a6121db565b604435916001600160601b0383169283810361020b57606435916001600160401b0383169485840361020b576084356001600160401b03811680910361020b5760a435966001600160401b0388169283890361020b57600160005260026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0546001600160a01b031680156105f8573314158061059e575b61058d57600c546001600160a01b0395861695168514158061056f575b61055e57600d546040516305977be960e21b815290602090829060049082906000906001600160a01b03165af1801561055257600090610516575b697f0e10af47c1c7000000915010610505574382106104f5578183106104e45763ffffffff7f9325a73e0d2f272110a534dae97f0bce81ac9b16b987ef027d1f6a5d70e0870b976101009760209b6103a5601054612986565b928360105584841660005260118e5260038d60406000209060028201968754908960a01b9060a01b16908960a01b1916178755600182018d6001600160601b0360a01b82541617905560018060a01b03166001600160601b0360a01b87541617865560018060a01b0333166001600160601b0360a01b82541617815501926bffffffffffffffffffffffff60401b84549160401b16906bffffffffffffffffffffffff60401b19161783558354906001600160401b0360c01b9060c01b169060018060c01b0316178355866001600160401b03198354161782558154906001600160401b0360a01b9060a01b16906001600160401b0360a01b19161790555460a01c169760405195898752338b880152604087015260018060a01b03166060860152608085015260a084015260c083015260e0820152a1604051908152f35b637c13a23360e11b60005260046000fd5b62cd9cef60e61b60005260046000fd5b6392c729a360e01b60005260046000fd5b506020813d60201161054a575b8161053060209383612268565b8101031261020b57697f0e10af47c1c7000000905161034c565b3d9150610523565b6040513d6000823e3d90fd5b630aaff25360e41b60005260046000fd5b507355d398326f99059ff775485246999027b3197955851415610311565b63793c003560e01b60005260046000fd5b50600260008190526020527f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c546001600160a01b031680156105e2573314156102f4565b637e27328960e01b600052600260045260246000fd5b637e27328960e01b600052600160045260246000fd5b3461020b57602036600319011261020b576106276121c5565b61062f612a88565b6001600160a01b0316801561068257600b80546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b631e4fbdf760e01b600052600060045260246000fd5b3461020b57604036600319011261020b576106b16121c5565b6024359063ffffffff8216820361020b5760018060a01b0316600052600e60205263ffffffff60406000209116600052602052604080600020546001600160401b038251916001600160801b038116835260801c166020820152f35b3461020b57604036600319011261020b576107266121c5565b61072e6121db565b9060018060a01b0316600052600560205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461020b57604036600319011261020b576107816121f1565b63ffffffff61078e6121db565b916000602060405161079f8161224d565b828152015216600052601160205260056040600020019060018060a01b03166000526020526040806000206001600160401b038251916107de8361224d565b54816020818316948581520191851c168152835192835251166020820152f35b3461020b57602036600319011261020b5763ffffffff61081c6121f1565b166000526011602052610160604060002060ff60018060a01b03825416916001600160401b0360018060a01b036001830154169160028101546004600383015492015493604051968752602087015260018060a01b038116604087015263ffffffff8160a01c16606087015260c01c608086015281811660a08601526001600160601b038160401c1660c086015260a01c1660e08401526001600160401b0381166101008401526001600160401b038160401c1661012084015260801c161515610140820152f35b3461020b57602036600319011261020b57600260043511610b765760015b60145461090e816122db565b60009015610b5a575081908260009372184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015610b34575b50806d04ee2d6d415b85acef8100000000600a921015610b19575b662386f26fc10000811015610b05575b6305f5e100811015610af4575b612710811015610ae5575b6064811015610ad7575b1015610acd575b6001830191600a60216109bb6109a586612289565b956109b36040519788612268565b808752612289565b602086019690601f19013688378501015b60001901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530480156109fb57600a90916109cc565b505060405191600091610a0d816122db565b9060018116908115610aa95750600114610a61575b5081610a4992610a3a610a5d9686945193849161217d565b0103601f198101835282612268565b6040519182916020835260208301906121a0565b0390f35b9091506014600052600080516020612dea8339815191526000905b828210610a93575050820160200190610a5d610a22565b6001816020925483858901015201910190610a7c565b60ff191660208087019190915282151590920285019091019250610a5d9050610a22565b9160010191610990565b606460029104940193610989565b6127106004910494019361097f565b6305f5e10060089104940193610974565b662386f26fc1000060109104940193610967565b6d04ee2d6d415b85acef810000000060209104940193610957565b6040945072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b90049050600a61093c565b604051610a5d93509150610b6f602083612268565b8152610a49565b6003610902565b3461020b57602036600319011261020b57610b966121f1565b610b9f81612995565b60058110156101f557600303610c985763ffffffff16600081815260116020908152604080832060048101805460ff60801b1916600160801b17905560018101546002820154600390920154835163a9059cbb60e01b8187019081526001600160a01b0394851660248301529190941c6001600160601b0316604480860191909152845291169391610c32606482612268565b519082855af115610552576000513d610c8f5750803b155b610c7b577f0d378b377568bcf157a5c97d29997c777d897fa93aedb1f9e73ea831eb7f2d57602083604051908152a1005b635274afe760e01b60005260045260246000fd5b60011415610c4a565b63decb39dd60e01b60005260046000fd5b3461020b57608036600319011261020b57610cc26121c5565b610cca6121db565b90604435606435926001600160401b03841161020b573660238501121561020b57610d02610d149436906024816004013591016122a4565b92610d0e838383612353565b33612ab1565b005b3461020b57602036600319011261020b576001600160a01b03610d376121c5565b166000818152600f602052604090205463ffffffff16908115610d9c57600052600e60205263ffffffff610d6f60406000209261276a565b1660005260205260206001600160401b0360406000205460801c165b6001600160401b0360405191168152f35b505060206000610d8b565b3461020b57604036600319011261020b57610dc06121c5565b610dc8612204565b6001600160a01b03909116908115610e335733600052600560205260406000208260005260205260406000209015159060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b3461020b57604036600319011261020b57610e616121c5565b600d5460243591906001600160a01b0316330361020b576001600160a01b038116919060209083159081159060005b858110610e9957005b610ea4601354612986565b908160135560405194610eb78787612268565b6000865261139c5760008281526002875260408120549095906001600160a01b03168015801591908783611366575b61134f575b85895260028a526040892080546001600160a01b0319168d179055858c837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c80a4156112d95760085485895260098a528060408a2055600160401b8110156112c55785610f62826001610f7b9401600855612703565b90919082549060031b91821b91600019901b1916179055565b878b8203611275575b60038610156110dc575b50506110c6578690843b610fa9575b50506001915001610e90565b610fe392936040519384928392630a85bd0160e11b84523360048501526000602485015260448401526080606484015260848301906121a0565b038160008c5af18091600091611081575b509061104b5787863d15611044573d61100c81612289565b9061101a6040519283612268565b81523d60008383013e5b805191826110415783633250574960e11b60005260045260246000fd5b01fd5b6060611024565b6001600160e01b03191663757a42ff60e11b0161106c576001908589610f9d565b86633250574960e11b60005260045260246000fd5b8781813d83116110bf575b6110968183612268565b810103126110bb5751906001600160e01b0319821682036110b8575089610ff4565b80fd5b5080fd5b503d61108c565b6339e3563760e11b600052600060045260246000fd5b878061126e575b61125f5787838d8c8186141580611257575b839061113b575b505050611121575b15610f8e57808c6040925260128b5220600181540190558b610f8e565b5081815260128a5260408120805460001901905587611104565b6111bc575b8361114c575b826110fc565b816111ad928652600f825263ffffffff604087205416918215156000146111b457600e918752528d604086209063ffffffff6111878461276a565b168752526001600160401b03604086205460801c165b6111a681612315565b918c612bee565b8d8c611146565b50508461119d565b50505082825250600f8a52604081205463ffffffff16801561125157828252600e8b526040822063ffffffff6111f18361276a565b1683528b526001600160401b03604083205460801c165b6000196001600160401b03821601916001600160401b03831161123d578c8f916112378d95899587938a612bee565b50611140565b634e487b7160e01b84526011600452602484fd5b81611208565b5060016110f5565b63cc7744d560e01b8152600490fd5b50826110e3565b61127e87612734565b60001981019081116112b1578c825260068b52604082208183528b5286604083205586825260078b526040822055610f84565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b89526041600452602489fd5b808b14610f7b576112e981612734565b85895260078a52604089205490828a5260068b5260408a2091818103611327575b50868a5260078b5289604081205589528952876040812055610f7b565b818b52828c5260408b2054818c52838d528060408d20558b5260078c5260408b20558d61130a565b8b895260038a526040892060018154019055610eeb565b50600086815260046020526040902080546001600160a01b031916905581895260038a5260408920805460001901905587610ee6565b633250574960e11b600052600060045260246000fd5b3461020b57604036600319011261020b576113cb6121c5565b600d5460243591906001600160a01b0316330361020b576001600160a01b038116600090815260126020526040902054821161177e5761140a81612734565b906000905b828210611431575b50505061142057005b6362b851a760e01b60005260046000fd5b90919261143e83836126af565b6003811080159061176b576000828152600260205260408120546001600160a01b031680159290919083159081611736575b85835260026020526040832080546001600160a01b03191690558583857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a48185156116bb57506008548684526009602052806040852055600160401b8110156116a75786610f628260016114ea9401600855612703565b600854600019810190811161123d57868452600960205261150f604085205491612703565b90549060031b1c61152381610f6284612703565b84526009602052604084205585835260096020528260408120556008548015611693576000190161155381612703565b8154906000199060031b1b191690556008556115ba575b5050506115a657508015611590576000190192831561158b575b919061140f565b611417565b634e487b7160e01b600052601160045260246000fd5b637e27328960e01b60005260045260246000fd5b80808061168b575b6115ed575b506115d3575b8061156a565b8181526012602052604090208054600019019055876115cd565b6115f8575b806115c7565b828252600f602052604082205463ffffffff16801561168557838352600e6020526040832063ffffffff61162b8361276a565b1684526020526001600160401b03604084205460801c165b6000196001600160401b03821601916001600160401b038311611671579061166c929186612bee565b6115f2565b634e487b7160e01b85526011600452602485fd5b82611643565b5060016115c2565b634e487b7160e01b84526031600452602484fd5b634e487b7160e01b84526041600452602484fd5b156114ea576116c984612734565b86845260076020526040842054908585526006602052604085209181810361170b575b50878552600760205284604081205584526020528260408120556114ea565b818652826020526040862054818752836020528060408820558652600760205260408620558c6116ec565b600086815260046020526040902080546001600160a01b03191690558383526003602052604083208054600019019055611470565b5050929161177890612986565b91611584565b633f8e9bbb60e01b60005260046000fd5b3461020b57600036600319011261020b5760405160006001546117b1816122db565b808452906001811690811561183857506001146117d9575b610a5d83610a4981850382612268565b600160009081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b80821061181e57509091508101602001610a496117c9565b919260018160209254838588010152019101909291611806565b60ff191660208086019190915291151560051b84019091019150610a4990506117c9565b3461020b57600036600319011261020b57600b546040516001600160a01b039091168152602090f35b3461020b57604036600319011261020b576020610d8b6118a36121c5565b6024359061279d565b3461020b57602036600319011261020b576001600160a01b036118cd6121c5565b1660005260126020526020604060002054604051908152f35b3461020b57600036600319011261020b576118ff612a88565b600b80546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461020b57602036600319011261020b5760206119666119616121c5565b612734565b604051908152f35b3461020b57602036600319011261020b576001600160a01b0361198f6121c5565b16600052600f602052602063ffffffff60406000205416604051908152f35b3461020b57600036600319011261020b5760405160006014546119d0816122db565b808452906001811690811561183857506001146119f757610a5d83610a4981850382612268565b60146000908152600080516020612dea833981519152939250905b808210611a2a57509091508101602001610a496117c9565b919260018160209254838588010152019101909291611a12565b3461020b57602036600319011261020b576020611a62600435612a65565b6040516001600160a01b039091168152f35b3461020b57602036600319011261020b576004356001600160401b03811161020b573660238201121561020b57611ab59036906024816004013591016122a4565b611abd612a88565b80516001600160401b038111611bf857611ad86014546122db565b601f8111611b8b575b50602091601f8211600114611b1f57918192600092611b14575b5050600019600383901b1c191660019190911b17601455005b015190508280611afb565b601f198216926014600052600080516020612dea8339815191529160005b858110611b7357508360019510611b5a575b505050811b01601455005b015160001960f88460031b161c19169055828080611b4f565b91926020600181928685015181550194019201611b3d565b6014600052601f820160051c600080516020612dea833981519152019060208310611be2575b601f0160051c600080516020612dea83398151915201905b818110611bd65750611ae1565b60008155600101611bc9565b600080516020612dea8339815191529150611bb1565b634e487b7160e01b600052604160045260246000fd5b3461020b57602036600319011261020b57600435600854811015611c4657611c37602091612703565b90549060031b1c604051908152f35b63295f44f760e21b600052600060045260245260446000fd5b3461020b57600036600319011261020b57600d546040516001600160a01b039091168152602090f35b3461020b57610d14611c9936612213565b9060405192611ca9602085612268565b60008452610d0e838383612353565b3461020b57604036600319011261020b576020611966611cd66121c5565b602435906126af565b3461020b57610d14611cf036612213565b91612353565b3461020b57604036600319011261020b57611d0f6121f1565b611d17612204565b90611d2181612995565b60058110156101f557600103611e9a5763ffffffff16908160005260116020526040600020916040600060018060a01b0333168152600585016020522080546001600160401b0381161590811591611e84575b50611e7357836080936001600160401b0392611db860027fced2c99f5cc77b368c6871db33adb636072257ac975265e3bf476de5a01e396998015460c01c3361279d565b92838315611e03575060040184611dd28582845416612333565b16851982541617905583831684198254161790555b60405193338552602085015215156040840152166060820152a1005b9091611e466004611e6e9401611e1f8489835460401c16612333565b67ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b9067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b611de7565b637c9a1cf960e01b60005260046000fd5b6001600160401b03915060401c16151585611d74565b63eddec69960e01b60005260046000fd5b3461020b57600036600319011261020b576020600854604051908152f35b3461020b57600036600319011261020b576020604051697f0e10af47c1c70000008152f35b3461020b57604036600319011261020b57611f076121c5565b602435611f1381612a65565b33151580611fca575b80611f9c575b611f875781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506001600160a01b038116600090815260056020908152604080832033845290915290205460ff1615611f22565b506001600160a01b038116331415611f1c565b3461020b57602036600319011261020b57600435611ffa81612a65565b506000526004602052602060018060a01b0360406000205416604051908152f35b3461020b57600036600319011261020b576040516000805461203c816122db565b8084529060018116908115611838575060011461206357610a5d83610a4981850382612268565b60008080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b8082106120a657509091508101602001610a496117c9565b91926001816020925483858801015201910190929161208e565b3461020b57600036600319011261020b576020601054604051908152f35b3461020b57602036600319011261020b576004359063ffffffff60e01b821680920361020b57602091632483248360e11b8114908115612120575b5015158152f35b63780e9d6360e01b81149150811561213a575b5083612119565b6380ac58cd60e01b81149150811561216c575b811561215b575b5083612133565b6301ffc9a760e01b14905083612154565b635b5e139f60e01b8114915061214d565b60005b8381106121905750506000910152565b8181015183820152602001612180565b906020916121b98151809281855285808601910161217d565b601f01601f1916010190565b600435906001600160a01b038216820361020b57565b602435906001600160a01b038216820361020b57565b6004359063ffffffff8216820361020b57565b60243590811515820361020b57565b606090600319011261020b576004356001600160a01b038116810361020b57906024356001600160a01b038116810361020b579060443590565b604081019081106001600160401b03821117611bf857604052565b90601f801991011681019081106001600160401b03821117611bf857604052565b6001600160401b038111611bf857601f01601f191660200190565b9291926122b082612289565b916122be6040519384612268565b82948184528183011161020b578281602093846000960137010152565b90600182811c9216801561230b575b60208310146122f557565b634e487b7160e01b600052602260045260246000fd5b91607f16916122ea565b6001600160401b036001911601906001600160401b03821161159057565b906001600160401b03809116911601906001600160401b03821161159057565b9091906001600160a01b038316801561139c576000838152600260205260408120546001600160a01b03169490919033151580612620575b508515801590816125eb575b83855260036020526040852060018154019055868552600260205260408520846001600160601b0360a01b8254161790558684897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8880a41561256e576008548685526009602052806040862055600160401b81101561255a5786610f628260016124259401600855612703565b82870361251b575b6003861015612469575b5050505060018060a01b031680830361244f57505050565b6364283d7b60e01b60005260045260245260445260646000fd5b61250c5790604092918187141580612504575b61249a575b5081526012602052206001815401905538808080612437565b818352600f602052838320546124f7919063ffffffff1680156124fd57838552600e60205285852063ffffffff6124d08361276a565b1686526020526001600160401b038686205460801c16905b6124f182612315565b92612bee565b38612481565b84906124e8565b50600161247c565b63cc7744d560e01b8352600483fd5b61252482612734565b6000198101908111611671578385526006602052604085208186526020528660408620558685526007602052604085205561242d565b634e487b7160e01b85526041600452602485fd5b8683146124255761257e87612734565b8685526007602052604085205490888652600660205260408620918181036125c0575b5087865260076020528560408120558552602052836040812055612425565b81875282602052604087205481885283602052806040892055875260076020526040872055386125a1565b600087815260046020526040902080546001600160a01b03191690558785526003602052604085208054600019019055612397565b80612660575b15612631573861238b565b84838761264a57602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b50338614801561268e575b806126265750848352600460205260408320546001600160a01b03163314612626565b5085835260056020908152604080852033865290915283205460ff1661266b565b6126b881612734565b8210156126e45760018060a01b0316600052600660205260406000209060005260205260406000205490565b63295f44f760e21b60005260018060a01b031660045260245260446000fd5b60085481101561271e57600860005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0316801561275457600052600360205260406000205490565b6322718ad960e21b600052600060045260246000fd5b63ffffffff6000199116019063ffffffff821161159057565b9063ffffffff8091169116039063ffffffff821161159057565b438211612975576001600160a01b03166000818152600f602052604090205463ffffffff169182156129355781600052600e602052604060002063ffffffff6127e58561276a565b16600052602052806001600160801b0360406000205416111561293d5781600052600e602052604060002060008052602052806001600160801b03604060002054161161293557919061283960009261276a565b925b63ffffffff831663ffffffff8516116128815750909150600052600e60205263ffffffff604060002091166000526020526001600160401b0360406000205460801c1690565b61289d637fffffff6128938587612783565b60011c1685612783565b82600052600e60205260408060002060009063ffffffff841682526020522093604051946128ca8661224d565b54946001600160401b0360206001600160801b03881692838152019660801c16865283811460001461290a5750505050506001600160401b039150511690565b8394955092909192106000146129255750925b92919061283b565b93506129309061276a565b61291d565b505050600090565b50600052600e60205263ffffffff61295960406000209261276a565b166000526020526001600160401b0360406000205460801c1690565b63327b4e9760e11b60005260046000fd5b60001981146115905760010190565b63ffffffff60105491168091108015612a5d575b612a4c5760005260116020526040600020600281015460c01c43106000146129d15750600090565b6003810154906001600160401b03821643116129ee575050600190565b60040154906001600160401b0382166001600160401b038360401c16811191821592612a36575b505015612a225750600290565b60801c60ff16612a3157600390565b600490565b60a01c6001600160401b03161190503880612a15565b630992f7ad60e01b60005260046000fd5b5080156129a9565b6000818152600260205260409020546001600160a01b03169081156115a6575090565b600b546001600160a01b03163303612a9c57565b63118cdaa760e01b6000523360045260246000fd5b823b612abf575b5050505050565b604051630a85bd0160e11b81526001600160a01b039182166004820152918116602483015260448201939093526080606482015291169160209082908190612b0b9060848301906121a0565b03816000865af18091600091612bab575b5090612b7557503d15612b6e573d612b3381612289565b90612b416040519283612268565b81523d6000602083013e5b80519081612b695782633250574960e11b60005260045260246000fd5b602001fd5b6060612b4c565b6001600160e01b03191663757a42ff60e11b01612b9757503880808080612ab8565b633250574960e11b60005260045260246000fd5b6020813d602011612be6575b81612bc460209383612268565b810103126110bb5751906001600160e01b0319821682036110b8575038612b1c565b3d9150612bb7565b9092919263ffffffff811680151580612da5575b15612ca85750906001600160401b037fdb394ac820cd11718d8d9e27930684c08bebecd2ae9cd879806fc8decbc867a69360409360018060a01b038416600052600e60205263ffffffff612c59866000209261276a565b166000908152602091909152849020805467ffffffffffffffff60801b1916608083901b67ffffffffffffffff60801b161790555b835195821686521660208501526001600160a01b031692a2565b919050600160405192612cba8461224d565b6001600160801b0343168452612d4660208501946001600160401b03871686526001600160401b03848060a01b0386169687600052600e6020526001600160801b03604080600020600090888252602052209351166001600160801b031984541617835551168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b019163ffffffff8311611590577fdb394ac820cd11718d8d9e27930684c08bebecd2ae9cd879806fc8decbc867a6936040936001600160401b0392600052600f60205263ffffffff85600020911663ffffffff19825416179055612c8e565b506001600160a01b0383166000908152600e6020526040902063ffffffff612dcc8461276a565b166000526020526001600160801b03604060002054164314612c0256fece6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4eca264697066735822122085f54a6ce3849b580071cb4eace3f866c0559c1d9f2794ba31a86a359ae7ed1264736f6c634300081c003360803461010b57601f610d0638819003918201601f19168301916001600160401b038311848410176101105780849260609460405283398101031261010b5761004781610126565b9061005460208201610126565b906001600160a01b039061006a90604001610126565b169182156100f557600080546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600180546001600160a01b039283166001600160a01b03199182161790915560028054939092169216919091179055610bcb908161013b8239f35b631e4fbdf760e01b600052600060045260246000fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361010b5756fe608080604052600436101561001357600080fd5b600090813560e01c9081630698607d14610a3457508063121d8fdd14610a16578063165defa4146109f85780631be05289146109da5780632e17de78146107b8578063314f34811461077f5780633ccfd60b1461064057806347ccca02146106175780635325bef2146105de578063715018a61461058457806382b0cb601461054b5780638da5cb5b1461052457806391ae7bcb146104eb578063924cc9de146104c75780639c3b6638146104ab578063a694fc3a146102a9578063b3cde6f71461024d578063ce513b6f146101ae578063f2fde38b146101285763fc0c546a146100fd57600080fd5b346101255780600319360112610125576001546040516001600160a01b039091168152602090f35b80fd5b503461012557602036600319011261012557610142610a50565b61014a610b05565b6001600160a01b0316801561019a5781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5034610125576020366003190112610125576001600160a01b036101d0610a50565b1680825260076020526040808320928092815260086020522054918054905b818410610202575b602083604051908152f35b90916213c68061022060016102178786610a6b565b50015442610a9d565b106102475761023d6001916102358685610a6b565b505490610af8565b93019291906101ef565b916101f7565b503461012557604036600319011261012557610267610a50565b6001600160a01b03168152600760205260408120805460243592908310156101255760406102958484610a6b565b506001815491015482519182526020820152f35b50346101255760203660031901126101255760043590686c6b935b8bbd400000820661049c57686c6b935b8bbd4000008204801561049857600254604051630e316be560e31b8152336004820152906020908290602490829087906001600160a01b03165af190811561048d578391610455575b5061032a60059183610af8565b1161044657819261037660018060a01b0360015416604051906323b872dd60e01b602083015233602483015230604483015283606483015260648252610371608483610ac0565b610b2e565b33835260046020526040832061038d828254610af8565b905533835260056020524260408420556103a981600354610af8565b6003556040519081524260208201527f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b660403392a26002546001600160a01b0316803b1561044257604051632851206560e21b8152336004820152602481019290925282908290604490829084905af18015610437576104265750f35b8161043091610ac0565b6101255780f35b6040513d84823e3d90fd5b5050fd5b633de174c760e11b8252600482fd5b90506020813d602011610485575b8161047060209383610ac0565b81010312610481575161032a61031d565b8280fd5b3d9150610463565b6040513d85823e3d90fd5b5080fd5b6380abb04160e01b8152600490fd5b5034610125578060031936011261012557602060405160058152f35b50346101255780600319360112610125576020604051686c6b935b8bbd4000008152f35b5034610125576020366003190112610125576020906040906001600160a01b03610513610a50565b168152600783522054604051908152f35b5034610125578060031936011261012557546040516001600160a01b039091168152602090f35b5034610125576020366003190112610125576020906040906001600160a01b03610573610a50565b168152600483522054604051908152f35b503461012557806003193601126101255761059d610b05565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610125576020366003190112610125576020906040906001600160a01b03610606610a50565b168152600883522054604051908152f35b50346101255780600319360112610125576002546040516001600160a01b039091168152602090f35b50346101255780600319360112610125573381526007602052604081208190338352600860205260408320549081908054905b818410610744575b505033845260086020526040842082905582156107355761069e83600654610a9d565b60065560015460405163a9059cbb60e01b6020820152336024820152604480820186905281526106dc916001600160a01b0316610371606483610ac0565b600019820191821161072157604051928352602083015260408201527f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca9460603392a280f35b634e487b7160e01b84526011600452602484fd5b631690ca8360e11b8452600484fd5b9092936213c68061075a60016102178886610a6b565b106107785761076f6001916102358785610a6b565b94019290610673565b939261067b565b5034610125576020366003190112610125576020906040906001600160a01b036107a7610a50565b168152600583522054604051908152f35b50346101255760203660031901126101255760043590686c6b935b8bbd400000820661049c573381526004602052816040822054106109cb57338152600560205260408120541580156109aa575b61099b57686c6b935b8bbd40000082048015610498576002546001600160a01b031690813b1561048157604051632770a7eb60e21b815233600482015260248101919091529082908290604490829084905af180156104375761098b575b509033825260046020526040822061087d828254610a9d565b905561088b81600354610a9d565b60035561089a81600654610af8565b600655338252600760205260408220604051906040820182811067ffffffffffffffff8211176109775760405282825260208201906fffffffffffffffffffffffffffffffff4216825280549068010000000000000000821015610963579061090891600182018155610a6b565b92909261094f5790600191518355519101556040519081524260208201527ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb28060403392a280f35b634e487b7160e01b85526004859052602485fd5b634e487b7160e01b86526041600452602486fd5b634e487b7160e01b85526041600452602485fd5b8161099591610ac0565b38610864565b630f393f2d60e21b8152600490fd5b50338152600560205262d987806109c5604083205442610a9d565b10610806565b6392c729a360e01b8152600490fd5b503461012557806003193601126101255760206040516213c6808152f35b50346101255780600319360112610125576020600354604051908152f35b5034610125578060031936011261012557602060405162d987808152f35b9050346104985781600319360112610498576020906006548152f35b600435906001600160a01b0382168203610a6657565b600080fd5b8054821015610a875760005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b91908203918211610aaa57565b634e487b7160e01b600052601160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610ae257604052565b634e487b7160e01b600052604160045260246000fd5b91908201809211610aaa57565b6000546001600160a01b03163303610b1957565b63118cdaa760e01b6000523360045260246000fd5b906000602091828151910182855af115610b89576000513d610b8057506001600160a01b0381163b155b610b5f5750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b60011415610b58565b6040513d6000823e3d90fdfea2646970667358221220fdee30eda4c95618f5f88990f327e3fc0d52c083ce2d5a64b2b646ce76e2ea7464736f6c634300081c0033db394ac820cd11718d8d9e27930684c08bebecd2ae9cd879806fc8decbc867a6000000000000000000000000add33685cf883dfcdcc223619875953cfc5831ba000000000000000000000000cd6d848adedddb439ae8aad43c4b4a9a20da190500000000000000000000000080c4b8090cb8007fbb002eb36454d67a2fedfd15000000000000000000000000f7a47ce68aa0fc3127fbca8a8a83e7a8d75d8a02