60806040526000600c556000600d553480156200001b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260088152674d696e69446f676560c01b60208201526004906200008b90826200042b565b506040805180820190915260088152674d696e69446f676560c01b6020820152600590620000ba90826200042b565b506006805460ff1916600990811790915580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915530600090815260026020908152604080832084845282528083206000199055805163c45a015560e01b8152905166038d7ea4c68000949392849263c45a015592600480830193928290030181865afa15801562000153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001799190620004f7565b90506000816001600160a01b031663c9c6539630856001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f29190620004f7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000240573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002669190620004f7565b600e80546001600160a01b0319166001600160a01b0383169081179091556000908152600a60208190526040909120805460ff19166001179055600654919250620002b59160ff16906200063e565b620002c190856200064f565b600881905533600081815260016020908152604080832085905551938452919283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600380546001600160a01b0319166001600160a01b03928316908117825530600090815260076020526040808220805460ff199081166001908117909255988616835281832080548a168217905592825280822080548916841790559254909316835291208054909416179092555062000669915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003b157607f821691505b602082108103620003d257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200042657600081815260208120601f850160051c81016020861015620004015750805b601f850160051c820191505b8181101562000422578281556001016200040d565b5050505b505050565b81516001600160401b0381111562000447576200044762000386565b6200045f816200045884546200039c565b84620003d8565b602080601f8311600181146200049757600084156200047e5750858301515b600019600386901b1c1916600185901b17855562000422565b600085815260208120601f198616915b82811015620004c857888601518255948401946001909101908401620004a7565b5085821015620004e75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200050a57600080fd5b81516001600160a01b03811681146200052257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200058057816000190482111562000564576200056462000529565b808516156200057257918102915b93841c939080029062000544565b509250929050565b600082620005995750600162000638565b81620005a85750600062000638565b8160018114620005c15760028114620005cc57620005ec565b600191505062000638565b60ff841115620005e057620005e062000529565b50506001821b62000638565b5060208310610133831016604e8410600b841016171562000611575081810a62000638565b6200061d83836200053f565b806000190482111562000634576200063462000529565b0290505b92915050565b60006200052260ff84168362000588565b808202811582820484141762000638576200063862000529565b61110080620006796000396000f3fe6080604052600436106101445760003560e01c80636f39cfcd116100b657806395d89b411161006f57806395d89b41146103c5578063a9059cbb146103da578063ce0192f9146103fa578063dd62ed3e14610410578063e82bef2914610456578063f2fde38b1461047657600080fd5b80636f39cfcd146102fc57806370a082311461031c578063715018a614610352578063863587cd146103675780638b00efae146103875780638da5cb5b146103a757600080fd5b8063313ce56711610108578063313ce5671461020c57806336b2e0271461022e5780633bfe62ca1461025e5780633ecad271146102745780634bf28fd0146102a457806365b61b77146102dc57600080fd5b806306fdde0314610150578063095ea7b31461017b5780630f48f2c9146101ab57806318160ddd146101cd57806323b872dd146101ec57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610496565b6040516101729190610dd3565b60405180910390f35b34801561018757600080fd5b5061019b610196366004610e36565b610528565b6040519015158152602001610172565b3480156101b757600080fd5b506101cb6101c6366004610e62565b61053f565b005b3480156101d957600080fd5b506008545b604051908152602001610172565b3480156101f857600080fd5b5061019b610207366004610e7b565b6105b6565b34801561021857600080fd5b5060065460405160ff9091168152602001610172565b34801561023a57600080fd5b5061019b610249366004610ebc565b60076020526000908152604090205460ff1681565b34801561026a57600080fd5b506101de600d5481565b34801561028057600080fd5b5061019b61028f366004610ebc565b600a6020526000908152604090205460ff1681565b3480156102b057600080fd5b50600e546102c4906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b3480156102e857600080fd5b506009546102c4906001600160a01b031681565b34801561030857600080fd5b506101cb610317366004610ebc565b61064d565b34801561032857600080fd5b506101de610337366004610ebc565b6001600160a01b031660009081526001602052604090205490565b34801561035e57600080fd5b506101cb610699565b34801561037357600080fd5b506101cb610382366004610ee0565b61070d565b34801561039357600080fd5b506101cb6103a2366004610e62565b610762565b3480156103b357600080fd5b506000546001600160a01b03166102c4565b3480156103d157600080fd5b506101656107cd565b3480156103e657600080fd5b5061019b6103f5366004610e36565b6107dc565b34801561040657600080fd5b506101de600c5481565b34801561041c57600080fd5b506101de61042b366004610f1e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561046257600080fd5b506003546102c4906001600160a01b031681565b34801561048257600080fd5b506101cb610491366004610ebc565b6107e9565b6060600480546104a590610f4c565b80601f01602080910402602001604051908101604052809291908181526020018280546104d190610f4c565b801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b5050505050905090565b60006105353384846108af565b5060015b92915050565b6000546001600160a01b031633146105725760405162461bcd60e51b815260040161056990610f86565b60405180910390fd5b600c81905560198111156105b35760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610569565b50565b60006105c3848484610910565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914610643576001600160a01b038416600090815260026020908152604080832033845290915290205461061e908390610fc7565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146106775760405162461bcd60e51b815260040161056990610f86565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106c35760405162461bcd60e51b815260040161056990610f86565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107375760405162461bcd60e51b815260040161056990610f86565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461078c5760405162461bcd60e51b815260040161056990610f86565b600d81905560198111156105b35760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610569565b6060600580546104a590610f4c565b6000610535338484610910565b6000546001600160a01b031633146108135760405162461bcd60e51b815260040161056990610f86565b6001600160a01b0381166108545760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606401610569565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166000908152600160205260409020548181101561096c5760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606401610569565b6001600160a01b0383166000908152600a6020526040812054819060ff1680156109995750600b5460ff16155b80156109be57506001600160a01b03861660009081526007602052604090205460ff16155b80156109e357506001600160a01b03851660009081526007602052604090205460ff16155b15610a1d57306000908152600160205260409020548015610a1b5784818111610a0c5780610a0e565b815b9050610a1981610ab2565b505b505b6001600160a01b03861660009081526007602052604090205460ff16158015610a5f57506001600160a01b03851660009081526007602052604090205460ff16155b8015610a6e5750600b5460ff16155b15610a7857600191505b6001600160a01b0385166000908152600a602052604090205460ff1615610a9d575060015b610aaa8686868585610c42565b505050505050565b600b805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610af457610af4610fda565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190610ff0565b81600181518110610b8457610b84610fda565b6001600160a01b03928316602091820292909201015260095460035460405163791ac94760e01b81529183169263791ac94792610bd0928792600092889290911690429060040161100d565b600060405180830381600087803b158015610bea57600080fd5b505af1925050508015610bfb575060015b610c3457604051600081527fbdf1a66ac2980d0df84c6c5344b4d62f3f4578219817cf4bcb8d8a983bbe6f169060200160405180910390a15b5050600b805460ff19169055565b6001600160a01b038516600090815260016020526040902054610c66908490610fc7565b6001600160a01b0386166000908152600160205260408120919091558215610d435760008215610c995750600d54610c9e565b50600c545b60006064610cac838861107e565b610cb69190611095565b90508015610d4057610cc881846110b7565b30600090815260016020526040902054909350610ce69082906110b7565b30600081815260016020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d379085815260200190565b60405180910390a35b50505b610d4d8185610fc7565b6001600160a01b038616600090815260016020526040902054610d7091906110b7565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610dba8488610fc7565b60405190815260200160405180910390a3505050505050565b600060208083528351808285015260005b81811015610e0057858101830151858201604001528201610de4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146105b357600080fd5b60008060408385031215610e4957600080fd5b8235610e5481610e21565b946020939093013593505050565b600060208284031215610e7457600080fd5b5035919050565b600080600060608486031215610e9057600080fd5b8335610e9b81610e21565b92506020840135610eab81610e21565b929592945050506040919091013590565b600060208284031215610ece57600080fd5b8135610ed981610e21565b9392505050565b60008060408385031215610ef357600080fd5b8235610efe81610e21565b915060208301358015158114610f1357600080fd5b809150509250929050565b60008060408385031215610f3157600080fd5b8235610f3c81610e21565b91506020830135610f1381610e21565b600181811c90821680610f6057607f821691505b602082108103610f8057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601190820152703cb7ba9030b932903737ba1037bbb732b960791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561053957610539610fb1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561100257600080fd5b8151610ed981610e21565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561105d5784516001600160a01b031683529383019391830191600101611038565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761053957610539610fb1565b6000826110b257634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561053957610539610fb156fea2646970667358221220792ee9d842c7c10ef4d5c721bdfb275cf8d853b8a4ebf1b6afe4c102c83159a064736f6c63430008110033