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

Chico Alves

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Não só jornalistas e Gilberto Gil: bolsonaristas impunes ameaçam a todos

Homem e mulher apoiadores de Bolsonaro atacam equipe do UOL; Gilberto Gil e Flora Gil são ofendidos por bolsonaristas - Reprodução de vídeo
Homem e mulher apoiadores de Bolsonaro atacam equipe do UOL; Gilberto Gil e Flora Gil são ofendidos por bolsonaristas Imagem: Reprodução de vídeo

Colunista do UOL

27/11/2022 09h03

Duas mulheres ensandecidas gritam ofensas para a câmera, enquanto um homem se aproxima da cinegrafista e diz: "Filma não!". Em seguida, ele arranca violentamente o celular da mão da jornalista do UOL. No meio da confusão, em que as ameaças de agressão aumentam, um jornalista da equipe é chutado.

Isso aconteceu ontem, à frente da Academia Militar de Agulhas Negras (Aman), na cidade fluminense de Resende, onde a imprensa foi cobrir a visita do presidente Jair Bolsonaro. O surto de agressividade de "patriotas" que acampam no local há dez dias aconteceu sob os olhos de soldados da Polícia do Exército (PE).

Pela lógica das sociedades onde as leis ainda são respeitadas, no momento seguinte à agressão as autoridades (no caso, os soldados da PE ou policiais militares) deveriam dirigir-se aos baderneiros para lhes dar voz de prisão ou conduzi-los à delegacia. Ao invés disso, os militares da Polícia do Exército se limitaram a acompanhar os jornalistas ao carro de reportagem e orientar que fugissem.

"Arranca, meu filho", disse um deles.

Ou seja, não foram os agressores que tiveram que correr dos representantes da lei, por temor de alguma punição. Foram as vítimas da agressão que ouviram dos soldados orientação para fugir, antes de sofrer mais violência.

O episódio ilustra bem a redoma de impunidade que envolve os atos bárbaros das hordas bolsonaristas em vários pontos do Brasil.

Esses subversivos da extrema direita têm bloqueado rodovias, colocando em risco a vida e a integridade de milhares de compatriotas, em nome de um delírio segundo o qual a eleição foi fraudada e, por isso, as Forças Armadas deveriam tomar o controle do governo. Além disso, ações individuais tão criminosas quanto covardes se multiplicam com objetivo de tentar amedrontar os que pensam diferente deles.

As punições têm sido inexistentes ou tímidas demais, na maioria gestos protocolares de algum PM, delegado ou juiz, meramente para que não sejam acusados de prevaricação.

É essa leniência que incentiva criminosos como o bolsonarista que estava acampado com outros "patriotas" no norte Paraná a atirar contra um ônibus escolar que furou um bloqueio. Moradores daquela região identificados com a esquerda falam em se mudar e escondem a opção política por medo de sofrer violência.

A rotina de impunidade é o que garante a dois idiotas que estão no Qatar a coragem suficiente para seguir, de celular em punho, o genial Gilberto Gil e sua mulher, Flora, para constrangê-los aos brados desconexos de "Vamos Bolsonaro!", "Vamos Lei Rouanet!", "Filho da puta!". Tudo com a empáfia característica dos adultos mimados que agem como adolescentes em condomínios de gente endinheirada.

Os últimos dias têm sido pródigos em exemplos desse tipo de terrorismo, que atinge desde o cidadão comum até ministros do Supremo Tribunal Federal.

É hora de punições de verdade começarem a acontecer, não por vingança, mas para que sirvam de exemplo aos vândalos que, apesar de toda a violência, têm a cara de pau de se dizer pacíficos.

Esses trogloditas são considerados ordeiros até por generais do Exército - da reserva e da ativa — que têm manifestado seu apoio aos golpistas vestidos com camisas da seleção.

Nesse sentido, é simbólico que o ataque à equipe do UOL tenha ocorrido justamente à frente de um quartel. Afinal, essa escalada de violência ocorre como resultado de um projeto político gestado pelas Forças Armadas, que teve Bolsonaro como uma espécie de boneco de ventríloquo.

Como se sabe, a proximidade do bolsonarismo com a caserna faz a possibilidade de punição cair drasticamente.

A não ser que a sociedade civil se mobilize para garantir que a lei seja cumprida e que os brucutus paguem pelos seus crimes.

Mãos à obra.