0x6080604052600436106100a8575f3560e01c806370a082311161006257806370a08231146101a5578063715018a6146101d95780638da5cb5b146101ed57806395d89b4114610213578063a9059cbb14610243578063dd62ed3e14610262575f80fd5b806306fdde03146100b3578063095ea7b3146100f957806318160ddd1461012857806323b872dd1461014a578063313ce56714610169578063502aafc114610184575f80fd5b366100af57005b5f80fd5b3480156100be575f80fd5b5060408051808201909152600c81526b2130b13ca837b39021b7b4b760a11b60208201525b6040516100f09190610b80565b60405180910390f35b348015610104575f80fd5b50610118610113366004610be6565b6102a6565b60405190151581526020016100f0565b348015610133575f80fd5b5061013c6102bc565b6040519081526020016100f0565b348015610155575f80fd5b50610118610164366004610c0e565b6102dc565b348015610174575f80fd5b50604051600981526020016100f0565b34801561018f575f80fd5b506101a361019e366004610c47565b610343565b005b3480156101b0575f80fd5b5061013c6101bf366004610c80565b6001600160a01b03165f9081526001602052604090205490565b3480156101e4575f80fd5b506101a36103ce565b3480156101f8575f80fd5b505f546040516001600160a01b0390911681526020016100f0565b34801561021e575f80fd5b50604080518082019091526008815267122827a3a1a7a4a760c11b60208201526100e3565b34801561024e575f80fd5b5061011861025d366004610be6565b61046f565b34801561026d575f80fd5b5061013c61027c366004610c99565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6102b233848461047b565b5060015b92915050565b5f6102c96009600a610dbe565b6102d790633b9aca00610dcc565b905090565b5f6102e884848461059f565b610339843361033485604051806060016040528060288152602001610e47602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610866565b61047b565b5060019392505050565b5f546001600160a01b031633146103a15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b5f546001600160a01b031633146104275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610398565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6102b233848461059f565b6001600160a01b0383166104dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610398565b6001600160a01b03821661053e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610398565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316158015906105bf57506001600160a01b03821615155b80156105ca57505f81115b6106165760405162461bcd60e51b815260206004820152601c60248201527f5a65726f2061646472657373206f72207a65726f20616d6f756e742e000000006044820152606401610398565b5f546001600160a01b0384811691161480159061064057505f546001600160a01b03838116911614155b1561069e57600554600160a01b900460ff1661069e5760405162461bcd60e51b815260206004820152601860248201527f53776170206973206e6f7420656e61626c6564207965742e00000000000000006044820152606401610398565b5f806106aa858561089e565b90508015610767576005546001600160a01b03908116908516036107165761070f60646107096001600560159054906101000a900460ff1660ff1610156106f1575f6106ff565b600554600160b81b900460ff165b869060ff166108e5565b90610963565b9150610756565b61075360646107096001600560159054906101000a900460ff1660ff16101561073f575f6106ff565b6005548690600160b01b900460ff166108e5565b91505b61076083836109a4565b925061080d565b5f546001600160a01b0385811691161480159061079157506005546001600160a01b038681169116145b80156107b457506001600160a01b0384165f9081526003602052604090205460ff165b80156107cd57506005546001600160a81b90910460ff16105b1561080d5760065460058054919350600160a81b90910460ff169060156107f383610de3565b91906101000a81548160ff021916908360ff160217905550505b811561083c57305f9081526001602052604090205461082c90836109e5565b305f908152600160205260409020555b305f9081526001602052604090205461085490610a43565b61085f858585610ab1565b5050505050565b5f81848411156108895760405162461bcd60e51b81526004016103989190610b80565b505f6108958486610e01565b95945050505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156108de57506001600160a01b0382165f9081526003602052604090205460ff16155b9392505050565b5f825f036108f457505f6102b6565b5f6108ff8385610dcc565b90508261090c8583610e14565b146108de5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610398565b5f6108de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b54565b5f6108de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610866565b5f806109f18385610e33565b9050838110156108de5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610398565b600754811115610aae57305f90815260016020526040902054610a6690826109a4565b305f90815260016020526040808220929092556004546001600160a01b031681522054610a9390826109e5565b6004546001600160a01b03165f908152600160205260409020555b50565b6001600160a01b0383165f90815260016020526040902054610ad390826109a4565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610b0190826109e5565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105929085815260200190565b5f8183610b745760405162461bcd60e51b81526004016103989190610b80565b505f6108958486610e14565b5f6020808352835180828501525f5b81811015610bab57858101830151858201604001528201610b8f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610be1575f80fd5b919050565b5f8060408385031215610bf7575f80fd5b610c0083610bcb565b946020939093013593505050565b5f805f60608486031215610c20575f80fd5b610c2984610bcb565b9250610c3760208501610bcb565b9150604084013590509250925092565b5f8060408385031215610c58575f80fd5b610c6183610bcb565b915060208301358015158114610c75575f80fd5b809150509250929050565b5f60208284031215610c90575f80fd5b6108de82610bcb565b5f8060408385031215610caa575f80fd5b610cb383610bcb565b9150610cc160208401610bcb565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610d1857815f1904821115610cfe57610cfe610cca565b80851615610d0b57918102915b93841c9390800290610ce3565b509250929050565b5f82610d2e575060016102b6565b81610d3a57505f6102b6565b8160018114610d505760028114610d5a57610d76565b60019150506102b6565b60ff841115610d6b57610d6b610cca565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715610d99575081810a6102b6565b610da38383610cde565b805f1904821115610db657610db6610cca565b029392505050565b5f6108de60ff841683610d20565b80820281158282048414176102b6576102b6610cca565b5f60ff821660ff8103610df857610df8610cca565b60010192915050565b818103818111156102b6576102b6610cca565b5f82610e2e57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156102b6576102b6610cca56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1dbbc16b9a33753cec8c243b7cfbea498a2da6033488b63b0e22f5d0f8c73d664736f6c63430008140033
0x60806040526200003c60646200003560016200001e6009600a6200040d565b6200002e90633b9aca006200041d565b90620001ea565b906200027d565b6007553480156200004b575f80fd5b50604051620013aa380380620013aa8339810160408190526200006e916200044d565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000bc6009600a6200040d565b620000cc90633b9aca006200041d565b335f81815260016020526040902091909155600480546001600160a01b0319169091179055620000ff6009600a6200040d565b6200010b90846200041d565b6006556005805460ff838116600160b81b0260ff60b81b19918616600160b01b029190911661ffff60b01b1990921691909117179055600160035f620001585f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055620001873390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001c06009600a6200040d565b620001d090633b9aca006200041d565b60405190815260200160405180910390a3505050620004f8565b5f825f03620001fb57505f62000277565b5f6200020883856200041d565b9050826200021785836200048b565b14620002745760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200027483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620002c660201b60201c565b5f8183620002e95760405162461bcd60e51b81526004016200026b9190620004ab565b505f620002f784866200048b565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200035457815f190482111562000338576200033862000300565b808516156200034657918102915b93841c939080029062000319565b509250929050565b5f826200036c5750600162000277565b816200037a57505f62000277565b81600181146200039357600281146200039e57620003be565b600191505062000277565b60ff841115620003b257620003b262000300565b50506001821b62000277565b5060208310610133831016604e8410600b8410161715620003e3575081810a62000277565b620003ef838362000314565b805f190482111562000405576200040562000300565b029392505050565b5f6200027460ff8416836200035c565b808202811582820484141762000277576200027762000300565b805160ff8116811462000448575f80fd5b919050565b5f805f6060848603121562000460575f80fd5b83519250620004726020850162000437565b9150620004826040850162000437565b90509250925092565b5f82620004a657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015620004d857858101830151858201604001528201620004ba565b505f604082860101526040601f19601f8301168501019250505092915050565b610ea480620005065f395ff3fe6080604052600436106100a8575f3560e01c806370a082311161006257806370a08231146101a5578063715018a6146101d95780638da5cb5b146101ed57806395d89b4114610213578063a9059cbb14610243578063dd62ed3e14610262575f80fd5b806306fdde03146100b3578063095ea7b3146100f957806318160ddd1461012857806323b872dd1461014a578063313ce56714610169578063502aafc114610184575f80fd5b366100af57005b5f80fd5b3480156100be575f80fd5b5060408051808201909152600c81526b2130b13ca837b39021b7b4b760a11b60208201525b6040516100f09190610b80565b60405180910390f35b348015610104575f80fd5b50610118610113366004610be6565b6102a6565b60405190151581526020016100f0565b348015610133575f80fd5b5061013c6102bc565b6040519081526020016100f0565b348015610155575f80fd5b50610118610164366004610c0e565b6102dc565b348015610174575f80fd5b50604051600981526020016100f0565b34801561018f575f80fd5b506101a361019e366004610c47565b610343565b005b3480156101b0575f80fd5b5061013c6101bf366004610c80565b6001600160a01b03165f9081526001602052604090205490565b3480156101e4575f80fd5b506101a36103ce565b3480156101f8575f80fd5b505f546040516001600160a01b0390911681526020016100f0565b34801561021e575f80fd5b50604080518082019091526008815267122827a3a1a7a4a760c11b60208201526100e3565b34801561024e575f80fd5b5061011861025d366004610be6565b61046f565b34801561026d575f80fd5b5061013c61027c366004610c99565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f6102b233848461047b565b5060015b92915050565b5f6102c96009600a610dbe565b6102d790633b9aca00610dcc565b905090565b5f6102e884848461059f565b610339843361033485604051806060016040528060288152602001610e47602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190610866565b61047b565b5060019392505050565b5f546001600160a01b031633146103a15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60058054911515600160a01b026001600160a81b03199092166001600160a01b0390931692909217179055565b5f546001600160a01b031633146104275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610398565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f6102b233848461059f565b6001600160a01b0383166104dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610398565b6001600160a01b03821661053e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610398565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316158015906105bf57506001600160a01b03821615155b80156105ca57505f81115b6106165760405162461bcd60e51b815260206004820152601c60248201527f5a65726f2061646472657373206f72207a65726f20616d6f756e742e000000006044820152606401610398565b5f546001600160a01b0384811691161480159061064057505f546001600160a01b03838116911614155b1561069e57600554600160a01b900460ff1661069e5760405162461bcd60e51b815260206004820152601860248201527f53776170206973206e6f7420656e61626c6564207965742e00000000000000006044820152606401610398565b5f806106aa858561089e565b90508015610767576005546001600160a01b03908116908516036107165761070f60646107096001600560159054906101000a900460ff1660ff1610156106f1575f6106ff565b600554600160b81b900460ff165b869060ff166108e5565b90610963565b9150610756565b61075360646107096001600560159054906101000a900460ff1660ff16101561073f575f6106ff565b6005548690600160b01b900460ff166108e5565b91505b61076083836109a4565b925061080d565b5f546001600160a01b0385811691161480159061079157506005546001600160a01b038681169116145b80156107b457506001600160a01b0384165f9081526003602052604090205460ff165b80156107cd57506005546001600160a81b90910460ff16105b1561080d5760065460058054919350600160a81b90910460ff169060156107f383610de3565b91906101000a81548160ff021916908360ff160217905550505b811561083c57305f9081526001602052604090205461082c90836109e5565b305f908152600160205260409020555b305f9081526001602052604090205461085490610a43565b61085f858585610ab1565b5050505050565b5f81848411156108895760405162461bcd60e51b81526004016103989190610b80565b505f6108958486610e01565b95945050505050565b6001600160a01b0382165f9081526003602052604081205460ff161580156108de57506001600160a01b0382165f9081526003602052604090205460ff16155b9392505050565b5f825f036108f457505f6102b6565b5f6108ff8385610dcc565b90508261090c8583610e14565b146108de5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610398565b5f6108de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b54565b5f6108de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610866565b5f806109f18385610e33565b9050838110156108de5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610398565b600754811115610aae57305f90815260016020526040902054610a6690826109a4565b305f90815260016020526040808220929092556004546001600160a01b031681522054610a9390826109e5565b6004546001600160a01b03165f908152600160205260409020555b50565b6001600160a01b0383165f90815260016020526040902054610ad390826109a4565b6001600160a01b038085165f908152600160205260408082209390935590841681522054610b0190826109e5565b6001600160a01b038084165f8181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105929085815260200190565b5f8183610b745760405162461bcd60e51b81526004016103989190610b80565b505f6108958486610e14565b5f6020808352835180828501525f5b81811015610bab57858101830151858201604001528201610b8f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610be1575f80fd5b919050565b5f8060408385031215610bf7575f80fd5b610c0083610bcb565b946020939093013593505050565b5f805f60608486031215610c20575f80fd5b610c2984610bcb565b9250610c3760208501610bcb565b9150604084013590509250925092565b5f8060408385031215610c58575f80fd5b610c6183610bcb565b915060208301358015158114610c75575f80fd5b809150509250929050565b5f60208284031215610c90575f80fd5b6108de82610bcb565b5f8060408385031215610caa575f80fd5b610cb383610bcb565b9150610cc160208401610bcb565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610d1857815f1904821115610cfe57610cfe610cca565b80851615610d0b57918102915b93841c9390800290610ce3565b509250929050565b5f82610d2e575060016102b6565b81610d3a57505f6102b6565b8160018114610d505760028114610d5a57610d76565b60019150506102b6565b60ff841115610d6b57610d6b610cca565b50506001821b6102b6565b5060208310610133831016604e8410600b8410161715610d99575081810a6102b6565b610da38383610cde565b805f1904821115610db657610db6610cca565b029392505050565b5f6108de60ff841683610d20565b80820281158282048414176102b6576102b6610cca565b5f60ff821660ff8103610df857610df8610cca565b60010192915050565b818103818111156102b6576102b6610cca565b5f82610e2e57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156102b6576102b6610cca56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b1dbbc16b9a33753cec8c243b7cfbea498a2da6033488b63b0e22f5d0f8c73d664736f6c634300081400330000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064