6080604052620000126009600a62000381565b620000259066017e9d8602b40062000399565b60018181556006805461ffff60a01b1916600160a81b179055600955620186a090620000549061018e62000399565b620000609190620003b3565b600a55620186a0600154600a62000078919062000399565b620000849190620003b3565b600b556000600c8190556064600d819055600e55600f5560c8601081905560118190556107d06012556127106013819055601480546001600160a01b031990811673cdbb768e50c56b8a5e668b7463ea8e00c5753c9490811790925560158054821673ab4f053f18e4005a19a93768c8e51d0849d7837017905560168054909116909117905560015490916200011b919062000399565b620001279190620003b3565b60175561271060015460646200013e919062000399565b6200014a9190620003b3565b60185561271060015460c862000161919062000399565b6200016d9190620003b3565b6019553480156200017d57600080fd5b5060008054336001600160a01b03199182168117835560058054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905530808452600460209081526040808620805460ff1990811660019081179092556016546001600160a01b039081168952838920805483168417905560155481168952838920805483168417905560145416885282882080548216831790559487528187208054909516811790945592548286526002825283862081905592519283529293909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003d6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002c3578160001904821115620002a757620002a76200026c565b80851615620002b557918102915b93841c939080029062000287565b509250929050565b600082620002dc575060016200037b565b81620002eb575060006200037b565b81600181146200030457600281146200030f576200032f565b60019150506200037b565b60ff8411156200032357620003236200026c565b50506001821b6200037b565b5060208310610133831016604e8410600b841016171562000354575081810a6200037b565b62000360838362000282565b80600019048211156200037757620003776200026c565b0290505b92915050565b60006200039260ff841683620002cb565b9392505050565b80820281158282048414176200037b576200037b6200026c565b600082620003d157634e487b7160e01b600052601260045260246000fd5b500490565b611f5680620003e66000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d15780639d8740cb1161008a578063a9059cbb11610064578063a9059cbb146104c3578063cb7f97d7146104e3578063dd62ed3e14610503578063f2fde38b1461054957600080fd5b80639d8740cb146104635780639e252f0014610483578063a8aa1b31146104a357600080fd5b80637d1db4a51461038c578063893d20e8146103a25780638cd4426d146103d45780639213c358146103f457806395d89b41146104145780639cc353511461044357600080fd5b8063313ce5671161013e57806351bc3c851161011857806351bc3c851461031557806370a082311461032a57806378109e54146103605780637cca52fe1461037657600080fd5b8063313ce567146102a95780633f4218e0146102c557806348ff2b8b146102f557600080fd5b806306fdde0314610191578063095ea7b3146101e9578063154e2f881461021957806318160ddd1461023b57806323b872dd1461025a5780632f54bf6e1461027a57600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152601a81527f5275626575734861677269644275736853696c76657230496e7500000000000060208201525b6040516101e09190611ae2565b60405180910390f35b3480156101f557600080fd5b50610209610204366004611b45565b610569565b60405190151581526020016101e0565b34801561022557600080fd5b50610239610234366004611b71565b610580565b005b34801561024757600080fd5b506001545b6040519081526020016101e0565b34801561026657600080fd5b50610209610275366004611bac565b6107be565b34801561028657600080fd5b50610209610295366004611bed565b6000546001600160a01b0391821691161490565b3480156102b557600080fd5b50604051600981526020016101e0565b3480156102d157600080fd5b506102096102e0366004611bed565b60046020526000908152604090205460ff1681565b34801561030157600080fd5b50610239610310366004611c18565b610828565b34801561032157600080fd5b5061023961087d565b34801561033657600080fd5b5061024c610345366004611bed565b6001600160a01b031660009081526002602052604090205490565b34801561036c57600080fd5b5061024c60195481565b34801561038257600080fd5b5061024c60185481565b34801561039857600080fd5b5061024c60175481565b3480156103ae57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101e0565b3480156103e057600080fd5b506102396103ef366004611b45565b6108d2565b34801561040057600080fd5b5061023961040f366004611c51565b6109f9565b34801561042057600080fd5b5060408051808201909152600681526504249545852560d41b60208201526101d3565b34801561044f57600080fd5b5061023961045e366004611c9c565b610a9f565b34801561046f57600080fd5b5061023961047e366004611c9c565b610bd5565b34801561048f57600080fd5b5061023961049e366004611cc8565b610c3b565b3480156104af57600080fd5b506006546103bc906001600160a01b031681565b3480156104cf57600080fd5b506102096104de366004611b45565b610cb6565b3480156104ef57600080fd5b506102396104fe366004611ce1565b610cc3565b34801561050f57600080fd5b5061024c61051e366004611d2d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561055557600080fd5b50610239610564366004611bed565b610dba565b6000610576338484610e38565b5060015b92915050565b6000546001600160a01b031633146105b35760405162461bcd60e51b81526004016105aa90611d5b565b60405180910390fd5b6006805460ff60a01b1916600160a01b17905560108590556011849055601283905530600090815260026020526040812054905060006105fe60646105f88486610f5c565b90610f68565b905061060b303383610f74565b600560009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106829190611d7b565b6001600160a01b031663c9c65396600560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190611d7b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190611d7b565b600680546001600160a01b0319166001600160a01b039290921691909117905560006107a860646105f88588610f5c565b90506107b481476114c1565b5050505050505050565b60006107cb848484610f74565b61081d843361081885604051806060016040528060288152602001611ef9602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611575565b610e38565b5060015b9392505050565b6000546001600160a01b031633146108525760405162461bcd60e51b81526004016105aa90611d5b565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108a75760405162461bcd60e51b81526004016105aa90611d5b565b30600090815260026020526040902054600a548111156108c65750600a545b6108cf816115a1565b50565b6000546001600160a01b031633146108fc5760405162461bcd60e51b81526004016105aa90611d5b565b6040516370a0823160e01b815230600482015260009061097a906064906105f89085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190611d98565b90610f5c565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af11580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f39190611db1565b50505050565b6000546001600160a01b03163314610a235760405162461bcd60e51b81526004016105aa90611d5b565b601580546001600160a01b039485166001600160a01b031991821681179092556016805494861694821685179055601480549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b03163314610ac95760405162461bcd60e51b81526004016105aa90611d5b565b6000610ae66127106105f886600154610f5c90919063ffffffff16565b90506000610b056127106105f886600154610f5c90919063ffffffff16565b90506000610b246127106105f886600154610f5c90919063ffffffff16565b60178490556018839055601981905590506000610b4b6103e86105f8600561097460015490565b9050808410158015610b5d5750808310155b8015610b695750808210155b610bcc5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016105aa565b50505050505050565b6000546001600160a01b03163314610bff5760405162461bcd60e51b81526004016105aa90611d5b565b6009839055600154610c1a90620186a0906105f89085610f5c565b600a55600154610c3390620186a0906105f89084610f5c565b600b55505050565b6000546001600160a01b03163314610c655760405162461bcd60e51b81526004016105aa90611d5b565b6000610c7660646105f84785610f5c565b6014546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610cb1573d6000803e3d6000fd5b505050565b6000610576338484610f74565b6000546001600160a01b03163314610ced5760405162461bcd60e51b81526004016105aa90611d5b565b600c879055600d869055600f859055600e849055601083905560118290556012819055601354610d1e906001610f68565b60105411158015610d3e5750601354610d38906001610f68565b60115411155b8015610d595750601354610d53906001610f68565b60125411155b610bcc5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016105aa565b6000546001600160a01b03163314610de45760405162461bcd60e51b81526004016105aa90611d5b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610e9a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105aa565b6001600160a01b038216610efb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105aa565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006108218284611de4565b60006108218284611dfb565b6001600160a01b038316610fd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105aa565b6001600160a01b03821661103a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105aa565b6001600160a01b0383166000908152600260205260409020548111156110bc5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016105aa565b6001600160a01b03831660009081526004602052604090205460ff161580156110fe57506001600160a01b03821660009081526004602052604090205460ff16155b1561114d57600654600160a01b900460ff1661114d5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016105aa565b6001600160a01b03831660009081526004602052604090205460ff1615801561118f57506001600160a01b03821660009081526004602052604090205460ff16155b80156111a957506006546001600160a01b03838116911614155b80156111c057506001600160a01b03821661dead14155b15611239576019546001600160a01b0383166000908152600260205260409020546111eb908361171e565b11156112395760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016105aa565b6006546001600160a01b038481169116146112da576018548111158061127757506001600160a01b03831660009081526004602052604090205460ff165b8061129a57506001600160a01b03821660009081526004602052604090205460ff165b6112da5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105aa565b6017548111158061130357506001600160a01b03831660009081526004602052604090205460ff165b8061132657506001600160a01b03821660009081526004602052604090205460ff165b6113665760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016105aa565b6006546001600160a01b03838116911614801561139c57506001600160a01b03831660009081526004602052604090205460ff16155b156113ba576001600760008282546113b49190611e1d565b90915550505b6113c583838361172a565b156113db576113d5600a546115a1565b60006007555b6001600160a01b0383166000908152600260205260409020546113fe90826117e4565b6001600160a01b03841660009081526002602052604081209190915561142484846117f0565b61142e5781611439565b611439848484611836565b6001600160a01b03841660009081526002602052604090205490915061145f908261171e565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114b39085815260200190565b60405180910390a350505050565b6005546114d99030906001600160a01b031684610e38565b60055460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611549573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061156e9190611e30565b5050505050565b600081848411156115995760405162461bcd60e51b81526004016105aa9190611ae2565b505050900390565b6008805460ff19166001908117909155600e54600d54600c546000936115db936002936109749391926115d592839161171e565b9061171e565b905060006115f8826105f8600c5486610f5c90919063ffffffff16565b9050600061160684836117e4565b9050476116128261193d565b600061161e47836117e4565b9050600061164161163a600c54886117e490919063ffffffff16565b8390610f68565b9050600061165a600c5483610f5c90919063ffffffff16565b9050801561166c5761166c86826114c1565b600d5460009061168190610974856002610f5c565b905080156116c5576015546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156116c3573d6000803e3d6000fd5b505b478015611708576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611706573d6000803e3d6000fd5b505b50506008805460ff191690555050505050505050565b60006108218284611e1d565b600b54600a543060009081526002602052604081205460085491938510159211159060ff161580156117655750600654600160a81b900460ff165b801561177a5750600654600160a01b900460ff165b80156117835750815b80156117a857506001600160a01b03861660009081526004602052604090205460ff16155b80156117c157506006546001600160a01b038681169116145b80156117d1575060095460075410155b80156117da5750805b9695505050505050565b60006108218284611e5e565b6001600160a01b03821660009081526004602052604081205460ff161580156108215750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806118438585611a97565b11156119365760006118666118588686611a97565b601354610974908690610f68565b30600090815260026020526040902054909150611883908261171e565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118d49085815260200190565b60405180910390a36000600f541180156118f85750600f546118f68686611a97565b115b15611924576119243061dead61191f600f5461097460135489610f6890919063ffffffff16565b610f74565b61192e83826117e4565b915050610821565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061197257611972611e71565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190611d7b565b81600181518110611a0257611a02611e71565b6001600160a01b039283166020918202929092010152600554611a289130911684610e38565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a61908590600090869030904290600401611e87565b600060405180830381600087803b158015611a7b57600080fd5b505af1158015611a8f573d6000803e3d6000fd5b505050505050565b6006546000906001600160a01b0390811690831603611ab9575060115461057a565b6006546001600160a01b0390811690841603611ad8575060105461057a565b5060125492915050565b600060208083528351808285015260005b81811015611b0f57858101830151858201604001528201611af3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108cf57600080fd5b60008060408385031215611b5857600080fd5b8235611b6381611b30565b946020939093013593505050565b600080600080600060a08688031215611b8957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080600060608486031215611bc157600080fd5b8335611bcc81611b30565b92506020840135611bdc81611b30565b929592945050506040919091013590565b600060208284031215611bff57600080fd5b813561082181611b30565b80151581146108cf57600080fd5b60008060408385031215611c2b57600080fd5b8235611c3681611b30565b91506020830135611c4681611c0a565b809150509250929050565b600080600060608486031215611c6657600080fd5b8335611c7181611b30565b92506020840135611c8181611b30565b91506040840135611c9181611b30565b809150509250925092565b600080600060608486031215611cb157600080fd5b505081359360208301359350604090920135919050565b600060208284031215611cda57600080fd5b5035919050565b600080600080600080600060e0888a031215611cfc57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b60008060408385031215611d4057600080fd5b8235611d4b81611b30565b91506020830135611c4681611b30565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060208284031215611d8d57600080fd5b815161082181611b30565b600060208284031215611daa57600080fd5b5051919050565b600060208284031215611dc357600080fd5b815161082181611c0a565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761057a5761057a611dce565b600082611e1857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561057a5761057a611dce565b600080600060608486031215611e4557600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561057a5761057a611dce565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ed75784516001600160a01b031683529383019391830191600101611eb2565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208fb802596edbc5f44fbdcf147891428750770c2bf338253b72e8ec90e0daba2b64736f6c63430008130033