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

Queda de receitas deve levar a onda de revisões de contratos de concessão

Dinheiro; notas; nota; moedas; moeda; Real - CAIO ROCHA/FRAMEPHOTO/ESTADÃO CONTEÚDO
Dinheiro; notas; nota; moedas; moeda; Real Imagem: CAIO ROCHA/FRAMEPHOTO/ESTADÃO CONTEÚDO

Renée Pereira

São Paulo

03/05/2020 07h00

A forte queda na demanda e a perda de receita por causa do coronavírus deram início a uma onda de renegociação de contratos de concessão. Com o aval da Advocacia Geral da União (AGU), que classificou a pandemia como força maior, as concessionárias estão discutindo com o governo e seus advogados a melhor forma de recuperar os danos causados pela crise. As alternativas vão de ampliação de prazo das concessões a reajuste de tarifa.

O isolamento social, iniciado em meados de março, provocou uma queda de até 98% na movimentação de ageiros nos aeroportos; as rodovias perderam, em média, 30% das receitas; e o transporte urbano teve queda de até 70% no número de usuários. No setor de energia elétrica, há um mix de redução no consumo e alta da inadimplência - o que, segundo as empresas, tem estrangulado o caixa e pode provocar um efeito em cadeia.

Desde o início da quarentena, a queda no consumo de energia foi de 12% e o avanço da inadimplência, de 15%. Nesse caso, o governo já está avaliando medidas para amenizar o problema. Entre elas, um empréstimo para compensar a inadimplência e a liberação de recursos de fundos setoriais para amenizar a queda no consumo.

As renegociações também devem alcançar os setores de saneamento, no qual a arrecadação caiu 25%, e de arrendamentos de terminais portuários. "Vamos ter de olhar caso a caso. Alguns serão mais prejudicados do que outros", diz a secretária de Fomento, Planejamento e Parcerias do Ministério de Infraestrutura, Natália Marcassa. Ela avalia que o parecer da AGU e o arcabouço regulatório que o País tem já permite a repactuação dos contratos sem novas regras. "Agora cada um terá de calcular seus prejuízos e as agências vão analisar os pedidos."

Na avaliação de especialistas, no entanto, o processo de reequilíbrio econômico-financeiro - jargão usado no setor que significa revisão e repactuação dos contratos diante de perdas provocadas por algum evento - é complexo mesmo em situações simples. Gera discussão e algumas vezes vai parar no Judiciário. A dúvida é se agora será diferente.

Levantamento da Associação Brasileira de Infraestrutura e Indústrias de Base (Abdib) mostra que quase 30% dos executivos de empresas do setor acreditam que o reequilíbrio vai ocorrer, mas com muita dificuldade. Outros 17% afirmam que há muita incerteza e 47% acreditam que cada caso deverá ser analisado individualmente.

"Neste momento, temos certeza da necessidade do reequilíbrio contratual, mas ainda não sabemos, por exemplo, qual cálculo será feito para avaliar os prejuízos", diz o sócio da área de infraestrutura do escritório L.O. Baptista Advogados, Alberto Sogoyar. Isso porque, mesmo após o fim do isolamento social, a previsão de especialistas é que a demanda não voltará tão rápido aos níveis pré-pandemia.

As informações são do jornal O Estado de S. Paulo.