60806040526001805460ff60b01b1916600160b01b1790556064620000276012600a6200047c565b6200003790633b9aca0062000493565b6200004490600262000493565b620000509190620004ad565b600255600a60055560146006556003600755600360085560c86012600a6200007991906200047c565b6200008990633b9aca0062000493565b620000959190620004ad565b600955348015620000a4575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000148573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016e9190620004cd565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f49190620004cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200023f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002659190620004cd565b600480546001600160a01b03929092166001600160a01b031992831617905560018054909116331790556200029d6012600a6200047c565b620002ad90633b9aca0062000493565b335f818152600a602090815260408083209490945581546001600160a01b039081168352600c9091528382208054600160ff199182168117909255308452858420805482168317905560035490921683529390912080549091169092179091556001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003466012600a6200047c565b6200035690633b9aca0062000493565b60405190815260200160405180910390a3620004f5565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003c157815f1904821115620003a557620003a56200036d565b80851615620003b357918102915b93841c939080029062000386565b509250929050565b5f82620003d95750600162000476565b81620003e757505f62000476565b81600181146200040057600281146200040b576200042b565b600191505062000476565b60ff8411156200041f576200041f6200036d565b50506001821b62000476565b5060208310610133831016604e8410600b841016171562000450575081810a62000476565b6200045c838362000381565b805f19048211156200047257620004726200036d565b0290505b92915050565b5f6200048c60ff841683620003c9565b9392505050565b80820281158282048414176200047657620004766200036d565b5f82620004c857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620004de575f80fd5b81516001600160a01b03811681146200048c575f80fd5b61132c80620005035f395ff3fe608060405260043610610191575f3560e01c8063751039fc116100dc578063d158272d11610087578063e4748b9e11610062578063e4748b9e146104bf578063e57f14e1146104d4578063e5d41c6b146104f3578063f8b45b0514610508575f80fd5b8063d158272d14610447578063dd62ed3e14610466578063e0f3ccf5146104aa575f80fd5b8063a9059cbb116100b7578063a9059cbb146103f5578063afa4f3b214610414578063c9567bf914610433575f80fd5b8063751039fc146103805780638da5cb5b1461039457806395d89b41146103b0575f80fd5b806349bd5a5e1161013c57806351bc3c851161011757806351bc3c851461032457806370a0823114610338578063715018a61461036c575f80fd5b806349bd5a5e1461029f5780634ada218b146102d65780634fbee193146102f6575f80fd5b806318160ddd1161016c57806318160ddd1461024357806323b872dd14610265578063313ce56714610284575f80fd5b806306fdde031461019c578063095ea7b3146101f357806316a2f82a14610222575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b5060408051808201909152600781527f546f6b796f20580000000000000000000000000000000000000000000000000060208201525b6040516101ea9190610f9b565b60405180910390f35b3480156101fe575f80fd5b5061021261020d366004610ffa565b61051d565b60405190151581526020016101ea565b34801561022d575f80fd5b5061024161023c366004611024565b610533565b005b34801561024e575f80fd5b506102576105b1565b6040519081526020016101ea565b348015610270575f80fd5b5061021261027f366004611046565b6105d1565b34801561028f575f80fd5b50604051601281526020016101ea565b3480156102aa575f80fd5b506004546102be906001600160a01b031681565b6040516001600160a01b0390911681526020016101ea565b3480156102e1575f80fd5b5060015461021290600160a01b900460ff1681565b348015610301575f80fd5b50610212610310366004611024565b600c6020525f908152604090205460ff1681565b34801561032f575f80fd5b50610241610638565b348015610343575f80fd5b50610257610352366004611024565b6001600160a01b03165f908152600a602052604090205490565b348015610377575f80fd5b506102416106b2565b34801561038b575f80fd5b5061024161076b565b34801561039f575f80fd5b505f546001600160a01b03166102be565b3480156103bb575f80fd5b5060408051808201909152600681527f544f4b594f58000000000000000000000000000000000000000000000000000060208201526101dd565b348015610400575f80fd5b5061021261040f366004610ffa565b6107ef565b34801561041f575f80fd5b5061024161042e366004611084565b6107fb565b34801561043e575f80fd5b50610241610870565b348015610452575f80fd5b506001546102be906001600160a01b031681565b348015610471575f80fd5b5061025761048036600461109b565b6001600160a01b039182165f908152600b6020908152604080832093909416825291909152205490565b3480156104b5575f80fd5b5061025760065481565b3480156104ca575f80fd5b5061025760055481565b3480156104df575f80fd5b506102416104ee366004611024565b6108f9565b3480156104fe575f80fd5b5061025760095481565b348015610513575f80fd5b5061025760025481565b5f610529338484610975565b5060015b92915050565b5f546001600160a01b031633146105915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03165f908152600c60205260409020805460ff19169055565b5f6105be6012600a6111c6565b6105cc90633b9aca006111d4565b905090565b5f6105dd8484846109d5565b61062e8433610629856040518060600160405280602881526020016112cf602891396001600160a01b038a165f908152600b602090815260408083203384529091529020549190610d61565b610975565b5060019392505050565b5f546001600160a01b031633146106915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b305f908152600a602052604090205480156106af576106af81610d99565b50565b5f546001600160a01b0316331461070b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b5f546001600160a01b031633146107c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b6107d06012600a6111c6565b6107de90633b9aca006111d4565b600255600854600555600754600655565b5f6105293384846109d5565b5f546001600160a01b031633146108545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b6108606012600a6111c6565b61086a90826111d4565b60095550565b5f546001600160a01b031633146108c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b5f546001600160a01b031633146109525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610588565b6001600160a01b03165f908152600c60205260409020805460ff19166001179055565b6001600160a01b038381165f818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610a4a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610588565b6001600160a01b0383165f908152600c602052604081205460ff16158015610a8a57506001600160a01b0383165f908152600c602052604090205460ff16155b15610c4457600154600160a01b900460ff16610ae85760405162461bcd60e51b815260206004820152601260248201527f5472616465206973206e6f74206f70656e2100000000000000000000000000006044820152606401610588565b6004546001600160a01b0390811690851603610b9457606460055483610b0e91906111d4565b610b1891906111eb565b905060025482610b3c856001600160a01b03165f908152600a602052604090205490565b610b46919061120a565b1115610b945760405162461bcd60e51b815260206004820152601560248201527f57616c6c6574206c696d697420726561636865642100000000000000000000006044820152606401610588565b6004546001600160a01b0390811690841603610bc757606460065483610bba91906111d4565b610bc491906111eb565b90505b305f908152600a6020526040902054600154600160a81b900460ff16158015610bfd57506004546001600160a01b038581169116145b8015610c255750600154760100000000000000000000000000000000000000000000900460ff165b8015610c32575060095481115b15610c4257610c42600954610d99565b505b8015610cae57305f908152600a602052604081208054839290610c6890849061120a565b909155505060405181815230906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6001600160a01b0384165f908152600a602052604081208054849290610cd590849061121d565b90915550610ce59050818361121d565b6001600160a01b0384165f908152600a602052604081208054909190610d0c90849061120a565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610d4a848661121d565b60405190815260200160405180910390a350505050565b5f8184841115610d845760405162461bcd60e51b81526004016105889190610f9b565b505f610d90848661121d565b95945050505050565b5f610da382610df9565b6001546040516001600160a01b039091169047905f81818185875af1925050503d805f8114610ded576040519150601f19603f3d011682016040523d82523d5f602084013e610df2565b606091505b5050505050565b6001805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610e3f57610e3f611230565b6001600160a01b03928316602091820292909201810191909152600354604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015610eaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed39190611244565b81600181518110610ee657610ee6611230565b6001600160a01b039283166020918202929092010152600354610f0c9130911684610975565b6003546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790610f5d9085905f9086903090429060040161125f565b5f604051808303815f87803b158015610f74575f80fd5b505af1158015610f86573d5f803e3d5ffd5b50506001805460ff60a81b1916905550505050565b5f6020808352835180828501525f5b81811015610fc657858101830151858201604001528201610faa565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106af575f80fd5b5f806040838503121561100b575f80fd5b823561101681610fe6565b946020939093013593505050565b5f60208284031215611034575f80fd5b813561103f81610fe6565b9392505050565b5f805f60608486031215611058575f80fd5b833561106381610fe6565b9250602084013561107381610fe6565b929592945050506040919091013590565b5f60208284031215611094575f80fd5b5035919050565b5f80604083850312156110ac575f80fd5b82356110b781610fe6565b915060208301356110c781610fe6565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561112057815f1904821115611106576111066110d2565b8085161561111357918102915b93841c93908002906110eb565b509250929050565b5f826111365750600161052d565b8161114257505f61052d565b816001811461115857600281146111625761117e565b600191505061052d565b60ff841115611173576111736110d2565b50506001821b61052d565b5060208310610133831016604e8410600b84101617156111a1575081810a61052d565b6111ab83836110e6565b805f19048211156111be576111be6110d2565b029392505050565b5f61103f60ff841683611128565b808202811582820484141761052d5761052d6110d2565b5f8261120557634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052d5761052d6110d2565b8181038181111561052d5761052d6110d2565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611254575f80fd5b815161103f81610fe6565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156112ad5784516001600160a01b031683529383019391830191600101611288565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9ce2e28020d4a11f6ef86dfb1cc043284faf6a4f7094f6a6a2e1ca11cc6294364736f6c63430008150033