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

"Acabei sequelado pelo Exército, pelo qual torcia", diz baleado em ocupação militar na Maré

Vitor Santiago vê com desconfiança a intervenção federal na segurança do Rio - Leonardo Coelho/UOL
Vitor Santiago vê com desconfiança a intervenção federal na segurança do Rio Imagem: Leonardo Coelho/UOL

Leonardo Coelho

Colaboração para o UOL, no Rio

15/03/2018 04h00

Adriano Bezerra, 36, era o motorista do carro no qual Vitor Santiago, 32, e outras três pessoas estavam quando militares atiraram contra o veículo no Complexo da Maré, na zona norte do Rio de Janeiro. Vitor perdeu uma perna e ficou paraplégico, e Adriano levou um tiro no braço direito.

O caso aconteceu em fevereiro de 2015 durante a ocupação do Complexo da Maré, conjunto de favelas com 130 mil habitantes, pelas Forças Armadas.

Entre 5 de abril de 2014 e 30 de junho de 2015, cerca de 20 mil militares se revezaram na chamada Operação São Francisco. Dividida em sete fases, ela teve como objetivo principal fazer a manutenção da ordem pública e permitir a implantação de UPPs (Unidades de Polícia Pacificadoras) na área, o que não aconteceu.

À época da chegada dos militares na Maré, Adriano e Vitor acreditavam que a ocupação seria positiva se conseguisse alterar o quadro de ausência do Estado na região.

“A minha opinião na época foi bem positiva”, relembra Vitor. “Mas acabei sendo sequelado pelo Exército, pelo qual eu torcia”, afirma ele, hoje aposentado por invalidez.

Adriano também viu com bons olhos a ocupação de 2014-2015, mas agora cobra melhor preparo das forças de segurança. “Eles têm que ter mais preparo para poder diferenciar trabalhador e bandido.”

O Gabinete de Intervenção Federal descarta ocupações prolongadas nos moldes da então realizada no Complexo da Maré --a ocupação, que custou R$ 560 milhões aos cofres públicos, registrou sete mortes, incluindo a do cabo Michel Augusto.

Três anos depois, a inédita intervenção federal na segurança do Rio é vista por Vitor e Adriano com um misto de receio e esperança.

“Essa é uma atitude que tinha que ser tomada”, defende Adriano, que observa que o trabalhador está pagando um preço muito alto pela insegurança, em especial as crianças, que na Maré perderam 17% das aulas devido a tiroteios, segundo um boletim da ONG Redes da Maré.

Já para Vitor o temor é que os militares comecem bem e terminem usando força bruta. “Agora eles sabem como funciona aqui e, se antes já entravam em casa sem mandado e viam celular sem autorização, imagina agora">var Collection = { "path" : "commons.uol.com.br/monaco/export/api.uol.com.br/collection/noticias/cotidiano/data.json", "channel" : "cotidiano", "central" : "noticias", "titulo" : "Cotidiano", "search" : {"tags":"11229"} };