UNPKG

@hypernetlabs/objects

Version:
750 lines 66.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { _format: "hh-sol-artifact-1", contractName: "NonFungibleRegistry", sourceName: "contracts/NonFungibleRegistry.sol", abi: [ { inputs: [ { internalType: "string", name: "name_", type: "string", }, { internalType: "string", name: "symbol_", type: "string", }, { internalType: "address", name: "_admin", type: "address", }, ], stateMutability: "nonpayable", type: "constructor", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "owner", type: "address", }, { indexed: true, internalType: "address", name: "approved", type: "address", }, { indexed: true, internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "Approval", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "owner", type: "address", }, { indexed: true, internalType: "address", name: "operator", type: "address", }, { indexed: false, internalType: "bool", name: "approved", type: "bool", }, ], name: "ApprovalForAll", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "bytes32", name: "previousAdminRole", type: "bytes32", }, { indexed: true, internalType: "bytes32", name: "newAdminRole", type: "bytes32", }, ], name: "RoleAdminChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, ], name: "RoleGranted", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, ], name: "RoleRevoked", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: true, internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "Transfer", type: "event", }, { inputs: [], name: "DEFAULT_ADMIN_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MINTER_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "approve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "owner", type: "address", }, ], name: "balanceOf", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "burn", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "getApproved", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, ], name: "getRoleAdmin", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "uint256", name: "index", type: "uint256", }, ], name: "getRoleMember", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, ], name: "getRoleMemberCount", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "grantRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "hasRole", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "owner", type: "address", }, { internalType: "address", name: "operator", type: "address", }, ], name: "isApprovedForAll", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "name", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "ownerOf", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "string", name: "label", type: "string", }, { internalType: "string", name: "registrationData", type: "string", }, ], name: "register", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "string", name: "", type: "string", }, ], name: "registryMap", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "renounceRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], name: "reverseRegistryMap", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "revokeRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "from", type: "address", }, { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "safeTransferFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "from", type: "address", }, { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "tokenId", type: "uint256", }, { internalType: "bytes", name: "_data", type: "bytes", }, ], name: "safeTransferFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "operator", type: "address", }, { internalType: "bool", name: "approved", type: "bool", }, ], name: "setApprovalForAll", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes4", name: "interfaceId", type: "bytes4", }, ], name: "supportsInterface", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "symbol", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "index", type: "uint256", }, ], name: "tokenByIndex", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "owner", type: "address", }, { internalType: "uint256", name: "index", type: "uint256", }, ], name: "tokenOfOwnerByIndex", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "tokenURI", 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: "address", name: "from", type: "address", }, { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "transferFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "tokenId", type: "uint256", }, { internalType: "string", name: "registrationData", type: "string", }, ], name: "updateRegistration", outputs: [], stateMutability: "nonpayable", type: "function", }, ], bytecode: "0x60806040523480156200001157600080fd5b5060405162002f3f38038062002f3f833981016040819052620000349162000368565b8251839083906200004d9060029060208501906200020f565b508051620000639060039060208401906200020f565b506200007591506000905082620000aa565b620000a17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682620000aa565b50505062000444565b620000c18282620000ed60201b62000dff1760201c565b6000828152600160209081526040909120620000e891839062000e09620000fd821b17901c565b505050565b620000f982826200011d565b5050565b600062000114836001600160a01b038416620001bd565b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000f9576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001793390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000818152600183016020526040812054620002065750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000117565b50600062000117565b8280546200021d90620003f1565b90600052602060002090601f0160209004810192826200024157600085556200028c565b82601f106200025c57805160ff19168380011785556200028c565b828001600101855582156200028c579182015b828111156200028c5782518255916020019190600101906200026f565b506200029a9291506200029e565b5090565b5b808211156200029a57600081556001016200029f565b600082601f830112620002c6578081fd5b81516001600160401b0380821115620002e357620002e36200042e565b604051601f8301601f19908116603f011681019082821181831017156200030e576200030e6200042e565b816040528381526020925086838588010111156200032a578485fd5b8491505b838210156200034d57858201830151818301840152908201906200032e565b838211156200035e57848385830101525b9695505050505050565b6000806000606084860312156200037d578283fd5b83516001600160401b038082111562000394578485fd5b620003a287838801620002b5565b94506020860151915080821115620003b8578384fd5b50620003c786828701620002b5565b604086015190935090506001600160a01b0381168114620003e6578182fd5b809150509250925092565b600181811c908216806200040657607f821691505b602082108114156200042857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612aeb80620004546000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063a22cb465116100a2578063ca15c87311610071578063ca15c8731461040f578063d539139314610422578063d547741f14610449578063e985e9c51461045c57600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063bce8542e146103d1578063c87b56dd146103fc57600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e1461033c57806370a082311461034f5780638d59cc021461036257600080fd5b80632f2ff15d1161017c57806342966c681161014b57806342966c68146102f057806347f00d5a146103035780634f6ccce7146103165780636017160b1461032957600080fd5b80632f2ff15d146102a45780632f745c59146102b757806336568abe146102ca57806342842e0e146102dd57600080fd5b8063095ea7b3116101b8578063095ea7b31461024757806318160ddd1461025c57806323b872dd1461026e578063248a9ca31461028157600080fd5b806301ffc9a7146101df57806306fdde0314610207578063081812fc1461021c575b600080fd5b6101f26101ed36600461266f565b610498565b60405190151581526020015b60405180910390f35b61020f6104a9565b6040516101fe9190612848565b61022f61022a366004612614565b61053b565b6040516001600160a01b0390911681526020016101fe565b61025a6102553660046125eb565b6105c8565b005b600a545b6040519081526020016101fe565b61025a61027c36600461248c565b6106de565b61026061028f366004612614565b60009081526020819052604090206001015490565b61025a6102b236600461262c565b610710565b6102606102c53660046125eb565b610732565b61025a6102d836600461262c565b6107c8565b61025a6102eb36600461248c565b6107ea565b61025a6102fe366004612614565b610805565b61025a6103113660046126da565b610836565b610260610324366004612614565b6108b9565b61020f610337366004612614565b61095a565b61022f61034a366004612614565b6109f4565b61026061035d366004612440565b610a6b565b61025a61037036600461257a565b610af2565b61022f61038336600461264e565b610c80565b6101f261039636600461262c565b610c9f565b61020f610cc8565b610260600081565b61025a6103b9366004612540565b610cd7565b61025a6103cc3660046124c7565b610d9c565b6102606103df3660046126a7565b8051602081830181018051600d8252928201919093012091525481565b61020f61040a366004612614565b610dd3565b61026061041d366004612614565b610dde565b6102607f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61025a61045736600461262c565b610df5565b6101f261046a36600461245a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006104a382610e1e565b92915050565b6060600280546104b8906129f3565b80601f01602080910402602001604051908101604052809291908181526020018280546104e4906129f3565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b5050505050905090565b600061054682610e43565b6105ac5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105d3826109f4565b9050806001600160a01b0316836001600160a01b031614156106415760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105a3565b336001600160a01b038216148061065d575061065d813361046a565b6106cf5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a3565b6106d98383610e60565b505050565b6106e9335b82610ece565b6107055760405162461bcd60e51b81526004016105a3906128ad565b6106d9838383610fb8565b61071a8282611163565b60008281526001602052604090206106d99082610e09565b600061073d83610a6b565b821061079f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105a3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6107d28282611189565b60008281526001602052604090206106d99082611203565b6106d983838360405180602001604052806000815250610d9c565b61080e336106e3565b61082a5760405162461bcd60e51b81526004016105a3906128fe565b61083381611218565b50565b610841335b83610ece565b6108ab5760405162461bcd60e51b815260206004820152603560248201527f4e6f6e46756e6769626c6552656769737472793a2063616c6c6572206973206e6044820152741bdd081bdddb995c881b9bdc88185c1c1c9bdd9959605a1b60648201526084016105a3565b6108b5828261131f565b5050565b60006108c4600a5490565b82106109275760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105a3565b600a828154811061094857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600e6020526000908152604090208054610973906129f3565b80601f016020809104026020016040519081016040528092919081815260200182805461099f906129f3565b80156109ec5780601f106109c1576101008083540402835291602001916109ec565b820191906000526020600020905b8154815290600101906020018083116109cf57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b0316806104a35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105a3565b60006001600160a01b038216610ad65760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105a3565b506001600160a01b031660009081526005602052604090205490565b610b1c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610c9f565b610b8e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105a3565b610b97826113aa565b15610bfe5760405162461bcd60e51b815260206004820152603160248201527f4e6f6e46756e6769626c6552656769737472793a206167656e7420697320616c6044820152703932b0b23c903932b3b4b9ba32b932b21760791b60648201526084016105a3565b6000610c09600f5490565b610c1490600161294e565b9050610c2084826113d4565b610c2e600f80546001019055565b610c38818361131f565b80600d84604051610c49919061274b565b9081526040805160209281900383019020929092556000838152600e8252919091208451610c79928601906122c0565b5050505050565b6000828152600160205260408120610c989083611513565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b8906129f3565b6001600160a01b038216331415610d305760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105a3565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610da53361083b565b610dc15760405162461bcd60e51b81526004016105a3906128ad565b610dcd8484848461151f565b50505050565b60606104a382611552565b60008181526001602052604081206104a3906116c1565b6107d282826116cb565b6108b582826116f1565b6000610c98836001600160a01b038416611775565b60006001600160e01b0319821663780e9d6360e01b14806104a357506104a3826117c4565b6000908152600460205260409020546001600160a01b0316151590565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e95826109f4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ed982610e43565b610f3a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105a3565b6000610f45836109f4565b9050806001600160a01b0316846001600160a01b03161480610f805750836001600160a01b0316610f758461053b565b6001600160a01b0316145b80610fb057506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610fcb826109f4565b6001600160a01b0316146110335760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016105a3565b6001600160a01b0382166110955760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105a3565b6110a0838383611804565b6110ab600082610e60565b6001600160a01b03831660009081526005602052604081208054600192906110d4908490612999565b90915550506001600160a01b038216600090815260056020526040812080546001929061110290849061294e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008281526020819052604090206001015461117f813361180f565b6106d983836116f1565b6001600160a01b03811633146111f95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105a3565b6108b58282611873565b6000610c98836001600160a01b0384166118d8565b611221336106e3565b61123d5760405162461bcd60e51b81526004016105a3906128fe565b611246816119f5565b6000818152600e60205260408120805461125f906129f3565b80601f016020809104026020016040519081016040528092919081815260200182805461128b906129f3565b80156112d85780601f106112ad576101008083540402835291602001916112d8565b820191906000526020600020905b8154815290600101906020018083116112bb57829003601f168201915b5050506000858152600e602052604081209394506112f99392509050612344565b600d81604051611309919061274b565b9081526020016040518091039020600090555050565b61132882610e43565b61138b5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016105a3565b6000828152600c6020908152604090912082516106d9928401906122c0565b6000600d826040516113bc919061274b565b90815260405190819003602001902054151592915050565b6001600160a01b03821661142a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105a3565b61143381610e43565b156114805760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105a3565b61148c60008383611804565b6001600160a01b03821660009081526005602052604081208054600192906114b590849061294e565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000610c988383611a35565b61152a848484610fb8565b61153684848484611a6d565b610dcd5760405162461bcd60e51b81526004016105a39061285b565b606061155d82610e43565b6115c35760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016105a3565b6000828152600c6020526040812080546115dc906129f3565b80601f0160208091040260200160405190810160405280929190818152602001828054611608906129f3565b80156116555780601f1061162a57610100808354040283529160200191611655565b820191906000526020600020905b81548152906001019060200180831161163857829003601f168201915b50505050509050600061167360408051602081019091526000815290565b9050805160001415611686575092915050565b8151156116b85780826040516020016116a0929190612767565b60405160208183030381529060405292505050919050565b610fb084611b7a565b60006104a3825490565b6000828152602081905260409020600101546116e7813361180f565b6106d98383611873565b6116fb8282610c9f565b6108b5576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556117313390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546117bc575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104a3565b5060006104a3565b60006001600160e01b031982166380ac58cd60e01b14806117f557506001600160e01b03198216635b5e139f60e01b145b806104a357506104a382611c51565b6106d9838383611c76565b6118198282610c9f565b6108b557611831816001600160a01b03166014611d2e565b61183c836020611d2e565b60405160200161184d929190612796565b60408051601f198184030181529082905262461bcd60e51b82526105a391600401612848565b61187d8282610c9f565b156108b5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600081815260018301602052604081205480156119eb5760006118fc600183612999565b855490915060009061191090600190612999565b905081811461199157600086600001828154811061193e57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061196f57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806119b057634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104a3565b60009150506104a3565b6119fe81611f10565b6000818152600c602052604090208054611a17906129f3565b159050610833576000818152600c6020526040812061083391612344565b6000826000018281548110611a5a57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160a01b0384163b15611b6f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ab190339089908890889060040161280b565b602060405180830381600087803b158015611acb57600080fd5b505af1925050508015611afb575060408051601f3d908101601f19168201909252611af89181019061268b565b60015b611b55573d808015611b29576040519150601f19603f3d011682016040523d82523d6000602084013e611b2e565b606091505b508051611b4d5760405162461bcd60e51b81526004016105a39061285b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fb0565b506001949350505050565b6060611b8582610e43565b611be95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105a3565b6000611c0060408051602081019091526000815290565b90506000815111611c205760405180602001604052806000815250610c98565b80611c2a84611fb7565b604051602001611c3b929190612767565b6040516020818303038152906040529392505050565b60006001600160e01b03198216635a05180f60e01b14806104a357506104a3826120d1565b6001600160a01b038316611cd157611ccc81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611cf4565b816001600160a01b0316836001600160a01b031614611cf457611cf48382612106565b6001600160a01b038216611d0b576106d9816121a3565b826001600160a01b0316826001600160a01b0316146106d9576106d9828261227c565b60606000611d3d83600261297a565b611d4890600261294e565b67ffffffffffffffff811115611d6e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d98576020820181803683370190505b509050600360fc1b81600081518110611dc157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611dfe57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611e2284600261297a565b611e2d90600161294e565b90505b6001811115611ec1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e6f57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110611e9357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611eba816129dc565b9050611e30565b508315610c985760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105a3565b6000611f1b826109f4565b9050611f2981600084611804565b611f34600083610e60565b6001600160a01b0381166000908152600560205260408120805460019290611f5d908490612999565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606081611fdb5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156120055780611fef81612a2e565b9150611ffe9050600a83612966565b9150611fdf565b60008167ffffffffffffffff81111561202e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612058576020820181803683370190505b5090505b8415610fb05761206d600183612999565b915061207a600a86612a49565b61208590603061294e565b60f81b8183815181106120a857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506120ca600a86612966565b945061205c565b60006001600160e01b03198216637965db0b60e01b14806104a357506301ffc9a760e01b6001600160e01b03198316146104a3565b6000600161211384610a6b565b61211d9190612999565b600083815260096020526040902054909150808214612170576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a546000906121b590600190612999565b6000838152600b6020526040812054600a80549394509092849081106121eb57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600a838154811061221a57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a80548061226057634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061228783610a6b565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b8280546122cc906129f3565b90600052602060002090601f0160209004810192826122ee5760008555612334565b82601f1061230757805160ff1916838001178555612334565b82800160010185558215612334579182015b82811115612334578251825591602001919060010190612319565b5061234092915061237a565b5090565b508054612350906129f3565b6000825580601f10612360575050565b601f01602090049060005260206000209081019061083391905b5b80821115612340576000815560010161237b565b600067ffffffffffffffff808411156123aa576123aa612a89565b604051601f8501601f19908116603f011681019082821181831017156123d2576123d2612a89565b816040528093508581528686860111156123eb57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461241c57600080fd5b919050565b600082601f830112612431578081fd5b610c988383356020850161238f565b600060208284031215612451578081fd5b610c9882612405565b6000806040838503121561246c578081fd5b61247583612405565b915061248360208401612405565b90509250929050565b6000806000606084860312156124a0578081fd5b6124a984612405565b92506124b760208501612405565b9150604084013590509250925092565b600080600080608085870312156124dc578081fd5b6124e585612405565b93506124f360208601612405565b925060408501359150606085013567ffffffffffffffff811115612515578182fd5b8501601f81018713612525578182fd5b6125348782356020840161238f565b91505092959194509250565b60008060408385031215612552578182fd5b61255b83612405565b91506020830135801515811461256f578182fd5b809150509250929050565b60008060006060848603121561258e578283fd5b61259784612405565b9250602084013567ffffffffffffffff808211156125b3578384fd5b6125bf87838801612421565b935060408601359150808211156125d4578283fd5b506125e186828701612421565b9150509250925092565b600080604083850312156125fd578182fd5b61260683612405565b946020939093013593505050565b600060208284031215612625578081fd5b5035919050565b6000806040838503121561263e578182fd5b8235915061248360208401612405565b60008060408385031215612660578182fd5b50508035926020909101359150565b600060208284031215612680578081fd5b8135610c9881612a9f565b60006020828403121561269c578081fd5b8151610c9881612a9f565b6000602082840312156126b8578081fd5b813567ffffffffffffffff8111156126ce578182fd5b610fb084828501612421565b600080604083850312156126ec578182fd5b82359150602083013567ffffffffffffffff811115612709578182fd5b61271585828601612421565b9150509250929050565b600081518084526127378160208601602086016129b0565b601f01601f19169290920160200192915050565b6000825161275d8184602087016129b0565b9190910192915050565b600083516127798184602088016129b0565b83519083019061278d8183602088016129b0565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516127ce8160178501602088016129b0565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516127ff8160288401602088016129b0565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061283e9083018461271f565b9695505050505050565b602081526000610c98602083018461271f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526030908201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760408201526f1b995c881b9bdc88185c1c1c9bdd995960821b606082015260800190565b6000821982111561296157612961612a5d565b500190565b60008261297557612975612a73565b500490565b600081600019048311821515161561299457612994612a5d565b500290565b6000828210156129ab576129ab612a5d565b500390565b60005b838110156129cb5781810151838201526020016129b3565b83811115610dcd5750506000910152565b6000816129eb576129eb612a5d565b506000190190565b600181811c90821680612a0757607f821691505b60208210811415612a2857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612a4257612a42612a5d565b5060010190565b600082612a5857612a58612a73565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461083357600080fdfea2646970667358221220ebc16ebe944fc900af72250a5c4a73ebfdb9e22714a79e5f9adf31d11789a43a64736f6c63430008040033", deployedBytecode: "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063a22cb465116100a2578063ca15c87311610071578063ca15c8731461040f578063d539139314610422578063d547741f14610449578063e985e9c51461045c57600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063bce8542e146103d1578063c87b56dd146103fc57600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e1461033c57806370a082311461034f5780638d59cc021461036257600080fd5b80632f2ff15d1161017c57806342966c681161014b57806342966c68146102f057806347f00d5a146103035780634f6ccce7146103165780636017160b1461032957600080fd5b80632f2ff15d146102a45780632f745c59146102b757806336568abe146102ca57806342842e0e146102dd57600080fd5b8063095ea7b3116101b8578063095ea7b31461024757806318160ddd1461025c57806323b872dd1461026e578063248a9ca31461028157600080fd5b806301ffc9a7146101df57806306fdde0314610207578063081812fc1461021c575b600080fd5b6101f26101ed36600461266f565b610498565b60405190151581526020015b60405180910390f35b61020f6104a9565b6040516101fe9190612848565b61022f61022a366004612614565b61053b565b6040516001600160a01b0390911681526020016101fe565b61025a6102553660046125eb565b6105c8565b005b600a545b6040519081526020016101fe565b61025a61027c36600461248c565b6106de565b61026061028f366004612614565b60009081526020819052604090206001015490565b61025a6102b236600461262c565b610710565b6102606102c53660046125eb565b610732565b61025a6102d836600461262c565b6107c8565b61025a6102eb36600461248c565b6107ea565b61025a6102fe366004612614565b610805565b61025a6103113660046126da565b610836565b610260610324366004612614565b6108b9565b61020f610337366004612614565b61095a565b61022f61034a366004612614565b6109f4565b61026061035d366004612440565b610a6b565b61025a61037036600461257a565b610af2565b61022f61038336600461264e565b610c80565b6101f261039636600461262c565b610c9f565b61020f610cc8565b610260600081565b61025a6103b9366004612540565b610cd7565b61025a6103cc3660046124c7565b610d9c565b6102606103df3660046126a7565b8051602081830181018051600d8252928201919093012091525481565b61020f61040a366004612614565b610dd3565b61026061041d366004612614565b610dde565b6102607f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61025a61045736600461262c565b610df5565b6101f261046a36600461245a565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006104a382610e1e565b92915050565b6060600280546104b8906129f3565b80601f01602080910402602001604051908101604052809291908181526020018280546104e4906129f3565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b5050505050905090565b600061054682610e43565b6105ac5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105d3826109f4565b9050806001600160a01b0316836001600160a01b031614156106415760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105a3565b336001600160a01b038216148061065d575061065d813361046a565b6106cf5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a3565b6106d98383610e60565b505050565b6106e9335b82610ece565b6107055760405162461bcd60e51b81526004016105a3906128ad565b6106d9838383610fb8565b61071a8282611163565b60008281526001602052604090206106d99082610e09565b600061073d83610a6b565b821061079f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105a3565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6107d28282611189565b60008281526001602052604090206106d99082611203565b6106d983838360405180602001604052806000815250610d9c565b61080e336106e3565b61082a5760405162461bcd60e51b81526004016105a3906128fe565b61083381611218565b50565b610841335b83610ece565b6108ab5760405162461bcd60e51b815260206004820152603560248201527f4e6f6e46756e6769626c6552656769737472793a2063616c6c6572206973206e6044820152741bdd081bdddb995c881b9bdc88185c1c1c9bdd9959605a1b60648201526084016105a3565b6108b5828261131f565b5050565b60006108c4600a5490565b82106109275760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105a3565b600a828154811061094857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600e6020526000908152604090208054610973906129f3565b80601f016020809104026020016040519081016040528092919081815260200182805461099f906129f3565b80156109ec5780601f106109c1576101008083540402835291602001916109ec565b820191906000526020600020905b8154815290600101906020018083116109cf57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b0316806104a35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f7