60e06040526100106012600a610591565b61001f90641010b872006105a6565b6080526007805461ffff60a01b1916600160a81b179055600880546001600160a01b03199081169091556009805490911661dead1790555f60a081905260c0819052600a5534801561006f575f80fd5b50604051806040016040528060098152602001685769656e657220414960b81b8152506040518060400160405280600381526020016257414960e81b8152506100c46100bf6102fa60201b60201c565b6102fe565b60046100d08382610654565b5060056100dd8282610654565b5050506101047359ac6a6944e078b780d14fe6d92dcc1ca9257bf03361034d60201b60201c565b60805161012b9033906127109061011c9082906105a6565b610126919061070e565b61037b565b6007805460ff60a01b1916600160a01b179055335f908152600b60209081526040808320805460ff19166001179055600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b81529151909263c45a015592600480820193918290030181865afa1580156101b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101db919061072d565b9050806001600160a01b031663c9c6539630600c5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561023d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610261919061072d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102cf919061072d565b600880546001600160a01b0319166001600160a01b0392909216919091179055506001600a55610766565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6001600160a01b0382166103d55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060035f8282546103e69190610753565b90915550506001600160a01b0382165f9081526001602052604081208054839290610412908490610753565b90915550506007546001600160a01b0390811690831603610462576006546040518281526001600160a01b03909116905f905f80516020611c258339815191529060200160405180910390a35050565b6040518181526001600160a01b038316905f905f80516020611c258339815191529060200160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156104e7578085048111156104cb576104cb610498565b60018416156104d957908102905b60019390931c9280026104b0565b935093915050565b5f826104fd5750600161058b565b8161050957505f61058b565b816001811461051f576002811461052957610545565b600191505061058b565b60ff84111561053a5761053a610498565b50506001821b61058b565b5060208310610133831016604e8410600b8410161715610568575081810a61058b565b6105745f1984846104ac565b805f190482111561058757610587610498565b0290505b92915050565b5f61059f60ff8416836104ef565b9392505050565b808202811582820484141761058b5761058b610498565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105e557607f821691505b60208210810361060357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561049357805f5260205f20601f840160051c8101602085101561062e5750805b601f840160051c820191505b8181101561064d575f815560010161063a565b5050505050565b81516001600160401b0381111561066d5761066d6105bd565b6106818161067b84546105d1565b84610609565b6020601f8211600181146106b3575f831561069c5750848201515b5f19600385901b1c1916600184901b17845561064d565b5f84815260208120601f198516915b828110156106e257878501518255602094850194600190920191016106c2565b50848210156106ff57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8261072857634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561073d575f80fd5b81516001600160a01b038116811461059f575f80fd5b8082018082111561058b5761058b610498565b60805160a05160c05161148761079e5f395f81816102b30152610d6b01525f818161030f0152610d1a01525f61043601526114875ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c806370a0823111610109578063a9059cbb1161009e578063d5abeb011161006e578063d5abeb0114610431578063dd62ed3e14610458578063f2fde38b14610490578063f887ea40146104a3575f80fd5b8063a9059cbb146103e1578063b48b7f77146103f4578063beae207f14610416578063c9567bf914610429575f80fd5b806396784f75116100d957806396784f75146103a8578063985bdfd114610331578063a457c2d7146103bb578063a8aa1b31146103ce575f80fd5b806370a0823114610360578063715018a6146103885780638da5cb5b1461039057806395d89b41146103a0575f80fd5b806327c8f8351161017f5780634022b75e1161014f5780634022b75e146102f7578063470624021461030a5780634c255c97146103315780634ca64b3a1461034d575f80fd5b806327c8f835146102835780632b14ca56146102ae578063313ce567146102d557806339509351146102e4575f80fd5b806318160ddd116101ba57806318160ddd1461023557806323b872dd146102475780632433cc801461025a57806325fa0b981461026f575f80fd5b806306fdde03146101e0578063095ea7b3146101fe578063158ef93e14610221575b5f80fd5b6101e86104b6565b6040516101f591906110dd565b60405180910390f35b61021161020c36600461112d565b610546565b60405190151581526020016101f5565b60075461021190600160a01b900460ff1681565b6003545b6040519081526020016101f5565b610211610255366004611155565b61055c565b61026d61026836600461118f565b610609565b005b60075461021190600160a81b900460ff1681565b600954610296906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b6102397f000000000000000000000000000000000000000000000000000000000000000081565b604051601281526020016101f5565b6102116102f236600461112d565b61065c565b61026d610305366004611210565b610697565b6102397f000000000000000000000000000000000000000000000000000000000000000081565b61033a61271081565b60405161ffff90911681526020016101f5565b61026d61035b366004611290565b610752565b61023961036e3660046112d8565b6001600160a01b03165f9081526001602052604090205490565b61026d61079d565b5f546001600160a01b0316610296565b6101e86107d1565b61026d6103b6366004611210565b6107e0565b6102116103c936600461112d565b610893565b600854610296906001600160a01b031681565b6102116103ef36600461112d565b61092b565b6102116104023660046112d8565b600b6020525f908152604090205460ff1681565b61026d6104243660046112f8565b610937565b61026d610965565b6102397f000000000000000000000000000000000000000000000000000000000000000081565b61023961046636600461130f565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b61026d61049e3660046112d8565b6109fd565b600c54610296906001600160a01b031681565b6060600480546104c590611340565b80601f01602080910402602001604051908101604052809291908181526020018280546104f190611340565b801561053c5780601f106105135761010080835404028352916020019161053c565b820191905f5260205f20905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b5f610552338484610a97565b5060015b92915050565b5f610568848484610bba565b6001600160a01b0384165f908152600260209081526040808320338452909152902054828110156105f15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105fe8533858403610a97565b506001949350505050565b5f546001600160a01b031633146106325760405162461bcd60e51b81526004016105e890611378565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916105529185906106929086906113c1565b610a97565b5f546001600160a01b031633146106c05760405162461bcd60e51b81526004016105e890611378565b5f5b8381101561074a578484828181106106dc576106dc6113d4565b90506020020160208101906106f191906112d8565b6001600160a01b0316866001600160a01b03165f80516020611432833981519152858585818110610724576107246113d4565b9050602002013560405161073a91815260200190565b60405180910390a36001016106c2565b505050505050565b335f5b838110156107965761078e82868684818110610773576107736113d4565b905060200201602081019061078891906112d8565b85610bba565b600101610755565b5050505050565b5f546001600160a01b031633146107c65760405162461bcd60e51b81526004016105e890611378565b6107cf5f610e46565b565b6060600580546104c590611340565b5f546001600160a01b031633146108095760405162461bcd60e51b81526004016105e890611378565b5f5b8381101561074a57848482818110610825576108256113d4565b905060200201602081019061083a91906112d8565b6001600160a01b0316866001600160a01b03165f8051602061143283398151915285858581811061086d5761086d6113d4565b9050602002013560405161088391815260200190565b60405180910390a360010161080b565b335f9081526002602090815260408083206001600160a01b0386168452909152812054828110156109145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e8565b6109213385858403610a97565b5060019392505050565b5f610552338484610bba565b5f546001600160a01b031633146109605760405162461bcd60e51b81526004016105e890611378565b600a55565b5f546001600160a01b0316331461098e5760405162461bcd60e51b81526004016105e890611378565b600754600160a81b900460ff16156109e85760405162461bcd60e51b815260206004820152601c60248201527f436f6e74726163743a2054726164696e67206973206f70656e6564210000000060448201526064016105e8565b6007805460ff60a81b1916600160a81b179055565b5f546001600160a01b03163314610a265760405162461bcd60e51b81526004016105e890611378565b6001600160a01b038116610a8b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e8565b610a9481610e46565b50565b6001600160a01b038316610af95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e8565b6001600160a01b038216610b5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e8565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600754600160a01b900460ff161515600114610c185760405162461bcd60e51b815260206004820152601a60248201527f436f6e74726163743a206e6f7420696e697469616c697a65642100000000000060448201526064016105e8565b600754600160a01b900460ff1615156001148015610c405750600754600160a81b900460ff16155b15610cb8575f546001600160a01b0384811691161480610c6c57505f546001600160a01b038381169116145b610cb85760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a2074726164696e67206973206e6f74207374617274656460448201526064016105e8565b60085481906001600160a01b031615801590610ce157505f546001600160a01b03858116911614155b8015610cfa57505f546001600160a01b03848116911614155b15610e35576008545f906001600160a01b0390811690861603610d3a57507f00000000000000000000000000000000000000000000000000000000000000005b6008546001600160a01b0390811690851603610d9d57506001600160a01b0384165f908152600b60205260409020547f00000000000000000000000000000000000000000000000000000000000000009060ff16610d9d57610d9d600a54610e95565b6001600160a01b0385165f908152600b602052604090205460ff16151560011480610de457506001600160a01b0384165f908152600b602052604090205460ff1615156001145b15610dec57505f5b8015610e33575f612710610e0083866113e8565b610e0a91906113ff565b9050610e16818561141e565b600954909350610e319087906001600160a01b031683610ea1565b505b505b610e40848483610ea1565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803a1115610a94575f80fd5b6001600160a01b038316610f055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e8565b6001600160a01b038216610f675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e8565b6001600160a01b0383165f9081526001602052604090205481811015610fde5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105e8565b6001600160a01b038085165f908152600160205260408082208585039055918516815290812080548492906110149084906113c1565b90915550506007546001600160a01b0390811690851603611066576006546040518381526001600160a01b038581169216905f80516020611432833981519152906020015b60405180910390a3610e40565b6007546001600160a01b03908116908416036110ab576006546040518381526001600160a01b03918216918616905f8051602061143283398151915290602001611059565b826001600160a01b0316846001600160a01b03165f805160206114328339815191528460405161105991815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611128575f80fd5b919050565b5f806040838503121561113e575f80fd5b61114783611112565b946020939093013593505050565b5f805f60608486031215611167575f80fd5b61117084611112565b925061117e60208501611112565b929592945050506040919091013590565b5f80604083850312156111a0575f80fd5b6111a983611112565b9150602083013580151581146111bd575f80fd5b809150509250929050565b5f8083601f8401126111d8575f80fd5b50813567ffffffffffffffff8111156111ef575f80fd5b6020830191508360208260051b8501011115611209575f80fd5b9250929050565b5f805f805f60608688031215611224575f80fd5b61122d86611112565b9450602086013567ffffffffffffffff811115611248575f80fd5b611254888289016111c8565b909550935050604086013567ffffffffffffffff811115611273575f80fd5b61127f888289016111c8565b969995985093965092949392505050565b5f805f604084860312156112a2575f80fd5b833567ffffffffffffffff8111156112b8575f80fd5b6112c4868287016111c8565b909790965060209590950135949350505050565b5f602082840312156112e8575f80fd5b6112f182611112565b9392505050565b5f60208284031215611308575f80fd5b5035919050565b5f8060408385031215611320575f80fd5b61132983611112565b915061133760208401611112565b90509250929050565b600181811c9082168061135457607f821691505b60208210810361137257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610556576105566113ad565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610556576105566113ad565b5f8261141957634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610556576105566113ad56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220129d97f645a99fbcd312e8f84545d159e5c1a4f189b99b4a8f15f6704ce360cb64736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef