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

Rodrigo: 'não dá para saber' se tiros em Paraisópolis foram por política

Tarcísio de Freitas e Rodrigo Garcia - Reprodução
Tarcísio de Freitas e Rodrigo Garcia Imagem: Reprodução

Do UOL, em São Paulo

17/10/2022 12h26

O governador de São Paulo Rodrigo Garcia (PSDB) declarou ter determinado a "imediata investigação" a respeito dos tiros ocorridos em Paraisópolis durante agenda de Tarcísio de Freitas (Republicanos), candidato ao governo de São Paulo.

Em entrevista à CNN nesta tarde, o governador confirmou que um suspeito foi morto na ação, como Tarcísio havia afirmado nas redes sociais. Segundo ele, a Polícia Civil e Polícia Militar estão no local desde o incidente.

"Um dos bandidos foi alvejado e veio a óbito, e graças a Deus todos estão bem. Determinei toda agilidade nessa investigação para a gente esclarecer e identificar os bandidos que participaram disso", disse.

O governador chamou o ocorrido de "atentado", mas depois recuou e não confirmou motivação política no ato. Segundo ele, porém, teria ocorrido um "confronto" entre "os seguranças de Tarcísio e bandidos".

"Não dá para saber se é um ataque de motivação política ou não. Por enquanto, não dá nem para a gente de nominar isso como um atentado. Dá para denominar como uma tentativa de crime que foi abordada pelos seguranças e foi evitada".

Rodrigo Garcia também buscou afastar a imagem dos tiros da comunidade de Paraisópolis. "Ele foi ocorrido dentro da comunidade de Paraisópolis, uma comunidade de bem, onde todos andam livremente. Não podemos confundir isso com a localidade que ocorreu esse atentado", acrescentou Rodrigo.

Tarcísio disse estar bem. Em um comunicado no Twitter, o candidato disse que detalhes estão sendo apurados.

"Em primeiro lugar, estamos todos bem. Durante visita ao 1º Polo Universitário de Paraisópolis, fomos atacados por criminosos. Nossa equipe de segurança foi reforçada rapidamente com atuação brilhante da PM. Um bandido foi baleado. Estamos apurando detalhes sobre a situação", diz a publicação do ex-ministro da Infraestrutura.

O candidato deixou o local às pressas escoltado por seguranças. As pessoas que acompanhavam a agenda foram orientadas pela equipe de segurança do candidato a deitar no chão e se afastar das janelas.