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

Carolina Brígido

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.

Alexandre de Moraes trava queda de braço com PGR

Ministro do STF Alexandre de Moraes - Divulgação/STF
Ministro do STF Alexandre de Moraes Imagem: Divulgação/STF

Colunista do UOL

01/07/2021 17h04

O ministro Alexandre de Moraes vem travando uma queda de braço processual com a PGR (Procuradoria-Geral da República). O motivo principal é o inquérito que investigava a realização de atos antidemocráticos nas ruas no ano ado. Nesta quinta-feira (1º), Moraes arquivou o caso e abriu outro inquérito muito parecido no lugar.

Se o inquérito morto focava em movimentos de rua, o recém-nascido mira "fortes indícios e significativas provas apontando a existência de uma verdadeira organização criminosa, de forte atuação digital e com núcleos de produção, publicação, financiamento e politico absolutamente semelhante àqueles identificados no Inquérito 4.781, com a nítida finalidade de atentar contra a Democracia e o Estado de Direito", nas palavras de Moraes.

O novo inquérito usará as mesmas provas produzidas no inquérito anterior. Então, afinal, por que não seguir adiante com o inquérito dos atos antidemocráticos, incluindo a "atuação digital" nas apurações? A resposta é processual.

A PGR pediu o arquivamento da parte do inquérito dos atos antidemocráticos que tratava de parlamentares, que têm direito ao foro privilegiado, por falta de elementos mínimos que justificassem a continuidade das investigações. Processualmente, um juiz precisa atender ao pedido do Ministério Público - seja para abrir investigações, seja para encerrá-las. Moraes atendeu a esse pedido e arquivou as apurações.

Por outro lado, a PGR pediu para que as investigações sobre pessoas sem direito ao foro privilegiado prosseguissem em instância inferior. Moraes não atendeu ao pedido. Decidiu abrir outro inquérito no STF para investigar esses fatos. Atendeu às expectativas da PF (Polícia Federal), que apontou em relatório recente a presença de indícios para prosseguir com o inquérito dos atos antidemocráticos no Supremo. Embora o inquérito tenha agora outro número, o conteúdo dele é o mesmo.

Moraes ousou ao manter as investigações no STF, em vez de mandar para instâncias inferiores. Contrariou os interesses da PGR e agradou a PF. Na decisão de 84 páginas, o ministro escancarou indícios para justificar a necessidade de abertura do novo inquérito. Para o ministro, a vantagem de manter o caso no Supremo é que ele seguirá no comando das investigações. Isso não aconteceria se ele tivesse atendido ao pedido da PGR para remeter as investigações para instâncias inferiores.