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

A pedido de advogado, PF adia depoimentos de suspeitos de invadir celular de Moro

2.jul.2019 - O ministro Sergio Moro na Comissão de Constituição e Justiça da Câmara (CCJ) - Cláudio Reis/Estadão Conteúdo
2.jul.2019 - O ministro Sergio Moro na Comissão de Constituição e Justiça da Câmara (CCJ) Imagem: Cláudio Reis/Estadão Conteúdo

Patrik Camporez

Brasília

24/07/2019 10h22

A pedido da defesa, a Polícia Federal adiou os depoimentos de dois dos presos na operação que apura a invasão dos celulares do ministro da Justiça, Sérgio Moro, e do coordenador da Lava Jato, Deltan Dallagnol. Segundo o advogado Ariovaldo Moreira, que defende Gustavo Henrique Elias Santos e a mulher presa, identificada como Suellen Priscila de Oliveira, os dois só falarão quando ele estiver em Brasília.

Além de Santos e Suellen, detidos em São Paulo, a PF prendeu ontem Walter Delgatti Neto, em Araraquara. Há ainda um quarto preso, em Ribeirão Preto, que não foi identificado.

Os quatro suspeitos de hackear os celulares de autoridades foram transferidos para Brasília e levados para a Superintendência da PF do Distrito Federal. A ação, batizada de Operação Spoofing, foi determinada pelo juiz da 10ª Vara Federal de Brasília, Vallisney de Souza Oliveira.

Os suspeitos chegaram por volta das 19h à capital federal e, segundo a PF, apenas dois permanecerão na carceragem da Superintendência por questão de espaço. Os demais foram levados por volta das 23h para local não informado.

Moreira disse à reportagem que a Polícia Federal está "impedindo sua atuação na defesa do cliente". O advogado disse desconhecer o envolvimento de Santos com atividades de hackers. Segundo o defensor, ele trabalha como DJ. O suspeito já foi condenado em outro caso pelo Tribunal de Justiça de São Paulo por porte ilegal de arma.

Em e-mail encaminhado à PF na noite desta terça, ao qual a reportagem teve o, o advogado solicita informações acerca do cumprimento do mandado de prisão.

"Segundo consta, meu cliente Sr. Gustavo Henrique Elias Santos foi detido e encaminhado para esta unidade. Informo ainda que na qualidade de Advogado do Sr. Gustavo, não autorizo a oitiva do mesmo sem minha presença, ou que seja interrogado na presença de qualquer defensor público a ele nomeado".

O advogado também disse que precisa de mais informações sobre o local onde ele se encontra detido, bem como o horário em que será interrogado. "Estão impedindo a atuação da defesa. Disseram para eu estar presente em uma hora para o interrogatório. Mas eu fui saber da prisão quando o meu cliente já estava em Brasília. Impossível eu estar lá em uma hora", disse ele, que embarca para a capital federal nesta quarta-feira, 24.

Conforme o jornal O Estado de S. Paulo adiantou, os quatro presos em São Paulo foram transferidos para Brasília de avião e a expectativa era de que prestassem depoimento ainda nesta terça-feira na Superintendência da Polícia Federal do Distrito Federal. "Não acredito no envolvimento do meu cliente em nenhuma invasão de celular de ministro", disse o defensor de Santos. Na casa do suspeito, a PF apreendeu seu celular e documentos.