Adaptive technique-based distributed fault estimation observer design for multi-agent systems with directed graphs