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

Lei de importunação sexual tem denúncias quase diárias no transporte de SP

Protesto contra estupro nas estações de Metrô em SP - Roberto Sungi/Futura Press/Folhapress
Protesto contra estupro nas estações de Metrô em SP Imagem: Roberto Sungi/Futura Press/Folhapress

Marcos Candido

Da Universa

25/10/2018 04h00

Criada há um mês, a lei de importunação sexual já foi usada para denunciar 25 casos de assédio sexual em ônibus, trens e Metrô de São Paulo. A TM registrou o maior número de vítimas, com 13 episódios.

Em vigor desde o dia 24 de setembro, a lei torna este tipo de assédio sexual em crime com até cinco anos de prisão e sem direito à fiança. A proposta ganhou força em Brasília após homens serem presos e liberados por ejacular contra mulheres e não haver um artigo específico na lei para julgá-los. 

Veja também

A jornalista Clara Novais, 27, ainda tem na memória o ataque sofrido quando ia ao trabalho pela TM. O caso foi o primeiro a ganhar repercussão e ocorreu duas semanas após a sanção da lei.

Segundo ela, o delegado se recusou a enquadrar o caso na recente lei de importunação sexual. “Senti que ele se incomodou de já ter chegado tipificando o crime e quis baixar minha bola”, explica à Universa. “Me senti duplamente desrespeitada e impotente.”

A importunação sexual é quando se pratica “contra alguém e sem a sua anuência ato libidinoso com o objetivo de satisfazer a própria lascívia ou a de terceiro”, e prevê até cinco anos de reclusão.

A promotora Fabíola Sucasas afirma que a nova lei é um ganho para a segurança de mulheres e facilita o julgamento de casos.

Ela cita o caso de Diego Ferreira Novais, 27, solto após ejacular em uma ageira na Avenida Paulista. O caso foi julgado sob o artigo 61 da lei de contravenção penal (“"importunar alguém em local público de modo ofensivo ao pudor"), considerado um crime menos ofensivo. Liberado, Diego foi preso e enquadrado por estupro após repetir a violência contra outra vítima.

Antes e depois da lei

“Antes da lei de importunação sexual, havia dois extremos: ou se considerava um crime como digno de pagamento de multa, em que a pessoa sequer respondia a processo criminal, ou era um caso de pena, com direito a prisão preventiva, de até 10 anos de prisão. E a lei não se baseia em extremos, mas sim em Justiça. Com isso, também revoga-se o artigo que permitia enxergar a dignidade sexual com mais importância”, diz a promotora do núcleo de violência contra a mulher do Ministério Público paulista.

Antes da aprovação da lei, empresas de transporte nas principais capitais precisaram criar campanhas para estimular denúncias. Só na TM, onde Clara foi atacada, foram registrados 91 casos em 2015; 90 em 2016. Já no ano ado, foram 128 registros de crimes sexuais encaminhados à polícia.

O crime de importunação sexual não serve apenas para crimes cometidos em transporte coletivo.