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

Guerra da Rússia-Ucrânia

Notícias do conflito entre Rússia e Ucrânia


Esse conteúdo é antigo

'Destruíram a cidade e atacaram o povo': reações de ucranianos após bombas

Herculano Barreto Filho

Do UOL, em São Paulo

02/03/2022 04h00

Um ataque aéreo russo contra um prédio do governo na cidade de Kharkiv, a segunda maior da Ucrânia, deixou ontem ao menos 25 mortos, um rastro de destruição e espalhou o terror entre a população.

"Destruíram a cidade e atacaram o povo", lamentou uma mulher, enquanto registrava em vídeo a região atingida pelo bombardeio. Após o atentado, ucranianos relataram falta de luz em diversos trechos da cidade.

Em um dos vídeos feitos por moradores, uma ucraniana filmou os rastros de destruição.

"Olha como ficou a minha cidade! Mandem esse vídeo para todos os russos para mostrar a realidade. Porque lá [na Rússia], eles falam que só atacam pontos estratégicos e não matam civis. Isso é uma mentira! Destruíram a cidade e atacaram o povo", desabafou, com a respiração ofegante.

Em meio aos destroços, a mulher ucraniana responsável pela gravação do vídeo diz não se conformar com o que vê.

Olha o calibre que os russos usaram para atingir os prédios! Olha como ficaram os prédios onde eu costumava ficar quando tinha um tempo livre. Não acredito no que estou vendo! Olha o que os russos estão fazendo com o nosso país"
Ucraniana enquanto filma destruição após bombardeio

Em um dos bairros da cidade, ucranianos filmam o cenário arrasado enquanto caminham por ruas vazias. A gravação começa em frente a uma padaria atingida pelo ataque e segue pelas ruas da região.

"Os prédios estão destruídos. Lá tem fogo! Vamos mais rápido, talvez alguém precise de ajuda", diz um deles. No vídeo, é possível ver um homem morto com o corpo parcialmente coberto por uma árvore. Nesse momento, a gravação é interrompida.

De dentro de um carro, uma ucraniana desabafa: "Essas são as bombas que eles jogam dos aviões nas nossas casas".

'Eu queria salvar a minha mãe', diz ucraniano no Brasil

O ucraniano Anton Ukhyk, de 34 anos, que mora com a esposa e os dois filhos pequenos em Atibaia, no interior de São Paulo, acompanha à distância a situação de Kharkiv, cidade onde moram os seus pais, sem luz em diversas regiões após o bombardeio.

Ele diz que a família agora enfrenta um dilema. Pai de Anton, Serhii Ukhzyk, 56, não pode deixar a Ucrânia nos próximos 90 dias mesmo em meio ao conflito devido à lei marcial, que altera as regras de funcionamento de um país, sob vigência de leis militares. A medida, em vigor desde quinta-feira (24), primeiro dia da invasão, impede a fuga de homens com idade entre 18 e 60 anos, que podem ser obrigados a se alistar.

Com isso, a família chegou a cogitar a fuga apenas de Iryna Ukhzyk, 60, esposa de Serhii e mãe de Anton. Mas ela não aceitou a hipótese. Quer ficar ao lado do marido até o fim. "Eu queria tentar pelo menos salvar a minha mãe. Mas ela não quer deixar o meu pai sozinho. É uma escolha difícil. O destino deles é fugir", disse Anton ao UOL.

Desde o começo do conflito, o ucraniano, que mora há dez anos no Brasil, tem mantido contatos diários com o Ministério das Relações Exteriores (Itamaraty) e com a embaixada brasileira na Ucrânia para tentar obter aporte para os pais.

Procurados pela reportagem desde domingo (27), o Itamaraty e a Embaixada do Brasil na Ucrânia não se posicionaram sobre o caso.

Torre de TV é atingida em Kiev

Ontem, mesmo dia do bombardeio a Kharkiv, a capital Kiev também foi alvo de ataques ao ter uma torre de TV atingida por explosão. Segundo o Serviço de Emergência do Estado da Ucrânia, cinco pessoas morreram e outras cinco ficaram feridas.

O prefeito Vitali Klitschko informou que dois mísseis atingiram a torre e todas as vítimas que avam pela calçada. Desde o fim de semana, as forças russas tentam fechar o cerco à cidade.

O Ministério da Defesa russo emitiu um comunicado dizendo que planeja atacar prédios do Serviço de Segurança da Ucrânia e do 72º Centro Principal de Informações e Operações Psicológicas em Kiev. As informações foram publicadas pela agência de notícias russa, Tass.

Volodimir Zelensky, presidente ucraniano, se posicionou em seu perfil no Twitter relembrando um ataque de judeus em 1941. "Para o mundo: qual é o sentido de dizer "nunca mais" por 80 anos, se o mundo fica em silêncio quando uma bomba cai no mesmo local de Babi Yar?", escreveu o presidente ucraniano. "História se repetindo", concluiu.

A torre de TV fica no mesmo bairro do Memorial do Holocausto Babi Yar, onde nazistas mataram mais de 30 mil judeus em dois dias.