6080604052604051620019ad380380620019ad8339810160408190526200002691620006fb565b600080546001600160a01b0319163390811782556040518a928a928992909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060046200007b848262000851565b5060056200008a838262000851565b506006805460ff191660ff9290921691909117905550508051600e80546001600160a01b03199081166001600160a01b03938416908117909255602080850151600f80548416918616919091179055600980548316909317909255600a8054909116928516928317905560078890556040805163c45a015560e01b8152905163c45a0155926004838101939192918290030181865afa15801562000132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015891906200091d565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e191906200091d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025591906200091d565b600880546001600160a01b0319166001600160a01b0392831690811790915560009081526002602090815260408083206009548516845282528083206000199055600e549093168252600b90819052918120805460ff191660019081179091559190620002ca6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b90925290208054909116600117905562000340620003216000546001600160a01b031690565b6200032e87600a62000a4e565b6200033a908962000a5f565b620003b4565b6200035b6127106200035487600a62000a4e565b90620004b5565b62000367878662000a5f565b62000373919062000a5f565b600d556200038a6127106200035487600a62000a4e565b62000396878562000a5f565b620003a2919062000a5f565b600c555062000ae79650505050505050565b6001600160a01b038216620004205760405162461bcd60e51b815260206004820152602760248201527f5374616e6461726445524332303a206d696e7420746f20746865207a65726f206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6003546200042f90826200050d565b6003556001600160a01b0382166000908152600160205260409020546200045790826200050d565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004a99085815260200190565b60405180910390a35050565b6000620004ff83836040518060400160405280601d81526020017f4c6962536166654d6174683a206469766973696f6e206279207a65726f0000008152506200057060201b60201c565b90505b92915050565b505050565b6000806200051c838562000a79565b905083811015620004ff5760405162461bcd60e51b815260206004820152601e60248201527f4c6962536166654d6174683a206164646974696f6e206f766572666c6f770000604482015260640162000417565b60008183620005945760405162461bcd60e51b815260040162000417919062000a8f565b506000620005a3848662000ac4565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620005df578181015183820152602001620005c5565b50506000910152565b600082601f830112620005fa57600080fd5b81516001600160401b0380821115620006175762000617620005ac565b604051601f8301601f19908116603f01168101908282118183101715620006425762000642620005ac565b816040528381528660208588010111156200065c57600080fd5b6200066f846020830160208901620005c2565b9695505050505050565b80516001600160a01b03811681146200069157600080fd5b919050565b600060408284031215620006a957600080fd5b604080519081016001600160401b0381118282101715620006ce57620006ce620005ac565b604052905080620006df8362000679565b8152620006ef6020840162000679565b60208201525092915050565b600080600080600080600080610120898b0312156200071957600080fd5b88516001600160401b03808211156200073157600080fd5b6200073f8c838d01620005e8565b995060208b01519150808211156200075657600080fd5b50620007658b828c01620005e8565b97505060408901519550606089015160ff811681146200078457600080fd5b60808a015160a08b015191965094509250620007a360c08a0162000679565b9150620007b48a60e08b0162000696565b90509295985092959890939650565b600181811c90821680620007d857607f821691505b602082108103620007f957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050857600081815260208120601f850160051c81016020861015620008285750805b601f850160051c820191505b81811015620008495782815560010162000834565b505050505050565b81516001600160401b038111156200086d576200086d620005ac565b62000885816200087e8454620007c3565b84620007ff565b602080601f831160018114620008bd5760008415620008a45750858301515b600019600386901b1c1916600185901b17855562000849565b600085815260208120601f198616915b82811015620008ee57888601518255948401946001909101908401620008cd565b50858210156200090d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200093057600080fd5b620004ff8262000679565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009925781600019048211156200097657620009766200093b565b808516156200098457918102915b93841c939080029062000956565b509250929050565b600082620009ab5750600162000502565b81620009ba5750600062000502565b8160018114620009d35760028114620009de57620009fe565b600191505062000502565b60ff841115620009f257620009f26200093b565b50506001821b62000502565b5060208310610133831016604e8410600b841016171562000a23575081810a62000502565b62000a2f838362000951565b806000190482111562000a465762000a466200093b565b029392505050565b6000620004ff60ff8416836200099a565b80820281158282048414176200050257620005026200093b565b808201808211156200050257620005026200093b565b602081526000825180602084015262000ab0816040850160208701620005c2565b601f01601f19169190910160400192915050565b60008262000ae257634e487b7160e01b600052601260045260246000fd5b500490565b610eb68062000af76000396000f3fe60806040526004361061010c5760003560e01c8063715018a611610095578063a457c2d711610064578063a457c2d7146102d8578063a9059cbb146102f8578063dd62ed3e14610318578063f2fde38b1461035e578063f928364c1461037e57600080fd5b8063715018a61461025657806386d25a131461026d5780638da5cb5b146102a557806395d89b41146102c357600080fd5b806323b872dd116100dc57806323b872dd146101a8578063313ce567146101c857806339509351146101ea5780636aebaee41461020a57806370a082311461022057600080fd5b8062dc2cd21461011857806306fdde0314610141578063095ea7b31461016357806318160ddd1461019357600080fd5b3661011357005b600080fd5b34801561012457600080fd5b5061012e600c5481565b6040519081526020015b60405180910390f35b34801561014d57600080fd5b50610156610393565b6040516101389190610c0a565b34801561016f57600080fd5b5061018361017e366004610c74565b610425565b6040519015158152602001610138565b34801561019f57600080fd5b5060035461012e565b3480156101b457600080fd5b506101836101c3366004610c9e565b61043c565b3480156101d457600080fd5b5060065460405160ff9091168152602001610138565b3480156101f657600080fd5b50610183610205366004610c74565b6104a5565b34801561021657600080fd5b5061012e600d5481565b34801561022c57600080fd5b5061012e61023b366004610cda565b6001600160a01b031660009081526001602052604090205490565b34801561026257600080fd5b5061026b6104db565b005b34801561027957600080fd5b50600a5461028d906001600160a01b031681565b6040516001600160a01b039091168152602001610138565b3480156102b157600080fd5b506000546001600160a01b031661028d565b3480156102cf57600080fd5b50610156610558565b3480156102e457600080fd5b506101836102f3366004610c74565b610567565b34801561030457600080fd5b50610183610313366004610c74565b6105b6565b34801561032457600080fd5b5061012e610333366004610cf5565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561036a57600080fd5b5061026b610379366004610cda565b6105c3565b34801561038a57600080fd5b5061026b6106ad565b6060600480546103a290610d28565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610d28565b801561041b5780601f106103f05761010080835404028352916020019161041b565b820191906000526020600020905b8154815290600101906020018083116103fe57829003601f168201915b5050505050905090565b60006104323384846106e5565b5060015b92915050565b600061044984848461081b565b61049b843361049685604051806060016040528060308152602001610e23603091396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610906565b6106e5565b5060019392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104329185906104969086610940565b6000546001600160a01b0316331461050e5760405162461bcd60e51b815260040161050590610d62565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6060600580546103a290610d28565b60006104323384610496856040518060600160405280602d8152602001610df6602d91393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610906565b600061043233848461081b565b6000546001600160a01b031633146105ed5760405162461bcd60e51b815260040161050590610d62565b6001600160a01b0381166106525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610505565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106d75760405162461bcd60e51b815260040161050590610d62565b600354600d55600354600c55565b6001600160a01b0383166107505760405162461bcd60e51b815260206004820152602c60248201527f5374616e6461726445524332303a20617070726f76652066726f6d207468652060448201526b7a65726f206164647265737360a01b6064820152608401610505565b6001600160a01b0382166107b95760405162461bcd60e51b815260206004820152602a60248201527f5374616e6461726445524332303a20617070726f766520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610505565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b61082583836109a6565b6108f657600d548111156108735760405162461bcd60e51b815260206004820152601560248201527413585e08151c985b9cd858dd1a5bdb881b1a5b5a5d605a1b6044820152606401610505565b6008546001600160a01b038381169116146108f657600c54816108ab846001600160a01b031660009081526001602052604090205490565b6108b59190610dad565b11156108f65760405162461bcd60e51b815260206004820152601060248201526f13585e0815d85b1b195d081b1a5b5a5d60821b6044820152606401610505565b610901838383610a74565b505050565b6000818484111561092a5760405162461bcd60e51b81526004016105059190610c0a565b5060006109378486610dc0565b95945050505050565b60008061094d8385610dad565b90508381101561099f5760405162461bcd60e51b815260206004820152601e60248201527f4c6962536166654d6174683a206164646974696f6e206f766572666c6f7700006044820152606401610505565b9392505050565b600f5460405163a23a9a5b60e01b81526001600160a01b0384811660048301528381166024830152600092839291169063a23a9a5b906044016020604051808303816000875af11580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190610dd3565b6001600160a01b0385166000908152600b602052604090205490915060ff1680610a6457506001600160a01b0383166000908152600b602052604090205460ff165b80610a6c5750805b949350505050565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602d60248201527f5374616e6461726445524332303a207472616e736665722066726f6d2074686560448201526c207a65726f206164647265737360981b6064820152608401610505565b6001600160a01b038216610b4a5760405162461bcd60e51b815260206004820152602b60248201527f5374616e6461726445524332303a207472616e7366657220746f20746865207a60448201526a65726f206164647265737360a81b6064820152608401610505565b610b87816040518060600160405280602e8152602001610e53602e91396001600160a01b0386166000908152600160205260409020549190610906565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610bb69082610940565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061080e9085815260200190565b600060208083528351808285015260005b81811015610c3757858101830151858201604001528201610c1b565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c6f57600080fd5b919050565b60008060408385031215610c8757600080fd5b610c9083610c58565b946020939093013593505050565b600080600060608486031215610cb357600080fd5b610cbc84610c58565b9250610cca60208501610c58565b9150604084013590509250925092565b600060208284031215610cec57600080fd5b61099f82610c58565b60008060408385031215610d0857600080fd5b610d1183610c58565b9150610d1f60208401610c58565b90509250929050565b600181811c90821680610d3c57607f821691505b602082108103610d5c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561043657610436610d97565b8181038181111561043657610436610d97565b600060208284031215610de557600080fd5b8151801515811461099f57600080fdfe5374616e6461726445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f5374616e6461726445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655374616e6461726445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220fe6eccedf3bc1b2037f63ce988a0d198f27c060cb114c31ece6ef60a1466f35364736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c80000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000080b39629ff2b4641b55388fd70447173eb32821400000000000000000000000059452d09a6fad6c78db3b07593e06a951f32ad8f00000000000000000000000000000000000000000000000000000000000000094920616d20436861640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000749414d4348414400000000000000000000000000000000000000000000000000