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

Abel cobra respeito a jogadores e trabalho no Palmeiras: 'Não é arrogância'

Diego Iwata Lima

De São Paulo

29/09/2021 00h29

Abel Ferreira entrou para a coletiva de imprensa aparentando serenidade, após levar o Palmeiras à sua segunda final de Libertadores consecutiva. Mas era só aparência. Entre alfinetadas em um vizinho de seu prédio e outras falas autoafirmativas, o português deu seu recado: quer respeito para si e seu elenco.

"Eles podem até não ganhar nada este ano, mas uma coisa merecem: respeito", disse o técnico. "As minhas primeiras palavras vão para os meus jogadores, pois é com eles com quem trabalho, é com eles que eu sofro. E eu disse a eles que, até o final deste ano, não os abandonaria. Recusei três propostas porque sabia que tinha trabalho a ser feito", disse

"Foi uma vitória da equipe mais inteligente, mais organizada e, na minha opinião, com toda justiça, que precisa estar em mais uma final", disse.

Abel, que gosta tanto de discutir tática, desta vez preferiu falar do extracampo. Rechaçou, inclusive, uma pergunta sobre o uso de três zagueiros: "Não vou gastar tinta com isso, é um assunto superado", disse. Como uma metralhadora, Abel saiu disparando.

"Para ser treinador, estudei dez anos. Perdi muitos jogos, e foram as derrotas que fizeram de mim um melhor treinador", disse. "Quem quiser ouvir ouça, quem não quiser, não ouça: há quem confunda arrogância com competência, inteligência com sorte", bradou. "Tenho aqui uma segunda família. E o que vimos aqui foi uma equipe com mentalidade vencedora, 'never give up', nunca desista."

"Somos a única equipe dos quatro semifinalistas do ano ado que chegaram de novo", fez questão de lembrar. "Temos uma Libertadores impecável, limpinha, sem VAR, sem polêmica", enfatizou.

Para encerrar, ele mais uma vez aproveitou uma pergunta para atacar seus críticos. Indagado se a classificação serviria para ele conquistar de vez a torcida, ele garantiu: "Eu já conquistei, o verdadeiro palmeirense. Aqueles que são interesseiros, eu nunca vou conquistar", disse.

"Dedico [a classificação] para aqueles que amam e torcem para o clube em todos os momentos. Ou os torcedores aprendem que ser do Palmeiras é diferente ou vamos estar sempre nesta guerra".