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

Eliminatórias Europeias

Sorteio das Eliminatórias opõe Itália e Portugal; só um pode ir à Copa

Do UOL, em São Paulo

26/11/2021 13h24

Classificação e Jogos

O sorteio da repescagem das Eliminatórias Europeias, realizado pela Uefa na tarde de hoje (26), na cidade suíça de Zurique, definiu o caminho de 12 seleções do Velho Continente que ainda buscam uma vaga na Copa do Mundo. Itália e Portugal caíram na mesma chave, por isso só um deles pode se classificar.

A chave com seleções mais tradicionais é a C, que reúne Itália, Macedônia do Norte, Portugal e Turquia. A chave A é formada por Escócia, Ucrânia, País de Gales e Áustria; enquanto a chave B tem Rússia, Polônia, Suécia e República Tcheca (veja os jogos na lista mais abaixo). Só o campeão de cada chave vai à Copa do Mundo.

Portugal foi um dos grandes 'perdedores' do sorteio, pois para ir ao Qatar precisa vencer a seleção da Turquia na semifinal e em seguida bater a Itália ou, o que seria improvável, a Macedônia do Norte. Cristiano Ronaldo e cia. tinham a vaga direta nas mãos na fase de grupos das Eliminatórias, mas deixaram escapar em um gol sofrido no minuto final do último jogo, contra a Sérvia, que se garantiu na Copa.

A Itália, por sua vez, chega à repescagem pressionada por não ter participado da Copa do Mundo de 2018. Desde então a fase melhorou, a Azzurra enfileirou 37 partidas sem perder e foi campeã da Euro-2020, mas bateu na trave pela vaga direta.

A chave C tem sido considerada a "chave da morte" nesta repescagem. Roberto Mancini, treinador da Itália, itiu ter sido "um sorteio muito difícil", e o técnico da Turquia, Stefan Kuntz, reforçou após o evento que este chaveamento "definitivamente é o mais difícil, o mais duro".

Repescagem europeia para a Copa do Mundo:

Chave A
Escócia x Ucrânia
País de Gales x Áustria*

Chave B
Rússia x Polônia*
Suécia x República Tcheca

Chave C
Itália x Macedônia do Norte
Portugal x Turquia*

*seleções vencedoras destes jogos têm o mando de campo nas finais das chaves.

Como funciona a repescagem

Esta repescagem dá três vagas diretas na Copa do Mundo, por isso o sorteio divide as 12 seleções justamente em três chaves, quatro em cada uma. Na prática, só as campeãs de cada chave estarão no Qatar.

Todos os confrontos da repescagem são em jogo único, e os mandos de campo já estão definidos. Entre as 12 seleções, as seis com melhores campanhas nas Eliminatórias Europeias jogam as semifinais em casa (na lista abaixo, os países à esquerda); enquanto as finais tiveram mando sorteado (veja abaixo). Os jogos serão disputados entre os dias 24 e 29 de março.

As 12 seleções da repescagem não conseguiram vaga direta na fase de grupos das Eliminatórias: dez delas ficaram na segunda posição de seus grupos (Escócia, Itália, Macedônia do Norte, País de Gales, Polônia, Portugal, Rússia, Suécia, Turquia e Ucrânia) e outras duas se qualificaram pela pontuação da Liga das Nações (Áustria e República Tcheca).