Adaptive logic-based switching fault-tolerant controller design for nonlinear uncertain systems