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

Futebol pelo mundo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Neymar tem cláusula para ficar no PSG até 2026; depois mira volta ao Brasil

Neymar voltou a campo pelo PSG de contrato renovado, em partida contra o Rennes (empate por 1 a 1) - FRED TANNEAU / AFP
Neymar voltou a campo pelo PSG de contrato renovado, em partida contra o Rennes (empate por 1 a 1) Imagem: FRED TANNEAU / AFP

João Henrique Marques

Colunista do UOL

10/05/2021 00h00

Neymar assinou contrato com o Paris Saint-Germain até 2025, mas deixou no documento uma cláusula para ter o direito de prorrogar o vínculo por mais um ano. A escolha será do próprio jogador, que agora está diante do que considera ser o último grande contrato na Europa antes de um retorno ao Brasil para a fase final da carreira.

A cláusula pedida por Neymar e aceita pelo PSG tem de ser definida até julho de 2022. O novo contrato do brasileiro já está em vigor e a validade até julho de 2026 só não foi estipulada pois, na França, não são permitidos mais de cinco anos de vínculo

Em 2026, Neymar terá 34 anos e completará nove anos de agem pelo PSG. No plano traçado pelo jogador, a volta ao futebol brasileiro ainda é a prioridade para encerrar a carreira.

Para Neymar da Silva Santos, o pai e empresário de Neymar, era uma definição delicada o próximo contrato do jogador na Europa. Ele estava ciente de que sair do PSG antes do término do contrato seria cenário improvável, mas ficou satisfeito com a decisão do filho em seguir no futebol de ponta do velho continente.

Neymar escolheu ficar no PSG por confiar em alto investimento do clube em reforços, e assim estar sempre disputando as fases finais da Liga dos Campeões. Nas duas últimas temporadas, o time foi finalista em 2020 (perdeu a decisão para o Bayern de Munique) e agora acaba de ser eliminado na semifinal da atual edição para o Manchester City.

No projeto esportivo do PSG para os próximos anos há o comprometimento com Neymar da tentativa de trazer Lionel Messi. O argentino estará livre no mercado em julho e ainda não se decidiu sobre deixar ou não o Barça.

O aspecto econômico também foi ponto determinante para Neymar. Seu salário em torno de 30 milhões de euros ao ano está mantido, em uma realidade na contramão do futebol diante da crise global por conta da pandemia do coronavírus. No mercado, alguns empresários de ponta imaginavam que o brasileiro não manteria o mesmo ordenado no próximo contrato.