0x60806040526004805460ff60a01b1916905534801561001d57600080fd5b50611fba8061002d6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c8063570ca73511610104578063a8d5fd65116100a2578063c58e384311610071578063c58e384314610487578063c5967c26146104a4578063e9fad8ee146104ac578063eacd2d13146104b4576101ce565b8063a8d5fd6514610419578063b3ab15fb14610421578063b88a802f14610447578063c0c53b8b1461044f576101ce565b8063714b4658116100de578063714b4658146103b1578063900cf0cf146103d757806397ffe1d7146103df578063a694fc3a146103fc576101ce565b8063570ca7351461035f57806361d027b31461038357806370a082311461038b576101ce565b806319262d30116101715780632ffaaa091161014b5780632ffaaa09146102f65780633f9e3f0414610319578063446a2ec81461032157806354575af414610329576101ce565b806319262d30146102a95780631e85cd65146102cf5780632e1a7d4d146102d7576101ce565b806308ae4b0c116101ad57806308ae4b0c1461024d57806309e6d02114610291578063158ef93e1461029957806318160ddd146102a1576101ce565b80628cc262146101d3578063022ba18d1461020b578063046335d014610213575b600080fd5b6101f9600480360360208110156101e957600080fd5b50356001600160a01b03166104bc565b60408051918252519081900360200190f35b6101f961053d565b6102396004803603602081101561022957600080fd5b50356001600160a01b0316610543565b604080519115158252519081900360200190f35b6102736004803603602081101561026357600080fd5b50356001600160a01b03166105e4565b60408051938452602084019290925282820152519081900360600190f35b6101f9610605565b61023961067b565b6101f961068b565b610239600480360360208110156102bf57600080fd5b50356001600160a01b0316610691565b6101f961072a565b6102f4600480360360208110156102ed57600080fd5b5035610730565b005b6102f46004803603604081101561030c57600080fd5b5080359060200135610a4a565b6101f9610aea565b6101f9610b00565b6102f46004803603606081101561033f57600080fd5b506001600160a01b03813581169160208101359160409091013516610b13565b610367610c0c565b604080516001600160a01b039092168252519081900360200190f35b610367610c1b565b6101f9600480360360208110156103a157600080fd5b50356001600160a01b0316610c2a565b6101f9600480360360208110156103c757600080fd5b50356001600160a01b0316610c45565b6101f9610c60565b6102f4600480360360208110156103f557600080fd5b5035610ca5565b6102f46004803603602081101561041257600080fd5b5035610f89565b61036761120e565b6102f46004803603602081101561043757600080fd5b50356001600160a01b031661121d565b6102f4611288565b6102f46004803603606081101561046557600080fd5b506001600160a01b0381358116916020810135821691604090910135166114ff565b6102736004803603602081101561049d57600080fd5b50356116b1565b6101f96116e1565b6102f4611726565b610367611739565b6000806104c7611748565b60400151905060006104d8846117a0565b6040908101516001600160a01b0386166000908152600760205291909120600101549091506105359061052f670de0b6b3a764000061052961051a87876117fb565b6105238a610c2a565b9061185d565b906118bd565b90611924565b949350505050565b600a5481565b6006546040805163900cf0cf60e01b815290516000926001600160a01b03169163900cf0cf916004808301926020929190829003018186803b15801561058857600080fd5b505afa15801561059c573d6000803e3d6000fd5b505050506040513d60208110156105b257600080fd5b5051600a546001600160a01b0384166000908152600760205260409020600201546105dc91611924565b111592915050565b60076020526000908152604090208054600182015460029092015490919083565b600654604080516309e6d02160e01b815290516000926001600160a01b0316916309e6d021916004808301926020929190829003018186803b15801561064a57600080fd5b505afa15801561065e573d6000803e3d6000fd5b505050506040513d602081101561067457600080fd5b5051905090565b600454600160a01b900460ff1681565b60015490565b6006546040805163900cf0cf60e01b815290516000926001600160a01b03169163900cf0cf916004808301926020929190829003018186803b1580156106d657600080fd5b505afa1580156106ea573d6000803e3d6000fd5b505050506040513d602081101561070057600080fd5b50516009546001600160a01b0384166000908152600760205260409020600201546105dc91611924565b60095481565b61073861197e565b156107745760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b61077c61199f565b156107b85760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b60006107c333610c2a565b116107ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180611dfe6024913960400191505060405180910390fd5b3380156108995761080e611ddc565b506001600160a01b0381166000908152600760209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152610857826104bc565b6020820152610864610aea565b81526001600160a01b038216600090815260076020908152604091829020835181559083015160018201559101516002909101555b600082116108ee576040805162461bcd60e51b815260206004820152601c60248201527f426f617264726f6f6d3a2043616e6e6f74207769746864726177203000000000604482015290519081900360640190fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d602081101561096657600080fd5b50516009543360009081526007602052604090206002015461098791611924565b11156109c45760405162461bcd60e51b8152600401808060200182810382526023815260200180611edc6023913960400191505060405180910390fd5b6109cc611288565b6109d5826119c0565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a250504360009081526003602090815260408083203284529091528082208054600160ff1991821681179092553384529190922080549091169091179055565b6004546001600160a01b03163314610a935760405162461bcd60e51b8152600401808060200182810382526025815260200180611eb76025913960400191505060405180910390fd5b808210158015610aa4575060388211155b610adf5760405162461bcd60e51b8152600401808060200182810382526023815260200180611e946023913960400191505060405180910390fd5b600991909155600a55565b600854600090610afb9060016117fb565b905090565b6000610b0a611748565b60400151905090565b6004546001600160a01b03163314610b5c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611eb76025913960400191505060405180910390fd5b6005546001600160a01b0384811691161415610ba8576040805162461bcd60e51b81526020600480830191909152602482015263676c646d60e01b604482015290519081900360640190fd5b6000546001600160a01b0384811691161415610bf3576040805162461bcd60e51b8152602060048201526005602482015264736861726560d81b604482015290519081900360640190fd5b610c076001600160a01b0384168284611a50565b505050565b6004546001600160a01b031681565b6006546001600160a01b031681565b6001600160a01b031660009081526002602052604090205490565b6001600160a01b031660009081526007602052604090205490565b6006546040805163900cf0cf60e01b815290516000926001600160a01b03169163900cf0cf916004808301926020929190829003018186803b15801561064a57600080fd5b610cad61197e565b15610ce95760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b610cf161199f565b15610d2d5760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b6004546001600160a01b03163314610d765760405162461bcd60e51b8152600401808060200182810382526025815260200180611eb76025913960400191505060405180910390fd5b60008111610dcb576040805162461bcd60e51b815260206004820152601c60248201527f426f617264726f6f6d3a2043616e6e6f7420616c6c6f63617465203000000000604482015290519081900360640190fd5b6000610dd561068b565b11610e115760405162461bcd60e51b8152600401808060200182810382526030815260200180611e226030913960400191505060405180910390fd5b6000610e1b611748565b6040015190506000610e4a610e43610e3161068b565b61052986670de0b6b3a764000061185d565b8390611924565b9050610e54611ddc565b5060408051606081018252438152602081018581529181018381526008805460018101825560009190915282517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee360039092029182015592517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee4840155517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee590920191909155600554610f12906001600160a01b0316333087611aa2565b60408051858152905133917fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e29919081900360200190a250504360009081526003602090815260408083203284529091528082208054600160ff19918216811790925533845291909220805490911690911790555050565b610f9161197e565b15610fcd5760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b610fd561199f565b156110115760405162461bcd60e51b8152600401808060200182810382526026815260200180611f296026913960400191505060405180910390fd5b3380156110ab57611020611ddc565b506001600160a01b0381166000908152600760209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152611069826104bc565b6020820152611076610aea565b81526001600160a01b038216600090815260076020908152604091829020835181559083015160018201559101516002909101555b60008211611100576040805162461bcd60e51b815260206004820152601960248201527f426f617264726f6f6d3a2043616e6e6f74207374616b65203000000000000000604482015290519081900360640190fd5b61110982611b02565b600660009054906101000a90046001600160a01b03166001600160a01b031663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561115757600080fd5b505afa15801561116b573d6000803e3d6000fd5b505050506040513d602081101561118157600080fd5b505133600081815260076020908152604091829020600201939093558051858152905191927f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d92918290030190a250504360009081526003602090815260408083203284529091528082208054600160ff1991821681179092553384529190922080549091169091179055565b6000546001600160a01b031681565b6004546001600160a01b031633146112665760405162461bcd60e51b8152600401808060200182810382526025815260200180611eb76025913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33801561132257611297611ddc565b506001600160a01b03811660009081526007602090815260409182902082516060810184528154815260018201549281019290925260020154918101919091526112e0826104bc565b60208201526112ed610aea565b81526001600160a01b038216600090815260076020908152604091829020835181559083015160018201559101516002909101555b3360009081526007602052604090206001015480156114fb57600660009054906101000a90046001600160a01b03166001600160a01b031663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561138957600080fd5b505afa15801561139d573d6000803e3d6000fd5b505050506040513d60208110156113b357600080fd5b5051600a54336000908152600760205260409020600201546113d491611924565b11156114115760405162461bcd60e51b8152600401808060200182810382526021815260200180611e736021913960400191505060405180910390fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145f57600080fd5b505afa158015611473573d6000803e3d6000fd5b505050506040513d602081101561148957600080fd5b505133600081815260076020526040812060028101939093556001909201919091556005546114c4916001600160a01b039091169083611a50565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5050565b600454600160a01b900460ff161561155e576040805162461bcd60e51b815260206004820152601e60248201527f426f617264726f6f6d3a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b600580546001600160a01b038086166001600160a01b0319928316179092556000805485841690831617905560068054928416929091169190911790556115a3611ddc565b50604080516060810182524380825260006020808401828152848601838152600880546001810182559452855160039485027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381019190915591517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee4830155517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee5909101556006600955600a91909155600480546001600160a01b031960ff60a01b19909116600160a01b171633908117909155845192835293519293927f25ff68dd81b34665b5ba7e553ee5511bf6812e12adb4a7e2c0d9e26b3099ce799281900390910190a250505050565b600881815481106116be57fe5b600091825260209091206003909102018054600182015460029092015490925083565b600654604080516362cb3e1360e11b815290516000926001600160a01b03169163c5967c26916004808301926020929190829003018186803b15801561064a57600080fd5b61173761173233610c2a565b610730565b565b6005546001600160a01b031681565b611750611ddc565b600861175a610aea565b8154811061176457fe5b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905090565b6117a8611ddc565b60086117b383610c45565b815481106117bd57fe5b906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509050919050565b600082821115611852576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60008261186c57506000611857565b8282028284828161187957fe5b04146118b65760405162461bcd60e51b8152600401808060200182810382526021815260200180611e526021913960400191505060405180910390fd5b9392505050565b6000808211611913576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161191c57fe5b049392505050565b6000828201838110156118b6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b43600090815260036020908152604080832032845290915290205460ff1690565b43600090815260036020908152604080832033845290915290205460ff1690565b3360009081526002602052604090205481811015611a0f5760405162461bcd60e51b8152600401808060200182810382526036815260200180611f4f6036913960400191505060405180910390fd5b600154611a1c90836117fb565b600155611a2981836117fb565b3360008181526002602052604081209290925590546114fb916001600160a01b0390911690845b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c07908490611b5b565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611afc908590611b5b565b50505050565b600154611b0f9082611924565b60015533600090815260026020526040902054611b2c9082611924565b336000818152600260205260408120929092559054611b58916001600160a01b03909116903084611aa2565b50565b6060611bb0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611c0c9092919063ffffffff16565b805190915015610c0757808060200190516020811015611bcf57600080fd5b5051610c075760405162461bcd60e51b815260040180806020018281038252602a815260200180611eff602a913960400191505060405180910390fd5b6060610535848460008585611c2085611d32565b611c71576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611cb05780518252601f199092019160209182019101611c91565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611d12576040519150601f19603f3d011682016040523d82523d6000602084013e611d17565b606091505b5091509150611d27828286611d38565b979650505050505050565b3b151590565b60608315611d475750816118b6565b825115611d575782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611da1578181015183820152602001611d89565b50505050905090810190601f168015611dce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060600160405280600081526020016000815260200160008152509056fe426f617264726f6f6d3a20546865206d656d62657220646f6573206e6f74206578697374426f617264726f6f6d3a2043616e6e6f7420616c6c6f63617465207768656e20746f74616c537570706c792069732030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77426f617264726f6f6d3a207374696c6c20696e20726577617264206c6f636b75705f77697468647261774c6f636b757045706f6368733a206f7574206f662072616e6765426f617264726f6f6d3a2063616c6c6572206973206e6f7420746865206f70657261746f72426f617264726f6f6d3a207374696c6c20696e207769746864726177206c6f636b75705361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564436f6e747261637447756172643a206f6e6520626c6f636b2c206f6e652066756e6374696f6e426f617264726f6f6d3a20776974686472617720726571756573742067726561746572207468616e207374616b656420616d6f756e74a2646970667358221220e56d638fc772ed2b8a207aa11c81d9e8a28f734b8ec334ab5f0a410f81d9d9b064736f6c634300060c0033