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

Leonardo Sakamoto

Com fogos e tochas contra o STF, bolsonaristas querem derreter a democracia

Bolsonaristas jogam fogos de artifício contra o STF  -  Reprodução
Bolsonaristas jogam fogos de artifício contra o STF Imagem: Reprodução

Colunista do UOL

14/06/2020 11h55Atualizada em 14/06/2020 20h52

Receba os novos posts desta coluna no seu e-mail

Email inválido

Dois protestos bolsonaristas usaram fogo contra o Supremo Tribunal Federal no espaço de duas semanas. Mesmo que organizados por um grupo diminuto para gerar impacto midiático, eles não podem ser ignorados sob o risco do naco radical da base do presidente da República sentir-se mais à vontade para avançar na afronta às instituições democráticas.

Após a Polícia Militar ter desativado o acampamento do grupo de extrema direita "300 pelo Brasil" na Esplanada dos Ministérios, coletivo batizado pelo Ministério Público de "milícia armada", o STF foi alvo de fogos de artifício, na noite deste sábado (13). Em um vídeo, que circulou pelas redes, as imagens são acompanhadas de ameaças a ministros da corte.

Dois sábados atrás, no dia 31 de maio, menos de 30 dos "300" realizaram um protesto na frente do Supremo, carregando tochas acesas, usando máscaras e ameaçando ministros da corte. A imagem ecoou a estética de atos supremacistas brancos nos Estados Unidos. O ato ocorreu após a sua porta-voz, Sara Winter, ter sido alvo de uma operação da Polícia Federal em meio ao inquérito das fake news.

O simbolismo bíblico da purificação através do fogo está presente nesses flash mobs de apoiadores do presidente, bem como em outros da extrema direita ao longo da história e ao redor do mundo. Domingo após domingo, Brasília viu bolsonaristas radicais acusarem o STF e o Congresso Nacional de serem o lixo da República e defenderem um golpe militar e um novo AI-5 para permitir que Bolsonaro possa limpar o país. Repetem palavras que o próprio usou durante a campanha eleitoral e em toda a sua carreira.

Deve-se zelar pela liberdade de manifestação e garantir a liberdade de crítica, mesmo que dura, contra os poderes da República. Mas há limites, pois não há direitos absolutos. Enquanto a ação das tochas foi ética e esteticamente deplorável, o lançamento de fogos de artifício na sede do Poder Judiciário colocou em risco as instalações e as pessoas que lá trabalhavam. E ultraa um limite importante, abrindo caminho para a normalização de ataques a instituições e indivíduos se não houver a devida resposta.

Imagine se o Palácio do Planalto tivesse sido alvo de um bombardeio de fogos de artifício ou de um grupo de mascarados carregando tochas? O presidente estaria acusando uma tentativa de golpe de Estado, exigindo que seus opositores fossem caçados e conclamando seus apoiadores a virem de todas as partes do país defenderem a sede do governo ao lado das Forças Armadas.

Esse tipo de ação contra a cúpula de outro poder só ocorre, por sua vez, porque Jair Bolsonaro criou entre seus apoiadores a sensação de tudo pode. Ele que, como diria Guimarães Rosa, soltou "o diabo na rua, no meio do redemunho", poderia puxar suas rédeas de volta. Mas não fará tal coisa porque depende desse estado de constante tensão e beligerância para se manter politicamente vivo.

Cabe às demais instituições evitarem uma escalada de ataques contra a sua integridade e punirem quem organiza e incentiva esse tipo de ação. Pois se nem o STF está a salvo de ataques por suas decisões, imagine o risco que corre o cidadão comum, que professa sua opinião sem a proteção de seguranças e de um cargo público.

Ao contrário do que pensa a turma do deixa-disso, o que aconteceu não é bobagem. Primeiro porque a construção de limites democráticos é uma atividade cotidiana. E porque bolas de neve gigantescas podem começar bem pequenas.