;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Com atestado, ministro do GSI falta a sessão na Câmara após vídeo do 8/1

Do UOL, em Brasília

19/04/2023 14h45Atualizada em 19/04/2023 16h52

O ministro do GSI (Gabinete de Segurança Institucional), Gonçalves Dias, apresentou um atestado e faltou hoje à audiência marcada na Comissão de Segurança Pública da Câmara.

O que aconteceu

A sessão estava marcada para as 14h. A participação dele na sessão havia sido acordada, por meio de convite, pelas lideranças do colegiado. O atestado foi apresentado após imagens de câmeras de segurança do Palácio do Planalto mostrarem o general orientando bolsonaristas durante os atos golpistas de 8 de janeiro — o vídeo foi revelado hoje pela CNN.

Houve um acordo com as bancadas de aprovar ainda nesta tarde a convocação do ministro. A data será a quarta-feira da próxima semana (26). O GSI afirmou que o ministro se coloca à disposição para agendamentos futuros.

O atestado informa um "quadro clínico agudo, com necessidade de medicação e observação" — o documento foi assinado pelo médico João Luiz Henrique da Silveira, que diz que o ministro foi atendido às 13h. Não houve mais detalhes sobre o estado de saúde dele.

O gabinete diz que as condutas de agentes públicos do GSI envolvidos estão sendo apuradas e que os respectivos autores serão responsabilizados. A nota do órgão não faz qualquer menção ao ministro Gonçalves Dias. O UOL questionou o Planalto se alguma investigação contra o ministro está em andamento, mas não obteve resposta.

Atestado métido apresentado pelo general à Câmara  - Reprodução - Reprodução
Atestado métido apresentado pelo general à Câmara
Imagem: Reprodução

O que disse o presidente da comissão

Olhando o vídeo está muito claro a contribuição ilegítima do ministro chefe do GSI para com esses criminosos. Porque esses que invadiram ali, vândalos, são criminosos. Deveriam ser tratados como vândalos criminosos, não foram tratados. Foram tratados, diria até, com um certo assessoramento."

Aquelas imagens, falam por si só. Todos que assistiram aquele vídeo veem nitidamente, flagrantemente uma ação de assessoramento dele para com aqueles que invadiram o Palácio do Planalto lá no dia 8 de janeiro."

Como ministro chefe do GSI, como homem de confiança do presidente Lula, essas ações todas que ele estava fazendo eram de conhecimento do presidente da República ou não? Essa é a pergunta que está no ar."

Uma renúncia neste momento seria quase uma confissão de culpa. Se ele renunciar, fugir do fronte neste momento seria, na minha visão, não quero fazer juízo de valor antecipado, mas na minha visão ele estará atestando culpa se ele renunciar."
Ubiratan Sanderson, presidente da Comissão de Segurança Pública da Câmara

As consequências da falta do ministro

A oposição aproveitou a ausência do ministro para afirmar que a MI se faz ainda mais necessária para esclarecer as invasões de 8 de janeiro. Há s suficientes e falta leitura do requerimento.

O atestado usado para não comparecer também foi questionado. O deputado Junio Amaral (PL-MG) disse que o documento médico deveria ser verificado.

Orlando Silva (PCdoB-SP), aliado do presidente Lula (PT), defendeu a convocação do ministro do GSI. Ele acrescentou que ele não tem mais condições de continuar no cargo.

Haverá uma sessão extraordinária para decidir sobre a convocação do ministro na próxima quarta-feira. A tendência é que situação e oposição entrem em acordo e convoquem Gonçalves Dias.