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

Chico Alves

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Castigo de Lacerda lembra a Arthur Lira que golpistas não são confiáveis

Arthur Lira e Carlos Lacerda, governador da antiga Guanabara - Reprodução
Arthur Lira e Carlos Lacerda, governador da antiga Guanabara Imagem: Reprodução

Colunista do UOL

19/08/2021 20h41

Governador do antigo estado da Guanabara de 1960 a 1965, Carlos Lacerda era conhecido por ser ousado e sempre foi considerado como raposa política. Confiando em sua esperteza, fez uma jogada atrevida em 1964: colocou toda influência e oratória a serviço do golpe militar.

Pelos planos de Lacerda, depois que os fardados arrancassem João Goulart da Presidência, ele conseguiria se lançar como candidato ao Palácio do Planalto. Deu errado. A prorrogação do regime militar foi anunciada em 1966 pelo presidente Castello Branco. Lacerda, então, ficou decepcionado e se tornou opositor da ditadura.

Acabou cassado pelos militares em dezembro de 1968. Foi preso e levado para uma cela do Regimento de Cavalaria da Polícia Militar.

O destino de Carlos Lacerda não é muito diferente de outros que apoiaram ou se associaram a golpistas em outros episódios da história. Quem mostra disposição de atropelar as leis e a Constituição para tomar o poder, normalmente não se preocupa em honrar compromissos firmados na escalada do golpe.

Seria recomendável que o presidente da Câmara, o deputado Arthur Lira (PP-AL), levasse isso em conta nesse momento em que é o principal garantidor do apoio do Centrão ao presidente Jair Boslonaro.

É certo que Lira não é Carlos Lacerda. Teve o cuidado que o antigo governador da Guanabara não teve, de anunciar ao público que não participará de aventuras antidemocráticas.

Apesar disso, Bolsonaro só tem desenvoltura para continuar com sua campanha golpista contra as instituições porque sabe que pode contar com a retaguarda do Centrão.

Antes que o plenário da Câmara decidisse o destino da PEC do voto impresso, Lira disse que aquele assunto já tinha ido longe demais. Com a decisão dos deputados, acalentava a esperança de que Bolsonaro abandonasse o principal refrão que vinha usando para questionar o processo eleitoral brasileiro.

Não foi o que aconteceu. O presidente da República prepara o pedido de impeachment do ministro Luir Roberto Barroso, presidente do Tribunal Superior Eleitoral, e do ministro Alexandre de Moraes. Vai continuar apostando no tensionamento.

Lira continua ao lado de Bolsonaro, em nome das emendas e das benesses com que o Centrão foi fartamente agraciado. Enquanto isso, o ocupante do Palácio do Planalto atiça atos antidemocráticos, xinga ministros dos tribunais superiores, ameaça a realização de eleições, ataca a imprensa.

O presidente da Câmara é corresponsável, portanto, por toda a bagunça que o presidente causa atualmente ou que vier a causar.

Do alto de sua larga experiência política, Lira deve achar que tem tudo sob controle e, como aconteceu outras vezes com o Centrão, vai continuar por cima da carne seca, aconteça o que acontecer.

O exemplo histórico de Carlos Lacerda prova, no entanto, que mesmo os políticos espertos podem se dar muito mal quando os golpistas triunfam.

Recomenda-se que abra bem o olho.