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

'Direito de resposta': Bonner diz a Bolsonaro se basear no STF sobre Lula

Do UOL, em São Paulo, no Rio e em Brasília*

28/10/2022 22h24Atualizada em 28/10/2022 23h13

Uma fala do presidente Jair Bolsonaro (PL), candidato à reeleição, acabou rendendo um "direito de resposta" ao mediador do debate na TV Globo na noite desta sexta-feira (28), o jornalista William Bonner.

"Como fui citado pelo candidato Bolsonaro, me permita fazer um esclarecimento muito breve. Eu, de fato, disse, na entrevista do 'Jornal Nacional', que o candidato Lula não deve nada à Justiça. Mas, como jornalista, eu não digo coisas da minha cabeça. Eu disse isso baseado em decisões fundamentadas do Supremo Tribunal Federal. Eu queria só fazer esse esclarecimento lembrando que, inclusive, algumas dessas decisões são bem recentes", respondeu Bonner, após Bolsonaro dizer que apenas o jornalista teria absolvido o petista Luiz Inácio Lula da Silva (PT).

Minutos antes, Lula chamou Bolsonaro de "descompensado" e "mentiroso".

O chefe do Executivo contra-atacou e ironizou a anulação de processos contra Lula e incluiu Bonner no assunto.

"Processo por corrupção para cima de mim, Lula? Qual é? Fala de mim. Ô, Lula, você dizer que foi absolvido? Só se foi pelo Bonner, se ele vai repetir aqui que você foi absolvido. Acho que Bonner vai ser indicado para um impossível governo teu para ser ministro do Supremo Tribunal Federal. Você foi descondenado Lula por um amigo do Supremo Tribunal Federal, que achava que você havia de ser julgado em Brasília e não em Curitiba. Você é um bandido, Lula", disse Bolsonaro.

Ainda no início da sua fala, Bolsonaro já tinha alfinetado a TV Globo. Enquanto perguntava para Lula, o candidato à reeleição afirmou que "o sistema todo está contra" ele, inclusive uma "grande rede de televisão" —quando levantou as mãos para cima, indicando falar da emissora que organiza o debate.

*Em São Paulo: Ana Paula Bimbati, Gilvan Marques, Isabella Cavalcante, Rafael Neves e Wanderley Preite Sobrinho
No Rio: Felipe Pereira, Lola Ferreira e Lucas Borges Teixeira
Em Brasília: Camila Turtelli, Gabriela Vinhal e Hanrrikson Andrade