[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "bool", "name": "burnable_", "type": "bool" }, { "internalType": "bool", "name": "bridgeable_", "type": "bool" }, { "internalType": "address", "name": "signer_", "type": "address" }, { "internalType": "address", "name": "vault_", "type": "address" }, { "internalType": "address", "name": "costReceiver_", "type": "address" }, { "internalType": "string", "name": "contractURI_", "type": "string" }, { "internalType": "uint256[]", "name": "seriesIds_", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "seriesMaxSupplies_", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorNotAllowed", "type": "error" }, { "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BurnArtwork", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BuyArtwork", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "seriesId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "NewArtwork", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "OperatorFilterRegistry", "outputs": [ { "internalType": "contract IOperatorFilterRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_trustee", "type": "address" } ], "name": "addTrustee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "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": [], "name": "bridgeable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "burnArtworks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burnable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "r_", "type": "bytes32" }, { "internalType": "bytes32", "name": "s_", "type": "bytes32" }, { "internalType": "uint8", "name": "v_", "type": "uint8" }, { "components": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "cost", "type": "uint256" }, { "internalType": "uint256", "name": "expiryTime", "type": "uint256" }, { "internalType": "address", "name": "destination", "type": "address" }, { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "bps", "type": "uint256" } ], "internalType": "struct IFeralfileSaleData.RevenueShare[][]", "name": "revenueShares", "type": "tuple[][]" }, { "internalType": "bool", "name": "payByVaultContract", "type": "bool" } ], "internalType": "struct IFeralfileSaleData.SaleData", "name": "saleData_", "type": "tuple" } ], "name": "buyArtworks", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "codeVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "costReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "tokenId", "type": "uint256" } ], "name": "getArtwork", "outputs": [ { "components": [ { "internalType": "uint256", "name": "seriesId", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "internalType": "struct FeralfileExhibitionV4.Artwork", "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": "seriesId", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "internalType": "struct FeralfileExhibitionV4.MintData[]", "name": "data", "type": "tuple[]" } ], "name": "mintArtworks", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "pauseSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_trustee", "type": "address" } ], "name": "removeTrustee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeSale", "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": [], "name": "selling", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "seriesId", "type": "uint256" } ], "name": "seriesMaxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "seriesId", "type": "uint256" } ], "name": "seriesTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "costReceiver_", "type": "address" } ], "name": "setCostReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "signer_", "type": "address" } ], "name": "setSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setTokenBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "vault_", "type": "address" } ], "name": "setVault", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "signer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stopSaleAndBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "seriesIds", "type": "uint256[]" }, { "internalType": "address[]", "name": "recipientAddresses", "type": "address[]" } ], "name": "stopSaleAndTransfer", "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": [], "name": "tokenBaseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "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": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "trustees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operatorFilterRegisterAddress", "type": "address" } ], "name": "updateOperatorFilterRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "vault", "outputs": [ { "internalType": "contract IFeralfileVault", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6080604052600880546001600160a01b0319166daaeb6d7670e522a718067333cd4e179055600d805463ff000000191663010000001790553480156200004457600080fd5b5060405162004f5538038062004f5583398101604081905262000067916200095d565b858a8a600062000078838262000b2c565b50600162000087828262000b2c565b505050620000a46200009e6200077b60201b60201c565b6200077f565b6008546001600160a01b03163b156200013157600854604051633e9f1edf60e11b8152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201526001600160a01b0390911690637d3e3dbe90604401600060405180830381600087803b1580156200011757600080fd5b505af11580156200012c573d6000803e3d6000fd5b505050505b6001600160a01b038116620001985760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600980546001600160a01b0319166001600160a01b03929092169190911790558951620002165760405162461bcd60e51b815260206004820152602560248201527f466572616c66696c6545786869626974696f6e56343a206e616d655f20697320604482015264656d70747960d81b60648201526084016200018f565b6000895111620002795760405162461bcd60e51b815260206004820152602760248201527f466572616c66696c6545786869626974696f6e56343a2073796d626f6c5f20696044820152667320656d70747960c81b60648201526084016200018f565b6001600160a01b038516620002f75760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a207661756c744164647260448201527f6573735f206973207a65726f206164647265737300000000000000000000000060648201526084016200018f565b6001600160a01b038416620003755760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f7374526563656960448201527f7665725f206973207a65726f206164647265737300000000000000000000000060648201526084016200018f565b6000835111620003dd5760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20636f6e74726163745560448201526b52495f20697320656d70747960a01b60648201526084016200018f565b6000825111620004435760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a207365726965734964736044820152695f20697320656d70747960b01b60648201526084016200018f565b6000815111620004b15760405162461bcd60e51b815260206004820152603260248201527f466572616c66696c6545786869626974696f6e56343a205f7365726965734d6160448201527178537570706c69657320697320656d70747960701b60648201526084016200018f565b8051825114620005445760405162461bcd60e51b815260206004820152605160248201527f466572616c66696c6545786869626974696f6e56343a207365726965734d617860448201527f537570706c6965735f20616e64207365726965734964735f206c656e6774687360648201527020617265206e6f74207468652073616d6560781b608482015260a4016200018f565b600d805461ffff191689151561ff001916176101008915150217600160201b600160c01b0319166401000000006001600160a01b038781169190910291909117909155600e80546001600160a01b031916918716919091179055600b620005ac848262000b2c565b5060005b82518110156200076a576000620005c982600162000c0e565b90505b83518110156200068657838181518110620005eb57620005eb62000c2a565b602002602001015184838151811062000608576200060862000c2a565b602002602001015103620006715760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206475706c6963617465604482015268081cd95c9a595cd25960ba1b60648201526084016200018f565b806200067d8162000c40565b915050620005cc565b5060008282815181106200069e576200069e62000c2a565b602002602001015111620007045760405162461bcd60e51b815260206004820152602660248201527f466572616c66696c6545786869626974696f6e56343a207a65726f206d617820604482015265737570706c7960d01b60648201526084016200018f565b81818151811062000719576200071962000c2a565b6020026020010151600f60008584815181106200073a576200073a62000c2a565b60200260200101518152602001908152602001600020819055508080620007619062000c40565b915050620005b0565b505050505050505050505062000c5c565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620008125762000812620007d1565b604052919050565b600082601f8301126200082c57600080fd5b81516001600160401b03811115620008485762000848620007d1565b60206200085e601f8301601f19168201620007e7565b82815285828487010111156200087357600080fd5b60005b838110156200089357858101830151828201840152820162000876565b506000928101909101919091529392505050565b80518015158114620008b857600080fd5b919050565b80516001600160a01b0381168114620008b857600080fd5b600082601f830112620008e757600080fd5b815160206001600160401b03821115620009055762000905620007d1565b8160051b62000916828201620007e7565b92835284810182019282810190878511156200093157600080fd5b83870192505b84831015620009525782518252918301919083019062000937565b979650505050505050565b6000806000806000806000806000806101408b8d0312156200097e57600080fd5b8a516001600160401b03808211156200099657600080fd5b620009a48e838f016200081a565b9b5060208d0151915080821115620009bb57600080fd5b620009c98e838f016200081a565b9a50620009d960408e01620008a7565b9950620009e960608e01620008a7565b9850620009f960808e01620008bd565b975062000a0960a08e01620008bd565b965062000a1960c08e01620008bd565b955060e08d015191508082111562000a3057600080fd5b62000a3e8e838f016200081a565b94506101008d015191508082111562000a5657600080fd5b62000a648e838f01620008d5565b93506101208d015191508082111562000a7c57600080fd5b5062000a8b8d828e01620008d5565b9150509295989b9194979a5092959850565b600181811c9082168062000ab257607f821691505b60208210810362000ad357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b2757600081815260208120601f850160051c8101602086101562000b025750805b601f850160051c820191505b8181101562000b235782815560010162000b0e565b5050505b505050565b81516001600160401b0381111562000b485762000b48620007d1565b62000b608162000b59845462000a9d565b8462000ad9565b602080601f83116001811462000b98576000841562000b7f5750858301515b600019600386901b1c1916600185901b17855562000b23565b600085815260208120601f198616915b8281101562000bc95788860151825594840194600190910190840162000ba8565b508582101562000be85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000c245762000c2462000bf8565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000c555762000c5562000bf8565b5060010190565b6142e98062000c6c6000396000f3fe6080604052600436106102b25760003560e01c80636817031b11610175578063b66a0e5d116100dc578063e985e9c511610095578063f07e7fd01161006f578063f07e7fd014610941578063f2fde38b14610961578063f4e638be14610981578063fbfa77cf146109a957600080fd5b8063e985e9c51461089b578063eb5c60f2146108e4578063eee608a41461091157600080fd5b8063b66a0e5d146107fc578063b88d4fde14610811578063b9b8311a14610831578063c87b56dd14610846578063dc78ac1c14610866578063e8a3d4851461088657600080fd5b80638cba1c671161012e5780638cba1c671461074f5780638da5cb5b1461076f5780638ef79e911461078d57806395d89b41146107ad578063a07c7ce4146107c2578063a22cb465146107dc57600080fd5b80636817031b146106805780636c19e783146106a057806370a08231146106c0578063715018a6146106e05780637f06ee06146106f55780638462151c1461072257600080fd5b806323b872dd116102195780634e99b800116101d25780634e99b800146105b6578063530da8ef146105cb57806355367ba9146105ea5780636352211e146105ff57806363e602301461061f57806365a46e081461066057600080fd5b806323b872dd1461050d5780632977e4b31461052d5780632f745c591461054057806333e364cb1461056057806342842e0e146105755780634bf365df1461059557600080fd5b80631623528f1161026b5780631623528f14610432578063167ddf6e1461045257806318160ddd1461048d57806321fe0c64146104b1578063238ac933146104d157806323aed228146104ef57600080fd5b806301ffc9a714610343578063031205061461037857806306fdde0314610398578063081812fc146103ba578063095ea7b3146103f2578063114ba8ee1461041257600080fd5b3661033e57600e546001600160a01b0316331461033c5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a206f6e6c79206163636560448201527f70742066756e642066726f6d207661756c7420636f6e74726163742e0000000060648201526084015b60405180910390fd5b005b600080fd5b34801561034f57600080fd5b5061036361035e366004613486565b6109c9565b60405190151581526020015b60405180910390f35b34801561038457600080fd5b5061033c6103933660046134c6565b610a1b565b3480156103a457600080fd5b506103ad610a44565b60405161036f9190613531565b3480156103c657600080fd5b506103da6103d5366004613544565b610ad6565b6040516001600160a01b03909116815260200161036f565b3480156103fe57600080fd5b5061033c61040d36600461355d565b610afd565b34801561041e57600080fd5b5061033c61042d3660046134c6565b610b16565b34801561043e57600080fd5b5061033c61044d3660046134c6565b610b40565b34801561045e57600080fd5b5061047261046d366004613544565b610be9565b6040805182518152602092830151928101929092520161036f565b34801561049957600080fd5b506104a3600c5481565b60405190815260200161036f565b3480156104bd57600080fd5b5061033c6104cc36600461365b565b610c4c565b3480156104dd57600080fd5b506009546001600160a01b03166103da565b3480156104fb57600080fd5b50600d5462010000900460ff16610363565b34801561051957600080fd5b5061033c61052836600461368f565b610d36565b61033c61053b3660046136cb565b610d89565b34801561054c57600080fd5b506104a361055b36600461355d565b611366565b34801561056c57600080fd5b5061033c611410565b34801561058157600080fd5b5061033c61059036600461368f565b6114d3565b3480156105a157600080fd5b50600d54610363906301000000900460ff1681565b3480156105c257600080fd5b506103ad611520565b3480156105d757600080fd5b50600d5461036390610100900460ff1681565b3480156105f657600080fd5b5061033c6115ae565b34801561060b57600080fd5b506103da61061a366004613544565b611662565b34801561062b57600080fd5b506103ad6040518060400160405280601581526020017411995c985b199a5b19515e1a1a589a5d1a5bdb958d605a1b81525081565b34801561066c57600080fd5b5061033c61067b366004613738565b611697565b34801561068c57600080fd5b5061033c61069b3660046134c6565b611995565b3480156106ac57600080fd5b5061033c6106bb3660046134c6565b611a2b565b3480156106cc57600080fd5b506104a36106db3660046134c6565b611ab6565b3480156106ec57600080fd5b5061033c611b3c565b34801561070157600080fd5b506104a3610710366004613544565b60009081526010602052604090205490565b34801561072e57600080fd5b5061074261073d3660046134c6565b611b50565b60405161036f91906137f9565b34801561075b57600080fd5b5061033c61076a36600461383d565b611bbc565b34801561077b57600080fd5b506006546001600160a01b03166103da565b34801561079957600080fd5b5061033c6107a8366004613908565b611ceb565b3480156107b957600080fd5b506103ad611d5a565b3480156107ce57600080fd5b50600d546103639060ff1681565b3480156107e857600080fd5b5061033c6107f7366004613969565b611d69565b34801561080857600080fd5b5061033c611d7d565b34801561081d57600080fd5b5061033c61082c3660046139a0565b611d9a565b34801561083d57600080fd5b5061033c611def565b34801561085257600080fd5b506103ad610861366004613544565b611e90565b34801561087257600080fd5b5061033c6108813660046134c6565b611f9e565b34801561089257600080fd5b506103ad611fca565b3480156108a757600080fd5b506103636108b6366004613a1b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156108f057600080fd5b506104a36108ff366004613544565b6000908152600f602052604090205490565b34801561091d57600080fd5b5061036361092c3660046134c6565b60076020526000908152604090205460ff1681565b34801561094d57600080fd5b506008546103da906001600160a01b031681565b34801561096d57600080fd5b5061033c61097c3660046134c6565b611fd7565b34801561098d57600080fd5b50600d546103da9064010000000090046001600160a01b031681565b3480156109b557600080fd5b50600e546103da906001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b14806109fa57506001600160e01b03198216635b5e139f60e01b145b80610a1557506301ffc9a760e01b6001600160e01b03198316145b92915050565b610a23612050565b6001600160a01b03166000908152600760205260409020805460ff19169055565b606060008054610a5390613a4e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7f90613a4e565b8015610acc5780601f10610aa157610100808354040283529160200191610acc565b820191906000526020600020905b815481529060010190602001808311610aaf57829003601f168201915b5050505050905090565b6000610ae1826120aa565b506000908152600460205260409020546001600160a01b031690565b81610b07816120cf565b610b1183836121a1565b505050565b610b1e612050565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610b48612050565b6001600160a01b038116610bbb5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f737452656365696044820152737665725f206973207a65726f206164647265737360601b6064820152608401610333565b600d80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6040805180820190915260008082526020820152610c06826122b1565b610c225760405162461bcd60e51b815260040161033390613a88565b50600090815260116020908152604091829020825180840190935280548352600101549082015290565b600d5460ff16610cb35760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f6b656e2069732060448201526b6e6f74206275726e61626c6560a01b6064820152608401610333565b60005b8151811015610d3257610ce233838381518110610cd557610cd5613abf565b60200260200101516122ce565b610cfe5760405162461bcd60e51b815260040161033390613ad5565b610d20828281518110610d1357610d13613abf565b602002602001015161234d565b80610d2a81613b38565b915050610cb6565b5050565b826001600160a01b0381163314610d5057610d50336120cf565b306001600160a01b03841603610d785760405162461bcd60e51b815260040161033390613b51565b610d83848484612423565b50505050565b600d5462010000900460ff16610df45760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a2073616c65206973206e6044820152691bdd081cdd185c9d195960b21b6064820152608401610333565b610dfc612454565b610e05816124cf565b610e1560e0820160c08301613bae565b610e845780353414610e7f5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207060448201526c185e5b595b9d08185b5bdd5b9d609a1b6064820152608401610333565b610eed565b600e54604051632eeee16360e01b81526001600160a01b0390911690632eeee16390610eba908790879087908790600401613dba565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b6000463083604051602001610f0493929190613dec565b604051602081830303815290604052805190602001209050610f2881868686612628565b610f855760405162461bcd60e51b815260206004820152602860248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207360448201526769676e617475726560c01b6064820152608401610333565b6000602083013583351115610fbf57610fa16080840184613e1f565b9050610fb260208501358535613e68565b610fbc9190613e7b565b90505b60008060005b610fd26080870187613e1f565b90508110156112865761102830610fef6080890160608a016134c6565b610ffc60808a018a613e1f565b8581811061100c5761100c613abf565b9050602002013560405180602001604052806000815250612680565b83156112085760005b61103e60a0880188613e1f565b8381811061104e5761104e613abf565b90506020028101906110609190613e9d565b905081101561120657600061271061107b60a08a018a613e1f565b8581811061108b5761108b613abf565b905060200281019061109d9190613e9d565b848181106110ad576110ad613abf565b90506040020160200135876110c29190613ee6565b6110cc9190613e7b565b600d5490915064010000000090046001600160a01b03166110f060a08a018a613e1f565b8581811061110057611100613abf565b90506020028101906111129190613e9d565b8481811061112257611122613abf565b61113892602060409092020190810191506134c6565b6001600160a01b031603611158576111508185613efd565b9350506111f4565b6111628186613efd565b945061117160a0890189613e1f565b8481811061118157611181613abf565b90506020028101906111939190613e9d565b838181106111a3576111a3613abf565b6111b992602060409092020190810191506134c6565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156111f1573d6000803e3d6000fd5b50505b806111fe81613b38565b915050611031565b505b6112156080870187613e1f565b8281811061122557611225613abf565b9050602002013586606001602081019061123f91906134c6565b6001600160a01b03167f0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f60405160405180910390a38061127e81613b38565b915050610fc5565b506112918183613efd565b6112a060208701358735613e68565b10156113035760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f74616c2062707360448201526b0206f7665722031302c3030360a41b6064820152608401610333565b6000611310838735613e68565b9050801561135b57600d546040516401000000009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611359573d6000803e3d6000fd5b505b505050505050505050565b600061137183611ab6565b82106113d35760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610333565b6001600160a01b03831660009081526012602052604090208054839081106113fd576113fd613abf565b9060005260206000200154905092915050565b611418612050565b600d546301000000900460ff16156114425760405162461bcd60e51b815260040161033390613f10565b600d5462010000900460ff16156114b85760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015273726571756972656420746f2062652066616c736560601b6064820152608401610333565b6114c0612454565b600d805462ff0000191662010000179055565b826001600160a01b03811633146114ed576114ed336120cf565b306001600160a01b038416036115155760405162461bcd60e51b815260040161033390613b51565b610d838484846126b3565b600a805461152d90613a4e565b80601f016020809104026020016040519081016040528092919081815260200182805461155990613a4e565b80156115a65780601f1061157b576101008083540402835291602001916115a6565b820191906000526020600020905b81548152906001019060200180831161158957829003601f168201915b505050505081565b6115b6612050565b600d546301000000900460ff16156115e05760405162461bcd60e51b815260040161033390613f10565b600d5462010000900460ff166116545760405162461bcd60e51b815260206004820152603360248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015272726571756972656420746f206265207472756560681b6064820152608401610333565b600d805462ff000019169055565b6000818152600260205260408120546001600160a01b031680610a155760405162461bcd60e51b815260040161033390613a88565b61169f612050565b600082511180156116b1575060008151115b6117315760405162461bcd60e51b815260206004820152604560248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206f7220726563697069656e74416464726573736573206c656e677468206973606482015264207a65726f60d81b608482015260a401610333565b80518251146117bd5760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206c656e67746820697320646966666572656e742066726f6d2072656369706960648201526b656e7441646472657373657360a01b608482015260a401610333565b6117c56115ae565b3060008181526012602090815260408083208054825181850281018501909352808352919290919083018282801561181c57602002820191906000526020600020905b815481526020019060010190808311611808575b5050505050905060005b815181101561191857600082828151811061184357611843613abf565b602090810291909101810151600081815260118352604080822081518083019092528054825260010154938101939093529092505b87518161ffff16101561190257878161ffff168151811061189b5761189b613abf565b60200260200101518260000151036118f0576000878261ffff16815181106118c5576118c5613abf565b602002602001015190506118ea87828660405180602001604052806000815250612680565b50611902565b806118fa81613f64565b915050611878565b505050808061191090613b38565b915050611826565b5061192282611ab6565b15610d835760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a20546f6b656e20666f7260448201527f2073616c652062616c616e63652068617320746f206265207a65726f000000006064820152608401610333565b61199d612050565b6001600160a01b038116611a095760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a207661756c745f20697360448201526c207a65726f206164647265737360981b6064820152608401610333565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611a33612050565b6001600160a01b038116611a945760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b6064820152608401610333565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038216611b205760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610333565b506001600160a01b031660009081526003602052604090205490565b611b44612050565b611b4e60006126ce565b565b6001600160a01b038116600090815260126020908152604091829020805483518184028101840190945280845260609392830182828015611bb057602002820191906000526020600020905b815481526020019060010190808311611b9c575b50505050509050919050565b3360009081526007602052604090205460ff1680611be457506006546001600160a01b031633145b611bed57600080fd5b600d546301000000900460ff16611c645760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a20636f6e747261637420604482015274191bd95cdb89dd08185b1b1bddc81d1bc81b5a5b9d605a1b6064820152608401610333565b60005b81811015610b1157611cd9838383818110611c8457611c84613abf565b90506060020160000135848484818110611ca057611ca0613abf565b90506060020160200135858585818110611cbc57611cbc613abf565b9050606002016040016020810190611cd491906134c6565b612720565b80611ce381613b38565b915050611c67565b611cf3612050565b6000815111611d4e5760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a20626173655552495f20697320656d70746044820152607960f81b6064820152608401610333565b600a610d328282613fd3565b606060018054610a5390613a4e565b81611d73816120cf565b610b1183836128a2565b611d85612050565b600d805463ff00000019169055611b4e611410565b836001600160a01b0381163314611db457611db4336120cf565b306001600160a01b03851603611ddc5760405162461bcd60e51b815260040161033390613b51565b611de8858585856128ad565b5050505050565b611df7612050565b611dff6115ae565b30600090815260126020908152604080832080548251818502810185019093528083529192909190830182828015611e5657602002820191906000526020600020905b815481526020019060010190808311611e42575b5050505050905060005b8151811015610d3257611e7e828281518110610d1357610d13613abf565b80611e8881613b38565b915050611e60565b60606000600a8054611ea190613a4e565b905011611eff5760405162461bcd60e51b815260206004820152602660248201527f4552433732314d657461646174613a205f746f6b656e4261736555524920697360448201526520656d70747960d01b6064820152608401610333565b611f08826122b1565b611f6c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610333565b600a611f77836128df565b604051602001611f88929190614092565b6040516020818303038152906040529050919050565b611fa6612050565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b600b805461152d90613a4e565b611fdf612050565b6001600160a01b0381166120445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610333565b61204d816126ce565b50565b6006546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610333565b6120b3816122b1565b61204d5760405162461bcd60e51b815260040161033390613a88565b6008546001600160a01b03163b1561204d57600854604051633185c44d60e21b81523060048201526001600160a01b0383811660248301529091169063c617113490604401602060405180830381865afa158015612131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121559190614126565b61204d5760405162461bcd60e51b815260206004820152601760248201527f6f70657261746f72206973206e6f7420616c6c6f7765640000000000000000006044820152606401610333565b60006121ac82611662565b9050806001600160a01b0316836001600160a01b0316036122195760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610333565b336001600160a01b0382161480612235575061223581336108b6565b6122a75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610333565b610b118383612972565b6000908152600260205260409020546001600160a01b0316151590565b6000806122da83611662565b9050806001600160a01b0316846001600160a01b0316148061232157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806123455750836001600160a01b031661233a84610ad6565b6001600160a01b0316145b949350505050565b612356816122b1565b6123725760405162461bcd60e51b815260040161033390613a88565b600081815260116020908152604080832081518083018352815480825260019283015482860152855260109093529083208054929391929091906123b7908490613e68565b925050819055506001600c60008282546123d19190613e68565b90915550506000828152601160205260408120818155600101556123f4826129e0565b60405182907fbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d590600090a25050565b61242d33826122ce565b6124495760405162461bcd60e51b815260040161033390613ad5565b610b11838383612a83565b600061245f30611ab6565b90506000811161204d5760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a204e6f20746f6b656e206044820152741bdddb995908189e481d1a194818dbdb9d1c9858dd605a1b6064820152608401610333565b60006124de6080830183613e1f565b9050116125395760405162461bcd60e51b8152602060048201526024808201527f466572616c66696c6553616c65446174613a20746f6b656e49647320697320656044820152636d70747960e01b6064820152608401610333565b61254660a0820182613e1f565b90506125556080830183613e1f565b9050146125ca5760405162461bcd60e51b815260206004820152603d60248201527f466572616c66696c6553616c65446174613a20746f6b656e49647320616e642060448201527f726576656e7565536861726573206c656e677468206d69736d617463680000006064820152608401610333565b4281604001351161204d5760405162461bcd60e51b815260206004820152602260248201527f466572616c66696c6553616c65446174613a2073616c65206973206578706972604482015261195960f21b6064820152608401610333565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c8120819061266590848787612bf4565b6009546001600160a01b039081169116149695505050505050565b61268b848484612a83565b61269784848484612c1c565b610d835760405162461bcd60e51b815260040161033390614143565b610b1183838360405180602001604052806000815250611d9a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000838152600f6020526040902054151561273a846128df565b60405160200161274a9190614195565b604051602081830303815290604052906127775760405162461bcd60e51b81526004016103339190613531565b506000838152600f6020908152604080832054601090925290912054106127f25760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206e6f20736c6f747320604482015268617661696c61626c6560b81b6064820152608401610333565b6001600c60008282546128059190613efd565b90915550506000838152601060205260408120805460019290612829908490613efd565b90915550506040805180820182528481526020808201858152600086815260119092529290209051815590516001909101556128658183612d1a565b8183826001600160a01b03167f407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea60405160405180910390a4505050565b610d32338383612e95565b6128b733836122ce565b6128d35760405162461bcd60e51b815260040161033390613ad5565b610d8384848484612680565b606060006128ec83612f63565b60010190506000816001600160401b0381111561290b5761290b613587565b6040519080825280601f01601f191660200182016040528015612935576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461293f575b509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906129a782611662565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129eb82611662565b90506129fb81600084600161303b565b612a0482611662565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316612a9682611662565b6001600160a01b031614612abc5760405162461bcd60e51b8152600401610333906141f2565b6001600160a01b038216612b1e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610333565b612b2b838383600161303b565b826001600160a01b0316612b3e82611662565b6001600160a01b031614612b645760405162461bcd60e51b8152600401610333906141f2565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000806000612c0587878787613152565b91509150612c1281613216565b5095945050505050565b60006001600160a01b0384163b15612d1257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612c60903390899088908890600401614237565b6020604051808303816000875af1925050508015612c9b575060408051601f3d908101601f19168201909252612c989181019061426a565b60015b612cf8573d808015612cc9576040519150601f19603f3d011682016040523d82523d6000602084013e612cce565b606091505b508051600003612cf05760405162461bcd60e51b815260040161033390614143565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612345565b506001612345565b6001600160a01b038216612d705760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610333565b612d79816122b1565b15612dc65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610333565b612dd460008383600161303b565b612ddd816122b1565b15612e2a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610333565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b031603612ef65760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610333565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612fa25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612fce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612fec57662386f26fc10000830492506010015b6305f5e1008310613004576305f5e100830492506008015b612710831061301857612710830492506004015b6064831061302a576064830492506002015b600a8310610a155760010192915050565b60018111156130aa5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610333565b816001600160a01b038516158015906130d55750836001600160a01b0316856001600160a01b031614155b156130e4576130e48582613360565b6001600160a01b0384161580159061310e5750846001600160a01b0316846001600160a01b031614155b15611de8576001600160a01b038416600090815260126020908152604080832080546001810182559084528284208101859055848452601390925290912055611de8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613189575060009050600361320d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131dd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132065760006001925092505061320d565b9150600090505b94509492505050565b600081600481111561322a5761322a614287565b036132325750565b600181600481111561324657613246614287565b036132935760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610333565b60028160048111156132a7576132a7614287565b036132f45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610333565b600381600481111561330857613308614287565b0361204d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610333565b6000600161336d84611ab6565b6133779190613e68565b60008381526013602052604090205490915080821461341e576001600160a01b03841660009081526012602052604081208054849081106133ba576133ba613abf565b906000526020600020015490508060126000876001600160a01b03166001600160a01b0316815260200190815260200160002083815481106133fe576133fe613abf565b600091825260208083209091019290925591825260139052604090208190555b60008381526013602090815260408083208390556001600160a01b0387168352601290915290208054806134545761345461429d565b6001900381819060005260206000200160009055905550505050565b6001600160e01b03198116811461204d57600080fd5b60006020828403121561349857600080fd5b81356134a381613470565b9392505050565b80356001600160a01b03811681146134c157600080fd5b919050565b6000602082840312156134d857600080fd5b6134a3826134aa565b60005b838110156134fc5781810151838201526020016134e4565b50506000910152565b6000815180845261351d8160208601602086016134e1565b601f01601f19169290920160200192915050565b6020815260006134a36020830184613505565b60006020828403121561355657600080fd5b5035919050565b6000806040838503121561357057600080fd5b613579836134aa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156135c5576135c5613587565b604052919050565b60006001600160401b038211156135e6576135e6613587565b5060051b60200190565b600082601f83011261360157600080fd5b81356020613616613611836135cd565b61359d565b82815260059290921b8401810191818101908684111561363557600080fd5b8286015b848110156136505780358352918301918301613639565b509695505050505050565b60006020828403121561366d57600080fd5b81356001600160401b0381111561368357600080fd5b612345848285016135f0565b6000806000606084860312156136a457600080fd5b6136ad846134aa565b92506136bb602085016134aa565b9150604084013590509250925092565b600080600080608085870312156136e157600080fd5b8435935060208501359250604085013560ff8116811461370057600080fd5b915060608501356001600160401b0381111561371b57600080fd5b850160e0818803121561372d57600080fd5b939692955090935050565b6000806040838503121561374b57600080fd5b82356001600160401b038082111561376257600080fd5b61376e868387016135f0565b935060209150818501358181111561378557600080fd5b85019050601f8101861361379857600080fd5b80356137a6613611826135cd565b81815260059190911b820183019083810190888311156137c557600080fd5b928401925b828410156137ea576137db846134aa565b825292840192908401906137ca565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561383157835183529284019291840191600101613815565b50909695505050505050565b6000806020838503121561385057600080fd5b82356001600160401b038082111561386757600080fd5b818501915085601f83011261387b57600080fd5b81358181111561388a57600080fd5b86602060608302850101111561389f57600080fd5b60209290920196919550909350505050565b60006001600160401b038311156138ca576138ca613587565b6138dd601f8401601f191660200161359d565b90508281528383830111156138f157600080fd5b828260208301376000602084830101529392505050565b60006020828403121561391a57600080fd5b81356001600160401b0381111561393057600080fd5b8201601f8101841361394157600080fd5b612345848235602084016138b1565b801515811461204d57600080fd5b80356134c181613950565b6000806040838503121561397c57600080fd5b613985836134aa565b9150602083013561399581613950565b809150509250929050565b600080600080608085870312156139b657600080fd5b6139bf856134aa565b93506139cd602086016134aa565b92506040850135915060608501356001600160401b038111156139ef57600080fd5b8501601f81018713613a0057600080fd5b613a0f878235602084016138b1565b91505092959194509250565b60008060408385031215613a2e57600080fd5b613a37836134aa565b9150613a45602084016134aa565b90509250929050565b600181811c90821680613a6257607f821691505b602082108103613a8257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060018201613b4a57613b4a613b22565b5060010190565b6020808252603e908201527f466572616c66696c6545786869626974696f6e56343a20436f6e74726163742060408201527f69736e277420616c6c6f77656420746f207265636569766520746f6b656e0000606082015260800190565b600060208284031215613bc057600080fd5b81356134a381613950565b6000808335601e19843603018112613be257600080fd5b83016020810192503590506001600160401b03811115613c0157600080fd5b8060051b3603821315613c1357600080fd5b9250929050565b8183526000602080850194508260005b85811015613c60576001600160a01b03613c43836134aa565b168752818301358388015260409687019690910190600101613c2a565b509495945050505050565b81835260006020808501808196508560051b810191508460005b87811015613cf25782840389528135601e19883603018112613ca657600080fd5b870185810190356001600160401b03811115613cc157600080fd5b8060061b3603821315613cd357600080fd5b613cde868284613c1a565b9a87019a9550505090840190600101613c85565b5091979650505050505050565b8035825260208082013590830152604080820135908301526001600160a01b03613d2b606083016134aa565b1660608301526000613d406080830183613bcb565b60e06080860181905285018190526101006001600160fb1b03821115613d6557600080fd5b8160051b91508183828801378186019250613d8360a0860186613bcb565b9250818785030160a0880152613d9c8285018483613c6b565b9350505050613dad60c0840161395e565b80151560c086015261296a565b84815283602082015260ff83166040820152608060608201526000613de26080830184613cff565b9695505050505050565b8381526001600160a01b0383166020820152606060408201819052600090613e1690830184613cff565b95945050505050565b6000808335601e19843603018112613e3657600080fd5b8301803591506001600160401b03821115613e5057600080fd5b6020019150600581901b3603821315613c1357600080fd5b81810381811115610a1557610a15613b22565b600082613e9857634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e19843603018112613eb457600080fd5b8301803591506001600160401b03821115613ece57600080fd5b6020019150600681901b3603821315613c1357600080fd5b8082028115828204841417610a1557610a15613b22565b80820180821115610a1557610a15613b22565b60208082526034908201527f466572616c66696c6545786869626974696f6e56343a206d696e7461626c6520604082015273726571756972656420746f2062652066616c736560601b606082015260800190565b600061ffff808316818103613f7b57613f7b613b22565b6001019392505050565b601f821115610b1157600081815260208120601f850160051c81016020861015613fac5750805b601f850160051c820191505b81811015613fcb57828155600101613fb8565b505050505050565b81516001600160401b03811115613fec57613fec613587565b61400081613ffa8454613a4e565b84613f85565b602080601f831160018114614035576000841561401d5750858301515b600019600386901b1c1916600185901b178555613fcb565b600085815260208120601f198616915b8281101561406457888601518255948401946001909101908401614045565b50858210156140825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008084546140a081613a4e565b600182811680156140b857600181146140cd576140fc565b60ff19841687528215158302870194506140fc565b8860005260208060002060005b858110156140f35781548a8201529084019082016140da565b50505082870194505b50602f60f81b8452865192506141188382860160208a016134e1565b919092010195945050505050565b60006020828403121561413857600080fd5b81516134a381613950565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f466572616c66696c6545786869626974696f6e56343a2073657269657349642081526e03237b2b9b713ba1032bc34b9ba1d1608d1b6020820152600082516141e581602f8501602087016134e1565b91909101602f0192915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613de290830184613505565b60006020828403121561427c57600080fd5b81516134a381613470565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122054b47d0b9dc755bd2838e20ef5647012627f7d7e1a0bd2fb64fb967ca3e11ad464736f6c634300081100330000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000db33365a8730de2f7574ff1189fb9d337bf4c36d0000000000000000000000001ab40a882ae5373bad177470951ecb5f17cdf090000000000000000000000000db33365a8730de2f7574ff1189fb9d337bf4c36d00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000000c54657374204d4d2073686f7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009464552414c46494c450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005268747470733a2f2f697066732e746573742e6269746d61726b2e636f6d2f697066732f2f516d636e67504d6b6452444a746331413952535a4c4b784250664745687838346964676847364454325768674a780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020