60806040526009805461ffff60a01b191661010160a01b1790556000600b819055600a600c55600d553480156200003557600080fd5b5060405162001fda38038062001fda8339810160408190526200005891620006cd565b82826003620000688382620007ce565b506004620000778282620007ce565b5050600580546001600160a01b031916339081178255600090815260076020526040808220805460ff19166001179055915491516001600160a01b03929092169250907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a360007360ae616a2155ee3d9a68541ba4544862310933d490506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f91906200089a565b6001600160a01b031663c9c6539630846001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d391906200089a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024791906200089a565b600880546001600160a01b038084166001600160a01b031992831617909255600980549286169290911691909117905590506200028481620002cd565b6200028f82620002cd565b6200029b338462000379565b604051838152339060009060008051602062001fba8339815191529060200160405180910390a35050505050620008f3565b6005546001600160a01b031633146200032d5760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65720000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f83e3c673137f74e3f72c6765872f94be253d732a38509090c78a5b092aac351d9190a250565b6001600160a01b038216620003d15760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000324565b620003df6000838362000439565b8060026000828254620003f39190620008cc565b90915550506001600160a01b0382166000818152602081815260408083208054860190555184815260008051602062001fba833981519152910160405180910390a35050565b600954600160a01b900460ff16620004945760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f74206f70656e207965742e2e2e000000000000604482015260640162000324565b600b5415620004f157600b54811115620004f15760405162461bcd60e51b815260206004820152601860248201527f65786365656473206d6178696d756d207472616e736665720000000000000000604482015260640162000324565b6001600160a01b03831660009081526007602052604090205460ff16620005bf576001600160a01b038316158015906200053357506001600160a01b03821615155b8015620005495750600954600160a81b900460ff165b15620005bf57600c54600d541115620005bf5760405162461bcd60e51b815260206004820152603160248201527f4e6f20426f7420212054726164696e67206c696d6974656420746f206f6e65206044820152707478206576657279203130626c6f636b7360781b606482015260840162000324565b600d54620005cf906001620008cc565b600d55326000908152600a602052604090205415620005fb57326000908152600a602052604090204390555b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200062857600080fd5b81516001600160401b038082111562000645576200064562000600565b604051601f8301601f19908116603f0116810190828211818310171562000670576200067062000600565b816040528381526020925086838588010111156200068d57600080fd5b600091505b83821015620006b1578582018301518183018401529082019062000692565b83821115620006c35760008385830101525b9695505050505050565b600080600060608486031215620006e357600080fd5b83516001600160401b0380821115620006fb57600080fd5b620007098783880162000616565b945060208601519150808211156200072057600080fd5b506200072f8682870162000616565b925050604084015190509250925092565b600181811c908216806200075557607f821691505b6020821081036200077657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005fb57600081815260208120601f850160051c81016020861015620007a55750805b601f850160051c820191505b81811015620007c657828155600101620007b1565b505050505050565b81516001600160401b03811115620007ea57620007ea62000600565b6200080281620007fb845462000740565b846200077c565b602080601f8311600181146200083a5760008415620008215750858301515b600019600386901b1c1916600185901b178555620007c6565b600085815260208120601f198616915b828110156200086b578886015182559484019460019091019084016200084a565b50858210156200088a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008ad57600080fd5b81516001600160a01b0381168114620008c557600080fd5b9392505050565b60008219821115620008ee57634e487b7160e01b600052601160045260246000fd5b500190565b6116b780620009036000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806395d89b411161010f578063d5f94685116100a2578063ed3a8c8811610071578063ed3a8c881461043c578063f34eb0b81461044f578063f958a65714610462578063fdff9b4d1461047557600080fd5b8063d5f94685146103d4578063d6046836146103dd578063dd62ed3e146103f0578063e042124f1461042957600080fd5b8063ab7cb211116100de578063ab7cb2111461035f578063c1adf7bc14610373578063d39ce77c14610393578063d4d2e7f2146103a657600080fd5b806395d89b411461031e578063a22b35ce14610326578063a457c2d714610339578063a9059cbb1461034c57600080fd5b806342966c681161018757806379cc67901161015657806379cc6790146102df5780637ff28d3a146102f257806388e765ff146102fa5780638da5cb5b1461030357600080fd5b806342966c6814610286578063578431841461029b57806370a08231146102ae578063715018a6146102d757600080fd5b806323b872dd116101c357806323b872dd1461023d5780632b28a36214610250578063313ce56714610264578063395093511461027357600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f2610498565b6040516101ff9190611496565b60405180910390f35b61021b610216366004611507565b61052a565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61021b61024b366004611531565b610542565b60095461021b90600160a81b900460ff1681565b604051601281526020016101ff565b61021b610281366004611507565b610566565b61029961029436600461156d565b6105a5565b005b6102996102a9366004611586565b6105b2565b61022f6102bc366004611586565b6001600160a01b031660009081526020819052604090205490565b61029961065a565b6102996102ed366004611507565b61070b565b610299610719565b61022f600b5481565b6005546040516001600160a01b0390911681526020016101ff565b6101f2610809565b610299610334366004611507565b610818565b61021b610347366004611507565b61087e565b61021b61035a366004611507565b610928565b60095461021b90600160a01b900460ff1681565b61022f610381366004611586565b600a6020526000908152604090205481565b6102996103a1366004611586565b610936565b61021b6103b4366004611586565b6001600160a01b031660009081526007602052604090205460ff16151590565b61022f600c5481565b6102996103eb3660046115a8565b610a75565b61022f6103fe3660046115ca565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610299610437366004611586565b610b08565b61029961044a36600461156d565b610bae565b61029961045d36600461156d565b610c5d565b6102996104703660046115a8565b610cbc565b61021b610483366004611586565b60076020526000908152604090205460ff1681565b6060600380546104a7906115fd565b80601f01602080910402602001604051908101604052809291908181526020018280546104d3906115fd565b80156105205780601f106104f557610100808354040283529160200191610520565b820191906000526020600020905b81548152906001019060200180831161050357829003601f168201915b5050505050905090565b600033610538818585610d4f565b5060019392505050565b600033610550858285610ea7565b61055b858585610f39565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061053890829086906105a0908790611637565b610d4f565b6105af3382611131565b50565b6005546001600160a01b031633146106115760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e65720000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260076020526040808220805460ff19169055517f85bb1cb7564794504fb46cc8e624fd15861f39fc11866b8c9b1018b678b2e7f79190a250565b6005546001600160a01b031633146106b45760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b6005546040516000916001600160a01b0316907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a36005805473ffffffffffffffffffffffffffffffffffffffff19169055565b6107158282610818565b5050565b6006546001600160a01b031633146107995760405162461bcd60e51b815260206004820152602260248201527f4f776e61626c653a206d757374206265206e6577206f776e657220746f20707560448201527f6c6c0000000000000000000000000000000000000000000000000000000000006064820152608401610608565b6006546005546040516001600160a01b0392831692909116907faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d90600090a36006546005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b6060600480546104a7906115fd565b60006108628260405180606001604052806024815260200161165e602491396001600160a01b038616600090815260016020908152604080832033845290915290205491906112a6565b905061086f833383610d4f565b6108798383611131565b505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561091b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610608565b61055b8286868403610d4f565b600033610538818585610f39565b6005546001600160a01b031633146109905760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b6001600160a01b038116610a0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610608565b6005546040516001600160a01b038084169216907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba90600090a36006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610acf5760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b60098054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6005546001600160a01b03163314610b625760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b6001600160a01b038116600081815260076020526040808220805460ff19166001179055517f83e3c673137f74e3f72c6765872f94be253d732a38509090c78a5b092aac351d9190a250565b6005546001600160a01b03163314610c085760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b60648110610c585760405162461bcd60e51b815260206004820152601860248201527f6d757374206c657373207468616e2031303020626c6f636b00000000000000006044820152606401610608565b600c55565b6005546001600160a01b03163314610cb75760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b600b55565b6005546001600160a01b03163314610d165760405162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74206f776e6572000000006044820152606401610608565b60098054911515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001600160a01b038316610dca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610608565b6001600160a01b038216610e465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610608565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610f335781811015610f265760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610608565b610f338484848403610d4f565b50505050565b6001600160a01b038316610fb55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610608565b6001600160a01b0382166110315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610608565b61103c8383836112d2565b6001600160a01b038316600090815260208190526040902054818110156110cb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610608565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f33565b6001600160a01b0382166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610608565b6111b9826000836112d2565b6001600160a01b038216600090815260208190526040902054818110156112485760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610608565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600081848411156112ca5760405162461bcd60e51b81526004016106089190611496565b505050900390565b600954600160a01b900460ff1661132b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f74206f70656e207965742e2e2e0000000000006044820152606401610608565b600b541561138557600b548111156113855760405162461bcd60e51b815260206004820152601860248201527f65786365656473206d6178696d756d207472616e7366657200000000000000006044820152606401610608565b6001600160a01b03831660009081526007602052604090205460ff16611459576001600160a01b038316158015906113c557506001600160a01b03821615155b80156113da5750600954600160a81b900460ff165b1561145957600c54600d5411156114595760405162461bcd60e51b815260206004820152603160248201527f4e6f20426f7420212054726164696e67206c696d6974656420746f206f6e652060448201527f7478206576657279203130626c6f636b730000000000000000000000000000006064820152608401610608565b600d54611467906001611637565b600d55326000908152600a60205260409020541561087957326000908152600a60205260409020439055505050565b600060208083528351808285015260005b818110156114c3578581018301518582016040015282016114a7565b818111156114d5576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461150257600080fd5b919050565b6000806040838503121561151a57600080fd5b611523836114eb565b946020939093013593505050565b60008060006060848603121561154657600080fd5b61154f846114eb565b925061155d602085016114eb565b9150604084013590509250925092565b60006020828403121561157f57600080fd5b5035919050565b60006020828403121561159857600080fd5b6115a1826114eb565b9392505050565b6000602082840312156115ba57600080fd5b813580151581146115a157600080fd5b600080604083850312156115dd57600080fd5b6115e6836114eb565b91506115f4602084016114eb565b90509250929050565b600181811c9082168061161157607f821691505b60208210810361163157634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561165857634e487b7160e01b600052601160045260246000fd5b50019056fe45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c461e533989d958914583d392a4ad99eebab4afe1ba1ff4ff505b9086332448264736f6c634300080f0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000052b7d2dcc80cd2e4000000000000000000000000000000000000000000000000000000000000000000000841766178506f6c79000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524506f6c79000000000000000000000000000000000000000000000000000000