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

Amigo afirma que Khashoggi recebeu ameaças de oficial saudita antes de ser morto

O jornalista saudita Jamal Khashoggi, assassinado no consulado da Arábia Saudita em Istambul, em outubro de 2018 - Getty Images
O jornalista saudita Jamal Khashoggi, assassinado no consulado da Arábia Saudita em Istambul, em outubro de 2018 Imagem: Getty Images

24/11/2020 10h25

Um amigo do jornalista saudita Jamal Khashoggi, assassinado em 2018 em Istambul, afirmou hoje que ele recebeu ameaças de morte de uma pessoa próxima ao príncipe herdeiro da Arábia Saudita, durante a retomada de um julgamento simbólico na Turquia.

Vinte sauditas, dois deles próximos ao príncipe herdeiro Mohamed Bin Salman ("MBS"), são julgados à revelia em Istambul pelo assassinato de Khashoggi no consulado da Arábia Saudita em Istambul em outubro de 2018. A segunda audiência aconteceu nesta terça-feira.

No tribunal, Ayman Nur, opositor egípcio e amigo de Khashoggi, declarou que o jornalista havia sido ameaçado por Saud al Qahtani, ex-conselheiro do príncipe herdeiro, que está entre os acusados, segundo a imprensa.

"Jamal me contou que recebia ameaças de Qahtani e seu entorno" declarou Nur, citado pelo jornal Sabah.

Kashoggi, que inicialmente era um aliado do regime saudita, se tornou um dissidente e era acusado de vínculos com a Irmandade Muçulmana, proibida por Riade. Os restos mortais do colaborador do jornal Washington Post, de 59 anos, nunca foram encontrados.

O assassinato de Jamal Khashoggi provocou uma das piores crises diplomáticas para a Arábia Saudita e abalou a imagem do príncipe herdeiro Mohamed Bin Salman, apontado por autoridades turcas e americanas como o instigador do crime.

Em setembro, um tribunal saudita anulou as penas de morte impostas a cinco acusados após um julgamento a portas fechadas, criticado pela comunidade internacional, e os condenou a 20 anos de prisão.

O presidente turco Recep Tayyip Erdogan indicou que a ordem par cometer o assassinato veio dos "níveis mais elevados", do governo saudita, mas nunca acusou diretamente o príncipe herdeiro.