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

Restaurante, chuveiro e sistema de som: como era o acampamento golpista

Do UOL, em Brasília

09/01/2023 16h55Atualizada em 09/01/2023 17h06

Os militantes bolsonaristas que invadiram e depredaram, ontem, o Congresso, o STF e o Palácio do Planalto só conseguiram ficar mais de dois meses acampados em frente ao quartel-general do Exército, em Brasília, porque contavam com infraestrutura.

  • Contêiner com caixa d'água para abastecer chuveiros;
  • Caminhões-pipa enchiam as caixas d'água diariamente;
  • Geradores garantiam energia elétrica;
  • Barracas e tendas eram alugadas por empresários,
  • Havia dezenas de banheiros químicos disponíveis.
ol - Felipe Pereira/UOL - Felipe Pereira/UOL
À direita, contêiner com chuveiros abastecidos por caixa d'água colocada na parte superior
Imagem: Felipe Pereira/UOL

Alimentação variada, abundante e gratuita

Chama especial atenção a estrutura de alimentação montada pela organização. Havia um restaurante e uma lanchonete à disposição dos militantes bolsonaristas. Abaixo, as características de cada um:

1º Acampamento/Cozinha - 01 do QG

  • Oferecia três refeições por dia;
  • O café da manhã tinha frutas;
  • O almoço sempre tinha arroz, feijão e duas opções de proteína,
  • Havia dias com salada e legumes e outros, apenas uma das opções.

Hot Dog Brasil

  • Funcionava entre o fim da tarde e a noite,
  • Oferecia lanches, incluindo cachorro-quente.
hjm - Felipe Pereira/UOL - Felipe Pereira/UOL
O Hot Dog Brasil era um dos pontos que forneciam alimentação aos acampados
Imagem: Felipe Pereira/UOL

Doações diárias

Cabe ressaltar que a produção de tantas refeições exigia uma cozinha completa e muitos ingredientes. Manter esse serviço era possível graças a doações diárias. O mesmo ocorria com outras necessidades básicas.

  • Todas as manhãs pessoas entregavam pacotes de alimentos;
  • Foram disponibilizados as, pratos, talheres e gás;
  • Havia fornecimento diário de materiais de higiene pessoal,
  • Doação de produtos de limpeza.

Garantindo noites de sono

Algumas pessoas levavam as próprias barracas para dormir. Mas também havia uma série de tendas bancadas por empresários. Assim como ocorria com as caixas d'água, elas eram identificadas pela cidade do financiador.

Faixas exaltavam de onde vinha o dinheiro que pagava a estrutura que viabilizava o sono de golpistas: Dois Vizinhos (PR), Rio do SUL (SC) e Lucas do Rio Verde (MT) são alguns exemplos.

Existia ainda uma tenda templo, que recebia cultos diários.

Anunciando a palavra golpista

Mas o lugar que mais juntava gente era um palco. Ele servia para difundir as ideias de intervenção. Equipado com sistema de som, foi o local usado para pedir pix e doações de dinheiro em espécie na etapa final do acampamento.

ado o Natal, começou a falta recursos. Um homem no microfone falava que o agronegócio havia suspendido o envio de R$ 5 mil diários que bancava uma aparelhagem de som de melhor qualidade.

Também havia dificuldades para pagar os R$ 500 de diesel para os geradores e R$ 1,8 mil dos banheiros químicos. Toda esta infraestrutura sustentava os extremistas vindo de outras cidades. Todas as manhãs, moradores de Brasília chegavam com suas cadeiras de praia para engrossar o coro que pedia golpe.

As forças de segurança prometem seguir o caminho do dinheiro para chegar até os financiadores da atividade golpista.