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

Tom Brady anuncia aposentadoria aos 44 anos

Do UOL, em São Paulo

01/02/2022 11h43

Tom Brady anunciou, hoje, que está se aposentando do futebol americano aos 44 anos. O agora ex-quarterback divulgou sua decisão nas redes sociais.

"Eu sempre acreditei que o futebol americano tem uma proposta de 'all in'. Se você não der 100% de comprometimento competitivo, você não terá sucesso, e eu amo muito sucesso no nosso jogo. Existe um desafio físico, mental e emocional diariamente que me permitiu maximizar meu maior potencial. E eu tentei meu melhor nesses últimos 22 anos. Não existem atalhos para ter sucesso em campo ou na vida", escreveu Brady.

"Isso é difícil de escrever, mas aqui vai: eu não vou mais fazer esse comprometimento competitivo. Eu amei minha carreira na NFL e agora é hora de focar meu tempo e minha energia em outras coisas que demandam minha atenção", acrescentou.

"Refleti muito na semana ada e me fiz perguntas difíceis. E estou muito orgulhoso do que conquistamos. Meus companheiros de equipe, treinadores, competidores e fãs merecem 100% de mim, mas agora é melhor deixar o campo de jogo para a próxima geração de atletas dedicados e comprometidos."

O quarterback foi draftado pelo New England Patriots na sexta rodada do Draft de 2000. Brady jogou pelos Patriots até 2019 e foi hexacampeão do Super Bowl. Na sequência, fechou com o Tamba Bay Buccanners, onde jogou as últimas duas temporadas e foi campeão do Super Bowl no ano ado. Com sete títulos, ele é o maior campeão da história da NFL. Foram 22 temporadas na principal liga de futebol americano dos Estados Unidos.

No último sábado (29), os jornalistas Adam Schefter e Jeff , Darlington, da ESPN americana, anunciaram que o marido da brasileira Gisele Bundchen resolveu se aposentar da NFL. Brady só foi se manifestar dias depois, no podcast Let's Go!". Ele declarou que ainda não havia se decidido. Mais tarde, anunciou a aposentadoria.

"Minha carreira de jogador tem sido um eio tão emocionante, e muito além da minha imaginação, e cheio de altos e baixos. Quando você está nela todos os dias, você realmente não pensa em nenhum tipo de final. Enquanto estou sentado aqui agora, no entanto, penso em todos os grandes jogadores e treinadores que tive o privilégio de jogar com e contra - a competição foi feroz e profunda, assim como nós gostamos. Mas as amizades e relacionamentos são tão ferozes e profundos. Vou me lembrar e apreciar essas memórias e relembrá-las com frequência. Eu me sinto a pessoa mais sortuda do mundo", afirmou o ex-jogador.

No texto publicado nas redes sociais, Brady ainda agradeceu à família e se declarou, em português, a Gisele: "Te amo, amor da minha vida".

A última partida da carreira do quarterback foi em 23 de janeiro, quando os Bucs perderam na semifinal da Conferência Nacional para o Los Angeles Rams.