0x6080604052600436106100f75760003560e01c80639aa2e39e1161008a578063ae1ce9bf11610059578063ae1ce9bf14610336578063c311d04914610356578063d148429814610376578063d6d141711461039657600080fd5b80639aa2e39e146102af5780639b69279a146102dc578063a0a2b573146102f6578063a8f6c9131461031657600080fd5b806355ce3866116100c657806355ce38661461020b5780635a1adb041461023c5780638b7afe2e1461025c5780638da5cb5b1461027257600080fd5b806302cc6e3f1461017e57806327e235e3146101955780633e79d1e1146101d55780633e994942146101eb57600080fd5b3661017957600054600160a81b900460ff161561012f5760405162461bcd60e51b815260040161012690611167565b60405180910390fd5b60065461013c90346103ac565b600655604080513381523460208201527f59062170a285eb80e8c6b8ced60428442a51910635005233fc4ce084a475845e910160405180910390a1005b600080fd5b34801561018a57600080fd5b506101936103bf565b005b3480156101a157600080fd5b506101c26101b03660046111c5565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101c260035481565b3480156101f757600080fd5b506101936102063660046111e2565b610454565b34801561021757600080fd5b5060005461022c90600160a81b900460ff1681565b60405190151581526020016101cc565b34801561024857600080fd5b5061019361025736600461120e565b6105cf565b34801561026857600080fd5b506101c260065481565b34801561027e57600080fd5b506000546102979061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b3480156102bb57600080fd5b506101c26102ca3660046111c5565b60046020526000908152604090205481565b3480156102e857600080fd5b5060025461022c9060ff1681565b34801561030257600080fd5b5061019361031136600461124f565b61093a565b34801561032257600080fd5b50600754610297906001600160a01b031681565b34801561034257600080fd5b506101936103513660046111e2565b6109ed565b34801561036257600080fd5b5061019361037136600461124f565b610b10565b34801561038257600080fd5b506101936103913660046112b4565b610c03565b3480156103a257600080fd5b506101c260015481565b60006103b88284611336565b9392505050565b60005461010090046001600160a01b031633146103ee5760405162461bcd60e51b81526004016101269061134e565b60025460ff1615156001146104155760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff161561043f5760405162461bcd60e51b815260040161012690611167565b6000805460ff60a81b1916600160a81b179055565b60005461010090046001600160a01b031633146104835760405162461bcd60e51b81526004016101269061134e565b60005460ff16156104a65760405162461bcd60e51b8152600401610126906113ea565b6000805460ff191660011790556001600160a01b0382166105095760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e20616464726573732063616e206e6f74206265207a65726f0000006044820152606401610126565b6007546001600160a01b03838116911614156105a25760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e20616464726573732063616e206e6f74206265204552433230206160448201527f646472657373207768696368207761732070617373656420696e746f2074686560648201526b1031b7b739ba393ab1ba37b960a11b608482015260a401610126565b6000546105c1906001600160a01b038481169161010090041683610ea5565b50506000805460ff19169055565b60025460ff1615156001146105f65760405162461bcd60e51b81526004016101269061139a565b60005460ff16156106195760405162461bcd60e51b8152600401610126906113ea565b6000805460ff191660011790556001600160a01b03821661064c5760405162461bcd60e51b815260040161012690611412565b6001600160a01b0382166000908152600560205260409020548111156106ca5760405162461bcd60e51b815260206004820152602d60248201527f496e73756666696369656e7420746f6b656e2062616c616e63652c207472792060448201526c1b195cdcd95c88185b5bdd5b9d609a1b6064820152608401610126565b336001600160a01b0383161461073a5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520746f6b656e20726563697069656e742063616e2070657260448201526e666f726d2074686520756e6c6f636b60881b6064820152608401610126565b6007546001600160a01b038481169116146107f15760405162461bcd60e51b8152602060048201526064602482018190527f546f6b656e20706172616d65746572206d757374206265207468652073616d6560448301527f2061732074686520657263323020636f6e747261637420616464726573732077908201527f68696368207761732070617373656420696e746f2074686520636f6e7374727560848201526331ba37b960e11b60a482015260c401610126565b60035442106108bd576001600160a01b03821660009081526004602052604090205461081d90826103ac565b6001600160a01b03831660009081526004602090815260408083209390935560059052205461084c9082610efc565b6001600160a01b038084166000908152600560205260409020919091556108769084168383610ea5565b604080516001600160a01b0384168152602081018390527fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888910160405180910390a161092b565b60405162461bcd60e51b815260206004820152603f60248201527f546f6b656e7320617265206f6e6c7920617661696c61626c652061667465722060448201527f636f72726563742074696d6520706572696f642068617320656c6170736564006064820152608401610126565b50506000805460ff1916905550565b60005461010090046001600160a01b031633146109695760405162461bcd60e51b81526004016101269061134e565b60025460ff16156109c85760405162461bcd60e51b8152602060048201526024808201527f5468652074696d65207374616d702068617320616c7265616479206265656e2060448201526339b2ba1760e11b6064820152608401610126565b6002805460ff1916600190811790915542908190556109e790826103ac565b60035550565b60005461010090046001600160a01b03163314610a1c5760405162461bcd60e51b81526004016101269061134e565b60025460ff161515600114610a435760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff1615610a6d5760405162461bcd60e51b815260040161012690611167565b6001600160a01b038216610a935760405162461bcd60e51b815260040161012690611412565b6001600160a01b038216600090815260056020526040902054610ab690826103ac565b6001600160a01b0383166000818152600560209081526040918290209390935580519182529181018390527fcad22dd3bcdad18c651a372fe3e7e893af3d354482d9ac6c310c8342eb7af574910160405180910390a15050565b60005461010090046001600160a01b03163314610b3f5760405162461bcd60e51b81526004016101269061134e565b60005460ff1615610b625760405162461bcd60e51b8152600401610126906113ea565b6000805460ff19166001179055600654811115610bb65760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610126565b600654610bc39082610efc565b600655600080546040516101009091046001600160a01b0316916108fc841502918491818181858888f193505050501580156105c1573d6000803e3d6000fd5b60005461010090046001600160a01b03163314610c325760405162461bcd60e51b81526004016101269061134e565b60025460ff161515600114610c595760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff1615610c835760405162461bcd60e51b815260040161012690611167565b828114610d025760405162461bcd60e51b815260206004820152604160248201527f54686520726563697069656e747320616e6420616d6f756e747320617272617960448201527f73206d757374206265207468652073616d652073697a6520696e206c656e67746064820152600d60fb1b608482015260a401610126565b60005b83811015610e9e576000858583818110610d2157610d21611455565b9050602002016020810190610d3691906111c5565b6001600160a01b03161415610d5d5760405162461bcd60e51b815260040161012690611412565b610dc4838383818110610d7257610d72611455565b9050602002013560056000888886818110610d8f57610d8f611455565b9050602002016020810190610da491906111c5565b6001600160a01b03168152602081019190915260400160002054906103ac565b60056000878785818110610dda57610dda611455565b9050602002016020810190610def91906111c5565b6001600160a01b031681526020810191909152604001600020557fcad22dd3bcdad18c651a372fe3e7e893af3d354482d9ac6c310c8342eb7af574858583818110610e3c57610e3c611455565b9050602002016020810190610e5191906111c5565b848484818110610e6357610e63611455565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610e968161146b565b915050610d05565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ef7908490610f08565b505050565b60006103b88284611486565b6000610f5d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fda9092919063ffffffff16565b805190915015610ef75780806020019051810190610f7b919061149d565b610ef75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610126565b6060610fe98484600085610ff1565b949350505050565b6060824710156110525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610126565b600080866001600160a01b0316858760405161106e91906114ef565b60006040518083038185875af1925050503d80600081146110ab576040519150601f19603f3d011682016040523d82523d6000602084013e6110b0565b606091505b50915091506110c1878383876110cc565b979650505050505050565b60608315611138578251611131576001600160a01b0385163b6111315760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610126565b5081610fe9565b610fe9838381511561114d5781518083602001fd5b8060405162461bcd60e51b8152600401610126919061150b565b60208082526026908201527f496e636f6d696e67206465706f736974732068617665206265656e2066696e616040820152653634b9b2b21760d11b606082015260800190565b6001600160a01b03811681146111c257600080fd5b50565b6000602082840312156111d757600080fd5b81356103b8816111ad565b600080604083850312156111f557600080fd5b8235611200816111ad565b946020939093013593505050565b60008060006060848603121561122357600080fd5b833561122e816111ad565b9250602084013561123e816111ad565b929592945050506040919091013590565b60006020828403121561126157600080fd5b5035919050565b60008083601f84011261127a57600080fd5b50813567ffffffffffffffff81111561129257600080fd5b6020830191508360208260051b85010111156112ad57600080fd5b9250929050565b600080600080604085870312156112ca57600080fd5b843567ffffffffffffffff808211156112e257600080fd5b6112ee88838901611268565b9096509450602087013591508082111561130757600080fd5b5061131487828801611268565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561134957611349611320565b500190565b6020808252602c908201527f4d6573736167652073656e646572206d7573742062652074686520636f6e747260408201526b30b1ba13b99037bbb732b91760a11b606082015260800190565b60208082526030908201527f506c6561736520736574207468652074696d65207374616d702066697273742c60408201526f103a3432b7103a393c9030b3b0b4b71760811b606082015260800190565b6020808252600e908201526d4e6f2072652d656e7472616e637960901b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561147f5761147f611320565b5060010190565b60008282101561149857611498611320565b500390565b6000602082840312156114af57600080fd5b815180151581146103b857600080fd5b60005b838110156114da5781810151838201526020016114c2565b838111156114e9576000848401525b50505050565b600082516115018184602087016114bf565b9190910192915050565b602081526000825180602084015261152a8160408501602087016114bf565b601f01601f1916919091016040019291505056fea264697066735822122087ff8293550e29f87d60b72f7dc2bfc9b260cba8cb39f8ae392c27befbabd6d764736f6c634300080b0033
0x608060405234801561001057600080fd5b506040516116a43803806116a483398101604081905261002f916100f1565b60008054610100600160b01b03191661010033021790556002805460ff191690556001600160a01b0381166100c25760405162461bcd60e51b815260206004820152602f60248201527f5f65726332305f636f6e74726163745f6164647265737320616464726573732060448201526e63616e206e6f74206265207a65726f60881b606482015260840160405180910390fd5b600780546001600160a01b0319166001600160a01b03929092169190911790556000805460ff19169055610121565b60006020828403121561010357600080fd5b81516001600160a01b038116811461011a57600080fd5b9392505050565b611574806101306000396000f3fe6080604052600436106100f75760003560e01c80639aa2e39e1161008a578063ae1ce9bf11610059578063ae1ce9bf14610336578063c311d04914610356578063d148429814610376578063d6d141711461039657600080fd5b80639aa2e39e146102af5780639b69279a146102dc578063a0a2b573146102f6578063a8f6c9131461031657600080fd5b806355ce3866116100c657806355ce38661461020b5780635a1adb041461023c5780638b7afe2e1461025c5780638da5cb5b1461027257600080fd5b806302cc6e3f1461017e57806327e235e3146101955780633e79d1e1146101d55780633e994942146101eb57600080fd5b3661017957600054600160a81b900460ff161561012f5760405162461bcd60e51b815260040161012690611167565b60405180910390fd5b60065461013c90346103ac565b600655604080513381523460208201527f59062170a285eb80e8c6b8ced60428442a51910635005233fc4ce084a475845e910160405180910390a1005b600080fd5b34801561018a57600080fd5b506101936103bf565b005b3480156101a157600080fd5b506101c26101b03660046111c5565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101c260035481565b3480156101f757600080fd5b506101936102063660046111e2565b610454565b34801561021757600080fd5b5060005461022c90600160a81b900460ff1681565b60405190151581526020016101cc565b34801561024857600080fd5b5061019361025736600461120e565b6105cf565b34801561026857600080fd5b506101c260065481565b34801561027e57600080fd5b506000546102979061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b3480156102bb57600080fd5b506101c26102ca3660046111c5565b60046020526000908152604090205481565b3480156102e857600080fd5b5060025461022c9060ff1681565b34801561030257600080fd5b5061019361031136600461124f565b61093a565b34801561032257600080fd5b50600754610297906001600160a01b031681565b34801561034257600080fd5b506101936103513660046111e2565b6109ed565b34801561036257600080fd5b5061019361037136600461124f565b610b10565b34801561038257600080fd5b506101936103913660046112b4565b610c03565b3480156103a257600080fd5b506101c260015481565b60006103b88284611336565b9392505050565b60005461010090046001600160a01b031633146103ee5760405162461bcd60e51b81526004016101269061134e565b60025460ff1615156001146104155760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff161561043f5760405162461bcd60e51b815260040161012690611167565b6000805460ff60a81b1916600160a81b179055565b60005461010090046001600160a01b031633146104835760405162461bcd60e51b81526004016101269061134e565b60005460ff16156104a65760405162461bcd60e51b8152600401610126906113ea565b6000805460ff191660011790556001600160a01b0382166105095760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e20616464726573732063616e206e6f74206265207a65726f0000006044820152606401610126565b6007546001600160a01b03838116911614156105a25760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e20616464726573732063616e206e6f74206265204552433230206160448201527f646472657373207768696368207761732070617373656420696e746f2074686560648201526b1031b7b739ba393ab1ba37b960a11b608482015260a401610126565b6000546105c1906001600160a01b038481169161010090041683610ea5565b50506000805460ff19169055565b60025460ff1615156001146105f65760405162461bcd60e51b81526004016101269061139a565b60005460ff16156106195760405162461bcd60e51b8152600401610126906113ea565b6000805460ff191660011790556001600160a01b03821661064c5760405162461bcd60e51b815260040161012690611412565b6001600160a01b0382166000908152600560205260409020548111156106ca5760405162461bcd60e51b815260206004820152602d60248201527f496e73756666696369656e7420746f6b656e2062616c616e63652c207472792060448201526c1b195cdcd95c88185b5bdd5b9d609a1b6064820152608401610126565b336001600160a01b0383161461073a5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520746f6b656e20726563697069656e742063616e2070657260448201526e666f726d2074686520756e6c6f636b60881b6064820152608401610126565b6007546001600160a01b038481169116146107f15760405162461bcd60e51b8152602060048201526064602482018190527f546f6b656e20706172616d65746572206d757374206265207468652073616d6560448301527f2061732074686520657263323020636f6e747261637420616464726573732077908201527f68696368207761732070617373656420696e746f2074686520636f6e7374727560848201526331ba37b960e11b60a482015260c401610126565b60035442106108bd576001600160a01b03821660009081526004602052604090205461081d90826103ac565b6001600160a01b03831660009081526004602090815260408083209390935560059052205461084c9082610efc565b6001600160a01b038084166000908152600560205260409020919091556108769084168383610ea5565b604080516001600160a01b0384168152602081018390527fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888910160405180910390a161092b565b60405162461bcd60e51b815260206004820152603f60248201527f546f6b656e7320617265206f6e6c7920617661696c61626c652061667465722060448201527f636f72726563742074696d6520706572696f642068617320656c6170736564006064820152608401610126565b50506000805460ff1916905550565b60005461010090046001600160a01b031633146109695760405162461bcd60e51b81526004016101269061134e565b60025460ff16156109c85760405162461bcd60e51b8152602060048201526024808201527f5468652074696d65207374616d702068617320616c7265616479206265656e2060448201526339b2ba1760e11b6064820152608401610126565b6002805460ff1916600190811790915542908190556109e790826103ac565b60035550565b60005461010090046001600160a01b03163314610a1c5760405162461bcd60e51b81526004016101269061134e565b60025460ff161515600114610a435760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff1615610a6d5760405162461bcd60e51b815260040161012690611167565b6001600160a01b038216610a935760405162461bcd60e51b815260040161012690611412565b6001600160a01b038216600090815260056020526040902054610ab690826103ac565b6001600160a01b0383166000818152600560209081526040918290209390935580519182529181018390527fcad22dd3bcdad18c651a372fe3e7e893af3d354482d9ac6c310c8342eb7af574910160405180910390a15050565b60005461010090046001600160a01b03163314610b3f5760405162461bcd60e51b81526004016101269061134e565b60005460ff1615610b625760405162461bcd60e51b8152600401610126906113ea565b6000805460ff19166001179055600654811115610bb65760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610126565b600654610bc39082610efc565b600655600080546040516101009091046001600160a01b0316916108fc841502918491818181858888f193505050501580156105c1573d6000803e3d6000fd5b60005461010090046001600160a01b03163314610c325760405162461bcd60e51b81526004016101269061134e565b60025460ff161515600114610c595760405162461bcd60e51b81526004016101269061139a565b600054600160a81b900460ff1615610c835760405162461bcd60e51b815260040161012690611167565b828114610d025760405162461bcd60e51b815260206004820152604160248201527f54686520726563697069656e747320616e6420616d6f756e747320617272617960448201527f73206d757374206265207468652073616d652073697a6520696e206c656e67746064820152600d60fb1b608482015260a401610126565b60005b83811015610e9e576000858583818110610d2157610d21611455565b9050602002016020810190610d3691906111c5565b6001600160a01b03161415610d5d5760405162461bcd60e51b815260040161012690611412565b610dc4838383818110610d7257610d72611455565b9050602002013560056000888886818110610d8f57610d8f611455565b9050602002016020810190610da491906111c5565b6001600160a01b03168152602081019190915260400160002054906103ac565b60056000878785818110610dda57610dda611455565b9050602002016020810190610def91906111c5565b6001600160a01b031681526020810191909152604001600020557fcad22dd3bcdad18c651a372fe3e7e893af3d354482d9ac6c310c8342eb7af574858583818110610e3c57610e3c611455565b9050602002016020810190610e5191906111c5565b848484818110610e6357610e63611455565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610e968161146b565b915050610d05565b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ef7908490610f08565b505050565b60006103b88284611486565b6000610f5d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fda9092919063ffffffff16565b805190915015610ef75780806020019051810190610f7b919061149d565b610ef75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610126565b6060610fe98484600085610ff1565b949350505050565b6060824710156110525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610126565b600080866001600160a01b0316858760405161106e91906114ef565b60006040518083038185875af1925050503d80600081146110ab576040519150601f19603f3d011682016040523d82523d6000602084013e6110b0565b606091505b50915091506110c1878383876110cc565b979650505050505050565b60608315611138578251611131576001600160a01b0385163b6111315760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610126565b5081610fe9565b610fe9838381511561114d5781518083602001fd5b8060405162461bcd60e51b8152600401610126919061150b565b60208082526026908201527f496e636f6d696e67206465706f736974732068617665206265656e2066696e616040820152653634b9b2b21760d11b606082015260800190565b6001600160a01b03811681146111c257600080fd5b50565b6000602082840312156111d757600080fd5b81356103b8816111ad565b600080604083850312156111f557600080fd5b8235611200816111ad565b946020939093013593505050565b60008060006060848603121561122357600080fd5b833561122e816111ad565b9250602084013561123e816111ad565b929592945050506040919091013590565b60006020828403121561126157600080fd5b5035919050565b60008083601f84011261127a57600080fd5b50813567ffffffffffffffff81111561129257600080fd5b6020830191508360208260051b85010111156112ad57600080fd5b9250929050565b600080600080604085870312156112ca57600080fd5b843567ffffffffffffffff808211156112e257600080fd5b6112ee88838901611268565b9096509450602087013591508082111561130757600080fd5b5061131487828801611268565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561134957611349611320565b500190565b6020808252602c908201527f4d6573736167652073656e646572206d7573742062652074686520636f6e747260408201526b30b1ba13b99037bbb732b91760a11b606082015260800190565b60208082526030908201527f506c6561736520736574207468652074696d65207374616d702066697273742c60408201526f103a3432b7103a393c9030b3b0b4b71760811b606082015260800190565b6020808252600e908201526d4e6f2072652d656e7472616e637960901b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561147f5761147f611320565b5060010190565b60008282101561149857611498611320565b500390565b6000602082840312156114af57600080fd5b815180151581146103b857600080fd5b60005b838110156114da5781810151838201526020016114c2565b838111156114e9576000848401525b50505050565b600082516115018184602087016114bf565b9190910192915050565b602081526000825180602084015261152a8160408501602087016114bf565b601f01601f1916919091016040019291505056fea264697066735822122087ff8293550e29f87d60b72f7dc2bfc9b260cba8cb39f8ae392c27befbabd6d764736f6c634300080b003300000000000000000000000083ea98e238993ab966d7a687a0a850ddc853a8c2