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

Veja o caminho que Bolsonaro deve percorrer de moto em São Paulo no sábado

Bolsonaro na "motociata" realizada em maio no Rio de Janeiro. Sua presença está confirmada em São Paulo - EPA/ANDRE COELHO
Bolsonaro na "motociata" realizada em maio no Rio de Janeiro. Sua presença está confirmada em São Paulo Imagem: EPA/ANDRE COELHO

Wanderley Preite Sobrinho

Do UOL, em São Paulo

11/06/2021 16h00

O presidente Jair Bolsonaro (sem partido) deve percorrer de moto um trajeto de 129 km pelas ruas de São Paulo em uma "motociata" prevista para amanhã (12).

O percurso, mantido em sigilo pelo Planalto "por questões de segurança", foi definido na quinta-feira (10) entre os organizadores e a Polícia Militar. O trajeto também contou com os palpites de representantes do Exército na capital paulista.

Previsto inicialmente para começar na zona norte e terminar na avenida Paulista, o caminho foi alterado para acabar no obelisco do Ibirapuera, na zona sul, região com mais espaço que a avenida famosa, considerada estreita.

De acordo com o advogado Cezar Augusto Oliveira, do Motorclube Crape Dien, a saída será às 10h nas proximidades do Sambódromo:

  1. Avenida Olavo Fontoura
  2. Praça Campos de Bagatelle
  3. Avenida Santos Dumont
  4. Avenida do Estado
  5. Ponte Governador Orestes Quércia
  6. Marginal Tietê
  7. Rodovia Bandeirantes (trevo km 62) - ida e volta
  8. Marginal Pinheiros
  9. Ponte Engenheiro Ari Torres
  10. Avenida dos Bandeirantes
  11. Corredor Norte-Sul - Avenida Rubem Berta
  12. Avenida Pedro Álvares Cabral
  13. Praça Armando de Sales Oliveira (retorno)
  14. Praça Ibrahim Nobre (Obelisco)

"Sou um dos motociclistas que participará do evento e recebi o trajeto como tantos outros", afirmou Oliveira, que prevê "muita moto" no evento.

Um dos organizadores, o empresário Jackson Villar disse à Folha que cerca de 400 mil pessoas se cadastraram para participar, com "concentração de participantes já na madrugada" e "gente vindo de vários estados e do interior de São Paulo".

Propaganda de 'motociata' de Bolsonaro - Reprodução - Reprodução
Propaganda de 'motociata' de Bolsonaro
Imagem: Reprodução
Villar, que chama o encontro de "Acelera para Cristo", diz que haverá um ato religioso no final do percurso.

"Chegando lá faremos uma oração e um agradecimento a Deus, e teremos algumas falas. O presidente Bolsonaro ainda não nos informou se vai querer subir no caminhão, mas será muito bem-vindo se assim decidir", disse.

Apesar do apelo religioso de Villar, os diversos clubes de motociclistas discordam da associação da "motociata" ao evento com fiéis.

"Não há ligação com as pessoas que se intitularam organizadoras do evento", diz Oliveira.

Nos últimos tempos, Bolsonaro vem recebendo o apoio maciço de motociclistas, que se organizam nos clubes de motos. O próprio presidente é um amante das duas rodas.

As regras definidas com a PM são as seguintes: os veículos precisam estar emplacados e não podem ultraar a velocidade de 40 km/h. Empinar a moto será proibido e todos os participantes precisarão usar capacete e máscaras faciais.

O Ministério Público de São Paulo vai acompanhar a "motociata" para fiscalizar o cumprimento dos protocolos sanitários contra a covid-19. Em tese, os participantes que não usarem máscara poderão ser autuados pelo governo do estado.