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

Jamil Chade

Beirute analisa destroços químicos da explosão; Brasil tem equipe no Líbano

Visão aérea do porto de Beirute após explosão - Reprodução
Visão aérea do porto de Beirute após explosão Imagem: Reprodução

Colunista do UOL

19/08/2020 04h02

Receba os novos posts desta coluna no seu e-mail

Email inválido

Técnicos do governo brasileiro começam a fazer parte dos esforços de Beirute para o estabelecimento de um plano de remoção das substâncias químicas que explodiram no porto da cidade, no início do mês. O envolvimento do Brasil está sendo negociado e uma missão para estabelecer a participação do país ocorre neste momento, no Líbano.

Depois da agem de uma missão liderada pelo ex-presidente Michel Temer pela capital libanesa com doações emergenciais, três técnicos do governo permaneceram no país para avaliar de que forma o Brasil poderia auxiliar no momento de reconstrução da cidade, avaliação ambiental, limpeza química, e no setor médico.

A equipe nacional é composta por Raquel Negrelle, da Universidade Federal do Paraná e parte do Grupo Interministerial sobre Cooperação Humanitária Internacional junto ao Escritório de Avaliação de Desastres das Nações Unidas. Além dela, fazem parte da missão Ana Flávia Rodrigues Freire, do Centro Nacional de Gerenciamento de Riscos e Desastres, e Vitor Almeida Miranda, do Instituto Nacional de Traumatologia e Ortopedia.

Três setores aram a ser avaliados pelo Brasil. O primeiro deles é o de meio ambiente e a remoção dos resíduos tóxicos. Nesta quarta-feira, um encontro entre a ONU (Organização das Nações Unidas), as autoridades locais, parceiros internacionais e os técnicos brasileiros está agendado para ocorrer em Beirute para tratar sobre como cada país estará implicado no projeto.

Segundo os técnicos, não basta apenas retirar o material que explodiu do local. Um plano da remoção precisa ser estabelecido, assim como um destino seguro para os resíduos. Muitos desses produtos sequer ainda foram identificados. Caso se confirme, o trabalho pode ser realizado pelo Ibama (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis).

Fontes nas Nações Unidas confirmam à coluna que não há uma análise do impacto que a explosão teve no mar Mediterrâneo, por exemplo. De acordo com a agência, há um esforço para tentar determinar que tipo de detritos perigosos atingiram Beirute após a explosão no porto.

"Em segundos, Beirute foi coberta por camadas e camadas de detritos", disse Rekha Das, assessora de crise do Programa de Desenvolvimento das Nações Unidas.

"Estamos avaliando os tipos de detritos: os tijolos, o aço, o vidro, o lixo perigoso, o lixo médico e o lixo eletrônico também precisam ser tratados. Temos que descobrir o que é perigoso e o que não é. O que pode e o que não pode ser reciclado".

"E se não pode ser reciclado, onde ele pode ser descartado com segurança? O Líbano já tinha uma enorme crise de resíduos sólidos antes da explosão", alertou.

O segundo aspecto é a colaboração do Brasil em reforçar a segurança de locais onde estão estocados materiais sensíveis e identificar os motivos da explosão. Os técnicos brasileiros, porém, não farão parte da comissão de inquérito que está sendo formada para investigar o acidente.