6080604052620000126009600a62000487565b62000022906305f5e1006200049f565b6001818155612710600281905561012c6003556004819055600b805460ff60a01b1916600160a01b1790556000600c819055600d819055600e819055600f819055601081905560118190556012556013805460ff199081168417909155601491909155601580549091169091179055620186a090620000a39060c86200049f565b620000af9190620004b9565b601855620186a0600154600a620000c791906200049f565b620000d39190620004b9565b601955348015620000e357600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001719190620004dc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620004dc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002599190620004dc565b600a80546001600160a01b038581166001600160a01b031992831617909255600b805492841692909116919091179055306000908152600760209081526040808320805460ff1990811660019081179092557f7d9eb58347627b3c36015c22f2f13fb1e2e5ccd4fd5980988d31f19109868c0a805482168317905533808652838620805483168417905582546005865284872081905573622360351046d3816b3c7ee3ff611b9828fdf3fd8752600886527f24c3286ba1298c88336789674a460d07cc9fa340229b4acef81003faa302008d80549093169093179091559151908152939450927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000507565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003c9578160001904821115620003ad57620003ad62000372565b80851615620003bb57918102915b93841c93908002906200038d565b509250929050565b600082620003e25750600162000481565b81620003f15750600062000481565b81600181146200040a5760028114620004155762000435565b600191505062000481565b60ff84111562000429576200042962000372565b50506001821b62000481565b5060208310610133831016604e8410600b84101617156200045a575081810a62000481565b62000466838362000388565b80600019048211156200047d576200047d62000372565b0290505b92915050565b60006200049860ff841683620003d1565b9392505050565b808202811582820484141762000481576200048162000372565b600082620004d757634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004ef57600080fd5b81516001600160a01b03811681146200049857600080fd5b611bcd80620005176000396000f3fe60806040526004361061016a5760003560e01c806348ff2b8b116100d157806395d89b411161008a578063a9059cbb11610064578063a9059cbb1461047d578063dd62ed3e1461049d578063e4c63daa146104e3578063f2fde38b1461050357600080fd5b806395d89b41146101985780639c7fe9ee1461040e578063a8aa1b311461045d57600080fd5b806348ff2b8b1461034057806370a082311461036057806378109e541461039657806378a9dcc6146103ab5780637d1db4a5146103c7578063893d20e8146103dc57600080fd5b806323b872dd1161012357806323b872dd14610270578063293230b8146102905780632f54bf6e146102a5578063313ce567146102d457806334c5d2ce146102f05780633f4218e01461031057600080fd5b8063044019301461017657806306fdde0314610198578063095ea7b3146101d6578063125f9e4e1461020657806318160ddd146102385780631f976b7e1461025b57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061019661019136600461181b565b610523565b005b3480156101a457600080fd5b5060408051808201825260068152652120a723a2a960d11b602082015290516101cd9190611867565b60405180910390f35b3480156101e257600080fd5b506101f66101f13660046118cd565b610611565b60405190151581526020016101cd565b6101966102143660046118f9565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b34801561024457600080fd5b5061024d610628565b6040519081526020016101cd565b34801561026757600080fd5b5061024d610699565b34801561027c57600080fd5b506101f661028b366004611916565b6106bd565b34801561029c57600080fd5b50610196610727565b3480156102b157600080fd5b506101f66102c03660046118f9565b6000546001600160a01b0391821691161490565b3480156102e057600080fd5b50604051600981526020016101cd565b3480156102fc57600080fd5b5061019661030b366004611957565b610766565b34801561031c57600080fd5b506101f661032b3660046118f9565b60076020526000908152604090205460ff1681565b34801561034c57600080fd5b5061019661035b366004611983565b6108ad565b34801561036c57600080fd5b5061024d61037b3660046118f9565b6001600160a01b031660009081526005602052604090205490565b3480156103a257600080fd5b5061024d610902565b3480156103b757600080fd5b506101966013805460ff19169055565b3480156103d357600080fd5b5061024d610912565b3480156103e857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101cd565b61019661041c3660046119c1565b73622360351046d3816b3c7ee3ff611b9828fdf3fd60005260056020527f7c7ef8ace7ac2f3205658e07f9b7b2a7a2644a74a9f0f834bf9a07f9dedec78055565b34801561046957600080fd5b50600b546103f6906001600160a01b031681565b34801561048957600080fd5b506101f66104983660046118cd565b610922565b3480156104a957600080fd5b5061024d6104b83660046119da565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156104ef57600080fd5b506101966104fe3660046118f9565b61092f565b34801561050f57600080fd5b5061019661051e3660046118f9565b61097d565b6000546001600160a01b031633146105565760405162461bcd60e51b815260040161054d90611a08565b60405180910390fd5b600c879055600d869055600f859055600e8490556010839055601182905560128190556014546105879060056109fb565b601054111580156105a757506014546105a19060056109fb565b60115411155b6106085760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161054d565b50505050505050565b600061061e338484610a07565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261069492909161068e9190610b2b565b90610b2b565b905090565b60006014546003546106a9610628565b6106b39190611a3e565b6106949190611a55565b60006106ca848484610b37565b61071c843361071785604051806060016040528060288152602001611b70602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610c5d565b610a07565b5060015b9392505050565b6000546001600160a01b031633146107515760405162461bcd60e51b815260040161054d90611a08565b600b805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107905760405162461bcd60e51b815260040161054d90611a08565b60006127108461079e610628565b6107a89190611a3e565b6107b29190611a55565b90506000612710846107c2610628565b6107cc9190611a3e565b6107d69190611a55565b90506000612710846107e6610628565b6107f09190611a3e565b6107fa9190611a55565b6002879055600386905560048590559050600061082c6103e86108266005610820610628565b90610c89565b906109fb565b905080841015801561083e5750808310155b801561084a5750808210155b6106085760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161054d565b6000546001600160a01b031633146108d75760405162461bcd60e51b815260040161054d90611a08565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60006014546004546106a9610628565b60006014546002546106a9610628565b600061061e338484610b37565b6000546001600160a01b031633146109595760405162461bcd60e51b815260040161054d90611a08565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260040161054d90611a08565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006107208284611a55565b6001600160a01b038316610a695760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054d565b6001600160a01b038216610aca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054d565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107208284611a77565b610b42838383610c95565b610b4c8383610e44565b610b57838383610ed9565b610b618383610fca565b610b6c838383611021565b610b77838383611158565b6001600160a01b038316600090815260056020526040902054610b9a9082610b2b565b6001600160a01b038416600090815260056020526040812091909155610bc0848461117d565b610bca5781610bd5565b610bd58484846111c3565b6001600160a01b038416600090815260056020526040902054909150610bfb90826112b1565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c4f9085815260200190565b60405180910390a350505050565b60008184841115610c815760405162461bcd60e51b815260040161054d9190611867565b505050900390565b60006107208284611a3e565b6001600160a01b038316610cf95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054d565b6001600160a01b038216610d5b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054d565b60008111610dbd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161054d565b6001600160a01b038316600090815260056020526040902054811115610e3f5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161054d565b505050565b6001600160a01b03821660009081526007602052604090205460ff16158015610e8657506001600160a01b03811660009081526007602052604090205460ff16155b15610ed557600b54600160a01b900460ff16610ed55760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161054d565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610f1b57506001600160a01b03821660009081526007602052604090205460ff16155b8015610f355750600b546001600160a01b03838116911614155b8015610f4c57506001600160a01b03821661dead14155b15610e3f57610f59610902565b6001600160a01b038316600090815260056020526040902054610f7c90836112b1565b1115610e3f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161054d565b600b546001600160a01b03828116911614801561100057506001600160a01b03821660009081526007602052604090205460ff16155b15610ed5576001601660008282546110189190611a8a565b90915550505050565b600b546001600160a01b038481169116146110c75761103e610699565b8111158061106457506001600160a01b03831660009081526007602052604090205460ff165b8061108757506001600160a01b03821660009081526007602052604090205460ff165b6110c75760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054d565b6110cf610912565b811115806110f557506001600160a01b03831660009081526007602052604090205460ff165b8061111857506001600160a01b03821660009081526007602052604090205460ff165b610e3f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161054d565b6111638383836112bd565b15610e3f5761117360185461136f565b6000601655505050565b6001600160a01b03821660009081526007602052604081205460ff161580156107205750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806111d085856114fa565b11156112aa5760006111f36111e586866114fa565b6014546108209086906109fb565b3060009081526005602052604090205490915061121090826112b1565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112619085815260200190565b60405180910390a3600f5415611298576112983061dead611293600f54610820601454896109fb90919063ffffffff16565b610b37565b6112a28382610b2b565b915050610720565b5092915050565b60006107208284611a8a565b6019546018543060009081526005602052604081205460175491938510159211159060ff161580156112f1575060155460ff165b80156113065750600b54600160a01b900460ff165b801561130f5750815b801561133457506001600160a01b03861660009081526007602052604090205460ff16155b801561134d5750600b546001600160a01b038681169116145b801561135c5750600260165410155b80156113655750805b9695505050505050565b6017805460ff19166001908117909155600e54600d54600c546000936113a9936002936108209391926113a39283916112b1565b906112b1565b905060006113c682610826600c5486610c8990919063ffffffff16565b905060006113d48483610b2b565b9050476113e0826115fd565b60006113ec4783610b2b565b9050600061140f611408600c5488610b2b90919063ffffffff16565b83906109fb565b90506000611428600c5483610c8990919063ffffffff16565b9050801561143a5761143a8682611757565b600d5460009061144f90610820856002610c89565b9050801561149a5760405173622360351046d3816b3c7ee3ff611b9828fdf3fd9082156108fc029083906000818181858888f19350505050158015611498573d6000803e3d6000fd5b505b4780156114e45760405173622360351046d3816b3c7ee3ff611b9828fdf3fd9082156108fc029083906000818181858888f193505050501580156114e2573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b03821660009081526008602052604081205460ff168061153957506001600160a01b03821660009081526008602052604090205460ff165b156115535760145461154c906000610b2b565b9050610622565b6001600160a01b03831660009081526009602052604090205460ff168061159257506001600160a01b03821660009081526008602052604090205460ff165b156115a65760145461154c90612710610b2b565b60135460ff16151560010361017157600b546001600160a01b03908116908316036115d45750601154610622565b600b546001600160a01b03908116908416036115f35750601054610622565b5060125492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061163257611632611a9d565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190611ab3565b816001815181106116c2576116c2611a9d565b6001600160a01b039283166020918202929092010152600a546116e89130911684610a07565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611721908590600090869030904290600401611ad0565b600060405180830381600087803b15801561173b57600080fd5b505af115801561174f573d6000803e3d6000fd5b505050505050565b600a5461176f9030906001600160a01b031684610a07565b600a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273622360351046d3816b3c7ee3ff611b9828fdf3fd60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156117ef573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118149190611b41565b5050505050565b600080600080600080600060e0888a03121561183657600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561189457858101830151858201604001528201611878565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118ca57600080fd5b50565b600080604083850312156118e057600080fd5b82356118eb816118b5565b946020939093013593505050565b60006020828403121561190b57600080fd5b8135610720816118b5565b60008060006060848603121561192b57600080fd5b8335611936816118b5565b92506020840135611946816118b5565b929592945050506040919091013590565b60008060006060848603121561196c57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561199657600080fd5b82356119a1816118b5565b9150602083013580151581146119b657600080fd5b809150509250929050565b6000602082840312156119d357600080fd5b5035919050565b600080604083850312156119ed57600080fd5b82356119f8816118b5565b915060208301356119b6816118b5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761062257610622611a28565b600082611a7257634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561062257610622611a28565b8082018082111561062257610622611a28565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ac557600080fd5b8151610720816118b5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b205784516001600160a01b031683529383019391830191600101611afb565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611b5657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd31adf1b701dd5595fcbdfcff3ee67084c9c029e6bb434593e14b6e97c4202664736f6c63430008120033