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

Influencer diz ter recebido mil pedidos de casamento para deixar a Ucrânia

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

04/07/2022 09h31Atualizada em 05/07/2022 20h33

Uma influenciadora ucraniana diz já ter recebido mais de mil pedidos de casamento para deixar o país europeu, que está em guerra contra Rússia desde o final de fevereiro. Louisa Khovanski mora em Kiev, capital da Ucrânia, e contou ao tabloide britânico The Sun que homens do mundo todo estão usando o conflito no país como desculpa para dar em cima dela.

Com 2,6 milhões de seguidores no Instagram, a influencer diz que foi oferecido até segurança em troca de sexo. "Em muitos casos, eles me ofereceram seu quarto, como se quisessem que eu dormisse com eles em troca de segurança", disse Louisa. "Muitas pessoas me pediram em casamento para deixar a Ucrânia".

Ela afirmou que seus seios atraem a atenção de muitos homens, e agora eles viram a guerra como uma chance de dar em cima da influencer. Louisa disse que recusou todas as ofertas e prefere ficar no país em guerra.

"Era mais perigoso aceitar essa situação do que viver na Ucrânia durante o período de guerra. Decidi ficar na Ucrânia e recusei todos os pedidos. Não ia sair para fazer algo quando não sabia o que era", avalia.

A ucraniana acha "perturbador" que os homens estejam tirando proveito da situação para conseguir algum compromisso com ela. "É triste que alguns homens estejam tentando se beneficiar da guerra na Ucrânia e nos usar mulheres", disse Louisa, que pretende sair do país perto da estação do inverno.

Apesar de não aceitar nenhuma oferta, ela pretende sair do país em breve - Reprodução/Instagram - Reprodução/Instagram
Apesar de não aceitar nenhuma oferta, ela pretende sair do país em breve
Imagem: Reprodução/Instagram

A influencer diz que, além das propostas indecentes, os seios também causam outros problemas, como fazer exercícios. "Se eu quiser dar uma caminhada calma ao ar livre enquanto estou fazendo exercícios, tenho que usar roupas largas. Esta é a única maneira de eu levar uma vida normal na sociedade. Se eu usar um vestido que gosto, começo a receber muita atenção indesejada, então evito".