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

Após músico detonar Brasil, irmão de Lana diz que quer se mudar pro país

Lana Del Rey e o irmão Charlie Grant, que disse querer se mudar para o Brasil - Reprodução/ Twitter/ Instagram @final_garden
Lana Del Rey e o irmão Charlie Grant, que disse querer se mudar para o Brasil Imagem: Reprodução/ Twitter/ Instagram @final_garden

Colaboração para Splash, em São Paulo

03/06/2023 18h01Atualizada em 03/06/2023 23h09

Charlie Grant, 30, irmão de Lana Del Rey, 37, disse que pretende se mudar para o Brasil. Ele está acompanhando a cantora em agem no Brasil para shows.

A vontade de morar no Brasil foi anunciada através dos Stories do Instagram e veio poucos dias após um músico da cantora xingar o Brasil após ser assaltado. Na rede social Charlie diz que é agente imobiliário.

"Brasil, eu te amo tanto. Estou movendo here", escreveu ele, misturando português e inglês, provavelmente querendo dizer que estava se mudando para cá.

"E eu estou chegando com grandes planos. Estilo americano, claro", ressaltou.

No mesmo post temporário feito neste sábado, dia que a cantora canta em São Paulo, ele ainda escreveu "America" isoladamente, sem especificar se era em referência aos Estados Unidos ou ao continente americano.

Tatuagem. Nos bastidores do show de Lana em São Paulo, Charlie aproveitou para fazer uma tatuagem na região do abdome. O rapaz escreveu "Brazil".

Músico teve opinião diferente

As experiências que Charlie viveu no Brasil como ter subido no Cristo Redentor e ir na Amazônia destoam da primeira impressão que o músico de Lana, Will Whitney, teve do Brasil.

Na última quarta-feira (31) ele relatou ter sido vítima de um assalto e que o seu celular foi levado no Rio de Janeiro.

Ele fez um desabafo e atacou o Brasil: "Acabei de ter meu iPhone roubado na minha mão por um pedaço de merd* numa moto. Foda-s* este país inteiro. Eles não merecem música ao vivo. Mal posso esperar para ir para casa".

Horas depois ele pediu desculpas pelo desabafo e ofensas: "Gostaria de pedir desculpas pelo meu post sobre ser assaltado no Rio. A experiência realmente me abalou e escrevi um post no auge das minhas emoções".