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

Josias de Souza

OPINIÃO

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

Milícia cresce coligada com política e polícia

Colunista do UOL

31/08/2022 10h28

Receba os novos posts desta coluna no seu e-mail

Email inválido

O crime, como se sabe, mora perto. A Justiça, ao contrário, mora longe. No caminho entre a presença do crime e a ausência de Justiça surge a impunidade que transforma brasileiros humildes em vizinhos do mal. A realidade exposta nos depoimentos recolhidos pelo UOL é uma velha conhecida do Estado. As milícias se tornaram empreendimentos vigorosos no Rio de Janeiro graças à cumplicidade estatal.

Informações colecionadas pela Polícia Federal e pelos órgãos de informação durante o governo de Michel Temer potencializaram a constatação de que as milícias prosperaram na sombra de uma coalizão dos criminosos com a política e a polícia. Ex-interventor na área de segurança do Rio, o atual candidato a vice na chapa de Bolsonaro, general Walter Braga Netto, conhece as entranhas do problema como poucos.

Raul Jungmann, ex-ministro das pastas da Defesa e da Segurança Pública, também teve contato com a encrenca. Estima que o crime domina algo como 830 comunidades do Rio.

Os criminosos não controlam apenas o território e os negócios. Eles monitoram também o voto. Elegem representantes na Assembleia Legislativa, na Câmara Municipal e até no Congresso. Essas bancadas, segundo Jungmann, indicam prepostos para ocupar cargos públicos, inclusive na área de segurança.

No tempo em que era apenas um deputado inexpressivo do baixíssimo clero parlamentar, Bolsonaro homenageava milicianos. Tinha ao seu redor o ex-sargento Fabrício Queiroz e o ex-capitão Adriano da Nóbrega, que mantinha a mãe e uma ex-mulher na folha da rachadinha do gabinete de Flávio Bolsonaro, na Assembleia Legislativa do Rio.

Queiroz tornou-se candidato. Queria uma cadeira de deputado federal. Foi aconselhado pelo ex-chefe Flávio Bolsonaro a disputar uma vaga de deputado estadual. Adriano tornou-se um arquivo morto. Foi ado nas armas em condições esquisitas, num cerco policial, na Bahia.

Em 2018, quando disputou o Planalto pela primeira vez, Bolsonaro declarou que "as milícias tinham plena aceitação popular, mas depois acabaram se desvirtuando. aram a cobrar gatonet e gás". Como de hábito, a visão do capitão estava turvada pelo negacionismo.

Bolsonaro considerava aceitável a milícia de outrora, que cobrava uns caraminguás de comerciantes para executar pivetes e representantes da arraia-miúda do tráfico. Os traficantes sobreviveram. Muitos tornaram-se sócios da milícia, um crime que recruta pessoal dentro da polícia, sob a proteção de governantes. Formou-se uma espécie de coalizão das trevas. A Justiça tarda, mas não chega.

O UOL News vai ao ar de segunda a sexta-feira em três edições: 8h, 12h e 18h, sempre ao vivo.

Quando: de segunda a sexta às 8h, 12h e 18h.

Onde assistir: Ao vivo na home UOL, UOL no YouTube e Facebook do UOL. Veja a íntegra do programa: