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

Garrafa como mascote da Copa vira 'crise' no Uruguai e pode cair no tapetão

Botija, a garrafa térmica que pode ser mascote do Uruguai na Copa do Mundo - Divulgação/AUF
Botija, a garrafa térmica que pode ser mascote do Uruguai na Copa do Mundo Imagem: Divulgação/AUF

Marinho Saldanha

Do UOL, em Porto Alegre

27/07/2022 04h00

Classificação e Jogos

Ela é simpática, azul celeste e carrega uma cuia em uma das mãos. Esta é a sorridente Botija, uma garrafa térmica eleita em votação organizada pela Associação Uruguaia de Futebol (AUF) como mascote da seleção na Copa do Mundo do Qatar. Mas uma mudança no regulamento da disputa gerou 'crise' no país vizinho e a decisão popular pode mudar no tapetão.

No último dia 21, a AUF informou o resultado do concurso realizado nas redes sociais que serviria para eleger a mascote da seleção na Copa deste ano. Nele, foram apresentadas cinco opções de mascotes. A Botija concorria com Marguy (uma jaguatirica), Garrancho (um condor), Tranque (um cavalo) e Zo Rou (uma raposa).

Segundo nota oficial da entidade, foram 101.547 votos no total. E a térmica levou a melhor com 58,2% da votação. O segundo, Marguy, teve míseros 12,2%.

Só que a associação não esperava que a térmica vencesse. Então, inesperadamente criou uma 'segunda etapa', justificando a mudança de regulamento da eleição no "grande interesse do público" e nas "novas ideias que surgiram".

Então, abriu prazo para envio de novas imagens do "público geral" até ontem (26) e ainda não informou quais serão os próximos candidatos a destronar a simpática térmica, que carrega uma cuia de mate — bebida tradicional da região — na mão.

Golpe da Botija

A nova votação, ainda sem data para iniciar, gerou reação adversa dos fãs da garrafinha. Nas redes sociais, muitos torcedores reclamaram da etapa adicional, uma vez que a Botija venceu a concorrência estabelecida.

Ao mesmo tempo, desenhistas uruguaios também se colocaram contra o regulamento. O desenho vencedor, seja de profissional ou amador, não irá gerar qualquer rendimento ao autor. Ainda nas redes sociais, houve campanha pedindo que desenhistas não enviassem opções.

Botija é pop

O sucesso da garrafa térmica foi imediato. Um estudo publicado no site uruguaio Nicestream apontou que o candidato a mascote rompeu barreiras, sendo citado em vários países, como França, Espanha, Estados Unidos e Suíça.

Segundo o conteúdo, Botija chegou aos Trending Topics (assuntos mais comentados no Twitter) no país ao mesmo tempo que a torcida do Nacional puxava campanha pelo retorno de Luis Suárez ao clube. Entre mídia e redes sociais, a Botija teria alcançado quase meio milhão de pessoas.

Agora, resta saber se a AUF vai aceitar o sucesso da Botija e, dependendo do resultado do próximo concurso, já terá o primeiro objeto a colocar na mala para o Qatar. Se bem que na bagagem dos uruguaios, garrafa térmica e cuia normalmente não faltam.