0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6116988061007e6000396000f3fe6080604052600436106100ec5760003560e01c8063d1a82a9d1161008a578063e086e5ec11610059578063e086e5ec146102b6578063f2885936146102be578063f2fde38b146102d1578063fa461e33146102f157600080fd5b8063d1a82a9d146101ff578063d4cff6ab14610212578063d4fac45d14610275578063dd740f92146102a357600080fd5b80638da5cb5b116100c65780638da5cb5b1461015f5780639e281a981461017d578063bf607ac214610190578063d0e30db0146101f757600080fd5b80631a788a02146100f85780632a31f6b414610135578063715018a61461014a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5061011861011336600461118a565b610311565b6040516001600160a01b0390911681526020015b60405180910390f35b6101486101433660046111f7565b6103eb565b005b34801561015657600080fd5b506101486104a3565b34801561016b57600080fd5b506000546001600160a01b0316610118565b61014861018b36600461124c565b6104b7565b34801561019c57600080fd5b506101ea6101ab366004611278565b604080513060248201526044808201939093528151808203909301835260640190526020810180516001600160e01b031663a9059cbb60e01b17905290565b60405161012c91906112d7565b6101486104f5565b34801561020b57600080fd5b5041610118565b34801561021e57600080fd5b506101ea61022d366004611310565b604080516001600160a01b039590951660208601528481019390935262ffffff91909116606084015215156080808401919091528151808403909101815260a0909201905290565b34801561028157600080fd5b50610295610290366004611361565b610532565b60405190815260200161012c565b6101486102b136600461139a565b6105a9565b6101486107e0565b6101486102cc366004611361565b6107ff565b3480156102dd57600080fd5b506101486102ec36600461118a565b6108d1565b3480156102fd57600080fd5b5061014861030c366004611433565b610947565b60008080806000805160206116438339815191526001600160a01b0386161015610351575083915060008051602061164383398151915290506001610369565b50600080516020611643833981519152915083905060005b6040516001600160601b0319606085811b8216602084015284901b166034820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f90604801604051602081830303815290604052805190602001206040516020016103ca929190611486565b60408051601f19818403018152919052805160209091012095945050505050565b6103f3610a20565b600080846001600160a01b0316600085856040516104129291906114d7565b60006040518083038185875af1925050503d806000811461044f576040519150601f19603f3d011682016040523d82523d6000602084013e610454565b606091505b50915091508161049c5760405162461bcd60e51b815260206004820152600e60248201526d19985a5b1959081d1bc818d85b1b60921b60448201526064015b60405180910390fd5b5050505050565b6104ab610a20565b6104b56000610a7a565b565b6104bf610a20565b60405163a9059cbb60e01b81523360048201528160248201526000806044836000876113885a03f16104f057600380fd5b505050565b6104fd610a20565b604051630d0e30db60e41b8152600080600483346000805160206116438339815191526113885a03f161052f57600380fd5b50565b6040516370a0823160e01b81526001600160a01b03828116600483015260009184918216906370a0823190602401602060405180830381865afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a191906114e7565b949350505050565b6105b1610a20565b83156105cd574185146105c357600380fd5b834131036105cd57005b60008047815b84811015610725576000806000808989868181106105f3576105f3611500565b90506020028101906106059190611516565b8101906106129190611310565b93509350935093506040516370a0823160e01b815273111111125421ca6dc452d289314280a0f8842a656004820152602081602483885afa50519650828711156107155760405163e413f48d60e01b815230600482015230602482015284604482015287606482015260008061010483600073111111125421ca6dc452d289314280a0f8842a655af16106a457600380fd5b506040516370a0823160e01b8152306004820152602081602481885afa50516000190197506000881380156106f057506001600160a01b03841660008051602061164383398151915214155b1561071557801561070b57610706848984610aca565b610715565b6107158489610c3e565b5050600190920191506105d39050565b506040516370a0823160e01b81523060048201526020816024836000805160206116438339815191525afa5051604051632e1a7d4d60e01b815260001982016004820152909250600080602483826000805160206116438339815191525af161078d57600380fd5b50858147031161079c57600380fd5b6000806000806103e8348647030204415af16107b757600380fd5b8047116107c357600380fd5b60008060008047335af16107d657600380fd5b5050505050505050565b6107e8610a20565b60008080804733611387195a01f16104b557600380fd5b610807610a20565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0383160161085c57506001600160a01b0382163161084381610eba565b60405162461bcd60e51b815260040161049391906112d7565b6040516370a0823160e01b81526001600160a01b0384811660048301528316906370a0823190602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906114e7565b905061084381610eba565b6108d9610a20565b6001600160a01b03811661093e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610493565b61052f81610a7a565b60008080806109588587018761155d565b935061ffff1693509350935061098c731f98431c8ad98523631ae4a59f267346ea31f984610987868686610f4d565b610fb8565b6001600160a01b0316336001600160a01b0316146109a957600080fd5b60008082600181146109c0578592508991506109c7565b8692508a91505b506040516370a0823160e01b8152306004820152602081602483865afa505060405163a9059cbb60e01b81523360048201526024810182905260008060448382875af1610a1357600380fd5b5050505050505050505050565b6000546001600160a01b031633146104b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610493565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080806000805160206116438339815191526001600160a01b0387161015610b09575084915060008051602061164383398151915290506001610b21565b50600080516020611643833981519152915084905060005b6000610b46731f98431c8ad98523631ae4a59f267346ea31f984610987868689610f4d565b905080600083610b6a5773fffd8963efd1fc6a506488495d951d5263988d25610b71565b6401000276ad5b604080516001600160a01b03808a16602083015288169181019190915262ffffff89166060820152851515608082015290915060009060a00160408051601f1981840301815290829052630251596160e31b825291506001600160a01b0384169063128acb0890610bee90309089908e90889088906004016115a5565b60408051808303816000875af1158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3091906115eb565b505050505050505050505050565b60008080806000805160206116438339815191526001600160a01b0387161015610c7e575084915060008051602061164383398151915290506001610c96565b50600080516020611643833981519152915084905060005b6040516001600160601b0319606085811b8216602084015284901b166034820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9060480160405160208183030381529060405280519060200120604051602001610cf7929190611486565b60408051808303601f1901815290829052805160209091012063a9059cbb60e01b82526001600160a01b03808216600484015260248301889052909550879160009183169063a9059cbb906044016020604051808303816000875af1158015610d64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d88919061160f565b905080610dcf5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610493565b6040516370a0823160e01b81528660048201526020816024838c5afa505160408051630240bc6b60e21b8152919850816004818a5afa508051602082015160008080888015610e2857858e039350859250849150610e34565b848e0393508492508591505b5060405163022c0d9f60e01b815295506103e58381026103e893909302929092019202020491508590508015610e765760006004840152816024840152610e84565b816004840152600060248401525b505030604482015260806064820152600060848201526000806101048360008b5af1610eaf57600380fd5b505050505050505050565b60606000610ec78361109c565b600101905060008167ffffffffffffffff811115610ee757610ee761162c565b6040519080825280601f01601f191660200182016040528015610f11576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610f1b57509392505050565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610f88579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610fe057600080fd5b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6001600160601b03191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106110db5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611107576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061112557662386f26fc10000830492506010015b6305f5e100831061113d576305f5e100830492506008015b612710831061115157612710830492506004015b60648310611163576064830492506002015b600a831061116f576001015b92915050565b6001600160a01b038116811461052f57600080fd5b60006020828403121561119c57600080fd5b81356111a781611175565b9392505050565b60008083601f8401126111c057600080fd5b50813567ffffffffffffffff8111156111d857600080fd5b6020830191508360208285010111156111f057600080fd5b9250929050565b60008060006040848603121561120c57600080fd5b833561121781611175565b9250602084013567ffffffffffffffff81111561123357600080fd5b61123f868287016111ae565b9497909650939450505050565b6000806040838503121561125f57600080fd5b823561126a81611175565b946020939093013593505050565b60006020828403121561128a57600080fd5b5035919050565b6000815180845260005b818110156112b75760208185018101518683018201520161129b565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006111a76020830184611291565b803562ffffff811681146112fd57600080fd5b919050565b801515811461052f57600080fd5b6000806000806080858703121561132657600080fd5b843561133181611175565b935060208501359250611346604086016112ea565b9150606085013561135681611302565b939692955090935050565b6000806040838503121561137457600080fd5b823561137f81611175565b9150602083013561138f81611175565b809150509250929050565b6000806000806000608086880312156113b257600080fd5b85356113bd81611175565b94506020860135935060408601359250606086013567ffffffffffffffff808211156113e857600080fd5b818801915088601f8301126113fc57600080fd5b81358181111561140b57600080fd5b8960208260051b850101111561142057600080fd5b9699959850939650602001949392505050565b6000806000806060858703121561144957600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561146e57600080fd5b61147a878288016111ae565b95989497509550505050565b6001600160f81b0319815260609290921b6001600160601b031916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b8183823760009101908152919050565b6000602082840312156114f957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261152d57600080fd5b83018035915067ffffffffffffffff82111561154857600080fd5b6020019150368190038213156111f057600080fd5b6000806000806080858703121561157357600080fd5b843561157e81611175565b9350602085013561158e81611175565b9250604085013561ffff8116811461134657600080fd5b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906115e090830184611291565b979650505050505050565b600080604083850312156115fe57600080fd5b505080516020909101519092909150565b60006020828403121561162157600080fd5b81516111a781611302565b634e487b7160e01b600052604160045260246000fdfe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2a2646970667358221220e7007a4ef7706046c185335940d2550e96c0c4be5ea0fa343fd7020d3d2fa7f664736f6c63430008170033