Category: Desenvolvimento

arXivLabs: Colaboração da comunidade em recursos arXiv

2025-05-28
arXivLabs: Colaboração da comunidade em recursos arXiv

arXivLabs é uma plataforma que permite a desenvolvedores e pesquisadores construir e compartilhar novos recursos arXiv diretamente no site arXiv. Participantes, indivíduos e organizações, abraçam os valores do arXiv de abertura, comunidade, excelência e privacidade de dados do usuário. O arXiv está comprometido com esses valores e apenas se associa a aqueles que os compartilham. Tem uma ideia para melhorar a comunidade arXiv? Explore o arXivLabs!

Desenvolvimento

Multithreading no Super Mario Bros. em um emulador NES: Uma façanha surpreendentemente simples

2025-05-28
Multithreading no Super Mario Bros. em um emulador NES: Uma façanha surpreendentemente simples

O autor implementou multithreading no Super Mario Bros. em um emulador NES (FCEUX) usando um plugin Lua, sem modificar o código principal do emulador. Ao aproveitar a funcionalidade de salvar o estado do emulador, diferentes estados do jogo foram tratados como threads separadas. Primitivas de sincronização como mutexes e variáveis de condição foram implementadas usando áreas específicas no jogo, permitindo que os usuários interajam diretamente com os conceitos de threading. Por exemplo, várias instâncias do Mario podem jogar simultaneamente, mas apenas uma pode entrar em um cano de cada vez. Este projeto demonstra não apenas criatividade, mas também fornece uma explicação clara e envolvente de multithreading, destacando a importância de entender conceitos fundamentais de ciência da computação.

Desenvolvimento

Indecidibilidade: A Caixa de Pandora dos Programadores

2025-05-28
Indecidibilidade: A Caixa de Pandora dos Programadores

Este artigo explica de forma clara o conceito de "indecidibilidade" na ciência da computação. Usando linguagem acessível e exemplos concretos (como determinar se um número é a soma de dois números primos), o autor explica os problemas de decisão e o papel das máquinas de Turing. A principal conclusão é que a indecidibilidade não significa que seja impossível dizer se um programa irá parar, mas sim que não existe um algoritmo universal para determinar o comportamento de parada de todos os programas. Isso torna muitos problemas (como verificar propriedades de programas) trabalhosos e possivelmente insolúveis, destacando a necessidade de campos como verificação formal e análise de programas.

Desenvolvimento máquina de Turing

Shibboleths de LLM: O Segredo para Desbloquear Assistentes de Codificação de IA

2025-05-28

A eficácia dos assistentes de codificação com modelos de linguagem grandes (LLM) depende de como você faz as perguntas. Este ensaio argumenta que engenheiros experientes usam "shibboleths" específicos — jargão técnico e frases — para orientar a IA em direção a código de alta qualidade, enquanto novatos, sem esse vocabulário especializado, costumam receber resultados ineficientes ou incorretos. O autor usa anedotas pessoais para ilustrar como adaptar estratégias de prompts com base no nível de habilidade, oferecendo dicas para melhorar a eficiência do assistente de codificação de IA. A mensagem principal enfatiza a importância de discernir e orientar o código gerado por IA na era da IA.

Desenvolvimento

Guile Hoot 0.2.0: Construindo Páginas Web Interativas em Scheme

2025-05-28

O Guile Hoot 0.2.0, um compilador de Scheme para WebAssembly GC, foi lançado. Esta versão introduz uma Interface de Função Estrangeira (FFI), permitindo que os desenvolvedores escrevam a maior parte do código de aplicativos web diretamente em Scheme, minimizando a dependência de JavaScript. O artigo demonstra a construção de páginas web interativas usando Scheme e a FFI, progredindo de um simples "Olá, mundo!" para um contador interativo e, finalmente, um aplicativo de lista de tarefas. Aproveitando os recursos de manipulação simbólica do Scheme e SXML, ele constrói um DOM virtual eficiente com um algoritmo de diferenciação semelhante ao React para atualizações.

Desenvolvimento

Paralelização de Geração de Código LLM: Um Aumento de Produtividade com Git Worktrees e Tmux

2025-05-28
Paralelização de Geração de Código LLM: Um Aumento de Produtividade com Git Worktrees e Tmux

Nicholas Khami compartilha sua experiência em paralelizar vários geradores de código LLM (Claude Code, Codex) usando Git worktrees e tmux. Ele descobriu ganhos significativos de eficiência; mesmo com a qualidade inconsistente da saída individual do LLM, executar vários agentes simultaneamente aumenta drasticamente a chance de obter código utilizável. No entanto, gerenciar manualmente várias worktrees e sessões tmux é complicado. Para resolver isso, ele e seu cofundador estão construindo `uzi`, uma ferramenta de linha de comando para otimizar o fluxo de trabalho, fornecendo uma experiência de desenvolvedor mais suave, automatizando tarefas como iniciar agentes, enviar prompts, executar comandos, visualizar, confirmar e criar PRs. Isso promete melhorar muito a produtividade do desenvolvedor, e a filosofia de processamento paralelo se estende além da codificação, aplicável à revisão de contratos jurídicos e análise de dados de marketing. O futuro provavelmente verá mais softwares integrando recursos de execução paralela semelhantes.

Desenvolvimento

Compiler Explorer: A Promessa de URLs Eternas

2025-05-28

As URLs do Compiler Explorer evoluíram de codificar estados do compilador diretamente nas URLs para usar links curtos do goo.gl, e finalmente para uma solução de armazenamento própria. Com o goo.gl encerrando em agosto de 2025, o autor está resgatando links antigos baseados no goo.gl, recuperando mais de 12.000 até agora. Este artigo destaca o compromisso do autor com 'URLs que duram para sempre' e reflete sobre a dependência de serviços de terceiros.

Desenvolvimento

arXivLabs: Experimentos com Colaboração da Comunidade

2025-05-28
arXivLabs: Experimentos com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Tanto indivíduos quanto organizações que trabalham com o arXivLabs abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade de dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Eu fiz engenharia reversa no site da Waffle House durante um furacão

2025-05-28
Eu fiz engenharia reversa no site da Waffle House durante um furacão

Durante o furacão Helene, no final de setembro de 2024, enquanto minha universidade estava fechada e as pessoas estavam protegendo suas casas, eu fiz engenharia reversa no site da Waffle House. Usando dados JSON ocultos em seu site Next.js, construí um mapa ao vivo que rastreava os fechamentos da Waffle House para ajudar a avaliar o impacto do furacão. O site inesperadamente viralizou, chamando a atenção da própria Waffle House e até mesmo de Frank Luntz. No final, problemas de marca registrada me forçaram a removê-lo, mas a experiência foi uma aventura divertida e inesperada.

Desenvolvimento

Tesseral: Infraestrutura de autenticação de código aberto para B2B SaaS

2025-05-28
Tesseral: Infraestrutura de autenticação de código aberto para B2B SaaS

Tesseral é uma infraestrutura de autenticação de código aberto para software de negócios (B2B SaaS). É um serviço em nuvem multilocatário, com API em primeiro lugar, compatível com qualquer pilha de tecnologia. Os desenvolvedores podem usar o serviço gerenciado em console.tesseral.com ou auto-hospedá-lo. Ele inclui tudo o que é necessário para a gestão de usuários: páginas de login personalizáveis, multilocatário B2B, personificação de usuário, configuração de autoatendimento, vários métodos de login (links mágicos, login social, SAML, SCIM), controle de acesso baseado em funções (RBAC), autenticação multifator (MFA), passkeys/WebAuthn, aplicativos autenticadores (TOTPs), gerenciamento de chaves de API, convites de usuários e webhooks. SDKs estão disponíveis para React, Flask e outros, simplificando a integração de front-end e back-end.

Desenvolvimento

Wetlands: Uma biblioteca Python leve para gerenciamento de ambientes Conda

2025-05-28

Wetlands é uma biblioteca Python leve projetada para simplificar o gerenciamento de ambientes Conda. Ela cria ambientes Conda sob demanda, instala dependências e executa código arbitrário dentro deles, prevenindo conflitos de dependências. Ideal para sistemas de plug-ins ou integração de módulos externos, Wetlands usa pixi ou micromamba para um tratamento rápido e eficiente de ambientes Conda. Uma API simples permite que os desenvolvedores criem, iniciem, importem módulos, executem funções e saiam limpos dos ambientes, tornando o gerenciamento de dependências em projetos Python mais fácil e eficiente.

Desenvolvimento

Imersão do Project Zero no Registro do Windows: 2 Anos, 53 CVEs

2025-05-28
Imersão do Project Zero no Registro do Windows: 2 Anos, 53 CVEs

Mateusz Jurczyk, do Google Project Zero, dedicou dois anos à pesquisa aprofundada do Registro do Windows, descobrindo 53 CVEs. Sua pesquisa destaca a complexidade do Registro como uma superfície de ataque de elevação de privilégios local, detalhando problemas de segurança decorrentes de sua grande base de código antiga escrita em C. A pesquisa abrange várias classes de vulnerabilidades, incluindo corrupção de memória, divulgação de informações e bugs de lógica, analisando vários pontos de entrada de ataque, como carregamento de colmeias, colmeias de aplicativos e chamadas de sistema diretas. A pesquisa também enfatiza como os mecanismos de autocorreção do Registro impactam a auditoria de segurança e os desafios de limites pouco claros entre requisitos de formato estritos e convenções. Finalmente, a publicação resume primitivas de exploração e discute estratégias e dificuldades no fuzzing do Registro.

LLMs: Acelerando a Incompetência na Engenharia de Software

2025-05-28
LLMs: Acelerando a Incompetência na Engenharia de Software

Este ensaio argumenta que a dependência excessiva de Modelos de Linguagem Grandes (LLMs) na engenharia de software pode acelerar a incompetência. Um engenheiro de software experiente detalha como os LLMs, embora ofereçam velocidade na geração de código, introduzem riscos significativos: saídas incorretas, incapacidade de entender o contexto, aumento da dívida técnica e a supressão do pensamento crítico e da criatividade. Com base nas ideias de Peter Naur e Fred Brooks, o autor enfatiza que a programação consiste em construir a teoria do programa e gerenciar a entropia do programa, tarefas além das capacidades dos LLMs atuais. O ensaio conclui que, embora os LLMs sejam ferramentas úteis, eles não podem substituir a engenhosidade e o pensamento profundo humanos, e a dependência excessiva pode levar a custos aumentados e falhas de projeto.

Desenvolvimento

Microsoft Abre o Windows Update para Aplicativos de Terceiros

2025-05-28
Microsoft Abre o Windows Update para Aplicativos de Terceiros

A Microsoft está expandindo o Windows Update para incluir aplicativos de terceiros. Os desenvolvedores agora podem se inscrever em uma prévia privada da plataforma de orquestração do Windows Update, permitindo suporte futuro para atualizações de qualquer aplicativo ou driver. Embora inicialmente focado em aplicativos empresariais, estará aberto a todos os aplicativos e ferramentas de gerenciamento. Isso permite que os desenvolvedores aproveitem atualizações agendadas com base na atividade do usuário, status da bateria e tempo de energia sustentável, conectem-se diretamente às notificações nativas do Windows Update e listem as atualizações no histórico de atualização de aplicativos do Windows Update. A Microsoft oferecerá suporte a aplicativos empacotados MSIX/APPX e alguns aplicativos Win32 personalizados.

Desenvolvimento Aplicativos de terceiros

CheerpJ 4.1 Lançado: Suporte Antecipado ao Java 17 e Java Aprimorado para Navegadores

2025-05-28
CheerpJ 4.1 Lançado: Suporte Antecipado ao Java 17 e Java Aprimorado para Navegadores

A Leaning Technologies anunciou o lançamento do CheerpJ 4.1, com suporte antecipado (versão prévia) ao Java 17 e estabilidade aprimorada para o Java 11, além de otimizações de desempenho, melhorias na pilha de rede e melhor usabilidade em dispositivos móveis. O CheerpJ é uma JVM baseada em WebAssembly que permite a execução direta de bytecode Java sem modificações em navegadores, suportando aplicativos Swing/AWT em larga escala e integração de bibliotecas Java (Modo Biblioteca). O CheerpJ 4.1 também introduz suporte para módulos JNI WebAssembly, permitindo a execução de aplicativos Java que dependem de código nativo, como o Minecraft. O CheerpJ 5.0 futuro incluirá suporte estável ao Java 17 e suporte ao NPM.

Desenvolvimento

LLMs: O Custo Imprevisto da Codificação Mais Fácil

2025-05-28

Os Grandes Modelos de Linguagem (LLMs) revolucionaram a escrita de código, superando até mesmo o impacto da World Wide Web. No entanto, isso não mudou a verdade fundamental de que entender o código é mais difícil do que escrevê-lo; cada linha é uma dívida técnica. A introdução de LLMs torna ainda mais difícil convencer as equipes a abandonar antigos conjuntos de testes e decisões técnicas. LLMs produzem facilmente novas funções, levando a bases de código inchadas e difíceis de manter, desafiando os princípios DRY. Equipes de engenharia historicamente produtivas dependem de um profundo conhecimento da cadeia de ferramentas, mas os LLMs reduzem drasticamente os custos de codificação, resultando em uma explosão de diversidade ecológica em ambientes de software. Embora os LLMs possam eventualmente melhorar a legibilidade e o raciocínio do código, os desafios atuais são substanciais.

A História Caótica da Análise de Datas no JavaScript

2025-05-28

Este artigo revela uma peculiaridade na análise de datas do JavaScript: '2025/05/28' e '2025-05-28' representam datas diferentes. Isso decorre de inconsistências de longa data em como os navegadores analisam strings de datas. O artigo traça a evolução da análise de strings de datas no Chrome, Firefox e Safari desde o lançamento do padrão ES5 em 2009, destacando suas diferentes implementações e interpretações do padrão ISO 8601. Por fim, formatos de data como '2025-05-28' são interpretados como UTC, enquanto outros são interpretados como horário local, causando confusão. O artigo conclui apresentando a próxima API Temporal do JavaScript, que resolverá esse problema, exigindo informações de fuso horário.

LIEF adiciona geração de DWARF: Conectando ferramentas de engenharia reversa

2025-05-28
LIEF adiciona geração de DWARF: Conectando ferramentas de engenharia reversa

O LIEF agora possui uma API abrangente para criar arquivos DWARF, juntamente com plug-ins para Ghidra e BinaryNinja para exportar resultados de análise de engenharia reversa. Isso permite o compartilhamento de informações cruciais, como nomes de funções e estruturas, entre diferentes ferramentas de engenharia reversa. Aproveitando o backend DWARF do LLVM, a API (disponível em Python, Rust e C++) simplifica o processo, incluindo detalhes como offsets de variáveis de pilha. Isso melhora a colaboração e a compreensão em projetos complexos de engenharia reversa.

Desenvolvimento

Corrida Armamentista de Prova de Trabalho em JavaScript Contra LLMs

2025-05-28

Sites estão cada vez mais usando sistemas de prova de trabalho baseados em JavaScript, como o Anubis da Xe Iaso, para combater LLMs e raspadores da web agressivos. No entanto, os LLMs podem usar máquinas comprometidas para obter uma grande quantidade de poder de CPU para resolver esses desafios. O problema é que os LLMs operam em um ambiente hostil, tornando difícil distinguir uma prova de trabalho genuína de JavaScript malicioso. Isso expõe os LLMs à mineração de CPU ou outros ataques. Tentar identificar sistemas de prova de trabalho é um jogo perdido para os LLMs, pois atores maliciosos têm um incentivo para imitá-los. Isso cria uma corrida armamentista entre sites e LLMs, cada um tentando otimizar o uso de recursos enquanto protege seus interesses.

Desenvolvimento

A Arma Secreta de um Programador: Notas Escritas à Mão Superam Editores de Código

2025-05-28
A Arma Secreta de um Programador: Notas Escritas à Mão Superam Editores de Código

Um desenvolvedor de software compartilha suas ideias únicas sobre o uso de um caderno para pensar e resolver problemas. Ele argumenta que escrever pensamentos e diagramas em um caderno, antes de escrever código diretamente em um computador, permite maior clareza e identificação de soluções. Esse método ajuda a transformar ideias vagas em planos concretos, descobrir falhas e defeitos de design no código e deixa um registro valioso do processo de pensamento para referência posterior. Para ele, um caderno é uma ferramenta mais importante do que um editor de código.

Desenvolvimento Métodos de Pensamento

Implementação de referência do protocolo de consenso Alpenglow

2025-05-28
Implementação de referência do protocolo de consenso Alpenglow

A Anza Technology lançou uma implementação de referência do protocolo de consenso Alpenglow. Isso inclui um exemplo de cluster local executável com 6 nós se comunicando via UDP. Um binário de simulações fornece vários testes de resiliência e requisitos de largura de banda do Alpenglow; um conjunto de dados de ping público é necessário para algumas simulações. Microrreferências e um conjunto de testes também estão incluídos. Para problemas de segurança, entre em contato diretamente com quentin (at) anza (dot) xyz.

Desenvolvimento

Monorepo: Um Caminho Espinhoso para a Produtividade do Desenvolvedor

2025-05-28

Este artigo explora os desafios e oportunidades de construir e manter um monorepo. O autor alerta contra seguir cegamente as histórias de sucesso de grandes empresas de tecnologia, enfatizando que um monorepo não é uma solução mágica. O sucesso depende de objetivos claramente definidos, como melhorar a consistência do código, a coesão organizacional e a eficiência do compartilhamento de ferramentas. O artigo detalha estratégias de otimização para controle de origem (limitações do Git e alternativas), sistemas de construção (priorizando estratégias de linguagem única), testes (O(change) e não O(repo)) e fluxos de trabalho de CI/CD em um ambiente de monorepo. O autor destaca a importância de lidar cuidadosamente com o código gerado e a natureza assíncrona da implantação de serviços para evitar incidentes decorrentes da ilusão de confirmações atômicas. Em última análise, o autor argumenta que, embora desafiador, os benefícios de um monorepo bem mantido valem a pena se a organização estiver comprometida com a melhoria contínua de ferramentas e processos.

Desenvolvimento

pg_test_fsync: Benchmark de desempenho de escrita em disco para bancos de dados

2025-05-28

Este artigo apresenta a ferramenta `pg_test_fsync`, usada para avaliar rapidamente o desempenho de escrita em disco ou armazenamento em nuvem, especialmente útil para logs WAL de banco de dados e outras cargas de trabalho de escrita de baixa latência. O autor testa um SSD Samsung 990 Pro de nível consumidor e um SSD Micron 7400 de nível empresarial, mostrando velocidades de escrita síncrona significativamente mais rápidas no SSD empresarial devido ao seu cache DRAM do controlador e proteção contra perda de energia. `fdatasync` se mostra mais rápido que `fsync` ou `O_SYNC`, mas mesmo `fdatasync` leva 1,6 milissegundos para uma única escrita de 8 kB. O artigo observa que várias escritas pequenas degradam o desempenho, sugerindo a escrita em lote para maior eficiência.

Desenvolvimento

Aplicativo UEFI salva meu sistema x86 alimentado por PoE

2025-05-28
Aplicativo UEFI salva meu sistema x86 alimentado por PoE

Em 2015, o autor enfrentou um desafio ao desenvolver computadores x86 embutidos alimentados por PoE: o sistema precisava de 23W para inicializar, mas o PoE padrão fornecia apenas 15,4W. Após falhar em modificar o BIOS, o autor usou habilmente um aplicativo UEFI para enviar pacotes LLDP antes da inicialização do SO, negociando com sucesso uma potência PoE+ maior. Esse aplicativo UEFI, chamado PoePwrNegotiator, escrito em C, agora é de código aberto, fornecendo experiência valiosa para desenvolvedores de projetos semelhantes.

Desenvolvimento

Compressão de Imagens: Deixe seu Site Voar

2025-05-28

Uma única imagem de herói não otimizada pode pesar mais do que todo o orçamento da sua página web! Este artigo ensina você a dominar rapidamente as técnicas de compressão de imagens para melhorar a velocidade do site e o SEO. Ele explica a diferença entre compressão sem perdas e com perdas, métricas-chave (qualidade, resolução, tamanho do arquivo), formatos comuns (JPEG, PNG, WebP, AVIF) e etapas para usar a ferramenta SlimImg para comprimir imagens. Um estudo de caso de comércio eletrônico mostra que, ao comprimir fotos de produtos, o tamanho médio da página foi reduzido em 68% e as taxas de conversão aumentaram em 38%.

Desenvolvimento compressão de imagens

Por que curvas elípticas para Diffie-Hellman?

2025-05-27
Por que curvas elípticas para Diffie-Hellman?

Este artigo investiga o porquê da utilização de curvas elípticas no intercâmbio de chaves Diffie-Hellman. Começando com a teoria dos grupos, o autor explica por que outros grupos, como o grupo Monstro, são inadequados. Através de uma exploração de objetos de grupo e teoria das categorias, o artigo revela que as curvas elípticas não são uma escolha arbitrária, mas quase a única opção viável, mostrando até mesmo que o Diffie-Hellman de corpo finito é um caso especial de criptografia de curva elíptica.

LLM 0.26: Modelos de Linguagem Grandes Ganham Ferramentas de Terminal

2025-05-27
LLM 0.26: Modelos de Linguagem Grandes Ganham Ferramentas de Terminal

O LLM 0.26 foi lançado, trazendo o maior recurso desde o início do projeto: suporte a ferramentas. A CLI do LLM e a biblioteca Python agora permitem que você dê a LLMs do OpenAI, Anthropic, Gemini e modelos locais do Ollama acesso a qualquer ferramenta representável como uma função Python. O artigo detalha a instalação e o uso de plugins de ferramentas, a execução de ferramentas por meio da linha de comando ou da API Python e mostra exemplos com OpenAI, Anthropic, Gemini e até mesmo o pequeno modelo Qwen-3. Além das ferramentas integradas, plugins personalizados como simpleeval (para matemática), quickjs (para JavaScript) e sqlite (para consultas de banco de dados) são apresentados. Esse suporte a ferramentas aborda as fraquezas do LLM, como cálculos matemáticos, expandindo dramaticamente as capacidades e abrindo possibilidades para aplicativos de IA poderosos.

Desenvolvimento Suporte a Ferramentas

Melhorando o Solver APT: Lidando Elegantemente com a Remoção de Pacotes Instalados Manualmente

2025-05-27

Esta publicação detalha melhorias em um solver de gerenciamento de pacotes APT. Inicialmente, pacotes instalados manualmente eram tratados como fatos fixos, enquanto pacotes instalados automaticamente eram cláusulas unitárias opcionais. No entanto, permitir a remoção de pacotes instalados manualmente quebrou o solver; ele poderia removê-los desnecessariamente. O autor resolve isso assumindo inicialmente todas as cláusulas opcionais, e então desfazendo iterativamente essas suposições durante o processo de resolução. Essa abordagem, embora não seja globalmente ótima, se mostra eficaz na prática para resolução de dependências, evitando a complexidade exponencial de uma busca global.

Desenvolvimento solver SAT

Executando GPT-2 na GPU com Shaders WebGL: Uma Jornada de Hacker

2025-05-27

Este sucesso do Hacker News detalha a experiência do autor implementando o GPT-2 usando WebGL e shaders na GPU. O artigo explora as origens e a evolução da programação de GPU de propósito geral, comparando APIs gráficas tradicionais (como OpenGL) com APIs de computação (CUDA e OpenCL). O autor utiliza texturas e framebuffers como um barramento de dados, usando shaders de fragmentos como kernels de computação para realizar operações de rede neural como multiplicação de matrizes e ativação GELU. Embora reconhecendo limitações em memória compartilhada, tamanho de textura e precisão, o artigo mostra o poder e o potencial da programação de GPU e demonstra o uso inovador de técnicas de processamento gráfico para computação de propósito geral. O código está disponível no Github.

Desenvolvimento programação GPU

Contador de Primos Truncados à Direita em C

2025-05-27
Contador de Primos Truncados à Direita em C

Este programa em C calcula eficientemente o número de primos truncados à direita para um determinado número de dígitos. Ele usa uma tabela hash personalizada para verificações rápidas de primalidade e a biblioteca primesieve para geração otimizada de primos. Um primo truncado à direita permanece primo após a remoção sucessiva de seu dígito mais à direita. O programa lida com entradas de 1 a 19 dígitos, relatando a contagem de primos truncados à direita para cada comprimento de dígito e o tempo total de execução. Por exemplo, para números de 8 dígitos, ele encontra 5 primos e um total de 83 até 8 dígitos.

Desenvolvimento
1 2 74 75 76 78 80 81 82 214 215