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

Bolsonaro se nega a falar com Inpe e diz que ambiente é uma "psicose"

Divulgação/Ibama
Imagem: Divulgação/Ibama

Antonio Temóteo

Do UOL, em Brasília

21/07/2019 16h33

Após ser criticado pelo diretor do Inpe (Instituto Nacional de Pesquisas Espaciais), Ricardo Magnus Osório Galvão, o presidente Jair Bolsonaro afirmou que não tratará do assunto. Segundo ele, os ministros da Ciência e Tecnologia, Marcos Pontes, e do Meio Ambiente, Ricardo Salles, devem cuidar do tema. Galvão disse que queria falar diretamente com Bolsonaro.

"Eu não vou falar com ele. Quem vai falar com ele vai ser o Marcos Pontes e talvez também o Ricardo Salles. O que nós não queremos é uma propaganda negativa do Brasil. A gente não quer fugir da verdade, mas aqueles dados pareceram muito com os do ano ado, e deu um salto. Então eu fiquei preocupado com aqueles números, obviamente, e fiquei achando que eles poderiam não estar condizentes com a verdade."

Segundo Bolsonaro, há uma "psicose ambiental" no mundo e a divulgação de dados sobre o tema deve ser cuidadosa porque pode atrapalhar acordos internacionais.

Bolsonaro duvidou dos dados de desmatamento da Amazônia divulgados pelo instituto e disse que o diretor do órgão poderia estar a serviço de uma organização não-governamental. O diretor do Inpe respondeu que Bolsonaro foi "pusilânime" e estaria forçando um pedido de demissão. "Ele tomou uma atitude pusilânime, covarde, de fazer uma declaração em público talvez esperando que peça demissão, mas eu não vou fazer isso. Eu espero que ele me chame a Brasília para eu explicar o dado e que ele tenha coragem de repetir, olhando frente a frente, nos meus olhos."

Brasil não pode fazer propaganda negativa, diz Bolsonaro

"Olha, o que acontece aí fora, não é o meu nome que está mal na foto, é o do Brasil. O Brasil não pode fazer propaganda contra ele mesmo. A questão ambiental aí fora é uma verdadeira psicose ambiental. Se houver desmatamento, divulga-se", declarou.

Entretanto, o presidente disse que, antes de qualquer divulgação, os dados devem ser reados ao ministro da área para que ele se prepare para eventuais críticas.

Bolsonaro: Tenho tanta crítica ao NE, que casei com uma filha de cearense

UOL Notícias