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

Macron apoia proposta de Lula de realizar COP na Amazônia: 'Precisamos disso'

17.11 - Emmanuel Macron durante um encontro da Cooperação Econômica da Ásia e do Pacífico na Tailândia - LUDOVIC MARIN/AFP
17.11 - Emmanuel Macron durante um encontro da Cooperação Econômica da Ásia e do Pacífico na Tailândia Imagem: LUDOVIC MARIN/AFP

17/11/2022 08h41

O presidente francês, Emmanuel Macron, apoiou nesta quinta-feira (17) a proposta do presidente brasileiro eleito Luiz Inácio Lula da Silva de realizar a Conferência das Nações Unidas sobre as Mudanças Climáticas (COP) de 2025 na Amazônia.

"Gostaria muito que pudéssemos ter uma COP na Amazônia, portanto apoio totalmente essa iniciativa de Lula", disse Macron, em viagem a Bangkok para uma cúpula da Cooperação Econômica Ásia-Pacífico (APEC, na sigla em inglês).

"Apoio o retorno do Brasil a uma estratégia amazônica. Precisamos disso", acrescentou.

"A França é uma potência indo-pacífica e uma potência amazônica. A maior fronteira externa da França e da Europa é a fronteira de nossa Guiana com o Brasil", disse Macron.

Lula: oportunidade para o mundo conhecer a Amazônia. Durante a COP27, realizada atualmente no Egito, Lula expressou nesta quarta-feira a vontade de que a COP30 seja sediada por um estado da Amazônia, ecossistema essencial para o equilíbrio do clima global.

"Seremos cada vez mais afirmativos diante do desafio de enfrentar a mudança do clima, alinhados com os compromissos acordados em Paris e orientados pela busca da descarbonização da economia global", discursou Lula, reafirmando que a conferência seria a oportunidade de o mundo conhecer de perto esse bioma que seu governo promete proteger.

Em sua fala de aproximadamente meia hora, o presidente eleito repetiu para a audiência internacional a promessa de colocar o combate à crise climática no topo da agenda. A mensagem frisada é a de que o Brasil "está de volta" e que o isolamento internacional provocado por Jair Bolsonaro chegou ao fim.

O Brasil deveria ter sediado a COP25, em 2019, mas o governo Bolsonaro, então recém-eleito e em transição, retirou a oferta, alegando restrições orçamentárias.

Reaproximação entre Brasil e França

A vitória eleitoral de Lula no mês ado abriu caminho para uma aproximação entre Paris e Brasília, após relações tensas sob Bolsonaro.

Uma violenta polêmica estremeceu as relações entre Bolsonaro e Macron em 2019, em meio a incêndios florestais na Amazônia, cujo desmatamento aumentou acentuadamente sob Bolsonaro. Em meio a troca de farpas, o presidente ultradireitista brasileiro chegou a criticar Brigitte Macron, esposa do presidente francês, por seu aspecto físico.

Em telefonema com Lula após ao segundo turno, Macron afirmou que a eleição do petista é "uma excelente notícia" para a França. "Devo dizer que esperava com muita impaciência por este momento para que possamos reativar uma colaboração estratégica à altura de nossa história e dos desafios que temos pela frente", disse Macron, que foi um dos primeiros líderes estrangeiros a parabenizar o petista após a vitória.

Há exatamente um ano, Lula foi recebido por Macron em Paris com honras de chefe de Estado.

Nesta terça-feira, o secretário de Estado francês para Assuntos Europeus, Laurence Boone, afirmou que Paris vê o Brasil como um "parceiro essencial na América Latina".