60a060405234801561001057600080fd5b50600080546001600160a01b0319163317905561003462080000600160ea1b610070565b600555426080819052600255600160035561004f6000610057565b6004556100b7565b6000600482610067600143610092565b40181892915050565b60008261008d57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156100b257634e487b7160e01b600052601160045260246000fd5b500390565b6080516115a2620000e16000396000818161047e01528181610bf4015261105e01526115a26000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c806379ba50971161013b578063cea3e530116100b8578063ef08fc6e1161007c578063ef08fc6e14610363578063f2fde38b14610507578063f65036621461051a578063f77e180e1461052d578063f79875461461053757600080fd5b8063cea3e53014610479578063d390a1e4146104a0578063d4ee1d90146104a8578063dc39d06d146104bb578063dd62ed3e146104ce57600080fd5b80639fb68299116100ff5780639fb6829914610425578063a0712d6814610438578063a9059cbb1461044b578063aa3308bd1461045e578063c2d98c6e1461047157600080fd5b806379ba5097146103a95780638da5cb5b146103b35780638f759183146103de578063902d55a5146103f157806395d89b411461040357600080fd5b8063313ce567116101c95780634ef376281161018d5780634ef376281461035b57806357dd62fb146103635780635dbdda691461036e5780636de9f32b1461037757806370a082311461038057600080fd5b8063313ce5671461032b57806332e997081461033257806336bcf7d61461033a578063490203a71461034a5780634a1da80e1461035257600080fd5b806317da485f1161021057806317da485f146102db5780631801fbe5146102e357806318160ddd146102f657806323b872dd146102fe5780632e0f26251461031157600080fd5b8063031052f31461024d578063068a24951461026b57806306fdde031461028e578063095ea7b3146102bf5780630d97a2fb146102d2575b600080fd5b610258600160ea1b81565b6040519081526020015b60405180910390f35b61027e610279366004611190565b61053f565b6040519015158152602001610262565b60408051808201909152600c81526b2bb4b73a32b9102a37b5b2b760a11b60208201525b604051610262919061134c565b61027e6102cd366004611133565b6105a0565b61025860035481565b610258610645565b61027e6102f13660046112a0565b61065f565b600654610258565b61027e61030c3660046110f7565b610734565b610319601281565b60405160ff9091168152602001610262565b6012610319565b600554610258565b6102586805b12aefafa804000081565b610258610874565b61025860025481565b600454610258565b6102586305a39a8081565b61025861025881565b61025860065481565b61025861038e3660046110a9565b6001600160a01b031660009081526007602052604090205490565b6103b1610886565b005b6000546103c6906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b6102586103ec366004611287565b610901565b6102586a1b63e87c1f629e3f80000081565b6040805180820190915260068152652ba4a72a22a960d11b60208201526102b2565b6102586104333660046112a0565b610912565b61027e610446366004611287565b610948565b61027e610459366004611133565b610b14565b61025861046c366004611287565b610bec565b610258600481565b6102587f000000000000000000000000000000000000000000000000000000000000000081565b610258604881565b6001546103c6906001600160a01b031681565b61027e6104c9366004611133565b610c5b565b6102586104dc3660046110c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6103b16105153660046110a9565b610cf9565b61027e61052836600461115d565b610d58565b6102586201000081565b610258610da4565b3360009081526008602090815260408083206001600160a01b0388168452909152812054841461058a5760405162461bcd60e51b815260040161058190611388565b60405180910390fd5b610595858484610db6565b90505b949350505050565b60006001600160a01b038316158015906105c357506001600160a01b0383163014155b6105df5760405162461bcd60e51b81526004016105819061135f565b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b6005546000906000199061065990826113fd565b91505090565b6004546040805160208101929092526bffffffffffffffffffffffff193360601b169082015260548101839052600090819060740160405160208183030381529060405280519060200120905082811461072b5760405162461bcd60e51b815260206004820152604160248201527f4368616c6c656e67652064696765737420646f6573206e6f74206d617463682060448201527f657870656374656420646967657374206f6e20746f6b656e20636f6e747261636064820152601d60fa1b608482015260a401610581565b61059884610948565b60006001600160a01b0383161580159061075757506001600160a01b0383163014155b6107735760405162461bcd60e51b81526004016105819061135f565b6001600160a01b038416600090815260076020526040902054610797908390611529565b6001600160a01b03851660009081526007602090815260408083209390935560088152828220338352905220546107cf908390611529565b6001600160a01b03808616600090815260086020908152604080832033845282528083209490945591861681526007909152205461080e9083906113e5565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108629086815260200190565b60405180910390a35060019392505050565b6000610881600254610ebe565b905090565b6001546001600160a01b0316331461089d57600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600061063f60025460035484610ee7565b6000806109328460055461092691906113fd565b60025460035486610f27565b90508061093e84610ebe565b610598919061150a565b6002546000908161095882610ebe565b9050806109a75760405162461bcd60e51b815260206004820152601760248201527f526577617264206861732072656163686564207a65726f0000000000000000006044820152606401610581565b600454604080516020808201939093523360601b6bffffffffffffffffffffffff1916818301526054808201889052825180830390910181526074909101909152805191012060055480821115610a4c5760405162461bcd60e51b815260206004820152602360248201527f446967657374206973206c6172676572207468616e206d696e696e672074617260448201526219d95d60ea1b6064820152608401610581565b6003546000610a66610a5e85856113fd565b878442610f27565b90506000610a74828761150a565b90506000610a8182610f48565b9050610a8d8385610f8b565b610a9985898542610f9c565b6005556000610aa78261103b565b600481905542600281905590915033907fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d908590610ae490611054565b604080519283526020830191909152810184905260600160405180910390a25060019a9950505050505050505050565b60006001600160a01b03831615801590610b3757506001600160a01b0383163014155b610b535760405162461bcd60e51b81526004016105819061135f565b33600090815260076020526040902054610b6e908390611529565b33600090815260076020526040808220929092556001600160a01b03851681522054610b9b9083906113e5565b6001600160a01b0384166000818152600760205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106339086815260200190565b600080610c197f000000000000000000000000000000000000000000000000000000000000000084611529565b90506305a39a80811015610c305750600092915050565b6305a39a80610c3f8183611529565b610c4991906113fd565b610c549060016113e5565b9392505050565b600080546001600160a01b03163314610c7357600080fd5b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb90604401602060405180830381600087803b158015610cc157600080fd5b505af1158015610cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190611265565b6000546001600160a01b03163314610d1057600080fd5b6001600160a01b038116610d365760405162461bcd60e51b81526004016105819061135f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602090815260408083206001600160a01b03871684529091528120548314610d9a5760405162461bcd60e51b815260040161058190611388565b61059884836105a0565b6000600354610258610881919061150a565b60006001600160a01b03841615801590610dd957506001600160a01b0384163014155b610df55760405162461bcd60e51b81526004016105819061135f565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020879055518681529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3604051638f4ffcb160e01b81526001600160a01b03851690638f4ffcb190610e8290339087903090889060040161130f565b600060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b506001979650505050505050565b6000610ec982610bec565b610ed4906002611462565b61063f906805b12aefafa80400006113fd565b60008281610258610ef88786611529565b610f0291906113fd565b905081811115610f10578091505b6048821115610f1e57604891505b50949350505050565b600080610f35858585610ee7565b9050808610156105955785915050610598565b33600090815260076020526040812080548391908390610f699084906113e5565b9091555050600654600090610f7f9084906113e5565b60068190559392505050565b808214610f985760038290555b5050565b600080610fa98584611529565b9050610fb76102588561150a565b610fc290603d61150a565b610fcd82605861150a565b1015610ff1576064610fe087606361150a565b610fea91906113fd565b955061100b565b6063610ffe87606461150a565b61100891906113fd565b95505b6201000086101561101d576201000095505b600160ea1b86111561103157600160ea1b95505b5093949350505050565b600060048261104b600143611529565b40181892915050565b60006102586110837f000000000000000000000000000000000000000000000000000000000000000084611529565b61063f91906113fd565b80356001600160a01b03811681146110a457600080fd5b919050565b6000602082840312156110bb57600080fd5b610c548261108d565b600080604083850312156110d757600080fd5b6110e08361108d565b91506110ee6020840161108d565b90509250929050565b60008060006060848603121561110c57600080fd5b6111158461108d565b92506111236020850161108d565b9150604084013590509250925092565b6000806040838503121561114657600080fd5b61114f8361108d565b946020939093013593505050565b60008060006060848603121561117257600080fd5b61117b8461108d565b95602085013595506040909401359392505050565b600080600080608085870312156111a657600080fd5b6111af8561108d565b93506020850135925060408501359150606085013567ffffffffffffffff808211156111da57600080fd5b818701915087601f8301126111ee57600080fd5b81358181111561120057611200611556565b604051601f8201601f19908116603f0116810190838211818310171561122857611228611556565b816040528281528a602084870101111561124157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60006020828403121561127757600080fd5b81518015158114610c5457600080fd5b60006020828403121561129957600080fd5b5035919050565b600080604083850312156112b357600080fd5b50508035926020909101359150565b6000815180845260005b818110156112e8576020818501810151868301820152016112cc565b818111156112fa576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0385811682526020820185905283166040820152608060608201819052600090611342908301846112c2565b9695505050505050565b602081526000610c5460208301846112c2565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b60208082526038908201527f43757272656e74207370656e64657220616c6c6f77616e636520646f6573206e60408201527f6f74206d61746368207370656369666965642076616c75650000000000000000606082015260800190565b600082198211156113f8576113f8611540565b500190565b60008261141a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561145a57816000190482111561144057611440611540565b8085161561144d57918102915b93841c9390800290611424565b509250929050565b6000610c5483836000826114785750600161063f565b816114855750600061063f565b816001811461149b57600281146114a5576114c1565b600191505061063f565b60ff8411156114b6576114b6611540565b50506001821b61063f565b5060208310610133831016604e8410600b84101617156114e4575081810a61063f565b6114ee838361141f565b806000190482111561150257611502611540565b029392505050565b600081600019048311821515161561152457611524611540565b500290565b60008282101561153b5761153b611540565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220675ac9516343bf5e254dc38eb10f6377b12932588d9091dacac9e60d7d6bc65a64736f6c63430008050033