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

Grupo protesta contra Bolsonaro no Maracanã antes da final da Copa América

Em frente ao Maracanã, grupo de torcedores protesta contra o presidente Jair Bolsonaro - Divulgação/Torcedores Pela Democracia
Em frente ao Maracanã, grupo de torcedores protesta contra o presidente Jair Bolsonaro Imagem: Divulgação/Torcedores Pela Democracia

Colaboração para o UOL, em São Paulo

10/07/2021 17h20

Um coletivo de torcedores de clubes do Rio de Janeiro colocou na tarde de hoje (10) faixas de protesto contra o presidente Jair Bolsonaro (sem partido) em frente ao Maracanã, palco da final da Copa América. Em junho, o grupo Torcedores Pela Democracia já tinha protestado contra a realização do torneio no Brasil.

Na faixa exibida, o grupo afirma que o Brasil seria "campeão" com a saída do presidente Jair Bolsonaro do cargo. De acordo com Ronaldo Tavares, membro do coletivo, a adesão das pessoas ao ato foi boa, com muitos torcedores, inclusive argentinos, se aproximando para tirar fotos com a faixa.

"Acho que a gente teve metade, ou um pouco mais, de gente tirando foto, e era argentino. Acho que a questão da política, até ultraando questão do futebol, os argentinos ficaram do lado do fora Bolsonaro", disse ele em entrevista ao UOL Esporte.

Alvo do protesto do grupo, Jair Bolsonaro já tinha sido criticado pelo grupo no ato feito em frente à sede da CBF logo depois do anúncio que a Copa América seria realizada no Brasil. Na ocasião, Ronaldo afirmou que o torneio era uma forma encontrada de fazer com que a população esquecesse a realidade do Brasil.

"A gente acha que eles estão utilizando o futebol brasileiro para fazer as pessoas esquecerem do que está acontecendo no país", disse Ronaldo em junho.

A presença de Bolsonaro no Maracanã hoje não é esperada. Bolsonaro está no Rio Grande do Sul e participou de mais uma "motociatas", ato que reúne apoiadores do presidente.

O grupo Torcedores e Torcedoras Pela Democracia é um coletivo que reúne torcedores de diversas torcidas de clubes do Rio de Janeiro. O coletivo, que foi contra durante a realização da Copa América no Brasil, mantém seu posicionamento contrário ao torneio.

"Mantemos esse foco contra a realização, pela questão da vacina. Não era o momento, uma competição que não foi aceita em outros países", concluiu Ronaldo Tavares.