60806040523480156200001157600080fd5b5060405180604001604052806004815260200163644d4d4d60e01b81525060405180604001604052806004815260200163644d4d4d60e01b815250600060405190808252806020026020018201604052801562000078578160200160208202803883390190505b5082516200008e90600290602086019062000296565b508151620000a490600390602085019062000296565b508051620000ba9060049060208401906200031b565b5060005b6004548110156200011a5760016005600060048481548110620000dd57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101620000be565b50604080516a22a9219b9b9baa37b5b2b760a91b8152815190819003600b0181206329965a1d60e01b82523060048301819052602483019190915260448201529051731820a4b7618bde71dce8cdc73aab6c95905fad24916329965a1d91606480830192600092919082900301818387803b1580156200019957600080fd5b505af1158015620001ae573d6000803e3d6000fd5b5050604080516922a92199182a37b5b2b760b11b8152815190819003600a0181206329965a1d60e01b82523060048301819052602483019190915260448201529051731820a4b7618bde71dce8cdc73aab6c95905fad2493506329965a1d9250606480830192600092919082900301818387803b1580156200022f57600080fd5b505af115801562000244573d6000803e3d6000fd5b5050600980546001600160a01b03191633908117909155604051909550859450600093507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09250839150a350620003c8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d957805160ff191683800117855562000309565b8280016001018555821562000309579182015b8281111562000309578251825591602001919060010190620002ec565b506200031792915062000381565b5090565b82805482825590600052602060002090810192821562000373579160200282015b828111156200037357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200033c565b5062000317929150620003a1565b6200039e91905b8082111562000317576000815560010162000388565b90565b6200039e91905b80821115620003175780546001600160a01b0319168155600101620003a8565b6123bf80620003d86000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063d95b63711161007c578063d95b6371146105c1578063dd62ed3e146105ef578063f2fde38b1461061d578063fad8b32a14610643578063fc673c4f14610669578063fe9d9303146107a75761014d565b8063715018a6146104825780638da5cb5b1461048a578063959b8c3f146104ae57806395d89b41146104d45780639bd9bbc6146104dc578063a9059cbb146105955761014d565b806323b872dd1161011557806323b872dd14610289578063313ce567146102bf57806340c10f19146102dd578063556f0dc71461030b57806362ad1b831461031357806370a082311461045c5761014d565b806306e485381461015257806306fdde03146101aa578063095ea7b31461022757806318160ddd1461026757806322f4596f14610281575b600080fd5b61015a610852565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561019657818101518382015260200161017e565b505050509050019250505060405180910390f35b6101b26108b4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ec5781810151838201526020016101d4565b50505050905090810190601f1680156102195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102536004803603604081101561023d57600080fd5b506001600160a01b03813516906020013561093e565b604080519115158252519081900360200190f35b61026f610956565b60408051918252519081900360200190f35b61026f61095c565b6102536004803603606081101561029f57600080fd5b506001600160a01b0381358116916020810135909116906040013561096c565b6102c7610ae8565b6040805160ff9092168252519081900360200190f35b610309600480360360408110156102f357600080fd5b506001600160a01b038135169060200135610aed565b005b61026f610beb565b610309600480360360a081101561032957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561036357600080fd5b82018360208201111561037557600080fd5b803590602001918460018302840111600160201b8311171561039657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103e857600080fd5b8201836020820111156103fa57600080fd5b803590602001918460018302840111600160201b8311171561041b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610bf0945050505050565b61026f6004803603602081101561047257600080fd5b50356001600160a01b0316610c4b565b610309610c66565b610492610d0f565b604080516001600160a01b039092168252519081900360200190f35b610309600480360360208110156104c457600080fd5b50356001600160a01b0316610d1e565b6101b2610e1f565b610309600480360360608110156104f257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561052157600080fd5b82018360208201111561053357600080fd5b803590602001918460018302840111600160201b8311171561055457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e80945050505050565b610253600480360360408110156105ab57600080fd5b506001600160a01b038135169060200135610e9e565b610253600480360360408110156105d757600080fd5b506001600160a01b0381358116916020013516610f70565b61026f6004803603604081101561060557600080fd5b506001600160a01b0381358116916020013516611012565b6103096004803603602081101561063357600080fd5b50356001600160a01b031661103d565b6103096004803603602081101561065957600080fd5b50356001600160a01b031661113d565b6103096004803603608081101561067f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106ae57600080fd5b8201836020820111156106c057600080fd5b803590602001918460018302840111600160201b831117156106e157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561073357600080fd5b82018360208201111561074557600080fd5b803590602001918460018302840111600160201b8311171561076657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061123e945050505050565b610309600480360360408110156107bd57600080fd5b81359190810190604081016020820135600160201b8111156107de57600080fd5b8201836020820111156107f057600080fd5b803590602001918460018302840111600160201b8311171561081157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611295945050505050565b606060048054806020026020016040519081016040528092919081815260200182805480156108aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161088c575b5050505050905090565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156108aa5780601f10610912576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161092057509395945050505050565b60003361094c8185856112b4565b5060019392505050565b60015490565b6b019d971e4fe8401e7400000081565b60006001600160a01b0383166109b35760405162461bcd60e51b81526004018080602001828103825260248152602001806122a56024913960400191505060405180910390fd5b6001600160a01b0384166109f85760405162461bcd60e51b815260040180806020018281038252602681526020018061231e6026913960400191505060405180910390fd5b6000339050610a298186868660405180602001604052806000815250604051806020016040528060008152506113a0565b610a558186868660405180602001604052806000815250604051806020016040528060008152506115e8565b610aaf8582610aaa866040518060600160405280602981526020016122f5602991396001600160a01b03808c166000908152600860209081526040808320938b1683529290522054919063ffffffff61180d16565b6112b4565b610add81868686604051806020016040528060008152506040518060200160405280600081525060006118a4565b506001949350505050565b601290565b80610b0681610afa610956565b9063ffffffff611b4416565b6b019d971e4fe8401e740000001015610b5d576040805162461bcd60e51b8152602060048201526014602482015273746f74616c537570706c79206f766572666c6f7760601b604482015290519081900360640190fd5b6009546001600160a01b03163314610bbc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610be683836040518060200160405280600081525060405180602001604052806000815250611b9e565b505050565b600190565b610bfa3386610f70565b610c355760405162461bcd60e51b815260040180806020018281038252602c8152602001806122c9602c913960400191505060405180910390fd5b610c4485858585856001611dd7565b5050505050565b6001600160a01b031660009081526020819052604090205490565b6009546001600160a01b03163314610cc5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6009546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600980546001600160a01b0319169055565b6009546001600160a01b031690565b336001600160a01b0382161415610d665760405162461bcd60e51b81526004018080602001828103825260248152602001806122136024913960400191505060405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615610db7573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610de6565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108aa5780601f10610912576101008083540402835291602001916108aa565b610be633848484604051806020016040528060008152506001611dd7565b60006001600160a01b038316610ee55760405162461bcd60e51b81526004018080602001828103825260248152602001806122a56024913960400191505060405180910390fd5b6000339050610f168182868660405180602001604052806000815250604051806020016040528060008152506113a0565b610f428182868660405180602001604052806000815250604051806020016040528060008152506115e8565b61094c81828686604051806020016040528060008152506040518060200160405280600081525060006118a4565b6000816001600160a01b0316836001600160a01b03161480610fdb57506001600160a01b03831660009081526005602052604090205460ff168015610fdb57506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061100b57506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6009546001600160a01b0316331461109c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166110e15760405162461bcd60e51b81526004018080602001828103825260268152602001806121cb6026913960400191505060405180910390fd5b6009546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163314156111855760405162461bcd60e51b81526004018080602001828103825260218152602001806122376021913960400191505060405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156111d9573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611205565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b6112483385610f70565b6112835760405162461bcd60e51b815260040180806020018281038252602c8152602001806122c9602c913960400191505060405180910390fd5b61128f84848484611ea3565b50505050565b6112b033838360405180602001604052806000815250611ea3565b5050565b6001600160a01b0383166112f95760405162461bcd60e51b815260040180806020018281038252602581526020018061215d6025913960400191505060405180910390fd5b6001600160a01b03821661133e5760405162461bcd60e51b81526004018080602001828103825260238152602001806123676023913960400191505060405180910390fd5b6001600160a01b03808416600081815260086020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6040805163555ddc6560e11b81526001600160a01b03871660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561142457600080fd5b505afa158015611438573d6000803e3d6000fd5b505050506040513d602081101561144e57600080fd5b505190506001600160a01b038116156115df57806001600160a01b03166375ab97828888888888886040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115145781810151838201526020016114fc565b50505050905090810190601f1680156115415780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561157457818101518382015260200161155c565b50505050905090810190601f1680156115a15780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b1580156115c657600080fd5b505af11580156115da573d6000803e3d6000fd5b505050505b50505050505050565b6115f48686868661128f565b611637836040518060600160405280602781526020016121a4602791396001600160a01b038816600090815260208190526040902054919063ffffffff61180d16565b6001600160a01b03808716600090815260208190526040808220939093559086168152205461166c908463ffffffff611b4416565b600080866001600160a01b03166001600160a01b0316815260200190815260200160002081905550836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561171d578181015183820152602001611705565b50505050905090810190601f16801561174a5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561177d578181015183820152602001611765565b50505050905090810190601f1680156117aa5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b6000818484111561189c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611861578181015183820152602001611849565b50505050905090810190601f16801561188e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805163555ddc6560e11b81526001600160a01b03871660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60248201529051600091731820a4b7618bde71dce8cdc73aab6c95905fad249163aabbb8ca91604480820192602092909190829003018186803b15801561192857600080fd5b505afa15801561193c573d6000803e3d6000fd5b505050506040513d602081101561195257600080fd5b505190506001600160a01b03811615611ae657806001600160a01b03166223de298989898989896040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a175781810151838201526020016119ff565b50505050905090810190601f168015611a445780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a77578181015183820152602001611a5f565b50505050905090810190601f168015611aa45780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611ac957600080fd5b505af1158015611add573d6000803e3d6000fd5b50505050611b3a565b8115611b3a57611afe866001600160a01b03166120de565b15611b3a5760405162461bcd60e51b815260040180806020018281038252604d815260200180612258604d913960600191505060405180910390fd5b5050505050505050565b60008282018381101561100b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038416611bf9576040805162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b33611c07816000878761128f565b600154611c1a908563ffffffff611b4416565b6001556001600160a01b038516600090815260208190526040902054611c46908563ffffffff611b4416565b6001600160a01b038616600090815260208190526040812091909155611c739082908787878760016118a4565b846001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611cf2578181015183820152602001611cda565b50505050905090810190601f168015611d1f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611d52578181015183820152602001611d3a565b50505050905090810190601f168015611d7f5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a36040805185815290516001600160a01b038716916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050565b6001600160a01b038616611e1c5760405162461bcd60e51b81526004018080602001828103825260228152602001806121826022913960400191505060405180910390fd5b6001600160a01b038516611e77576040805162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b33611e868188888888886113a0565b611e948188888888886115e8565b6115df818888888888886118a4565b6001600160a01b038416611ee85760405162461bcd60e51b81526004018080602001828103825260228152602001806121f16022913960400191505060405180910390fd5b33611ef6818660008761128f565b611f05818660008787876113a0565b611f4884604051806060016040528060238152602001612344602391396001600160a01b038816600090815260208190526040902054919063ffffffff61180d16565b6001600160a01b038616600090815260208190526040902055600154611f74908563ffffffff61211a16565b600181905550846001600160a01b0316816001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ff9578181015183820152602001611fe1565b50505050905090810190601f1680156120265780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612059578181015183820152602001612041565b50505050905090810190601f1680156120865780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a36040805185815290516000916001600160a01b038816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061211257508115155b949350505050565b600061100b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061180d56fe4552433737373a20617070726f76652066726f6d20746865207a65726f20616464726573734552433737373a2073656e642066726f6d20746865207a65726f20616464726573734552433737373a207472616e7366657220616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433737373a206275726e2066726f6d20746865207a65726f20616464726573734552433737373a20617574686f72697a696e672073656c66206173206f70657261746f724552433737373a207265766f6b696e672073656c66206173206f70657261746f724552433737373a20746f6b656e20726563697069656e7420636f6e747261637420686173206e6f20696d706c656d656e74657220666f7220455243373737546f6b656e73526563697069656e744552433737373a207472616e7366657220746f20746865207a65726f20616464726573734552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f7220666f7220686f6c6465724552433737373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654552433737373a207472616e736665722066726f6d20746865207a65726f20616464726573734552433737373a206275726e20616d6f756e7420657863656564732062616c616e63654552433737373a20617070726f766520746f20746865207a65726f2061646472657373a264697066735822122014cd87c310e354b05781bd844d4e809fd79b76f34614b50017295ab5fe4b35d264736f6c63430006020033