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

Vicente Toledo

Modelo aponta Democratas com 75% de chances de assumir controle do Senado

Colunista do UOL

03/11/2020 20h42

Os Democratas têm 75% de chances de assumir o controle do Senado nas eleições desta terça-feira, segundo a última versão do modelo matemático do site "FiveThirtyEight". E o resultado mais provável é uma maioria de 52 a 48 a favor do partido do ex-presidente Joe Biden.

Embora as eleições estejam apertadas em muitos estados, em 80% das simulações realizadas pelo modelo os democratas acabaram com saldo positivo, entre 48 e 55 senadores.

Os republicanos defendem uma maioria de 53 a 47 na atual composição do Senado. Por isso, os democratas precisam tomar quatro cadeiras dos republicanos para ganharem a maioria.

Se ambos os partidos somarem 50 cadeiras no Senado, o voto de desempate é responsabilidade do vice-presidente, o que aumentaria ainda mais a importância da eleição presidencial.

Vista do prédio do Congresso dos Estados Unidos, em Washington. Democratas são favoritos para controlar Senado, mas resultados podem demorar - Graeme Sloan/Sipa USA - Graeme Sloan/Sipa USA
Vista do prédio do Congresso dos Estados Unidos, em Washington. Democratas são favoritos para controlar Senado, mas resultados podem demorar
Imagem: Graeme Sloan/Sipa USA

Das 17 disputas consideradas competitivas pelo modelo do "FiveThirtyEight", 13 envolvem atuais senadores do Partido Republicano defendendo seus cargos.

Os dois senadores republicanos em situação mais complicada são Cory Gardner, do Colorado, e Martha McSally, do Arizona. Gardner tem 84% de chances de ser derrotado pelo o ex-governador do estado John Hickenlooper, enquanto McSally tem apenas 22% de chances de vencer o ex-astronauta Mark Kelly.

Os democratas também estão bem posicionados na Carolina do Norte, onde o desafiante Cal Cunningham tem 68% de chances de bater o senador republicano Thom Tillis, e na eleição especial da Geórgia, onde o candidato do partido tem chances parecidas (63%) de prevalecer.

Outros três senadores republicanos estão eleições bastante competitivas. Em Maine, Susan Collins tem apenas 41% de chances de derrotar a desafiante Sara Gideon. Na corrida pela segunda cadeira da Geórgia, o senador David Perdue tem ligeira vantagem (57%) sobre Jon Ossoff. Situação muito semelhante à de Joni Ernst, senadora republicana em Iowa, com 58% de chances de se reeleger.

Enquanto os democratas têm várias oportunidades de virar cadeiras no Senado, os republicanos devem conquistar apenas uma, derrotando o senador Doug Jones, do Alabama. Já os atuais senadores democratas de Michigan, Novo México e Minnesota são amplos favoritos à reeleição.

A expectativa é de que o partido que controlará o Senado seja conhecido na noite da eleição, mas a exata composição da casa provavelmente terá que esperar mais algumas semanas graças ao formato da eleição especial na Geórgia, que prevê desempate caso nenhum candidato receba mais de 50% dos votos.

O controle do Senado é importante no sistema político americano porque a casa tem atribuições constitucionais que vão além do poder legislativo, como a aprovação de juízes federais e magistrados da Suprema Corte, e a palavra final sobre a remoção de presidentes em caso de impeachment.