0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806370a0823111610093578063ce7c2ac211610063578063ce7c2ac2146101ba578063d1058e59146101d9578063f2fde38b146101e1578063fc0c546a146101f4575f80fd5b806370a0823114610187578063715018a61461019a5780638da5cb5b146101a2578063b69ef8a8146101b2575f80fd5b8063477d566b116100ce578063477d566b1461012e5780635f3ccdd91461015957806364342dd21461016c5780636552d8b414610174575f80fd5b806308d726aa146100f4578063175ba28d146101105780633e8ff57b14610125575b5f80fd5b6100fd60045481565b6040519081526020015b60405180910390f35b61012361011e366004610d54565b610207565b005b6100fd61271081565b61014161013c366004610d7c565b61036a565b6040516001600160a01b039091168152602001610107565b610123610167366004610d54565b61037c565b6100fd61045a565b610123610182366004610d93565b61046a565b6100fd610195366004610d93565b61054e565b610123610586565b5f546001600160a01b0316610141565b6100fd610599565b6100fd6101c8366004610d93565b60056020525f908152604090205481565b610123610603565b6101236101ef366004610d93565b61072f565b600354610141906001600160a01b031681565b61020f6107bf565b6001600160a01b03821661025a5760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b60448201526064015b60405180910390fd5b610265600183610818565b6102b15760405162461bcd60e51b815260206004820152601360248201527f72656365697665722d6e6f742d657869737473000000000000000000000000006044820152606401610251565b6001600160a01b0382165f9081526005602052604081205460048054919290916102dc908490610dc0565b90915550506001600160a01b0382165f9081526005602052604081208290556004805483929061030d908490610dd3565b909155505060045461271010156103665760405162461bcd60e51b815260206004820152600f60248201527f7368617265732d746f6f2d6869676800000000000000000000000000000000006044820152606401610251565b5050565b5f61037660018361083c565b92915050565b6103846107bf565b6001600160a01b0382166103ca5760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b6044820152606401610251565b6103d5600183610818565b156104225760405162461bcd60e51b815260206004820152600f60248201527f72656365697665722d65786973747300000000000000000000000000000000006044820152606401610251565b61042d600183610847565b506001600160a01b0382165f9081526005602052604081208290556004805483929061030d908490610dd3565b5f610465600161085b565b905090565b6104726107bf565b6001600160a01b0381166104b85760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b6044820152606401610251565b6104c3600182610818565b61050f5760405162461bcd60e51b815260206004820152601360248201527f72656365697665722d6e6f742d657869737473000000000000000000000000006044820152606401610251565b61051a600182610864565b506001600160a01b0381165f908152600560205260408120546004805491929091610546908490610dc0565b909155505050565b6001600160a01b0381165f9081526005602052604081205461271090610572610599565b61057c9190610de6565b6103769190610dfd565b61058e6107bf565b6105975f610878565b565b6003546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104659190610e1c565b5f61060c61045a565b90505f610617610599565b90505f5b82811015610690575f61062d8261036a565b6001600160a01b0381165f9081526005602052604081205491925090612710906106579086610de6565b6106619190610dfd565b60035490915061067b906001600160a01b031683836108df565b5050808061068890610e33565b91505061061b565b506003546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fb9190610e1c565b9050801561072a5761072a6107175f546001600160a01b031690565b6003546001600160a01b031690836108df565b505050565b6107376107bf565b6001600160a01b0381166107b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610251565b6107bc81610878565b50565b5f546001600160a01b031633146105975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610251565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b5f610835838361095f565b5f610835836001600160a01b038416610985565b5f610376825490565b5f610835836001600160a01b0384166109d1565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261072a908490610ab4565b5f825f01828154811061097457610974610e4b565b905f5260205f200154905092915050565b5f8181526001830160205260408120546109ca57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610376565b505f610376565b5f8181526001830160205260408120548015610aab575f6109f3600183610dc0565b85549091505f90610a0690600190610dc0565b9050818114610a65575f865f018281548110610a2457610a24610e4b565b905f5260205f200154905080875f018481548110610a4457610a44610e4b565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610a7657610a76610e5f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610376565b5f915050610376565b5f610b08826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b989092919063ffffffff16565b80519091501561072a5780806020019051810190610b269190610e73565b61072a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610251565b6060610ba684845f85610bae565b949350505050565b606082471015610c265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610251565b5f80866001600160a01b03168587604051610c419190610eb4565b5f6040518083038185875af1925050503d805f8114610c7b576040519150601f19603f3d011682016040523d82523d5f602084013e610c80565b606091505b5091509150610c9187838387610c9c565b979650505050505050565b60608315610d0a5782515f03610d03576001600160a01b0385163b610d035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610251565b5081610ba6565b610ba68383815115610d1f5781518083602001fd5b8060405162461bcd60e51b81526004016102519190610ecf565b80356001600160a01b0381168114610d4f575f80fd5b919050565b5f8060408385031215610d65575f80fd5b610d6e83610d39565b946020939093013593505050565b5f60208284031215610d8c575f80fd5b5035919050565b5f60208284031215610da3575f80fd5b61083582610d39565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561037657610376610dac565b8082018082111561037657610376610dac565b808202811582820484141761037657610376610dac565b5f82610e1757634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610e2c575f80fd5b5051919050565b5f60018201610e4457610e44610dac565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215610e83575f80fd5b81518015158114610835575f80fd5b5f5b83811015610eac578181015183820152602001610e94565b50505f910152565b5f8251610ec5818460208701610e92565b9190910192915050565b602081525f8251806020840152610eed816040850160208701610e92565b601f01601f1916919091016040019291505056fea26469706673582212205e1a8e850f2602dce4462d4ec85b9b6223317fcb881682ddfa7d21faf9582a2d64736f6c63430008140033
0x608060405234801561000f575f80fd5b5060405161106338038061106383398101604081905261002e916100f2565b610037336100a3565b6001600160a01b03811661007e5760405162461bcd60e51b815260206004820152600a6024820152690746f6b656e2d69732d360b41b604482015260640160405180910390fd5b600380546001600160a01b0319166001600160a01b039290921691909117905561011f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610102575f80fd5b81516001600160a01b0381168114610118575f80fd5b9392505050565b610f378061012c5f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806370a0823111610093578063ce7c2ac211610063578063ce7c2ac2146101ba578063d1058e59146101d9578063f2fde38b146101e1578063fc0c546a146101f4575f80fd5b806370a0823114610187578063715018a61461019a5780638da5cb5b146101a2578063b69ef8a8146101b2575f80fd5b8063477d566b116100ce578063477d566b1461012e5780635f3ccdd91461015957806364342dd21461016c5780636552d8b414610174575f80fd5b806308d726aa146100f4578063175ba28d146101105780633e8ff57b14610125575b5f80fd5b6100fd60045481565b6040519081526020015b60405180910390f35b61012361011e366004610d54565b610207565b005b6100fd61271081565b61014161013c366004610d7c565b61036a565b6040516001600160a01b039091168152602001610107565b610123610167366004610d54565b61037c565b6100fd61045a565b610123610182366004610d93565b61046a565b6100fd610195366004610d93565b61054e565b610123610586565b5f546001600160a01b0316610141565b6100fd610599565b6100fd6101c8366004610d93565b60056020525f908152604090205481565b610123610603565b6101236101ef366004610d93565b61072f565b600354610141906001600160a01b031681565b61020f6107bf565b6001600160a01b03821661025a5760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b60448201526064015b60405180910390fd5b610265600183610818565b6102b15760405162461bcd60e51b815260206004820152601360248201527f72656365697665722d6e6f742d657869737473000000000000000000000000006044820152606401610251565b6001600160a01b0382165f9081526005602052604081205460048054919290916102dc908490610dc0565b90915550506001600160a01b0382165f9081526005602052604081208290556004805483929061030d908490610dd3565b909155505060045461271010156103665760405162461bcd60e51b815260206004820152600f60248201527f7368617265732d746f6f2d6869676800000000000000000000000000000000006044820152606401610251565b5050565b5f61037660018361083c565b92915050565b6103846107bf565b6001600160a01b0382166103ca5760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b6044820152606401610251565b6103d5600183610818565b156104225760405162461bcd60e51b815260206004820152600f60248201527f72656365697665722d65786973747300000000000000000000000000000000006044820152606401610251565b61042d600183610847565b506001600160a01b0382165f9081526005602052604081208290556004805483929061030d908490610dd3565b5f610465600161085b565b905090565b6104726107bf565b6001600160a01b0381166104b85760405162461bcd60e51b815260206004820152600d60248201526c072656365697665722d69732d3609c1b6044820152606401610251565b6104c3600182610818565b61050f5760405162461bcd60e51b815260206004820152601360248201527f72656365697665722d6e6f742d657869737473000000000000000000000000006044820152606401610251565b61051a600182610864565b506001600160a01b0381165f908152600560205260408120546004805491929091610546908490610dc0565b909155505050565b6001600160a01b0381165f9081526005602052604081205461271090610572610599565b61057c9190610de6565b6103769190610dfd565b61058e6107bf565b6105975f610878565b565b6003546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156105df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104659190610e1c565b5f61060c61045a565b90505f610617610599565b90505f5b82811015610690575f61062d8261036a565b6001600160a01b0381165f9081526005602052604081205491925090612710906106579086610de6565b6106619190610dfd565b60035490915061067b906001600160a01b031683836108df565b5050808061068890610e33565b91505061061b565b506003546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fb9190610e1c565b9050801561072a5761072a6107175f546001600160a01b031690565b6003546001600160a01b031690836108df565b505050565b6107376107bf565b6001600160a01b0381166107b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610251565b6107bc81610878565b50565b5f546001600160a01b031633146105975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610251565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b5f610835838361095f565b5f610835836001600160a01b038416610985565b5f610376825490565b5f610835836001600160a01b0384166109d1565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261072a908490610ab4565b5f825f01828154811061097457610974610e4b565b905f5260205f200154905092915050565b5f8181526001830160205260408120546109ca57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610376565b505f610376565b5f8181526001830160205260408120548015610aab575f6109f3600183610dc0565b85549091505f90610a0690600190610dc0565b9050818114610a65575f865f018281548110610a2457610a24610e4b565b905f5260205f200154905080875f018481548110610a4457610a44610e4b565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080610a7657610a76610e5f565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610376565b5f915050610376565b5f610b08826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b989092919063ffffffff16565b80519091501561072a5780806020019051810190610b269190610e73565b61072a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610251565b6060610ba684845f85610bae565b949350505050565b606082471015610c265760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610251565b5f80866001600160a01b03168587604051610c419190610eb4565b5f6040518083038185875af1925050503d805f8114610c7b576040519150601f19603f3d011682016040523d82523d5f602084013e610c80565b606091505b5091509150610c9187838387610c9c565b979650505050505050565b60608315610d0a5782515f03610d03576001600160a01b0385163b610d035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610251565b5081610ba6565b610ba68383815115610d1f5781518083602001fd5b8060405162461bcd60e51b81526004016102519190610ecf565b80356001600160a01b0381168114610d4f575f80fd5b919050565b5f8060408385031215610d65575f80fd5b610d6e83610d39565b946020939093013593505050565b5f60208284031215610d8c575f80fd5b5035919050565b5f60208284031215610da3575f80fd5b61083582610d39565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561037657610376610dac565b8082018082111561037657610376610dac565b808202811582820484141761037657610376610dac565b5f82610e1757634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610e2c575f80fd5b5051919050565b5f60018201610e4457610e44610dac565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215610e83575f80fd5b81518015158114610835575f80fd5b5f5b83811015610eac578181015183820152602001610e94565b50505f910152565b5f8251610ec5818460208701610e92565b9190910192915050565b602081525f8251806020840152610eed816040850160208701610e92565b601f01601f1916919091016040019291505056fea26469706673582212205e1a8e850f2602dce4462d4ec85b9b6223317fcb881682ddfa7d21faf9582a2d64736f6c6343000814003300000000000000000000000003ee7ef60fcabaff08beb3f0c0257575e9402514