0x608060405234801561000f575f80fd5b5060405161169838038061169883398101604081905261002e9161030b565b6040805180820182526005808252644d4153484160d81b602080840182905284518086019095529184529083015290600261006983826103cf565b50600361007682826103cf565b50505061008f61008a6100e260201b60201c565b6100e6565b6001600160a01b0381165f908152600660205260409020805460ff191660011790556100dc816100bd601290565b6100c890600a610584565b6100d790640f81ab5a00610592565b610137565b506105d1565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166101a05760405162461bcd60e51b815260206004820152602560248201527f45524332303a204d41534841206d696e7420746f20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6101ab5f8383610231565b8060045f8282546101bc91906105a9565b90915550506001600160a01b0382165f90815260208190526040812080548392906101e89084906105a9565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383161580159061025157506001600160a01b03821615155b801561027457506001600160a01b0383165f9081526008602052604090205460ff165b15610306576001600160a01b0383165f908152600760205260409020546102dd5760405162461bcd60e51b815260206004820152601c60248201527f4e6f207472616e73666572207269676874732072656d61696e696e67000000006044820152606401610197565b6001600160a01b0383165f908152600760205260408120805491610300836105bc565b91905055505b505050565b5f6020828403121561031b575f80fd5b81516001600160a01b0381168114610331575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061036057607f821691505b60208210810361037e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561030657805f5260205f20601f840160051c810160208510156103a95750805b601f840160051c820191505b818110156103c8575f81556001016103b5565b5050505050565b81516001600160401b038111156103e8576103e8610338565b6103fc816103f6845461034c565b84610384565b602080601f83116001811461042f575f84156104185750858301515b5f19600386901b1c1916600185901b178555610486565b5f85815260208120601f198616915b8281101561045d5788860151825594840194600190910190840161043e565b508582101561047a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156104dc57815f19048211156104c2576104c261048e565b808516156104cf57918102915b93841c93908002906104a7565b509250929050565b5f826104f25750600161057e565b816104fe57505f61057e565b8160018114610514576002811461051e5761053a565b600191505061057e565b60ff84111561052f5761052f61048e565b50506001821b61057e565b5060208310610133831016604e8410600b841016171561055d575081810a61057e565b61056783836104a2565b805f190482111561057a5761057a61048e565b0290505b92915050565b5f61033160ff8416836104e4565b808202811582820484141761057e5761057e61048e565b8082018082111561057e5761057e61048e565b5f816105ca576105ca61048e565b505f190190565b6110ba806105de5f395ff3fe6080604052600436106100fc575f3560e01c806306fdde0314610107578063095ea7b31461013157806315a458071461016057806318160ddd1461018157806323b872dd1461019f578063313ce567146101be5780633520a3b4146101d95780633950935114610210578063484d993f1461022f5780634ada218b1461024e57806370a0823114610267578063715018a61461029b57806375d5e02c146102af5780638a8c523c146102e65780638da5cb5b146102fa57806395d89b4114610326578063a457c2d71461033a578063a9059cbb14610359578063b7e04c1114610378578063dd62ed3e146103ac578063f2fde38b146103f0575f80fd5b3661010357005b5f80fd5b348015610112575f80fd5b5061011b61040f565b6040516101289190610e4a565b60405180910390f35b34801561013c575f80fd5b5061015061014b366004610e9a565b61049f565b6040519015158152602001610128565b34801561016b575f80fd5b5061017f61017a366004610e9a565b6104b5565b005b34801561018c575f80fd5b506004545b604051908152602001610128565b3480156101aa575f80fd5b506101506101b9366004610ec2565b61051e565b3480156101c9575f80fd5b5060405160128152602001610128565b3480156101e4575f80fd5b506101506101f3366004610efb565b6001600160a01b03165f9081526008602052604090205460ff1690565b34801561021b575f80fd5b5061015061022a366004610e9a565b6105d3565b34801561023a575f80fd5b5061017f610249366004610f1b565b61060e565b348015610259575f80fd5b506009546101509060ff1681565b348015610272575f80fd5b50610191610281366004610efb565b6001600160a01b03165f9081526020819052604090205490565b3480156102a6575f80fd5b5061017f6106e9565b3480156102ba575f80fd5b506101506102c9366004610efb565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156102f1575f80fd5b5061017f610723565b348015610305575f80fd5b5061030e6107b4565b6040516001600160a01b039091168152602001610128565b348015610331575f80fd5b5061011b6107c3565b348015610345575f80fd5b50610150610354366004610e9a565b6107d2565b348015610364575f80fd5b50610150610373366004610e9a565b610870565b348015610383575f80fd5b50610191610392366004610efb565b6001600160a01b03165f9081526007602052604090205490565b3480156103b7575f80fd5b506101916103c6366004610f54565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156103fb575f80fd5b5061017f61040a366004610efb565b61087c565b60606002805461041e90610f85565b80601f016020809104026020016040519081016040528092919081815260200182805461044a90610f85565b80156104955780601f1061046c57610100808354040283529160200191610495565b820191905f5260205f20905b81548152906001019060200180831161047857829003601f168201915b5050505050905090565b5f6104ab33848461091c565b5060015b92915050565b336104be6107b4565b6001600160a01b0316146104ed5760405162461bcd60e51b81526004016104e490610fbd565b60405180910390fd5b6001600160a01b039091165f908152600760209081526040808320939093556008905220805460ff19166001179055565b6001600160a01b0383165f9081526001602090815260408083203384529091528120545f1981146105bd57828110156105b05760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d41534841207472616e7366657220616d6f756e742065786360448201526d6565647320616c6c6f77616e636560901b60648201526084016104e4565b6105bd853385840361091c565b6105c8858585610a46565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916104ab918590610609908690611017565b61091c565b336106176107b4565b6001600160a01b03161461063d5760405162461bcd60e51b81526004016104e490610fbd565b6001600160a01b0382165f9081526006602052604090205481151560ff9091161515036106bf5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016104e4565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b336106f26107b4565b6001600160a01b0316146107185760405162461bcd60e51b81526004016104e490610fbd565b6107215f610b81565b565b3361072c6107b4565b6001600160a01b0316146107525760405162461bcd60e51b81526004016104e490610fbd565b60095460ff16156107a55760405162461bcd60e51b815260206004820152601e60248201527f54726164696e67204d4153484120616c726561647920656e61626c65642e000060448201526064016104e4565b6009805460ff19166001179055565b6005546001600160a01b031690565b60606003805461041e90610f85565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156108595760405162461bcd60e51b815260206004820152602b60248201527f45524332303a204d415348412064656372656173656420616c6c6f77616e636560448201526a2062656c6f77207a65726f60a81b60648201526084016104e4565b610866338585840361091c565b5060019392505050565b5f6104ab338484610a46565b336108856107b4565b6001600160a01b0316146108ab5760405162461bcd60e51b81526004016104e490610fbd565b6001600160a01b0381166109105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104e4565b61091981610b81565b50565b6001600160a01b0383166109855760405162461bcd60e51b815260206004820152602a60248201527f45524332303a204d4153484120617070726f76652066726f6d20746865207a65604482015269726f206164647265737360b01b60648201526084016104e4565b6001600160a01b0382166109e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e4565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6c5760405162461bcd60e51b81526004016104e49061102a565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e4565b60095460ff1680610af657506001600160a01b0383165f9081526006602052604090205460ff165b80610b1857506001600160a01b0382165f9081526006602052604090205460ff165b610b5f5760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b60448201526064016104e4565b805f03610b7657610b7183835f610bd2565b505050565b610b71838383610bd2565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316610bf85760405162461bcd60e51b81526004016104e49061102a565b6001600160a01b038216610c5a5760405162461bcd60e51b815260206004820152602360248201527f4d415348413a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e4565b610c65838383610d72565b6001600160a01b0383165f9081526020819052604090205481811015610ce25760405162461bcd60e51b815260206004820152602c60248201527f4d415348412045524332303a207472616e7366657220616d6f756e742065786360448201526b656564732062616c616e636560a01b60648201526084016104e4565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610d18908490611017565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d6491815260200190565b60405180910390a350505050565b6001600160a01b03831615801590610d9257506001600160a01b03821615155b8015610db557506001600160a01b0383165f9081526008602052604090205460ff165b15610b71576001600160a01b0383165f90815260076020526040902054610e1d5760405162461bcd60e51b815260206004820152601c60248201527b4e6f207472616e73666572207269676874732072656d61696e696e6760201b60448201526064016104e4565b6001600160a01b0383165f908152600760205260408120805491610e408361106f565b9190505550505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610e95575f80fd5b919050565b5f8060408385031215610eab575f80fd5b610eb483610e7f565b946020939093013593505050565b5f805f60608486031215610ed4575f80fd5b610edd84610e7f565b9250610eeb60208501610e7f565b9150604084013590509250925092565b5f60208284031215610f0b575f80fd5b610f1482610e7f565b9392505050565b5f8060408385031215610f2c575f80fd5b610f3583610e7f565b915060208301358015158114610f49575f80fd5b809150509250929050565b5f8060408385031215610f65575f80fd5b610f6e83610e7f565b9150610f7c60208401610e7f565b90509250929050565b600181811c90821680610f9957607f821691505b602082108103610fb757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526026908201527f4f776e61626c653a2063616c6c6572204d41534841206973206e6f74207468656040820152651037bbb732b960d11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104af576104af611003565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b5f8161107d5761107d611003565b505f19019056fea26469706673582212203b5b985b0828629cd584a059e55cdcb0cb7bf3deec66391d3e6ae1db5004651964736f6c634300081900330000000000000000000000004ccf621ff3d61d54e22b7e6567c1575178f46739