0x6080604052600436106100c65760003560e01c806370a082311161007f57806395d89b411161005957806395d89b4114610247578063a9059cbb14610273578063dd62ed3e14610293578063e8078d94146102d957600080fd5b806370a08231146101dc578063715018a6146102125780638da5cb5b1461022957600080fd5b806306fdde03146100d2578063095ea7b31461011557806318160ddd1461014557806323b872dd14610168578063313ce5671461018857806349bd5a5e146101a457600080fd5b366100cd57005b600080fd5b3480156100de57600080fd5b5060408051808201909152600881526723a4a11021b7b4b760c11b60208201525b60405161010c919061113d565b60405180910390f35b34801561012157600080fd5b50610135610130366004611185565b6102e1565b604051901515815260200161010c565b34801561015157600080fd5b5061015a61034e565b60405190815260200161010c565b34801561017457600080fd5b506101356101833660046111b1565b61036f565b34801561019457600080fd5b506040516009815260200161010c565b3480156101b057600080fd5b506007546101c4906001600160a01b031681565b6040516001600160a01b03909116815260200161010c565b3480156101e857600080fd5b5061015a6101f73660046111f2565b6001600160a01b031660009081526001602052604090205490565b34801561021e57600080fd5b50610227610432565b005b34801561023557600080fd5b506000546001600160a01b03166101c4565b34801561025357600080fd5b5060408051808201909152600381526223a4a160e91b60208201526100ff565b34801561027f57600080fd5b5061013561028e366004611185565b6104cc565b34801561029f57600080fd5b5061015a6102ae36600461120f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610227610505565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061033c9086815260200190565b60405180910390a35060015b92915050565b600061035c6009600a611342565b61036a90633b9aca00611351565b905090565b600061037a846108b2565b61039f5760405162461bcd60e51b815260040161039690611368565b60405180910390fd5b6001600160a01b03841660009081526002602090815260408083203384529091529020546000191461041f576001600160a01b03841660009081526002602090815260408083203384529091529020546103fa908390611392565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61042a8484846108e5565b949350505050565b6000546001600160a01b031633146104875760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206f776e65722063616e2063616c6c207468697360401b6044820152606401610396565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104d7336108b2565b6104f35760405162461bcd60e51b815260040161039690611368565b6104fe3384846108e5565b9392505050565b6000546001600160a01b0316331461055a5760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206f776e65722063616e2063616c6c207468697360401b6044820152606401610396565b6009805461ff0019166101001790556007546001600160a01b0316156105ae5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610396565b60095460ff16156105f35760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610396565b60003411806106025750600047115b61064e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610396565b306000908152600160205260409020546106a25760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610396565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113a5565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f91906113a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081091906113a5565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526001602052604090205461084a9047610aa8565b6007546001600160a01b0390811660009081526008602090815260408083208054600160ff1991821681179092556003805463ffffffff1916905560098054821683178155855490961685526004909352922080549091169091179055805461ff0019169055565b600954600090819060ff16156108ca57506001610348565b6000546001600160a01b031632036103485750600192915050565b60006001600160a01b03841661093d5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610396565b60095460ff16610971576000546001600160a01b031632146109715760405162461bcd60e51b815260040161039690611368565b600954610100900460ff1661098a5761098a8484610b50565b6000610997858585610d27565b905060006109a58285611392565b3260009081526004602052604090205490915060ff166109ed576001600160a01b038616600090815260016020526040812080548692906109e7908490611392565b90915550505b8115610a20573060009081526001602052604081208054849290610a129084906113c2565b90915550610a209050610dd4565b6001600160a01b03851660009081526001602052604081208054839290610a489084906113c2565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610a9491815260200190565b60405180910390a350600195945050505050565b610ab182610e25565b6006546000805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610b24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b4991906113d5565b5050505050565b6009805461ff00191661010017905530600090815260016020526040812054905062030d40610b816009600a611342565b610b8f90633b9aca00611351565b610b999190611403565b8110158015610baa575060095460ff165b8015610bce57506001600160a01b03821660009081526008602052604090205460ff165b15610cb9576103e8610be26009600a611342565b610bf090633b9aca00611351565b610bfa9190611403565b8110610c2a576103e8610c0f6009600a611342565b610c1d90633b9aca00611351565b610c279190611403565b90505b600354600090620186a063ffffffff9091161015610c5057610c4d600483611403565b90505b6000610c5c8284611392565b9050610c6a6009600a611342565b811115610cb65747610c7b82610ebc565b6000610c878247611392565b90508315610cb3576000610c9c600283611403565b9050610ca785610e25565b610cb18582610aa8565b505b50505b50505b600354604051606085811b6bffffffffffffffffffffffff1990811660208401529085901b1660348201524791610d16916401000000009091046001600160a01b0316908390604801604051602081830303815290604052611006565b50506009805461ff00191690555050565b600954600090819060ff168015610d4e57503260009081526004602052604090205460ff16155b1561042a576001600160a01b03851660009081526008602052604090205460ff1680610d9257506001600160a01b03841660009081526008602052604090205460ff165b1561042a57600080610da26110c6565b915091508063ffffffff168263ffffffff1686610dbf9190611351565b610dc99190611403565b979650505050505050565b600354620186a163ffffffff90911611610e23576003805460019190600090610e0490849063ffffffff16611425565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b3060009081526002602090815260408083206005546001600160a01b03168452909152902054811115610eb957306000818152600260209081526040808320600580546001600160a01b0390811686529184529382902060001990819055935491519384521692917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b610ec581610e25565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610efa57610efa611449565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7791906113a5565b81600181518110610f8a57610f8a611449565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790610fd090859060009086903090429060040161145f565b600060405180830381600087803b158015610fea57600080fd5b505af1158015610ffe573d6000803e3d6000fd5b505050505050565b6000836001600160a01b0316838360405161102191906114d0565b60006040518083038185875af1925050503d806000811461105e576040519150601f19603f3d011682016040523d82523d6000602084013e611063565b606091505b50509050806110c05760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b6064820152608401610396565b50505050565b60035460009081908190620186a090614e2063ffffffff909116116110ee5760009150611110565b600354620186a063ffffffff9091161161110b5760009150611110565b600091505b90939092509050565b60005b8381101561113457818101518382015260200161111c565b50506000910152565b602081526000825180602084015261115c816040850160208701611119565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610eb957600080fd5b6000806040838503121561119857600080fd5b82356111a381611170565b946020939093013593505050565b6000806000606084860312156111c657600080fd5b83356111d181611170565b925060208401356111e181611170565b929592945050506040919091013590565b60006020828403121561120457600080fd5b81356104fe81611170565b6000806040838503121561122257600080fd5b823561122d81611170565b9150602083013561123d81611170565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561129957816000190482111561127f5761127f611248565b8085161561128c57918102915b93841c9390800290611263565b509250929050565b6000826112b057506001610348565b816112bd57506000610348565b81600181146112d357600281146112dd576112f9565b6001915050610348565b60ff8411156112ee576112ee611248565b50506001821b610348565b5060208310610133831016604e8410600b841016171561131c575081810a610348565b611326838361125e565b806000190482111561133a5761133a611248565b029392505050565b60006104fe60ff8416836112a1565b808202811582820484141761034857610348611248565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561034857610348611248565b6000602082840312156113b757600080fd5b81516104fe81611170565b8082018082111561034857610348611248565b6000806000606084860312156113ea57600080fd5b8351925060208401519150604084015190509250925092565b60008261142057634e487b7160e01b600052601260045260246000fd5b500490565b63ffffffff81811683821601908082111561144257611442611248565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114af5784516001600160a01b03168352938301939183019160010161148a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082516114e2818460208701611119565b919091019291505056fea2646970667358221220f603175b5c83c4c4d3f0b6f248d1682404c05cdc0519aba8612a492a3cb2e8f564736f6c63430008130033
0x60806040526009805461ff00191690553480156200001c57600080fd5b5060405162001810380380620018108339810160408190526200003f916200015f565b600080546001600160a01b031916331790556200005f6009600a620002ac565b6200006f90633b9aca00620002c4565b600080546001600160a01b039081168252600160205260408083209390935581541680825282822054925190927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000cb91815260200190565b60405180910390a3600580546001600160a01b03199081166001600160a01b0394851690811790925560068054909116909117905560038054600160201b600160c01b0319166401000000009284168302179081905504166000908152600460205260409020805460ff19166001179055620002de565b80516001600160a01b03811681146200015a57600080fd5b919050565b600080604083850312156200017357600080fd5b6200017e8362000142565b91506200018e6020840162000142565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001ee578160001904821115620001d257620001d262000197565b80851615620001e057918102915b93841c9390800290620001b2565b509250929050565b6000826200020757506001620002a6565b816200021657506000620002a6565b81600181146200022f57600281146200023a576200025a565b6001915050620002a6565b60ff8411156200024e576200024e62000197565b50506001821b620002a6565b5060208310610133831016604e8410600b84101617156200027f575081810a620002a6565b6200028b8383620001ad565b8060001904821115620002a257620002a262000197565b0290505b92915050565b6000620002bd60ff841683620001f6565b9392505050565b8082028115828204841417620002a657620002a662000197565b61152280620002ee6000396000f3fe6080604052600436106100c65760003560e01c806370a082311161007f57806395d89b411161005957806395d89b4114610247578063a9059cbb14610273578063dd62ed3e14610293578063e8078d94146102d957600080fd5b806370a08231146101dc578063715018a6146102125780638da5cb5b1461022957600080fd5b806306fdde03146100d2578063095ea7b31461011557806318160ddd1461014557806323b872dd14610168578063313ce5671461018857806349bd5a5e146101a457600080fd5b366100cd57005b600080fd5b3480156100de57600080fd5b5060408051808201909152600881526723a4a11021b7b4b760c11b60208201525b60405161010c919061113d565b60405180910390f35b34801561012157600080fd5b50610135610130366004611185565b6102e1565b604051901515815260200161010c565b34801561015157600080fd5b5061015a61034e565b60405190815260200161010c565b34801561017457600080fd5b506101356101833660046111b1565b61036f565b34801561019457600080fd5b506040516009815260200161010c565b3480156101b057600080fd5b506007546101c4906001600160a01b031681565b6040516001600160a01b03909116815260200161010c565b3480156101e857600080fd5b5061015a6101f73660046111f2565b6001600160a01b031660009081526001602052604090205490565b34801561021e57600080fd5b50610227610432565b005b34801561023557600080fd5b506000546001600160a01b03166101c4565b34801561025357600080fd5b5060408051808201909152600381526223a4a160e91b60208201526100ff565b34801561027f57600080fd5b5061013561028e366004611185565b6104cc565b34801561029f57600080fd5b5061015a6102ae36600461120f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610227610505565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061033c9086815260200190565b60405180910390a35060015b92915050565b600061035c6009600a611342565b61036a90633b9aca00611351565b905090565b600061037a846108b2565b61039f5760405162461bcd60e51b815260040161039690611368565b60405180910390fd5b6001600160a01b03841660009081526002602090815260408083203384529091529020546000191461041f576001600160a01b03841660009081526002602090815260408083203384529091529020546103fa908390611392565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b61042a8484846108e5565b949350505050565b6000546001600160a01b031633146104875760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206f776e65722063616e2063616c6c207468697360401b6044820152606401610396565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b60006104d7336108b2565b6104f35760405162461bcd60e51b815260040161039690611368565b6104fe3384846108e5565b9392505050565b6000546001600160a01b0316331461055a5760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206f776e65722063616e2063616c6c207468697360401b6044820152606401610396565b6009805461ff0019166101001790556007546001600160a01b0316156105ae5760405162461bcd60e51b81526020600482015260096024820152684c502065786973747360b81b6044820152606401610396565b60095460ff16156105f35760405162461bcd60e51b815260206004820152600f60248201526e3a3930b234b7339034b99037b832b760891b6044820152606401610396565b60003411806106025750600047115b61064e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000006044820152606401610396565b306000908152600160205260409020546106a25760405162461bcd60e51b8152602060048201526015602482015274139bc81d1bdad95b9cc81a5b8818dbdb9d1c9858dd605a1b6044820152606401610396565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113a5565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561077b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079f91906113a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081091906113a5565b600780546001600160a01b0319166001600160a01b03929092169190911790553060009081526001602052604090205461084a9047610aa8565b6007546001600160a01b0390811660009081526008602090815260408083208054600160ff1991821681179092556003805463ffffffff1916905560098054821683178155855490961685526004909352922080549091169091179055805461ff0019169055565b600954600090819060ff16156108ca57506001610348565b6000546001600160a01b031632036103485750600192915050565b60006001600160a01b03841661093d5760405162461bcd60e51b815260206004820152601d60248201527f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000006044820152606401610396565b60095460ff16610971576000546001600160a01b031632146109715760405162461bcd60e51b815260040161039690611368565b600954610100900460ff1661098a5761098a8484610b50565b6000610997858585610d27565b905060006109a58285611392565b3260009081526004602052604090205490915060ff166109ed576001600160a01b038616600090815260016020526040812080548692906109e7908490611392565b90915550505b8115610a20573060009081526001602052604081208054849290610a129084906113c2565b90915550610a209050610dd4565b6001600160a01b03851660009081526001602052604081208054839290610a489084906113c2565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610a9491815260200190565b60405180910390a350600195945050505050565b610ab182610e25565b6006546000805460405163f305d71960e01b8152306004820152602481018690526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af1158015610b24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b4991906113d5565b5050505050565b6009805461ff00191661010017905530600090815260016020526040812054905062030d40610b816009600a611342565b610b8f90633b9aca00611351565b610b999190611403565b8110158015610baa575060095460ff165b8015610bce57506001600160a01b03821660009081526008602052604090205460ff165b15610cb9576103e8610be26009600a611342565b610bf090633b9aca00611351565b610bfa9190611403565b8110610c2a576103e8610c0f6009600a611342565b610c1d90633b9aca00611351565b610c279190611403565b90505b600354600090620186a063ffffffff9091161015610c5057610c4d600483611403565b90505b6000610c5c8284611392565b9050610c6a6009600a611342565b811115610cb65747610c7b82610ebc565b6000610c878247611392565b90508315610cb3576000610c9c600283611403565b9050610ca785610e25565b610cb18582610aa8565b505b50505b50505b600354604051606085811b6bffffffffffffffffffffffff1990811660208401529085901b1660348201524791610d16916401000000009091046001600160a01b0316908390604801604051602081830303815290604052611006565b50506009805461ff00191690555050565b600954600090819060ff168015610d4e57503260009081526004602052604090205460ff16155b1561042a576001600160a01b03851660009081526008602052604090205460ff1680610d9257506001600160a01b03841660009081526008602052604090205460ff165b1561042a57600080610da26110c6565b915091508063ffffffff168263ffffffff1686610dbf9190611351565b610dc99190611403565b979650505050505050565b600354620186a163ffffffff90911611610e23576003805460019190600090610e0490849063ffffffff16611425565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b3060009081526002602090815260408083206005546001600160a01b03168452909152902054811115610eb957306000818152600260209081526040808320600580546001600160a01b0390811686529184529382902060001990819055935491519384521692917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b50565b610ec581610e25565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610efa57610efa611449565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7791906113a5565b81600181518110610f8a57610f8a611449565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790610fd090859060009086903090429060040161145f565b600060405180830381600087803b158015610fea57600080fd5b505af1158015610ffe573d6000803e3d6000fd5b505050505050565b6000836001600160a01b0316838360405161102191906114d0565b60006040518083038185875af1925050503d806000811461105e576040519150601f19603f3d011682016040523d82523d6000602084013e611063565b606091505b50509050806110c05760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b6064820152608401610396565b50505050565b60035460009081908190620186a090614e2063ffffffff909116116110ee5760009150611110565b600354620186a063ffffffff9091161161110b5760009150611110565b600091505b90939092509050565b60005b8381101561113457818101518382015260200161111c565b50506000910152565b602081526000825180602084015261115c816040850160208701611119565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610eb957600080fd5b6000806040838503121561119857600080fd5b82356111a381611170565b946020939093013593505050565b6000806000606084860312156111c657600080fd5b83356111d181611170565b925060208401356111e181611170565b929592945050506040919091013590565b60006020828403121561120457600080fd5b81356104fe81611170565b6000806040838503121561122257600080fd5b823561122d81611170565b9150602083013561123d81611170565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561129957816000190482111561127f5761127f611248565b8085161561128c57918102915b93841c9390800290611263565b509250929050565b6000826112b057506001610348565b816112bd57506000610348565b81600181146112d357600281146112dd576112f9565b6001915050610348565b60ff8411156112ee576112ee611248565b50506001821b610348565b5060208310610133831016604e8410600b841016171561131c575081810a610348565b611326838361125e565b806000190482111561133a5761133a611248565b029392505050565b60006104fe60ff8416836112a1565b808202811582820484141761034857610348611248565b60208082526010908201526f2a3930b234b733903737ba1037b832b760811b604082015260600190565b8181038181111561034857610348611248565b6000602082840312156113b757600080fd5b81516104fe81611170565b8082018082111561034857610348611248565b6000806000606084860312156113ea57600080fd5b8351925060208401519150604084015190509250925092565b60008261142057634e487b7160e01b600052601260045260246000fd5b500490565b63ffffffff81811683821601908082111561144257611442611248565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156114af5784516001600160a01b03168352938301939183019160010161148a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082516114e2818460208701611119565b919091019291505056fea2646970667358221220f603175b5c83c4c4d3f0b6f248d1682404c05cdc0519aba8612a492a3cb2e8f564736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d79b67c29ec9b723e6bdf0c597225bd38a9c3ea5