60806040526004805460ff19166001179055600a600581905560146006819055600260078190556008556009828155908255600b8290556000600c5562000046916200027c565b620000579064358d117c0062000374565b600d55620000686009600a6200027c565b620000799064358d117c0062000374565b600e556200008a6009600a6200027c565b6200009b90642e90edd00062000374565b600f55620000ac6009600a6200027c565b620000bd9064174876e80062000374565b6010556014805463ffffff00191690556000601555348015620000df57600080fd5b506000620000ec62000222565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200014062000222565b600480546001600160a01b039290921661010002610100600160a81b0319909216919091179055620001756009600a6200027c565b6200018790650646880c880062000374565b600160006200019562000222565b6001600160a01b03168152602081019190915260400160002055620001b962000222565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001f36009600a6200027c565b6200020590650646880c880062000374565b60405162000214919062000226565b60405180910390a3620003ac565b3390565b90815260200190565b80825b600180861162000243575062000273565b81870482111562000258576200025862000396565b808616156200026657918102915b9490941c93800262000232565b94509492505050565b60006200029060001960ff85168462000297565b9392505050565b600082620002a85750600162000290565b81620002b75750600062000290565b8160018114620002d05760028114620002db576200030f565b600191505062000290565b60ff841115620002ef57620002ef62000396565b6001841b91508482111562000308576200030862000396565b5062000290565b5060208310610133831016604e8410600b841016171562000347575081810a8381111562000341576200034162000396565b62000290565b6200035684848460016200022f565b8086048211156200036b576200036b62000396565b02949350505050565b600081600019048311821515161562000391576200039162000396565b500290565b634e487b7160e01b600052601160045260246000fd5b61205d80620003bc6000396000f3fe6080604052600436106101395760003560e01c80637d1db4a5116100ab578063bba4de001161006f578063bba4de0014610318578063bf474bed14610338578063bfd792841461034d578063c876d0b91461036d578063ca72a4e714610382578063dd62ed3e146103a257610140565b80637d1db4a5146102975780638da5cb5b146102ac5780638f9a55c0146102ce57806395d89b41146102e3578063a9059cbb146102f857610140565b8063313ce567116100fd578063313ce567146101f457806351bc3c851461021657806369b33c6e1461022d57806370a082311461024d578063715018a61461026d578063751039fc1461028257610140565b806306fdde0314610145578063095ea7b3146101705780630faee56f1461019d57806318160ddd146101bf57806323b872dd146101d457610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a6103c2565b604051610167919061199b565b60405180910390f35b34801561017c57600080fd5b5061019061018b3660046117c2565b6103e4565b6040516101679190611990565b3480156101a957600080fd5b506101b2610402565b6040516101679190611d76565b3480156101cb57600080fd5b506101b2610408565b3480156101e057600080fd5b506101906101ef366004611782565b61042b565b34801561020057600080fd5b506102096104b3565b6040516101679190611def565b34801561022257600080fd5b5061022b6104b8565b005b34801561023957600080fd5b5061022b610248366004611712565b61053a565b34801561025957600080fd5b506101b2610268366004611712565b610599565b34801561027957600080fd5b5061022b6105b8565b34801561028e57600080fd5b5061022b610637565b3480156102a357600080fd5b506101b2610708565b3480156102b857600080fd5b506102c161070e565b604051610167919061190e565b3480156102da57600080fd5b506101b261071d565b3480156102ef57600080fd5b5061015a610723565b34801561030457600080fd5b506101906103133660046117c2565b610742565b34801561032457600080fd5b5061022b6103333660046117ed565b610756565b34801561034457600080fd5b506101b2610842565b34801561035957600080fd5b50610190610368366004611712565b610848565b34801561037957600080fd5b5061019061085d565b34801561038e57600080fd5b5061022b61039d366004611712565b610866565b3480156103ae57600080fd5b506101b26103bd36600461174a565b610be5565b6040805180820190915260088152674c6f6e67446f676560c01b602082015290565b60006103f86103f1610c10565b8484610c14565b5060015b92915050565b60105481565b60006104166009600a611e6f565b61042690650646880c8800611f40565b905090565b6000610438848484610cc8565b6104a884610444610c10565b6104a385604051806060016040528060288152602001612000602891396001600160a01b038a16600090815260026020526040812090610482610c10565b6001600160a01b031681526020810191909152604001600020549190611297565b610c14565b5060015b9392505050565b600990565b60045461010090046001600160a01b03166104d1610c10565b6001600160a01b031614156105135760006104eb30610599565b905080156104fc576104fc816112d1565b47801561050c5761050c81611470565b5050610538565b61051e610268610c10565b610538576105383061052e610c10565b633b9aca00610cc8565b565b610542610c10565b6000546001600160a01b039081169116146105785760405162461bcd60e51b815260040161056f90611c01565b60405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b6001600160a01b0381166000908152600160205260409020545b919050565b6105c0610c10565b6000546001600160a01b039081169116146105ed5760405162461bcd60e51b815260040161056f90611c01565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61063f610c10565b6000546001600160a01b0390811691161461066c5760405162461bcd60e51b815260040161056f90611c01565b6106786009600a611e6f565b61068890650646880c8800611f40565b600d556106976009600a611e6f565b6106a790650646880c8800611f40565b600e556004805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106e16009600a611e6f565b6106f190650646880c8800611f40565b6040516106fe9190611d76565b60405180910390a1565b600d5481565b6000546001600160a01b031690565b600e5481565b6040805180820190915260058152644c444f474560d81b602082015290565b60006103f861074f610c10565b8484610cc8565b61075e610c10565b6000546001600160a01b0390811691161461078b5760405162461bcd60e51b815260040161056f90611c01565b6014546301000000900460ff16156107b55760405162461bcd60e51b815260040161056f90611aaa565b60005b815181101561082b576001601360008484815181106107e757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061082381611f76565b9150506107b8565b50506014805463ff00000019166301000000179055565b600f5481565b60136020526000908152604090205460ff1681565b60045460ff1681565b61086e610c10565b6000546001600160a01b0390811691161461089b5760405162461bcd60e51b815260040161056f90611c01565b60145460ff16156108be5760405162461bcd60e51b815260040161056f90611d3f565b601180546001600160a01b0319166001600160a01b038381169190911791829055610902913091166108f26009600a611e6f565b6104a390650646880c8800611f40565b601160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561095057600080fd5b505afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610988919061172e565b6001600160a01b031663c9c6539630601160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e557600080fd5b505afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d919061172e565b6040518363ffffffff1660e01b8152600401610a3a929190611922565b602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c919061172e565b601280546001600160a01b0319166001600160a01b039283161790556011541663f305d7194730610abc81610599565b600080610ac761070e565b426040518863ffffffff1660e01b8152600401610ae996959493929190611955565b6060604051808303818588803b158015610b0257600080fd5b505af1158015610b16573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b3b91906118d3565b505060125460115460405163095ea7b360e01b81526001600160a01b03928316935063095ea7b392610b759216906000199060040161193c565b602060405180830381600087803b158015610b8f57600080fd5b505af1158015610ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc791906118b3565b50506014805460ff1962ff0000199091166201000017166001179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3390565b6001600160a01b038316610c3a5760405162461bcd60e51b815260040161056f90611cfb565b6001600160a01b038216610c605760405162461bcd60e51b815260040161056f90611a68565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cbb908590611d76565b60405180910390a3505050565b6001600160a01b038316610cee5760405162461bcd60e51b815260040161056f90611c7f565b6001600160a01b038216610d145760405162461bcd60e51b815260040161056f906119ee565b60008111610d345760405162461bcd60e51b815260040161056f90611c36565b600080600083610d4387610599565b1415610da0576001600160a01b038616301480610d6857506001600160a01b03851630145b610da057633b9aca008411610d8f5760405162461bcd60e51b815260040161056f90611c36565b610d9d633b9aca0085611f5f565b93505b610da861070e565b6001600160a01b0316866001600160a01b031614158015610de25750610dcc61070e565b6001600160a01b0316856001600160a01b031614155b8015610df757506001600160a01b0386163014155b1561108557610e07600c546114b2565b9150610e1e6064610e188685611556565b9061159b565b6001600160a01b03871660009081526013602052604090205490935060ff16158015610e6357506001600160a01b03851660009081526013602052604090205460ff16155b610e7f5760405162461bcd60e51b815260040161056f90611b79565b60045460ff1615610efc576011546001600160a01b03868116911614801590610eb657506012546001600160a01b03868116911614155b15610efc57326000908152600360205260409020544311610ee95760405162461bcd60e51b815260040161056f90611b0a565b3260009081526003602052604090204390555b6012546001600160a01b038781169116148015610f2757506011546001600160a01b03868116911614155b15610f9957600d54841115610f4e5760405162461bcd60e51b815260040161056f90611a31565b600e5484610f5b87610599565b610f659190611dfd565b1115610f835760405162461bcd60e51b815260040161056f90611cc4565b600c8054906000610f9383611f76565b91905055505b6012546001600160a01b038681169116148015610fbf57506001600160a01b0386163014155b15610fe357610fcf600c546115dd565b9050610fe06064610e188684611556565b92505b6000610fee30610599565b601454909150610100900460ff1615801561101657506012546001600160a01b038781169116145b801561102a575060145462010000900460ff165b80156110375750600f5481115b80156110465750600b54600c54115b15611083576110686110638661105e84601054611653565b611653565b6112d1565b4766b1a2bc2ec500008111156110815761108147611470565b505b505b82156110fd57306000908152600160205260409020546110a59084611668565b30600081815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110f4908790611d76565b60405180910390a35b6001600160a01b0386166000908152600160205260409020546111209085611697565b6001600160a01b0387166000908152600160205260409020556111656111468585611697565b6001600160a01b03871660009081526001602052604090205490611668565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111af8787611697565b6040516111bc9190611d76565b60405180910390a36001600160a01b0386163014806111e357506001600160a01b03851630145b61128f573060009081526001602052604090205464174876e800101561128f57601554600090611214600143611f5f565b40604051602001611226929190611900565b60408051601f198184030181529190528051602090910120905080600061125b640218711a016001600160a01b038416611f91565b61126990633b9aca00611dfd565b60158054919250600061127b83611f76565b919050555061128b308383610cc8565b5050505b505050505050565b600081848411156112bb5760405162461bcd60e51b815260040161056f919061199b565b5060006112c88486611f5f565b95945050505050565b6014805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061132357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561137757600080fd5b505afa15801561138b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113af919061172e565b816001815181106113d057634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526011546113f69130911684610c14565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac9479061142f908590600090869030904290600401611d7f565b600060405180830381600087803b15801561144957600080fd5b505af115801561145d573d6000803e3d6000fd5b50506014805461ff001916905550505050565b6004546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156114ae573d6000803e3d6000fd5b5050565b600060095482111561154e576005546002600954846114d19190611f5f565b6114db9190611e15565b106114e957506007546105b3565b6007546002600954846114fc9190611f5f565b6115069190611e15565b6005546115139190611f5f565b1161152057600754611547565b6002600954836115309190611f5f565b61153a9190611e15565b6005546115479190611f5f565b90506105b3565b505060055490565b600082611565575060006103fc565b60006115718385611f40565b90508261157e8583611e15565b146104ac5760405162461bcd60e51b815260040161056f90611bc0565b60006104ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116d9565b6000600a5482111561164b57600654600a546115f99084611f5f565b1061160757506008546105b3565b600854600a546116179084611f5f565b6006546116249190611f5f565b1161163157600854611547565b600a5461163e9083611f5f565b6006546115479190611f5f565b505060065490565b600081831161166257826104ac565b50919050565b6000806116758385611dfd565b9050838110156104ac5760405162461bcd60e51b815260040161056f90611ad3565b60006104ac83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611297565b600081836116fa5760405162461bcd60e51b815260040161056f919061199b565b5060006112c88486611e15565b80356105b381611fe7565b600060208284031215611723578081fd5b81356104ac81611fe7565b60006020828403121561173f578081fd5b81516104ac81611fe7565b6000806040838503121561175c578081fd5b823561176781611fe7565b9150602083013561177781611fe7565b809150509250929050565b600080600060608486031215611796578081fd5b83356117a181611fe7565b925060208401356117b181611fe7565b929592945050506040919091013590565b600080604083850312156117d4578182fd5b82356117df81611fe7565b946020939093013593505050565b600060208083850312156117ff578182fd5b823567ffffffffffffffff80821115611816578384fd5b818501915085601f830112611829578384fd5b81358181111561183b5761183b611fd1565b838102604051601f19603f8301168101818110858211171561185f5761185f611fd1565b604052828152858101935084860182860187018a101561187d578788fd5b8795505b838610156118a65761189281611707565b855260019590950194938601938601611881565b5098975050505050505050565b6000602082840312156118c4578081fd5b815180151581146104ac578182fd5b6000806000606084860312156118e7578283fd5b8351925060208401519150604084015190509250925092565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b6000602080835283518082850152825b818110156119c7578581018301518582016040015282016119ab565b818111156119d85783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526019908201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600f908201526e6f6e6c7920626c61636b206f6e636560881b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526049908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6060820152681030b63637bbb2b21760b91b608082015260a00190565b60208082526027908201527f5f7472616e736665723a20596f7572206163636f756e7420697320626c61636b6040820152666c69737465642160c81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252601a908201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526017908201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604082015260600190565b90815260200190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611dce5784516001600160a01b031683529383019391830191600101611da9565b50506001600160a01b03969096166060850152505050608001529392505050565b60ff91909116815260200190565b60008219821115611e1057611e10611fa5565b500190565b600082611e2457611e24611fbb565b500490565b80825b6001808611611e3b5750611e66565b818704821115611e4d57611e4d611fa5565b80861615611e5a57918102915b9490941c938002611e2c565b94509492505050565b60006104ac60001960ff851684600082611e8b575060016104ac565b81611e98575060006104ac565b8160018114611eae5760028114611eb857611ee5565b60019150506104ac565b60ff841115611ec957611ec9611fa5565b6001841b915084821115611edf57611edf611fa5565b506104ac565b5060208310610133831016604e8410600b8410161715611f18575081810a83811115611f1357611f13611fa5565b6104ac565b611f258484846001611e29565b808604821115611f3757611f37611fa5565b02949350505050565b6000816000190483118215151615611f5a57611f5a611fa5565b500290565b600082821015611f7157611f71611fa5565b500390565b6000600019821415611f8a57611f8a611fa5565b5060010190565b600082611fa057611fa0611fbb565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611ffc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122018ce35a8739e13dfd69f14bfb72387ed3b35f0ac4a9ce33e2272e6b259ac34fd64736f6c63430008010033