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

Palmeiras: Murilo reitera confiança para ser o 'zagueiro canhoto' de Abel

Murilo, novo zagueiro do Palmeiras, em sua coletiva de apresentação - Reprodução/TV Palmeiras/FAM
Murilo, novo zagueiro do Palmeiras, em sua coletiva de apresentação Imagem: Reprodução/TV Palmeiras/FAM

18/01/2022 15h01

O Palmeiras apresentou oficialmente na tarde desta terça-feira (18) o zagueiro Murilo, contratado por quase R$ 14 milhões para ser um dos cinco reforços da equipe na temporada. Em sua primeira fala como atleta do Verdão, o novo camisa 26 reiterou sua preferência por atuar pelo lado esquerdo, como queria o técnico Abel Ferreira.

"Me sinto bem pelo lado esquerdo, sempre joguei assim, desde a base, subi assim no Cruzeiro (clube onde se profissionalizou) e me sinto à vontade, vou estar bem ali, mas sempre à disposição do treinador", disse,

A chegada de Murilo ao Palmeiras vindo do Lokomotiv, da Rússia, foi cercada de dúvidas por parte da torcida. Isso porque o defensor é destro. E Abel sempre enfatizou durante toda a última temporada que sua preferência era por um canhoto. Via a chegada de um atleta com essa característica um jeito de otimizar a saída de bola da equipe por aquele lado do campo, podendo assim dar mais liberdade ofensiva para Gustavo Scarpa.

Sem o canhoto, Abel vem ensaiando a escalação de uma formação com três zagueiros, fato que não assusta Murilo.

"Nesse tipo de esquema, pode me colocar no meio (da zaga) que vou sempre estar ajudando a equipe rumo às vitórias. Onde me colocar vou dar a minha vida pelo Palmeiras. O período (pré-temporada) tem sido de muito treinamento e aprendizado daquilo que é mais importante para a equipe e de preparação para atuar onde o Abel me colocar.

O zagueiro conta que esses dias iniciais de trabalho na Academia de Futebol durante a pré-temporada têm sido fundamentais para poder entender e aprender mais sobre o estilo de trabalho do treinador português. E também para entender de que forma pode vencer a concorrência dos titulares Gustavo Gómez e Luan para poder aparecer no time titular.

"Luan e o Goméz são excelentes zagueiros, já vinha acompanhando eles, vendo os jogos, fazem uma dupla que dispensa comentários, são muito bons jogadores. O meu diferencial [nessa disputa por posição] é justamente poder atuar pelo lado esquerdo. O Palmeiras queria um jogador nessa posição e encontrou", disse.

E confiança é o que não falta para o novo camisa 26 para poder aproveitar essa nova chance no futebol brasileiro.

"Me sinto muito bem. Estou muito feliz de poder voltar ao Brasil, ainda mais no Palmeiras, e nesse período que ei lá na Rússia foi muito importante, uma história muito bonita que pude criar, de vencer títulos, de bastante aprendizado, me sinto preparado para hoje poder estar aqui com a camisa do Palmeiras treinando a cada dia, jogando".