0x608060405234801561001057600080fd5b506113da806100206000396000f3fe6080604052600436106100c25760003560e01c806389b156041161007f578063b9927a9c11610059578063b9927a9c14610280578063cf604bc9146102ac578063da35a26f146102c1578063f2fde38b146102fa576100c2565b806389b15604146101d35780638da5cb5b146102065780639867df1114610237576100c2565b806334e19907146100c757806335ad1e03146100f357806350877c771461012657806354cf2aeb146101645780635c13c1511461018b578063715018a6146101be575b600080fd5b3480156100d357600080fd5b506100f1600480360360208110156100ea57600080fd5b503561032d565b005b3480156100ff57600080fd5b506100f16004803603602081101561011657600080fd5b50356001600160a01b031661038a565b34801561013257600080fd5b506101506004803603602081101561014957600080fd5b5035610404565b604080519115158252519081900360200190f35b34801561017057600080fd5b50610179610419565b60408051918252519081900360200190f35b34801561019757600080fd5b50610150600480360360208110156101ae57600080fd5b50356001600160a01b031661041f565b3480156101ca57600080fd5b506100f1610906565b3480156101df57600080fd5b50610150600480360360208110156101f657600080fd5b50356001600160a01b03166109a8565b34801561021257600080fd5b5061021b6109bd565b604080516001600160a01b039092168252519081900360200190f35b34801561024357600080fd5b506101506004803603608081101561025a57600080fd5b508035906001600160a01b036020820135811691604081013590911690606001356109cc565b6101506004803603604081101561029657600080fd5b506001600160a01b038135169060200135610b72565b3480156102b857600080fd5b5061021b610d78565b3480156102cd57600080fd5b506100f1600480360360408110156102e457600080fd5b50803590602001356001600160a01b0316610d87565b34801561030657600080fd5b506100f16004803603602081101561031d57600080fd5b50356001600160a01b0316610e5b565b610335610f54565b6003546001600160a01b03908116911614610385576040805162461bcd60e51b8152602060048201819052602482015260008051602061135b833981519152604482015290519081900360640190fd5b600555565b610392610f54565b6003546001600160a01b039081169116146103e2576040805162461bcd60e51b8152602060048201819052602482015260008051602061135b833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60026020526000908152604090205460ff1681565b60055481565b6001600160a01b03811660009081526001602052604081205460ff1615610482576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b6060826001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104fa57600080fd5b810190808051604051939291908464010000000082111561051a57600080fd5b90830190602082018581111561052f57600080fd5b825164010000000081118282018810171561054957600080fd5b82525081516020918201929091019080838360005b8381101561057657818101518382015260200161055e565b50505050905090810190601f1680156105a35780820380516001836020036101000a031916815260200191505b5060405250505090506060836001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561062457600080fd5b810190808051604051939291908464010000000082111561064457600080fd5b90830190602082018581111561065957600080fd5b825164010000000081118282018810171561067357600080fd5b82525081516020918201929091019080838360005b838110156106a0578181015183820152602001610688565b50505050905090810190601f1680156106cd5780820380516001836020036101000a031916815260200191505b5060405250505090506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d602081101561073b57600080fd5b50518351909150610780576040805162461bcd60e51b815260206004820152600a602482015269656d707479206e616d6560b01b604482015290519081900360640190fd5b60008251116107c5576040805162461bcd60e51b815260206004820152600c60248201526b195b5c1d1e481cde5b589bdb60a21b604482015290519081900360640190fd5b6001600160a01b0385166000818152600160208181526040808420805460ff1916909317909255815160ff8616928101929092526060808352875190830152865133937ffe3bd005e346323fa452df8cafc28c55b99e3766ba8750571d139c6cf5bc08a0938993899389938392838101926080850192918901918190849084905b8381101561085e578181015183820152602001610846565b50505050905090810190601f16801561088b5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156108be5781810151838201526020016108a6565b50505050905090810190601f1680156108eb5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3506001949350505050565b61090e610f54565b6003546001600160a01b0390811691161461095e576040805162461bcd60e51b8152602060048201819052602482015260008051602061135b833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60016020526000908152604090205460ff1681565b6003546001600160a01b031681565b6004546000906001600160a01b03163314610a2e576040805162461bcd60e51b815260206004820152601b60248201527f53656e646572206973206e6f7420706f6f6c206f70657261746f720000000000604482015290519081900360640190fd5b60008581526002602052604090205460ff1615610a8a576040805162461bcd60e51b81526020600482015260156024820152746273632074782066696c6c656420616c726561647960581b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16610aee576040805162461bcd60e51b81526020600482015260146024820152733737ba103932b3b4b9ba32b932b2103a37b5b2b760611b604482015290519081900360640190fd5b6000858152600260205260409020805460ff19166001179055610b1b6001600160a01b0385168484610f58565b826001600160a01b031685856001600160a01b03167f3bebd9a738291e69898b5dbfadb6329b4b09fc648bdef68762928e521463abd9856040518082815260200191505060405180910390a4506001949350505050565b6000610b7d33610faa565b15610bcf576040805162461bcd60e51b815260206004820152601f60248201527f636f6e7472616374206973206e6f7420616c6c6f77656420746f207377617000604482015290519081900360640190fd5b333214610c23576040805162461bcd60e51b815260206004820152601c60248201527f6e6f2070726f787920636f6e747261637420697320616c6c6f77656400000000604482015290519081900360640190fd5b6001600160a01b03831660009081526001602052604090205460ff16610c87576040805162461bcd60e51b81526020600482015260146024820152733737ba103932b3b4b9ba32b932b2103a37b5b2b760611b604482015290519081900360640190fd5b6005543414610cd2576040805162461bcd60e51b81526020600482015260126024820152711cddd85c08199959481b9bdd08195c5d585b60721b604482015290519081900360640190fd5b610ce76001600160a01b038416333085610fb0565b3415610d28576003546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610d26573d6000803e3d6000fd5b505b60408051838152346020820152815133926001600160a01b038716927ff60309f865a6aa297da5fac6188136a02e5acfdf6e8f6d35257a9f4e9653170f929081900390910190a350600192915050565b6004546001600160a01b031681565b600054610100900460ff1680610da05750610da0611010565b80610dae575060005460ff16155b610de95760405162461bcd60e51b815260040180806020018281038252602e81526020018061132d602e913960400191505060405180910390fd5b600054610100900460ff16158015610e14576000805460ff1961ff0019909116610100171660011790555b6005839055600380546001600160a01b0384166001600160a01b031991821681179092556004805490911690911790558015610e56576000805461ff00191690555b505050565b610e63610f54565b6003546001600160a01b03908116911614610eb3576040805162461bcd60e51b8152602060048201819052602482015260008051602061135b833981519152604482015290519081900360640190fd5b6001600160a01b038116610ef85760405162461bcd60e51b81526004018080602001828103825260268152602001806112e16026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e56908490611016565b3b151590565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261100a908590611016565b50505050565b303b1590565b606061106b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110c79092919063ffffffff16565b805190915015610e565780806020019051602081101561108a57600080fd5b5051610e565760405162461bcd60e51b815260040180806020018281038252602a81526020018061137b602a913960400191505060405180910390fd5b60606110d684846000856110e0565b90505b9392505050565b6060824710156111215760405162461bcd60e51b81526004018080602001828103825260268152602001806113076026913960400191505060405180910390fd5b61112a85610faa565b61117b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106111ba5780518252601f19909201916020918201910161119b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461121c576040519150601f19603f3d011682016040523d82523d6000602084013e611221565b606091505b509150915061123182828661123c565b979650505050505050565b6060831561124b5750816110d9565b82511561125b5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112a557818101518382015260200161128d565b50505050905090810190601f1680156112d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122004d1976df07258eceead882748e8c3f3001d190cc41f5287441786e8d5776b5d64736f6c634300060c0033