;(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

Esse conteúdo é antigo

Conselho de Ética vai investigar Eduardo Bolsonaro por caso Miriam Leitão

CAIO ROCHA/FRAMEPHOTO/ESTADÃO CONTEÚDO
Imagem: CAIO ROCHA/FRAMEPHOTO/ESTADÃO CONTEÚDO

Do UOL, em São Paulo

04/05/2022 13h05Atualizada em 04/05/2022 13h38

O Conselho de Ética da Câmara dos Deputados abriu hoje um processo contra o deputado Eduardo Bolsonaro (PL-SP) pelo caso em que ele debochou da tortura sofrida pela jornalista Miriam Leitão.

O processo de avaliação da conduta do parlamentar foi instaurado como resultado de pedidos feitos pelos partidos PCdoB, Rede, PT e PSOL.

O relator do caso será escolhido pelo presidente do Conselho entre os três nomes que foram sorteados na reunião de hoje: Mauro Lopes (PP-MG), Pinheirinho (PP-MG) ou Vanda Milani (Pros-AC).

No início de abril, Miriam Leitão publicou um artigo no jornal O Globo na qual afirmou que o presidente Jair Bolsonaro (PL) é um "inimigo confesso da democracia". Em resposta, Eduardo Bolsonaro compartilhou em seu Twitter a mensagem "ainda com pena da cobra".

Segundo relatos da própria jornalista, posteriormente provados com áudios do STM (Superior Tribunal Militar), Miriam Leitão foi torturada durante a ditadura militar e em uma das sessões, foi deixada em uma sala trancada com uma jiboia por horas. Na época, Miriam estava grávida.

A colocação de Eduardo gerou revolta e parlamentares acionaram o Conselho de Ética, pedindo inclusive sua cassação.

No fim do mês, o deputado insistiu no assunto justamente durante uma sessão do Conselho de Ética, afirmando que havia apenas feito uma piada.

Pouco após os ataques de Eduardo Bolsonaro, Miriam Leitão se manifestou sobre o caso, recusando-se a citar o nome do deputado, mas agradecendo as mensagens de carinho que recebeu de amigos e fãs.

"Fui envolvida por uma onda forte, boa e carinhosa desde domingo. Eu agradeço a todas as pessoas que se manifestaram aqui e por outros caminhos. As mensagens me fortalecem e me ajudam a ter esperança no Brasil e no futuro da democracia, que nos custou tão caro", escreveu.