;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Bolsonaro diz que vai ao STF contra estados por cobrança de ICMS sobre combustíveis

Em live, Bolsonaro disse que governadores ferem a Constituição ao cobrar ICMS de forma proporcional - Reprodução/Facebook
Em live, Bolsonaro disse que governadores ferem a Constituição ao cobrar ICMS de forma proporcional Imagem: Reprodução/Facebook

Eduardo Gayer, Pedro Caramuru e Daniel Galvão

São Paulo, 02

02/09/2021 19h35Atualizada em 02/09/2021 20h46

Insistindo em sua ofensiva contra os governadores, o presidente Jair Bolsonaro (sem partido) afirmou nesta quinta-feira, 2, que o governo entrará amanhã com uma ação direta de inconstitucionalidade (Adin) no Supremo Tribunal Federal (STF) por suposta "omissão" dos estados na cobrança de ICMS sobre os combustíveis.

Em transmissão ao vivo nas redes sociais, Bolsonaro disse que os governadores ferem a Constituição Federal ao cobrar ICMS de forma proporcional. "Tem que ser um valor nominal fixo", declarou o presidente. "O Parlamento vai ter que decidir como fazer isso aí, determinar um prazo para os governadores fixarem o valor", acrescentou.

A apoiadores, o chefe do Executivo tem defendido que a recente alta nos combustíveis, com impactos diretos na inflação, se deve aos impostos estaduais, sem citar, contudo, o efeito do dólar forte ante o real sobre os preços. Governadores como João Doria (PSDB), de São Paulo, têm rebatido o presidente nas redes sociais, destacando que a taxa incidente sobre o ICMS é a mesma há anos.

Ainda na live de hoje, Bolsonaro voltou a dizer que quer aprovar uma lei que obrigue a descrição dos impostos cobrados nos combustíveis. "Aí o eleitor pode realmente achar o que deve contestar. Se for imposto federal, vem para cima de mim. Se achar que é imposto estadual, vai para cima dos governadores", afirmou.

Sobre a crise hídrica, o chefe do Planalto repetiu que é "obrigado a botar bandeira vermelha" devido ao baixo nível dos reservatórios. O Ministério de Minas e Energia, no entanto, ainda se recusa a falar em racionamento de energia.

"Kit gay"

Em outro aceno à sua base mais radicalizada, o presidente "ressuscitou" o tema do "kit gay".

"Nada contra os gays, mas querer ensinar certas coisas para crianças, não dá", disse, durante a transmissão. Críticas a aulas de educação sexual na educação básica, consideradas por especialistas como fundamentais no combate ao abuso sexual infantil, foram um pilar importante de Bolsonaro no eleitorado conservador nas eleições de 2018.