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

Fluminense

No Grupo D da Libertadores, Fluminense vê equilíbrio e 'celebra' logística

Mário Bittencourt, presidente do Fluminense, o técnico Roger Machado e o atacante Fred participaram de transmissão da FluTV - Reprodução FluTV
Mário Bittencourt, presidente do Fluminense, o técnico Roger Machado e o atacante Fred participaram de transmissão da FluTV Imagem: Reprodução FluTV

Do UOL, no Rio de Janeiro (RJ)

09/04/2021 15h01

Em sorteio realizado no começo da tarde de hoje (9), o Fluminense conheceu os adversários da fase de grupos da Libertadores. A equipe tricolor caiu no Grupo D, ao lado de River Plate, da Argentina, Independiente Santa Fe, da Colômbia, e o vencedor do duelo entre Bolivar, da Bolívia, e Junior Barranquilla, também da Colômbia.

O atacante Fred acredita que os grupos, de uma maneira geral, estejam equilibrados, e salientou um ponto positivo de estar no mesmo grupo do River, que entra como um dos favoritos da competição.

"Acho que está todo mundo olhando para o seu clube e pensando: 'É, vai ser difícil, equilibrado'. A gente pegou um dos favoritos, que é o River Plate, e esses jogos dão corpo à equipe. Dá confiança, dá corpo... Temos de olhar o lado positivo também", disse, à FluTV.

O técnico Roger Machado seguiu o caminho. O comandante tricolor salientou que ainda é cedo para fazer análises sobre a dificuldade que o time vai encontrar nesta fase, mas apontou a importância de enfrentar uma equipe forte como o River Plate.

"Não costumo fazer avaliações antes porque a fotografia joga dificuldade em todos os grupos. Vejo esse representante que vai entrar no nosso grupo... Se descontar a altitude e o resultado da ida, ainda tende ao Barranquilla. Grupo da morte ou não, grupo mais fácil ou não, só vamos ter certeza quando começar. Também acredito que pegar um River, por mais que tenha sido favorito nos últimos anos, dá uma medida de igualdade de como vamos entrar na competição", afirmou.

"Mesmo que venha um time da altitude, todos os times vão sofrer na altitude. Vamos jogar uma fase em que todos vão jogar lá. Costumo analisar o grupo mais pelas características de jogo. Você pega o Santa Fé, os colombianos têm um jogo forte, de intensidade física. A vantagem vai acontecer em começar bem a competição, medindo força dentro da chave", completou.

Para o presidente Mário Bittencourt, a Libertadores não oferece facilidade na fase de grupos. O mandatário acredita ainda que o sorteio "favoreceu" o Fluminense no que diz respeito à logística.

"É Libertadores. Ninguém acha que pegaria um grupo...né? Tudo depende da composição, é tudo muito relativo. O importante é estarmos confiantes em disputar a competição. Acho que nosso grupo ficou bom. Pelo que ouvi dos nossos supervisores, a grande preocupação era a Venezuela e Quito [no Equador]. A logística para a Bolívia é um pouco mais difícil, mas tem uma companhia aérea que atende bem. Colômbia e Argentina são mais tranquilos. Então, assim, já ficamos mais tranquilos em relação à logística, o que já nos ajuda bastante", apontou.

Fluminense