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

Zé Pelintra, Witzel e medo da prisão: o debate do Rio em dez frases

Eduardo Paes (DEM) e Marcelo Crivella (Republicanos) em debate na Globo - Reprodução
Eduardo Paes (DEM) e Marcelo Crivella (Republicanos) em debate na Globo Imagem: Reprodução

Igor Mello

Do UOL, no Rio*

28/11/2020 01h38

Eduardo Paes (DEM) e Marcelo Crivella (Republicanos), que disputam a Prefeitura do Rio de Janeiro, protagonizaram um debate marcado por trocas de ataques e muitas acusações na TV Globo, nesta quinta-feira (27). Entre tiradas irônicas e ataques, ambos pediram —e receberam— diversos pedidos de resposta.

O tom bélico do debate foi iniciado pelo prefeito Marcelo Crivella, que tenta uma virada improvável no segundo turno. Segundo pesquisa Datafolha divulgada na quinta-feira (26), Paes tem 40 pontos percentuais de vantagem na disputa, considerando-se os votos válidos — um placar de 70% a 30%.

Veja as dez frases que marcaram o último encontro entre os candidatos à prefeitura do Rio.

Eduardo Paes vai ser preso, e digo isso com o coração partido. E vai porque cometeu os mesmos erros de Cabral e Pezão. Ele vai ser preso.

Crivella, ao citar denúncias de corrupção contra Eduardo Paes.

Vocês vão perceber o desespero do candidato. Ele vai usar esse tom a noite inteira e eu quero tratar de propostas para a cidade. E ele morre de medo de ser preso quando aquele Rafael Alves, do QG da Propina, começar a falar.

Eduardo Paes, rebatendo a afirmação de que seria preso feita por Crivella.

Isso quem diz é o povo, você não tem direito de resposta: Eduardo Paes rouba, mas faz.

Crivella, voltando a acusar Paes de corrupção.

Crivella sabe que está mentindo. Ele é o pai da mentira, o rei da incompetência. A gente viu isso ao longo dos últimos 4 anos.

Eduardo Paes, em direito de resposta após a acusação de corrupção.

O Eduardo dava R$ 70 milhões para o carnaval porque queria desfilar, ia lá com o chapeuzinho do Zé Pelintra. Saia na capa do jornal, queria autopromoção, por isso pegava dinheiro das pessoas para se promover.

Crivella, em menção depreciativa a uma entidade da umbanda ao comentar os gastos com o carnaval na Marquês de Sapucaí.

Ninguém defende pedofilia. Eu tenho todas as diferenças do mundo com o PSOL, que já anunciou que vai fazer oposição a mim no 2º turno, nem PSOL nem ninguém defende pedofilia.

Paes rebate acusação feita por Crivella nas redes sociais, de que haverá pedofilia nas escolas caso Paes seja eleito.

Perdemos recursos em Brasília, porque ele covardemente não enfrentou o assunto. Porque ele fez o Rio de Janeiro inclusive a capital mundial do turismo gay. Ora, Eduardo Paes. Seja pelo menos honesto nesse tema.

Crivella, acusando Paes de não impedir a "ideologia de gênero" nas escolas.

Para de mentir. Você tem 63 anos. Até seu tio Edir Macedo te tirou da igreja e botou na política de tão incompetente que você é.

Paes, em referência à trajetória de Crivella como bispo da Igreja Universal.

Aliás, hoje no programa da Globo você podia pedir música no Fantástico. Você teve três fake news de manhã. É mentira, Eduardo? Agora já pode ar agora de dez fake news, 20 fake news. Agora já pode pedir musica no Fantástico até o fim do ano.

Crivella, respondendo a acusações de má gestão na saúde.

Crivella Witzel, não. Você me lembra muito o sujeito que enfrentei em 2018, que aliás teve o seu apoio.

Paes associando Crivella ao governador afastado Wilson Witzel (PSC), após o rival perguntar se o ex-prefeito não tinha vergonha de ser candidato diante das denúncias de corrupção.

Você utiliza a Alexa? O UOL é o parceiro oficial da assistente de voz da Amazon, com boletins de notícias e dados atualizados das últimas pesquisas eleitorais e dos resultados do 2º turno. Para saber sobre a eleição na sua cidade com a credibilidade do UOL, pergunte: "Alexa, qual é o resultado da pesquisa eleitoral em São Paulo?", por exemplo, ou "Alexa, quem ganhou a eleição no Rio de Janeiro?". Nos encontramos lá!

*Colaboraram Felipe Oliveira e Pedro Ungheira