0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063860a32ec116100ad578063a457c2d711610071578063a457c2d71461024a578063a9059cbb1461025d578063bdd3d82514610270578063dd62ed3e14610283578063f2fde38b1461029657600080fd5b8063860a32ec146101f457806389f9a1d3146102015780638da5cb5b1461020a5780638e7be03d1461022f57806395d89b411461024257600080fd5b8063313ce567116100f4578063313ce5671461018c578063395093511461019b5780635791b277146101ae57806370a08231146101c3578063715018a6146101ec57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102a9565b60405161013b9190610a86565b60405180910390f35b610157610152366004610af1565b61033b565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610b1b565b610355565b6040516012815260200161013b565b6101576101a9366004610af1565b610379565b6101c16101bc366004610b57565b61039b565b005b61016b6101d1366004610b57565b6001600160a01b031660009081526001602052604090205490565b6101c16103c5565b6006546101579060ff1681565b61016b60075481565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013b565b6101c161023d366004610b79565b6103d9565b61012e6103f8565b610157610258366004610af1565b610407565b61015761026b366004610af1565b610487565b600854610217906001600160a01b031681565b61016b610291366004610b9c565b610495565b6101c16102a4366004610b57565b6104c0565b6060600480546102b890610bcf565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490610bcf565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b5050505050905090565b600033610349818585610539565b60019150505b92915050565b60003361036385828561065d565b61036e8585856106d7565b506001949350505050565b60003361034981858561038c8383610495565b6103969190610c09565b610539565b6103a361088d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6103cd61088d565b6103d760006108e7565b565b6103e161088d565b6006805460ff191692151592909217909155600755565b6060600580546102b890610bcf565b600033816104158286610495565b90508381101561047a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61036e8286868403610539565b6000336103498185856106d7565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6104c861088d565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610471565b610536816108e7565b50565b6001600160a01b03831661059b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610471565b6001600160a01b0382166105fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610471565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006106698484610495565b905060001981146106d157818110156106c45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610471565b6106d18484848403610539565b50505050565b6001600160a01b03831661073b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610471565b6001600160a01b03821661079d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610471565b6107a8838383610937565b6001600160a01b038316600090815260016020526040902054818110156108205760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610471565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108809086815260200190565b60405180910390a36106d1565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610471565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008546001600160a01b03166109d4576000546001600160a01b031632148061096d57506000546001600160a01b038381169116145b6109cf5760405162461bcd60e51b815260206004820152602d60248201527fe38388e383bce382afe383b3e3818ce383a9e382a4e38396e381a7e381afe38160448201526c82e3828ae381bee3819be3829360981b6064820152608401610471565b505050565b60065460ff1680156109f357506008546001600160a01b038481169116145b156109cf5760075481610a1b846001600160a01b031660009081526001602052604090205490565b610a259190610c09565b11156109cf5760405162461bcd60e51b815260206004820152602a60248201527fe69c80e5a4a7e382a6e382a9e383ace38383e38388e381abe588b0e98194e38160448201526997e381bee38197e3819f60b01b6064820152608401610471565b60006020808352835180602085015260005b81811015610ab457858101830151858201604001528201610a98565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610aec57600080fd5b919050565b60008060408385031215610b0457600080fd5b610b0d83610ad5565b946020939093013593505050565b600080600060608486031215610b3057600080fd5b610b3984610ad5565b9250610b4760208501610ad5565b9150604084013590509250925092565b600060208284031215610b6957600080fd5b610b7282610ad5565b9392505050565b60008060408385031215610b8c57600080fd5b82358015158114610b0d57600080fd5b60008060408385031215610baf57600080fd5b610bb883610ad5565b9150610bc660208401610ad5565b90509250929050565b600181811c90821680610be357607f821691505b602082108103610c0357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561034f57634e487b7160e01b600052601160045260246000fdfea26469706673582212204c81d06a161b4df24dfacc04cda17892c6cdd454932c9302c1697e98bffdfd1264736f6c63430008170033
0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020016a417473756b6f205361746f60a81b8152506040518060400160405280600d81526020016c0e4bd90e897a420e695a6e5ad9609c1b8152506200007662000070620000e360201b60201c565b620000e7565b60046200008483826200040e565b5060056200009382826200040e565b506a52b7d2dcc80cd2e400000091506127109050620000b4826019620004f0565b620000c0919062000510565b6007556006805460ff19166001179055620000dc338262000137565b5062000549565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620001a1600083836200020e565b8060036000828254620001b5919062000533565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6008546001600160a01b0316620002af576000546001600160a01b03163214806200024657506000546001600160a01b038381169116145b620002aa5760405162461bcd60e51b815260206004820152602d60248201527fe38388e383bce382afe383b3e3818ce383a9e382a4e38396e381a7e381afe38160448201526c82e3828ae381bee3819be3829360981b60648201526084016200018a565b505050565b60065460ff168015620002cf57506008546001600160a01b038481169116145b15620002aa5760075481620002f9846001600160a01b031660009081526001602052604090205490565b62000305919062000533565b1115620002aa5760405162461bcd60e51b815260206004820152602a60248201527fe69c80e5a4a7e382a6e382a9e383ace38383e38388e381abe588b0e98194e38160448201526997e381bee38197e3819f60b01b60648201526084016200018a565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200039357607f821691505b602082108103620003b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002aa576000816000526020600020601f850160051c81016020861015620003e55750805b601f850160051c820191505b818110156200040657828155600101620003f1565b505050505050565b81516001600160401b038111156200042a576200042a62000368565b62000442816200043b84546200037e565b84620003ba565b602080601f8311600181146200047a5760008415620004615750858301515b600019600386901b1c1916600185901b17855562000406565b600085815260208120601f198616915b82811015620004ab578886015182559484019460019091019084016200048a565b5085821015620004ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200050a576200050a620004da565b92915050565b6000826200052e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200050a576200050a620004da565b610c6080620005596000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063860a32ec116100ad578063a457c2d711610071578063a457c2d71461024a578063a9059cbb1461025d578063bdd3d82514610270578063dd62ed3e14610283578063f2fde38b1461029657600080fd5b8063860a32ec146101f457806389f9a1d3146102015780638da5cb5b1461020a5780638e7be03d1461022f57806395d89b411461024257600080fd5b8063313ce567116100f4578063313ce5671461018c578063395093511461019b5780635791b277146101ae57806370a08231146101c3578063715018a6146101ec57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016757806323b872dd14610179575b600080fd5b61012e6102a9565b60405161013b9190610a86565b60405180910390f35b610157610152366004610af1565b61033b565b604051901515815260200161013b565b6003545b60405190815260200161013b565b610157610187366004610b1b565b610355565b6040516012815260200161013b565b6101576101a9366004610af1565b610379565b6101c16101bc366004610b57565b61039b565b005b61016b6101d1366004610b57565b6001600160a01b031660009081526001602052604090205490565b6101c16103c5565b6006546101579060ff1681565b61016b60075481565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161013b565b6101c161023d366004610b79565b6103d9565b61012e6103f8565b610157610258366004610af1565b610407565b61015761026b366004610af1565b610487565b600854610217906001600160a01b031681565b61016b610291366004610b9c565b610495565b6101c16102a4366004610b57565b6104c0565b6060600480546102b890610bcf565b80601f01602080910402602001604051908101604052809291908181526020018280546102e490610bcf565b80156103315780601f1061030657610100808354040283529160200191610331565b820191906000526020600020905b81548152906001019060200180831161031457829003601f168201915b5050505050905090565b600033610349818585610539565b60019150505b92915050565b60003361036385828561065d565b61036e8585856106d7565b506001949350505050565b60003361034981858561038c8383610495565b6103969190610c09565b610539565b6103a361088d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6103cd61088d565b6103d760006108e7565b565b6103e161088d565b6006805460ff191692151592909217909155600755565b6060600580546102b890610bcf565b600033816104158286610495565b90508381101561047a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61036e8286868403610539565b6000336103498185856106d7565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6104c861088d565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610471565b610536816108e7565b50565b6001600160a01b03831661059b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610471565b6001600160a01b0382166105fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610471565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006106698484610495565b905060001981146106d157818110156106c45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610471565b6106d18484848403610539565b50505050565b6001600160a01b03831661073b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610471565b6001600160a01b03821661079d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610471565b6107a8838383610937565b6001600160a01b038316600090815260016020526040902054818110156108205760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610471565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108809086815260200190565b60405180910390a36106d1565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610471565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008546001600160a01b03166109d4576000546001600160a01b031632148061096d57506000546001600160a01b038381169116145b6109cf5760405162461bcd60e51b815260206004820152602d60248201527fe38388e383bce382afe383b3e3818ce383a9e382a4e38396e381a7e381afe38160448201526c82e3828ae381bee3819be3829360981b6064820152608401610471565b505050565b60065460ff1680156109f357506008546001600160a01b038481169116145b156109cf5760075481610a1b846001600160a01b031660009081526001602052604090205490565b610a259190610c09565b11156109cf5760405162461bcd60e51b815260206004820152602a60248201527fe69c80e5a4a7e382a6e382a9e383ace38383e38388e381abe588b0e98194e38160448201526997e381bee38197e3819f60b01b6064820152608401610471565b60006020808352835180602085015260005b81811015610ab457858101830151858201604001528201610a98565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610aec57600080fd5b919050565b60008060408385031215610b0457600080fd5b610b0d83610ad5565b946020939093013593505050565b600080600060608486031215610b3057600080fd5b610b3984610ad5565b9250610b4760208501610ad5565b9150604084013590509250925092565b600060208284031215610b6957600080fd5b610b7282610ad5565b9392505050565b60008060408385031215610b8c57600080fd5b82358015158114610b0d57600080fd5b60008060408385031215610baf57600080fd5b610bb883610ad5565b9150610bc660208401610ad5565b90509250929050565b600181811c90821680610be357607f821691505b602082108103610c0357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561034f57634e487b7160e01b600052601160045260246000fdfea26469706673582212204c81d06a161b4df24dfacc04cda17892c6cdd454932c9302c1697e98bffdfd1264736f6c63430008170033