0x608060405234801561001057600080fd5b50604051610df0380380610df083398101604081905261002f9161008b565b600080546001600160a01b039384166001600160a01b031991821617909155600180549390921692811692909217905560028054909116331790556100be565b80516001600160a01b038116811461008657600080fd5b919050565b6000806040838503121561009e57600080fd5b6100a78361006f565b91506100b56020840161006f565b90509250929050565b610d23806100cd6000396000f3fe6080604052600436106100435760003560e01c806306b091f91461004f57806346ae945d14610071578063a6f9dae1146100a3578063f14210a6146100c357600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5061006f61006a36600461089d565b6100e3565b005b34801561007d57600080fd5b5061009161008c366004610a2f565b6101b9565b60405190815260200160405180910390f35b3480156100af57600080fd5b5061006f6100be366004610bc7565b6103f5565b3480156100cf57600080fd5b5061006f6100de366004610be4565b610460565b60025473ffffffffffffffffffffffffffffffffffffffff16331461010757600080fd5b806000036101ae576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526101aa908390339073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a59190610bfd565b610595565b5050565b6101aa823383610595565b6000808484815181106101ce576101ce610c16565b60200260200101519050600084118015610224575030856101f0600187610c45565b8151811061020057610200610c16565b602002602001015160e0015173ffffffffffffffffffffffffffffffffffffffff16145b1561023c5761023c8160400151826020015185610595565b600081602001519050816040015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16634a248d2a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cf9190610c7f565b73ffffffffffffffffffffffffffffffffffffffff160361039057602082015160e08301516040517fbd6015b400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063bd6015b4906024015b6020604051808303816000875af1158015610363573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103879190610bfd565b925050506103ee565b602082015160e08301516040517fdd93f59a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063dd93f59a90602401610344565b9392505050565b60025473ffffffffffffffffffffffffffffffffffffffff16331461041957600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff16331461048457600080fd5b6000816000036104de5760405133904790600081818185875af1925050503d80600081146104ce576040519150601f19603f3d011682016040523d82523d6000602084013e6104d3565b606091505b505080915050610529565b60405133908390600081818185875af1925050503d806000811461051e576040519150601f19603f3d011682016040523d82523d6000602084013e610523565b606091505b50909150505b806101aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217375636365737300000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610622908490610627565b505050565b600061064973ffffffffffffffffffffffffffffffffffffffff8416836106bd565b9050805160001415801561066e57508080602001905181019061066c9190610c9c565b155b15610622576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161058c565b60606106cb838360006106d4565b90505b92915050565b606081471015610712576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161058c565b6000808573ffffffffffffffffffffffffffffffffffffffff16848660405161073b9190610cbe565b60006040518083038185875af1925050503d8060008114610778576040519150601f19603f3d011682016040523d82523d6000602084013e61077d565b606091505b509150915061078d868383610797565b9695505050505050565b6060826107ac576107a782610826565b6103ee565b81511580156107d0575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561081f576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161058c565b50806103ee565b8051156108365780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff8116811461086857600080fd5b80356108988161086b565b919050565b600080604083850312156108b057600080fd5b82356108bb8161086b565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561091c5761091c6108c9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610969576109696108c9565b604052919050565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461089857600080fd5b600082601f8301126109b257600080fd5b813567ffffffffffffffff8111156109cc576109cc6108c9565b6109fd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610922565b818152846020838601011115610a1257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610a4457600080fd5b833567ffffffffffffffff80821115610a5c57600080fd5b818601915086601f830112610a7057600080fd5b8135602082821115610a8457610a846108c9565b8160051b610a93828201610922565b928352848101820192828101908b851115610aad57600080fd5b83870192505b84831015610bae57823586811115610aca57600080fd5b8701610120818e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610aff57600080fd5b610b076108f8565b610b12868301610971565b8152610b206040830161088d565b86820152610b306060830161088d565b6040820152610b416080830161088d565b606082015260a0820135608082015260c082013560a082015260e082013560c0820152610b71610100830161088d565b60e082015261012082013588811115610b8957600080fd5b610b978f88838601016109a1565b610100830152508352509183019190830190610ab3565b9b928a01359a5050506040909701359695505050505050565b600060208284031215610bd957600080fd5b81356103ee8161086b565b600060208284031215610bf657600080fd5b5035919050565b600060208284031215610c0f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103818111156106ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060208284031215610c9157600080fd5b81516103ee8161086b565b600060208284031215610cae57600080fd5b815180151581146103ee57600080fd5b6000825160005b81811015610cdf5760208186018101518583015201610cc5565b50600092019182525091905056fea2646970667358221220e0902538a49ae20d859807a8c70f3f7dc7fbc2b73e9bb9421f067bf9ec57ae1064736f6c63430008140033000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000005300000000000000000000000000000000000004