608060405234801561000f575f80fd5b50604051610d1b380380610d1b83398101604081905261002e916101ac565b600261003a8382610295565b5060036100478282610295565b50335f818152602081905260409020805460ff1916600190811790915580546001600160a01b0319168217905561008a906b033b2e3c9fd0803ce8000000610091565b5050610374565b8060045f8282546100a2919061034f565b90915550506001600160a01b0382165f818152600560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261011d575f80fd5b81516001600160401b03811115610136576101366100fa565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610164576101646100fa565b60405281815283820160200185101561017b575f80fd5b5f5b828110156101995760208186018101518383018201520161017d565b505f918101602001919091529392505050565b5f80604083850312156101bd575f80fd5b82516001600160401b038111156101d2575f80fd5b6101de8582860161010e565b602085015190935090506001600160401b038111156101fb575f80fd5b6102078582860161010e565b9150509250929050565b600181811c9082168061022557607f821691505b60208210810361024357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029057805f5260205f20601f840160051c8101602085101561026e5750805b601f840160051c820191505b8181101561028d575f815560010161027a565b50505b505050565b81516001600160401b038111156102ae576102ae6100fa565b6102c2816102bc8454610211565b84610249565b6020601f8211600181146102f4575f83156102dd5750848201515b5f19600385901b1c1916600184901b17845561028d565b5f84815260208120601f198516915b828110156103235787850151825560209485019460019092019101610303565b508482101561034057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561036e57634e487b7160e01b5f52601160045260245ffd5b92915050565b61099a806103815f395ff3fe608060405234801561000f575f80fd5b50600436106100cf575f3560e01c806370a082311161007d578063a9059cbb11610058578063a9059cbb146101aa578063bd075b84146101bd578063dd62ed3e146101d0575f80fd5b806370a082311461017a5780639593a8881461018d57806395d89b41146101a2575f80fd5b806323b872dd116100ad57806323b872dd1461012b5780632fee9e7e1461013e578063313ce56714610160575f80fd5b806306fdde03146100d3578063095ea7b3146100f157806318160ddd14610114575b5f80fd5b6100db6101e3565b6040516100e89190610718565b60405180910390f35b6101046100ff36600461079c565b61026f565b60405190151581526020016100e8565b61011d60045481565b6040519081526020016100e8565b6101046101393660046107c4565b6102db565b61010461014c3660046107fe565b5f6020819052908152604090205460ff1681565b610168601281565b60405160ff90911681526020016100e8565b61011d6101883660046107fe565b61043d565b6101a061019b36600461081e565b61048a565b005b6100db61052d565b6101046101b836600461079c565b61053a565b6101a06101cb366004610857565b6105c5565b61011d6101de3660046108c8565b6106a2565b600280546101f0906108f9565b80601f016020809104026020016040519081016040528092919081815260200182805461021c906108f9565b80156102675780601f1061023e57610100808354040283529160200191610267565b820191905f5260205f20905b81548152906001019060200180831161024a57829003601f168201915b505050505081565b335f8181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102c99086815260200190565b60405180910390a35060015b92915050565b335f90815260208190526040812054819060ff16801561031257506001600160a01b0385165f9081526020819052604090205460ff165b9050806103c7576001600160a01b0385165f9081526006602090815260408083203384529091529020545f1981146103725761034e8482610931565b6001600160a01b0387165f9081526006602090815260408083203384529091529020555b6001600160a01b0386165f9081526005602052604081208054869290610399908490610931565b9091555050506001600160a01b0384165f9081526005602052604090208054606460028602040190556103e5565b6001600160a01b0384165f9081526005602052604090208054840190555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161042a91815260200190565b60405180910390a3506001949350505050565b6001600160a01b0381165f9081526020819052604081205460ff161561046f57506a0422ca8b0a00a425000000919050565b506001600160a01b03165f9081526005602052604090205490565b6001546001600160a01b03163314610503576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f460000000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03919091165f908152602081905260409020805460ff1916911515919091179055565b600380546101f0906108f9565b335f9081526020819052604081205460ff1661057457335f908152600560205260408120805484929061056e908490610931565b90915550505b6001600160a01b0383165f81815260056020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906102c99086815260200190565b6001546001600160a01b03163314610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f460000000000000000000000000000000000000000000000000000000000000060448201526064016104fa565b5f5b8181101561069d5760015f8085858581811061065957610659610950565b905060200201602081019061066e91906107fe565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161063b565b505050565b6001600160a01b0382165f9081526020819052604081205460ff1680156106e057506001600160a01b0382165f9081526020819052604090205460ff165b156106ed57505f196102d5565b506001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b602081525f82518060208401525f5b818110156107445760208186018101516040868401015201610727565b505f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114610797575f80fd5b919050565b5f80604083850312156107ad575f80fd5b6107b683610781565b946020939093013593505050565b5f805f606084860312156107d6575f80fd5b6107df84610781565b92506107ed60208501610781565b929592945050506040919091013590565b5f6020828403121561080e575f80fd5b61081782610781565b9392505050565b5f806040838503121561082f575f80fd5b61083883610781565b91506020830135801515811461084c575f80fd5b809150509250929050565b5f8060208385031215610868575f80fd5b823567ffffffffffffffff81111561087e575f80fd5b8301601f8101851361088e575f80fd5b803567ffffffffffffffff8111156108a4575f80fd5b8560208260051b84010111156108b8575f80fd5b6020919091019590945092505050565b5f80604083850312156108d9575f80fd5b6108e283610781565b91506108f060208401610781565b90509250929050565b600181811c9082168061090d57607f821691505b60208210810361092b57634e487b7160e01b5f52602260045260245ffd5b50919050565b818103818111156102d557634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220bc2ab6dd3080b0f895aa0bf0993566b8ad3c95b1f144461f1790fff400c80d8864736f6c634300081a003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a4d4f4a4920546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d4f4a4900000000000000000000000000000000000000000000000000000000