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

Pré-Olímpico: olheiros são tratados com luxo e tem até hotel exclusivo

Observadores lotam setor reservado em jogos do Pré-Olímpico na Colômbia - Danilo Lavieri/UOL Esporte
Observadores lotam setor reservado em jogos do Pré-Olímpico na Colômbia Imagem: Danilo Lavieri/UOL Esporte

Danilo Lavieri

Do UOL, em Armênia (Colômbia)

27/01/2020 04h00

Se não tem sido tão popular entre torcedores, o Pré-Olímpico na Colômbia é sucesso absoluto com observadores de times de todo o mundo. Em todas as partidas, tanto na cidade de Armênia quanto em Pereira, o espaço reservado para os "caça-talentos" está sempre lotado. Até mesmo pela idade limite de inscrição, que é de até 23 anos, essa é considerada uma das últimas chances para boa parte dos atletas conseguir um grande contrato na Europa.

Provenientes de todo o mundo, os profissionais trabalham muito mais em conjunto do que pode parecer. Normalmente custeados pelos empresários dos atletas que sonham com uma chance de brilhar em times grandes, os olheiros às vezes conseguem reservar um hotel só para eles. Quando não há gente o suficiente, eles conseguem pelo menos uma ala especial.

No dia a dia, eles se deslocam sempre em grupo. Também com dinheiro fornecido pelos empresários, os olheiros vão de um estádio a outro em vans fretadas, com horário marcado para sair e para voltar do hotel.

Ao chegar no estádio, eles têm a entrada sempre orientada diretamente para um setor reservado, com ingressos pagos pelos agentes ou pelos seus respectivos clubes. Sentam lado a lado, com um caderno de anotações e um mapa do campo para mostrar a movimentação específica de cada um dos atletas. Não há clima de rivalidade.

Alguns deles chegam ao local com atletas específicos para observar. Outros assistem à partida inteira e anotam os seus destaques. Depois, de volta aos quartos, eles produzem relatórios específicos dos jogadores e enviam para seus clubes.

Na Colômbia, estão times do mundo inteiro: Liverpool, Real Madrid, Juventus, Olympique de Marselha, Borussia Dortmund, Fenerbache, Internacional, Red Bull Bragantino são só alguns exemplos. Vários deles já têm alguém destacado na América do Sul para fazer observação. Os que não têm também enviam um representante diretamente da Europa.

Se o time se interessa por algum destaque, ele responde ao olheiro para afinar a observação e, muitas vezes, buscar informações sobre a situação do atleta no atual clube. É aí que as equipes começam a estudar a viabilidade da contratação.

Nos dias de folga, eles também têm tratamento especial. Em um dia livre na Colômbia, por exemplo, os observadores foram levados para um eio especial em uma das centenas de fazenda de café na região de Armênia. Foram dois ônibus fretados lotados por eles para um dos turismos mais fortes na cidade-sede do Brasi no Pré-Olímpico.

Os jogadores mais observados por eles do Brasil já têm destino: Bruno Guimarães vai para o Lyon, e Reinier, para o Real Madrid. Na Colômbia, o destaque tem sido Jorge Carrascal, que é do River Plate. Ainda há nomes como Soteldo, da Venezuela, Erik Lopez, do Paraguai, Nehuen Perez, da Argentina, e Matias Arezo, do Uruguai.