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

Mesquita é bombardeada em Mariupol; hospital foi atingido em Mykolaiv

Da AFP, em Kiev

12/03/2022 08h33Atualizada em 12/03/2022 10h01

Uma mesquita que abrigava 80 civis, incluindo turcos, foi bombardeada ontem em Mariupol, cidade portuária no sudeste da Ucrânia, cercada há dias pelas tropas russas. Não há informações sobre mortos e feridos.

Além disso, um hospital em Mykolaiv, também no litoral do sul da Ucrânia, foi atingido na sexta-feira.

"A mesquita do sultão Suleiman, o Magnífico, e sua esposa Roxolana, em Mariupol, foi bombardeada pelos invasores russos", disse o Ministério das Relações Exteriores ucraniano no Twitter, neste sábado.

"Mais de 80 adultos e crianças estão se refugiando lá, incluindo cidadãos turcos", acrescentou.

Em 7 de março, o consulado turco em Odessa, um importante porto no sul da Ucrânia, havia pedido aos cidadãos turcos em Mariupol que se refugiassem na mesquita atacada, "com o objetivo de evacuar nosso país". Após o anúncio do bombardeio, o Ministério das Relações Exteriores da Turquia disse que "não tinha informações".

A cidade de Mariupol sofre um cerco devastador. Os habitantes, entrincheirados em porões, estão isolados, sem água, gás ou eletricidade e até brigam para conseguir comida. É uma situação "quase desesperadora", alertou a organização Médicos Sem Fronteiras (MSF), na sexta-feira.

"Mariupol é agora a pior catástrofe humanitária do planeta", com "1.582 civis mortos em 12 dias", disse ontem o chefe da diplomacia ucraniana, Dmytro Kuleba.

Um hospital infantil e uma maternidade foram atacados na quarta-feira, matando três pessoas e ferindo muitas outras, provocando protestos internacionais.

Nesse contexto, uma nova tentativa de estabelecer um corredor de evacuação está planejada para permitir que os civis deixem a cidade em direção a Zaporizhzhia, cerca de 200 quilômetros a noroeste, segundo a vice-primeira-ministra ucraniana Iryna Vereshchuk.

Bombardeios atingem hospital em Mykolaiv

A cidade portuária de Mykolaiv também foi bombardeada na noite ontem, com fogo atingindo um centro de tratamento de câncer e um hospital oftalmológico, informou um jornalista da AFP.

As janelas do centro de câncer recém-reformado, onde os pacientes recebem quimioterapia, foram quebradas. Os impactos dos projéteis podiam ser vistos nas portas.

"Atiraram em áreas civis, sem alvos militares. Aqui há um hospital, um orfanato, um centro oftalmológico", disse Dmytro Lagotshev, chefe do hospital.

No momento do ataque, não havia pacientes ou cuidadores no centro de câncer. Mas o hospital oftalmológico tinha um número ainda não informado de pacientes.

"amos a noite inteira no porão, tudo estava tremendo, os pacientes estavam apavorados", disse a diretora da unidade, Kasimira Rilkova.

Os moradores do bairro de Ingulski, localizado ao norte da cidade e onde ficam os locais atingidos, estão sem aquecimento e sendo forçados a evacuar.

Rotas de fuga

Há dias, os ucranianos alegam que o exército russo está bombardeando a rota de evacuação de civis.

Os corredores humanitários ao redor de Kiev, capital da Ucrânia, devem ser reabertos para evacuar a população das cidades a noroeste da capital ucraniana.

"Espero que o dia corra bem, que as rotas planejadas sejam abertas e que a Rússia respeite suas obrigações em relação ao cessar-fogo", disse a vice-primeira-ministra Vereshchuk, em um vídeo divulgado pela presidência ucraniana.

Enquanto o exército russo continua avançando e se posicionando em torno de Kiev, os ataques atingiram a cidade de Vasylkiv, cerca de 40 quilômetros ao sul da capital, na manhã de sábado.

Oito foguetes russos atingiram o aeroporto local por volta das 7h (horário local, 2h em Brasília), que foi "completamente destruído", disse a prefeita Natalia Balassinovich em sua conta no Facebook. Um armazém de petróleo também foi atingido e pegou fogo, acrescentou.