0x6080604052600436106102cd5760003560e01c8063893d20e811610175578063ba876bb9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610928578063f887ea4014610948578063fe575a8714610968578063fe9fbb801461099857600080fd5b8063f0b37c04146108c8578063f2fde38b146108e8578063f74c9f471461090857600080fd5b8063ba876bb9146107ec578063c04a78ad1461080c578063d00efb2f1461082c578063dd62ed3e14610842578063df20fd4914610888578063e1d5584c146108a857600080fd5b80639a7a23d61161012e5780639a7a23d61461071c578063a8aa1b311461073c578063a8df7fb01461075c578063a9059cbb1461077c578063b62496f51461079c578063b6a5d7de146107cc57600080fd5b8063893d20e81461062c5780638b42507f1461065e5780638cd4426d1461068e5780638e2eee84146106ae5780638f02bb5b146106ce57806395d89b41146106ee57600080fd5b8063364333f4116102345780635c85974f116101ed5780636c0a24eb116101c75780636c0a24eb146105a95780636ddd1713146105bf57806370a08231146105e05780637d1db4a51461061657600080fd5b80635c85974f146105495780635d0044ca14610569578063658d4b7f1461058957600080fd5b8063364333f41461048e5780633f4218e0146104a357806345434032146104d35780634ada218b146104f3578063571ac8b0146105145780635b895c291461053457600080fd5b806318160ddd1161028657806318160ddd146103d957806318abb635146103ee57806323b872dd1461040e5780632b112e491461042e5780632f54bf6e14610443578063313ce5671461047257600080fd5b806301f59d16146102d95780630445b6671461030257806306fdde0314610318578063095ea7b3146103575780630bd11f8a146103875780630d295980146103b757600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef601e5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506102ef60295481565b34801561032457600080fd5b5060408051808201909152600d81526c5261726520417065706520594360981b60208201525b6040516102f99190612d16565b34801561036357600080fd5b50610377610372366004612b29565b6109b8565b60405190151581526020016102f9565b34801561039357600080fd5b506103776103a23660046129f3565b600f6020526000908152604090205460ff1681565b3480156103c357600080fd5b506103d76103d2366004612bdb565b610a25565b005b3480156103e557600080fd5b506005546102ef565b3480156103fa57600080fd5b506103d7610409366004612a49565b610b08565b34801561041a57600080fd5b50610377610429366004612aba565b610c86565b34801561043a57600080fd5b506102ef610d48565b34801561044f57600080fd5b5061037761045e3660046129f3565b6000546001600160a01b0391821691161490565b34801561047e57600080fd5b50604051601281526020016102f9565b34801561049a57600080fd5b506103d7610d9a565b3480156104af57600080fd5b506103776104be3660046129f3565b600d6020526000908152604090205460ff1681565b3480156104df57600080fd5b506103d76104ee366004612afb565b610dd6565b3480156104ff57600080fd5b5060285461037790600160a01b900460ff1681565b34801561052057600080fd5b5061037761052f3660046129f3565b610e5f565b34801561054057600080fd5b506103d7610e6d565b34801561055557600080fd5b506103d7610564366004612c33565b610e9c565b34801561057557600080fd5b506103d7610584366004612c33565b610f4c565b34801561059557600080fd5b506103d76105a4366004612afb565b610ffc565b3480156105b557600080fd5b506102ef60075481565b3480156105cb57600080fd5b5060285461037790600160a81b900460ff1681565b3480156105ec57600080fd5b506102ef6105fb3660046129f3565b6001600160a01b031660009081526008602052604090205490565b34801561062257600080fd5b506102ef60065481565b34801561063857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f9565b34801561066a57600080fd5b506103776106793660046129f3565b600e6020526000908152604090205460ff1681565b34801561069a57600080fd5b506103776106a9366004612b29565b61107d565b3480156106ba57600080fd5b506103d76106c9366004612b55565b611105565b3480156106da57600080fd5b506103d76106e9366004612c33565b611238565b3480156106fa57600080fd5b50604080518082019091526005815264415045504560d81b602082015261034a565b34801561072857600080fd5b506103d7610737366004612afb565b6112b3565b34801561074857600080fd5b50602854610646906001600160a01b031681565b34801561076857600080fd5b506103d7610777366004612c33565b611543565b34801561078857600080fd5b50610377610797366004612b29565b6115e2565b3480156107a857600080fd5b506103776107b73660046129f3565b600b6020526000908152604090205460ff1681565b3480156107d857600080fd5b506103d76107e73660046129f3565b6115ef565b3480156107f857600080fd5b506103d7610807366004612c7a565b611640565b34801561081857600080fd5b506103d7610827366004612afb565b611719565b34801561083857600080fd5b506102ef60115481565b34801561084e57600080fd5b506102ef61085d366004612a10565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561089457600080fd5b506103d76108a3366004612c15565b61179a565b3480156108b457600080fd5b506106466108c3366004612c33565b611817565b3480156108d457600080fd5b506103d76108e33660046129f3565b611841565b3480156108f457600080fd5b506103d76109033660046129f3565b61188c565b34801561091457600080fd5b506103d7610923366004612c7a565b61191c565b34801561093457600080fd5b506103d7610943366004612afb565b611a1d565b34801561095457600080fd5b50602754610646906001600160a01b031681565b34801561097457600080fd5b506103776109833660046129f3565b600c6020526000908152604090205460ff1681565b3480156109a457600080fd5b506103776109b33660046129f3565b611a9e565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a139086815260200190565b60405180910390a35060015b92915050565b610a2e33611a9e565b610a535760405162461bcd60e51b8152600401610a4a90612df8565b60405180910390fd5b602854600160a01b900460ff1615610aa25760405162461bcd60e51b815260206004820152601260248201527143616e27742073746f702074726164696e6760701b6044820152606401610a4a565b6028805460ff60a01b1916600160a01b83151502179055436011819055601054610acc9190611abc565b60125560405181151581527f316709d79ee7f0c74ca101f383d03c0651393c02be15433064ce7707ee82c9df906020015b60405180910390a150565b610b1133611a9e565b610b2d5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b03851615801590610b4d57506001600160a01b03841615155b8015610b6157506001600160a01b03831615155b8015610b7557506001600160a01b03821615155b8015610b8957506001600160a01b03811615155b610bd55760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e0000000000000000006044820152606401610a4a565b602280546001600160a01b038781166001600160a01b031992831681179093556023805488831690841681179091556024805488841690851681179091556025805488851690861681179091556026805494881694909516841790945560408051958652602086019290925290840152606083019190915260808201527fcbc6e694f9cedabb09aeff1b1031513e7c8738cedf6395c1cd6d08760e28bc6e9060a00160405180910390a15050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d33576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d0e918490611b1b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d3e848484611b55565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610d95906003546001600160a01b0316600090815260086020526040902054610d8f906005549061200c565b9061200c565b905090565b6025546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610dd3573d6000803e3d6000fd5b50565b610ddf33611a9e565b610dfb5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600c6020908152604091829020805460ff19168515159081179091558251938452908301527ffa491a64c37cae03f614a1a2cac67ee30dd227958ca171908cf843cf9692fdda91015b60405180910390a15050565b6000610a1f826000196109b8565b610e7633611a9e565b610e925760405162461bcd60e51b8152600401610a4a90612df8565b610e9a61204e565b565b610ea533611a9e565b610ec15760405162461bcd60e51b8152600401610a4a90612df8565b600554610ed090612710612451565b8111610f175760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a4a565b60068190556040518181527f510e4637d257d903a794aca1c3cac80d12bf71d2409f8f975ff245c61845732e90602001610afd565b610f5533611a9e565b610f715760405162461bcd60e51b8152600401610a4a90612df8565b600554610f8090612710612451565b8111610fc75760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a4a565b60078190556040518181527fd3028a4dc8f3e7c2bbc9b4259751380fe21f44274195bcf63ebaaac4c17cbc8b90602001610afd565b61100533611a9e565b6110215760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610e53565b60255460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb90604401602060405180830381600087803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d419190612bf8565b61110e33611a9e565b61112a5760405162461bcd60e51b8152600401610a4a90612df8565b60c882106111885760405162461bcd60e51b815260206004820152602560248201527f43616e27742075706461746520746f6f206d616e792077616c6c657473206174604482015264206f6e636560d81b6064820152608401610a4a565b60005b828110156111f75781600c60008686858181106111aa576111aa612f45565b90506020020160208101906111bf91906129f3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111f081612efe565b905061118b565b507f11d4d128e8f89ae2e8815168b9eba079dd6668b75f1e3a9dd96ac6192a7c4dcb83838360405161122b93929190612cbd565b60405180910390a1505050565b61124133611a9e565b61125d5760405162461bcd60e51b8152600401610a4a90612df8565b601e54811061127e5760405162461bcd60e51b8152600401610a4a90612d96565b601d8190556040518181527f0496ed1e61eb69727f9659a8e859288db4758ffb1f744d1c1424634f90a257f490602001610afd565b6112bc33611a9e565b6112d85760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000908152600b602052604090205460ff161515811515141561133b5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a4a565b6001600160a01b0382166000908152600b60205260409020805460ff191682158015919091179091556113b857600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416179055611507565b600a546001106113fc5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401610a4a565b60005b600a5481101561150557826001600160a01b0316600a828154811061142657611426612f45565b6000918252602090912001546001600160a01b031614156114f357600a805461145190600190612ee7565b8154811061146157611461612f45565b600091825260209091200154600a80546001600160a01b03909216918390811061148d5761148d612f45565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806114cc576114cc612f2f565b600082815260209020810160001990810180546001600160a01b0319169055019055611505565b806114fd81612efe565b9150506113ff565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b61154c33611a9e565b6115685760405162461bcd60e51b8152600401610a4a90612df8565b603281106115ad5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b6044820152606401610a4a565b60108190556040518181527f80838eb3341767dec8bc142ca41047631270a18952c3b835d5ca0d1c3608a2cb90602001610afd565b6000610d41338484611b55565b6000546001600160a01b031633146116195760405162461bcd60e51b8152600401610a4a90612dd8565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61164933611a9e565b6116655760405162461bcd60e51b8152600401610a4a90612df8565b60188690556019859055601a849055601b839055601c82905561169682611690858188818c8c611abc565b90611abc565b60208190556021829055601e5410156116c15760405162461bcd60e51b8152600401610a4a90612d96565b604080518781526020810187905290810185905260608101849052608081018390527ffdd7c66a68b70fa92b44bc177e5154fe4ae8a19e8fc2920396a5ea2db9a783329060a0015b60405180910390a1505050505050565b61172233611a9e565b61173e5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f6ed6ea20fcc829cc51f14b3190919b5563b8ffaec1eb69b4070c7a539f42f35b9101610e53565b6117a333611a9e565b6117bf5760405162461bcd60e51b8152600401610a4a90612df8565b6028805460ff60a81b1916600160a81b84151590810291909117909155602982905560408051918252602082018390527fbb6a036f87bc4903f9d59c9f83a8733a8e8004a0a17b29bf1a817b4fe6bcf6bd9101610e53565b600a818154811061182757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461186b5760405162461bcd60e51b8152600401610a4a90612dd8565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146118b65760405162461bcd60e51b8152600401610a4a90612dd8565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610afd565b61192533611a9e565b6119415760405162461bcd60e51b8152600401610a4a90612df8565b6013869055601485905560158490556016839055601782905561196c82611690858188818c8c611abc565b601f8190556021829055601e5410156119d15760405162461bcd60e51b815260206004820152602160248201527f466565732063616e6e6f7420626520686967686572207468616e204d617866656044820152606560f81b6064820152608401610a4a565b604080518781526020810187905290810185905260608101849052608081018390527f0ebc4c8adc990f93864d49e46d4543ac8e892fd73ba3ebe0b1794d0f6929f8169060a001611709565b611a2633611a9e565b611a425760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f62ff8320fc089e815ec009a710ef61f8c650c1666630c8fc091aee0f66474f669101610e53565b6001600160a01b031660009081526001602052604090205460ff1690565b600080611ac98385612e8e565b905083811015610d415760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a4a565b60008184841115611b3f5760405162461bcd60e51b8152600401610a4a9190612d16565b506000611b4c8486612ee7565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff16158015611b9757506001600160a01b0383166000908152600c602052604090205460ff16155b611bd15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a4a565b602a5460ff1615611bee57611be7848484612493565b9050610d41565b6001600160a01b0384166000908152600d602052604090205460ff16158015611c3057506001600160a01b0383166000908152600d602052604090205460ff16155b15611c8557602854600160a01b900460ff16611c855760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a4a565b611c8d612567565b15611c9a57611c9a61204e565b6001600160a01b0384166000908152600b6020526040902054829060ff1615611dcc576001600160a01b0384166000908152600d602052604090205460ff16611dc7576007546001600160a01b038516600090815260086020526040902054611d039085611abc565b111580611d2857506001600160a01b0384166000908152600f602052604090205460ff165b611d745760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a4a565b60065483111580611d9d57506001600160a01b0384166000908152600e602052604090205460ff165b611db95760405162461bcd60e51b8152600401610a4a90612d6b565b611dc48585856125bf565b90505b611f65565b6001600160a01b0384166000908152600b602052604090205460ff1615611e5c576001600160a01b0385166000908152600d602052604090205460ff16611dc75760065483111580611e3657506001600160a01b0385166000908152600e602052604090205460ff165b611e525760405162461bcd60e51b8152600401610a4a90612d6b565b611dc48584612768565b6001600160a01b0385166000908152600d602052604090205460ff16611f65576007546001600160a01b038516600090815260086020526040902054611ea29085611abc565b111580611ec757506001600160a01b0384166000908152600f602052604090205460ff165b611f135760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a4a565b60065483111580611f3c57506001600160a01b0385166000908152600e602052604090205460ff165b611f585760405162461bcd60e51b8152600401610a4a90612d6b565b611f6285846128a9565b90505b6001600160a01b038516600090815260086020526040902054611f88908461200c565b6001600160a01b038087166000908152600860205260408082209390935590861681522054611fb79082611abc565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612f7f83398151915290611ff99085815260200190565b60405180910390a3506001949350505050565b6000610d4183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b1b565b602a805460ff1916600117905560185460135460009161206e9190611abc565b90506000612095601c54610d8f601754610d8f602054601f54611abc90919063ffffffff16565b306000908152600860205260408120549192506120bf60026120b985818689612946565b90612451565b905060006120cd838361200c565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061210757612107612f45565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061213857612138612f45565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac9479061217e908690600090869030904290600401612e1d565b600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b5050505060006121c5834761200c90919063ffffffff16565b905060006121de6121d78a6002612451565b899061200c565b9050600061220c60026120b9846120b9612205601854601354611abc90919063ffffffff16565b8890612946565b90506000612235836120b961222e601954601454611abc90919063ffffffff16565b8790612946565b90506000612257846120b9612205601a54601554611abc90919063ffffffff16565b90506000612280856120b9612279601b54601654611abc90919063ffffffff16565b8990612946565b6023546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146122d2576040519150601f19603f3d011682016040523d82523d6000602084013e6122d7565b606091505b50506024546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612327576040519150601f19603f3d011682016040523d82523d6000602084013e61232c565b606091505b50506025546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461237c576040519150601f19603f3d011682016040523d82523d6000602084013e612381565b606091505b5060009250508b1590506124375760275460225460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b1580156123fa57600080fd5b505af115801561240e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124339190612c4c565b5050505b5050602a805460ff19169055505050505050505050505050565b6000610d4183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546124e4918490611b1b565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125139083611abc565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020612f7f833981519152906125559086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff1615801561258a5750602a5460ff16155b801561259f5750602854600160a81b900460ff165b8015610d9557505060295430600090815260086020526040902054101590565b6000601254431015612620576028546001600160a01b038481169116148015906125f757506027546001600160a01b03848116911614155b15612620576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60006126496021546120b9612642601754601f5461200c90919063ffffffff16565b8690612946565b905060006126686021546120b96017548761294690919063ffffffff16565b905060006126768383611abc565b306000908152600860205260409020549091506126939084611abc565b30600081815260086020526040908190209290925590516001600160a01b03891690600080516020612f7f833981519152906126d29087815260200190565b60405180910390a38115612753576026546001600160a01b03166000908152600860205260409020546127059083611abc565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908a1691600080516020612f7f833981519152910160405180910390a35b61275d858261200c565b979650505050505050565b60008061278b6021546120b9612642601c5460205461200c90919063ffffffff16565b905060006127aa6021546120b9601c548761294690919063ffffffff16565b905060006127b88383611abc565b306000908152600860205260409020549091506127d59084611abc565b30600081815260086020526040908190209290925590516001600160a01b03881690600080516020612f7f833981519152906128149087815260200190565b60405180910390a38115612895576026546001600160a01b03166000908152600860205260409020546128479083611abc565b602680546001600160a01b0390811660009081526008602090815260409182902094909455915491518581529181169290891691600080516020612f7f833981519152910160405180910390a35b61289f858261200c565b9695505050505050565b601d54601254600091904310156128be575060635b6021546000906128d2906120b98685612946565b9050801561293c57306000908152600860205260409020546128f49082611abc565b30600081815260086020526040908190209290925590516001600160a01b03871690600080516020612f7f833981519152906129339085815260200190565b60405180910390a35b611b4c848261200c565b60008261295557506000610a1f565b60006129618385612ec8565b90508261296e8583612ea6565b14610d415760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a4a565b600081836129e65760405162461bcd60e51b8152600401610a4a9190612d16565b506000611b4c8486612ea6565b600060208284031215612a0557600080fd5b8135610d4181612f5b565b60008060408385031215612a2357600080fd5b8235612a2e81612f5b565b91506020830135612a3e81612f5b565b809150509250929050565b600080600080600060a08688031215612a6157600080fd5b8535612a6c81612f5b565b94506020860135612a7c81612f5b565b93506040860135612a8c81612f5b565b92506060860135612a9c81612f5b565b91506080860135612aac81612f5b565b809150509295509295909350565b600080600060608486031215612acf57600080fd5b8335612ada81612f5b565b92506020840135612aea81612f5b565b929592945050506040919091013590565b60008060408385031215612b0e57600080fd5b8235612b1981612f5b565b91506020830135612a3e81612f70565b60008060408385031215612b3c57600080fd5b8235612b4781612f5b565b946020939093013593505050565b600080600060408486031215612b6a57600080fd5b833567ffffffffffffffff80821115612b8257600080fd5b818601915086601f830112612b9657600080fd5b813581811115612ba557600080fd5b8760208260051b8501011115612bba57600080fd5b60209283019550935050840135612bd081612f70565b809150509250925092565b600060208284031215612bed57600080fd5b8135610d4181612f70565b600060208284031215612c0a57600080fd5b8151610d4181612f70565b60008060408385031215612c2857600080fd5b8235612b4781612f70565b600060208284031215612c4557600080fd5b5035919050565b600080600060608486031215612c6157600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612c9357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6040808252810183905260008460608301825b86811015612d00578235612ce381612f5b565b6001600160a01b0316825260209283019290910190600101612cd0565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015612d4357858101830151858201604001528201612d27565b81811115612d55576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526022908201527f466565732063616e6e6f7420626520686967686572207468616e204d61786665604082015261652560f01b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e6d5784516001600160a01b031683529383019391830191600101612e48565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ea157612ea1612f19565b500190565b600082612ec357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612ee257612ee2612f19565b500290565b600082821015612ef957612ef9612f19565b500390565b6000600019821415612f1257612f12612f19565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610dd357600080fd5b8015158114610dd357600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f66d47d3bc9987613e5bb55f0a066ba1f5719c7e927e6548f4745e4de136d53e64736f6c63430008070033
0x6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326012600a620008c3565b6200004290633b9aca006200098f565b600555606460055460016200005891906200098f565b62000064919062000857565b600655606460055460016200007a91906200098f565b62000086919062000857565b600755600360105560036013556003601455600060155560006016556000601755600360185560036019556000601a556000601b556000601c556000601d55600a601e5562000111601754620000fd601654620000fd601554620000fd601454601354620004cd60201b62001abc1790919060201c565b620004cd60201b62001abc1790919060201c565b601f5562000147601c54620000fd601b54620000fd601a54620000fd601954601854620004cd60201b62001abc1790919060201c565b6020556064602155602280546001600160a01b03199081163390811790925560238054821683179055602480548216831790556025805482169092179091556026805490911661dead1790556028805461ffff60a01b1916600160a81b1790556005546103e890620001bb9060026200098f565b620001c7919062000857565b602955348015620001d757600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560278054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c46489260048083019392829003018186803b1580156200025957600080fd5b505afa1580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000294919062000811565b600280546001600160a01b0319166001600160a01b039283161790556027546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620002ee57600080fd5b505afa15801562000303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000329919062000811565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200037657600080fd5b505af11580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b1919062000811565b602880546001600160a01b0319166001600160a01b03929092169182179055620003dd9060016200053d565b3060008181526009602090815260408083206027546001600160a01b039081168552908352818420600019905533808552600d8085528386208054600160ff199182168117909255600e8088528689208054831684179055600f808952878a2080548416851790559989529287528588208054821683179055918652848720805483168217905596855283862080548216881790556028549092168552828520805490921690951790556005548484526008835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000a2b565b600080620004dc83856200083c565b905083811015620005345760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b3360009081526001602052604090205460ff166200058c5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b60448201526064016200052b565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415620005f15760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016200052b565b6001600160a01b0382166000908152600b60205260409020805460ff191682158015919091179091556200067057600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416179055620007d5565b600a54600110620006b65760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b60448201526064016200052b565b60005b600a54811015620007d357826001600160a01b0316600a8281548110620006e457620006e462000a15565b6000918252602090912001546001600160a01b03161415620007be57600a80546200071290600190620009b1565b8154811062000725576200072562000a15565b600091825260209091200154600a80546001600160a01b03909216918390811062000754576200075462000a15565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a805480620007965762000796620009ff565b600082815260209020810160001990810180546001600160a01b0319169055019055620007d3565b80620007ca81620009cb565b915050620006b9565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000602082840312156200082457600080fd5b81516001600160a01b03811681146200053457600080fd5b60008219821115620008525762000852620009e9565b500190565b6000826200087557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620008bb5781600019048211156200089f576200089f620009e9565b80851615620008ad57918102915b93841c93908002906200087f565b509250929050565b6000620008d460ff841683620008db565b9392505050565b600082620008ec5750600162000537565b81620008fb5750600062000537565b81600181146200091457600281146200091f576200093f565b600191505062000537565b60ff841115620009335762000933620009e9565b50506001821b62000537565b5060208310610133831016604e8410600b841016171562000964575081810a62000537565b6200097083836200087a565b8060001904821115620009875762000987620009e9565b029392505050565b6000816000190483118215151615620009ac57620009ac620009e9565b500290565b600082821015620009c657620009c6620009e9565b500390565b6000600019821415620009e257620009e2620009e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b612fd48062000a3b6000396000f3fe6080604052600436106102cd5760003560e01c8063893d20e811610175578063ba876bb9116100dc578063f0b37c0411610095578063f84ba65d1161006f578063f84ba65d14610928578063f887ea4014610948578063fe575a8714610968578063fe9fbb801461099857600080fd5b8063f0b37c04146108c8578063f2fde38b146108e8578063f74c9f471461090857600080fd5b8063ba876bb9146107ec578063c04a78ad1461080c578063d00efb2f1461082c578063dd62ed3e14610842578063df20fd4914610888578063e1d5584c146108a857600080fd5b80639a7a23d61161012e5780639a7a23d61461071c578063a8aa1b311461073c578063a8df7fb01461075c578063a9059cbb1461077c578063b62496f51461079c578063b6a5d7de146107cc57600080fd5b8063893d20e81461062c5780638b42507f1461065e5780638cd4426d1461068e5780638e2eee84146106ae5780638f02bb5b146106ce57806395d89b41146106ee57600080fd5b8063364333f4116102345780635c85974f116101ed5780636c0a24eb116101c75780636c0a24eb146105a95780636ddd1713146105bf57806370a08231146105e05780637d1db4a51461061657600080fd5b80635c85974f146105495780635d0044ca14610569578063658d4b7f1461058957600080fd5b8063364333f41461048e5780633f4218e0146104a357806345434032146104d35780634ada218b146104f3578063571ac8b0146105145780635b895c291461053457600080fd5b806318160ddd1161028657806318160ddd146103d957806318abb635146103ee57806323b872dd1461040e5780632b112e491461042e5780632f54bf6e14610443578063313ce5671461047257600080fd5b806301f59d16146102d95780630445b6671461030257806306fdde0314610318578063095ea7b3146103575780630bd11f8a146103875780630d295980146103b757600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef601e5481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b506102ef60295481565b34801561032457600080fd5b5060408051808201909152600d81526c5261726520417065706520594360981b60208201525b6040516102f99190612d16565b34801561036357600080fd5b50610377610372366004612b29565b6109b8565b60405190151581526020016102f9565b34801561039357600080fd5b506103776103a23660046129f3565b600f6020526000908152604090205460ff1681565b3480156103c357600080fd5b506103d76103d2366004612bdb565b610a25565b005b3480156103e557600080fd5b506005546102ef565b3480156103fa57600080fd5b506103d7610409366004612a49565b610b08565b34801561041a57600080fd5b50610377610429366004612aba565b610c86565b34801561043a57600080fd5b506102ef610d48565b34801561044f57600080fd5b5061037761045e3660046129f3565b6000546001600160a01b0391821691161490565b34801561047e57600080fd5b50604051601281526020016102f9565b34801561049a57600080fd5b506103d7610d9a565b3480156104af57600080fd5b506103776104be3660046129f3565b600d6020526000908152604090205460ff1681565b3480156104df57600080fd5b506103d76104ee366004612afb565b610dd6565b3480156104ff57600080fd5b5060285461037790600160a01b900460ff1681565b34801561052057600080fd5b5061037761052f3660046129f3565b610e5f565b34801561054057600080fd5b506103d7610e6d565b34801561055557600080fd5b506103d7610564366004612c33565b610e9c565b34801561057557600080fd5b506103d7610584366004612c33565b610f4c565b34801561059557600080fd5b506103d76105a4366004612afb565b610ffc565b3480156105b557600080fd5b506102ef60075481565b3480156105cb57600080fd5b5060285461037790600160a81b900460ff1681565b3480156105ec57600080fd5b506102ef6105fb3660046129f3565b6001600160a01b031660009081526008602052604090205490565b34801561062257600080fd5b506102ef60065481565b34801561063857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f9565b34801561066a57600080fd5b506103776106793660046129f3565b600e6020526000908152604090205460ff1681565b34801561069a57600080fd5b506103776106a9366004612b29565b61107d565b3480156106ba57600080fd5b506103d76106c9366004612b55565b611105565b3480156106da57600080fd5b506103d76106e9366004612c33565b611238565b3480156106fa57600080fd5b50604080518082019091526005815264415045504560d81b602082015261034a565b34801561072857600080fd5b506103d7610737366004612afb565b6112b3565b34801561074857600080fd5b50602854610646906001600160a01b031681565b34801561076857600080fd5b506103d7610777366004612c33565b611543565b34801561078857600080fd5b50610377610797366004612b29565b6115e2565b3480156107a857600080fd5b506103776107b73660046129f3565b600b6020526000908152604090205460ff1681565b3480156107d857600080fd5b506103d76107e73660046129f3565b6115ef565b3480156107f857600080fd5b506103d7610807366004612c7a565b611640565b34801561081857600080fd5b506103d7610827366004612afb565b611719565b34801561083857600080fd5b506102ef60115481565b34801561084e57600080fd5b506102ef61085d366004612a10565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561089457600080fd5b506103d76108a3366004612c15565b61179a565b3480156108b457600080fd5b506106466108c3366004612c33565b611817565b3480156108d457600080fd5b506103d76108e33660046129f3565b611841565b3480156108f457600080fd5b506103d76109033660046129f3565b61188c565b34801561091457600080fd5b506103d7610923366004612c7a565b61191c565b34801561093457600080fd5b506103d7610943366004612afb565b611a1d565b34801561095457600080fd5b50602754610646906001600160a01b031681565b34801561097457600080fd5b506103776109833660046129f3565b600c6020526000908152604090205460ff1681565b3480156109a457600080fd5b506103776109b33660046129f3565b611a9e565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a139086815260200190565b60405180910390a35060015b92915050565b610a2e33611a9e565b610a535760405162461bcd60e51b8152600401610a4a90612df8565b60405180910390fd5b602854600160a01b900460ff1615610aa25760405162461bcd60e51b815260206004820152601260248201527143616e27742073746f702074726164696e6760701b6044820152606401610a4a565b6028805460ff60a01b1916600160a01b83151502179055436011819055601054610acc9190611abc565b60125560405181151581527f316709d79ee7f0c74ca101f383d03c0651393c02be15433064ce7707ee82c9df906020015b60405180910390a150565b610b1133611a9e565b610b2d5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b03851615801590610b4d57506001600160a01b03841615155b8015610b6157506001600160a01b03831615155b8015610b7557506001600160a01b03821615155b8015610b8957506001600160a01b03811615155b610bd55760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e0000000000000000006044820152606401610a4a565b602280546001600160a01b038781166001600160a01b031992831681179093556023805488831690841681179091556024805488841690851681179091556025805488851690861681179091556026805494881694909516841790945560408051958652602086019290925290840152606083019190915260808201527fcbc6e694f9cedabb09aeff1b1031513e7c8738cedf6395c1cd6d08760e28bc6e9060a00160405180910390a15050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610d33576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610d0e918490611b1b565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610d3e848484611b55565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610d95906003546001600160a01b0316600090815260086020526040902054610d8f906005549061200c565b9061200c565b905090565b6025546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610dd3573d6000803e3d6000fd5b50565b610ddf33611a9e565b610dfb5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600c6020908152604091829020805460ff19168515159081179091558251938452908301527ffa491a64c37cae03f614a1a2cac67ee30dd227958ca171908cf843cf9692fdda91015b60405180910390a15050565b6000610a1f826000196109b8565b610e7633611a9e565b610e925760405162461bcd60e51b8152600401610a4a90612df8565b610e9a61204e565b565b610ea533611a9e565b610ec15760405162461bcd60e51b8152600401610a4a90612df8565b600554610ed090612710612451565b8111610f175760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a4a565b60068190556040518181527f510e4637d257d903a794aca1c3cac80d12bf71d2409f8f975ff245c61845732e90602001610afd565b610f5533611a9e565b610f715760405162461bcd60e51b8152600401610a4a90612df8565b600554610f8090612710612451565b8111610fc75760405162461bcd60e51b815260206004820152601660248201527543616e27742072657374726963742074726164696e6760501b6044820152606401610a4a565b60078190556040518181527fd3028a4dc8f3e7c2bbc9b4259751380fe21f44274195bcf63ebaaac4c17cbc8b90602001610afd565b61100533611a9e565b6110215760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600d6020908152604091829020805460ff19168515159081179091558251938452908301527f2f640a0ab7e2a6d9ec57f3932923908568f2984073dcebac1b9a3db32debe91d9101610e53565b60255460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb90604401602060405180830381600087803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d419190612bf8565b61110e33611a9e565b61112a5760405162461bcd60e51b8152600401610a4a90612df8565b60c882106111885760405162461bcd60e51b815260206004820152602560248201527f43616e27742075706461746520746f6f206d616e792077616c6c657473206174604482015264206f6e636560d81b6064820152608401610a4a565b60005b828110156111f75781600c60008686858181106111aa576111aa612f45565b90506020020160208101906111bf91906129f3565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111f081612efe565b905061118b565b507f11d4d128e8f89ae2e8815168b9eba079dd6668b75f1e3a9dd96ac6192a7c4dcb83838360405161122b93929190612cbd565b60405180910390a1505050565b61124133611a9e565b61125d5760405162461bcd60e51b8152600401610a4a90612df8565b601e54811061127e5760405162461bcd60e51b8152600401610a4a90612d96565b601d8190556040518181527f0496ed1e61eb69727f9659a8e859288db4758ffb1f744d1c1424634f90a257f490602001610afd565b6112bc33611a9e565b6112d85760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000908152600b602052604090205460ff161515811515141561133b5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a4a565b6001600160a01b0382166000908152600b60205260409020805460ff191682158015919091179091556113b857600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416179055611507565b600a546001106113fc5760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b6044820152606401610a4a565b60005b600a5481101561150557826001600160a01b0316600a828154811061142657611426612f45565b6000918252602090912001546001600160a01b031614156114f357600a805461145190600190612ee7565b8154811061146157611461612f45565b600091825260209091200154600a80546001600160a01b03909216918390811061148d5761148d612f45565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600a8054806114cc576114cc612f2f565b600082815260209020810160001990810180546001600160a01b0319169055019055611505565b806114fd81612efe565b9150506113ff565b505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b61154c33611a9e565b6115685760405162461bcd60e51b8152600401610a4a90612df8565b603281106115ad5760405162461bcd60e51b8152602060048201526012602482015271086c2dc4ee840cede40e8d0c2e840d0d2ced60731b6044820152606401610a4a565b60108190556040518181527f80838eb3341767dec8bc142ca41047631270a18952c3b835d5ca0d1c3608a2cb90602001610afd565b6000610d41338484611b55565b6000546001600160a01b031633146116195760405162461bcd60e51b8152600401610a4a90612dd8565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61164933611a9e565b6116655760405162461bcd60e51b8152600401610a4a90612df8565b60188690556019859055601a849055601b839055601c82905561169682611690858188818c8c611abc565b90611abc565b60208190556021829055601e5410156116c15760405162461bcd60e51b8152600401610a4a90612d96565b604080518781526020810187905290810185905260608101849052608081018390527ffdd7c66a68b70fa92b44bc177e5154fe4ae8a19e8fc2920396a5ea2db9a783329060a0015b60405180910390a1505050505050565b61172233611a9e565b61173e5760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f6ed6ea20fcc829cc51f14b3190919b5563b8ffaec1eb69b4070c7a539f42f35b9101610e53565b6117a333611a9e565b6117bf5760405162461bcd60e51b8152600401610a4a90612df8565b6028805460ff60a81b1916600160a81b84151590810291909117909155602982905560408051918252602082018390527fbb6a036f87bc4903f9d59c9f83a8733a8e8004a0a17b29bf1a817b4fe6bcf6bd9101610e53565b600a818154811061182757600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461186b5760405162461bcd60e51b8152600401610a4a90612dd8565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146118b65760405162461bcd60e51b8152600401610a4a90612dd8565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101610afd565b61192533611a9e565b6119415760405162461bcd60e51b8152600401610a4a90612df8565b6013869055601485905560158490556016839055601782905561196c82611690858188818c8c611abc565b601f8190556021829055601e5410156119d15760405162461bcd60e51b815260206004820152602160248201527f466565732063616e6e6f7420626520686967686572207468616e204d617866656044820152606560f81b6064820152608401610a4a565b604080518781526020810187905290810185905260608101849052608081018390527f0ebc4c8adc990f93864d49e46d4543ac8e892fd73ba3ebe0b1794d0f6929f8169060a001611709565b611a2633611a9e565b611a425760405162461bcd60e51b8152600401610a4a90612df8565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f62ff8320fc089e815ec009a710ef61f8c650c1666630c8fc091aee0f66474f669101610e53565b6001600160a01b031660009081526001602052604090205460ff1690565b600080611ac98385612e8e565b905083811015610d415760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a4a565b60008184841115611b3f5760405162461bcd60e51b8152600401610a4a9190612d16565b506000611b4c8486612ee7565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff16158015611b9757506001600160a01b0383166000908152600c602052604090205460ff16155b611bd15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a4a565b602a5460ff1615611bee57611be7848484612493565b9050610d41565b6001600160a01b0384166000908152600d602052604090205460ff16158015611c3057506001600160a01b0383166000908152600d602052604090205460ff16155b15611c8557602854600160a01b900460ff16611c855760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a4a565b611c8d612567565b15611c9a57611c9a61204e565b6001600160a01b0384166000908152600b6020526040902054829060ff1615611dcc576001600160a01b0384166000908152600d602052604090205460ff16611dc7576007546001600160a01b038516600090815260086020526040902054611d039085611abc565b111580611d2857506001600160a01b0384166000908152600f602052604090205460ff165b611d745760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a4a565b60065483111580611d9d57506001600160a01b0384166000908152600e602052604090205460ff165b611db95760405162461bcd60e51b8152600401610a4a90612d6b565b611dc48585856125bf565b90505b611f65565b6001600160a01b0384166000908152600b602052604090205460ff1615611e5c576001600160a01b0385166000908152600d602052604090205460ff16611dc75760065483111580611e3657506001600160a01b0385166000908152600e602052604090205460ff165b611e525760405162461bcd60e51b8152600401610a4a90612d6b565b611dc48584612768565b6001600160a01b0385166000908152600d602052604090205460ff16611f65576007546001600160a01b038516600090815260086020526040902054611ea29085611abc565b111580611ec757506001600160a01b0384166000908152600f602052604090205460ff165b611f135760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d6974204578636565646564006044820152606401610a4a565b60065483111580611f3c57506001600160a01b0385166000908152600e602052604090205460ff165b611f585760405162461bcd60e51b8152600401610a4a90612d6b565b611f6285846128a9565b90505b6001600160a01b038516600090815260086020526040902054611f88908461200c565b6001600160a01b038087166000908152600860205260408082209390935590861681522054611fb79082611abc565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612f7f83398151915290611ff99085815260200190565b60405180910390a3506001949350505050565b6000610d4183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b1b565b602a805460ff1916600117905560185460135460009161206e9190611abc565b90506000612095601c54610d8f601754610d8f602054601f54611abc90919063ffffffff16565b306000908152600860205260408120549192506120bf60026120b985818689612946565b90612451565b905060006120cd838361200c565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061210757612107612f45565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061213857612138612f45565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac9479061217e908690600090869030904290600401612e1d565b600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b5050505060006121c5834761200c90919063ffffffff16565b905060006121de6121d78a6002612451565b899061200c565b9050600061220c60026120b9846120b9612205601854601354611abc90919063ffffffff16565b8890612946565b90506000612235836120b961222e601954601454611abc90919063ffffffff16565b8790612946565b90506000612257846120b9612205601a54601554611abc90919063ffffffff16565b90506000612280856120b9612279601b54601654611abc90919063ffffffff16565b8990612946565b6023546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146122d2576040519150601f19603f3d011682016040523d82523d6000602084013e6122d7565b606091505b50506024546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612327576040519150601f19603f3d011682016040523d82523d6000602084013e61232c565b606091505b50506025546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461237c576040519150601f19603f3d011682016040523d82523d6000602084013e612381565b606091505b5060009250508b1590506124375760275460225460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b1580156123fa57600080fd5b505af115801561240e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124339190612c4c565b5050505b5050602a805460ff19169055505050505050505050505050565b6000610d4183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c5565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546124e4918490611b1b565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546125139083611abc565b6001600160a01b038085166000818152600860205260409081902093909355915190861690600080516020612f7f833981519152906125559086815260200190565b60405180910390a35060019392505050565b336000908152600b602052604081205460ff1615801561258a5750602a5460ff16155b801561259f5750602854600160a81b900460ff165b8015610d9557505060295430600090815260086020526040902054101590565b6000601254431015612620576028546001600160a01b038481169116148015906125f757506027546001600160a01b03848116911614155b15612620576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60006126496021546120b9612642601754601f5461200c90919063ffffffff16565b8690612946565b905060006126686021546120b96017548761294690919063ffffffff16565b905060006126768383611abc565b306000908152600860205260409020549091506126939084611abc565b30600081815260086020526040908190209290925590516001600160a01b03891690600080516020612f7f833981519152906126d29087815260200190565b60405180910390a38115612753576026546001600160a01b03166000908152600860205260409020546127059083611abc565b602680546001600160a01b03908116600090815260086020908152604091829020949094559154915185815291811692908a1691600080516020612f7f833981519152910160405180910390a35b61275d858261200c565b979650505050505050565b60008061278b6021546120b9612642601c5460205461200c90919063ffffffff16565b905060006127aa6021546120b9601c548761294690919063ffffffff16565b905060006127b88383611abc565b306000908152600860205260409020549091506127d59084611abc565b30600081815260086020526040908190209290925590516001600160a01b03881690600080516020612f7f833981519152906128149087815260200190565b60405180910390a38115612895576026546001600160a01b03166000908152600860205260409020546128479083611abc565b602680546001600160a01b0390811660009081526008602090815260409182902094909455915491518581529181169290891691600080516020612f7f833981519152910160405180910390a35b61289f858261200c565b9695505050505050565b601d54601254600091904310156128be575060635b6021546000906128d2906120b98685612946565b9050801561293c57306000908152600860205260409020546128f49082611abc565b30600081815260086020526040908190209290925590516001600160a01b03871690600080516020612f7f833981519152906129339085815260200190565b60405180910390a35b611b4c848261200c565b60008261295557506000610a1f565b60006129618385612ec8565b90508261296e8583612ea6565b14610d415760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a4a565b600081836129e65760405162461bcd60e51b8152600401610a4a9190612d16565b506000611b4c8486612ea6565b600060208284031215612a0557600080fd5b8135610d4181612f5b565b60008060408385031215612a2357600080fd5b8235612a2e81612f5b565b91506020830135612a3e81612f5b565b809150509250929050565b600080600080600060a08688031215612a6157600080fd5b8535612a6c81612f5b565b94506020860135612a7c81612f5b565b93506040860135612a8c81612f5b565b92506060860135612a9c81612f5b565b91506080860135612aac81612f5b565b809150509295509295909350565b600080600060608486031215612acf57600080fd5b8335612ada81612f5b565b92506020840135612aea81612f5b565b929592945050506040919091013590565b60008060408385031215612b0e57600080fd5b8235612b1981612f5b565b91506020830135612a3e81612f70565b60008060408385031215612b3c57600080fd5b8235612b4781612f5b565b946020939093013593505050565b600080600060408486031215612b6a57600080fd5b833567ffffffffffffffff80821115612b8257600080fd5b818601915086601f830112612b9657600080fd5b813581811115612ba557600080fd5b8760208260051b8501011115612bba57600080fd5b60209283019550935050840135612bd081612f70565b809150509250925092565b600060208284031215612bed57600080fd5b8135610d4181612f70565b600060208284031215612c0a57600080fd5b8151610d4181612f70565b60008060408385031215612c2857600080fd5b8235612b4781612f70565b600060208284031215612c4557600080fd5b5035919050565b600080600060608486031215612c6157600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c08789031215612c9357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6040808252810183905260008460608301825b86811015612d00578235612ce381612f5b565b6001600160a01b0316825260209283019290910190600101612cd0565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015612d4357858101830151858201604001528201612d27565b81811115612d55576000604083870101525b50601f01601f1916929092016040019392505050565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b60208082526022908201527f466565732063616e6e6f7420626520686967686572207468616e204d61786665604082015261652560f01b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e6d5784516001600160a01b031683529383019391830191600101612e48565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612ea157612ea1612f19565b500190565b600082612ec357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612ee257612ee2612f19565b500290565b600082821015612ef957612ef9612f19565b500390565b6000600019821415612f1257612f12612f19565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610dd357600080fd5b8015158114610dd357600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f66d47d3bc9987613e5bb55f0a066ba1f5719c7e927e6548f4745e4de136d53e64736f6c63430008070033