0 txs
0 calls
constructor
constructor(string name_, address timelock_, address _esLBR)
functions
BALLOT_TYPEHASH
viewfunction BALLOT_TYPEHASH() view returns (bytes32)
CLOCK_MODE
viewfunction CLOCK_MODE() view returns (string)
clock
viewfunction clock() view returns (uint48)
COUNTING_MODE
viewfunction COUNTING_MODE() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
esLBR
viewfunction esLBR() view returns (address)
EXTENDED_BALLOT_TYPEHASH
viewfunction EXTENDED_BALLOT_TYPEHASH() view returns (bytes32)
getReceipt
viewfunction getReceipt(uint256 proposalId, address account) view returns (bool voted, uint8 support, uint256 votes)
getVotes
viewfunction getVotes(address account, uint256 timepoint) view returns (uint256)
getVotesWithParams
viewfunction getVotesWithParams(address account, uint256 timepoint, bytes params) view returns (uint256)
GovernanceTimelock
viewfunction GovernanceTimelock() view returns (address)
hashProposal
purefunction hashProposal(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) pure returns (uint256)
hasVoted
viewfunction hasVoted(uint256 proposalId, address account) view returns (bool)
name
viewfunction name() view returns (string)
proposalData
viewfunction proposalData(uint256) view returns (uint256 totalVotes)
proposalDeadline
viewfunction proposalDeadline(uint256 proposalId) view returns (uint256)
proposalEta
viewfunction proposalEta(uint256 proposalId) view returns (uint256)
proposalProposer
viewfunction proposalProposer(uint256 proposalId) view returns (address)
proposals
viewfunction proposals(uint256 proposalId) view returns (uint256 id, address proposer, uint256 eta, uint256 startBlock, uint256 endBlock, uint256 forVotes, uint256 againstVotes, uint256 abstainVotes, bool canceled, bool executed)
proposalSnapshot
viewfunction proposalSnapshot(uint256 proposalId) view returns (uint256)
proposalThreshold
purefunction proposalThreshold() pure returns (uint256)
quorum
viewfunction quorum(uint256 timepoint) view returns (uint256)
quorumDenominator
viewfunction quorumDenominator() view returns (uint256)
quorumNumerator
viewfunction quorumNumerator() view returns (uint256)
state
viewfunction state(uint256 proposalId) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
timelock
viewfunction timelock() view returns (address)
version
viewfunction version() view returns (string)
votingDelay
purefunction votingDelay() pure returns (uint256)
votingPeriod
purefunction votingPeriod() pure returns (uint256)
cancel
nonpayablefunction cancel(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
castVote
nonpayablefunction castVote(uint256 proposalId, uint8 support) returns (uint256)
castVoteBySig
nonpayablefunction castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) returns (uint256)
castVoteWithReason
nonpayablefunction castVoteWithReason(uint256 proposalId, uint8 support, string reason) returns (uint256)
castVoteWithReasonAndParams
nonpayablefunction castVoteWithReasonAndParams(uint256 proposalId, uint8 support, string reason, bytes params) returns (uint256)
castVoteWithReasonAndParamsBySig
nonpayablefunction castVoteWithReasonAndParamsBySig(uint256 proposalId, uint8 support, string reason, bytes params, uint8 v, bytes32 r, bytes32 s) returns (uint256)
execute
payablefunction execute(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) payable returns (uint256)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
propose
nonpayablefunction propose(address[] targets, uint256[] values, bytes[] calldatas, string description) returns (uint256)
queue
nonpayablefunction queue(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
relay
payablefunction relay(address target, uint256 value, bytes data) payable
updateQuorumNumerator
nonpayablefunction updateQuorumNumerator(uint256 newQuorumNumerator)
updateTimelock
nonpayablefunction updateTimelock(address newTimelock)
events
EIP712DomainChanged
event EIP712DomainChanged()
ProposalCanceled
event ProposalCanceled(uint256 proposalId)
ProposalCreated
event ProposalCreated(uint256 proposalId, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 voteStart, uint256 voteEnd, string description)
ProposalExecuted
event ProposalExecuted(uint256 proposalId)
ProposalQueued
event ProposalQueued(uint256 proposalId, uint256 eta)
QuorumNumeratorUpdated
event QuorumNumeratorUpdated(uint256 oldQuorumNumerator, uint256 newQuorumNumerator)
TimelockChange
event TimelockChange(address oldTimelock, address newTimelock)
VoteCast
event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)
VoteCastWithParams
event VoteCastWithParams(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason, bytes params)
errors
Empty
error Empty()
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
creation bytecode
0x610160604052610190600a553480156200001857600080fd5b5060405162004643380380620046438339810160408190526200003b91620002e0565b8183806200005d6040805180820190915260018152603160f81b602082015290565b620000786000836200017f60201b62001d131790919060201c565b61012052620000958160016200017f602090811b62001d1317901c565b61014052815160208084019190912060e052815190820120610100524660a0526200012360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05260026200013a82826200044e565b5062000148905081620001cf565b50600880546001600160a01b039283166001600160a01b031991821617909155600980549390921692169190911790555062000574565b60006020835110156200019f57620001978362000238565b9050620001c9565b82620001b6836200028460201b62001d441760201c565b90620001c390826200044e565b5060ff90505b92915050565b600654604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b600080829050601f815111156200026f578260405163305a27a960e01b81526004016200026691906200051a565b60405180910390fd5b80516200027c826200054f565b179392505050565b90565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002ba578181015183820152602001620002a0565b50506000910152565b80516001600160a01b0381168114620002db57600080fd5b919050565b600080600060608486031215620002f657600080fd5b83516001600160401b03808211156200030e57600080fd5b818601915086601f8301126200032357600080fd5b81518181111562000338576200033862000287565b604051601f8201601f19908116603f0116810190838211818310171562000363576200036362000287565b816040528281528960208487010111156200037d57600080fd5b620003908360208301602088016200029d565b8097505050505050620003a660208501620002c3565b9150620003b660408501620002c3565b90509250925092565b600181811c90821680620003d457607f821691505b602082108103620003f557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200044957600081815260208120601f850160051c81016020861015620004245750805b601f850160051c820191505b81811015620004455782815560010162000430565b5050505b505050565b81516001600160401b038111156200046a576200046a62000287565b62000482816200047b8454620003bf565b84620003fb565b602080601f831160018114620004ba5760008415620004a15750858301515b600019600386901b1c1916600185901b17855562000445565b600085815260208120601f198616915b82811015620004eb57888601518255948401946001909101908401620004ca565b50858210156200050a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200053b8160408501602087016200029d565b601f01601f19169190910160400192915050565b80516020808301519190811015620003f55760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051614074620005cf600039600061193a015260006119100152600061291e015260006128f6015260006128510152600061287b015260006128a501526140746000f3fe6080604052600436106102765760003560e01c80637b3c71d31161014f578063b58131b0116100c1578063dd4e2ba51161007a578063dd4e2ba5146108d5578063deaaa7cc1461091b578063e23a9a521461094f578063eb9019d4146109c4578063f23a6e61146109e4578063f8ce560a14610a1057600080fd5b8063b58131b014610802578063bc197c811461081f578063c01f9e371461084b578063c28bc2fa14610884578063c59057e414610897578063d33219b4146108b757600080fd5b80639730875311610113578063973087531461075757806397c3d334146107775780639a802a6d1461078c578063a7713a70146107ac578063a890c910146107c2578063ab58fb8e146107e257600080fd5b80637b3c71d3146106935780637d5e81e2146106b357806384b0196e146106d357806391ddadf4146106fb57806396dea9361461072757600080fd5b80632fe3e261116101e8578063452115d6116101ac578063452115d6146105d45780634bf5d7e9146105f45780634da420061461060957806354fd4d501461062957806356781388146106535780635f398a141461067357600080fd5b80632fe3e2611461051e5780633932abb1146105525780633bccf4fd146105675780633e4f49e61461058757806343859632146105b457600080fd5b806306fdde031161023a57806306fdde03146103fa578063143489d01461041c578063150b7a0214610471578063160cbed7146104b55780632656227d146104d55780632d63f693146104e857600080fd5b8063013cf08b146102f057806301ffc9a71461036b57806302a251a31461039b57806303420181146103ba57806306f3f9e6146103da57600080fd5b366102eb573061028e6006546001600160a01b031690565b6001600160a01b0316146102e95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b3480156102fc57600080fd5b5061031061030b3660046130a8565b610a30565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561037757600080fd5b5061038b6103863660046130c1565b610b0e565b6040519015158152602001610362565b3480156103a757600080fd5b5061c4e05b604051908152602001610362565b3480156103c657600080fd5b506103ac6103d5366004613206565b610b9f565b3480156103e657600080fd5b506102e96103f53660046130a8565b610c97565b34801561040657600080fd5b5061040f610d66565b60405161036291906132f2565b34801561042857600080fd5b506104596104373660046130a8565b600090815260036020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610362565b34801561047d57600080fd5b5061049c61048c36600461331a565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610362565b3480156104c157600080fd5b506103ac6104d03660046134f6565b610df8565b6103ac6104e33660046134f6565b610ff9565b3480156104f457600080fd5b506103ac6105033660046130a8565b6000908152600360205260409020546001600160401b031690565b34801561052a57600080fd5b506103ac7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561055e57600080fd5b506138406103ac565b34801561057357600080fd5b506103ac610582366004613585565b6110eb565b34801561059357600080fd5b506105a76105a23660046130a8565b611161565b60405161036291906135e9565b3480156105c057600080fd5b5061038b6105cf366004613611565b6112ab565b3480156105e057600080fd5b506103ac6105ef3660046134f6565b6112d8565b34801561060057600080fd5b5061040f6113df565b34801561061557600080fd5b50600954610459906001600160a01b031681565b34801561063557600080fd5b506040805180820190915260018152603160f81b602082015261040f565b34801561065f57600080fd5b506103ac61066e366004613641565b611477565b34801561067f57600080fd5b506103ac61068e36600461366d565b6114a0565b34801561069f57600080fd5b506103ac6106ae3660046136f0565b6114ea565b3480156106bf57600080fd5b506103ac6106ce366004613749565b611532565b3480156106df57600080fd5b506106e8611902565b6040516103629796959493929190613838565b34801561070757600080fd5b5061071061198a565b60405165ffffffffffff9091168152602001610362565b34801561073357600080fd5b506103ac6107423660046130a8565b600b6020526000908152604090206002015481565b34801561076357600080fd5b50600854610459906001600160a01b031681565b34801561078357600080fd5b506127106103ac565b34801561079857600080fd5b506103ac6107a736600461389a565b61199a565b3480156107b857600080fd5b506103ac600a5481565b3480156107ce57600080fd5b506102e96107dd3660046138f2565b6119b1565b3480156107ee57600080fd5b506103ac6107fd3660046130a8565b611a5f565b34801561080e57600080fd5b5069152d02c7e14af68000006103ac565b34801561082b57600080fd5b5061049c61083a36600461390f565b63bc197c8160e01b95945050505050565b34801561085757600080fd5b506103ac6108663660046130a8565b6000908152600360205260409020600101546001600160401b031690565b6102e96108923660046139a2565b611af9565b3480156108a357600080fd5b506103ac6108b23660046134f6565b611c2f565b3480156108c357600080fd5b506006546001600160a01b0316610459565b3480156108e157600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e9082015261040f565b34801561092757600080fd5b506103ac7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b34801561095b57600080fd5b506109a561096a366004613611565b6000918252600b602090815260408084206001600160a01b0390931684529190529020805460019091015460ff808316936101009093041691565b60408051931515845260ff909216602084015290820152606001610362565b3480156109d057600080fd5b506103ac6109df3660046139e5565b611c69565b3480156109f057600080fd5b5061049c6109ff366004613a11565b63f23a6e6160e01b95945050505050565b348015610a1c57600080fd5b506103ac610a2b3660046130a8565b611c8a565b6000818152600b6020908152604080832060039092528220548392600160401b9091046001600160a01b0316918190819081908190819081908190600101610a778b611a5f565b60008d815260036020908152604080832080546001918201549185529286905281842054848052828520546002865292852054959e506001600160401b039384169d5092169a509098509650909450610acf8d611161565b90506002816007811115610ae557610ae56135d3565b1493506007816007811115610afc57610afc6135d3565b14925050509193959799509193959799565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480610b5457506001600160e01b0319868116908216145b80610b6b57506001600160e01b0319868116908516145b80610b8657506001600160e01b03198616630271189760e51b145b80610b955750610b9586611d47565b9695505050505050565b600080610c43610c3b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610bdb929190613a79565b60405180910390208b80519060200120604051602001610c20959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611d6c565b868686611d99565b9050610c898a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611db7915050565b9a9950505050505050505050565b600954604051630f1281af60e31b81527faefebe170cbaff0af052a32795af0e1b8afff9850f946ad2869be14f3553437160048201523360248201526001600160a01b03909116906378940d7890604401602060405180830381865afa158015610d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d299190613a89565b610d5a5760405162461bcd60e51b81526020600482015260026024820152614e4160f01b60448201526064016102e0565b610d6381611f0c565b50565b606060028054610d7590613aab565b80601f0160208091040260200160405190810160405280929190818152602001828054610da190613aab565b8015610dee5780601f10610dc357610100808354040283529160200191610dee565b820191906000526020600020905b815481529060010190602001808311610dd157829003601f168201915b5050505050905090565b600080610e0786868686611c2f565b90506004610e1482611161565b6007811115610e2557610e256135d3565b14610e425760405162461bcd60e51b81526004016102e090613ae5565b6006546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb09190613b26565b60065460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790610eea908a908a908a906000908b90600401613bcd565b602060405180830381865afa158015610f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2b9190613b26565b6000838152600760205260408082209290925560065491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091610f76918b918b918b91908b908990600401613c1b565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892828242610fd69190613c89565b604080519283526020830191909152015b60405180910390a15095945050505050565b60008061100886868686611c2f565b9050600061101582611161565b9050600481600781111561102b5761102b6135d3565b148061104857506005816007811115611046576110466135d3565b145b6110645760405162461bcd60e51b81526004016102e090613ae5565b60008281526003602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906110b29084815260200190565b60405180910390a16110c78288888888611fa5565b6110d48288888888612051565b6110e18288888888612121565b5095945050505050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061113990610c3b90608001610c20565b905061115687828860405180602001604052806000815250612164565b979650505050505050565b60008061116d83612190565b90506004816007811115611183576111836135d3565b1461118e5792915050565b600083815260076020526040902054806111a9575092915050565b600654604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190613a89565b15611225575060079392505050565b600654604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190613a89565b156112a1575060059392505050565b5060029392505050565b6000828152600b602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6000806112e786868686611c2f565b905060006112f482611161565b6007811115611305576113056135d3565b146113525760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c0000000060448201526064016102e0565b600081815260036020526040902054600160401b90046001600160a01b0316336001600160a01b0316146113d35760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e63604482015261195b60f21b60648201526084016102e0565b610b95868686866122de565b6060436113ea61198a565b65ffffffffffff161461143f5760405162461bcd60e51b815260206004820152601860248201527f566f7465733a2062726f6b656e20636c6f636b206d6f6465000000000000000060448201526064016102e0565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b60008033905061149884828560405180602001604052806000815250612164565b949350505050565b60008033905061115687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611db7915050565b600080339050610b9586828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061216492505050565b60003361153f8184612390565b61158b5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016102e0565b600061159561198a565b65ffffffffffff16905069152d02c7e14af68000006115b9836109df600185613c9c565b10156116215760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016102e0565b60006116368888888880519060200120611c2f565b905086518851146116595760405162461bcd60e51b81526004016102e090613caf565b855188511461167a5760405162461bcd60e51b81526004016102e090613caf565b60008851116116cb5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016102e0565b6000818152600360205260409020546001600160401b03161561173a5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016102e0565b600061174861384084613c89565b9050600061175861c4e083613c89565b90506040518060e0016040528061176e84612481565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161179b83612481565b6001600160401b039081168252600060208084018290526040808501839052606094850183905288835260038252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561189f5761189f613149565b6040519080825280602002602001820160405280156118d257816020015b60608152602001906001900390816118bd5790505b508d88888f6040516118ec99989796959493929190613cf0565b60405180910390a1509098975050505050505050565b6000606080828080836119357f0000000000000000000000000000000000000000000000000000000000000000836124ed565b6119607f000000000000000000000000000000000000000000000000000000000000000060016124ed565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600061199543612591565b905090565b60006119a78484846125f8565b90505b9392505050565b6006546001600160a01b03163314611a065760405162461bcd60e51b8152602060048201526018602482015277476f7665726e6f723a206f6e6c79476f7665726e616e636560401b60448201526064016102e0565b30611a196006546001600160a01b031690565b6001600160a01b031614611a565760008036604051611a39929190613a79565b604051809103902090505b80611a4f600461266e565b03611a4457505b610d63816126ed565b60065460008281526007602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae09190613b26565b905080600114611af057806119aa565b60009392505050565b6006546001600160a01b03163314611b4e5760405162461bcd60e51b8152602060048201526018602482015277476f7665726e6f723a206f6e6c79476f7665726e616e636560401b60448201526064016102e0565b30611b616006546001600160a01b031690565b6001600160a01b031614611b9e5760008036604051611b81929190613a79565b604051809103902090505b80611b97600461266e565b03611b8c57505b600080856001600160a01b0316858585604051611bbc929190613a79565b60006040518083038185875af1925050503d8060008114611bf9576040519150601f19603f3d011682016040523d82523d6000602084013e611bfe565b606091505b5091509150611c26828260405180606001604052806028815260200161401760289139612756565b50505050505050565b600084848484604051602001611c489493929190613dc7565b60408051601f19818403018152919052805160209091012095945050505050565b60006119aa8383611c8560408051602081019091526000815290565b6125f8565b6000612710600a54600854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cff9190613b26565b611d099190613e12565b6112d29190613e29565b6000602083511015611d2f57611d288361276f565b90506112d2565b81611d3a8482613e96565b5060ff90506112d2565b90565b60006001600160e01b03198216636e665ced60e01b14806112d257506112d2826127ad565b60006112d2611d79612844565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611daa8787878761296f565b915091506110e181612a33565b60008581526003602052604081206001611dd088611161565b6007811115611de157611de16135d3565b14611e3a5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016102e0565b8054600090611e549088906001600160401b0316866125f8565b9050611e638888888488612b7d565b8351600003611eb857866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051611eab9493929190613f55565b60405180910390a2611156565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051611ef9959493929190613f7d565b60405180910390a2979650505050505050565b61271080821115611f5f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642071756f72756d206672616374696f6e2e000000000000000060448201526064016102e0565b600a80549083905560408051828152602081018590527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a1505050565b30611fb86006546001600160a01b031690565b6001600160a01b03161461204a5760005b845181101561204857306001600160a01b0316858281518110611fee57611fee613fc3565b60200260200101516001600160a01b0316036120385761203883828151811061201957612019613fc3565b6020026020010151805190602001206004612d6d90919063ffffffff16565b61204181613fd9565b9050611fc9565b505b5050505050565b600954604051630f1281af60e31b81527faefebe170cbaff0af052a32795af0e1b8afff9850f946ad2869be14f3553437160048201523360248201526001600160a01b03909116906378940d7890604401602060405180830381865afa1580156120bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e39190613a89565b6121145760405162461bcd60e51b81526020600482015260026024820152614e4160f01b60448201526064016102e0565b61204a8585858585612da9565b306121346006546001600160a01b031690565b6001600160a01b03161461204a57600454600f81810b600160801b909204900b131561204a57600060045561204a565b60006121878585858561218260408051602081019091526000815290565b611db7565b95945050505050565b6000818152600360205260408120600281015460ff16156121b45750600792915050565b6002810154610100900460ff16156121cf5750600292915050565b6000838152600360205260408120546001600160401b0316908190036122375760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016102e0565b600061224161198a565b65ffffffffffff16905080821061225d57506000949350505050565b6000858152600360205260409020600101546001600160401b031681811061228b5750600195945050505050565b61229486612e1d565b80156122c157506000868152600b6020908152604080832060018085520190915280822054828052912054105b156122d25750600495945050505050565b50600395945050505050565b6000806122ed86868686612e79565b60008181526007602052604090205490915015612187576006546000828152600760205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916123469160040190815260200190565b600060405180830381600087803b15801561236057600080fd5b505af1158015612374573d6000803e3d6000fd5b5050506000828152600760205260408120555095945050505050565b805160009060348110156123a85760019150506112d2565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b146123db576001925050506112d2565b6000806123e9602885613c9c565b90505b838110156124605760008061242088848151811061240c5761240c613fc3565b01602001516001600160f81b031916612f85565b915091508161243857600196505050505050506112d2565b8060ff166004856001600160a01b0316901b17935050508061245990613fd9565b90506123ec565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156124e95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016102e0565b5090565b606060ff831461250057611d2883613017565b81805461250c90613aab565b80601f016020809104026020016040519081016040528092919081815260200182805461253890613aab565b80156125855780601f1061255a57610100808354040283529160200191612585565b820191906000526020600020905b81548152906001019060200180831161256857829003601f168201915b505050505090506112d2565b600065ffffffffffff8211156124e95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016102e0565b600854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561264a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190613b26565b60006126898254600f81810b600160801b909204900b131590565b156126a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600654604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b606083156127655750816119aa565b6119aa8383613056565b600080829050601f8151111561279a578260405163305a27a960e01b81526004016102e091906132f2565b80516127a582613ff2565b179392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806127f357506001600160e01b0319868116908216145b8061280a57506001600160e01b0319868116908516145b8061282557506001600160e01b03198616630271189760e51b145b80610b9557506301ffc9a760e01b6001600160e01b0319871614610b95565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561289d57507f000000000000000000000000000000000000000000000000000000000000000046145b156128c757507f000000000000000000000000000000000000000000000000000000000000000090565b611995604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156129a65750600090506003612a2a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156129fa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612a2357600060019250925050612a2a565b9150600090505b94509492505050565b6000816004811115612a4757612a476135d3565b03612a4f5750565b6001816004811115612a6357612a636135d3565b03612ab05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102e0565b6002816004811115612ac457612ac46135d3565b03612b115760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102e0565b6003816004811115612b2557612b256135d3565b03610d635760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102e0565b6001612b8886611161565b6007811115612b9957612b996135d3565b14612c005760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015270081d9bdd1a5b99c81a5cc818db1bdcd959607a1b60648201526084016102e0565b60028360ff161115612c6f5760405162461bcd60e51b815260206004820152603260248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a60448201527120696e76616c696420766f7465207479706560701b60648201526084016102e0565b6000858152600b602090815260408083206001600160a01b038816845291829052909120805460ff1615612d025760405162461bcd60e51b815260206004820152603460248201527f476f7665726e6f72427261766f3a3a63617374566f7465496e7465726e616c3a604482015273081d9bdd195c88185b1c9958591e481d9bdd195960621b60648201526084016102e0565b60ff8516600090815260018301602052604081208054869290612d26908490613c89565b90915550508054600161ffff1990911661010060ff88160217811782558101849055600282018054859190600090612d5f908490613c89565b909155505050505050505050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b60065460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490612de4908890889088906000908990600401613bcd565b6000604051808303818588803b158015612dfd57600080fd5b505af1158015612e11573d6000803e3d6000fd5b50505050505050505050565b6000818152600b60209081526040808320600180855201808352818420546002855282852054868652600390945291842054909290612e64906001600160401b0316611c8a565b612e6e8284613c89565b101595945050505050565b600080612e8886868686611c2f565b90506000612e9582611161565b90506002816007811115612eab57612eab6135d3565b14158015612ecb57506006816007811115612ec857612ec86135d3565b14155b8015612ee957506007816007811115612ee657612ee66135d3565b14155b612f355760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016102e0565b60008281526003602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90610fe79084815260200190565b60008060f883901c602f81118015612fa05750603a8160ff16105b15612fb557600194602f199091019350915050565b8060ff166040108015612fcb575060478160ff16105b15612fe0576001946036199091019350915050565b8060ff166060108015612ff6575060678160ff16105b1561300b576001946056199091019350915050565b50600093849350915050565b6060600061302483613080565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b8151156130665781518083602001fd5b8060405162461bcd60e51b81526004016102e091906132f2565b600060ff8216601f8111156112d257604051632cd44ac360e21b815260040160405180910390fd5b6000602082840312156130ba57600080fd5b5035919050565b6000602082840312156130d357600080fd5b81356001600160e01b0319811681146119aa57600080fd5b803560ff811681146130fc57600080fd5b919050565b60008083601f84011261311357600080fd5b5081356001600160401b0381111561312a57600080fd5b60208301915083602082850101111561314257600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561318757613187613149565b604052919050565b60006001600160401b038311156131a8576131a8613149565b6131bb601f8401601f191660200161315f565b90508281528383830111156131cf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126131f757600080fd5b6119aa8383356020850161318f565b60008060008060008060008060e0898b03121561322257600080fd5b8835975061323260208a016130eb565b965060408901356001600160401b038082111561324e57600080fd5b61325a8c838d01613101565b909850965060608b013591508082111561327357600080fd5b506132808b828c016131e6565b94505061328f60808a016130eb565b925060a0890135915060c089013590509295985092959890939650565b6000815180845260005b818110156132d2576020818501810151868301820152016132b6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006119aa60208301846132ac565b6001600160a01b0381168114610d6357600080fd5b6000806000806080858703121561333057600080fd5b843561333b81613305565b9350602085013561334b81613305565b92506040850135915060608501356001600160401b0381111561336d57600080fd5b613379878288016131e6565b91505092959194509250565b60006001600160401b0382111561339e5761339e613149565b5060051b60200190565b600082601f8301126133b957600080fd5b813560206133ce6133c983613385565b61315f565b82815260059290921b840181019181810190868411156133ed57600080fd5b8286015b8481101561341157803561340481613305565b83529183019183016133f1565b509695505050505050565b600082601f83011261342d57600080fd5b8135602061343d6133c983613385565b82815260059290921b8401810191818101908684111561345c57600080fd5b8286015b848110156134115780358352918301918301613460565b600082601f83011261348857600080fd5b813560206134986133c983613385565b82815260059290921b840181019181810190868411156134b757600080fd5b8286015b848110156134115780356001600160401b038111156134da5760008081fd5b6134e88986838b01016131e6565b8452509183019183016134bb565b6000806000806080858703121561350c57600080fd5b84356001600160401b038082111561352357600080fd5b61352f888389016133a8565b9550602087013591508082111561354557600080fd5b6135518883890161341c565b9450604087013591508082111561356757600080fd5b5061357487828801613477565b949793965093946060013593505050565b600080600080600060a0868803121561359d57600080fd5b853594506135ad602087016130eb565b93506135bb604087016130eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061360b57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561362457600080fd5b82359150602083013561363681613305565b809150509250929050565b6000806040838503121561365457600080fd5b82359150613664602084016130eb565b90509250929050565b60008060008060006080868803121561368557600080fd5b85359450613695602087016130eb565b935060408601356001600160401b03808211156136b157600080fd5b6136bd89838a01613101565b909550935060608801359150808211156136d657600080fd5b506136e3888289016131e6565b9150509295509295909350565b6000806000806060858703121561370657600080fd5b84359350613716602086016130eb565b925060408501356001600160401b0381111561373157600080fd5b61373d87828801613101565b95989497509550505050565b6000806000806080858703121561375f57600080fd5b84356001600160401b038082111561377657600080fd5b613782888389016133a8565b9550602087013591508082111561379857600080fd5b6137a48883890161341c565b945060408701359150808211156137ba57600080fd5b6137c688838901613477565b935060608701359150808211156137dc57600080fd5b508501601f810187136137ee57600080fd5b6133798782356020840161318f565b600081518084526020808501945080840160005b8381101561382d57815187529582019590820190600101613811565b509495945050505050565b60ff60f81b8816815260e06020820152600061385760e08301896132ac565b828103604084015261386981896132ac565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610c8981856137fd565b6000806000606084860312156138af57600080fd5b83356138ba81613305565b92506020840135915060408401356001600160401b038111156138dc57600080fd5b6138e8868287016131e6565b9150509250925092565b60006020828403121561390457600080fd5b81356119aa81613305565b600080600080600060a0868803121561392757600080fd5b853561393281613305565b9450602086013561394281613305565b935060408601356001600160401b038082111561395e57600080fd5b61396a89838a0161341c565b9450606088013591508082111561398057600080fd5b61398c89838a0161341c565b935060808801359150808211156136d657600080fd5b600080600080606085870312156139b857600080fd5b84356139c381613305565b93506020850135925060408501356001600160401b0381111561373157600080fd5b600080604083850312156139f857600080fd5b8235613a0381613305565b946020939093013593505050565b600080600080600060a08688031215613a2957600080fd5b8535613a3481613305565b94506020860135613a4481613305565b9350604086013592506060860135915060808601356001600160401b03811115613a6d57600080fd5b6136e3888289016131e6565b8183823760009101908152919050565b600060208284031215613a9b57600080fd5b815180151581146119aa57600080fd5b600181811c90821680613abf57607f821691505b602082108103613adf57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b600060208284031215613b3857600080fd5b5051919050565b600081518084526020808501945080840160005b8381101561382d5781516001600160a01b031687529582019590820190600101613b53565b600081518084526020808501808196508360051b8101915082860160005b85811015613bc0578284038952613bae8483516132ac565b98850198935090840190600101613b96565b5091979650505050505050565b60a081526000613be060a0830188613b3f565b8281036020840152613bf281886137fd565b90508281036040840152613c068187613b78565b60608401959095525050608001529392505050565b60c081526000613c2e60c0830189613b3f565b8281036020840152613c4081896137fd565b90508281036040840152613c548188613b78565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156112d2576112d2613c73565b818103818111156112d2576112d2613c73565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b60006101208b8352602060018060a01b038c1681850152816040850152613d198285018c613b3f565b91508382036060850152613d2d828b6137fd565b915083820360808501528189518084528284019150828160051b850101838c0160005b83811015613d7e57601f19878403018552613d6c8383516132ac565b94860194925090850190600101613d50565b505086810360a0880152613d92818c613b78565b9450505050508560c08401528460e0840152828103610100840152613db781856132ac565b9c9b505050505050505050505050565b608081526000613dda6080830187613b3f565b8281036020840152613dec81876137fd565b90508281036040840152613e008186613b78565b91505082606083015295945050505050565b80820281158282048414176112d2576112d2613c73565b600082613e4657634e487b7160e01b600052601260045260246000fd5b500490565b601f821115613e9157600081815260208120601f850160051c81016020861015613e725750805b601f850160051c820191505b8181101561204857828155600101613e7e565b505050565b81516001600160401b03811115613eaf57613eaf613149565b613ec381613ebd8454613aab565b84613e4b565b602080601f831160018114613ef85760008415613ee05750858301515b600019600386901b1c1916600185901b178555612048565b600085815260208120601f198616915b82811015613f2757888601518255948401946001909101908401613f08565b5085821015613f455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000610b9560808301846132ac565b85815260ff8516602082015283604082015260a060608201526000613fa560a08301856132ac565b8281036080840152613fb781856132ac565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060018201613feb57613feb613c73565b5060010190565b80516020808301519190811015613adf5760001960209190910360031b1b1691905056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a2646970667358221220dc16ef7f47cff553234fe437276a5aead39f6d716f391cde443d3d12d3aff3d364736f6c634300081100330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000ab4fcae71ec6c583b9d46fa5f94aecc51c0e9c2600000000000000000000000073b1988a3336208e55275c52fac7f5d3a7dfb89f00000000000000000000000000000000000000000000000000000000000000104c7962726120476f7665726e616e636500000000000000000000000000000000