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

Reinaldo Azevedo

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

Jefferson ensina em vídeo a matar policiais. E a ameaça à família de Moraes

Roberto Jefferson, o patriota dos pilantras, faz mira em vídeo, incitando "cristãos" a matar policiais. O troço foi feito por ele, não por seus adversários - Reprodução
Roberto Jefferson, o patriota dos pilantras, faz mira em vídeo, incitando "cristãos" a matar policiais. O troço foi feito por ele, não por seus adversários Imagem: Reprodução

Colunista do UOL

13/08/2021 23h18

Receba os novos posts desta coluna no seu e-mail

Email inválido

Sim, os cuidados até a decretação da prisão preventiva de Roberto Jefferson foram excessivos. Está mais do que justificada, segundo dispõe o Artigo 312 do Código de Processo Penal. Este senhor deveria ter sido preso em flagrante quando postou nas redes sociais, no dia 2 de abril, um vídeo em que incitava ao assassinato de policiais. Ele segue abaixo.

Vejam aí: não há dúvidas a respeito. Aqueles que devem, a seu juízo, ser alvos dos tiros são pais de família que estariam aplicando decisões judiciais. De resto, por óbvio, não se viu força armada nenhuma a ameaçar templos religiosos, ainda que muitos deles tenham desrespeitado a lei.

Mas, sim, houve casos em que a intervenção policial, num país em que já morreram quase 600 mil pessoas, se fez necessária. O discurso de Jefferson, nesse vídeo, com sua linguagem aparentemente religiosa — é só um delírio paranoico ou o fingimento de um falso maluco —, pode estimular muitos a partir para a ação direta.

A pergunta é clara, e a resposta tem de ser clara: uma democracia deve abrigar o presidente de um partido político — interlocutor do chefe do Executivo, líder de uma bancada de deputados — que incita ao assassinato de policiais?

E, como se sabe, esses não são seus únicos alvos. Também estão na mira os Poderes constituídos, particularmente o Supremo. Que as milícias bolsonaristas e o PCO tenham decidido defender o "direito" de Jefferson à suposta divergência e atacado a correta decisão de Alexandre de Moraes fala por si.

E como reagiu Jefferson minutos antes de ser preso? Foi para as redes sociais e postou o seguinte:
"Xandão, maridão de dona Vivi, cachorro do STF, decretou minha prisão por crime de milícia digital. Ele está repetindo os mesmos atos do Supremo da Venezuela, prendendo os Conservadores para entronizar os comunistas. Deus. Pátria. Família. Vida. Liberdade".

Abstenho-me das considerações sobre Jefferson ser um "conservador" ou tentar ligar Moraes ao governo da Venezuela... É de um ridículo sem par. Destaco, claro!, a ofensa ao ministro — que nada tem a ver com divergência de ideias — e a alusão à mulher do magistrado. Mesmo os mais simplórios percebem tratar-se de uma ameaça. É como dizer: "Conhecemos a sua família".

A prisão é preventiva. Garantido o direito de defesa, com todas as suas prerrogativas — COISA QUE O GOLPE MILITAR QUE JEFFERSON DEFENDE NÃO GARANTIRIA —, o lugar deste senhor é mesmo a cadeia. Mas não como preso preventivo. Como condenado.