更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更更I