;(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 confirma encontro com assessor de Segurança Nacional de Trump

24.set.2018 - O assessor de segurança nacional dos Estados Unidos, John Bolton (esq.), ao lado de Donald Trump e Mike Pompeo, secretário de Estado norte-americano - REUTERS/Caitlin Ochs
24.set.2018 - O assessor de segurança nacional dos Estados Unidos, John Bolton (esq.), ao lado de Donald Trump e Mike Pompeo, secretário de Estado norte-americano Imagem: REUTERS/Caitlin Ochs

Do UOL, em São Paulo

23/11/2018 08h12

O presidente eleito, Jair Bolsonaro (PSL), confirmou na manhã desta sexta-feira (23) o encontro com o assessor de Segurança Nacional dos Estados Unidos, John Bolton. A conversa deverá acontecer no Rio de Janeiro, na quinta-feira (29).

"Feliz de receber a visita do conselheiro de Segurança Nacional dos Estados Unidos, Sr. John Bolton, na próxima semana. Certamente teremos uma conversa produtiva e positiva em prol de nossas nações", escreveu Bolsonaro no Twitter.

O próprio Bolton já havia confirmado a reunião, dois dias atrás. "Ansioso para encontrar com o próximo presidente do Brasil, Jair Bolsonaro, no Rio, em 29 de novembro. Compartilhamos muitos interesses bilaterais e trabalharemos de perto para aumentar a liberdade e a prosperidade em todo o hemisfério ocidental", escreveu o assessor, também no Twitter.

O assessor de Segurança Nacional deverá fazer escala no Brasil antes de seguir para Buenos Aires, no encontro do G-20 na Argentina.

Este será o primeiro encontro oficial entre um representante do núcleo do presidente Donald Trump e o futuro chefe de Estado brasileiro. No início de novembro, pouco depois do segundo turno das eleições presidenciais, Bolsonaro se encontrou com embaixador americano no Brasil, P. Michael McKinley.

Um dos principais conselheiros de Donald Trump, Bolton é considerado linha-dura em sua visão sobre política externa, com críticas duras a Venezuela, Cuba e Nicarágua. Em discurso no início do mês, chamou os países de "Troica da Tirania e acenou ao Brasil, dizendo que o governo Bolsonaro seria um aliado na América Latina nas áreas de segurança e economia.

O encontro entre Bolsonaro e Bolton é mais um sinal de aproximação do governo recém-eleito com os Estados Unidos, considerado prioridade do novo presidente brasileiro na área de política externa. O capitão reformado escolheu o embaixador Ernesto Araújo, entusiasta de Trump, para chefiar o Ministério das Relações Exteriores.

Em agosto, o deputado federal Eduardo Bolsonaro (PSL-SP), filho do capitão reformado, encontrou nos Estados Unidos com Steve Bannon, que foi estrategista da campanha de Trump à Casa Branca.

Depois de vencer a eleição de outubro, Bolsonaro disse que planejava visitar Washington após uma ligação telefônica amigável com Trump. O presidente dos EUA, por sua vez, disse que teve uma "ligação excelente" parabenizando Bolsonaro e postou no Twitter sobre seus planos de "trabalhar de perto em questões comerciais e militares.

Na semana ada, tanto o Conselho de Segurança Nacional dos EUA, chefiado por Bolton, como uma integrante do Departamento de Estado norte-americano elogiaram a postura de Bolsonaro em relação à Cuba no programa Mais Médicos.

O entorno de Bolsonaro tenta assegurar a presença de Trump na posse de Bolsonaro em 1º de janeiro, no que seria a primeira visita do presidente norte-americano ao Brasil em quase dois anos de governo.