0 txs
1 call
constructor
constructor(address _dao, string _name, string _symbol, (address[] receivers, uint256[] amounts) _mintSettings)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
checkpoints
viewfunction checkpoints(address account, uint32 pos) view returns (tuple)
CLOCK_MODE
viewfunction CLOCK_MODE() view returns (string)
clock
viewfunction clock() view returns (uint48)
dao
viewfunction dao() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
delegates
viewfunction delegates(address account) view returns (address)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getPastTotalSupply
viewfunction getPastTotalSupply(uint256 timepoint) view returns (uint256)
getPastVotes
viewfunction getPastVotes(address account, uint256 timepoint) view returns (uint256)
getVotes
viewfunction getVotes(address account) view returns (uint256)
MINT_PERMISSION_ID
viewfunction MINT_PERMISSION_ID() view returns (bytes32)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
numCheckpoints
viewfunction numCheckpoints(address account) view returns (uint32)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
delegate
nonpayablefunction delegate(address delegatee)
delegateBySig
nonpayablefunction delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _dao, string _name, string _symbol, tuple _mintSettings)
mint
nonpayablefunction mint(address to, uint256 amount)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance)
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint8 version)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
DaoUnauthorized
error DaoUnauthorized(address dao, address where, address who, bytes32 permissionId)
MintSettingsArrayLengthMismatch
error MintSettingsArrayLengthMismatch(uint256 receiversArrayLength, uint256 amountsArrayLength)
creation bytecode
0x60806040523480156200001157600080fd5b5060405162003f5338038062003f53833981016040819052620000349162000dd4565b62000042848484846200004c565b50505050620010eb565b600054610100900460ff16158080156200006d5750600054600160ff909116105b806200009d57506200008a306200023f60201b620010921760201c565b1580156200009d575060005460ff166001145b620001065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200012a576000805461ff0019166101001790555b6020820151518251511462000165578151516020830151516040516398b1381560e01b815260048101929092526024820152604401620000fd565b6200017184846200024e565b6200017c84620002ba565b620001878562000344565b60005b825151811015620001f057620001e783600001518281518110620001b257620001b262000f39565b602002602001015184602001518381518110620001d357620001d362000f39565b6020026020010151620003c360201b60201c565b6001016200018a565b50801562000238576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b03163b151590565b600054610100900460ff16620002aa5760405162461bcd60e51b815260206004820152602b602482015260008051602062003f1383398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b620002b6828262000477565b5050565b600054610100900460ff16620003165760405162461bcd60e51b815260206004820152602b602482015260008051602062003f1383398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b6200034181604051806040016040528060018152602001603160f81b815250620004f560201b60201c565b50565b600054610100900460ff16620003a05760405162461bcd60e51b815260206004820152602b602482015260008051602062003f1383398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b61013080546001600160a01b0319166001600160a01b0392909216919091179055565b620003da82826200057d60201b620010a11760201c565b6001600160e01b03620003ee6200064c8216565b1115620004575760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401620000fd565b620004716101006200116e6200065260201b178362000669565b50505050565b600054610100900460ff16620004d35760405162461bcd60e51b815260206004820152602b602482015260008051602062003f1383398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b6068620004e1838262000fdd565b506069620004f0828262000fdd565b505050565b600054610100900460ff16620005515760405162461bcd60e51b815260206004820152602b602482015260008051602062003f1383398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b60996200055f838262000fdd565b50609a6200056e828262000fdd565b50506000609781905560985550565b6001600160a01b038216620005d55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000fd565b8060676000828254620005e99190620010bf565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002b66000838362000812565b60675490565b6000620006608284620010bf565b90505b92915050565b82546000908190818115620006b85760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152620006cd565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350620006eb84868860201c565b92506000821180156200071857506200070362000888565b65ffffffffffff16816000015163ffffffff16145b156200076c576200073483620008a560201b6200117a1760201c565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff90921691909117905562000808565b866040518060400160405280620007a56200078c6200088860201b60201c565b65ffffffffffff166200091460201b620011fd1760201c565b63ffffffff168152602001620007c686620008a560201b6200117a1760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6200082a8383836200097b60201b620012791760201c565b6001600160a01b038216158015906200085157506200084982620009c7565b63ffffffff16155b80156200087657506001600160a01b03828116600090815260fe602052604090205416155b15620004f057620004f08280620009f6565b6000620008a04362000a7260201b620012ab1760201c565b905090565b60006001600160e01b03821115620009105760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401620000fd565b5090565b600063ffffffff821115620009105760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401620000fd565b62000993838383620004f060201b620008061760201c565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054620004f09291821691168362000adb565b6001600160a01b038116600090815260ff602090815260408220546200066391620011fd62000914821b17901c565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46200047182848362000adb565b600065ffffffffffff821115620009105760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401620000fd565b816001600160a01b0316836001600160a01b03161415801562000afe5750600081115b15620004f0576001600160a01b0383161562000b8b576001600160a01b038316600090815260ff602090815260408220829162000b48919062000c16901b62001329178562000669565b91509150846001600160a01b031660008051602062003f33833981519152838360405162000b80929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620004f0576001600160a01b038216600090815260ff602090815260408220829162000bcf919062000652901b6200116e178562000669565b91509150836001600160a01b031660008051602062003f33833981519152838360405162000c07929190918252602082015260400190565b60405180910390a25050505050565b6000620006608284620010d5565b6001600160a01b03811681146200034157600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000c755762000c7562000c3a565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000ca65762000ca662000c3a565b604052919050565b600082601f83011262000cc057600080fd5b81516001600160401b0381111562000cdc5762000cdc62000c3a565b602062000cf2601f8301601f1916820162000c7b565b828152858284870101111562000d0757600080fd5b60005b8381101562000d2757858101830151828201840152820162000d0a565b506000928101909101919091529392505050565b60006001600160401b0382111562000d575762000d5762000c3a565b5060051b60200190565b600082601f83011262000d7357600080fd5b8151602062000d8c62000d868362000d3b565b62000c7b565b82815260059290921b8401810191818101908684111562000dac57600080fd5b8286015b8481101562000dc9578051835291830191830162000db0565b509695505050505050565b6000806000806080858703121562000deb57600080fd5b845162000df88162000c24565b602086810151919550906001600160401b038082111562000e1857600080fd5b62000e2689838a0162000cae565b9550604088015191508082111562000e3d57600080fd5b62000e4b89838a0162000cae565b9450606088015191508082111562000e6257600080fd5b908701906040828a03121562000e7757600080fd5b62000e8162000c50565b82518281111562000e9157600080fd5b8301601f81018b1362000ea357600080fd5b805162000eb462000d868262000d3b565b81815260059190911b8201860190868101908d83111562000ed457600080fd5b928701925b8284101562000eff57835162000eef8162000c24565b8252928701929087019062000ed9565b8452505050828401518281111562000f1657600080fd5b62000f248b82860162000d61565b85830152508094505050505092959194509250565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168062000f6457607f821691505b60208210810362000f8557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004f057600081815260208120601f850160051c8101602086101562000fb45750805b601f850160051c820191505b8181101562000fd55782815560010162000fc0565b505050505050565b81516001600160401b0381111562000ff95762000ff962000c3a565b62001011816200100a845462000f4f565b8462000f8b565b602080601f831160018114620010495760008415620010305750858301515b600019600386901b1c1916600185901b17855562000fd5565b600085815260208120601f198616915b828110156200107a5788860151825594840194600190910190840162001059565b5085821015620010995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820180821115620006635762000663620010a9565b81810381811115620006635762000663620010a9565b612e1880620010fb6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063a457c2d7116100a2578063d505accf11610071578063d505accf1461043f578063dab27fa914610452578063dd62ed3e14610465578063f1127ed81461049e57600080fd5b8063a457c2d7146103df578063a9059cbb146103f2578063b2d2989c14610405578063c3cda5201461042c57600080fd5b80638e539e8c116100de5780638e539e8c1461039257806391ddadf4146103a557806395d89b41146103c45780639ab24eb0146103cc57600080fd5b806370a082311461033b5780637ecebe001461036457806384b0196e1461037757600080fd5b8063395093511161017c5780634bf5d7e91161014b5780634bf5d7e9146102cc578063587cde1e146102d45780635c19a95c146103005780636fcfff451461031357600080fd5b8063395093511461026b5780633a46b1a81461027e57806340c10f19146102915780634162169f146102a657600080fd5b806318160ddd116101b857806318160ddd1461022f57806323b872dd14610241578063313ce567146102545780633644e5151461026357600080fd5b806301ffc9a7146101df57806306fdde0314610207578063095ea7b31461021c575b600080fd5b6101f26101ed36600461259e565b6104db565b60405190151581526020015b60405180910390f35b61020f610614565b6040516101fe919061260e565b6101f261022a366004612636565b6106a6565b6067545b6040519081526020016101fe565b6101f261024f366004612662565b6106be565b604051601281526020016101fe565b6102336106e2565b6101f2610279366004612636565b6106f1565b61023361028c366004612636565b610730565b6102a461029f366004612636565b6107be565b005b610130546001600160a01b03165b6040516001600160a01b0390911681526020016101fe565b61020f61080b565b6102b46102e23660046126a3565b6001600160a01b03908116600090815260fe60205260409020541690565b6102a461030e3660046126a3565b6108a3565b6103266103213660046126a3565b6108b0565b60405163ffffffff90911681526020016101fe565b6102336103493660046126a3565b6001600160a01b031660009081526065602052604090205490565b6102336103723660046126a3565b6108d2565b61037f6108f0565b6040516101fe97969594939291906126c0565b6102336103a0366004612772565b6109b2565b6103ad610a1e565b60405165ffffffffffff90911681526020016101fe565b61020f610a29565b6102336103da3660046126a3565b610a38565b6101f26103ed366004612636565b610aba565b6101f2610400366004612636565b610b64565b6102337fb737b436e6cc542520cb79ec04245c720c38eebfa56d9e2d99b043979db20e4c81565b6102a461043a3660046127a1565b610b72565b6102a461044d3660046127fb565b610ca8565b6102a46104603660046129d8565b610e0c565b610233610473366004612b22565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b6104b16104ac366004612b5b565b61100e565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101fe565b60006001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000148061053e57506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b8061057257506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806105a657506001600160e01b031982167fe90fb3f600000000000000000000000000000000000000000000000000000000145b806105da57506001600160e01b031982167f40c10f1900000000000000000000000000000000000000000000000000000000145b8061060e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b60606068805461062390612b92565b80601f016020809104026020016040519081016040528092919081815260200182805461064f90612b92565b801561069c5780601f106106715761010080835404028352916020019161069c565b820191906000526020600020905b81548152906001019060200180831161067f57829003601f168201915b5050505050905090565b6000336106b4818585611335565b5060019392505050565b6000336106cc85828561148d565b6106d785858561151f565b506001949350505050565b60006106ec611719565b905090565b3360008181526066602090815260408083206001600160a01b03871684529091528120549091906106b4908290869061072b908790612bdc565b611335565b600061073a610a1e565b65ffffffffffff1682106107955760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b75700000000000000060448201526064015b60405180910390fd5b6001600160a01b038316600090815260ff602052604090206107b79083611723565b9392505050565b610130547fb737b436e6cc542520cb79ec04245c720c38eebfa56d9e2d99b043979db20e4c906107fc906001600160a01b031630338460003661180c565b61080683836118fa565b505050565b606043610816610a1e565b65ffffffffffff161461086b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f6465000000604482015260640161078c565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6108ad3382611992565b50565b6001600160a01b038116600090815260ff602052604081205461060e906111fd565b6001600160a01b038116600090815260cb602052604081205461060e565b6000606080600080600060606097546000801b1480156109105750609854155b61095c5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161078c565b610964611a24565b61096c611a33565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b60006109bc610a1e565b65ffffffffffff168210610a125760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b757000000000000000604482015260640161078c565b61060e61010083611723565b60006106ec436112ab565b60606069805461062390612b92565b6001600160a01b038116600090815260ff60205260408120548015610aa7576001600160a01b038316600090815260ff6020526040902080546000198301908110610a8557610a85612bef565b60009182526020909120015464010000000090046001600160e01b0316610aaa565b60005b6001600160e01b03169392505050565b3360008181526066602090815260408083206001600160a01b038716845290915281205490919083811015610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161078c565b6106d78286868403611335565b6000336106b481858561151f565b83421115610bc25760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161078c565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610c3c90610c349060a00160405160208183030381529060405280519060200120611a42565b858585611a8a565b9050610c4781611ab2565b8614610c955760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161078c565b610c9f8188611992565b50505050505050565b83421115610cf85760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161078c565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610d278c611ab2565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d8282611a42565b90506000610d9282878787611a8a565b9050896001600160a01b0316816001600160a01b031614610df55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161078c565b610e008a8a8a611335565b50505050505050505050565b600054610100900460ff1615808015610e2c5750600054600160ff909116105b80610e465750303b158015610e46575060005460ff166001145b610eb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161078c565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610ef9576000805461ff0019166101001790555b60208201515182515114610f4b578151516020830151516040517f98b138150000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161078c565b610f558484611ada565b610f5e84611b4f565b610f6785611bf9565b60005b825151811015610fc057610fb883600001518281518110610f8d57610f8d612bef565b602002602001015184602001518381518110610fab57610fab612bef565b60200260200101516118fa565b600101610f6a565b508015611007576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff841690811061105257611052612bef565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b03163b151590565b6001600160a01b0382166110f75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161078c565b80606760008282546111099190612bdc565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361116a60008383611c9f565b5050565b60006107b78284612bdc565b60006001600160e01b038211156111f95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161078c565b5090565b600063ffffffff8211156111f95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b03838116600090815260fe602052604080822054858416835291205461080692918216911683611d01565b600065ffffffffffff8211156111f95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201527f3820626974730000000000000000000000000000000000000000000000000000606482015260840161078c565b60006107b78284612c05565b6001600160a01b0383166113b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b03821661142c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152606660209081526040808320938616835292905220546000198114611519578181101561150c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078c565b6115198484848403611335565b50505050565b6001600160a01b03831661159b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b0382166116175760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b038316600090815260656020526040902054818110156116a65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161078c565b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117069086815260200190565b60405180910390a3611519848484611c9f565b60006106ec611e3e565b81546000908181600581111561177d57600061173e84611eb2565b6117489085612c05565b600088815260209020909150869082015463ffffffff16111561176d5780915061177b565b611778816001612bdc565b92505b505b808210156117ca5760006117918383611f9a565b600088815260209020909150869082015463ffffffff1611156117b6578091506117c4565b6117c1816001612bdc565b92505b5061177d565b80156117f6576000868152602090208101600019015464010000000090046001600160e01b03166117f9565b60005b6001600160e01b03169695505050505050565b6040517ffdef91060000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063fdef9106906118599088908890889088908890600401612c18565b602060405180830381865afa158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190612c6c565b6118f2576040517f32dbe3b40000000000000000000000000000000000000000000000000000000081526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161078c565b505050505050565b61190482826110a1565b6067546001600160e01b0310156119835760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f74657300000000000000000000000000000000606482015260840161078c565b61151961010061116e83611fb5565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611519828483611d01565b60606099805461062390612b92565b6060609a805461062390612b92565b600061060e611a4f611719565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000611a9b8787878761212a565b91509150611aa8816121ee565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b600054610100900460ff16611b455760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161078c565b61116a8282612353565b600054610100900460ff16611bba5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161078c565b6108ad816040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506123d7565b600054610100900460ff16611c645760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161078c565b61013080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611caa838383611279565b6001600160a01b03821615801590611cce5750611cc6826108b0565b63ffffffff16155b8015611cf257506001600160a01b03828116600090815260fe602052604090205416155b15610806576108068283611992565b816001600160a01b0316836001600160a01b031614158015611d235750600081115b15610806576001600160a01b03831615611db1576001600160a01b038316600090815260ff602052604081208190611d5e9061132985611fb5565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611da6929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610806576001600160a01b038216600090815260ff602052604081208190611de79061116e85611fb5565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611e2f929190918252602082015260400190565b60405180910390a25050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611e6961246a565b611e716124c3565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600081600003611ec457506000919050565b60006001611ed1846124f4565b901c6001901b90506001818481611eea57611eea612c8e565b048201901c90506001818481611f0257611f02612c8e565b048201901c90506001818481611f1a57611f1a612c8e565b048201901c90506001818481611f3257611f32612c8e565b048201901c90506001818481611f4a57611f4a612c8e565b048201901c90506001818481611f6257611f62612c8e565b048201901c90506001818481611f7a57611f7a612c8e565b048201901c90506107b781828581611f9457611f94612c8e565b04612588565b6000611fa96002848418612ca4565b6107b790848416612bdc565b825460009081908181156120025760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152612017565b60408051808201909152600080825260208201525b905080602001516001600160e01b0316935061203784868863ffffffff16565b9250600082118015612061575061204c610a1e565b65ffffffffffff16816000015163ffffffff16145b156120a65761206f8361117a565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055612120565b8660405180604001604052806120ca6120bd610a1e565b65ffffffffffff166111fd565b63ffffffff1681526020016120de8661117a565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561216157506000905060036121e5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156121b5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166121de576000600192509250506121e5565b9150600090505b94509492505050565b600081600481111561220257612202612cc6565b0361220a5750565b600181600481111561221e5761221e612cc6565b0361226b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161078c565b600281600481111561227f5761227f612cc6565b036122cc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161078c565b60038160048111156122e0576122e0612cc6565b036108ad5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161078c565b600054610100900460ff166123be5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161078c565b60686123ca8382612d22565b5060696108068282612d22565b600054610100900460ff166124425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161078c565b609961244e8382612d22565b50609a61245b8282612d22565b50506000609781905560985550565b600080612475611a24565b80519091501561248c578051602090910120919050565b609754801561249b5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806124ce611a33565b8051909150156124e5578051602090910120919050565b609854801561249b5792915050565b600080608083901c1561250957608092831c92015b604083901c1561251b57604092831c92015b602083901c1561252d57602092831c92015b601083901c1561253f57601092831c92015b600883901c1561255157600892831c92015b600483901c1561256357600492831c92015b600283901c1561257557600292831c92015b600183901c1561060e5760010192915050565b600081831061259757816107b7565b5090919050565b6000602082840312156125b057600080fd5b81356001600160e01b0319811681146107b757600080fd5b6000815180845260005b818110156125ee576020818501810151868301820152016125d2565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006107b760208301846125c8565b6001600160a01b03811681146108ad57600080fd5b6000806040838503121561264957600080fd5b823561265481612621565b946020939093013593505050565b60008060006060848603121561267757600080fd5b833561268281612621565b9250602084013561269281612621565b929592945050506040919091013590565b6000602082840312156126b557600080fd5b81356107b781612621565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526126fc60e084018a6125c8565b838103604085015261270e818a6125c8565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561276057835183529284019291840191600101612744565b50909c9b505050505050505050505050565b60006020828403121561278457600080fd5b5035919050565b803560ff8116811461279c57600080fd5b919050565b60008060008060008060c087890312156127ba57600080fd5b86356127c581612621565b955060208701359450604087013593506127e16060880161278b565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561281657600080fd5b873561282181612621565b9650602088013561283181612621565b9550604088013594506060880135935061284d6080890161278b565b925060a0880135915060c0880135905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156128a2576128a2612869565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156128d1576128d1612869565b604052919050565b600082601f8301126128ea57600080fd5b813567ffffffffffffffff81111561290457612904612869565b6129176020601f19601f840116016128a8565b81815284602083860101111561292c57600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111561296357612963612869565b5060051b60200190565b600082601f83011261297e57600080fd5b8135602061299361298e83612949565b6128a8565b82815260059290921b840181019181810190868411156129b257600080fd5b8286015b848110156129cd57803583529183019183016129b6565b509695505050505050565b600080600080608085870312156129ee57600080fd5b84356129f981612621565b935060208581013567ffffffffffffffff80821115612a1757600080fd5b612a2389838a016128d9565b95506040880135915080821115612a3957600080fd5b612a4589838a016128d9565b94506060880135915080821115612a5b57600080fd5b908701906040828a031215612a6f57600080fd5b612a7761287f565b823582811115612a8657600080fd5b8301601f81018b13612a9757600080fd5b8035612aa561298e82612949565b81815260059190911b8201860190868101908d831115612ac457600080fd5b928701925b82841015612aeb578335612adc81612621565b82529287019290870190612ac9565b84525050508284013582811115612b0157600080fd5b612b0d8b82860161296d565b85830152508094505050505092959194509250565b60008060408385031215612b3557600080fd5b8235612b4081612621565b91506020830135612b5081612621565b809150509250929050565b60008060408385031215612b6e57600080fd5b8235612b7981612621565b9150602083013563ffffffff81168114612b5057600080fd5b600181811c90821680612ba657607f821691505b602082108103611ad457634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561060e5761060e612bc6565b634e487b7160e01b600052603260045260246000fd5b8181038181111561060e5761060e612bc6565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b600060208284031215612c7e57600080fd5b815180151581146107b757600080fd5b634e487b7160e01b600052601260045260246000fd5b600082612cc157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b601f82111561080657600081815260208120601f850160051c81016020861015612d035750805b601f850160051c820191505b818110156118f257828155600101612d0f565b815167ffffffffffffffff811115612d3c57612d3c612869565b612d5081612d4a8454612b92565b84612cdc565b602080601f831160018114612d855760008415612d6d5750858301515b600019600386901b1c1916600185901b1785556118f2565b600085815260208120601f198616915b82811015612db457888601518255948401946001909101908401612d95565b5085821015612dd25787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212209448d39a9bec23875cddd243a8e69c9aa73f918300e1f21f0619a3abfebe554c64736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000