60806040526014600655601460075560146008555f60095560326009600a620000299190620004f4565b62000039906305f5e1006200050b565b62000045919062000525565b600a556103e86009600a6200005b9190620004f4565b6200006b906305f5e1006200050b565b62000077919062000525565b600b5561012c6200008b6009600a620004f4565b6200009b906305f5e1006200050b565b620000a7919062000525565b600c55600e805461ffff60a01b19169055348015620000c4575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b03199081163317909155600d8054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790555f819052600460208181527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d7805460ff191660011790556040805163c45a015560e01b8152905163c45a01559382810193928290030181865afa158015620001a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c9919062000545565b6001600160a01b031663c9c6539630600d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024f919062000545565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200029a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c0919062000545565b600e80546001600160a01b0319166001600160a01b0392909216919091179055620002ee6009600a620004f4565b620002fe906305f5e1006200050b565b335f908152600160208190526040822092909255600490620003275f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526004909352818320805485166001908117909155600554909116835291208054909216179055620003853390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003be6009600a620004f4565b620003ce906305f5e1006200050b565b60405190815260200160405180910390a36200056d565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200043957815f19048211156200041d576200041d620003e5565b808516156200042b57918102915b93841c9390800290620003fe565b509250929050565b5f826200045157506001620004ee565b816200045f57505f620004ee565b81600181146200047857600281146200048357620004a3565b6001915050620004ee565b60ff841115620004975762000497620003e5565b50506001821b620004ee565b5060208310610133831016604e8410600b8410161715620004c8575081810a620004ee565b620004d48383620003f9565b805f1904821115620004ea57620004ea620003e5565b0290505b92915050565b5f6200050460ff84168362000441565b9392505050565b8082028115828204841417620004ee57620004ee620003e5565b5f826200054057634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000556575f80fd5b81516001600160a01b038116811462000504575f80fd5b6116e7806200057b5f395ff3fe608060405260043610610164575f3560e01c8063715018a6116100cd578063bf474bed11610087578063ca9ec19911610062578063ca9ec19914610411578063ce3b9aa314610426578063dd62ed3e14610445578063f429389014610489575f80fd5b8063bf474bed146103be578063c0246668146103d3578063c647b20e146103f2575f80fd5b8063715018a61461031c578063751039fc146103305780638da5cb5b146103445780638f9a55c01461036057806395d89b4114610375578063a9059cbb1461039f575f80fd5b8063293230b81161011e578063293230b81461026f578063313ce5671461028557806342a11095146102a057806349f2c4ae146102b557806351bc3c85146102d457806370a08231146102e8575f80fd5b806306fdde031461016f578063095ea7b3146101b35780630faee56f146101e25780631694505e1461020557806318160ddd1461023c57806323b872dd14610250575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600a81526921bcb132b9102132b2b960b11b60208201525b6040516101aa91906111f0565b60405180910390f35b3480156101be575f80fd5b506101d26101cd366004611262565b61049d565b60405190151581526020016101aa565b3480156101ed575f80fd5b506101f7600c5481565b6040519081526020016101aa565b348015610210575f80fd5b50600d54610224906001600160a01b031681565b6040516001600160a01b0390911681526020016101aa565b348015610247575f80fd5b506101f76104b3565b34801561025b575f80fd5b506101d261026a36600461128c565b6104d3565b34801561027a575f80fd5b5061028361053a565b005b348015610290575f80fd5b50604051600981526020016101aa565b3480156102ab575f80fd5b506101f760065481565b3480156102c0575f80fd5b506102836102cf3660046112de565b6105dd565b3480156102df575f80fd5b5061028361066e565b3480156102f3575f80fd5b506101f761030236600461139e565b6001600160a01b03165f9081526001602052604090205490565b348015610327575f80fd5b5061028361069c565b34801561033b575f80fd5b5061028361070d565b34801561034f575f80fd5b505f546001600160a01b0316610224565b34801561036b575f80fd5b506101f7600a5481565b348015610380575f80fd5b5060408051808201909152600281526121a160f11b602082015261019d565b3480156103aa575f80fd5b506101d26103b9366004611262565b610755565b3480156103c9575f80fd5b506101f7600b5481565b3480156103de575f80fd5b506102836103ed3660046113b9565b610761565b3480156103fd575f80fd5b5061028361040c3660046113f4565b6107b4565b34801561041c575f80fd5b506101f760075481565b348015610431575f80fd5b506102836104403660046112de565b610801565b348015610450575f80fd5b506101f761045f366004611414565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610494575f80fd5b5061028361088f565b5f6104a9338484610928565b5060015b92915050565b5f6104c06009600a611534565b6104ce906305f5e100611542565b905090565b5f6104df848484610988565b610530843361052b8560405180606001604052806028815260200161168a602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610e6c565b610928565b5060019392505050565b5f546001600160a01b0316331461056c5760405162461bcd60e51b815260040161056390611559565b60405180910390fd5b600e54600160b01b900460ff16156105c65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610563565b600e805461ffff60a81b191661010160a81b179055565b5f546001600160a01b031633146106065760405162461bcd60e51b815260040161056390611559565b5f5b815181101561066a575f60025f8484815181106106275761062761158e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610662816115a2565b915050610608565b5050565b305f90815260016020526040902054801561068c5761068c81610ea4565b47801561066a5761066a81611014565b5f546001600160a01b031633146106c55760405162461bcd60e51b815260040161056390611559565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107365760405162461bcd60e51b815260040161056390611559565b6107426009600a611534565b610750906305f5e100611542565b600a55565b5f6104a9338484610988565b5f546001600160a01b0316331461078a5760405162461bcd60e51b815260040161056390611559565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107dd5760405162461bcd60e51b815260040161056390611559565b60068290556007819055601e82118015906107f95750601e8111155b61066a575f80fd5b5f546001600160a01b0316331461082a5760405162461bcd60e51b815260040161056390611559565b5f5b815181101561066a57600160025f84848151811061084c5761084c61158e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610887816115a2565b91505061082c565b5f47116108f15760405162461bcd60e51b815260206004820152602a60248201527f436f6e74726163742062616c616e6365206d7573742062652067726561746572604482015269207468616e207a65726f60b01b6064820152608401610563565b60055460405147916001600160a01b03169082156108fc029083905f818181858888f1935050505015801561066a573d5f803e3d5ffd5b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f81116109e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610563565b6001600160a01b0383165f9081526002602052604090205460ff1680610a2657506001600160a01b0382165f9081526002602052604090205460ff165b15610a655760405162461bcd60e51b815260206004820152600f60248201526e14db9a5c195c9cc8189b1bd8dad959608a1b6044820152606401610563565b6001600160a01b0383165f9081526004602052604081205460ff16158015610aa557506001600160a01b0383165f9081526004602052604090205460ff16155b15610d2f57600e54600160b01b900460ff16610af35760405162461bcd60e51b815260206004820152600d60248201526c4e6f74206f70656e207965742160981b6044820152606401610563565b610b136064610b0d6006548561104b90919063ffffffff16565b906110d0565b600e549091506001600160a01b0390811690851603610bbb57600a5482610b4e856001600160a01b03165f9081526001602052604090205490565b610b5891906115ba565b1115610ba65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610563565b60098054905f610bb5836115a2565b91905055505b600e546001600160a01b03848116911614610c4a57600a5482610bf2856001600160a01b03165f9081526001602052604090205490565b610bfc91906115ba565b1115610c4a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610563565b600e546001600160a01b038481169116148015610c7057506001600160a01b0384163014155b15610c9257610c8f6064610b0d6007548561104b90919063ffffffff16565b90505b305f90815260016020526040902054600e54600160a01b900460ff16158015610cc85750600e546001600160a01b038581169116145b8015610cdd5750600e54600160a81b900460ff165b8015610cea5750600b5481115b8015610cf95750600854600954115b15610d2d57610d1b610d1684610d1184600c54611111565b611111565b610ea4565b478015610d2b57610d2b47611014565b505b505b8015610da757305f90815260016020526040902054610d4e9082611125565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d9e9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610dc99083611183565b6001600160a01b0385165f90815260016020526040902055610e0c610dee8383611183565b6001600160a01b0385165f9081526001602052604090205490611125565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e558585611183565b60405190815260200160405180910390a350505050565b5f8184841115610e8f5760405162461bcd60e51b815260040161056391906111f0565b505f610e9b84866115cd565b95945050505050565b600e805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610eea57610eea61158e565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6591906115e0565b81600181518110610f7857610f7861158e565b6001600160a01b039283166020918202929092010152600d54610f9e9130911684610928565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd69085905f908690309042906004016115fb565b5f604051808303815f87803b158015610fed575f80fd5b505af1158015610fff573d5f803e3d5ffd5b5050600e805460ff60a01b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561066a573d5f803e3d5ffd5b5f825f0361105a57505f6104ad565b5f6110658385611542565b905082611072858361166a565b146110c95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610563565b9392505050565b5f6110c983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111c4565b5f81831161111f57826110c9565b50919050565b5f8061113183856115ba565b9050838110156110c95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610563565b5f6110c983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6c565b5f81836111e45760405162461bcd60e51b815260040161056391906111f0565b505f610e9b848661166a565b5f6020808352835180828501525f5b8181101561121b578581018301518582016040015282016111ff565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461124f575f80fd5b50565b803561125d8161123b565b919050565b5f8060408385031215611273575f80fd5b823561127e8161123b565b946020939093013593505050565b5f805f6060848603121561129e575f80fd5b83356112a98161123b565b925060208401356112b98161123b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156112ef575f80fd5b823567ffffffffffffffff80821115611306575f80fd5b818501915085601f830112611319575f80fd5b81358181111561132b5761132b6112ca565b8060051b604051601f19603f83011681018181108582111715611350576113506112ca565b60405291825284820192508381018501918883111561136d575f80fd5b938501935b828510156113925761138385611252565b84529385019392850192611372565b98975050505050505050565b5f602082840312156113ae575f80fd5b81356110c98161123b565b5f80604083850312156113ca575f80fd5b82356113d58161123b565b9150602083013580151581146113e9575f80fd5b809150509250929050565b5f8060408385031215611405575f80fd5b50508035926020909101359150565b5f8060408385031215611425575f80fd5b82356114308161123b565b915060208301356113e98161123b565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561148e57815f190482111561147457611474611440565b8085161561148157918102915b93841c9390800290611459565b509250929050565b5f826114a4575060016104ad565b816114b057505f6104ad565b81600181146114c657600281146114d0576114ec565b60019150506104ad565b60ff8411156114e1576114e1611440565b50506001821b6104ad565b5060208310610133831016604e8410600b841016171561150f575081810a6104ad565b6115198383611454565b805f190482111561152c5761152c611440565b029392505050565b5f6110c960ff841683611496565b80820281158282048414176104ad576104ad611440565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f600182016115b3576115b3611440565b5060010190565b808201808211156104ad576104ad611440565b818103818111156104ad576104ad611440565b5f602082840312156115f0575f80fd5b81516110c98161123b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156116495784516001600160a01b031683529383019391830191600101611624565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261168457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122014217d65cfaa48ec7a40728fd5c25726655a4e3eb7c2aa799f1a826d655788b364736f6c63430008140033