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

TRE-SP multa Tarcísio por repetir impulsionamento irregular contra Rodrigo

Tarcísio de Freitas e Rodrigo Garcia - Reprodução
Tarcísio de Freitas e Rodrigo Garcia Imagem: Reprodução

Do UOL, em São Paulo

23/09/2022 16h11Atualizada em 23/09/2022 17h56

O TRE-SP (Tribunal Regional Eleitoral de São Paulo) decidiu multar novamente o candidato ao governo de São Paulo Tarcísio de Freitas (Republicanos) em R$ 20 mil por repetir uma campanha irregular de impulsionamento na internet, com anúncios negativos no Google, contra o também candidato Rodrigo Garcia (PSDB). Tarcísio disse que recorrerá da decisão.

Na semana ada, Tarcísio já havia sido multado em R$ 5 mil pelo TRE-SP em decisão de caráter liminar (provisório) por impulsionar no Google o "anúncio negativo" contra o governador paulista. A nova decisão é definitiva.

Segundo o comitê de campanha de Rodrigo, a defesa do tucano entrou com a nova representação no TRE alegando que, ao buscar o nome de Rodrigo Garcia, os internautas seriam redirecionados para a página de Tarcísio, prejudicando o desempenho do candidato na internet. O tucano e o ex-ministro bolsonarista disputam o segundo lugar, apontam as pesquisas de intenção de voto.

Nos autos do processo, a defesa de Tarcísio declarou que o impulsionamento de links é considerado lícito pelo TSE (Tribunal Superior Eleitoral) e discorreu que o link patrocinado não ofende ou prejudica Rodrigo, além de não interferir na aparição dos outros resultados orgânicos (sem impulsionamento) nas pesquisas sobre o candidato do PSDB.

A juíza relatora Maria Cláudia Bedotti, a mesma que julgou o caso na semana ada, citou que a alegação da defesa de Rodrigo no pedido anterior já havia sido confirmada pelo Google Brasil ao Tribunal Regional Eleitoral.

Ora, daí se conclui, sem qualquer esforço hermenêutico, que as normas eleitorais de regência pressupõem que o impulsionamento de conteúdo seja contratado apenas e tão somente em benefício da candidatura contratante, na medida em que, repita-se, é vedada a sua utilização em prejuízo das candidaturas adversárias ou, ainda, para alterar o teor ou a repercussão da propaganda eleitoral. Juíza relatora Maria Cláudia Bedotti

Segundo Bedotti, ao impulsionar conteúdos no Google a partir de palavras-chaves ou termos que se referem a outro candidato, o contratante "não está pretendendo beneficiar a candidatura adversária".

"Demais disso, o prejuízo vedado pela lei eleitoral se constata pelo simples fato de a contratação do impulsionamento desviar o internauta eleitor, que fez uma busca em nome de um determinado candidato, para o site da candidatura adversária, tal como ocorre no caso em epígrafe", escreveu a juíza, citando "grave manipulação de informação" por impedir o eleitor de ter o livre ao conteúdo buscado por ele.

Tarcísio diz que recorrerá da decisão

Ao UOL, a assessoria de Tarcísio declarou que o ex-ministro recorrerá da decisão e reforçou o discurso de que o impulsionamento de links é considerado lícito pelo TSE.

"A campanha de Tarcísio contratou uma ferramenta que desde 2020 vem sendo pacificamente aceita pelo Tribunal Superior Eleitoral, ferramenta esta que é disponibilizada pelo Google para a aquisição por qualquer candidato no Brasil. Vamos recorrer da decisão para fazer prevalecer a jurisprudência pacífica do Tribunal Superior Eleitoral."