0x608060405234801561001057600080fd5b5060405161101538038061101583398101604081905261002f916100d1565b61003833610069565b600280546001600160a01b039384166001600160a01b0319918216179091556003805492909316911617905561010b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ce57600080fd5b50565b600080604083850312156100e457600080fd5b82516100ef816100b9565b6020840151909250610100816100b9565b809150509250929050565b610efb8061011a6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a6146101a0578063817b1cd2146101a85780638da5cb5b146101b1578063c36be357146101cc578063e449f341146101df578063f2fde38b146101f257600080fd5b80630fbf0a93146100ae578063150b7a02146100c35780633562b086146100f457806362bf8997146101155780636ba4c1381461018d575b600080fd5b6100c16100bc366004610c69565b610205565b005b6100d66100d1366004610cc0565b6104c6565b6040516001600160e01b031990911681526020015b60405180910390f35b610107610102366004610c69565b610543565b6040519081526020016100eb565b61015c610123366004610d5f565b60046020526000908152604090205462ffffff8116906301000000810465ffffffffffff1690600160481b90046001600160a01b031683565b6040805162ffffff909416845265ffffffffffff90921660208401526001600160a01b0316908201526060016100eb565b6100c161019b366004610c69565b6105fb565b6100c161060c565b61010760015481565b6000546040516001600160a01b0390911681526020016100eb565b6100c16101da366004610d78565b610672565b6100c16101ed366004610c69565b610684565b6100c1610200366004610dcd565b610691565b6000828290506001600082825461021c9190610e07565b90915550600090505b828110156104c05783838281811061023f5761023f610e1f565b6002546040516331a9108f60e11b8152602092909202939093013560048201819052945033926001600160a01b03169150636352211e9060240160206040518083038186803b15801561029157600080fd5b505afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c99190610e35565b6001600160a01b0316146103155760405162461bcd60e51b815260206004820152600e60248201526d3737ba103cb7bab9103a37b5b2b760911b60448201526064015b60405180910390fd5b60008281526004602052604090205462ffffff16156103675760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481cdd185ad95960921b604482015260640161030c565b6002546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401600060405180830381600087803b1580156103b957600080fd5b505af11580156103cd573d6000803e3d6000fd5b50506040805133815260208101869052428183015290517f36b3725f1783bad4ff05b7f4c077c3aa68eeb23a4d054ba189db4d01ac278d399350908190036060019150a16040805160608101825262ffffff808516825265ffffffffffff4281166020808501918252338587019081526000898152600490925295902093518454915195516001600160a01b0316600160481b027fffffff0000000000000000000000000000000000000000ffffffffffffffffff9690931663010000000268ffffffffffffffffff199092169316929092179190911792909216919091179055806104b881610e52565b915050610225565b50505050565b60006001600160a01b038516156105315760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742073656e64206e66747320746f206379726f4368616d62657273604482015268206469726563746c7960b81b606482015260840161030c565b50630a85bd0160e11b95945050505050565b60008060008060005b858110156105f1576000848152600460209081526040918290208251606081018452905462ffffff811682526301000000810465ffffffffffff16928201839052600160481b90046001600160a01b031692810192909252620151806105b28242610e6d565b6105c69069152d02c7e14af6800000610e84565b6105d09190610ea3565b6105da9085610e07565b9350505080806105e990610e52565b91505061054c565b5095945050505050565b610608338383600061075c565b5050565b6000546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030c565b6106706000610a0d565b565b61067f838383600061075c565b505050565b610608338383600161075c565b6000546001600160a01b031633146106eb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030c565b6001600160a01b0381166107505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161030c565b61075981610a0d565b50565b600080805b848110156109375785858281811061077b5761077b610e1f565b602090810292909201356000818152600484526040908190208151606081018352905462ffffff8116825265ffffffffffff6301000000820416958201959095526001600160a01b03600160481b909504851691810182905291965090928a161490506108195760405162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71037bbb732b960a11b604482015260640161030c565b602081015165ffffffffffff16620151806108348242610e6d565b6108489069152d02c7e14af6800000610e84565b6108529190610ea3565b61085c9085610e07565b935060405180606001604052808662ffffff1681526020014265ffffffffffff1681526020018a6001600160a01b03168152506004600087815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908362ffffff16021790555060208201518160000160036101000a81548165ffffffffffff021916908365ffffffffffff16021790555060408201518160000160096101000a8154816001600160a01b0302191690836001600160a01b031602179055509050505050808061092f90610e52565b915050610761565b5080156109b257610949600a82610ea3565b6003546040516340c10f1960e01b81526001600160a01b038981166004830152602482018490529293509116906340c10f1990604401600060405180830381600087803b15801561099957600080fd5b505af11580156109ad573d6000803e3d6000fd5b505050505b82156109c3576109c3868686610a5d565b604080516001600160a01b0388168152602081018390527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a910160405180910390a1505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008282905060016000828254610a749190610e6d565b90915550600090505b82811015610c1657838382818110610a9757610a97610e1f565b602090810292909201356000818152600484526040908190208151606081018352905462ffffff811682526301000000810465ffffffffffff1695820195909552600160481b9094046001600160a01b031690840181905290945033149050610b315760405162461bcd60e51b815260206004820152600c60248201526b3737ba1030b71037bbb732b960a11b604482015260640161030c565b60008381526004602090815260409182902080546001600160e81b031916905581516001600160a01b0389168152908101859052428183015290517fc486b9458a8637650d84d262414833a5a457bc91ae86b7da110386c8c3fa255b9181900360600190a16002546040516323b872dd60e01b81523060048201526001600160a01b03888116602483015260448201869052909116906323b872dd90606401600060405180830381600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b50505050508080610c0e90610e52565b915050610a7d565b5050505050565b60008083601f840112610c2f57600080fd5b50813567ffffffffffffffff811115610c4757600080fd5b6020830191508360208260051b8501011115610c6257600080fd5b9250929050565b60008060208385031215610c7c57600080fd5b823567ffffffffffffffff811115610c9357600080fd5b610c9f85828601610c1d565b90969095509350505050565b6001600160a01b038116811461075957600080fd5b600080600080600060808688031215610cd857600080fd5b8535610ce381610cab565b94506020860135610cf381610cab565b935060408601359250606086013567ffffffffffffffff80821115610d1757600080fd5b818801915088601f830112610d2b57600080fd5b813581811115610d3a57600080fd5b896020828501011115610d4c57600080fd5b9699959850939650602001949392505050565b600060208284031215610d7157600080fd5b5035919050565b600080600060408486031215610d8d57600080fd5b8335610d9881610cab565b9250602084013567ffffffffffffffff811115610db457600080fd5b610dc086828701610c1d565b9497909650939450505050565b600060208284031215610ddf57600080fd5b8135610dea81610cab565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610e1a57610e1a610df1565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610e4757600080fd5b8151610dea81610cab565b6000600019821415610e6657610e66610df1565b5060010190565b600082821015610e7f57610e7f610df1565b500390565b6000816000190483118215151615610e9e57610e9e610df1565b500290565b600082610ec057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220aefa8005daa8ce2d5811506f3e0f4e0dbe4d8785926ba120dcb039d48f19040064736f6c6343000809003300000000000000000000000072e3558c3a3b72b26d06250e079a9b7617618a9c0000000000000000000000009ab2b9af56febbff2bcbd64d426794b8cffc2ed6