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

Thaís Oyama

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

STF consolida favoritismo de Lula sobre Bolsonaro para ida ao segundo turno

Lula: Bolsonaro tem de mostrar resultados, ele, não -  Edilson Dantas / Agência O Globo
Lula: Bolsonaro tem de mostrar resultados, ele, não Imagem: Edilson Dantas / Agência O Globo

Colunista do UOL

24/03/2021 10h20

A decisão da Segunda Turma do Supremo Tribunal Federal de declarar a parcialidade de Sergio Moro no julgamento do ex-presidente Lula enterrou a Lava Jato, soterrou a figura do ex-juiz e encheu de esperanças corruptos e corruptores confessos, cujos advogados agora poderão sustentar até seus tataranetos com o rendimento da enxurrada de apelações com que inundarão as cortes.

No julgamento de ontem, Kassio Nunes Marques, o ministro novato indicado por Jair Bolsonaro, votou como votaria o seu padrinho. Ao elencar argumentos técnicos para não endossar a tese da parcialidade de Moro, Nunes Marques estava agindo não em benefício do ex-juiz, mas contra Lula - e a favor de Bolsonaro.

O ex-capitão sabe que o petista hoje o ultraa em favoritismo para a primeira vaga no segundo turno das eleições presidenciais, como mostrou neste mês pesquisa do Ipec (Inteligência em Pesquisa e Consultoria).

E não é apenas numericamente que o petista está em vantagem em relação ao presidente.

A base eleitoral de Lula é mais sólida que a de Bolsonaro. Especialistas em pesquisa de opinião lembram que essa base, além de se assentar na "pessoa física" do petista, mantém o patamar mínimo há quase duas décadas. Se a eleição fosse hoje, e Lula não mexesse um fio de sua barba, colheria facilmente 20% dos votos.
Já Bolsonaro terá de se movimentar muito para não deixar sua popularidade despencar.

Hoje, ela dependente fundamentalmente do sucesso da campanha de vacinação - sem o qual a recuperação da economia não virá —e do pagamento do auxílio emergencial, âncora da sua aprovação nas classes mais pobres.

O discurso subitamente presidencial do ex-capitão feito ontem à noite mostrou que ele se convenceu da importância estratégica da vacinação para as suas ambições eleitorais.

Essa mesma lógica deverá fazer com que os projetados quatro meses de pagamento do auxílio se estendam para bem além - mais precisamente até o ano da eleição. No universo de um eleitorado que tem necessidades de curto prazo, na hora do voto ninguém se lembra do auxílio que recebeu no ano ado - só do que irá pagar o almoço do dia.

Bolsonaro, portanto, depende da popularidade do seu governo para ir ao segundo turno.
Já Lula, para chegar ao mesmo lugar, depende apenas da sua imagem - agora, senão moralmente, ao menos juridicamente reabilitada pelo STF.