;(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 se irrita com taxista após pergunta sobre portaria do Inmetro

Presidente Jair Bolsonaro conversa com seus apoiadores no "cercadinho" do Palácio da Alvorada - Gabriela Biló/Estadão Conteúdo
Presidente Jair Bolsonaro conversa com seus apoiadores no "cercadinho" do Palácio da Alvorada Imagem: Gabriela Biló/Estadão Conteúdo

Do UOL, em São Paulo

15/09/2021 18h30

O presidente Jair Bolsonaro (sem partido) demonstrou irritação hoje ao ser questionado por um taxista, enquanto conversava com seus apoiadores, em frente ao Palácio da Alvorada, em Brasília.

Em tom alterado, o homem —que não teve seu nome revelado— indagou o presidente sobre uma portaria do Inmetro (Instituto Nacional de Metrologia, Qualidade e Tecnologia), que exigia a instalação de um cabo. O valor, segundo o motorista, poderia sair por mais de R$ 400. Bolsonaro, no entanto, não gostou da forma como foi questionado pelo profissional. O vídeo foi publicado por um canal bolsonarista no Youtube.

"Eu não sei de tudo o que acontece nesse governo. Eu vou procurar saber que cabo é esse. Não é assim [que se fala]. Eu vou resolver esse assunto, mas não dessa forma como você está falando comigo. Se tiver educação, eu resolver qualquer problema", disse Bolsonaro, irritado.

"Para você ver: quando foi a tomada de três pinos, tomaram alguns bilhões no lombo, não falaram nada. O Inmetro, nós resolvemos o Inmetro. Eu troquei todo o Inmetro, não foi só uma diretoria ou só a presidência. Foi todo o Inmetro", argumentou o presidente, em seguida.

Na sequência, o presidente ligou para o coronel Marcos Heleno Guerson Júnior, presidente do Inmetro, e perguntou sobre a exigência da instalação desse cabo. Como a ligação foi feita em viva-voz, foi possível ouvir Guerson informar que a portaria estava suspensa e que o órgão ainda analisava o preço do objeto e a sua obrigatoriedade. Bolsonaro foi aplaudido por seus apoiadores.

Em junho do ano ado, Bolsonaro anunciou que a portaria que instituiu a necessidade de troca e instalação de novos taxímetros em carros de transporte de ageiros foi alterada pelo Inmetro.

Com a mudança, o prazo de dois anos inicialmente estipulado para realizar as alterações necessárias nos taxímetros dos veículos deixa de existir. A instalação só seria obrigatória para novos veículos ou na compra de um novo aparelho.

Segundo texto da nova portaria, apenas a instalação referente aos sensores ABS dos veículos permaneceria compulsória. O prazo para a alteração venceria em 1º de julho de 2022, e a mudança foi mantida por questões de segurança.