Acredito que se enviar tal pergunta como tarefa, pela plataforma, você terá uma resposta completa. Visto o grau de dificuldade dela.