[ { "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": false, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "CreateERC721WoonklyNFT", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "CreateERC721WoonklyNFTUser", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "indexed": false, "internalType": "struct LibPart.Part[]", "name": "creators", "type": "tuple[]" } ], "name": "Creators", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "hasApproval", "type": "bool" } ], "name": "DefaultApproval", "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": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "indexed": false, "internalType": "struct LibPart.Part[]", "name": "royalties", "type": "tuple[]" } ], "name": "RoyaltiesSet", "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": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "address[]", "name": "operators", "type": "address[]" }, { "internalType": "address", "name": "transferProxy", "type": "address" }, { "internalType": "address", "name": "lazyTransferProxy", "type": "address" } ], "name": "__ERC721WoonklyNFTUser_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "address", "name": "transferProxy", "type": "address" }, { "internalType": "address", "name": "lazyTransferProxy", "type": "address" } ], "name": "__ERC721WoonklyNFT_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_waveId", "type": "uint256" } ], "name": "assignRevealWaveIdToTokenId", "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": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_waveId", "type": "uint256" }, { "internalType": "bool", "name": "_addTokenURIToHiddenBaseURI", "type": "bool" } ], "name": "changeAddTokenURIToHiddenBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_waveId", "type": "uint256" }, { "internalType": "string", "name": "_baseURI", "type": "string" } ], "name": "changeHiddenBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_waveId", "type": "uint256" }, { "internalType": "string", "name": "_name", "type": "string" } ], "name": "changeName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_waveId", "type": "uint256" }, { "internalType": "string", "name": "_revealBaseURI", "type": "string" } ], "name": "changeRevealBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" } ], "name": "getCreators", "outputs": [ { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRevealWaveIdByTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "getWoonklyNFTV2Royalties", "outputs": [ { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "", "type": "tuple[]" } ], "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": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "creators", "type": "tuple[]" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } ], "internalType": "struct LibERC721LazyMint.Mint721Data", "name": "data", "type": "tuple" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "mintAndTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "creators", "type": "tuple[]" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } ], "internalType": "struct LibERC721LazyMint.Mint721Data", "name": "data", "type": "tuple" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "_waveId", "type": "uint256" } ], "name": "mintAndTransferReveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_waveId", "type": "uint256" } ], "name": "resetIsRevealedAndRevealURI", "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": "uint256", "name": "_waveId", "type": "uint256" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_hiddenBaseURI", "type": "string" }, { "internalType": "bool", "name": "_addTokenURIToHiddenBaseURI", "type": "bool" } ], "name": "setRevealWave", "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": "_tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokens", "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": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "creators", "type": "tuple[]" }, { "components": [ { "internalType": "address payable", "name": "account", "type": "address" }, { "internalType": "uint96", "name": "value", "type": "uint96" } ], "internalType": "struct LibPart.Part[]", "name": "royalties", "type": "tuple[]" }, { "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" } ], "internalType": "struct LibERC721LazyMint.Mint721Data", "name": "data", "type": "tuple" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "transferFromOrMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" } ], "name": "updateAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "waves", "outputs": [ { "internalType": "bool", "name": "isRevealed", "type": "bool" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "hiddenBaseURI", "type": "string" }, { "internalType": "bool", "name": "addTokenURIToHiddenBaseURI", "type": "bool" }, { "internalType": "string", "name": "revealBaseURI", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
608060405234801561001057600080fd5b5061523b806100206000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063c39cbef1116100b8578063e8a3d4851161007c578063e8a3d485146104b2578063e985e9c5146104ba578063ecff8b90146104cd578063eda0650c146104e0578063f2fde38b146104f357610227565b8063c39cbef114610442578063c781267a14610455578063c87b56dd14610479578063e07f23191461048c578063e16dcd881461049f57610227565b80638da5cb5b116100ff5780638da5cb5b146103f957806395d89b4114610401578063a22cb46514610409578063ae5f88bd1461041c578063b88d4fde1461042f57610227565b8063715018a6146103b8578063832fbb29146103c0578063891be974146103d35780638cde942a146103e657610227565b806342966c68116101b357806356841d3d1161018257806356841d3d1461036457806360dcaa96146103775780636352211e1461038a5780636c0360eb1461039d57806370a08231146103a557610227565b806342966c68146102fe5780634f64b2be14610311578063552275aa1461033157806355bbd4581461034457610227565b806317dc02c0116101fa57806317dc02c01461029f57806322a775b6146102b257806323b872dd146102c55780633907ded3146102d857806342842e0e146102eb57610227565b806301ffc9a71461022c57806306fdde0314610255578063081812fc1461026a578063095ea7b31461028a575b600080fd5b61023f61023a3660046145d4565b610506565b60405161024c9190614ae8565b60405180910390f35b61025d610519565b60405161024c9190614b48565b61027d61027836600461489a565b6105af565b60405161024c9190614a8b565b61029d6102983660046145a9565b610612565b005b61029d6102ad3660046148fa565b6106e8565b61029d6102c03660046147af565b6107a1565b61029d6102d33660046144cc565b61080f565b61029d6102e636600461493e565b610866565b61029d6102f93660046144cc565b61094b565b61029d61030c36600461489a565b610966565b61032461031f36600461489a565b610a30565b60405161024c9190614df9565b61029d61033f3660046145fc565b610a43565b61035761035236600461489a565b610b46565b60405161024c9190614ad5565b61029d6103723660046146c3565b610bd6565b61029d6103853660046148fa565b610d10565b61027d61039836600461489a565b610dc5565b61025d610e19565b6103246103b3366004614478565b610e7b565b61029d610edf565b61029d6103ce3660046147f3565b610f8b565b6103576103e136600461489a565b610fb9565b61029d6103f43660046148d8565b611034565b61027d6110ba565b61025d6110c9565b61029d610417366004614575565b61112a565b61029d61042a366004614854565b611230565b61029d61043d36600461450c565b6112a8565b61029d6104503660046148fa565b611300565b61046861046336600461489a565b6113aa565b60405161024c959493929190614af3565b61025d61048736600461489a565b611586565b61029d61049a3660046148b2565b61183a565b61029d6104ad36600461489a565b61187d565b61025d61191a565b61023f6104c8366004614494565b6119a9565b6103246104db36600461489a565b6119be565b61029d6104ee3660046149b8565b6119d1565b61029d610501366004614478565b611a46565b600061051182611b49565b90505b919050565b60fd8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a55780601f1061057a576101008083540402835291602001916105a5565b820191906000526020600020905b81548152906001019060200180831161058857829003601f168201915b5050505050905090565b60006105ba82611be8565b6105f55760405162461bcd60e51b815260040180806020018281038252602c81526020018061506f602c913960400191505060405180910390fd5b50600090815261010160205260409020546001600160a01b031690565b600061061d82610dc5565b9050806001600160a01b0316836001600160a01b031614156106705760405162461bcd60e51b815260040180806020018281038252602181526020018061515f6021913960400191505060405180910390fd5b806001600160a01b0316610682611c05565b6001600160a01b0316148061069e575061069e816104c8611c05565b6106d95760405162461bcd60e51b8152600401808060200182810382526038815260200180614f676038913960400191505060405180910390fd5b6106e38383611c09565b505050565b6106f0611c05565b6001600160a01b03166107016110ba565b6001600160a01b03161461074a576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b60008151116107745760405162461bcd60e51b815260040161076b90614c17565b60405180910390fd5b6000828152610293602090815260409091208251909161079b9160028401918501906140d0565b50505050565b6102945460ff16156108015781604001516000815181106107be57fe5b6020026020010151600001516001600160a01b03166107db6110ba565b6001600160a01b0316146108015760405162461bcd60e51b815260040161076b90614b5b565b61080b8282611c78565b5050565b61082061081a611c05565b82611dfa565b61085b5760405162461bcd60e51b81526004018080602001828103825260318152602001806151806031913960400191505060405180910390fd5b6106e3838383611e06565b61086e611c05565b6001600160a01b031661087f6110ba565b6001600160a01b0316146108c8576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b600083511180156108da575060008251115b6108f65760405162461bcd60e51b815260040161076b90614d3f565b6000848152610293602090815260409091208451909161091d9160018401918701906140d0565b50825161093390600283019060208601906140d0565b50600301805460ff1916911515919091179055505050565b6106e3838383604051806020016040528060008152506112a8565b61096f81611be8565b6109de57606081901c610980611c05565b6001600160a01b0316816001600160a01b0316146109cf5760405162461bcd60e51b815260040180806020018281038252602d815260200180615042602d913960400191505060405180910390fd5b6109d882611f25565b50610a2d565b6109e961081a611c05565b610a245760405162461bcd60e51b81526004018080602001828103825260308152602001806151d66030913960400191505060405180910390fd5b610a2d81611f41565b50565b6102926020526000908152604090205481565b600054610100900460ff1680610a5c5750610a5c611fdd565b80610a6a575060005460ff16155b610aa55760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015610ad0576000805460ff1961ff0019909116610100171660011790555b610ade878787878787611fee565b610294805460ff191690557f987747b4ba8ffbbd0c6141b2de00b3d404912aa36e77747477fe4fae05eb6457610b12611c05565b8888604051610b2393929190614a9f565b60405180910390a18015610b3d576000805461ff00191690555b50505050505050565b60606101c66000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610bcb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610b7c565b505050509050919050565b600054610100900460ff1680610bef5750610bef611fdd565b80610bfd575060005460ff16155b610c385760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015610c63576000805460ff1961ff0019909116610100171660011790555b610c71888888888787611fee565b60005b8451811015610ca357610c9b858281518110610c8c57fe5b6020026020010151600161112a565b600101610c74565b50610294805460ff191660011790557f3e128e84786e40bfc4ed56967749dff1ed0653c08d0658083217649dcb4e20f4610cdb611c05565b8989604051610cec93929190614a9f565b60405180910390a18015610d06576000805461ff00191690555b5050505050505050565b610d18611c05565b6001600160a01b0316610d296110ba565b6001600160a01b031614610d72576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b6000815111610d935760405162461bcd60e51b815260040161076b90614c17565b600082815261029360209081526040909120805460ff191660011781558251909161079b9160048401918501906140d0565b600081815260ff60205260408120546001600160a01b0316806105115760405162461bcd60e51b8152600401808060200182810382526029815260200180614fc96029913960400191505060405180910390fd5b6101c88054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a55780601f1061057a576101008083540402835291602001916105a5565b60006001600160a01b038216610ec25760405162461bcd60e51b815260040180806020018281038252602a815260200180614f9f602a913960400191505060405180910390fd5b506001600160a01b03166000908152610100602052604090205490565b610ee7611c05565b6001600160a01b0316610ef86110ba565b6001600160a01b031614610f41576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b8251610f9690611be8565b15610faf57610faa8282856000015161094b565b6106e3565b6106e383826107a1565b60008181526101fb60209081526040808320805482518185028101850190935280835260609492939192909184018215610bcb57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610b7c565b61103c611c05565b6001600160a01b031661104d6110ba565b6001600160a01b031614611096576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b60009182526102936020526040909120600301805460ff1916911515919091179055565b6033546001600160a01b031690565b60fe8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105a55780601f1061057a576101008083540402835291602001916105a5565b611132611c05565b6001600160a01b0316826001600160a01b03161415611198576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8061010260006111a6611c05565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556111ea611c05565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b611238611c05565b6001600160a01b03166112496110ba565b6001600160a01b031614611292576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b825161129e90826119d1565b6106e383836107a1565b6112b96112b3611c05565b83611dfa565b6112f45760405162461bcd60e51b81526004018080602001828103825260318152602001806151806031913960400191505060405180910390fd5b61079b8484848461206f565b611308611c05565b6001600160a01b03166113196110ba565b6001600160a01b031614611362576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b60008151116113835760405162461bcd60e51b815260040161076b90614c17565b6000828152610293602090815260409091208251909161079b9160018401918501906140d0565b610293602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f810186900486028301860190965285825260ff90921694929390929083018282801561144f5780601f106114245761010080835404028352916020019161144f565b820191906000526020600020905b81548152906001019060200180831161143257829003601f168201915b50505060028085018054604080516020601f60001961010060018716150201909416959095049283018590048502810185019091528181529596959450909250908301828280156114e15780601f106114b6576101008083540402835291602001916114e1565b820191906000526020600020905b8154815290600101906020018083116114c457829003601f168201915b50505050600383015460048401805460408051602060026101006001861615026000190190941693909304601f8101849004840282018401909252818152959660ff909416959394509083018282801561157c5780601f106115515761010080835404028352916020019161157c565b820191906000526020600020905b81548152906001019060200180831161155f57829003601f168201915b5050505050905085565b606061159182611be8565b6115ad5760405162461bcd60e51b815260040161076b90614c68565b60006115b8836119be565b600081815261029360209081526040808320815160a081018352815460ff1615158152600180830180548551600261010094831615949094026000190190911692909204601f8101879004870283018701909552848252969750949590949193858101939083018282801561166e5780601f106116435761010080835404028352916020019161166e565b820191906000526020600020905b81548152906001019060200180831161165157829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f810183900483028501830190915280845293810193908301828280156117005780601f106116d557610100808354040283529160200191611700565b820191906000526020600020905b8154815290600101906020018083116116e357829003601f168201915b5050509183525050600382015460ff16151560208083019190915260048301805460408051601f600260001960018616156101000201909416939093049283018590048502810185018252828152940193928301828280156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b5050505050815250509050606080826000015115156001151514806117ce5750606083015115156001145b156117df576117dc866120c1565b91505b8251156117f05782608001516117f6565b82604001515b905080516000141561180d57509250610514915050565b8082604051602001611820929190614a5c565b604051602081830303815290604052945050505050919050565b816001600160a01b031661184c611c05565b6001600160a01b0316146118725760405162461bcd60e51b815260040161076b90614bf2565b6106e38383836120cc565b611885611c05565b6001600160a01b03166118966110ba565b6001600160a01b0316146118df576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b60008181526102936020908152604080832081519283019182905291839052909161190e9160048401916140d0565b50805460ff1916905550565b61022e805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156119a15780601f10611976576101008083540402835291602001916119a1565b820191906000526020600020905b81548152906001019060200180831161198457829003601f168201915b505050505081565b60006119b58383612178565b90505b92915050565b6000908152610292602052604090205490565b6119d9611c05565b6001600160a01b03166119ea6110ba565b6001600160a01b031614611a33576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b6000918252610292602052604090912055565b611a4e611c05565b6001600160a01b0316611a5f6110ba565b6001600160a01b031614611aa8576040805162461bcd60e51b815260206004820181905260248201526000805160206150c7833981519152604482015290519081900360640190fd5b6001600160a01b038116611aed5760405162461bcd60e51b8152600401808060200182810382526026815260200180614ecf6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216638486f69f60e01b1480611b7a57506001600160e01b0319821663656cb66560e11b145b80611b9557506001600160e01b031982166301ffc9a760e01b145b80611bb057506001600160e01b031982166380ac58cd60e01b145b80611bcb57506001600160e01b03198216635b5e139f60e01b145b806105115750506001600160e01b03191663780e9d6360e01b1490565b600090815260ff60205260409020546001600160a01b0316151590565b3390565b60008181526101016020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611c3f82610dc5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b815160601c6000611c87611c05565b90508360400151600081518110611c9a57fe5b6020026020010151600001516001600160a01b0316826001600160a01b031614611cd65760405162461bcd60e51b815260040161076b90614bc7565b83608001515184604001515114611cec57600080fd5b806001600160a01b0316826001600160a01b03161480611d115750611d1182826119a9565b611d2d5760405162461bcd60e51b815260040161076b90614cee565b6000611d38856121a5565b905060005b856040015151811015611dae57600086604001518281518110611d5c57fe5b6020026020010151600001519050836001600160a01b0316816001600160a01b031614611da557611da5818489608001518581518110611d9857fe5b60200260200101516123ec565b50600101611d3d565b50611dbd8486600001516123f7565b611dcf85600001518660600151612411565b611de185600001518660400151612600565b611df3856000015186602001516127af565b5050505050565b60006119b58383612813565b826001600160a01b0316611e1982610dc5565b6001600160a01b031614611e5e5760405162461bcd60e51b81526004018080602001828103825260298152602001806150e76029913960400191505060405180910390fd5b6001600160a01b038216611ea35760405162461bcd60e51b8152600401808060200182810382526024815260200180614ef56024913960400191505060405180910390fd5b611eae8383836106e3565b611eb9600082611c09565b6001600160a01b0380841660008181526101006020908152604080832080546000190190559386168083528483208054600101905585835260ff90915283822080546001600160a01b0319168217905592518493929160008051602061513f83398151915291a4505050565b600090815261010360205260409020805460ff19166001179055565b6000611f4c82610dc5565b9050611f5a816000846106e3565b611f65600083611c09565b611f6e82612840565b6001600160a01b038116600090815261010060209081526040808320805460001901905584835260ff909152902080546001600160a01b0319169055611fb382611f25565b60405182906000906001600160a01b0384169060008051602061513f833981519152908390a45050565b6000611fe830612849565b15905090565b6120066040518060200160405280600081525061284f565b61200e612863565b612016612904565b61201e612863565b6120266129a1565b61202e612a3e565b612036612863565b61203e612b37565b61204783612c06565b6120518686612ccd565b61205c826001612db8565b612067816001612db8565b505050505050565b61207a848484611e06565b61208684848484612e19565b61079b5760405162461bcd60e51b8152600401808060200182810382526032815260200180614e9d6032913960400191505060405180910390fd5b606061051182612fcf565b60008381526101c66020526040812054905b81811015611df35760008581526101c66020526040902080546001600160a01b03861691908390811061210d57fe5b6000918252602090912001546001600160a01b031614156121705760008581526101c66020526040902080548491908390811061214657fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790555b6001016120de565b6001600160a01b038116600090815261012f602052604081205460ff16806119b557506119b58383612fda565b6000808260600151516001600160401b03811180156121c357600080fd5b506040519080825280602002602001820160405280156121ed578160200160208202803683370190505b50905060005b83606001515181101561223f576122208460600151828151811061221357fe5b6020026020010151613009565b82828151811061222c57fe5b60209081029190910101526001016121f3565b5060008360400151516001600160401b038111801561225d57600080fd5b50604051908082528060200260200182016040528015612287578160200160208202803683370190505b50905060005b8460400151518110156122cc576122ad8560400151828151811061221357fe5b8282815181106122b957fe5b602090810291909101015260010161228d565b507ff64326045af5fd7e15297ba939f85b550474d3899daa47d2bc1ffbdb9ced344e84600001518560200151805190602001208360405160200180828051906020019060200280838360005b83811015612330578181015183820152602001612318565b50505050905001915050604051602081830303815290604052805190602001208560405160200180828051906020019060200280838360005b83811015612381578181015183820152602001612369565b505050509050019150506040516020818303038152906040528051906020012060405160200180868152602001858152602001848152602001838152602001828152602001955050505050506040516020818303038152906040528051906020012092505050919050565b6106e3838383613076565b61080b8282604051806020016040528060008152506132f5565b6000805b82518110156125b55760006001600160a01b031683828151811061243557fe5b6020026020010151600001516001600160a01b0316141561249d576040805162461bcd60e51b815260206004820152601b60248201527f526563697069656e742073686f756c642062652070726573656e740000000000604482015290519081900360640190fd5b8281815181106124a957fe5b6020026020010151602001516001600160601b031660001415612513576040805162461bcd60e51b815260206004820181905260248201527f526f79616c74792076616c75652073686f756c6420626520706f736974697665604482015290519081900360640190fd5b82818151811061251f57fe5b6020026020010151602001516001600160601b0316820191506101c6600085815260200190815260200160002083828151811061255857fe5b60209081029190910181015182546001818101855560009485529383902082519101805492909301516001600160601b0316600160a01b026001600160a01b039182166001600160a01b0319909316929092171617905501612415565b5061271081106125f65760405162461bcd60e51b81526004018080602001828103825260258152602001806151b16025913960400191505060405180910390fd5b6106e38383613347565b60008281526101fb6020526040812090805b835181101561274e5760006001600160a01b031684828151811061263257fe5b6020026020010151600001516001600160a01b031614156126655760405162461bcd60e51b815260040161076b90614cb7565b83818151811061267157fe5b6020026020010151602001516001600160601b0316600014156126a65760405162461bcd60e51b815260040161076b90614b92565b828482815181106126b357fe5b602090810291909101810151825460018101845560009384529282902081519301805491909201516001600160601b0316600160a01b026001600160a01b039384166001600160a01b03199092169190911790921691909117905583516127449085908390811061272057fe5b6020026020010151602001516001600160601b03168361338490919063ffffffff16565b9150600101612612565b5080612710146127705760405162461bcd60e51b815260040161076b90614dab565b7f841ffb90d4cabdd1f16034f3fa831d79060febbb8167bdd54a49269365bdf78f84846040516127a1929190614e02565b60405180910390a150505050565b6127b882611be8565b6127f35760405162461bcd60e51b815260040180806020018281038252602c81526020018061509b602c913960400191505060405180910390fd5b60008281526101c76020908152604090912082516106e3928401906140d0565b6001600160a01b038216600090815261012f602052604081205460ff16806119b557506119b583836133de565b610a2d8161347a565b3b151590565b805161080b906101c89060208401906140d0565b600054610100900460ff168061287c575061287c611fdd565b8061288a575060005460ff16155b6128c55760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff161580156128f0576000805460ff1961ff0019909116610100171660011790555b8015610a2d576000805461ff001916905550565b600054610100900460ff168061291d575061291d611fdd565b8061292b575060005460ff16155b6129665760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612991576000805460ff1961ff0019909116610100171660011790555b6128f063656cb66560e11b613483565b600054610100900460ff16806129ba57506129ba611fdd565b806129c8575060005460ff16155b612a035760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612a2e576000805460ff1961ff0019909116610100171660011790555b6128f06301ffc9a760e01b613483565b600054610100900460ff1680612a575750612a57611fdd565b80612a65575060005460ff16155b612aa05760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612acb576000805460ff1961ff0019909116610100171660011790555b6000612ad5611c05565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610a2d576000805461ff001916905550565b600054610100900460ff1680612b505750612b50611fdd565b80612b5e575060005460ff16155b612b995760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612bc4576000805460ff1961ff0019909116610100171660011790555b6128f0604051806040016040528060078152602001664d696e7437323160c81b815250604051806040016040528060018152602001603160f81b815250613507565b600054610100900460ff1680612c1f5750612c1f611fdd565b80612c2d575060005460ff16155b612c685760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612c93576000805460ff1961ff0019909116610100171660011790555b8151612ca79061022e9060208501906140d0565b50612cb863e8a3d48560e01b613483565b801561080b576000805461ff00191690555050565b600054610100900460ff1680612ce65750612ce6611fdd565b80612cf4575060005460ff16155b612d2f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015612d5a576000805460ff1961ff0019909116610100171660011790555b8251612d6d9060fd9060208601906140d0565b508151612d819060fe9060208501906140d0565b50612d926380ac58cd60e01b613483565b612da2635b5e139f60e01b613483565b80156106e3576000805461ff0019169055505050565b6001600160a01b038216600081815261012f6020908152604091829020805460ff1916851515908117909155825190815291517f270dbb8ba4292910ae92862466486be25c355c837270a3d8824b36a8bc7c653b9281900390910190a25050565b6000612e2d846001600160a01b0316612849565b15612fc357836001600160a01b031663150b7a02612e49611c05565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ebc578181015183820152602001612ea4565b50505050905090810190601f168015612ee95780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015612f0b57600080fd5b505af1925050508015612f3057506040513d6020811015612f2b57600080fd5b505160015b612fa9573d808015612f5e576040519150601f19603f3d011682016040523d82523d6000602084013e612f63565b606091505b508051612fa15760405162461bcd60e51b8152600401808060200182810382526032815260200180614e9d6032913960400191505060405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612fc7565b5060015b949350505050565b6060610511826135c7565b6001600160a01b0391821660009081526101026020908152604080832093909416825291909152205460ff1690565b8051602091820151604080517f397e04204c1e1a60ee8724b71f8244e10ab5f2e9009854d80f602bda21b59ebb818601526001600160a01b03909316838201526001600160601b039091166060808401919091528151808403909101815260809092019052805191012090565b6000613081836137a2565b9050600082516041141561309c5761309982846137ee565b90505b846001600160a01b0316816001600160a01b031614611df3576130c7856001600160a01b0316612849565b1561327d5760408051630b135d3f60e11b808252600482018581526024830193845286516044840152865191936001600160a01b038a1693631626ba7e9388938a9390929091606490910190602085019080838360005b8381101561313657818101518382015260200161311e565b50505050905090810190601f1680156131635780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561318157600080fd5b505afa158015613195573d6000803e3d6000fd5b505050506040513d60208110156131ab57600080fd5b505160408051808201909152601c81527f7369676e617475726520766572696669636174696f6e206572726f72000000006020820152916001600160e01b0319909116146132775760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561323c578181015183820152602001613224565b50505050905090810190601f1680156132695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50611df3565b604080518082018252601c81527f7369676e617475726520766572696669636174696f6e206572726f72000000006020808301918252925162461bcd60e51b8152600481019384528251602482015282519293928392604490920191908083836000831561323c578181015183820152602001613224565b6132ff838361386e565b61330c6000848484612e19565b6106e35760405162461bcd60e51b8152600401808060200182810382526032815260200180614e9d6032913960400191505060405180910390fd5b7f3fa96d7b6bcbfe71ef171666d84db3cf52fa2d1c8afdb1cc8e486177f208b7df8282604051613378929190614e02565b60405180910390a15050565b6000828201838110156119b5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006133e982611be8565b6134245760405162461bcd60e51b815260040180806020018281038252602c815260200180614f3b602c913960400191505060405180910390fd5b600061342f83610dc5565b9050806001600160a01b0316846001600160a01b0316148061346a5750836001600160a01b031661345f846105af565b6001600160a01b0316145b80612fc75750612fc781856119a9565b610a2d816139d4565b6001600160e01b031980821614156134e2576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152606560205260409020805460ff19166001179055565b600054610100900460ff16806135205750613520611fdd565b8061352e575060005460ff16155b6135695760405162461bcd60e51b815260040180806020018281038252602e815260200180614ff2602e913960400191505060405180910390fd5b600054610100900460ff16158015613594576000805460ff1961ff0019909116610100171660011790555b825160208085019190912083519184019190912060979190915560985580156106e3576000805461ff0019169055505050565b60606135d282611be8565b61360d5760405162461bcd60e51b815260040180806020018281038252602f815260200180615110602f913960400191505060405180910390fd5b60008281526101c7602090815260408083208054825160026001831615610100026000190190921691909104601f8101859004850282018501909352828152929091908301828280156136a15780601f10613676576101008083540402835291602001916136a1565b820191906000526020600020905b81548152906001019060200180831161368457829003601f168201915b5050505050905060006136b2610e19565b90508051600014156136c657509050610514565b8151156136e0576136d78183613a14565b92505050610514565b806136ea85613bf9565b6040516020018083805190602001908083835b6020831061371c5780518252601f1990920191602091820191016136fd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106137645780518252601f199092019160209182019101613745565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b60006137ac613cd3565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008151604114613846576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61386486828585613d13565b9695505050505050565b6001600160a01b0382166138c9576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b6000818152610103602052604090205460ff1615613925576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b88185b1c9958591e48189d5c9b995960621b604482015290519081900360640190fd5b61392e81611be8565b15613980576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b61398c600083836106e3565b6001600160a01b0382166000818152610100602090815260408083208054600101905584835260ff909152902080546001600160a01b031916909117905561080b8282613f69565b60008181526101c760205260409020546002600019610100600184161502019091160415610a2d5760008181526101c760205260408120610a2d9161415c565b80518251606091849184911015613adf5784846040516020018083805190602001908083835b60208310613a595780518252601f199092019160209182019101613a3a565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310613aa15780518252601f199092019160209182019101613a82565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506119b8565b60005b8251811015613bef57828181518110613af757fe5b602001015160f81c60f81b6001600160f81b031916828281518110613b1857fe5b01602001516001600160f81b03191614613be75785856040516020018083805190602001908083835b60208310613b605780518252601f199092019160209182019101613b41565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310613ba85780518252601f199092019160209182019101613b89565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405293505050506119b8565b600101613ae2565b5092949350505050565b606081613c1e57506040805180820190915260018152600360fc1b6020820152610514565b8160005b8115613c3657600101600a82049150613c22565b6000816001600160401b0381118015613c4e57600080fd5b506040519080825280601f01601f191660200182016040528015613c79576020820181803683370190505b50859350905060001982015b8315613cca57600a840660300160f81b82828060019003935081518110613ca857fe5b60200101906001600160f81b031916908160001a905350600a84049350613c85565b50949350505050565b6000613d0e7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613d01613f73565b613d09613f79565b613f7f565b905090565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613d745760405162461bcd60e51b8152600401808060200182810382526022815260200180614f196022913960400191505060405180910390fd5b6000601e8560ff161115613e4e576004850360ff16601b1480613d9d57506004850360ff16601c145b613dd85760405162461bcd60e51b81526004018080602001828103825260228152602001806150206022913960400191505060405180910390fd5b6001613de387613fe1565b60048703868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613e3d573d6000803e3d6000fd5b505050602060405103519050613f05565b8460ff16601b1480613e6357508460ff16601c145b613e9e5760405162461bcd60e51b81526004018080602001828103825260228152602001806150206022913960400191505060405180910390fd5b60018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613ef8573d6000803e3d6000fd5b5050506020604051035190505b6001600160a01b038116613f60576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b61080b8282614032565b60975490565b60985490565b6000838383613f8c6140cc565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b606081901c6001600160a01b03831681146140a15760405182906001600160a01b0383169060009060008051602061513f833981519152908290a481836001600160a01b0316826001600160a01b031660008051602061513f83398151915260405160405180910390a46106e3565b60405182906001600160a01b0385169060009060008051602061513f833981519152908290a4505050565b4690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614106576000855561414c565b82601f1061411f57805160ff191683800117855561414c565b8280016001018555821561414c579182015b8281111561414c578251825591602001919060010190614131565b5061415892915061419c565b5090565b50805460018160011615610100020316600290046000825580601f106141825750610a2d565b601f016020900490600052602060002090810190610a2d91905b5b80821115614158576000815560010161419d565b803561051481614e87565b600082601f8301126141cc578081fd5b813560206141e16141dc83614e3e565b614e1b565b82815281810190858301838502870184018810156141fd578586fd5b855b8581101561422457813561421281614e87565b845292840192908401906001016141ff565b5090979650505050505050565b600082601f830112614241578081fd5b813560206142516141dc83614e3e565b82815281810190858301855b8581101561422457614274898684358b0101614351565b8452928401929084019060010161425d565b600082601f830112614296578081fd5b813560206142a66141dc83614e3e565b828152818101908583016040808602880185018910156142c4578687fd5b865b868110156143335781838b0312156142dc578788fd5b81518281018181106001600160401b03821117156142f657fe5b8352833561430381614e87565b8152838701356001600160601b038116811461431d57898afd5b81880152855293850193918101916001016142c6565b509198975050505050505050565b8035801515811461051457600080fd5b600082601f830112614361578081fd5b81356001600160401b0381111561437457fe5b614387601f8201601f1916602001614e1b565b81815284602083860101111561439b578283fd5b816020850160208301379081016020019190915292915050565b600060a082840312156143c6578081fd5b6143d060a0614e1b565b90508135815260208201356001600160401b03808211156143f057600080fd5b6143fc85838601614351565b6020840152604084013591508082111561441557600080fd5b61442185838601614286565b6040840152606084013591508082111561443a57600080fd5b61444685838601614286565b6060840152608084013591508082111561445f57600080fd5b5061446c84828501614231565b60808301525092915050565b600060208284031215614489578081fd5b81356119b581614e87565b600080604083850312156144a6578081fd5b82356144b181614e87565b915060208301356144c181614e87565b809150509250929050565b6000806000606084860312156144e0578081fd5b83356144eb81614e87565b925060208401356144fb81614e87565b929592945050506040919091013590565b60008060008060808587031215614521578081fd5b843561452c81614e87565b9350602085013561453c81614e87565b92506040850135915060608501356001600160401b0381111561455d578182fd5b61456987828801614351565b91505092959194509250565b60008060408385031215614587578182fd5b823561459281614e87565b91506145a060208401614341565b90509250929050565b600080604083850312156145bb578182fd5b82356145c681614e87565b946020939093013593505050565b6000602082840312156145e5578081fd5b81356001600160e01b0319811681146119b5578182fd5b60008060008060008060c08789031215614614578384fd5b86356001600160401b038082111561462a578586fd5b6146368a838b01614351565b9750602089013591508082111561464b578586fd5b6146578a838b01614351565b9650604089013591508082111561466c578586fd5b6146788a838b01614351565b9550606089013591508082111561468d578384fd5b5061469a89828a01614351565b9350506146a9608088016141b1565b91506146b760a088016141b1565b90509295509295509295565b600080600080600080600060e0888a0312156146dd578485fd5b87356001600160401b03808211156146f3578687fd5b6146ff8b838c01614351565b985060208a0135915080821115614714578687fd5b6147208b838c01614351565b975060408a0135915080821115614735578687fd5b6147418b838c01614351565b965060608a0135915080821115614756578283fd5b6147628b838c01614351565b955060808a0135915080821115614777578283fd5b506147848a828b016141bc565b93505061479360a089016141b1565b91506147a160c089016141b1565b905092959891949750929550565b600080604083850312156147c1578182fd5b82356001600160401b038111156147d6578283fd5b6147e2858286016143b5565b92505060208301356144c181614e87565b600080600060608486031215614807578081fd5b83356001600160401b0381111561481c578182fd5b614828868287016143b5565b935050602084013561483981614e87565b9150604084013561484981614e87565b809150509250925092565b600080600060608486031215614868578081fd5b83356001600160401b0381111561487d578182fd5b614889868287016143b5565b93505060208401356144fb81614e87565b6000602082840312156148ab578081fd5b5035919050565b6000806000606084860312156148c6578081fd5b83359250602084013561483981614e87565b600080604083850312156148ea578182fd5b823591506145a060208401614341565b6000806040838503121561490c578182fd5b8235915060208301356001600160401b03811115614928578182fd5b61493485828601614351565b9150509250929050565b60008060008060808587031215614953578182fd5b8435935060208501356001600160401b0380821115614970578384fd5b61497c88838901614351565b94506040870135915080821115614991578384fd5b5061499e87828801614351565b9250506149ad60608601614341565b905092959194509250565b600080604083850312156149ca578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b83811015614a2557815180516001600160a01b031688528301516001600160601b031683880152604090960195908201906001016149ec565b509495945050505050565b60008151808452614a48816020860160208601614e5b565b601f01601f19169290920160200192915050565b60008351614a6e818460208801614e5b565b835190830190614a82818360208801614e5b565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b0384168152606060208201819052600090614ac390830185614a30565b82810360408401526138648185614a30565b6000602082526119b560208301846149d9565b901515815260200190565b6000861515825260a06020830152614b0e60a0830187614a30565b8281036040840152614b208187614a30565b905084151560608401528281036080840152614b3c8185614a30565b98975050505050505050565b6000602082526119b56020830184614a30565b60208082526017908201527f6d696e746572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252818101527f43726561746f722073686172652073686f756c6420626520706f736974697665604082015260600190565b6020808252601190820152701d1bdad95b9259081a5b98dbdc9c9958dd607a1b604082015260600190565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b60208082526031908201527f4572726f723a20496e70757420706172616d65746572732063616e206e6f7420604082015270626520656d7074792028737472696e672960781b606082015260800190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526019908201527f4163636f756e742073686f756c642062652070726573656e7400000000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526046908201527f4572726f723a20496e70757420706172616d65746572732063616e206e6f742060408201527f626520656d7074792028737472696e6729206f7220657175616c20746f2030206060820152652875696e742960d01b608082015260a00190565b6020808252602e908201527f746f74616c20616d6f756e74206f662063726561746f7273207368617265207360408201526d0686f756c642062652031303030360941b606082015260800190565b90815260200190565b600083825260406020830152612fc760408301846149d9565b6040518181016001600160401b0381118282101715614e3657fe5b604052919050565b60006001600160401b03821115614e5157fe5b5060209081020190565b60005b83811015614e76578181015183820152602001614e5e565b8381111561079b5750506000910152565b6001600160a01b0381168114610a2d57600080fdfe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c75654552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c75654552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e65722c206e6f74206275726e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564526f79616c747920746f74616c2076616c75652073686f756c64206265203c2031303030304552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212202a13a058ed0f91aa43e4d10ba5a3b1219f79274d0631b17f46e0f77faf96ce5c64736f6c63430007060033