0x60806040523480156200001157600080fd5b506040516200105c3803806200105c833981016040819052620000349162000145565b6200004a836200005f60201b620009721760201c565b620000568282620000b8565b5050506200019f565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005461010090046001600160a01b03163314620001085760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640160405180910390fd5b6001600160601b0316600160a01b026001600160a01b0390911617600455565b80516001600160a01b03811681146200014057600080fd5b919050565b6000806000606084860312156200015b57600080fd5b620001668462000128565b9250620001766020850162000128565b60408501519092506001600160601b03811681146200019457600080fd5b809150509250925092565b610ead80620001af6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370e141951161007157806370e14195146101585780638124b78e1461016b578063848ec03c1461017e5780638da5cb5b14610191578063bc525652146101a7578063f2fde38b146101ba57600080fd5b806301ffc9a7146100b957806307caa21e146100e15780631ada40fb146100f65780632cad0014146101075780634b55ae53146101325780634e543b2614610145575b600080fd5b6100cc6100c7366004610a20565b6101cd565b60405190151581526020015b60405180910390f35b6100f46100ef366004610b14565b6101f8565b005b6002546040519081526020016100d8565b61011a610115366004610b62565b61057e565b6040516001600160a01b0390911681526020016100d8565b6100f4610140366004610c23565b610704565b6100f4610153366004610c66565b610753565b61011a610166366004610c81565b6107cc565b61011a610179366004610c66565b6108a9565b60035461011a906001600160a01b031681565b60005461010090046001600160a01b031661011a565b61011a6101b5366004610cbe565b61090d565b6100f46101c8366004610c66565b610937565b60006001600160e01b0319821663f80f604360e01b14806101f257506101f2826109cb565b92915050565b60005461010090046001600160a01b031633146102305760405162461bcd60e51b815260040161022790610cd7565b60405180910390fd5b6040516301ffc9a760e01b81526350130d5360e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190610cfa565b6102df5760405162461bcd60e51b81526020600482015260116024820152704e6f74204f70656e436c6f6e6561626c6560781b6044820152606401610227565b806001600160a01b031663158ef93e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103419190610cfa565b61037f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610227565b806001600160a01b03163b602d036103d95760405162461bcd60e51b815260206004820152601860248201527f436c6f6e65206e6f742076616c69642074656d706c61746500000000000000006044820152606401610227565b60006001836040516103eb9190610d40565b90815260200160405180910390205490506001811061045557816002610412600184610d5c565b8154811061042257610422610d7d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506104c8565b50600280546001808201835560008390527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b0319166001600160a01b0385161790559054604051909182916104b7908690610d40565b908152604051908190036020019020555b600354604051630e3ab68760e21b81526001600160a01b038481166004830152909116906338eada1c90602401600060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b50505050816001600160a01b03168360405161053f9190610d40565b604051908190038120838252907f9a1bc68d29ae4a678ea14888c65dd019ada583b85f33e2483dae925e470d0d709060200160405180910390a3505050565b600061058c610179846107cc565b6004546040519192506001600160a01b0380841692631eb40e21928992899233926105d0928a9290821691600160a01b90046001600160601b031690602001610dbf565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016105fe9493929190610dfb565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b5050600354604051630e3ab68760e21b81526001600160a01b03858116600483015290911692506338eada1c9150602401600060405180830381600087803b15801561067757600080fd5b505af115801561068b573d6000803e3d6000fd5b505050508460405161069d9190610d40565b6040518091039020816001600160a01b0316846040516106bd9190610d40565b60405180910390207f58689b2920c59f090416ecf8b77869a3026ebcdf93291be87ff14cc7739565e9876040516106f49190610e4e565b60405180910390a4949350505050565b60005461010090046001600160a01b031633146107335760405162461bcd60e51b815260040161022790610cd7565b6001600160601b0316600160a01b026001600160a01b0390911617600455565b60005461010090046001600160a01b031633146107825760405162461bcd60e51b815260040161022790610cd7565b600380546001600160a01b0319166001600160a01b0383169081179091556040517ff811902d0aa96fa0dd89bebe8fc3818fa2132b9437abc92ed35639cc82da6d7c90600090a250565b6000806001836040516107df9190610d40565b908152602001604051809103902054905060018110156108345760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642054656d706c61746560801b6044820152606401610227565b6002610841600183610d5c565b8154811061085157610851610d7d565b6000918252602090912001546001600160a01b03169150816108a35760405162461bcd60e51b815260206004820152600b60248201526a4e6f2054656d706c61746560a81b6044820152606401610227565b50919050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b03811661090857610908610e61565b919050565b6002818154811061091d57600080fd5b6000918252602090912001546001600160a01b0316905081565b60005461010090046001600160a01b031633146109665760405162461bcd60e51b815260040161022790610cd7565b61096f81610972565b50565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006001600160e01b031982166340925bc760e11b14806101f257506101f28260006307f5828d60e41b6001600160e01b0319831614806101f257506001600160e01b031982166301ffc9a760e01b146101f2565b600060208284031215610a3257600080fd5b81356001600160e01b031981168114610a4a57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610a8257610a82610a51565b604051601f8501601f19908116603f01168101908282118183101715610aaa57610aaa610a51565b81604052809350858152868686011115610ac357600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610aee57600080fd5b610a4a83833560208501610a67565b80356001600160a01b038116811461090857600080fd5b60008060408385031215610b2757600080fd5b823567ffffffffffffffff811115610b3e57600080fd5b610b4a85828601610add565b925050610b5960208401610afd565b90509250929050565b60008060008060808587031215610b7857600080fd5b843567ffffffffffffffff80821115610b9057600080fd5b610b9c88838901610add565b95506020870135915080821115610bb257600080fd5b610bbe88838901610add565b94506040870135915080821115610bd457600080fd5b610be088838901610add565b93506060870135915080821115610bf657600080fd5b508501601f81018713610c0857600080fd5b610c1787823560208401610a67565b91505092959194509250565b60008060408385031215610c3657600080fd5b610c3f83610afd565b915060208301356001600160601b0381168114610c5b57600080fd5b809150509250929050565b600060208284031215610c7857600080fd5b610a4a82610afd565b600060208284031215610c9357600080fd5b813567ffffffffffffffff811115610caa57600080fd5b610cb684828501610add565b949350505050565b600060208284031215610cd057600080fd5b5035919050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b600060208284031215610d0c57600080fd5b81518015158114610a4a57600080fd5b60005b83811015610d37578181015183820152602001610d1f565b50506000910152565b60008251610d52818460208701610d1c565b9190910192915050565b818103818111156101f257634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008151808452610dab816020860160208601610d1c565b601f01601f19169290920160200192915050565b606081526000610dd26060830186610d93565b6001600160a01b03949094166020830152506001600160601b0391909116604090910152919050565b608081526000610e0e6080830187610d93565b8281036020840152610e208187610d93565b6001600160a01b038616604085015283810360608501529050610e438185610d93565b979650505050505050565b602081526000610a4a6020830184610d93565b634e487b7160e01b600052600160045260246000fdfea26469706673582212200d14102307c7a8bdd443c1e110e7a541537587bcf412bca154059ffd2bee467364736f6c6343000811003300000000000000000000000062680309da3cd77fdeda85022be3058d373f750d00000000000000000000000047e2382d9e1e985ba1f4064e7d8d753fab99f209000000000000000000000000000000000000000000000000000000000000005a