[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_projectId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BAD_PROJECT", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_projectId", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" }, { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20Votes.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" }, { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "projectId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "transfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_projectId", "type": "uint256" }, { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101806040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b5060405162002d1438038062002d148339810160408190526200005a9162000258565b6040805180820190915260018152603160f81b602082015283908190818560036200008683826200035a565b5060046200009582826200035a565b5050825160209384012082519284019290922060e08390526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818901819052818301979097526060810194909452608080850193909352308483018190528151808603909301835260c09485019091528151919096012090529290925261012052506200013490503362000141565b6101605250620004269050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bb57600080fd5b81516001600160401b0380821115620001d857620001d862000193565b604051601f8301601f19908116603f0116810190828211818310171562000203576200020362000193565b816040528381526020925086838588010111156200022057600080fd5b600091505b8382101562000244578582018301518183018401529082019062000225565b600093810190920192909252949350505050565b6000806000606084860312156200026e57600080fd5b83516001600160401b03808211156200028657600080fd5b6200029487838801620001a9565b94506020860151915080821115620002ab57600080fd5b50620002ba86828701620001a9565b925050604084015190509250925092565b600181811c90821680620002e057607f821691505b6020821081036200030157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035557600081815260208120601f850160051c81016020861015620003305750805b601f850160051c820191505b8181101562000351578281556001016200033c565b5050505b505050565b81516001600160401b0381111562000376576200037662000193565b6200038e81620003878454620002cb565b8462000307565b602080601f831160018114620003c65760008415620003ad5750858301515b600019600386901b1c1916600185901b17855562000351565b600085815260208120601f198616915b82811015620003f757888601518255948401946001909101908401620003d6565b5085821015620004165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610120516101405161016051612842620004d2600039600081816102df0152818161061901528181610643015281816109650152818161098f015281816109fa01528181610a2401528181610c0601528181610c3001528181611171015261119b01526000610ee7015260006115fe0152600061164d0152600061162801526000611581015260006115ab015260006115d501526128426000f3fe608060405234801561001057600080fd5b506004361061020a5760003560e01c80637ecebe001161012a578063a457c2d7116100bd578063d505accf1161008c578063f1127ed811610071578063f1127ed8146104d4578063f2fde38b14610526578063f8548e361461053957600080fd5b8063d505accf14610488578063dd62ed3e1461049b57600080fd5b8063a457c2d71461043c578063a9059cbb1461044f578063bd85b03914610462578063c3cda5201461047557600080fd5b80638e539e8c116100f95780638e539e8c146103fb57806395d89b411461040e5780639ab24eb0146104165780639eea5f661461042957600080fd5b80637ecebe00146103b1578063836a1040146103c45780638cb0a511146103d75780638da5cb5b146103ea57600080fd5b806339509351116101a25780635c19a95c116101715780635c19a95c146103455780636fcfff451461035857806370a0823114610380578063715018a6146103a957600080fd5b806339509351146102b45780633a46b1a8146102c75780633fafa127146102da578063587cde1e1461030157600080fd5b80631c0f12b6116101de5780631c0f12b61461027557806323b872dd1461028a578063313ce5671461029d5780633644e515146102ac57600080fd5b8062fdd58e1461020f57806306fdde0314610235578063095ea7b31461024a57806318160ddd1461026d575b600080fd5b61022261021d36600461241c565b61054c565b6040519081526020015b60405180910390f35b61023d61056f565b60405161022c9190612446565b61025d61025836600461241c565b610601565b604051901515815260200161022c565b600254610222565b6102886102833660046124b2565b610617565b005b61025d6102983660046124f6565b6106af565b6040516012815260200161022c565b61022261079d565b61025d6102c236600461241c565b6107a7565b6102226102d536600461241c565b6107e3565b6102227f000000000000000000000000000000000000000000000000000000000000000081565b61032d61030f366004612532565b6001600160a01b039081166000908152600660205260409020541690565b6040516001600160a01b03909116815260200161022c565b610288610353366004612532565b610856565b61036b610366366004612532565b610863565b60405163ffffffff909116815260200161022c565b61022261038e366004612532565b6001600160a01b031660009081526020819052604090205490565b610288610885565b6102226103bf366004612532565b6108eb565b6102886103d236600461254d565b610909565b6102886103e536600461254d565b6109f8565b6009546001600160a01b031661032d565b610222610409366004612572565b610a8e565b61023d610aea565b610222610424366004612532565b610af9565b61028861043736600461254d565b610baa565b61025d61044a36600461241c565b610c94565b61025d61045d36600461241c565b610d45565b610222610470366004612572565b610d52565b61028861048336600461259c565b610d5d565b6102886104963660046125f4565b610e93565b6102226104a936600461265e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104e76104e2366004612691565b610ff7565b60408051825163ffffffff1681526020928301517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16928101929092520161022c565b610288610534366004612532565b611090565b61028861054736600461254d565b61116f565b6001600160a01b0382166000908152602081905260408120545b90505b92915050565b60606003805461057e906126d1565b80601f01602080910402602001604051908101604052809291908181526020018280546105aa906126d1565b80156105f75780601f106105cc576101008083540402835291602001916105f7565b820191906000526020600020905b8154815290600101906020018083116105da57829003601f168201915b5050505050905090565b600061060e3384846111ff565b50600192915050565b7f00000000000000000000000000000000000000000000000000000000000000001580159061066657507f00000000000000000000000000000000000000000000000000000000000000008414155b1561069d576040517fcdceed0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a88383836106af565b5050505050565b6001600160a01b03831660009081526001602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461078257828110156107755760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61078285338584036111ff565b61078d858585611357565b506001949350505050565b905090565b6000610798611574565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161060e9185906107de90869061274d565b6111ff565b60004382106108345760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400604482015260640161076c565b6001600160a01b0383166000908152600760205260409020610566908361169b565b6108603382611782565b50565b6001600160a01b03811660009081526007602052604081205461056990611813565b6009546001600160a01b031633146108df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161076c565b6108e96000611893565b565b6001600160a01b038116600090815260056020526040812054610569565b6009546001600160a01b031633146109635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161076c565b7f0000000000000000000000000000000000000000000000000000000000000000158015906109b257507f00000000000000000000000000000000000000000000000000000000000000008314155b156109e9576040517fcdceed0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f382826118fd565b505050565b7f000000000000000000000000000000000000000000000000000000000000000015801590610a4757507f00000000000000000000000000000000000000000000000000000000000000008314155b15610a7e576040517fcdceed0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a888282610601565b50505050565b6000438210610adf5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400604482015260640161076c565b61056960088361169b565b60606004805461057e906126d1565b6001600160a01b0381166000908152600760205260408120548015610b82576001600160a01b0383166000908152600760205260409020610b3b600183612760565b81548110610b4b57610b4b612773565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610b85565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b6009546001600160a01b03163314610c045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161076c565b7f000000000000000000000000000000000000000000000000000000000000000015801590610c5357507f00000000000000000000000000000000000000000000000000000000000000008314155b15610c8a576040517fcdceed0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109f382826119a9565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610d2e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161076c565b610d3b33858584036111ff565b5060019392505050565b600061060e338484611357565b600061056960025490565b83421115610dad5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161076c565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e2790610e1f9060a001604051602081830303815290604052805190602001206119c1565b858585611a2a565b9050610e3281611a52565b8614610e805760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161076c565b610e8a8188611782565b50505050505050565b83421115610ee35760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161076c565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610f128c611a52565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f6d826119c1565b90506000610f7d82878787611a2a565b9050896001600160a01b0316816001600160a01b031614610fe05760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161076c565b610feb8a8a8a6111ff565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600760205260409020805463ffffffff841690811061103b5761103b612773565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101919091529392505050565b6009546001600160a01b031633146110ea5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161076c565b6001600160a01b0381166111665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161076c565b61086081611893565b7f0000000000000000000000000000000000000000000000000000000000000000158015906111be57507f00000000000000000000000000000000000000000000000000000000000000008314155b156111f5576040517fcdceed0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a888282610d45565b6001600160a01b03831661127a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b0382166112f65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113d35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b03821661144f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b038316600090815260208190526040902054818110156114de5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061151590849061274d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161156191815260200190565b60405180910390a3610a88848484611a7a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156115cd57507f000000000000000000000000000000000000000000000000000000000000000046145b156115f757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156116ff5760006116b68284611aac565b9050848682815481106116cb576116cb612773565b60009182526020909120015463ffffffff1611156116eb578092506116f9565b6116f681600161274d565b91505b506116a2565b81156117585784611711600184612760565b8154811061172157611721612773565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661175b565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695945050505050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610a88828483611ac7565b600063ffffffff82111561188f5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161076c565b5090565b600980546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6119078282611c04565b6002547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff101561199b5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f74657300000000000000000000000000000000606482015260840161076c565b610a886008611cef83611cfb565b6119b38282611edd565b610a88600861206983611cfb565b60006105696119ce611574565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611a3b87878787612075565b91509150611a4881612180565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b6001600160a01b038381166000908152600660205260408082205485841683529120546109f392918216911683611ac7565b6000611abb60028484186127a2565b6105669084841661274d565b816001600160a01b0316836001600160a01b031614158015611ae95750600081115b156109f3576001600160a01b03831615611b77576001600160a01b03831660009081526007602052604081208190611b249061206985611cfb565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b6c929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156109f3576001600160a01b03821660009081526007602052604081208190611bad90611cef85611cfb565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611bf5929190918252602082015260400190565b60405180910390a25050505050565b6001600160a01b038216611c5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161076c565b8060026000828254611c6c919061274d565b90915550506001600160a01b03821660009081526020819052604081208054839290611c9990849061274d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611ceb60008383611a7a565b5050565b6000610566828461274d565b825460009081908015611d5b5785611d14600183612760565b81548110611d2457611d24612773565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611d5e565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169250611d8c83858763ffffffff16565b9150600081118015611dca57504386611da6600184612760565b81548110611db657611db6612773565b60009182526020909120015463ffffffff16145b15611e5457611dd88261236c565b86611de4600184612760565b81548110611df457611df4612773565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550611ed4565b856040518060400160405280611e6943611813565b63ffffffff168152602001611e7d8561236c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6001600160a01b038216611f595760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b03821660009081526020819052604090205481811015611fe85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161076c565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612017908490612760565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36109f383600084611a7a565b60006105668284612760565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120ac5750600090506003612177565b8460ff16601b141580156120c457508460ff16601c14155b156120d55750600090506004612177565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612129573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b03811661217057600060019250925050612177565b9150600090505b94509492505050565b6000816004811115612194576121946127dd565b0361219c5750565b60018160048111156121b0576121b06127dd565b036121fd5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161076c565b6002816004811115612211576122116127dd565b0361225e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161076c565b6003816004811115612272576122726127dd565b036122e55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161076c565b60048160048111156122f9576122f96127dd565b036108605760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161076c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561188f5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161076c565b80356001600160a01b038116811461241757600080fd5b919050565b6000806040838503121561242f57600080fd5b61243883612400565b946020939093013593505050565b600060208083528351808285015260005b8181101561247357858101830151858201604001528201612457565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b600080600080608085870312156124c857600080fd5b843593506124d860208601612400565b92506124e660408601612400565b9396929550929360600135925050565b60008060006060848603121561250b57600080fd5b61251484612400565b925061252260208501612400565b9150604084013590509250925092565b60006020828403121561254457600080fd5b61056682612400565b60008060006060848603121561256257600080fd5b8335925061252260208501612400565b60006020828403121561258457600080fd5b5035919050565b803560ff8116811461241757600080fd5b60008060008060008060c087890312156125b557600080fd5b6125be87612400565b955060208701359450604087013593506125da6060880161258b565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561260f57600080fd5b61261888612400565b965061262660208901612400565b955060408801359450606088013593506126426080890161258b565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561267157600080fd5b61267a83612400565b915061268860208401612400565b90509250929050565b600080604083850312156126a457600080fd5b6126ad83612400565b9150602083013563ffffffff811681146126c657600080fd5b809150509250929050565b600181811c908216806126e557607f821691505b602082108103611a74577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105695761056961271e565b818103818111156105695761056961271e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000826127d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212205c23091a3d1f80015510377ececa8eecdc6be2b92c3468cca4f84e12ee6f03e864736f6c63430008100033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000024b0000000000000000000000000000000000000000000000000000000000000007417274697a656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034152540000000000000000000000000000000000000000000000000000000000