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

Sinead O'Connor diz que somente ela e ex estarão no velório do filho

Shane O"Connor, filho de Sinead O"Connor, foi encontrado morto aos 17 anos - Reprodução
Shane O'Connor, filho de Sinead O'Connor, foi encontrado morto aos 17 anos Imagem: Reprodução

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

11/01/2022 09h03

A cantora Sinead O'Connor deu detalhes sobre o último pedido do filho Shaun, de 17 anos, encontrado sem vida após conseguir fugir do hospital onde estava internado em observação na semana ada.

Sinead contou aos fãs no Twitter que o filho deixou bilhetes após sua morte e explicou o que será feito nos próximos dias.

"Para sua informação: Shane era hindu. Assim, o funeral será apenas [para] sua mãe e seu pai [o cantor folk Donal Lunny]. Este também foi o desejo que Shane expressou em seus bilhetes de suicídio. Se você for enviar alguma coisa para o necrotério do hospital de Loughlinstown, envie flores ou objetos hindus", escreveu a cantora, que complementou: "Alternativamente, flores ou objetos hindus podem ser enviados para o crematório de Newlands Cross. Acredito que a cerimônia seja na quinta-feira".

Sinead aproveitou para se desculpar junto ao hospital e à agência pública irlandesa que atende jovens e famílias após culpá-los pela morte do jovem. "Ok, eu vou fazer a coisa certa aqui e pedir desculpas pela minha agressão. A Tusla [a agência estatal] está trabalhando com recursos muito limitados. Eles adoravam Shane. Eles estão com o coração partido. Eles são humanos. Lamento tê-los chateado. Somos um país de terceiro mundo. Não é culpa deles", disse a artista.

"A questão é... Somos um país de terceiro mundo. Temos 12 leitos de cuidados especiais para adolescentes suicidas. E sem recursos para salvar aqueles que não conseguem lidar com suas vidas. São 128 leitos de UTI ao todo país. Tusla fez o seu melhor. Todos nós o fizemos: e lamento profundamente ter culpado alguém", comentou.

"Gostaria de agradecer a todos os funcionários da Riverside pelo amor que vocês deram a Shane. Vocês fizeram o seu melhor em todos os momentos. Ele te ama por isso e eu também. Fiquem em paz", finalizou.

Shane foi achado morto aos 17 anos

Shane O'Connor, filho de Sinead O'Connor, foi encontrado morto na última sexta-feira, em Wicklow, na Irlanda. A informação foi confirmada pela mãe do jovem e também pela polícia.

"Meu lindo filho Nevi'im Nesta Ali Shane O'Connor, luz da minha vida, decidiu encerrar sua luta terrena hoje e agora está com Deus. Que ele descanse em paz e ninguém siga seu exemplo. Meu bebê, eu te amo muito. Por favor, fique em paz", escreveu a cantora.

Sinead ainda declarou que pretende processar o hospital onde Shane estava internado em observação. O garoto havia conseguido escapar do local e estava desaparecido, até ser encontrado sem vida.

Shane é filho da cantora com o cantor folk Donal Lunny. Ele era um dos quatro filhos de Sinead, que ainda é mãe de Jake Reynolds, Roisin Waters e Yeshua Francis Neil Bonadio.

Caso você esteja pensando em cometer suicídio, procure ajuda especializada como o CVV e os CAPS (Centros de Atenção Psicossocial) da sua cidade.

O CVV (https://www.cvv.org.br/) funciona 24 horas por dia (inclusive aos feriados) pelo telefone 188, e também atende por e-mail, chat e pessoalmente. São mais de 120 postos de atendimento em todo o Brasil.