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

Esse conteúdo é antigo

PM é flagrado agredindo morador de rua e cachorro no interior de SP; veja

Simone Machado

Colaboração para o UOL, em São José do Rio Preto (SP)

02/12/2019 16h36

Um policial militar foi flagrado agredindo um morador de rua e jogando spray de pimenta em um cachorro, na tarde de ontem, na praça central de Junqueirópolis (SP), a cerca de 540 km de São Paulo. A agressão foi filmada por moradores que estavam próximos ao local. A Polícia Militar reconheceu que "houve uma ação inadequada" do policial e abriu inquérito para apurar os fatos (leia mais abaixo).

No vídeo feito por moradores e divulgado nas redes sociais, é possível ver o morador de rua sentado em um banco da praça e o policial militar em pé. Um cachorro que pertence ao andarilho está perto e late bastante. O PM pega um spray de pimenta e borrifa várias vezes contra o animal. O policial ainda dá um chute no morador de rua, que não reage.

De acordo com moradores que presenciaram a cena, o andarilho também teria agido de maneira agressiva e xingado o policial. No entanto, ainda segundo os moradores, isso foi antes de o vídeo ser gravado.

"Esse morador sempre fica aqui na praça. Ele costuma xingar as pessoas quando am e o cachorro dele é bastante agressivo, avança em todo mundo. Mas é só um animal, acredito que não precisava dessa agressão toda", diz um dos moradores que fizeram o vídeo e que pediu para não ser identificado.

O vídeo ganhou repercussão e o caso também foi parar na Polícia Civil. Um Boletim de Ocorrência de abuso de autoridade foi registrado e a conduta do Polícia Militar também será investigada pelo órgão.

O que diz a Polícia Militar

Em nota, a Polícia Militar afirmou que houve uma ação inadequada por parte do policial que aparece nas imagens. Um inquérito interno for instaurado para apurar os fatos.

"Inicialmente os policiais militares foram acionados para atender ocorrência de animal agressivo na praça, fato este recorrente na cidade, inclusive com encaminhamento a outros órgãos competentes", diz o comunicado.

"O 25º Batalhão de Polícia Militar do Interior lamenta o episódio, pois, após análise das imagens, verificou-se que houve uma ação inadequada do policial militar, o qual não reflete o preconizado em treinamentos e na doutrina de defesa do cidadão. Cabe ressaltar que a Polícia Militar não compactua com nenhum tipo de irregularidade praticada pelos seus integrantes, sendo implacável com os desvios de conduta."