Community Chat & Live Help
Ask a New Question!
Public Discussions (43)
ses
**Waiting for response...** (Admin only area below)
grep/egrep - Text Processors Commands
What is grep? The grep command which stands for “global regular expression print,” processes text line by line and prints any lines which match a specified pattern. Commandes : grep --version OR grep --help = Check version or help grep keyword file = Search for a keyword from a file grep -c keyword file = Search for a keyword and count grep -i KEYword file = Search for a keyword ignore case-sensitive grep -n keyword file = Display the matched lines and their line numbers grep -v keyword file = Display everything but keyword grep keyword file | awk '{print $1}' = Search for a keyword and then only give the 1st field ls -l | grep Desktop = Search for a keyword and then only give the 1st field egrep -i "keyword|keyword2" file = Search for 2 keywords.
nosql
Dans MongoDB (et les bases NoSQL orientées document), les données sont stockées sous forme de documents au format JSON (plus précisément BSON, qui est une version binaire optimisée de JSON).Dans un document JSON, il n'y a pas de tableau rigide avec des colonnes comme en SQL. À la place, les données sont organisées en paires clé / valeur :La clé (key) est ce qu'on appelle un field (champ).La valeur (value) est la donnée associée (texte, nombre, tableau, sous-document, etc.).Exemple concret :JSON{
"_id": "651a2b3c1234",
"username": "hanifi", // "username" est un field (champ)
"email": "user@test.com",// "email" est un field
"ports": [3000, 3001] // "ports" est un field qui contient un tableau
}
Résumé de la correspondance des termes :Base de données relationnelle (SQL : MySQL, Postgres...)Base de données Document (NoSQL : MongoDB)TableCollectionLigne (Row / Record)Document (Objet JSON)Colonne (Column)Champ (Field)
/etc/passwd
**Waiting for response...** (Admin only area below)
/etc/passwd
**Waiting for response...** (Admin only area below)
crontab ?
GUIDE TECHNIQUE : CRONTAB ET AUTOMATISATION SOUS LINUX
1. DÉFINITION ET PRINCIPE
cron est un service d'arrière-plan (daemon) sous Linux/UNIX qui s'exécute en continu et vérifie chaque minute si des tâches doivent être lancées.
crontab (cron table) est l'utilitaire en ligne de commande et le fichier de configuration qui contient la liste des instructions planifiées pour un utilisateur donné.
2. SYNTAXE DES CHAMPS TEMPORELS
Une entrée crontab classique se compose de 5 champs temporels suivis de la commande à exécuter :
* * * * * commande_a_executer
│ │ │ │ │
│ │ │ │ └─── Jour de la semaine (0 - 6) (0 = Dimanche)
│ │ │ ────── Mois (1 - 12)
│ │ ──────── Jour du mois (1 - 31)
│ ────────── Heure (0 - 23)
──────────── Minute (0 - 59)
Caractères spéciaux autorisés :
* : Toutes les valeurs possibles.
, : Séparateur de valeurs (ex: 1,15,30 pour les minutes 1, 15 et 30).
- : Plage de valeurs (ex: 1-5 pour du lundi au vendredi dans le champ jour de semaine).
/* : Intervalle régulier (ex: */15 dans les minutes = toutes les 15 minutes).
3. EXEMPLE PRATIQUE : SAUVEGARDE CHAQUE JOUR À 22H00
Scénario :
Sauvegarder une base de données / table de données vers une unité de stockage (type RDX/Disque) à 22h00 précises, chaque jour.
Étape 1 : Expression temporelle pour 22h00
Minute : 0
Heure : 22 (format 24 heures)
Jour du mois : * (tous les jours)
Mois : * (tous les mois)
Jour de la semaine : * (tous les jours)
Syntaxe retenue : 0 22 * * *
Étape 2 : Création du script de sauvegarde (/usr/local/bin/backup_rdx.sh)
Il est fortement recommandé de passer par un script .sh plutôt que d'écrire de longues commandes directement dans la crontab.
#!/bin/bash
# Configuration des variables
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/mnt/rdx/backups" # Point de montage RDX
LOG_FILE="/var/log/backup_rdx.log" # Fichier de journalisation
# Créer le répertoire s'il n'existe pas
mkdir -p "$BACKUP_DIR"
echo "=== Début de la sauvegarde RDX : $(date) ===" >> "$LOG_FILE"
# Exemple 1 : Sauvegarde d'une table PostgreSQL / MySQL vers RDX
# mysqldump -u root -p'mot_de_passe' ma_base ma_table > "$BACKUP_DIR/table_backup_$DATE.sql"
# Exemple 2 : Copie de fichiers de données vers RDX avec rsync
rsync -avz /var/lib/data/ "$BACKUP_DIR/data_$DATE/" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "Sauvegarde réussie le $DATE" >> "$LOG_FILE"
else
echo "ERREUR lors de la sauvegarde le $DATE" >> "$LOG_FILE"
fi
echo "=== Fin de la sauvegarde ===" >> "$LOG_FILE"
Rendre le script exécutable :
sudo chmod +x /usr/local/bin/backup_rdx.sh
Étape 3 : Ajout dans la Crontab
Pour éditer la table des tâches de l'utilisateur actuel (ou root si la sauvegarde exige des privilèges élevés) :
sudo crontab -e
Ajoutez la ligne suivante à la fin du fichier :
0 22 * * * /usr/local/bin/backup_rdx.sh >> /var/log/backup_cron.log 2>&1
Explication du redirigeur >> /var/log/backup_cron.log 2>&1 :
>> : Redirige la sortie standard (logs) à la fin du fichier sans l'écraser.
2>&1 : Redirige également les erreurs (sortie 2) vers le même fichier journal.
4. COMMANDES DE GESTION CRONTAB
crontab -l : Lister les tâches configurées pour l'utilisateur courant.
crontab -e : Éditer le fichier crontab interactif.
crontab -r : Supprimer toutes les tâches planifiées de l'utilisateur.
sudo crontab -l -u root : Afficher la crontab de l'utilisateur root.
5. BONNES PRATIQUES SOUS RHEL / LINUX
Variables d'environnement dans Cron : cron s'exécute dans un environnement shell restreint. Indiquez toujours les chemins absolus pour les commandes (ex: /usr/bin/rsync au lieu de rsync).
Redirection des sorties : Par défaut, cron tente d'envoyer un e-mail local si une tâche génère du texte. Redirigez toujours la sortie vers un fichier log.
Tester avant d'automatiser : Exécutez toujours votre script manuellement dans un terminal avant d'activer la ligne dans la crontab.
BIOS Legacy vs UEFI ?
DOCUMENT TECHNIQUE : BIOS LEGACY vs UEFI1. VUE D'ENSEMBLE ET DEFINITIONSBIOS Legacy (Basic Input/Output System)Origine : Conçu dans les années 1970 pour les PC IBM.Fonctionnement : Firmware 16 bits exécuté en mode réel (Real Mode). Il initialise le matériel basique, effectue le POST (Power-On Self-Test) et lit le premier secteur du disque d'amorçage.Statut actuel : Obsolète. Abandonné par les fabricants de processeurs (Intel, AMD) et de serveurs (Dell, HPE, Lenovo) sur les plateformes récentes.UEFI (Unified Extensible Firmware Interface)Origine : Développé initialement par Intel (projet EFI), puis maintenu par le Forum UEFI.Fonctionnement : Interface moderne fonctionnant en mode 32 bits ou 64 bits. Il peut exécuter ses propres modules (pilotes réseau, interfaces graphiques, outils de diagnostic) sans charger l'OS.Statut actuel : Standard de l'industrie pour tous les ordinateurs x86_64, ARM64 et serveurs modernes.2. TABLEAU COMPARATIF SYNTHÉTIQUECaractéristiqueBIOS LegacyUEFIArchitecture processeur16 bits (Real Mode)32 bits ou 64 bitsTable de partitionnementMBR (Master Boot Record)GPT (GUID Partition Table)Taille maximale de disque2,2 To9,4 Zo (Zettabytes)Nombre max. de partitions4 partitions primaires128 partitions (par défaut)Lieu du BootloaderSecteur MBR (Secteur 0 du disque)Fichier .efi sur partition ESP (FAT32)Emplacement Linux (GRUB2)/boot/grub2/i386-pc//boot/efi/EFI/<distro>/Sécurité (Secure Boot)Non disponiblePris en charge (Signatures numériques)Interface utilisateurMode texte basique (Clavier uniquement)Graphique (Souris, écran tactile, réseau)Boot Réseau (PXE)Lent, fonctionnalités basiquesRapide, support HTTP/HTTPS, IPv63. PROCESSUS DE DÉMARRAGE (BOOT SEQUENCE)Séquence de démarrage BIOS LegacyPOST (Power-On Self-Test) : Le firmware teste les composants matériels fondamentaux (RAM, CPU, GPU).Lecture MBR : Le BIOS cherche le disque de démarrage prioritaire et lit les 512 premiers octets (le MBR).Passage de relais : Le code binaire du MBR charge l'étape suivante du gestionnaire d'amorçage (GRUB Stage 1 puis Stage 2).Chargement du Noyau : GRUB bascule le CPU du mode 16 bits vers le mode 32/64 bits, puis charge vmlinuz et initramfs en mémoire vive.Séquence de démarrage UEFIInitialisation UEFI : Le firmware initialise le matériel en mode 64 bits natif (initialisation parallélisée plus rapide).Lecture de la NVRAM : L'UEFI lit la mémoire NVRAM de la carte mère pour connaître l'ordre d'amorçage et le chemin de l'exécutable EFI.Chargement de la partition ESP : Le firmware accède directement à la partition système EFI (formatée en FAT32) et exécute le fichier d'amorçage (ex: /EFI/redhat/grubx64.efi).Exécution de GRUB & Noyau : L'exécutable EFI charge le noyau vmlinuz directement, sans étape intermédiaire de basculement de mode processeur.4. COMPARAISON MBR vs GPTMBR (Master Boot Record)Adressage : Adressage 32 bits des secteurs logic (LBA).Capacité maximale :
$$2^{32} \text{ secteurs} \times 512 \text{ octets/secteur} = 2\,199\,023\,255\,552 \text{ octets} \approx 2,2 \text{ To}$$Tolérance aux pannes : Aucune. La table de partition est stockée à un seul endroit (le premier secteur). Si ce secteur est endommagé, l'ensemble du disque est illisible.GPT (GUID Partition Table)Adressage : Adressage 64 bits des secteurs.Capacité maximale :
$$2^{64} \text{ secteurs} \times 512 \text{ octets/secteur} \approx 9,4 \text{ Zettabytes}$$Tolérance aux pannes : Élevée. GPT conserve une copie de sauvegarde de la table de partition à la toute fin du disque (Backup GPT Header). Il intègre également un contrôle de redondance cyclique (CRC32) pour détecter les corruptions de données.Compatibilité : Inclut un Protective MBR au secteur 0 pour empêcher les anciens utilitaires BIOS d'écraser le disque.5. FONCTIONNALITÉS CLÉS ET SÉCURITÉ EN UEFISecure Boot :
Empêche l'exécution de logiciels malveillants ou de bootkits au démarrage. Avant de charger un fichier .efi ou un noyau Linux, l'UEFI vérifie sa signature numérique à l'aide de clés cryptographiques stockées dans la carte mère (PK, KEK, DB).Variables NVRAM :
Les paramètres de démarrage sont modifiables directement depuis le système d'exploitation via l'interface /sys/firmware/efi/efivars/ (utilitaire efibootmgr sous Linux).Support Réseau Intégré :
L'UEFI contient une pile réseau IPv4/IPv6 native, permettant le démarrage à distance via PXE, iSCSI ou téléchargement direct d'image ISO via HTTPS.6. SPÉCIFICITÉS SOUS LINUX / RHELStructure du répertoire /boot selon le modeEn BIOS Legacy :Dossier des modules GRUB : /boot/grub2/i386-pc/Configuration principale : /boot/grub2/grub.cfgEn UEFI :Partition ESP montée sur : /boot/efiFichiers EFI : /boot/efi/EFI/redhat/grubx64.efi et shimx64.efiNote RHEL 9/10 : La configuration principale reste centralisée dans /boot/grub2/grub.cfg, avec un lien ou stub dans /boot/efi.Commandes utiles de diagnosticIdentifier le mode de démarrage actuel :[ -d /sys/firmware/efi ] && echo "Mode UEFI" || echo "Mode BIOS/Legacy"
Lister les entrées d'amorçage NVRAM (UEFI uniquement) :sudo efibootmgr -v
Vérifier le type de table de partition du disque (MBR/dos ou GPT) :sudo lsblk -o NAME,SIZE,FSTYPE,PTTYPE
bucket S3 (Amazon Simple Storage Service) ?
Un bucket S3 (Amazon Simple Storage Service), c'est tout simplement un espace de stockage cloud sécurisé sur AWS (un dossier géant dans le nuage) où tu peux stocker et organiser n'importe quel type de fichier (images, sauvegardes, scripts, disques virtuels, etc.).
Dans le cas de l'export de ta machine virtuelle RHEL 10, AWS t'oblige à déposer l'image de ton disque (le fichier .vmdk) dans un bucket S3 avant de pouvoir le télécharger sur ton PC. C'est l'intermédiaire obligatoire pour faire sortir ton disque virtuel d'AWS.
JSON et JSONB in SQL relationnel??
stocker des données au format JSON dans une base de données relationnelle (comme PostgreSQL), ça sert à garder des structures flexibles (comme des objets avec des sous-clés : calculs, employee, company, etc.) dans une seule case de tableau, au lieu de créer 50 colonnes différentes. Voici la différence entre les deux types :json (format texte) : Il stocke le texte JSON exactement tel que tu l'écris. L'inconvénient, c'est que chaque fois que tu fais une recherche dedans, la base de données est obligée de relire et de re-analyser tout le texte caractère par caractère, ce qui est lent.jsonb (format binaire - celui de ton image) : Il décompose le JSON et le stocke sous une forme binaire optimisée.Pourquoi c'est mieux ? C'est beaucoup plus rapide pour faire des requêtes et chercher des infos précises à l'intérieur (par exemple, récupérer tous les employés dont le matricule est MAT-001). Il enlève aussi les espaces superflus et permet de créer des index pour accélérer les recherches.Sur ton image, c'est du jsonb, ce qui est le choix idéal pour stocker des données complexes et changeantes (comme des fiches de paie avec des calculs, des infos d'employés et d'entreprises) tout en gardant de bonnes performances.
$ sudo lsof -i -P -n | grep LISTEN
================================================================================
ANALYSE DÉTAILLÉE DE LA COMMANDE LSOF ET DES PORTS EN ÉCOUTE
Machine : Khelaf-Hanifi-MyRHEL10-VM-AWS
================================================================================
--------------------------------------------------------------------------------
1. EXPLICATION DE LA COMMANDE ET DE SES OPTIONS
--------------------------------------------------------------------------------
Commande exécutée : $ sudo lsof -i -P -n | grep LISTEN
- lsof : "List Open Files" (Lister les fichiers ouverts). Sous Linux, tout est
fichier, y compris les sockets réseau.
- -i : Filtre pour afficher uniquement les sockets Internet (IPv4/IPv6).
- -P : Affiche les numéros de ports BRUTS (ex: 80, 9090, 3000) sans les
traduire en noms de services (http, websm, etc.).
- -n : Désactive la résolution DNS inverse (affiche les IP réelles comme
127.0.0.1 au lieu de 'localhost'). Accélère considérablement l'exécution.
- | grep LISTEN : Filtre le résultat pour n'afficher QUE les ports en attente de
connexions entrantes (état LISTEN).
--------------------------------------------------------------------------------
2. SIGNIFICATION DES COLONNES DE LA SORTIE
--------------------------------------------------------------------------------
- COMMAND : Nom de l'application ou du processus qui gère le port.
- PID : Process ID (numéro unique d'identification du processus).
- USER : Compte utilisateur Linux propriétaire du processus running.
- FD : File Descriptor (ex: 4u = descripteur 4 ouvert en lecture/écriture).
- TYPE : Famille d'adresse IP (IPv4 ou IPv6).
- DEVICE : Numéro de périphérique interne attribué par le noyau Linux.
- SIZE/OFF : Encombrement mémoire / Offset (toujours 0t0 pour les sockets réseau).
- NODE : Numéro d'inode attribué au socket par le système de fichiers virtuels.
- NAME : Adresse IP d'écoute, numéro de port et état (ex: TCP *:80 (LISTEN)).
--------------------------------------------------------------------------------
3. INVENTAIRE DÉTAILLÉ DE VOS PROCESSUS ACTIFS (DEPUIS VOTRE CAPTURE)
--------------------------------------------------------------------------------
A. Cockpit & Systemd (Gestion Web du serveur) :
- systemd (PID 1, root) & cockpit-t (PID 98415, cockpit-systemd-service)
- Port : TCP *:9090 (IPv6 / IPv4)
- Analyse : Socket activé par systemd. cockpittls gère le chiffrement HTTPS.
B. Serveur Web Apache (httpd) :
- httpd (PID 823 [root], PIDs 888, 889, 930, 6088 [apache])
- Port : TCP *:80 (IPv6 / dual-stack)
- Analyse : Master process root + 4 worker processes sous le compte 'apache'.
C. Service SSH (Accès distant sécurisé) :
- sshd (PID 1401, root)
- Port : TCP *:22 (IPv4 et IPv6)
- Analyse : Écoute globale active pour les connexions terminal distantes.
D. Base de Données PostgreSQL :
- postgres (PID 1413, postgres)
- Port : TCP 127.0.0.1:5432 (IPv4) et [::1]:5432 (IPv6)
- Analyse : Isolation locale stricte. Aucune connexion externe permise.
E. Application Node.js :
- node (PID 155382, ec2-user)
- Port : TCP *:3000 (IPv4)
- Analyse : Application web backend à l'écoute sur toutes les interfaces.
F. VS Code Remote Server (Sessions d'édition) :
- code-645f (PIDs 1852, 126989, 127197, ec2-user)
- Ports : TCP 127.0.0.1:34163, 38683, 37365
- Analyse : Tunnels internes pour votre environnement de développement IDE.
================================================================================
Fin du document technique d'analyse.
================================================================================
ports ?
1. Ports en écoute sur le système (Processus / Services actifs)sudo ss -tulpn : Affiche tous les ports TCP (-t) et UDP (-u) en écoute (-l), sous forme numérique (-n), avec le processus/PID associé (-p).Vérification : Tu verras la liste des ports actifs dans la colonne Local Address:Port (ex: :22 pour SSH ou :9090 pour Cockpit).sudo lsof -i -P -n | grep LISTEN : Liste tous les processus système qui écoutent actuellement sur le réseau.Vérification : Affiche clairement le nom du binaire/service qui détient chaque port.2. Ports autorisés par le pare-feu (Filtrage Réseau)sudo firewall-cmd --list-ports : Affiche uniquement les ports tcp/udp ouverts directement dans la zone active.Vérification : Renvoie la liste des numéros de ports autorisés (ex: 9090/tcp).sudo firewall-cmd --list-all : Affiche la configuration complète du pare-feu, incluant les services, les ports et les règles de restriction par IP (rich rules). Vérification : Permet de valider quels accès réseau traversent le pare-feu du serveur.
systemctl ?
================================================================================
RHEL 10 SYSTEM ADMINISTRATION & SYSTEMCTL REFERENCE GUIDE
Guide de Référence Systemd & Administration Système RHEL 10
================================================================================
--------------------------------------------------------------------------------
1. INTRODUCTION & SCOPE / INTRODUCTION ET PORTÉE
--------------------------------------------------------------------------------
[EN] This reference guide compiles essential Linux administration commands for RHEL 10
environments, focusing on service lifecycle management, boot configuration,
system monitoring, and troubleshooting best practices. Designed for senior
full-stack engineers managing production instances.
[FR] Ce guide de référence rassemble les commandes essentielles d'administration
Linux pour les environnements RHEL 10, en se concentrant sur la gestion du cycle
de vie des services, la configuration au démarrage, la surveillance système et
les bonnes pratiques de dépannage. Conçu pour les ingénieurs full-stack seniors
gérant des instances de production.
--------------------------------------------------------------------------------
2. SERVICE MANAGEMENT / GESTION DES SERVICES
--------------------------------------------------------------------------------
[EN] Controlling the active state of system services.
[FR] Contrôle de l'état actif des services système.
- Start a service / Démarrer un service :
$ sudo systemctl start <service_name>
[EN] Launches the service immediately in the background.
[FR] Lance le service immédiatement en arrière-plan.
- Stop a service / Arrêter un service :
$ sudo systemctl stop <service_name>
[EN] Terminates the running service process.
[FR] Termine le processus du service en cours d'exécution.
- Restart a service / Redémarrer un service :
$ sudo systemctl restart <service_name>
[EN] Performs a complete stop followed by a start cycle.
[FR] Effectue un cycle complet d'arrêt suivi d'un démarrage.
- Reload configuration / Recharger la configuration :
$ sudo systemctl reload <service_name>
[EN] Applies configuration updates without dropping active connections.
[FR] Applique les modifications de configuration sans couper les connexions actives.
--------------------------------------------------------------------------------
3. BOOT & PERSISTENCE / DÉMARRAGE ET PERSISTANCE
--------------------------------------------------------------------------------
[EN] Managing automated startup behaviors during system boot.
[FR] Gestion des comportements de démarrage automatisés au boot du système.
- Enable automated startup / Activer le lancement automatique :
$ sudo systemctl enable <service_name>
[EN] Creates symbolic links to start the service on every boot.
[FR] Crée des liens symboliques pour lancer le service à chaque démarrage.
- Disable automated startup / Désactiver le lancement automatique :
$ sudo systemctl disable <service_name>
[EN] Prevents the service from starting automatically at boot.
[FR] Empêche le service de démarrer automatiquement au boot.
--------------------------------------------------------------------------------
4. STATUS & MONITORING / ÉTAT ET SURVEILLANCE
--------------------------------------------------------------------------------
[EN] Inspecting operational health and runtime states.
[FR] Inspection de la santé opérationnelle et des états d'exécution.
- Detailed status / État détaillé :
$ sudo systemctl status <service_name>
[EN] Displays active state, recent log entries, PIDs, and resource usage.
[FR] Affiche l'état actif, les entrées de journal récentes, les PID et l'utilisation des ressources.
- Quick active check / Vérification active rapide :
$ systemctl is-active <service_name>
[EN] Returns 'active' or 'inactive' string output.
[FR] Renvoie une chaîne de caractères 'active' ou 'inactive'.
--------------------------------------------------------------------------------
5. MAINTENANCE & TROUBLESHOOTING / MAINTENANCE ET DÉPANNAGE
--------------------------------------------------------------------------------
[EN] Resolving transient errors and reloading daemon rules.
[FR] Résolution des erreurs transitoires et rechargement des règles du démon.
- Reset failed service states / Réinitialiser les états d'erreur :
$ sudo systemctl reset-failed
[EN] Cleans up residual error flags and resets failure counters across systemd.
[FR] Nettoie les indicateurs d'erreur résiduels et réinitialise les compteurs d'échec dans systemd.
- Reload systemd daemon / Recharger le démon systemd :
$ sudo systemctl daemon-reload
[EN] Mandatory after creating or modifying custom service files in /etc/systemd/system/.
[FR] Obligatoire après avoir créé ou modifié des fichiers de service personnalisés dans /etc/systemd/system/.
--------------------------------------------------------------------------------
6. SYSTEM LIFECYCLE / CYCLE DE VIE DU SYSTÈME
--------------------------------------------------------------------------------
[EN] Global infrastructure actions.
[FR] Actions globales sur l'infrastructure.
- Reboot server / Redémarrer le serveur :
$ sudo systemctl reboot
[EN] Initiates a clean system restart sequence.
[FR] Lance une séquence de redémarrage propre du système.
- Power off server / Éteindre le serveur :
$ sudo systemctl poweroff
[EN] Shuts down the virtual machine or physical host safely.
[FR] Arrête la machine virtuelle ou l'hôte physique en toute sécurité.
================================================================================
End of Reference Guide / Fin du Guide de Référence
================================================================================
sudo systemctl reset-failed ?
Cette commande se contente de réinitialiser les compteurs d'erreurs des services dans systemd. Elle nettoie l'historique des statuts (pour faire passer les services de l'état "échec" à un état neutre), mais elle ne modifie, n'arrête et ne supprime aucun fichier ni configuration de ton système.
Vérification : Tes applications, tes configurations et tes services en cours d'exécution continueront de tourner exactement de la même manière, l'affichage des erreurs dans Cockpit sera simplement remis à zéro.
list commands linux
[ec2-user@Khelaf-Hanifi-MyRHEL10-VM-AWS ~]$ history
1 df -h
2 sudo dnf update -y
3 sudo fallocate -l 2G /swapfile
4 sudo chmod 600 /swapfile
5 sudo mkswap /swapfile
6 sudo swapon /swapfile
7 echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
8 free -h
9 sudo dnf install cockpit -y
10 sudo systemctl enable --now cockpit.socket
11 sudo passwd ec2-user
12 sudo systemctl enable --now cockpit.socket
13 sudo firewall-cmd --add-service=cockpit --permanent
14 sudo systemctl disable --now kdump
15 sudo firewall-cmd --permanent --add-service=cockpit
16 history
17 hostnamectl
18 sudo hostnamectl set-hostname Khelaf-Hanifi-MyRHEL10-VM-AWS
19 exec bash
20 sudo insights-client
21 ip -a
22 ip a
23 ls -l
24 df h
25 df -h
26 hostnamectl
27 mkdir -p ~/Documents/projets-web-app
28 cd ~/Documents/projets-web-app && pwd
29 sudo dnf install -y nodejs npm
30 node -v
31 npm -v
32 sudo npm install -g pm2
33 pm2 -v
34 pm2 startup systemd
35 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
36 pm2 save
37 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-10-x86_64/pgdg-redhat-repo-latest.noarch.rpm
38 sudo dnf install -y postgresql16-server postgresql16
39 sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
40 sudo systemctl enable --now postgresql-16
41 sudo systemctl status postgresql-16
42 sudo -i -u postgres psql
43 sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
44 sudo dnf install -y pgadmin4-web
45 sudo /usr/pgadmin4/bin/setup-web.sh
46 ls
47 cd Documents/
48 ls
49 cd projets-web-app/
50 mkdir mycontact
51 cd mycontact
52 npm init -y
53 pm2 -v
54 pm2 start index.js --name "mycontact"
55 pm2 save
56 pm2 startup
57 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
58 pm2 save
59 pm2 status
60 pm2 logs mycontact --lines 20
61 sudo systemctl enable --now cockpit.socket
62 sudo systemctl start cockpit.socket
63 echo 'ec2-user:kHa1981+$*' | sudo chpasswdecho 'ec2-user:kHa1981+$*' | sudo chpasswdecho 'ec2-user:kHa1981+$*' | sudo chpasswdecho 'ec2-user:kHa1981+$*' | sudo chpasswd
64 npm install express ejs pg dotenv
65 mkdir -p views/partials public/{css,js} && touch index.js .env views/{index,contacts}.ejs views/partials/{header,footer}.ejs public/css/style.css public/js/main.js
66 npm install express-session && touch views/login.ejs
67 sudo npm install -g nodemon
68 nodemon index.js
69 sudo swapoff /swapfile
70 sudo dd if=/dev/zero of=/swapfile2 bs=1M count=2048 status=progress && sudo chmod 600 /swapfile2 && sudo mkswap /swapfile2 && sudo swapon /swapfile2 && echo '/swapfile2 swap swap defaults 0 0' | sudo tee -a /etc/fstab
71 free -h
72 echo "vm.swappiness=80" | sudo tee /etc/sysctl.d/99-custom-swappiness.conf && sudo sysctl -p /etc/sysctl.d/99-custom-swappiness.conf
73 watch -n 2 free -h
74 sudo systemctl disable --now bluetooth.service
75 systemctl status bluetooth.service
76 sudo systemctl disable --now cups.service
77 pm2 status
78 pm2 monit
79 pm2 save
80 pm2 startup
81 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
82 df -h
83 free -h
84 htop
85 uptime
86 systemctl list-units --type=service --state=running
87 systemctl list-units --type=service --state=running
88 systemctl list-units --type=service --all
89 pm2 status
90 sudo insights-client
91 npm install express-useragent axios
92 pkill -f node
93 nodemon index.js
94 nodemon index.js
95 npx kill-port 3000
96 nodemon index.js
97 sudo fuser -k 3000/tcp
98 pm2 stop all
99 nodemon index.js
100 fuser -k 3000/tcp; clear
101 nodemon index.js
102 pkill -f node
103 fuser -k 3000/tcp
104 npx kill-port 3000
105 nodemon index.js
106 touch views/login-visitors.ejs
107 touch views/visitor-logs.ejs
108 touch public/js/telemetry.js
109 pkill -f node
110 nodemon index.js
111 pm2 start index.js --name "mycontact"
112 pm2 save
113 pm2 startup
114 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
115 pm2 status
116 exit
117 fuser -k 3000/tcp
118 clear
119 nodemon index.js
120 exit
121 free -h
122 df -h
123 uptime
124 who
125 last
126 uptime
127 who
128 last
129 top
130 htop
131 sudo dnf install htop -y
132 sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm -y
133 sudo /usr/bin/crb enable
134 sudo dnf install htop -y
135 htop
136 pm2 list
137 history
[ec2-user@Khelaf-Hanifi-MyRHEL10-VM-AWS ~]$ 1. Surveillance de l'État Global et du Système
outils essentielle des commandes Linux ?
1. Surveillance de l'État Global et du Système
uptime : Affiche depuis combien de temps le serveur tourne, le nombre d'utilisateurs connectés et la charge processeur (load average) sur 1, 5 et 15 minutes.
hostnamectl : Permet de voir et de modifier le nom d'hôte de la machine, la version exacte du système d'exploitation (RHEL 10) et l'architecture.
uname -r : Affiche la version exacte du noyau Linux (kernel) en cours d'exécution.
top ou htop : Offre une vue en temps réel des processus actifs, de la consommation de la RAM et du processeur par application.
2. Gestion de la Mémoire et du Swap
free -h : Affiche l'état de la mémoire vive (RAM) et de l'espace de swap (total, utilisé, libre) de manière lisible pour un humain (en Mo/Go).
vmstat 1 : Fournit un rapport en direct sur les statistiques de la mémoire virtuelle, des processus et des E/S disques (rafraîchi toutes les secondes).
3. Gestion du Disque et du Stockage
df -h : Affiche l'espace disque disponible et utilisé sur toutes les partitions montrées du système.
df -i : Permet de vérifier la consommation des inodes (le nombre de fichiers créés), utile si un disque refuse d'écrire alors qu'il reste de la place en Go.
du -sh /chemin/dossier : Mesure la taille exacte occupée par un dossier ou un fichier spécifique sur le disque.
lsblk : Liste tous les disques physiques branchés et leurs partitions sous forme d'arbre (très utile pour voir les volumes NVMe).
4. Suivi des Utilisateurs et des Connexions
who : Liste les utilisateurs actuellement connectés sur la machine ainsi que leur terminal et adresse IP d'origine.
w : Version plus détaillée de who, qui indique en plus ce que chaque utilisateur est en train d'exécuter comme commande.
last : Affiche l'historique complet et chronologique de toutes les connexions et des redémarrages passés du serveur.
5. Administration Avancée et Réseau (Niveau Expert)
systemctl status nom_du_service : Vérifie l'état de santé et de fonctionnement d'un service système (comme nginx, postgresql ou ton application Node.js).
journalctl -u nom_du_service -f : Permet de suivre en direct (live) les logs et les erreurs d'un service spécifique.
ss -tunlp : Liste tous les ports réseau ouverts sur la machine et les processus qui les écoutent (remplace avantageusement l'ancien netstat).
ps aux --sort=-%mem : Affiche la liste de tous les processus en cours, triés du plus gourmand en mémoire vive au moins gourmand.
Pourquoi ce préfixe ::ffff: apparaît ?
Sur ton serveur Linux (ton instance EC2 RHEL), le protocole réseau principal (IPv6) est activé par défaut en mode dual-stack (double pile IPv4/IPv6).
Quand Node.js écoute sur le serveur, il gère les connexions via des sockets IPv6. Si un utilisateur se connecte en IPv4 (ce qui est le cas en Algérie et pour la grande majorité des connexions), le noyau du système d'exploitation encapsule automatiquement cette adresse IPv4 dans un format compatible IPv6 en lui collant le préfixe ::ffff: (qui signifie IPv4-mapped IPv6 address).
C'est pour cela que Node.js récupère ::ffff:129.45.70.182 au lieu de 129.45.70.182 tout court.
Pourquoi ton code ne l'a pas encore enlevé sur les lignes 13 et 12 ?
Regarde ton tableau : les lignes #12 et #13 affichent encore ::ffff:129.45.70.182 à 13:28, alors que tu viens juste de modifier et sauvegarder ton code à l'instant.
C'est tout simplement parce que ce sont les anciennes lignes déjà enregistrées dans la base de données PostgreSQL avant ta modification ! Fais un test : navigue sur une nouvelle page de ton site ou rafraîchit ton site depuis une autre fenêtre, et regarde la toute dernière ligne qui va s'ajouter dans ton tableau : elle s'affichera enfin proprement sans le ::ffff: !
all services RHEL10 minimum ( app Web)?
[ec2-user@Khelaf-Hanifi-MyRHEL10-VM-AWS ~]$ systemctl list-units --type=service --all
UNIT LOAD ACTIVE SUB JOB DESCRIPTION >
● apt-daily.service not-found inactive dead apt-daily.service
audit-rules.service loaded inactive dead Load Audit Rules
auditd.service loaded active running Security Audit Logging Service
● auto-cpufreq.service not-found inactive dead auto-cpufreq.service
● autofs.service not-found inactive dead autofs.service
blk-availability.service loaded inactive dead Availability of block devices
chronyd.service loaded active running NTP client/server
cloud-config.service loaded active exited Cloud-init: Config Stage
cloud-final.service loaded active exited Cloud-init: Final Stage
cloud-init-local.service loaded active exited Cloud-init: Local Stage (pre-networ>
cloud-init.service loaded active exited Cloud-init: Network Stage
cockpit-issue.service loaded inactive dead Cockpit issue updater service
cockpit-session-socket-user.service loaded active exited Dynamic user for /run/cockpit/sessi>
cockpit-session@16-58906-63714.service loaded active running Cockpit session 16/58906/63714
cockpit-wsinstance-http.service loaded inactive dead Cockpit Web Service http instance
● cockpit-wsinstance-https-factory@5-54172-61789.service loaded failed failed Cockpit Web Service https instance >
cockpit-wsinstance-https@e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.service loaded active running Cockpit Web Service https instance >
cockpit-wsinstance-socket-user.service loaded active exited Dynamic user for /run/cockpit/wsins>
cockpit.service loaded active running Cockpit Web Service
● cpupower.service not-found inactive dead cpupower.service
crond.service loaded active running Command Scheduler
dbus-broker.service loaded active running D-Bus System Message Bus
● display-manager.service not-found inactive dead display-manager.service
dm-event.service loaded inactive dead Device-mapper event daemon
dnf-makecache.service loaded inactive dead dnf makecache
dracut-cmdline.service loaded inactive dead dracut cmdline hook
dracut-initqueue.service loaded inactive dead dracut initqueue hook
dracut-mount.service loaded inactive dead dracut mount hook
dracut-pre-mount.service loaded inactive dead dracut pre-mount hook
dracut-pre-pivot.service loaded inactive dead dracut pre-pivot and cleanup hook
dracut-pre-trigger.service loaded inactive dead dracut pre-trigger hook
dracut-pre-udev.service loaded inactive dead dracut pre-udev hook
dracut-shutdown-onfailure.service loaded inactive dead Service executing upon dracut-shutd>
dracut-shutdown.service loaded active exited Restore /run/initramfs on shutdown
emergency.service loaded inactive dead Emergency Shell
● fcoe.service not-found inactive dead fcoe.service
fips-crypto-policy-overlay.service loaded inactive dead Bind-mount FIPS crypto-policy in FI>
fstrim.service loaded inactive dead Discard unused blocks on filesystem>
fwupd-refresh.service loaded inactive dead Refresh fwupd metadata and update m>
fwupd.service loaded active running Firmware update daemon
getty@tty1.service loaded active running Getty on tty1
grub2-systemd-integration.service loaded inactive dead Grub2 systemctl reboot --boot-loade>
● httpd-init.service not-found inactive dead httpd-init.service
httpd.service loaded active running The Apache HTTP Server
● hv_kvp_daemon.service not-found inactive dead hv_kvp_daemon.service
initrd-cleanup.service loaded inactive dead Cleaning Up and Shutting Down Daemo>
initrd-parse-etc.service loaded inactive dead Mountpoints Configured in the Real >
initrd-switch-root.service loaded inactive dead Switch Root
initrd-udevadm-cleanup-db.service loaded inactive dead Cleanup udev Database
insights-client-boot.service loaded inactive dead Run Insights Client at boot
insights-client-results.service loaded inactive dead Check for insights from Red Hat Clo>
insights-client.service loaded inactive dead Insights Client
insights-unregister.service loaded inactive dead Automatically Unregister from Red H>
insights-unregistered.service loaded inactive dead Automatically check if manually Unr>
irqbalance.service loaded active running irqbalance daemon
iscsi-init.service loaded inactive dead One time configuration for iscsi.se>
iscsi-onboot.service loaded inactive dead Special handling of early boot iSCS>
iscsi-shutdown.service loaded inactive dead Logout off all iSCSI sessions on sh>
iscsi-starter.service loaded inactive dead iscsi-starter.service
iscsi.service loaded inactive dead Login and scanning of iSCSI devices
iscsid.service loaded inactive dead Open-iSCSI
iscsiuio.service loaded inactive dead iSCSI UserSpace I/O driver
kmod-static-nodes.service loaded active exited Create List of Static Device Nodes
ldconfig.service loaded active exited Rebuild Dynamic Linker Cache
logrotate.service loaded inactive dead Rotate log files
● lvm2-activation-early.service not-found inactive dead lvm2-activation-early.service
lvm2-lvmpolld.service loaded inactive dead LVM2 poll daemon
lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapsho>
mdmonitor.service loaded inactive dead Software RAID monitoring and manage>
modprobe@configfs.service loaded inactive dead Load Kernel Module configfs
modprobe@dm_mod.service loaded inactive dead Load Kernel Module dm_mod
modprobe@dm_multipath.service loaded inactive dead Load Kernel Module dm_multipath
modprobe@drm.service loaded inactive dead Load Kernel Module drm
modprobe@efi_pstore.service loaded inactive dead Load Kernel Module efi_pstore
modprobe@fuse.service loaded inactive dead Load Kernel Module fuse
modprobe@loop.service loaded inactive dead Load Kernel Module loop
modprobe@sd_mod.service loaded inactive dead Load Kernel Module sd_mod
multipathd.service loaded inactive dead Device-Mapper Multipath Device Cont>
NetworkManager-wait-online.service loaded active exited Network Manager Wait Online
NetworkManager.service loaded active running Network Manager
nm-cloud-setup.service loaded inactive dead Automatically configure NetworkMana>
● ntpd.service not-found inactive dead ntpd.service
● ntpdate.service not-found inactive dead ntpdate.service
● plymouth-quit-wait.service not-found inactive dead plymouth-quit-wait.service
● plymouth-start.service not-found inactive dead plymouth-start.service
● pm2-ec2-user.service loaded activating start start PM2 process manager
polkit.service loaded active running Authorization Manager
postgresql-16.service loaded active running PostgreSQL 16 database server
● power-profiles-daemon.service not-found inactive dead power-profiles-daemon.service
raid-check.service loaded inactive dead RAID setup health check
● rbdmap.service not-found inactive dead rbdmap.service
rc-local.service loaded inactive dead /etc/rc.d/rc.local Compatibility
rescue.service loaded inactive dead Rescue Shell
rhsm.service loaded active running RHSM dbus service
rhsmcertd.service loaded active running Enable periodic update of entitleme>
rsyslog.service loaded active running System Logging Service
selinux-autorelabel-mark.service loaded inactive dead Mark the need to relabel after rebo>
serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0
● sntp.service not-found inactive dead sntp.service
ssh-host-keys-migration.service loaded inactive dead Update OpenSSH host key permissions
● sshd-keygen.service not-found inactive dead sshd-keygen.service
sshd-keygen@ecdsa.service loaded inactive dead OpenSSH ecdsa Server Key Generation
sshd-keygen@ed25519.service loaded inactive dead OpenSSH ed25519 Server Key Generati>
sshd-keygen@rsa.service loaded inactive dead OpenSSH rsa Server Key Generation
sshd.service loaded active running OpenSSH server daemon
sssd-kcm.service loaded inactive dead SSSD Kerberos Cache Manager
sssd.service loaded inactive dead System Security Services Daemon
● syslog.service not-found inactive dead syslog.service
systemd-ask-password-console.service loaded inactive dead Dispatch Password Requests to Conso>
systemd-ask-password-wall.service loaded inactive dead Forward Password Requests to Wall
systemd-battery-check.service loaded inactive dead Check battery level during early bo>
systemd-binfmt.service loaded inactive dead Set Up Additional Binary Formats
systemd-boot-random-seed.service loaded inactive dead Update Boot Loader Random Seed
systemd-confext.service loaded inactive dead Merge System Configuration Images i>
systemd-firstboot.service loaded inactive dead First Boot Wizard
systemd-fsck-root.service loaded inactive dead File System Check on Root Device
systemd-fsck@dev-disk-by\x2duuid-97C8\x2dED3D.service loaded active exited File System Check on /dev/disk/by-u>
systemd-halt.service loaded inactive dead System Halt
systemd-hibernate-clear.service loaded inactive dead Clear Stale Hibernate Storage Info
systemd-hibernate-resume.service loaded inactive dead Resume from hibernation
systemd-hostnamed.service loaded inactive dead Hostname Service
systemd-hwdb-update.service loaded active exited Rebuild Hardware Database
systemd-initctl.service loaded inactive dead initctl Compatibility Daemon
systemd-journal-catalog-update.service loaded active exited Rebuild Journal Catalog
systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage
systemd-journald.service loaded active running Journal Service
systemd-kexec.service loaded inactive dead Reboot via kexec
systemd-logind.service loaded active running User Login Management
systemd-machine-id-commit.service loaded inactive dead Save Transient machine-id to Disk
systemd-modules-load.service loaded active exited Load Kernel Modules
systemd-network-generator.service loaded active exited Generate network units from Kernel >
● systemd-networkd-wait-online.service not-found inactive dead systemd-networkd-wait-online.service
● systemd-oomd.service not-found inactive dead systemd-oomd.service
systemd-pcrmachine.service loaded inactive dead TPM PCR Machine ID Measurement
systemd-pcrphase-initrd.service loaded inactive dead TPM PCR Barrier (initrd)
systemd-pcrphase-sysinit.service loaded inactive dead TPM PCR Barrier (Initialization)
systemd-pcrphase.service loaded inactive dead TPM PCR Barrier (User)
systemd-poweroff.service loaded inactive dead System Power Off
systemd-pstore.service loaded inactive dead Platform Persistent Storage Archival
systemd-quotacheck-root.service loaded inactive dead Root File System Quota Check
● systemd-quotacheck.service not-found inactive dead systemd-quotacheck.service
systemd-random-seed.service loaded active exited Load/Save OS Random Seed
systemd-reboot.service loaded inactive dead System Reboot
systemd-remount-fs.service loaded active exited Remount Root and Kernel File Systems
systemd-repart.service loaded inactive dead Repartition Root Disk
systemd-rfkill.service loaded inactive dead Load/Save RF Kill Switch Status
systemd-soft-reboot.service loaded inactive dead Reboot System Userspace
systemd-sysctl.service loaded active exited Apply Kernel Variables
systemd-sysext.service loaded inactive dead Merge System Extension Images into >
systemd-sysusers.service loaded active exited Create System Users
systemd-timedated.service loaded active running Time & Date Service
● systemd-timesyncd.service not-found inactive dead systemd-timesyncd.service
systemd-tmpfiles-clean.service loaded inactive dead Cleanup of Temporary Directories
systemd-tmpfiles-setup-dev-early.service loaded active exited Create Static Device Nodes in /dev >
systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device Nodes in /dev
systemd-tmpfiles-setup.service loaded active exited Create System Files and Directories
systemd-tpm2-setup-early.service loaded inactive dead Early TPM SRK Setup
systemd-tpm2-setup.service loaded inactive dead TPM SRK Setup
systemd-udev-load-credentials.service loaded active exited Load udev Rules from Credentials
systemd-udev-settle.service loaded inactive dead Wait for udev To Complete Device In>
systemd-udev-trigger.service loaded active exited Coldplug All udev Devices
systemd-udevd.service loaded active running Rule-based Manager for Device Event>
systemd-update-done.service loaded active exited Update is Completed
systemd-update-utmp-runlevel.service loaded inactive dead Record Runlevel Change in UTMP
systemd-update-utmp.service loaded active exited Record System Boot/Shutdown in UTMP
systemd-user-sessions.service loaded active exited Permit User Sessions
systemd-userdbd.service loaded active running User Database Manager
systemd-vconsole-setup.service loaded active exited Virtual Console Setup
● tlp.service not-found inactive dead tlp.service
tuned.service loaded active running Dynamic System Tuning Daemon
udisks2.service loaded active running Disk Manager
user-runtime-dir@1000.service loaded active exited User Runtime Directory /run/user/10>
user@1000.service loaded active running User Manager for UID 1000
yggdrasil-stop.service loaded inactive dead Automatically stop yggdrasil when r>
yggdrasil.service loaded active running yggdrasil system service
● ypbind.service not-found inactive dead ypbind.service
Legend: LOAD → Reflects whether the unit definition was properly loaded.
ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
SUB → The low-level unit activation state, values depend on unit type.
JOB → Pending job for the unit.
176 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.
[ec2-user@Khelaf-Hanifi-MyRHEL10-VM-AWS ~]$
vue globale et propre de tes ressources (RAM, disque et processeur)? RHEL10
free -h : Affiche l'état de la mémoire vive (RAM) et du Swap de manière lisible.
df -h : Permet de vérifier l'espace disque disponible et utilisé sur toutes les partitions.
uptime (ou top / htop) : Donne la charge globale du processeur et l'activité du système.
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
Cette commande enregistre PM2 comme un service système au démarrage de Red Hat (RHEL 10). ?
Cette commande enregistre PM2 comme un service système au démarrage de Red Hat (RHEL 10). Elle garantit que si ton serveur AWS redémarre (maintenance, mise à jour, coupure), Linux relancera automatiquement PM2 et toutes tes applications Node.js en arrière-plan.
Voici la décomposition exacte de la commande :
sudo : Exécute la commande avec les privilèges d'administrateur (root), obligatoire pour créer un service système sous Linux.
env PATH=$PATH:/usr/bin : Transmet la variable d'environnement PATH à sudo pour que le système sache où trouver l'exécutable Node.js et les outils système.
/usr/local/lib/.../pm2 : Le chemin d'accès absolu vers le binaire PM2 installé globalement sur ta machine.
startup systemd : Demande à PM2 de générer le fichier de configuration pour systemd (le gestionnaire de services standard sous Red Hat, CentOS et Fedora).
-u ec2-user : Précise que le service doit tourner sous l'utilisateur ec2-user (et non en root), ce qui est indispensable pour des raisons de sécurité.
--hp /home/ec2-user : Indique le répertoire personnel (Home Path) de l'utilisateur, là où PM2 stocke la sauvegarde de tes projets (.pm2/dump.pm2).
Une fois cette ligne collée et exécutée dans ton terminal, le système Linux prend le relais : tu n'auras plus jamais besoin de relancer PM2 à la main après un reboot du serveur.
whatsapp images?
Si l'image s'affiche parfaitement sur Facebook mais pas sur WhatsApp, c'est dû à deux règles très strictes propres au crawler de WhatsApp :
1. WhatsApp exige un domaine en HTTPS
WhatsApp bloque ou ignore l'extraction des images enrichies pour les liens qui utilisent une adresse IP directe sans certificat SSL ([http://35.180.90.207:3000](http://35.180.90.207:3000)).
Facebook accepte les liens bruts http://, mais WhatsApp exige du https:// sur l'URL partagée pour générer la carte de prévisualisation complète.
2. Le cache WhatsApp et l'URL source
WhatsApp met en cache très agressivement les aperçus de liens. Comme le lien partagé est en http://, WhatsApp génère un aperçu textuel minimal.
Comment régler ça pour que l'image s'affiche sur WhatsApp ?
Pour avoir un rendu WhatsApp 100 % parfait, il faut associer ton IP AWS à un nom de domaine avec un certificat SSL gratuit (Let's Encrypt) ou utiliser un tunnel sécurisé.
Solution rapide sans domaine (en dev) :
Si tu veux tester WhatsApp immédiatement depuis ton serveur RHEL, tu peux utiliser ngrok ou localtunnel qui te fournissent une URL HTTPS temporaire :
Bash
npx localtunnel --port 3000
(Remplace ensuite l'URL générée [https://xxxx.loca.lt](https://xxxx.loca.lt) dans ton og:url et partage ce lien HTTPS sur WhatsApp : l'image s'affichera immédiatement).
Solution de Production (recommandée) :
Pointer un nom de domaine (ou sous-domaine) vers ton IP AWS (35.180.90.207).
Mettre un reverse proxy Nginx avec un certificat SSL gratuit Certbot (Let's Encrypt).
Une fois en [https://ton-domaine.com](https://ton-domaine.com), WhatsApp affichera automatiquement le titre, la description et l'image GitHub à chaque partage.
The upstream Cockpit project (cockpit-project)?
The upstream Cockpit project (cockpit-project) is the primary open-source codebase where Cockpit—the web-based graphical interface for Linux server management—is actively developed.
Main Hub: Maintained at cockpit-project.org and on GitHub (cockpit-project/cockpit).
Downstream Flow: Features, patches, and releases developed upstream are subsequently packaged and redistributed by Linux distributions like Fedora, RHEL, Debian, Ubuntu, and Arch.
Core Architecture: Agentless and zero-overhead. It interacts directly with standard Linux system daemons via systemd and DBus without running a heavy ongoing daemon in the background.
Primary Capabilities: Real-time metrics monitoring, storage configuration (LVM, RAID, LUKS), network interface management, user access controls, Podman container management, and an integrated web terminal.
Node.js, npm, PostgreSQL, Nginx, Docker, etc. ;
perfetct for all time and over time
variable d'environnement?
labhak1@labvmrhel10:~$ echo $HOME
/home/labhak1
labhak1@labvmrhel10:~$ echo $PATH
/home/labhak1/.local/bin:/home/labhak1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
labhak1@labvmrhel10:~$ echo $USER
labhak1
labhak1@labvmrhel10:~$ echo $SHELL
/bin/bash
labhak1@labvmrhel10:~$ echo $LANG
en_US.UTF-8
labhak1@labvmrhel10:~$ printenv
SHELL=/bin/bash
GUESTFISH_OUTPUT=\e[0m
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXQlMjgk/agent.11660
SSH_AGENT_PID=11670
GPG_TTY=/dev/pts/1
PWD=/home/labhak1
XDG_SESSION_TYPE=web
GUESTFISH_RESTORE=\e[0m
HOME=/home/labhak1
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.7z=01;31:*.ace=01;31:*.alz=01;31:*.apk=01;31:*.arc=01;31:*.arj=01;31:*.bz=01;31:*.bz2=01;31:*.cab=01;31:*.cpio=01;31:*.crate=01;31:*.deb=01;31:*.drpm=01;31:*.dwm=01;31:*.dz=01;31:*.ear=01;31:*.egg=01;31:*.esd=01;31:*.gz=01;31:*.jar=01;31:*.lha=01;31:*.lrz=01;31:*.lz=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.lzo=01;31:*.pyz=01;31:*.rar=01;31:*.rpm=01;31:*.rz=01;31:*.sar=01;31:*.swm=01;31:*.t7z=01;31:*.tar=01;31:*.taz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tgz=01;31:*.tlz=01;31:*.txz=01;31:*.tz=01;31:*.tzo=01;31:*.tzst=01;31:*.udeb=01;31:*.war=01;31:*.whl=01;31:*.wim=01;31:*.xz=01;31:*.z=01;31:*.zip=01;31:*.zoo=01;31:*.zst=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:
GUESTFISH_PS1=\[\e[1;32m\]><fs>\[\e[0;31m\]
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=labhak1
SHLVL=1
GUESTFISH_INIT=\e[1;34m
XDG_SESSION_ID=7
LC_CTYPE=C.UTF-8
XDG_RUNTIME_DIR=/run/user/1000
DEBUGINFOD_IMA_CERT_PATH=/etc/keys/ima:
XDG_DATA_DIRS=/home/labhak1/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
PATH=/home/labhak1/.local/bin:/home/labhak1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
_=/usr/bin/printenv
labhak1@labvmrhel10:~$
tailscaleon RHEL 10
labhak1@labvmrhel10:~$ sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/10/tailscale.repo
[sudo] password for labhak1:
Updating Subscription Management repositories.
Adding repo from: https://pkgs.tailscale.com/stable/rhel/10/tailscale.repo
labhak1@labvmrhel10:~$ sudo dnf install -y tailscale
Updating Subscription Management repositories.
Tailscale stable 1.5 kB/s | 905 B 00:00
Tailscale stable 10 kB/s | 3.1 kB 00:00
Importing GPG key 0x957F5868:
Userid : "Tailscale Inc. (Package repository signing key) <info@tailscale.com>"
Fingerprint: 2596 A99E AAB3 3821 893C 0A79 458C A832 957F 5868
From : https://pkgs.tailscale.com/stable/rhel/10/repo.gpg
Tailscale stable 14 kB/s | 14 kB 00:00
Dependencies resolved.
=========================================================================================================
Package Architecture Version Repository Size
=========================================================================================================
Installing:
tailscale x86_64 1.102.3-1 tailscale-stable 38 M
Transaction Summary
=========================================================================================================
Install 1 Package
Total download size: 38 M
Installed size: 73 M
Downloading Packages:
tailscale_1.102.3_x86_64.rpm 4.5 MB/s | 38 MB 00:08
---------------------------------------------------------------------------------------------------------
Total 4.5 MB/s | 38 MB 00:08
Tailscale stable 11 kB/s | 3.1 kB 00:00
Importing GPG key 0x957F5868:
Userid : "Tailscale Inc. (Package repository signing key) <info@tailscale.com>"
Fingerprint: 2596 A99E AAB3 3821 893C 0A79 458C A832 957F 5868
From : https://pkgs.tailscale.com/stable/rhel/10/repo.gpg
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : tailscale-1.102.3-1.x86_64 1/1
Running scriptlet: tailscale-1.102.3-1.x86_64 1/1
Installed products updated.
Installed:
tailscale-1.102.3-1.x86_64
Complete!
labhak1@labvmrhel10:~$ sudo systemctl enable --now tailscaled
Created symlink '/etc/systemd/system/multi-user.target.wants/tailscaled.service' → '/usr/lib/systemd/system/tailscaled.service'.
labhak1@labvmrhel10:~$ sudo tailscale up
To authenticate, visit:
https://login.tailscale.com/a/b1d9ec014a2a
Success.
labhak1@labvmrhel10:~$ tailscale ip -4
100.90.251.27
labhak1@labvmrhel10:~$
VMware-Workstation-Pro-17-Licence-Keys
4U612-DN31H-MJEJ0-0V0Z4-978HD
5G44H-ACH50-0J4C9-1VC5P-CY0QD
JC000-8G047-MJDF1-0H3E6-8QR5F
JV2NU-0XL5N-0J4Q8-0T0E6-8GH56
JZ6E0-4R1E0-HJ1Q0-1R8NH-3AK28
0Z48K-4X29Q-MJE80-113GK-C7K3A
HF4H0-46K80-MJ8D9-1KAZP-CKK12
NY69H-2N05P-HJ170-1V1ZM-CG222
4C45A-D8J0H-HJ5T0-1T25H-92A76
0Z4H2-0WK9K-4JE10-0T9G6-9C8M4
5F0TK-A5J05-MJDU9-103ZP-2GUL0
HY0W0-8NK11-HJ4D8-02AE2-1GH54
JV4RK-4Y29N-MJ5F8-12CXP-8L836
5F4RU-D5351-4J8V1-0U2X2-06078
1Y2R0-AHJ9P-4J8L0-1997P-C3056
HZ0TA-DX280-0J0D0-00AZ2-8FA56
0Z4WU-AZ04L-0J919-1C9EK-9QALD
4U4JR-6ML9Q-4JDT0-0CAZ2-8CHQ8
HY492-4Q217-0JD48-021E0-8PH46
5U4HH-2Q053-MJE20-108ZP-CZ8Q6
MZ6MR-AVL13-0J5N0-1T87K-2YKPD
JV6W2-6VJDH-MJ0Y9-11AQH-2PH16
0Y0W8-AJ147-0J0T8-0TAN2-9GKH6
4U2NR-FLL5Q-HJ4H9-0J8N4-AY0ND
HV4WK-DR015-MJ559-1C15P-9C8N6
4A692-07KE0-4JE11-0R9E2-AY0P2
NC0D2-4E19P-HJ4P8-100EH-2GA5F
0V6T8-DZJD4-0JDR9-12CEP-3ZH42
HA0NU-2224H-0J541-1K8QM-2L80A
MY2XH-2P153-HJ8X0-0U2X4-3VU68
0U0N8-6LJE1-0J4T9-0C3N4-1PHPF
5U0XK-AJJ16-0J4U0-002N0-AFUKA
MU45A-2L386-4JDM9-1J17H-9YA32
1V60K-4W25P-MJ0A1-132ZH-83RH6
MY6EH-8KLE3-4J5N0-0T950-3VR40
4Z09R-6YK12-HJ500-0J1G0-CK022
0Y2MA-AJJ54-4J0J8-0V972-CF0Q0
0Y042-8QL86-4J9R8-0HAX4-CQKH0
1Z4JU-FU191-4J9K8-119NP-9VH10
NG45U-FD207-4J071-1T9XP-9AKLA
4G040-D93D0-4J4J8-1A8QP-9GAHA
JU24U-AJ156-MJEZ0-1T3NP-8F078
0F2WU-A039J-4J9R1-1JCNH-2CKQF
0U45A-6QK16-HJE88-03AE2-0YA42
4A6D0-63L92-HJ0J0-0C8Q0-0ZA4D
MA0H0-D5K0H-0JD41-118EH-172PF
0V2EU-4W0D5-4J019-190ZP-2CK40
1V48U-DWHDN-HJ0C1-1U2GM-C3U64
0G2HU-ACJDK-HJ9J8-0A1N0-2YH5D
HY45K-8KK96-MJ8E0-0UCQ4-0UH72
4Z6TK-8U24J-MJ511-0V8N6-CLUJ8
5G24A-FGJ46-0J4U9-11AEK-3ZU42
1G6X2-0A1E6-4JEV9-0RCQ0-8UAK2
0V052-0RLE7-MJ5R0-0HCQ6-03HP2
1V450-6YHE2-0J4A8-002Z6-9LA5F
4F0NA-23JD3-0JDH8-008Q4-3Q2PF
NF4DU-8739N-MJ0P9-009X2-AY8M6
5V68A-ATJ8K-HJ5L0-0T850-CFAPD
JC4T2-AD053-4J978-0U8X6-92830
HG282-0E0DP-4J0E0-0AAE2-AF0L2
MF40R-F6HE7-0J1D8-0KAX0-AKRPA
NV0JK-4UHEN-4J569-1017H-AUU74
0U612-6N0E0-MJ801-000E2-A6H52
JU6R8-DPL0Q-MJ0Z1-1C3GK-AU264
MA29R-6129N-0JED1-0HA50-1606F
5A29U-06100-0JDK0-0L9Z4-3UA54
0U4R2-8JH80-0J411-0T874-2G06D
JZ08A-0R317-MJEZ0-1AC5H-1AHP8
MY6EA-AM0E6-MJ4D1-0K2G2-C28N8
JV29R-AR11J-MJ9Y1-0HAQ6-82RN4
HC2D2-6E3E6-0JDW1-113GM-17060
HZ01U-AW107-0J1N1-1A8GK-9220F
JC0D8-F93E4-HJ9Q9-088N6-96A7F
NY2WA-AQ10H-MJ0Z1-0RAX6-1YAL6
4V25U-DV384-MJEH8-0L870-3PU76
4A058-20J1J-0JET1-1A25H-8A0L6
5U09A-FLJ12-4J9U8-0K2Q6-AZ8MD
NF2XU-A5297-HJ1F0-1JAXM-86RL4
5V4WR-6X1E1-0JEU8-0H3G6-27R20
JY048-DM15L-0J9Y0-0L3E2-3200D
NZ0H8-4XJ07-MJ1P0-1H9EP-0FH38
HU0TR-AMHEM-HJ0E0-0U2E2-ACK34
5C6X8-DG15K-4J8V1-0V2G4-8ZA0F
HU4NU-FPH14-4J050-0U8G6-3U06A
MF4X0-45H14-HJEE8-0U2G6-1GR20
JG44R-8E105-4J5Q1-1V9EP-AFKH6
5C4T2-49H92-HJ539-0V952-17R3F
1G2NK-4D2D6-MJ0C9-0R2G0-32A7A
0F45U-8420N-0J111-181EH-22K2A
NU29K-2M24J-MJE60-139ZH-AC244
MF2J0-F73DM-0J9W8-03AZ0-1YU6A
MF452-63K17-4J0E0-18ANP-8P808
4Z6TR-0UL4P-4J5H8-1K87P-1LRK2
HV4XH-0UJ4P-HJ1X1-0C3N0-2KKK4
5F05A-02KD3-4J039-1A8NP-0KA7A
1V280-8WK4M-0J828-100XH-ACHN4
4Y4W8-8H34K-4J9R8-03CN6-A2200
5G28H-FEL10-HJDV9-0VAG6-37UL8
HC092-8AJE7-HJ5M1-119QK-3V0N2
4C690-09H4K-HJE08-1215M-3G8H4
MY0RR-AJ244-0JE41-0J850-1FR36
MC40U-8AJ4M-4JEX0-0CA76-1KR4F
HA4TR-D6251-HJ440-139XM-2L872
1G28H-6D3DJ-4J5U8-003E4-CAKMF
4G4MK-68L0J-0J5J1-1T9QP-A2UN6
NG0RK-2DK9L-HJDF8-1LAXP-1ARQ0
1Z2TH-0T344-MJ0L9-1V0QP-360J2
NC2R0-0E00M-HJ870-0R9E6-0F0Q6
MZ4M0-4W041-4J9D8-1HCEM-ACA7F
HV21K-6Z007-HJDE0-192ZP-1PAQ2
HC682-D8K11-HJ9D9-1L2QK-92HH4
HF21U-4300H-0J958-08154-8Q076
MF2MK-D5007-0J5D9-1KCEP-C7KMA
5U0JR-FLJ5Q-4J9L1-1U87P-2P0M0
5C64K-4A214-HJD21-01056-1LKLD
NF25A-4734M-HJ1Y9-01CE6-CP02D
NU2JA-AMH50-0J1F1-0J2Z6-2CHM6
5U45H-FQ28H-HJ0C0-19AEM-9Q2L4
0Z4XH-AUL1M-4J4R0-013Q4-AKRJ0
JA2W2-2720J-4JE78-0C9Z6-CYUN8
JZ49H-0X21N-MJ868-1H9GK-1GA2A
0U2J0-2E19P-HJEX1-132Q2-8AKK6
HA040-0325K-MJ9E8-182NH-3P8JA
NA2E2-87H0K-0JDG0-183EM-8P238
NG0H2-88314-MJEP0-1K87P-1AU00
NU4M8-2KJEM-0J9P1-120NK-2LR02
MU4MU-2P11J-0J1M8-1K0EK-0UUP8
JZ482-DU35M-4JDP9-1H8NP-8V8ND
5V4NK-AT340-0J0K1-1287H-07HN6
1V2NA-0YK50-HJ528-130EP-0U2J0
MA6TH-25016-0J451-0U1X4-0GR74
0A29H-61L06-HJEJ9-0A172-3G2K4
4Y0JH-DNJE5-HJ9T1-19CGP-36KPA
0F28K-80L40-MJ8H1-1195P-3AKKD
JU69K-FJ11Q-4J8Z9-1R25K-3FK5A
MC402-4EJDM-4J9X1-083G4-1G2M8
MC2J8-AD116-4J4X1-19CXK-23UMD
HV650-8XJ40-MJDX0-082G0-0G2L2
1V6MU-8U106-4J0K9-0K8N0-AKA6D
4U04A-2J3EH-HJ8T1-1UA7H-CGHN2
4V0TH-6Y0E0-0J098-092E4-AUR64
4V2W8-0ZKEL-0JD11-0C9G6-3PHJF
4G6EU-4FJ1P-MJEJ9-1T8EM-0V246
0G0X0-0CKDJ-0J181-1JA7H-8PU68
HY088-4KHDQ-0J0E0-0A374-CK0L8
4Z49K-2W08K-MJ818-190EP-9A036
HA0M2-D0J5L-MJ0M1-1J9QP-330LD
HC2X2-8FL0H-0J9M0-1J0EK-8K270
5C2RU-6F34Q-4J8V0-193ZP-3L8P4
NY6WA-2K190-HJ4Y0-132NH-CURKF
4F2DU-81115-HJDR8-01356-2FU68
4C010-0DL4H-HJ8H9-029X0-A2RH4
HZ4JU-FZKDH-0J840-000G2-9QAJ2
JY448-2QJ5P-4J0P0-028G2-0Y2JD
NF40U-F0J03-HJ4Q8-1A87P-A2272
JG4D2-0DK14-0JDF9-133GP-32UH0
HU25K-DL392-4J0X8-1V35P-0P2P6
HY6XH-ANH97-0J0E9-0R2G4-C7A3F
JV29A-AX016-0JEF9-0HAE4-AGK24
MZ008-8WH9H-4J549-129XH-3300A
1Z0XU-DXH5H-HJ0A0-12AZH-2GH7F
JF4X0-07H0K-HJ069-0K8E0-AZAJF
NA492-6009H-0J469-021N2-9A2N4
NU2XR-2N11P-MJ0Y9-022E0-CFHND
NC2WH-2DK5K-HJ878-1T9GP-23818
HV080-8UK0N-HJ0D8-0JCQ0-3K014
HU65U-0NH87-MJ040-039X2-2GR14
HY6WU-APH9H-0JED9-0JCG6-AKK34
0A4M2-D129J-HJE00-0H070-A7RN2
HU0XU-8MHEN-HJ9D9-01AZ0-828P8
NG0TR-6D1DJ-HJ0Y0-1H2GM-3CH20
JV4D8-DYH0K-0J960-118GH-0VH32
JF48U-45H1H-4J168-009X6-87R56
NC6MK-8G214-4J879-198ZP-CZRN2
0F2JR-A025L-0JE80-1LC5M-8C2HA
5U2MH-DMKEH-0JD28-109GH-02RJF
HZ2WA-FRJ0Q-MJ4W1-11ANK-1CU0D
1C6E0-FG3DL-4JEV8-1V2ZH-1YUH8
JC200-6AL50-MJ4Y1-1J37K-1L2JA
5G28K-AC19N-MJDL8-1T0QK-3YU22
1Y492-0L240-4J9A0-02CQ6-CQ220
JC2N2-4AK5J-4J1G8-0RC52-0KKNF
HV6J2-2UJ4K-4J5M8-038Q4-9LRHD
0Y61K-FKH5Q-4JD19-0C8N4-3L2PD
JV6WH-DWH92-HJ1F8-012G4-02RM0
0F682-83157-MJ4T0-0CAN0-8ZU74
NU0JK-6LJE2-MJ1Z8-1UCNM-0PHMA
HC4TH-68K44-HJ0E0-0U2N4-AA858
HA40R-24J42-0J1X0-1A3XH-CARJD
1G4TH-6A01P-MJ931-1T8QM-8V8JD
MC01H-0F34L-HJEX1-0R3Z0-0UHQ4
1Y61H-4KK8K-MJD28-030N4-AU2K0
HZ04H-6T204-MJ9D9-1LC5K-CF0L8
0Y61H-FJ39K-HJ9R8-132NH-86AL4
HG650-DGHEH-HJED1-01CE6-3QKL4
MF2WK-81K85-0J9D9-0H256-1FKP2
0C4RH-F8HEN-4J511-1815M-13U30
JC0W0-49016-4J1F9-0H2N0-A6K4D
HU0T0-ANH1Q-4J9D1-12CXM-AF2L4
MC210-8EH8L-4JDE0-1CAZH-C6000
0Z4H8-6YK94-0JE10-099X6-0U82D
0V24K-6Z043-0JD18-0U9E4-8PR60
5Z2EU-6Y29K-HJE29-1H1ZK-9VKMD
NC202-4FH1K-HJ561-108EM-0VHH4
HZ44A-8VJ5M-0JEW8-11AQP-2Z26F
MY2HU-0HK1Q-HJ959-0V874-93UQ6
NA0HK-66J83-0J4Z0-09CG2-0K85F
1U29A-8J19K-0J9U9-1J37P-0GKN6
MV6H8-8WK5K-MJ1D1-1LCZK-2AULF
4A6EK-01L97-4J1H9-0J0N4-16KL4
0Z282-6YH1P-MJE89-013Z2-3KRQA
5Y08U-8P154-4J9K1-0H0G2-8KU46
JF092-46K94-MJ9F1-1H3EH-3VH78
0U2R2-4JH5N-0J590-1T2QP-27H36
5C0XA-D925H-HJ5C1-0UA74-178P8
5G6T0-28H56-MJD31-08150-8AUKD
NU440-4M19H-0JEY0-1L2EK-03U40
5G6MH-0A047-HJ431-1R17P-8VKM6
1U0NU-DLH1J-0J5C1-18CNP-2QA2F
1Z05R-0V050-HJ5A0-11ANP-0YRM4
0U0H8-6P21H-4J581-02CE4-1V82A
MV0MK-AYHDL-0J550-0T9G4-ALK32
JV0NR-4ZK0Q-MJ461-011E6-8Q012
JA6NU-44LE6-HJ1Z9-0C3Z2-3A0PA
0U410-6M00H-HJ591-0U3Z6-9CK4A
1U2R8-DLJDL-4JEK0-0K150-AZ2N6
MF6XU-05146-HJDX9-0VCX0-1G0PF
4Z6RA-6ZH52-MJ919-1V9EP-APUM6
5V210-6W000-MJ4A9-1JAZM-3CHH2
HZ0X2-4RL04-HJ9W9-1HA5H-1CU6F
JU2JK-8J341-MJ0P8-1J85P-86A56
0F242-F1J8N-HJ4R1-10A7H-CFK16
5C24H-AFH87-HJ820-038Z4-3L8MF
NZ6EA-4X08L-0J171-0R1E0-86RPF
MV41K-DYJ91-0J9M1-0J1X4-9K8J0
4F6WA-21H9J-MJ990-08AN2-370LF
NC0DH-F8L5M-HJ5P9-119NK-1C0M4
JZ08A-FUKEQ-MJ0G1-1R3NK-CL8H6
1Z6JK-FWJ8Q-MJ5K1-1L9GP-820K4
4A00H-40K8K-HJ008-0K854-9AR74
HA4H2-D711M-HJ5N1-1A0EM-0Y0J4
0U0WK-4L14J-HJ1R1-123QM-8Z262
HF2WK-63312-HJ8M8-03952-1QAM2
JC40U-6CH0Q-4J1F1-1LA7K-0YAMF
HF0W0-A3002-4J449-119NH-AZ0KA
1G4N2-4F101-0J0K0-0L0X4-0VU4F
NF05A-02J57-HJDY8-02A54-0V80F
0G4H8-0DH15-HJ190-1CAZM-0CAN4
JA4W8-A4K4K-0J4G0-0UCZ4-CAU2D
HG4W2-4C39L-MJ1M9-0L850-9ZRP2
HV6JH-DZH54-MJ0E9-0T2E0-2QHKF
NY0DK-6P180-4J4P9-1L1XK-0KK3A
NZ218-DV15P-HJ8Y8-1337P-8ZU5D
HY2T8-FLHE4-4JE51-089N4-8ZKJ4
NZ4R2-6TJ1J-HJ8P0-011Q0-36AKF
HF082-A621K-MJ949-0L1E6-CUAH0
JC2HK-0GH8M-4J870-1R8XH-1Y2J0
1A2RA-07L1M-HJ1V1-0T3Z6-9Q0MA
JC488-DAK8P-4J0G8-1C37M-8U8H2
JG65H-0D247-HJD79-1C0ZM-C3AN4
MC6MK-AE31N-0J0X1-0ACG2-0FK56
NY20K-4Q25H-HJ570-0R8Z2-1PUQ4
HV4H2-8YLDJ-MJ4M8-111EM-AKAMD
JZ4WH-0YL44-HJ1Q8-1A9EM-2VKJ4
JU0TA-2QHEM-MJ079-1C9ZM-1PK04
1A6WU-43H84-MJ9A9-00A54-9Q2J6
HV2N2-AW115-0J9W9-102ZK-3CUK8
NA0DU-40JEK-4J1Z0-082N4-AA270
HA6D2-D409M-HJ850-1U8ZP-0AKK0
0Z2MK-6R182-4JDH8-1H9NK-3AUJF
JU4E0-6P315-HJ1Q1-1V9GM-3UK28
0A0WK-F5113-4J8T0-1TAXK-C6KP2
HG002-4E0E7-MJ048-1K0GH-37ALD
5C40R-293EH-4J9U8-03AN6-178K8
5F2T8-F6J47-HJEV8-0R3E4-ALHQ8
MF4XA-A7L4H-MJ4N0-0C0E4-9ZUHF
5C29H-DG14N-MJDL8-0A0E6-APA14
HZ2W2-6VK1L-HJ5E9-0C376-8Q0J2
4G0T8-8AL17-0J9H9-0L9Q6-2LUPF
4G4NA-0EH5L-HJ181-1L2GM-2FR38
JZ2X0-FXH5M-HJ478-1U1ZP-A70P6
MV6W2-0W017-0J059-1R9ZH-83072
1Z6TR-FXH5L-0J5A0-11AZH-0FR1A
1Z698-8Z3DH-0J9U1-13CXK-3QK0D
5C29K-FE25Q-4J531-1A9GH-1FK66
MA05K-43012-4J9E0-19ANH-3PHJD
1A29K-D0300-0JDU8-1H27K-3AH12
5Y442-2Q210-4J1C9-0V2E2-0YHPA
5V0R8-6WJ90-0J1K8-129XP-8C050
4Y4JK-AQL53-MJET8-18CXP-3Z8J8
NC0JR-AC305-0JEZ9-1A25M-2ZHH8
1V20K-8YL50-MJ9L0-1C1ZP-3UHPA
1F2MK-62KDL-0JDC9-1A37M-3UKQ0
HC2EH-2824J-HJ958-0U976-A22JD
5V6ER-2Y140-4J1V1-0C2G4-3UAL8
4V40U-FXJ9H-HJDH8-101GH-062J6
MG2D8-6D1E1-HJ5X8-1UCGH-9AH7F
HV08H-0Y343-4JDN8-091Z0-AV04A
4G29A-8A3EL-0J1J1-099Q0-9VAL6
4F482-45KE4-MJ001-000X2-26K6A
0Z6TA-2V29K-MJD91-0U274-8YRN4
NG2WK-29383-MJ4Y8-102NP-96KN2
4G6HU-8A2E0-0J489-1HANH-9KU16
0F00U-06KEP-HJ580-1LCXH-9V2N6
HF2HK-432DN-4J941-121QP-CQR56
HV010-6TK52-MJ459-0A1Q4-96846
0V0WK-DR2E6-MJD80-1235M-CAUQF
0A64A-F6L4Q-MJET9-1RCGM-0URN6
0F4E2-462E4-4J888-1K2ZH-AV25F
0Z4J2-FYJ5K-MJ9T8-1TAEH-9KUJ4
5Z690-0RK0M-4J8C9-1UAQH-C2AJ0
MG2E8-4E382-MJ5M8-1L8EP-0GR76
JF2N8-6634H-0JEY8-013X2-1KU04
4F002-06L1H-HJEH9-019Z6-9L250
0F6T2-D33EH-4J9R1-0LA54-AZU70
0Z2R2-4ZK0M-0JE08-0J1X4-8Z832
NA61H-81L87-HJ1Z1-1CANH-3F8ND
JU248-6NL46-0JEY9-032E0-0FA2A
5C0JK-2809M-4J0C9-0AAN6-2A8N8
NF6R8-8614L-HJ0Z0-1CAEH-9LK60
JZ2H0-8V1E1-0JDQ0-0C172-8YK74
MV6W2-6YH53-0J9D1-1JAZP-9L8KF
5V6TH-2WH9Q-HJE30-0R9X0-12A00
JG09K-A9K4H-MJ479-1T9NH-1F022
JF41A-0719Q-HJ5Z0-08AG6-8Q00A
NY002-4JL1Q-MJ0Q1-0T054-8GK6D
1C4T0-0AH55-0J5A8-0K3N6-3KH08
HF6RU-F5J11-MJ9M9-038X4-2FK3F
1A258-A4K56-HJ8C8-093E0-0AAN2
NA0HU-4628N-4J470-0T1Z0-AKK62
MY012-APH46-MJ551-1A8GH-AKU4F
5Z4WH-4VKD6-4J928-1387H-CZ0Q2
MY4W8-2K15H-4JDX9-1V35H-2K854
MV6JH-FXH85-MJ958-1U0GP-27RK8
HU212-0KK8N-MJDD8-1HC5H-3KA2A
4U28R-0K15J-MJ4H0-01170-2KA20
0F01A-26J87-MJ5R8-11AEK-9LU30
HU0N8-FH0DM-0J848-0J876-03868
1A2DK-F0J07-HJ9K0-03952-83AJF
HZ2HR-FV28Q-4J4E8-1AA7M-2Y2M0
JG6N0-4E18N-HJ5Y1-132GH-9GHKD
JV0WH-AZ15J-4J9Z9-09AE4-CYK06
5A0D2-40K9N-MJ920-1J0QP-332J4
1V4T2-DR10L-0JDV9-1835H-33H30
NG6H2-FCH1M-MJ171-1V05H-3QRM2
MF6M8-A4294-0J8E9-193EM-03878
5U0N2-2QL5J-4J4L1-1R9XP-0YR66
NG4HK-AEJ81-0J1Z8-0V2X6-8F226
JV4H8-6V300-0JEZ1-0A272-9YHQA
JG0X0-DE351-HJ8Z1-1U2EP-36068
JG018-8A10H-4JEP0-0L052-0UA28
MY4EU-2M087-HJ548-101ZH-1CA52
HY69R-6N242-4J059-1V0ZK-2FKK8
1C0TR-2CL9P-0J4K9-0H070-3QRJ6
4C2RA-6ELDQ-HJ4R1-1LAXP-A6A22
JF4E0-04L11-0J0P0-1K8GH-2AAND
MF4DU-242D5-0J4E8-1CAXK-3AK70
MY01K-4NKEK-HJ840-1K0ZM-CFU6F
0F0DR-64356-HJET0-092X4-93HM0
1C0WA-89247-MJ9A9-1L2QP-C7RM0
5V0TR-0R08Q-4J5C8-08AQ0-C3HHD
4Y2H0-6QH41-4J500-038X4-0QR2F
4C6E8-0C151-MJ0J9-180NP-AQUL8
MU0EU-DNJ01-4J9X9-0U3Z6-3F072
JG682-4FL40-MJEZ0-0TAZ2-1UAJ0
JY48A-8QJ0H-HJ4Y1-1L3ZK-9Y056
JG4MR-D910K-HJ0Q0-0U0N6-C6K5D
JA08K-A32E0-MJ9G8-0VCN0-0Q8H2
JZ0HH-AV01J-0JDF0-0JA52-APK2F
JA2NA-22H0P-MJDF9-0J352-1VU14
5A252-F22DN-4J128-1H87M-AU278
0G2X2-FA095-HJ580-1J35K-1LR1D
HZ09K-2W195-HJ4X8-0T2X4-CA8M6
5G68U-DEK57-0JD21-0J1X4-170H4
5Z242-AX38K-4J9V9-182GH-86UQ8
HC4W8-FE204-4J858-0A0Z4-86HP6
JY69A-AMH5H-HJ9G8-1V3GK-13K08
JG0JA-2F007-0J571-098X4-0LH58
5G00U-0D34L-MJDL0-1U8GH-3A0HD
0G61H-F9LE1-MJ1H9-128QP-168J6
NV0NK-2T3DM-4J5P1-0L074-96830
1V0W8-AZKD6-MJ429-130ZH-8Q8MF
JG6H2-8AL4Q-MJEZ9-19ANH-AU802
HZ040-FY086-HJ440-0J0Z2-8U8P6
NC0R2-DG31K-HJ9P9-119GM-1Z222
MA60K-F2KD3-4J5E9-183QK-8VUK8
HY008-FHKE4-MJ449-1K1QP-A2226
HG25A-FGL5Q-4J5X1-1RAGH-1Y8QF
0U4NK-DL097-HJD18-1U15M-8Q8M2
JG680-DAK1H-HJE69-110QP-0U0J2
HF65K-631D0-0J1W1-11A5K-0QUH8
4G41K-8GKE7-MJ090-0V3Z6-2PH6A
JV6N8-2Y28Q-MJDF0-102ZH-2KR50
4C400-6G15N-MJET8-1TAEK-8YHN4
0F4DK-42014-0J509-0K954-AKU42
1C6EU-48006-HJ0A9-1KA5H-C2AQ4
5Y490-AQ245-MJ138-0R9G0-0PHPA
MF6DA-07J9J-HJ9X1-1R3EM-CQK20
0C2DA-6D0DM-0JE19-191ZP-1A8L2
MA69H-D429P-4J541-010Z0-3C84D
0C6XH-4DLE7-HJ8H1-1K0GP-2CHH8
NA0XH-D438L-0J0Z0-0AAZ6-9A24F
NY6XH-4HK5Q-4J0G8-09C72-93AMD
JZ612-DT2E7-MJ061-038Q0-3FR02
MY69K-8KJEL-4J9N8-1V87H-0K27D
1C400-AG003-MJ529-1J9ZH-8QAJ6
5U2RH-4LJ92-4JEV8-0C352-0ZAJ6
4F000-23215-4J800-1L8QH-0YHMF
1Z6DH-2XJ4P-MJEU9-13AEH-878L4
MA6E0-85305-4J1N0-1A0GM-9FA76
4Z0DU-6T154-0J1T0-09AQ2-2GKJ0
MV0RR-0TKDP-MJ541-038Q0-8F2L8
4Y4N0-6KJ51-4J4H8-0K0N0-CKA30
JZ6T2-4Z3E4-MJ8Q9-088E4-1ZK1A
5Z2N2-DZ052-0J5A9-0L2G6-3Z0P0
5C2JR-DA2EH-0J528-131QM-3V244
5Z2NR-4UH94-MJD28-00052-0KRQ4
NC4WR-FD304-HJ4Z0-1V3GH-23A08
5G0R8-D8H9K-HJDA0-002Q0-92200
MU0M2-0HK9H-HJD58-1A0QH-AC862
5C25H-DD1D2-0J8U8-132GH-2207A
5V048-4RL07-0J4U9-0H2Q4-A301D
HG6HA-FDK44-0J5D1-033E6-C2HLD
MY0XU-AM21N-0J9D8-02CZ0-92234
JY4E2-4KK5L-MJ578-1V9NK-8LH08
JC6JR-08H0H-0J8F1-0J3N4-9AUJ0
5G28R-F8106-0J8K0-139QM-9203D
JV4JA-DY3D6-4JDQ9-088G6-8VR24
HF0MK-8338P-4JEX0-18CNP-1PAM0
HZ2HU-AY1EL-4J0N9-081Z2-3U8J8
NA4H8-A42EH-4J0G8-1R2EM-AAAND
NZ6TK-FW34Q-HJ8Y0-1J2GH-12A22
4V2XA-2T0D4-MJ099-0C2N2-96R00
JZ6NR-FY30H-HJEY8-1J3XH-0KR10
5C6J8-6A150-4JDU8-0HC52-9L066
JV2EK-4WL81-4J4Q9-0V8X6-83H2D
MG6HU-AD09M-HJ5D9-0LAX2-9306D
JA2T2-D5297-MJ4G1-18CEP-26H20
1U41A-DK1EN-MJ0U1-1JC7P-8KUQ8
1G6HR-DC290-0J029-1307M-9PK76
1G25K-2G15Q-0JEV8-1ACEM-0P27D
NV4XH-6R01J-0J8F1-03252-03R72
JG01K-8GK94-MJ471-0C0G4-2PR7F
JA092-21J8N-0JDY0-0KA54-CGUPD
HZ65U-0R300-4J4N9-0V976-C3KJ6
5G2HR-2F346-HJDL1-188GH-8K2L4
HA4RR-62K4K-0J550-1V1QH-8L8KA
5Y45U-DN3E2-HJ5U9-1H2ZK-36R28
0Z4DU-6ZH5J-MJ988-1KAGP-2ZALA
5Y410-2Q1DH-MJ1L8-0U0G4-0YA2F
1C6D8-2F012-MJ930-099X6-8VKKD
4G2TA-4CH45-4JD09-111NP-9ZKJ0
JU4R0-DMJ91-HJ1P0-1L1EP-2C25A
NA4T0-A1J8H-4J9Q0-0V0Q6-87024
1G0X2-AGK02-HJDA0-1HCZH-2PRKF
5U2DA-4HL1P-HJ5V8-0TCN0-322L2
5G2NK-FEL8Q-0J8K8-0K8G6-9FKQ2
NY4X8-DLKE3-0JDG9-1VANM-3Q8ND
1F2MA-40196-HJ5U8-1J27P-3CR62
HU258-0M157-4J5M1-000G4-2A002
0V4W0-8Y2DQ-MJ009-128EH-8U2NA
MZ4N2-6Z15Q-HJEM8-0H8Z2-8PR56
NU4RA-2P3E7-4J5Z9-0R3G6-1L8LD
NA4RU-222DJ-HJ078-1C8QM-3V8K2
HG0XA-F9115-MJ1M9-1L97K-3FR22
4V6HK-DW39P-HJ1R8-03CG4-3307D
JV2J2-2X345-0J5Z9-082G6-17038
NZ0W0-6ULDJ-4J0Z9-082N4-0UAK6
MF652-A224N-4J9D0-11ANK-0KR78
NU05H-ANH91-MJ9G9-0R3G0-CGK50
5F6DH-4039P-HJDK1-1K1NM-CCK12
MU40K-6MJ9M-0J5W9-0J3G6-22H3A
4F008-D03D7-0J4R8-13CQK-33K56
1C69R-4AK4M-0J8A9-0J370-8KH06
4V2HK-2TJ56-4JDH0-018N6-1G840
4A4EH-25L8Q-4J5H8-0K8X4-86A74
4Y4NU-0P19N-MJ8J0-099Z4-0KU12
HY4X8-4HJ1Q-MJ5N8-0A1Q0-32206
NC2XK-6C1E2-0J1Y0-113QK-AY2NF
1C61A-2E0E6-HJ838-099X0-868J4
5V2E2-8UJ8H-0J4V8-1U37K-9KAK8
1G6T8-48HDP-HJ5C8-1A2NK-82R0D
MA29A-850D2-MJ951-089E2-87R36
MY08U-FNL1H-HJ0X8-1T2XK-360J8
5Y0E0-FH1DK-HJ4V9-18CQK-13K7A
MG6W0-09J4P-MJ9M8-1L97H-96AJD
MV2TR-2TJ54-4J9N9-1T0QK-A7KK6
1U680-FQ38L-MJDV9-1R2XH-3Y8K2
4U0HR-2KK86-HJ491-1VC7M-0K27F
0Y2E0-6Q142-HJ5T9-0TAG6-3P2M2
0V4EU-FUL8K-4J8R8-1J35M-AV84D
JG01H-AE30L-4J1P0-0J9E4-96HK8
1A64U-67K07-MJ521-0H8Z4-2Z8H8
NV008-0V313-0JDP9-03874-AZU32
0Z6JR-8X20H-4J509-101ZM-870Q6
HV4MH-0UH14-MJDE9-1A27P-8L85F
0C05A-2FH1P-4J819-1C1GK-9L234
1U64U-0HH55-4J8A8-0HA50-0C830
MF29K-80J92-MJ4W8-0J2N2-8ARNA
1C618-6E2DM-HJ1C9-09CZ4-C6802
JV6MU-DWH8K-0JD79-090E4-3CUJ8
JA2RA-82395-4J8Q9-0C1Q2-2LA5D
1Y05R-FPLD0-HJ8K0-0J0E0-3UH54
NY49K-DL38M-4JDY8-0KAN2-8Y236
JG088-29057-0JD60-1L87K-27H48
5Z4DR-AZJ8P-HJ4K9-1J0XM-2Y220
5F6XR-85252-4J038-0U9X6-378NA
5V242-DTL94-MJ5U0-0J252-3F038
0F0H8-05K4K-HJ001-029E4-CFH6D
NZ09H-0R203-HJD79-1V05K-3CANF
1U0XU-DL1D2-HJ4V8-0A2Q6-8PH54
5Y208-DMH86-MJ839-081E4-92U10
0Z2HU-4R10L-HJ0J1-1885M-3CA42
1Z6W8-2TJ8L-0J0U8-1J27K-9FK4F
MY6D2-AMHE1-4JDD0-0J3X2-13256
MZ2HA-6X054-4J959-1U9EP-9GKKA
0A0XA-A2L9N-HJ5R0-02AN6-9VHN8
0V2X8-2U0DK-0J991-0RCN2-AV028
1G0EU-A9HEN-HJ4C1-1UA7M-A7810
HZ20K-8VH9L-MJ8E9-1TA5H-0QH50
1G6D8-AF391-4J5U1-1J2ZP-3U06F
4F4T8-D1K8J-0J581-1KAQP-272MF
5A2DU-6330K-0J0U1-1K27M-8P824
1A48R-42J0H-0JEU1-1127P-9VUPF
MY6H8-4HL87-0J8N0-0A174-8A816
0G4MA-8EH44-4JE89-002X6-9G802
HG0DU-69K44-HJ149-01152-CFUK4
5A0H0-A20E7-0J431-0T176-3LAQ0
4G4DR-0D0EH-MJD01-010E2-2CH56
HY01K-DP1EQ-MJDW0-1K2ZK-8V014
0F41R-F53EN-0J4T1-1V2XK-A6U6A
4U6XH-4NH40-HJ990-18AEH-2GRKA
NG61K-2F38J-MJ8Z8-0CAG6-AU856
HU6X8-AML47-HJ0X9-0VCZ0-33KL4
0F2HA-A7H1M-MJ989-1KCZM-3Z8J0
5Z6RR-4U18J-MJ4U1-13ANP-8URJ8
JY4RR-0MK12-HJ4F0-01CZ0-A3U06
JA0NH-6230P-0J0Z9-0RAQ0-9K844
HA6R0-D4350-MJEX9-0UAG4-23A64
0F2D2-6515H-HJ1J0-0R1G4-CGK5F
4Y4RA-2J11L-MJ0R8-0HCQ6-C68NA
HA4WH-83L82-HJ4W0-1035M-8Y860
MY208-8K21H-MJE49-0K170-8LRPD
HZ6TR-DX15H-0J9M9-1J9EH-2GH26
NA49H-A5K5Q-MJ878-099X0-CGA3F
MA6H8-D2L83-0J8X9-1C2QH-CLR36
4F4TR-F1HEP-4J009-0H1Q4-96RK8
NA0RU-452EM-4J1F1-1H2XM-27R70
0V608-DUH90-MJD80-1J35M-1LA72
1V6DH-4Z247-MJD39-1V9ZP-2Y8M6
MV4DK-0ZK9J-0J058-0A1X2-3Q066
HF4M2-0410P-4JDN9-1A1XH-032QD
1G6HK-6GK12-HJ839-0U9G6-3ZAK4
5Y292-6PJ51-MJ0L1-1T9XH-3KUN2
4C2N0-F9190-MJ8T0-0A2N6-07RL8
JV218-2Y08N-HJ9F9-02AZ0-3LAJ0
MF48K-A0050-MJ851-1V0NH-A22P8
4Z44A-0TK83-0J581-0JC56-06KQ0
HV2H2-FZ31H-MJ4W0-1H2XK-3Y062
0G0WK-6E281-0JE98-0V2E0-26K1A
4F4XK-8401P-HJ408-028G4-CCU0D
NY20R-FNL46-0JEZ8-1U3EH-17072
JV4J0-ATH4L-4J4F0-1J35K-07UK4
0A2J8-26H0L-4J089-10CGP-9KH72
NU69K-2LJ06-4J8P0-0H9N0-1YK4D
4G0HR-ADK15-HJ190-18CEM-32H4A
MY0J0-6NK5L-HJ8D1-10AZM-A6UKD
HV2NR-2VK15-MJ450-0R176-9Y824
MF002-03110-4J0M8-0J8Q6-8ZR30
5Z0WR-2Y153-MJ0V8-19AGH-2V8KF
0Z2XU-8ULE5-0JEH9-1H15M-0U05A
0F4W2-83H54-4J009-0L870-8YA78
1Z4NH-FR31J-HJ1V9-1AANM-03U3F
4A2XU-673E4-HJ1H8-0J8Z0-2Y238
HA6XH-0624L-HJED1-132ZK-3L2L2
JC09K-FA206-MJ469-02974-AL868
1F0WK-F4H85-HJ4A8-032Z4-CA8QD
1F4J0-040EL-HJ531-098X4-132QD
5V2EU-8W38L-0J5U1-12CEH-2286A
5A09U-46K5J-HJ4A1-033E6-3LK32
NC4TK-0EJ4N-0J4Z1-0C2X2-27U1D
5U64H-DL355-HJ9K8-00852-8YH3A
1C2M0-DA113-4J5V9-1C25M-9V0QA
4Z4XR-DR300-0JDJ0-1R0NH-AA8Q8
MA40H-D4295-MJ0E8-1RCGP-A3ULF
1C6M0-8EH5K-4JDC0-0U3E0-97876
HY090-0MK9N-HJ5E9-0T3E0-120QF
NC2M8-AFJEN-4JEZ0-1C3ZH-CUR1F
1V60K-2ZH1Q-4J5C8-0U2Z2-1QU72
MY4X8-FK1E1-MJDW1-1125K-2U242
HG0XU-2G1D0-4J9W9-1K2ZH-AP0L2
HF2TH-D73DJ-HJ4X0-092G6-9P8P6
MA0JA-A0K8J-HJ940-1K8QM-3CA5D
JF040-D4141-HJ1Z1-183ZK-8AHQ8
1A0JK-F2J15-MJ5K8-1215P-1VA30
JZ08R-DVHE6-MJ5F8-01CN4-3P074
0U2TU-4L3D4-0J0J0-0R1Q0-CY870
JA200-06J1N-0J9Z1-1RCEP-1VR08
1Y0MU-2JL5H-4J4V1-0A354-16UP4
NU2WR-AQJEK-MJ0P1-0K8E6-CZHN0
5V6TU-6THDN-HJ1A1-12C7K-0GK22
NC6MR-89KDL-HJ871-09152-07248
4Y41A-6H15Q-0J4T1-1CAQP-928H8
HV6WU-6Y2EK-0J0D8-003X6-AUKN2
5A6M0-22H96-MJ921-1H9NH-3LA5D
MV658-4Z384-HJ8W9-11AXH-2Z242
5C6JR-DGKDJ-HJ5C9-1R3EH-AZHP0
NV41U-AXK9K-4JD71-199GH-A7RM2
NG6N2-68J44-0JDY0-1HANM-82H06
HF200-04H93-0JE50-0A0G4-332PA
MY6DK-FMLE0-0J5M1-110ZM-922P4
NC2DK-A929P-HJ0G9-1TCNM-87844
5F6J2-67K91-MJ1C8-1TAXP-2Y21A
HF2M0-80350-4J0X1-0VA50-1325D
5Y6J2-4H28N-MJ429-1217M-1ARQF
JC6W0-0EK51-4J8G8-0R3Z2-2786D
JV0TU-2Y217-0JE69-010E6-1U0M8
MC012-6DJD1-HJ8M0-1H9EM-AA0HA
5U6DR-4M385-4J8V0-083G4-1C078
MZ68R-4V355-MJEN1-1U8QM-CP0MA
NG4EU-4F0D7-4J171-081E4-3VK7F
NA2WH-43J8H-HJ8Q8-0T8Q6-3PA38
5A0JR-85L5H-0J4K9-111ZH-A72K2
5V2WK-AX194-4J0L8-0T0Z0-06RNF
0Y4MA-8H20L-HJ481-03274-8CU58
4F2EK-043E2-4J8T8-1C2EM-9225F
4F2MA-430E2-0JD01-0J9Q4-CPU0D
1F2NR-83JDH-0J5K9-0K972-CPR6D
MY6XA-2JH4Q-4J5E0-0A376-C6U66
NC450-4AH97-MJ5F1-0K2N2-8V80F
MA0MA-471DH-4J8X0-1V2XK-8ZAK4
1U280-FH10N-0J8K8-1295P-2CU1A
JA69H-030EJ-0J9F1-02C54-1YKK2
NY08R-2P01Q-4J5F0-022Z6-2LKHD
JV65R-DXH57-4JE60-0K1E0-A7K02
5V6D2-0R046-HJEC0-1827K-3CKN0
5A29A-46L92-MJ4V0-0R3X2-1U22F
NC68H-0GJ16-HJ0P1-1L1ZK-AY8P2
4A48H-03HE4-0JE10-0R0Q0-1Z028
5Z290-2R186-HJEL1-0A876-23KQ4
5Y4N8-2K01P-4J8C8-0VC70-8L2QA
0G0DR-DE34H-MJ5R9-0HCG4-CGK32
NC2EK-0GL8P-4J4Q1-1U9GP-AYK5A
HY24R-8M3EH-MJ9W1-0HCE6-AAAHA
1U6J8-0Q1E4-MJ5L1-0C8G6-CY0P0
JY00K-AP14L-0J0Y0-00AE0-0VKN6
NZ6D8-0UK07-HJ461-1307K-8UHH6
HY4H0-6Q2E7-MJ050-0A1G4-2P86A
1V6TA-8TL4P-MJ0K9-1287H-CFA2A
4C612-FC1EJ-0JET1-18AQM-8ZR76
0V0DK-AVK8L-MJ198-1U25H-1Z0N6
MV64H-0R00Q-MJ550-1907M-0C2K4
MU4XK-8MJ5N-0J0X0-0A3X4-32AJ0
0U2JK-8H28L-HJ911-0V8Q4-2C0Q8
1U4N2-DN2EL-0J838-0A9G2-2704A
0C2NK-09J0J-0J4J0-1A1NK-AG060
1A2EH-44H04-HJD30-089Z0-A2834
JC2JR-6EL1J-HJEY9-11CGK-1F2N4
JF45U-D1HDP-4J068-1L17K-86018
4U4DA-8N1D3-MJ1R0-1LAXP-9F060
HG2T0-6ALDK-0J0W9-03A54-1L0N2
MY4H0-AJH50-4JDD8-132NP-0G2JA
MV6E0-2R21P-4J8D9-03AQ2-03202
1Y4DA-6N393-MJ0L9-088E0-A6878
JZ692-6U20L-0J0F8-1LANK-3V21F
0U0MR-0HJ1H-MJ4J0-0A070-23K20
4A21K-2109K-HJ991-1R27H-36U6D
5G49H-A810L-MJ4U0-03A56-2CKJA
JZ4D0-4T1EK-MJ5Z1-18AQM-07HLA
MY08U-FJHE6-0J9D9-1KCQM-1GAJ4
JC00R-FF102-MJ1Z8-0UAZ2-1V8MA
5G2MA-FAJD5-HJ9V9-08AQ0-8VRQ6
0V4WU-DZ007-4J818-0T1G0-9P82F
HC64R-0F0E3-HJ048-0H1E4-2LU02
JU2E0-DP05H-4J8G1-1U3GH-8VU34
5G4X0-AG14N-0J0V0-1TCXK-9Q2HD
1Y010-4NJ8K-4J1K1-018X6-A6AJA
5F0W8-4531Q-HJ9L9-1C0XK-CG8MD
4A4N8-A30D6-4J988-1JCQM-8QUL2
HY09A-2K357-MJ5N1-0C852-8U222
1U0XR-2QJEH-4J4V1-183GM-2YU40
NF6E0-46KDP-HJD71-0R8Z0-1V800
JG2H2-DG08N-MJ0G8-18AEH-AQ8P2
NY29A-FQ1E2-0J0Q0-0R9E6-AYA38
5Z6M8-4U24N-HJE39-080Q0-CKHLD
4G0MU-0EL06-4J9T9-1C3ZK-1FH24
5Y650-6H00P-4JDA8-102QH-CCU54
4C2WA-2EJ4Q-4JDJ0-1R9XK-8GK04
0Z4XK-AVHD1-MJD89-1H37M-9QU60
MY2T8-8N31L-4J1M0-1J0XH-9GRJF
4G6WH-09HE3-0J1Y9-130E0-9L2J4
4U6DA-2K155-MJ8J8-1T8NH-0U21A
NA4EH-0501Q-0J0G8-1T2XH-06H26
1U0H2-AJH82-4J1C9-1827H-1F8MA
0F2JA-60354-0J0J1-1A05K-3AK2D
NG650-48106-MJ1P1-01850-12224
5A2WU-F0H85-MJ931-080Q2-ACA1A
1V0JH-6V1EL-HJ1U8-1127K-0PK10
HZ0MR-6ZL52-MJ9X8-0RAG6-8PHJ6
1Z6D0-2Z053-HJ538-1V8XM-2ZH5D
HF2XH-87KD0-MJ5E0-0R2X6-0Z0JD
4V29H-8XL47-HJ0J0-0T8Z4-C7A44
1G20U-68K9P-MJEC9-0A356-1301A
JG0WK-8FK80-MJE70-0C0X6-9VAM6
0F0M8-82312-4J4R0-1H3QP-0VKP4
MF6DU-8739H-MJEN8-0R9Z0-3PKNF
5A4T0-60186-HJ0L8-1R05P-030K8
0U2HA-0N01N-HJ098-08AE6-9F848
0U240-4JJEJ-4J8R8-0JC76-1686F
HU48K-4J182-HJ9N8-1U07P-07208
MZ292-ARJ47-MJ8M0-1K8NK-22AJ2
4F48H-D2K9N-0J418-1V0QP-CK0H6
MY2JK-6P29P-MJ149-0K8Z2-3VAN2
HZ44R-4YK8J-MJ041-0H9Z0-1V04F
0V61U-DZL86-0J1T9-0ACX6-CQ000
5F4JU-2405P-4JD29-1J1XH-12876
JZ6TH-AT3D6-HJDY9-012N0-CGKM8
MC6WA-FF38L-HJ8W8-10CXM-2K2JF
JF608-21J45-HJ1Z8-0AC72-27HL4
JC29H-2G1EP-HJ9Y1-03CX2-8YRMD
MG4N0-4AL94-MJDX1-0A372-AURLD
4U4WU-6H15N-HJ1R1-0H272-3AH1D
1Y2HH-0Q08J-HJEC8-1ACEM-2P8QF
5F20U-24J9K-HJDL8-088G0-22R6F
5G2TK-DCJ1P-4J4U8-0KAQ4-8Q86F
5C2HR-4A251-HJ028-010N6-AL21D
MY6TR-DJJ8N-0J1X0-1V3NK-A7K40
4Y692-FH35L-4J9H9-1J17M-ACH74
NC25U-0F08L-0J961-020X0-8U020
NF6NA-07J11-4J1Q8-189EK-CPRN8
HC44H-0GHDJ-0J951-191XP-AQUHA
JV2HR-4XJ8L-0J4Q0-0C0Z2-16072
4A2JK-65094-4J019-091E2-37810
MZ2DH-0W24J-0J8D8-00CX2-AC226
1C4MA-8G304-0J9K1-019Z2-9PU6F
HU4DH-FL2D6-HJ858-0C8Q6-3P276
1U2N0-2NL13-HJ8U1-1L3GK-8FK4A
JZ0EK-ATL4H-HJ9Z1-0R3Q0-37R08
HU612-FHHE1-0J1E8-08C54-0CAKD
1A6XK-80HE4-MJE21-1285P-CC2P8
JV6XA-ARH1Q-0J169-1H0NM-1C0Q2
NV452-2R313-4J5P8-1297K-9A026
4U2DK-2MJD5-4J9H9-021Z4-ACH6F
1A0MU-00KDH-4JE31-1815K-02074
5C2R2-DEL55-MJDL1-0C8E2-A6000
HZ00U-6U20N-4J1E9-1C27K-AVH7D
0V0WK-4UH03-0JD80-1K3NK-AUAHA
MU04K-0K24Q-HJ1E9-1T2QH-3UK70
0G24R-4G396-0JDJ1-0V8Z4-0PU64
0Z4HK-AR1DH-4JEH0-0K0Q2-0CHHA
JG6TH-6E00N-MJ1F8-0KCG6-1F2PD
1V4NR-4ZHDM-4J538-0U8X0-3Z0L4
JC09H-AD04N-0JD69-1J8GH-ACR70
NF2W8-82J42-0J8Z1-1AC5P-1V258
HU240-DK094-0J4D9-0JAN6-0VKK4
MA68R-64045-4J948-1L8ZK-A32PA
4F08K-F3L8N-MJ0T9-0TC76-9P020
JZ0WK-2XK04-0J870-1V8EM-A6244
HG6RH-FAJ06-0J8W0-1H35K-AV86A
0C0ER-8C201-HJ590-0CAN2-CPHQA
0V4RU-2W25K-0J488-0HAZ6-3AR56
1V49R-DYJ9P-0JEU1-00CG4-2KAKD
0G2E8-0FKE6-4J919-1R9ZP-CKAQ2
MV6XH-FRJ11-HJ9M0-02054-C3ANF
4V480-4R306-HJ0T8-1V27M-320ND
HF4EK-0615Q-4J1X8-1TAEP-9L2P4
JG24K-0EL57-MJ1P8-0L9X6-06UMD
4V2X0-ARK4N-0J580-11ANP-8CK52
1F01K-D6282-HJ829-110EM-3L2QF
1Z408-8VL1Q-0J8V0-09CQ2-AQUQA
5U442-4L1D5-HJDL1-0T972-0ZA2A
NU68U-0N2DQ-MJ1F8-132XH-CFRHF
NY4J2-8H2EK-HJDG8-1T37H-CA8NF
NU44H-FLH97-HJ860-111NK-CYR2D
0C4D2-2C04N-MJ998-1RCQP-3Y218
4G2R0-6CLDP-MJ8T0-0CCN6-8Y8Q0
0V288-0U00L-HJ809-02056-1VH1A
1C2X8-08290-0J5A8-03CN0-9CU06
NV6MU-AY24K-4J0F1-11CZH-2KK6D
5Z0X8-8R00M-MJ0C1-08CQ6-CCA22
4C0JU-FGL43-HJ8H9-0J8E6-1YR72
0A2DK-F3L00-4J1R9-13A7K-3YHKF
HZ0ER-2YLEH-HJ8X0-1VCXH-3LHK4
1Y2M2-8JL5L-MJ4K0-0K8N2-8GRKA
1F6X2-47L45-0J4U8-0LCE4-0P23D
1Y6XH-8JJD2-HJDU1-1K2QK-AG2M0
5U2E8-DM1D0-MJDV0-0VAX0-A287D
HA4MH-A7354-MJDX1-1A3ZM-0ZU6D
5A4EH-6139M-0J9U8-03CQ4-3FU0D
5Y2N8-DNJDQ-4J9U8-0JAE2-AFKQ6
HZ400-FRHD0-4JD51-1V0QK-92R20
0Z0D0-8TK1M-0JE08-0J176-26UMA
1Z448-4YJ5L-MJEV8-092X2-CVHJ2
4G6TU-4A110-4J0J0-0R972-9U044
4Z6J0-0R1E4-0JER9-1K37M-CA06A
MC4HR-AG011-MJ859-1U9ZH-CYRH0
MV40U-4R380-HJ9M8-0L054-C2APD
HV20K-6RL0Q-0J1X9-0ACQ4-338Q4
4G6E0-0DKE2-0J090-1UAEM-0CUP2
NU642-2M013-MJDF9-1H2GM-33876
JZ09K-4Z08M-0J561-1J0XH-8Q26A
4C6JU-8F195-0J8R0-132ZK-CKRLD
JV4M8-6R000-0JEG9-0U272-0CUN6
MG0WH-89L0N-4J4X0-082N6-8GU44
JZ0TU-ATK1K-4J1G8-0AAN0-3G2M8
1G4NR-2C19P-4J4K8-1K85M-1PUL4
HZ2T2-4T110-4J0X1-09A50-17UN6
JY0JU-FJL0L-MJEQ9-1V17M-0FK60
5C6EK-FEJ57-HJ0U8-1LCGH-36R58
5Y05K-FNL10-4J8V1-0VCG6-86UM4
0C65U-083E7-MJEJ1-1V15K-8AHQA
0F60A-06L8M-4J8J1-089X2-1LA0D
1F6XR-F2J41-MJ4K1-1K17M-CVUP4
5Y61K-8H1DN-4J9K9-018N0-A2K3A
1Y640-AQJ5P-HJ0V0-0C3E4-1PUM0
0G0E8-A8LEN-HJEJ8-1V0QM-03024
4A0JK-A7J93-0JER9-03AX6-1PA6A
1G40U-4A112-HJ5K0-1H07H-AVU22
1U6MU-4J34N-MJ1U9-1L3NH-CFAHA
0G2D8-DC24M-MJE11-1C1NK-0YR5A
4A0HK-81J90-0J4R1-1227H-17HK4
0U6DU-0MJ0P-HJ4R0-103GP-83260
NV6T0-6X057-HJ068-0H9Z2-1GHHA
HZ2MR-6R20Q-0J050-1R15H-2205A
MC2H0-0G11N-MJEX1-0RAX2-APK22
HC498-09H10-HJ140-1087M-07RQ4
4U6W8-6NJ54-MJ8T1-0U2Z2-9F0MA
0U0RA-AKK8H-MJ181-0JCQ2-AUK36
0Z2MR-2YK8H-4J181-1HAEK-0L0HA
HY4XR-6JH44-MJ9D1-02AQ6-0GR54
JC6E2-6CH01-0JE78-1U17K-CZU76
MG280-4FH9P-MJED1-1HAZP-9UH7A
0C41R-8G2D0-MJ018-0C0E2-8QUJD
4Z6H0-4V29Q-4JE90-1RC5M-1QRM8
HG2JK-FA1EL-HJ8M1-0K0Q6-8UKL6
NV058-DZH15-HJ868-1L8ZK-CZK2D
HU01U-4HL9Q-4J9X0-1CA5P-0AH4D
4F25R-841EP-MJDJ1-0A1X6-ACA0D
HC4NU-DDL8L-0J8W9-1H2XM-0CAJD
1Y49H-8J053-0JE28-02154-368N6
JV6RR-6XJE3-HJ8Y8-022X0-2GHN4
MY28A-FKL5K-0J0W9-1335M-2K0KD
5F65R-24383-0J0V1-0C3E2-32U2A
NY0DU-8P217-4J178-0C1X0-2UR10
HU45H-ANH4N-0J0E0-0TCZ6-97R2D
1U45R-0HL9J-0J9V1-1ACQM-23R22
0Y21K-8QH07-HJD19-0R8Z0-9PKJF
MC0MU-88K45-MJED9-1125P-0C824
NZ4JH-4R001-0J171-0C1N0-A2U02
MF41R-D519K-HJEN0-1R1GK-C7A30
1C2DU-4CK10-0J930-1R87P-CQ8L4
NG4RA-2G2EM-4JD70-1R9ZK-9PA70
5C0NU-FC0EH-4J5A8-11CQP-CZAH6
NA64A-82HDL-MJ179-1T05H-1URL8
HV24K-4Z385-HJDX1-1TAZK-3PR44
JF48K-2219L-MJ5Q9-1U15P-CV2QF
0Z408-AYKD1-MJ481-1H2EP-0VKP4
4C4T8-FEK52-4J518-1A9XK-37K4F
5G40U-DC01M-0J8A8-003Q2-0QK40
4G4EA-AD3DJ-HJ0H1-118XP-2AA68
5A61K-44312-4J1V9-0VCE2-0CHQF
NY6HH-DMJ1K-MJ5Y1-0K2E4-0CR3D
5C68U-2EL41-MJEV8-1UCEH-CGK78
NC6N0-8FK01-MJ9F1-12CGH-CV8Q2
MU68K-2N2D5-MJ048-138ZP-2GAL8
JU0J2-2NL90-4JEQ0-1R1ZP-2FK3D
4Z44R-2U144-MJDH8-0L850-CL20F
4V092-AVL8L-HJ4R0-0LAQ0-2QH56
HA4D8-6711M-HJ1N8-199EK-3QK38
MY6NU-FH19Q-0J0X1-0A2N6-C2RN6
4U040-4PH94-4J809-101ZP-3KRNF
0A25A-6531M-MJ4J1-098G4-0FK1F
NZ6W2-2XH13-MJ4F8-022X4-A7046
4C40A-D9JDN-0J5J9-0U1N2-970H4
1A00H-A7HEQ-MJ8A0-1J3ZK-CZ80D
JU242-2L00J-HJEF0-0HCQ2-8QAQ2
HC6TR-48H9Q-0J0E1-0TCQ4-13H14
1C04U-F928Q-0J8C9-1A35M-C703F
5C642-6GL5N-0J0L8-1A0XK-0ZR0F
4V40R-8RL56-4J4H0-021N4-ACHL6
5G6N2-091EM-4J8U1-103NM-3FUM4
5Z24K-6RK8J-0J5C9-1927H-A2UQD
HC6EA-AD396-4J8M1-011Z2-9205F
5C0JK-DD30L-MJ4U1-10AXK-1A072
5F41R-F5LDH-MJ8V8-1UCZK-A70L6
1F2D8-D2J86-MJ9L1-1885P-8K82F
0F0NA-03K42-MJ591-0RAQ0-3P002
1Z2JR-8T345-0J9V0-18C7K-CFA42
JA64U-A20DN-0JE79-0R852-9K060
0A6XR-0720H-0J591-1V2GP-9Y812
NA4RK-0418L-4JEQ9-0C0Z4-A2074
1F2NA-04K56-MJ9A0-12AEK-1CH72
JZ0RR-2UJ5L-MJ1P8-00850-CUK56
NG6MU-4C34P-HJ4Q8-0T054-CZR44
5A2JU-63L41-0JEV8-1RC7K-1YH76
5F2X0-A5006-4J438-0V1G4-36020
MU0N0-6H044-0JD41-000Q4-8A2N8
HV41K-8X017-4J4E8-18AZK-0GU1F
HG2JA-6834P-HJ4W8-1L27H-12072
MC6JU-8C10M-MJEM9-1305K-1PHH0
MY2XA-2KJ5J-4J9N0-0R8Q6-0UA12
NV44H-8V1E0-HJ5P0-111QH-9Q0ND
JY4M8-AM10L-0J9P1-129XP-83U18
HF612-6235K-0J5W8-1J3NM-1L8MF
0Z4H0-2Z040-4J180-1H3GK-8ZRQA
5V6E0-6RH8M-MJE28-1L95M-A2RLD
NY4NU-8LJ0M-0J4Q8-1R15P-1Y212
NU6RK-2N28P-HJD78-1V1ZM-2786A
0U2WK-AK01P-MJ108-1H17M-8UAH2
NC290-DC21H-4JE78-0R976-3YKM2
1Y2E8-DQ31Q-4J5L0-1V9XH-9PR62
1A0N2-20HE7-4J1A1-00C76-2CUQD
4Y6NU-6L0DK-HJ988-01250-CP8L4
HY6TU-APK07-4J558-1U1ZM-8LR78
MZ0TH-8ZL9L-HJ8N8-098X2-AY2KF
HA2T0-A220K-MJ140-02052-8KH54
NF25H-06K1P-MJ5G0-1U3EM-0UU7A
4U2MA-4H255-4J491-19A7K-AA81A
5A2MR-02383-MJ8L0-0C8N4-CVAM0
4Y4T2-6NJ4M-4J9R0-0HAZ6-168P8
HF6XH-F2H10-4J5E8-1CAQM-2LRNF
0Y2H2-8P28J-0J999-0C2X6-AUR26
4Y000-0Q016-0J510-0R1G2-2ZKH8
JC4TK-FEHEQ-MJE69-0H8E0-0FA1A
JV2XA-FR01L-HJ8G8-0A252-82UM2
1A48H-27L84-4JEV8-1V3XM-8YU10
1Y4H8-FJ10H-4J5L1-1U05H-A6HJD
MA2TH-60K47-HJ9E9-1A2NM-1AK5D
NF408-F0JEH-HJ4Z8-1UA5P-CAR5F
0C09H-0C055-0J191-1V25P-APK04
NG6RR-09286-4J9G9-08276-1G8Q2
4Y6M0-8ML50-0JDR9-012G0-83264
0F608-F6HDH-HJ491-1AAZK-CVK5D
4Y6TH-2M2DQ-0J910-1U1XP-832Q0
4V6JU-4VL9H-4J1J8-1V17P-9PKJ8
1F08U-D2H5L-HJ5C0-1UA5K-2UAH6
HC4WU-68J94-4JDX9-08276-C2K72
4A2MR-A530Q-4J1H1-009Z6-C7K7F
0A4DU-27L46-4J5J8-0R1E0-3PKJA
1A4JH-85K50-HJE20-121EM-96HK2
MZ6HA-2Z2D5-0J459-199EH-1QAH2
MG0MU-FCH13-4J959-1997H-3ZR12
4G2TA-0DK4H-MJ081-103ZM-9A060
JC400-4E002-HJ969-030E2-17UL2
5G49H-DEK0N-0JDA0-112GP-CG8M6
4Z2J2-8WLE4-0JDH8-1L8XM-2AANA
HG482-FD391-0JEN9-0T8Z2-1AH7D
0F2E2-40255-4J491-1AA7M-8A2P0
4G6R0-0904N-MJD19-0V072-86H0A
HZ48K-6T215-HJ859-1C15M-36HK6
NG48K-AF211-0J0F1-03CE0-ALK2F
1G49K-AEK0H-4JE21-108XP-AG004
NU2D0-6K003-4JE78-1C0NP-1KU32
MC2EK-8DK5H-MJ450-188XH-3224D
4U4JA-DQ14N-4J5J0-1C9GK-1Q83A
MY2T8-8KJ87-HJ5N9-0A074-CK0HF
NU4T0-FKH96-4JE71-1R95H-CKUM2
5G40R-8F147-4J9K1-131EH-AL218
HZ01K-2U04Q-MJ148-1087P-3V8J8
5Z2HH-AR28N-HJ0A0-1025M-8C050
MY0W8-AHKEL-MJ4D0-0LAQ0-03H14
4C000-AFJ1H-MJ9T0-1TAXH-AKAK4
NA09K-26L4P-HJ0Q0-091X4-AU2L2
0A6HA-00HD4-MJ990-0UAQ2-C3R46
0V4EK-6Z305-0J4T9-1U2EK-AY870
NV442-4VH94-4J471-198QP-CPAQD
HC24R-08JE1-MJDM0-0J854-32RM8
JZ2M0-DU3DH-4J5P8-1L0NH-AL86A
HC4N2-FCJ0N-MJDX0-1U2NM-AYRL6
NC6X2-6G3EH-MJEQ9-1R9GK-0ZHNA
JZ4WH-0XJ82-HJ4P8-010X2-86KQ2
1F05U-A61E0-0J8U1-102XK-9LU14
HF490-21K95-4JDE0-1TCQP-1F0KD
JZ2HA-FY306-4J4Y1-003E0-2V042
4U250-DM2D7-HJ899-0A3Z4-CA0Q6
NU012-8HJ04-0J9Q8-191QM-8C22A
MC4W2-0AJ1L-MJ1X9-1A3QM-8KH7F
MA400-82H97-0JE50-09874-8V2PA
4G0J0-8DL84-MJ8H8-101ZH-13KQ6
HG4NR-6AL0P-0J5W1-12CQP-0V060
HF68H-D2042-HJ4D0-0J3Q6-2K87D
HG0HU-0EH8J-HJ158-0R8E2-2GHQD
0F0MK-05K4H-4J110-0C9E2-2F2P8
4F2DU-01341-4J9J8-1C85M-9G836
4V2X8-AXKEQ-0JE18-1R1XH-07HJ2
5Z0JR-DRH8J-MJEC0-1UCNK-02A08
MY0DH-FJKDL-0J4D0-1HA7P-87K6F
4U40A-4PH15-0J580-0JCZ6-CUUMD
JU4TH-FJJ1K-HJEQ1-0V0N4-CFRMF
0U4WA-8J007-HJ489-0JCQ6-97KLD
HG2HH-091D4-4JDX9-1A25P-C72QA
4Y4T0-8P016-4J180-02CG6-8K2Q8
HG6EA-FC244-MJ548-0J974-1Y278
5G6WU-4FKD5-HJD28-019E4-AVRMF
MV248-4XJ0P-MJ0M0-000X6-16848
5Z00R-2WLD2-MJ1V8-1R3GH-2AR7F
MC6WR-681DN-0J9N1-1R15M-AC8N8
1C25H-A9J9M-4JDU8-0J376-8GHQ2
NC050-DF29P-4J068-129GK-0VRM0
0G682-2FL8K-0J0R0-1LCGK-AVK42
0Y00H-6Q156-0J1H8-0H0X4-1PA4A
NG0D8-0DL52-MJ5Q1-0V8Z6-03A44
MF610-4208M-HJDE1-0TA54-CLHJ8
HV21R-FY012-4J149-0H9Z4-AUKND
1U00K-4M2EP-HJ038-1V8EK-0A0PA
MY412-2M2DN-0J5E0-0RCG2-03U6A
5G6MK-69J06-HJ8V9-0R272-872L4
4V0JK-DWL1Q-MJEJ1-0C9G4-9C2K6
JZ4X2-2WLE4-MJ8Z0-0V3X2-03852
JA0N2-67J5J-0J0Z8-1V2GK-CPAJF
JY6T0-DNK4J-MJD61-0L9Z6-96KN6
4U6T8-DL357-4J8J0-0T154-3Z2NA
HV0NR-6RK53-0J5D9-023N2-9C2J2
5A212-60J05-HJ0U0-02CQ0-AAK54
0Z0T0-ARJ0J-HJ0L0-0R9E0-97AQ0
NC6W0-AE35P-4J8P1-039X2-37RQD
4F212-23316-HJDJ0-1C1QP-0Y028
5Y4JK-2L157-4J0K8-0H176-0Q264
NZ4N2-6Y184-MJEY9-03AG2-0UU3D
MF0RU-61K1Q-HJ140-1J87P-A7U46
MV6NH-AYKD3-0J458-0C8X4-8LH1F
NZ2ER-DVH0M-HJ9G8-0UAQ0-CQA70
HV2XH-2UH50-4JD40-0J076-9VUHD
5Y0R2-DQ357-HJ0K8-131GP-1Q2J4
NA490-673EP-4JDY0-1JCZP-2Q00D
JY0NA-2L00M-HJ060-0H8Q4-0YH30
JF6HH-F13E6-MJ4Y1-0J2Q0-AG260
4Z2RH-0R204-4J909-1H87M-8CU20
4Z2DK-8TLD4-4J0T1-0TA70-AFK48
0F4T0-F4313-4JER0-0KAX4-C3K48
JA00H-6020K-4J060-028Q0-1AHQD
HV4DA-8UH4P-0J550-0C176-1L21F
MA6R2-F614N-4J8M1-038Z6-3KH5D
MU20A-4K0E2-HJ0D0-113NM-2VHP4
0V2RA-2XJ81-4J4R9-13CGK-17ALD
MC6W2-6E104-4J8M8-039X6-06H1A
NC49A-2GH80-0JEG8-0C2G6-9Y8L6
4Z652-0VL4H-MJ5H9-00050-3YU34
NG4XU-AFJ54-MJEP8-121EP-8V2L6
JF6ER-83HEN-HJ560-0J070-8Z20A
HA0W0-21K43-HJ5E1-1R25H-1GH26
NF0XR-D1KDN-HJ479-0T872-07KK4
4U2WH-6HJ15-MJEH8-0H976-238P2
0Y2J0-2QL8K-MJ5R0-1K3ZM-CZAMA
HY60H-FM31J-0J5M9-028X2-9C84A
HY25U-0M241-HJ1E8-08AZ6-82H24
HV6J8-6X043-0J149-001Z2-AG8LF
4F2WR-46K9N-HJ480-1J2ZP-3VKQ6
NA2JK-4609J-HJE60-131ZK-2V0KF
HA6T2-44K1H-HJ150-1V9XK-AAA6A
4A082-A3083-HJ401-1395P-8Z0K4
MU40K-8K3E2-HJ1N9-1817H-1VKMD
4A6NK-663D0-HJ1J1-0A9X4-0U202
MY0W8-4PKDN-MJEE1-08CX0-0KAQF
NC648-6GJ15-4J4Y9-0LCG4-8QKQD
1G208-FG10L-0J8U8-003E0-CZKL4
NF4H2-F6K9M-4J0G1-1AAEH-9KA40
0Y44H-DJ19K-MJ1H9-1H17H-1F0K6
1Z68K-8WJ0N-4J9V8-1C2EM-2A2K6
4V008-2VH8H-0JD09-1197H-2Z864
HC41R-F8L55-4J0W0-133NK-AA87A
MC28H-28091-4J450-0A074-93HP4
0F6D0-F738N-4JDJ0-089X0-2Y258
0C2NK-2EKD3-0J099-1CAZP-3FUQ4
NG6DH-FC20K-4J4G8-0TCN2-AZ204
JZ4X0-0U18N-MJ9Y1-1J2QH-0L2MF
1Z0EA-0W11J-MJDU8-102GH-3CK60
5U0WA-0N38J-4J0K0-0J1Z6-37KJ6
JF0N0-46087-4JD79-1R0EH-0V2K2
1V4T2-DRH57-HJ130-0R854-120NA
4Z6MR-FT0E6-4JE18-190QP-2GUJ8
JY0NA-AJ21Q-MJ461-03854-16KHF
4V090-6V18J-0J9R0-1L2QM-0YR6F
MF6H0-8700P-0J858-0T8G2-CZR06
4F4R0-D32D5-MJ188-0JA72-1Q068
1A6NH-F2L0H-HJ5K1-00974-9KR5D
0C4WH-89203-4J010-180NH-0FK54
0A080-6634M-4J5H8-1L9XM-CUR2F
JY440-AJH91-MJ5G1-09354-86KJA
0G0RH-29116-4J1R1-01A54-C6R32
4Y4X2-8L3D5-HJ5J9-1U0QK-AY23D
1G69U-DEJ5J-0J5L0-0C0X0-CFHLA
5Y608-AP142-0JEL0-089E4-8U21F
5Y0W2-4L351-HJEL1-0A156-1QU1A
4F2ER-D5L46-4J9J9-0C0G6-1GUJ0
JG2RA-2911M-HJ0Y9-1HCNM-A7K16
HG29H-0FHE1-0J4D1-1KCEM-CVU46
MV6R0-2YJ5N-4JDW9-003X6-CV842
1F2MK-D409H-MJ1C1-0ACG2-AAK6F
HF4TU-45KDQ-0J848-021E6-36H1A
4Z208-2V292-MJD90-0V3Q0-CPH5A
HU2J8-AN284-4J048-1H9XH-8FA1D
0Y25A-DML55-4J8J8-090G6-32RJD
MA052-F1251-MJD58-1R87P-27UND
0F21K-D0H4P-0J188-1025K-93U2A
JF2M0-22256-HJD61-01970-3UA5D
1F0XK-6109J-MJ429-0L850-9GHQ6
4V48R-6XH87-4J509-0J1G4-87HJD
0G6J0-09004-HJ590-1V2NH-0FR08
1V2RA-0X0DP-MJ431-1C9GK-2621D
5V008-8Y355-MJEU8-122ZH-AVU4A
MG6R8-6D14Q-4JEW1-103GP-A2A1F
HG2HK-AC156-0J5M1-039Q4-0ZKQ8
0V68U-FT343-HJ1R1-123QH-C620D
4Z01H-AY0E5-HJE80-00AX2-3UH60
4V00H-6VJD5-MJ8R1-01350-1PUPD
5Z4DA-FZ38M-HJ9V8-18AGH-1PU14
4V0HA-4W08J-4JD88-123XH-92HKF
JZ0TK-0WL4K-0J9P0-0H0G4-3A874
0Y68U-2K2D3-HJE19-09174-3U8MD
NU058-2NH4Q-MJ9F0-112EP-3GRLF
HA4EU-21K43-MJ540-0L154-1F84F
MV6T0-4Z11K-0J1M0-0L8X0-AQRH6
0C0WH-2G1EL-MJ4H0-001G4-9YK76
1V0NK-4RLDJ-0J9K9-01876-A22L6
HC4RA-DD09N-HJ550-1C9ZM-3CKQF
HC0DK-DFK9K-MJD51-080Z6-1KKP8
NG69A-08KDQ-HJ478-0U8N0-8CKP2
MG44H-48H8H-0J8E0-1U2NH-2C04F
5Y05K-6HL8Q-0J5V9-09C54-92A5A
0G2D2-8D20L-4J499-1TCGM-C3218
NZ4DR-2UH94-HJ478-1A9NP-3UUQA
NC0MH-8FK9P-4J960-0J9X2-8LR40
JV00H-4R3EJ-HJ5P1-0K176-13KNF
MZ2TR-2WK5P-HJEE9-18AGM-8AR52
MG4HU-2G0EJ-0J140-1J0EK-2PHK2
1U00R-0JLEM-MJ9U9-1LCQH-AG2K4
4F0H2-06294-4JD08-0H1E6-CUHHD
4Y2NR-FQK95-4J518-0V9X6-2QRLD
4Y2DH-2P30Q-MJ9H9-1H9ZM-AVHHA
JV2NU-4R191-MJEP1-0H0Q4-A2HJ0
JU0E0-2K08Q-HJ161-108NH-3LAM6
5Z49H-FRLE1-HJ8V9-0A356-AAKK0
4A450-61KDQ-MJ410-0T8N4-C6RMA
HG2T0-68LDH-4JDX9-1UAQH-9CAL8
5V2HU-0W3DK-MJEK9-0L9X4-9C862
4V2X8-6V312-HJEH8-0K852-2PRM4
NG4TA-2AL95-HJ8P9-029Q4-0U80F
0U48R-DKJEQ-4J4R0-10A7H-CLU2D
HY09U-4KJ53-4J0N1-1T9QH-1L02D
1G2HK-AA14P-MJ5V0-093Q2-9L24A
0C0X0-AE10N-MJEH9-0L1X4-CF8L8
NG2EK-0AL42-MJ1P0-030Q0-CUHQF
HC4NK-4C151-MJ9W1-1025H-1YRJD
HZ6EK-8Y2EN-4JED1-0HCX6-0UUM8
NY0HH-8K10J-HJ4Y8-00AQ2-CKALA
JU09K-4J30J-HJ9Q8-0A076-8FH24
5V4HA-2U112-MJDL9-1T8NM-CL02D
HC2D8-6DHDJ-MJ148-029X6-0CK04
JY0NR-AMK1K-0J4G0-182GK-AC2LA
1A2NH-A2093-HJE31-1T1NK-1UH00
JC05R-AD200-MJ469-1L0XP-93014
MA4T8-A125N-MJ950-1V9NH-C7RN4
NZ0HH-AWK9M-0JE79-1V1XM-A28P8
5A6XH-66J1L-4J8K8-1J8GP-AKRHD
JC6H8-4924P-MJ468-1L87P-8GA46
JA61A-00J51-4J4Q1-0T154-A3878
NY09H-6P38H-4J8Q9-0R1Z0-1VK72
1F6NH-87L0M-MJ4K9-0L8G6-8PUH4
NZ6TK-AR301-4J4Z8-1C37K-12KNA
1Y0RH-FJ181-4J4V1-0CC72-2F2QA
5Y2JR-DJKDH-0J9C8-1RAQP-AFR0D
5C4R0-4C14N-MJ1U0-0J2N2-CZRL4
NV408-6T384-0J4Q8-1U9NP-26K1F
0V2RA-0VHD4-4JD80-02370-2QA44
0Z4N0-4V291-HJ510-1C05P-0ZAJ8
1V6WA-AVLE2-HJ1U0-0J272-AYR1A
NC6RR-AGJD5-MJ8Y8-102XK-CZH6F
1Y41A-2QJ44-HJ9V8-08AZ0-0Z204
NU0WU-FP340-HJ9Q8-1T9GP-9U212
JV6WK-8W30Q-MJ9P0-131ZH-8C2L2
4G602-4911J-HJDJ0-1U05H-3FAP8
HV0JR-0WJ96-HJ4M9-018X2-8CRKF
NU290-2J344-MJ0Q1-0R9Q6-97214
1A6N2-86K1M-HJ1C9-0U2X6-8U8M6
JZ68A-2VK03-0JDG0-1AC5H-1P8KD
5A6HA-A4190-HJEK1-018G4-C2A6D
HF0XK-46K50-4J5D1-11AEK-AKAQA
1U4D8-FQL51-4J4V8-1UCZM-0QH0A
HU6J2-0Q28N-4J949-120ZM-9QA62
1U2MR-6L396-HJ0K0-0K0Q4-8Q07A
1A6W0-D505K-4J039-0T9G6-AFUP4
5Y64R-APJEN-0J4L8-1U0GH-1LA78
HG68R-4EJD1-HJ8M9-129GH-2FR46
MG0JR-8A38J-MJ5X1-1V25P-CVHN8
JC4HH-2EH05-HJ9F9-103EM-1F8P8
4Z480-0UJ01-MJDH8-1K1NM-0UKLF
MF680-D73E7-HJDW1-0LCX6-APR36
1F2T8-2138Q-HJ8V0-18ANP-0GHLA
0Z448-8YJ0P-0JEJ0-088X0-0LR08
4C0J0-AFJ55-MJ9R0-122EM-1UUHF
0Y2DA-DKJ5L-HJ5R9-0JA54-0K0K4
NY0E2-4P3D6-0J5Y9-10CZH-AVU04
JU018-DH016-0J8F9-0H252-A304A
NZ2HK-AX013-0JDG1-18CXM-A7AQ0
JA64A-22L13-0J1Q0-181QH-9VK10
NU2TR-2J30L-MJDQ8-1V9QH-2G0K4
MU2J0-ANL46-HJ0W8-0KAE0-AG206
HG2MR-DDL4M-0JDN9-1V8ZM-9AKND
JG6WU-8F390-4J8P0-130EK-9U270
NV2JR-FXHD6-MJD69-019X6-2G2H8
JU0R8-DMK5J-MJ4G8-1A2ZM-22HH6
5V452-8Y1E1-MJ9L8-1A8EP-CUH6A
NA64R-F6K41-4JD71-0R1Z6-3V854
NV6JR-AR100-MJ5P0-118NH-3AR60
HY4HA-8Q04L-0JD41-0H1Z4-3PH0D
5A6TH-65HDM-MJ4C8-0AAG0-0FUL8
HU2NR-2JJD1-4J4N1-0R0Q6-0GKH4
4U29U-2PHE5-HJE10-0A8E4-2K234
HY49H-2J05L-4J458-1917K-06R08
0C4N8-FC05P-HJ001-1H0QM-0YA58
NF058-D714J-0JDY9-0L3G4-AZUQA
1V25R-DRH00-4J1C1-0CCQ2-1CUK0
5V6DU-2R25P-0J1A9-1K27H-2CHMF
HZ2EK-0V28M-HJ851-081N4-2Q05A
HU6WA-2LJ87-MJ9N8-0R152-8YR30
HV4WU-DXK43-MJ059-1V1GM-C60NF
0U298-6L180-MJ4H0-00956-1Z016
JA2JK-F3LDP-4JDQ1-1987K-9PHL8
4U40A-0J0EQ-HJE09-1L87H-17056
HU0RR-2Q193-0J1N8-1T9ZP-AZ832
NA25H-83LDP-0J4Y8-01CN4-2PKKA
MA6NH-44K91-HJ5E8-0CCX0-9AAN6
1V0J2-8Y2E7-0JD28-0H0Z2-AURH6
1Z090-4R29H-4J421-01052-82A50
NA0R8-41K55-0J979-0R9Q2-CGH10
4V28H-4WK0K-HJ919-1V8XP-2CH40
4Y4M8-8HH46-0J098-0AC56-8CK2D
1G0MK-FDLD3-0J5U8-1K2XH-A3U44
MZ4M2-4T281-HJ5D9-1LAQK-A7U0D
1A490-85JE7-HJ8V1-193XM-1G8P2
1U4DH-DJ191-0J9K1-001Q4-1700D
JC4WU-49H5N-0J9F1-1335P-C7K4F
HV2DA-2V01P-MJE51-0C956-0PK0A
JY2DA-4NH06-HJ8G9-0UCZ4-27034
HV61H-0RL42-MJ4X8-0VAN6-02U64
HY650-0N016-HJ9E8-0A2G2-A7U3F
1U4DA-4M296-MJE31-1U1GH-33AQ8
1U2JH-AJ21J-MJ820-1J97P-8FH74
0G2WR-6CKD6-4J519-1T1NP-9ZR24
NU20A-2LL92-MJDP0-1187K-0QRKF
1U400-4QL9H-MJ5K8-1K9GH-AZ0JD
1U2D2-0HH5M-0J1A9-0HC52-3C81D
JA6WR-2700H-HJD68-0H0E4-3YH72
MV60U-ARH80-MJ4E8-0CCN0-0ARJD
0A6H2-A414H-0J8T9-08AG6-8C2NA
HU0D2-6NJ8L-0J5M9-0J8X2-AG8PF
4U640-2PL0M-4J4R9-1J3GP-9KH32
JA6TR-D6K15-MJ8G0-0RAE6-9U25F
1A04A-61014-0JE30-1T15H-1F0J6
0F2TU-A7KE6-MJ181-12AZM-9PK32
4A612-F125Q-MJ899-09AN4-C62QD
JA4D8-F3JEQ-4J5Z8-09C72-CYAL6
0C40A-DF151-4JDJ0-099G0-2UK50
1C682-0G241-MJ8C8-1R2ZM-3Q060
JY08U-6QK5L-MJ568-0H1E0-9Q814
1V24U-2T29J-0J0A1-1H35P-C6HN0
MU690-2L0D6-4J5D1-10AQP-CQK70
NU60A-FMH8J-HJE78-1C9ZK-12HKF
5Z49R-6Y11N-4J1V9-1C3EM-0U2L8
MG2N0-4A141-4J9X8-192QP-2L016
HC4R8-49354-HJDN9-0U852-AF8M8
MF4RR-07H53-0J9E8-1U3GH-0Y8M2
HC2MR-FA051-0J5D9-1125H-8VAPF
JV2EU-6WJ85-4J4Q8-099Z6-C30M0
MZ2HK-8UK8H-HJ959-0T970-3VR7D
0F218-F7L5Q-4J8H8-1J9XM-3QKL8
MZ480-FTL81-4J9W1-1K2NP-37HL4
5A6D0-A4LE3-MJ4K9-121EH-23KLF
0U2H8-DNKEM-0JD18-1U0EM-C6052
0V44H-6VL47-HJ4R9-1K27K-0YA32
NV6X8-DTKEN-MJ469-1H0NH-CF0JA
5Y40A-8H2D0-MJD30-09174-0C8L8
4C2M0-89KD6-4JE80-0H372-372MA
0Z682-8VH4N-MJ191-0AC76-0YRK0
1F0NA-D234M-MJDK0-131NK-2L2Q0
NU608-DK3EH-4J1Q9-1T8NH-2UKNA
HC21A-49H56-4JE49-1397K-CFA72
NY48U-4N210-4J971-1V9ZM-37H72
1Y24A-4QJ1K-4J8U1-1H3GK-2Z0Q4
5V05K-4YKDH-MJEA1-0J2E0-8VA04
0G44R-2C086-HJ981-1237H-AYANA
MF400-00J82-HJEX9-09A76-A3R7A
HF6D0-443D1-4J5W0-0H2E2-A30MD
5Z2EU-2ZH9L-4J1C8-1TCXM-2YUK8
NU2RU-0H35L-HJ1Z0-0VA76-9AAM0
NA4H0-6320K-4J8G0-0CCN2-2ZRN8
JY4J0-DNL0N-MJ0Z0-1U3GM-3G2ND
JY4E0-AQ39P-MJ1Q1-0R9X2-3PHK2
4F2M0-06345-MJDT0-18CEK-9VA2D
NV48R-8XK4L-MJ871-1T8XH-968PA
5A0J2-40114-0JDU1-1KCQH-0A2N4
NY09A-4NK95-HJD71-188XM-0FR74
4V4N8-8U18Q-HJ4H1-1L97K-CVRH2
NA2X2-F6LD7-MJ0Z1-19AXK-3U2M6
MZ09R-2TJ80-0J0N0-1U85H-3FUK2
JY4E0-2M305-0J9Q0-0T1Z6-3CRMA
HG612-4G1DN-4JEM9-0J0X2-0ZAHA
0C2NH-6FJ06-HJ9R1-01AE4-AUAQA
MF29R-06H05-HJ859-0U1G0-AKAJ0
MV6EK-6X197-HJDN8-191EK-2G2P8
5Z602-0XK80-MJ8A1-013Z0-3602D
NA6EU-02K44-HJ5G1-0C272-CLHK8
MY4RA-4H09K-4JD58-1A05M-C383F
1U0RA-8PL1J-HJ1V9-183XP-2U0N6
5C0WR-4834J-0J4L0-189QM-8CR36
4G0X8-AA35L-MJEH1-1H15M-0U042
NG0X8-6929M-HJ078-1V87M-C7R0F
1V6D0-8TL1Q-HJ8L8-1T0NK-16072
4A40H-4201Q-MJ908-119QH-1V2LD
NA0HA-F2J11-0J5P9-02052-CL0L4
1C0D2-6C10J-4J0U0-03250-0YUM8
4Y25K-0MH9K-HJ589-1K3ZM-83AKA
5A698-862E1-HJ021-119XH-0KAL8
JY2JA-4QL9K-0J9Q0-1A1EK-0QR70
HF60A-F428H-HJED1-002Z2-8ARP6
JF2TA-22H57-4J178-09074-9URPD
4C2HR-D8354-4J4J0-0U150-93H2D
0A648-F13D7-4J9T0-18CNH-A7U48
1C05U-6G145-MJ1K8-1K1XP-CQHHF
JZ4HH-4RL4Q-4JDZ9-08354-CA0J0
4V6M2-6Z39L-HJER8-1J2ZP-0ZU1F
HG2XH-6911L-0J8W1-013Q6-A7KP6
5F4TK-A5200-4J020-0L0X6-1GA34
NG2DR-6AJ9Q-HJDZ0-1C27P-8LK12
NG0HK-89J43-MJ1Q9-091N6-972J0
HA65A-85047-HJE41-021E6-97UM8
NY6NR-4ML1L-HJDP1-118XH-93AL0
MC0EA-0EK8H-HJ149-010X0-CFRQD
4U400-DJJ5Q-MJ4J1-1A05M-2GA1A
0C0M0-6F11L-0J1T1-1TAGK-CKH4D
0C082-4F3DK-HJ5R8-1KAXH-1KA74
5V09U-FV240-MJ930-1C8QM-1ZKH8
HG40R-DCLD7-0J4M1-1K1QK-1QR60
HC2N8-28150-0JEX8-19C7K-3CK6D
4Y2D8-FPJ85-HJ0R9-03CE2-3L0M4
5Z65H-DRK95-MJD21-111NM-0A8J0
1Z48U-2R2DH-HJ821-0J1N2-120HA
JA41R-D23D1-MJ8Z0-1AANH-3LA3A
5A2MR-05H8K-4J031-0U8X6-9G262
HG4DK-DF34H-0J0W8-1K2GM-0UK1F
4Z41U-6V19L-0J1R8-0JAQ2-2Z0LD
5Y2D8-DQ3D5-HJ0L0-0T9X4-1QRM6
1V0E2-6V14Q-4JDV1-19C5M-3Z2KD
NC29H-8DLEH-0JDZ8-093X2-22RP6
HZ2T2-6RK5J-4JE40-119NK-0283F
0Y0HU-2JH9H-4J908-1J0QK-96RHD
NZ64U-6TL91-HJ9P1-0H1N6-A7RJ8
1U4TU-8P2E1-0J1A0-13AZK-0U0L0
NG0T2-6DH54-MJ161-008Z4-9CUKF
HV0NU-6R0E2-MJ0D0-0K270-1CH00
0C2DH-4D104-0J0J9-1U0XH-12H4D
MC2XH-6C093-0J941-1K15K-3Y032
JU2JU-2KJ8K-HJ8P8-1H8QK-CLK20
4U2JA-DPK9L-HJ990-1A3XH-8LR02
4C4MH-6D191-MJ4R8-0KAE4-338KF
5G2JU-DF01Q-0J130-0T0E2-CU0P8
HY09A-4HH83-HJD40-120QH-CA814
1Y08K-0M316-4J4V1-083X4-2A812
JU2R8-AQ003-MJDG9-1TAGK-AYAN2
5Y4R0-8N30L-MJ4V8-1UAXK-A6UQD
NG6EU-8A3D2-0JDY8-1L2QP-9LUL0
JA48R-F3H4P-HJ4F1-11A5M-0ZAQ6
1U4D0-4M05K-0JDC8-0VAG6-8C0JF
NV2WH-4T2D7-0J861-129QM-8GA34
HY0R2-2HL9N-0JDW0-0JA76-23RP2
NV0NU-FV043-HJDF1-10CQM-CQH10
MF09A-A4H45-4J4D8-03CZ6-23H1D
HY6WU-DJ054-0J449-0L074-2F2Q4
5F08K-A709K-4J0C1-1U3EM-2YR7A
HZ05H-4U14Q-4J9N9-1897M-8UK02
4G6D0-4930J-MJ9T9-0C2Q2-A7254
HV6MA-0ZK15-4JE40-1K1XP-3ZUP4
5C4D8-0EK55-MJ5C0-0RAX4-96U58
NY6EH-AH284-HJDG8-0T2N4-33HH4
MU08H-8Q04Q-0J9E9-0UAE2-3Q05D
0V0R0-0X112-MJ9T0-0TCZ0-37UL0
HC04R-09LDP-4J1N1-0V8Q4-CFH0A
1V6E8-2WK5N-MJ9A9-1L3ZM-32A32
JV68H-2VL95-4J0Y8-1JAQK-CY2N2
HA408-41240-HJDE8-0VA50-C70J0
5A0HA-41090-HJ4A1-12ANP-CFH34
1Y05K-FLH5J-0J5C1-0TAQ2-9ZH34
0Z6WH-2UK06-4JD90-1UA5M-9UK32
JU6D8-2HK53-HJ5F1-03CQ6-82UH6
MY452-FQK93-MJ9E0-0R2Z2-0Z028
0Y65A-DPK06-0J891-1VAEK-2KH7D
0C0ER-880E5-HJ991-083N2-CCA0D
0Y4E2-6NL5Q-MJ5H9-0K1G6-06K72
1Z24H-8R15Q-4JEL8-1T1QP-12HH6
0Z49A-AW294-HJ401-1K8GK-3AH50
0F60K-A6J15-HJ4J0-1A9EM-CU0PF
1V602-2UH80-HJ820-1H0NH-8KKQA
4V202-2UL04-0J4T1-0UC72-9URMD
5G41K-6EK5K-MJ1A1-103EK-A6U18
HZ41A-DZKDN-0J049-028G6-CZ2P6
4F2XH-04294-4J491-1A2EM-0AK5F
1U08A-0HL91-MJ9V9-1A2NH-2AANA
4Z0WA-DR3DM-MJ8R0-1HC7P-CC0JD
5C6NA-4FK5Q-HJ029-0J9E2-CL0LD
4V6JA-AV3D7-HJ9R0-0KA56-1Y0LD
JA6XU-07L8N-0J4Z8-0C3Z2-3PA4D
4A0NA-40394-4J0J1-188QM-C3KK6
5A09U-F0J40-MJ8L9-0R8N6-0C852
NV0WU-DT146-0J9P9-02156-1FAJ6
0F4D8-D619K-HJ0J1-1A1XK-9L86A
JG202-D8255-4J861-0H9Q0-02R20
1V40K-6UK0H-MJ9C0-0T2N4-8L25D
HU2H8-8J152-4JEN9-0V170-278KF
4Z0D2-AU310-4JEH1-0K870-9LRP0
JV0JA-6RK5Q-HJ961-0K150-1A8L0
JF0X8-F710J-0J0Q8-198XK-0P262
MZ042-2UH06-MJ4D8-02C50-1KAH2
NC4M2-8F24M-0J968-1J9XM-0U868
1F41U-D3L82-0J9U0-0K276-0ZK50
MF6NR-65JDQ-HJ5N1-0C0E0-1FH22
4V2W0-8U307-4JET1-19A5K-3LHH8
1F2J0-0039K-HJ4K1-1317P-23868
NV692-6YH4P-MJ168-038G4-AV83D
NV0MK-6ZJ5M-HJ0Q8-0C9X2-9YR54
MZ4T8-DWH83-MJ851-0C9Z0-A3H54
HV4T2-0X30Q-0J9N9-1C8ZM-96RL8
1V4RR-8ZH55-0JE21-019Z6-CZH66
NC2RK-0DJ57-4J9Q8-0T8E4-13H3A
MV2NH-8VK4Q-HJ4D8-0KCQ0-1YA18
4G4NR-4EJ1L-0J0J1-0U1X4-368Q4
5U2HR-6KK84-MJ4A0-10CNK-3U8Q2
HU09H-FKH9H-0J940-021N4-CKKH0
5Z00R-4WK01-0J429-118EM-1CHN8
NF2HH-D1213-4J0G9-1AC5H-86UM4
1A6MK-4704M-4J9C8-0T2Z0-APHK6
0C2XA-0C180-MJ1J9-1A9QP-0P252
4U0J8-4LH50-MJ081-13C7P-2ZRL0
MG4NK-AFH04-0J1D9-1HCGH-3U2H8
MC05U-6DL8P-0J8N0-189GK-AA2PF
MV4TR-DV18J-HJ8X8-1A27K-8P26A
HG2T2-88186-MJ0W0-0LA52-12UM8
0V4M0-DV044-0J508-030N4-CPAN4
HY48H-AQJ0L-HJ9M9-0H1E4-3Q8L0
0U0T8-AJJ5J-4J5H1-1K0NH-06U7A
NC2HK-6E391-HJ4P1-009Z6-07K32
0F6JA-032DK-0J580-1HCQM-3YHL8
HC4H8-AAK84-MJ4D8-02C76-9K036
4A202-F7J52-0JET8-0T3X4-2Y272
NF01R-A6051-0JDF8-01AG6-8UAKF
JG458-FE354-0J0Y8-022G0-960NA
JG0HR-DEKDJ-4J570-080Z6-CGKJ8
5C610-2FH12-4JEC9-1A2GK-3KKM4
MG20R-2G254-4JDE1-0R2G6-3QKQ0
NA400-A3082-HJ8G9-1CANP-0QU3D
4C0MR-D9256-MJ500-03172-17U76
5F2DH-D6K9P-4J5A8-0KCX2-ALAJ2
0A298-A12DH-0J501-1L87M-C7846
NU4N8-AN2EH-HJ4F1-10CXK-2F870
4G2NU-A8KD4-MJ180-0K350-AC2Q4
JA680-F7J5H-0J4Y9-1LAZK-0PR44
JG68K-F8K1N-MJD79-09052-8AA3D
4F2N0-82H07-4J919-1T0QM-AVRL2
MV6HR-FU25L-0J8D0-0J3Q6-CVA36
1V498-0V302-4J9L0-0U172-3Z200
HG650-480EQ-HJ8D9-022Q2-2C210
4Y68A-DNL1K-4J0T1-1U2EH-9GHH8
HV0RR-8VH12-0J4E1-1R3QH-2Z05D
HC2WK-4EH0P-4J8E1-0AAE4-8720D
MY6D2-FPJ8L-HJDM8-010G6-2LK7A
JU6WK-0PK12-MJ8F1-1L3XK-CU0J6
1C6TU-6FL4L-HJ4U9-1KCEP-0KHND
1A6TA-F309K-HJ5A1-10CQH-3P2P0
1Z0E0-AY190-HJEV1-0R3G6-3KUM6
1A6WU-20L16-0J0K9-1117M-13HQF
JG4J8-AGL10-0J5Q0-0R8E6-0YU72
NC258-0E14Q-0J4Q9-081E6-C6AN0
5G2NR-4C18K-MJ9V1-083Q0-AYRN2
NA4M8-A6LDL-0J8P0-010Z4-0VR56
NA64H-46011-HJ9G1-183ZM-0KA52
4F09U-A539N-4J8T0-19AXP-CGK66
4U2HU-2L384-HJER8-1KC7H-2YKND
4Z218-0TH57-4J801-01956-1FH0D
MG4DH-A9306-0JEW9-0L376-0FA1A
0Y49R-DL21L-4J901-021Q2-1Z8H6
MU25H-8N3DK-MJ1M1-108GK-16HQ2
NF05A-F7284-4J979-0A8Z4-0YAM2
1G25A-4GL5M-4JEL0-0T8E4-8QHP6
JA29A-A7293-4J5F9-003X0-0PRN4
HZ2TH-4R3E0-0J0W9-0J254-93AJ2
4Z2XA-6W21N-0J519-0V0X0-CC0M4
1A6X0-D2290-0J5C9-1VC7M-CK0K0
5U09A-0HH4M-0JDC0-1927K-C3828
1Y0E0-4JL42-HJ9V1-1CC5M-9FAM4
JU2E8-6N1EJ-4J0Q8-0U9G4-A6RH0
HZ2J0-2UH50-MJ1D9-1H35P-AVH20
1Y49K-DN10Q-HJ5V1-1A3GM-A7A48
0C0R0-F919N-0JDJ1-1V15P-0FHP8
5G2DR-6GKE1-HJ138-1V0XP-APK6A
NA6XK-D0J10-4J0Z8-0AAQ6-820J4
JY48R-FQ390-HJEY0-023Z2-CY84D
5U0T0-AJ35M-0JDK9-03976-3GU18
1Y4R8-DMLDN-4JDV0-0UAG0-02874
4V6JH-0RKDL-4J001-1L17K-33AJF
1Z2T2-0ZL9M-MJ4V0-0V2E6-AYH5A
1Z4WR-0T087-4JD29-001Q2-8GR28
JG4EH-6FLE2-HJ9Z1-092E0-8LK4D
JU2H8-8MJ12-4J8Q9-0C1X0-13HH8
1Z48R-8WJ40-0J4V8-1T2ZK-93R1F
4V0HK-FT214-0J808-1295H-27RQ4
NZ60H-0RL00-4J5Y0-0JCQ4-AA84A
JG050-DAHEP-HJEG1-1VAQK-3VR18
4Z24K-8V01N-0J588-1JA7P-1QK1F
HZ4H2-FVLE6-4J4X8-19A7P-2PHHF
5Y048-8JJ55-HJ9U1-0KA50-1FHK0
5C0W2-F8J5J-MJ8V9-1ACNK-1AH02
1Y0R0-0P0E4-HJEC1-19CEK-3K03A
0V2EK-DRHEH-0J811-0R176-22HN6
5Y2X0-4LL8M-MJ8L8-0C976-0YRP2
MA0E0-402EP-HJ5E0-0RCQ2-A2UN2
MA4XA-80042-0J541-020N2-8AA14
HF6XH-A1380-HJ5N8-0U9N4-1GK5F
NG40H-D839N-MJEP8-1187K-3A0K4
MZ0EH-8T04J-MJD41-108NH-AG0P2
0G29K-090E5-0J900-021N6-37A44
4C0NA-6D206-MJD91-0VCG4-C2250
1A0NR-8029P-0J521-0K9Q4-22U32
5U05H-8K310-MJDL1-0U152-CLKJF
1F25A-612EP-HJ5A8-0K354-A6UK6
1V0NU-4WH0N-0J120-108GK-ACR30
MG05R-2C1EH-0J1N0-0V8Q4-CZR2F
0Z2XR-2RH8L-4J899-1UA7K-AC000
MA2NR-471D6-0J4W8-02CZ4-AQ06F
NU0J0-6P0D4-4JEF0-1LCXH-AKAQ0
MG4WK-8CH87-4J0E1-183NP-0YKJ8
HG2NA-4FHDH-HJE50-1R8ZP-8V2PF
NG652-FC0E1-4J870-1A07P-8QA2D
JV492-0RK1N-4J861-0H0N6-8327F
5V4DK-6U255-4J028-1H95P-9L80D
JU64U-DL09J-4J571-1V85M-9Q214
1Y6NA-DP255-4J931-0A0E0-9KA74
5Y41R-AQ08K-MJ520-039G2-3P2LF
1Z6TH-2T00M-HJDA0-00AN2-A7U74
NA2N8-04H83-0JE78-1A9GK-8286F
JV48A-6R1E1-HJ1Q1-08854-22HPD
MA05A-A7J43-0J9M1-0H0Z2-2Y814
5U20K-6Q2D6-4JD28-1H8XK-AP8Q4
NY2HU-6ML5K-MJ1Q9-1C1GH-ACH7F
JA4D0-62006-4J868-1H8QK-9LA4F
JC69H-8EJ4L-0J5Y0-10CZM-1FU5F
HV6WH-4RL04-4J4M8-129QM-CA86F
0G6XH-0GJDH-0J5J9-198XK-2PHP4
4V2R0-8W243-MJ590-0U2G4-83R70
4G05K-DC295-0JE11-1V8NM-0QK46
4A4E8-8100Q-HJ011-0A1Q4-06R38
1C200-FD004-0J8A1-13CGM-0CA20
MY2W8-FPL44-HJ0N1-0U8E4-8UH26
HV092-DX314-HJ4N1-089Z2-0GU58
4C69R-4EL0N-4J9T0-0V2X2-37U4A
NZ2HK-8W1E7-MJ8Q9-0V8E6-03242
NU250-4NK40-4JDF1-003X0-37H6D
HZ280-AY0EJ-0J841-028Z0-1K20A
MA2J2-84093-HJ858-0A1X6-CA074
NY6W0-DLKE5-HJ078-198QM-8PU64
MZ6MU-2Y005-0J5D9-022Z4-3V0K8
NV4EU-0WL5P-HJ0Y0-002Z2-9A040
4U4NU-AM101-MJ0R9-022G2-3C8N6
1U28U-FP05L-HJ830-1C9EK-8LR38
1Y4E0-ALL1Q-4JEV9-1U25K-CZKLD
NG0MK-88255-HJ9F8-1L2QM-33KPF
NA0WR-22254-HJ579-0T0N2-CVU36
NV4X8-4W05K-4J861-008G2-9AU66
5C2XH-2CK46-MJ821-1J15P-3YR44
0U0W2-0Q2DK-0J990-1VCGH-AYR26
1A4HA-D2293-4J1A9-1L2NM-1UAHA
JA0H8-44L10-MJ0Z9-1V2EH-0A0HA
MZ28U-6T35H-4J1M1-121NH-27HLA
JY2E0-6ML5J-0J1Z0-1V2GK-93R1A
4G45K-6EL1H-HJ5H9-038G0-96H6D
MY6NA-AK1D0-0J4W1-00CQ2-CKU70
HF698-4328J-MJ5D1-0KCN6-8YH72
NA0WU-27L43-0J8Y9-002G0-3ZHN4
0C45H-FFJ40-0JDT0-1ACZK-ALK60
NF0MH-A5246-0J5G9-182GK-168K6
JF64U-D524K-0J069-0H8G2-8FKJ8
JA0H8-F22DP-HJE79-1U85M-AUUL0
HC20K-4E00H-0J8D1-123EM-9FR5D
4C2HH-6DJ5M-HJ8J0-0V0G2-C2878
5A0H8-D2J1M-MJ9L1-1A1QK-0V2N8
0Z29K-DVH8Q-4JD08-1J0QH-8QK2F
4Y6T0-6H2D2-HJ480-1327H-3327F
5G4RK-2G2D5-MJ5A1-013Z4-2Z8NF
5C280-2AJ0P-MJEV8-093Q4-8KR58
5F4W0-8209H-4J038-1897K-3UA44
1F6M0-2508P-HJD20-021E4-17U5D
4G608-F9H8J-MJ018-180QM-96UH4
JF098-052E6-4J561-1H8XP-972N2
0A6MK-A6L96-HJ9R8-0KCZ6-0L2NA
MV2NA-AV216-4J1E0-0AA74-3YALF
0Z4JU-2R0E4-MJE88-032N2-1CU7D
HU052-4Q20H-MJE48-1L0ZM-8Y27D
1F4R8-D500N-MJ4A9-10AXM-36AL0
4G00R-8CHEK-4J489-03A54-CZ2M4
NG69A-2905P-MJ079-090Q2-CFKN4
JZ0MK-4ZH4Q-0J871-1T1GM-2Z208
5U6JK-AKL52-0JDV9-1A3QM-1V27F
HY6MU-2J18P-HJDW0-03C50-2F2HF
JG0RA-28JD0-4JEP9-1205P-CCAL6
MG4R8-0EJ82-MJDM8-1K1EK-06052
HG48K-FA014-HJ1E1-0V256-1KUJF
JU2H2-2P303-MJ8Y1-1HAZP-9UR1A
JA0XU-D11EM-MJ0P9-1H97K-97HJ0
5F61U-40KE3-HJ030-1R05K-C2U54
0G4D2-AGK5Q-0J418-1C0GK-AP034
5A29H-460EP-MJ839-081G4-CU2HF
1G000-8918L-0J5K0-111NP-868ND
0F0JR-80KDQ-4J898-1U2NM-2ARH0
MA20K-D7J1P-0J8M8-010G2-3Y8QF
HC21A-A83DL-HJ8W9-11CNP-8AAL4
HC4DK-4D30P-4J9M1-118EM-12A6F
HC6T0-AA01H-0J840-0H9Q2-0LAJ6
1G6NR-D8H5J-MJ9A8-01C50-8AU36
HY250-6M05K-HJE59-1C9EM-920KD
HY2JK-6Q10K-HJEX8-0T2E2-9Y202
1G4JH-2A340-HJDU0-0H2Q6-1U008
1G2WK-49K0N-MJ5C0-08C50-8F250
JY64U-6P3D2-0JEZ9-18AZM-2KR0F
HG2TA-8G35Q-MJ8W8-1LCXH-AQK3A
JC2W2-4ALE6-4J1Z0-0UCN0-0V21D
4C2WR-2AL8K-0JDT8-1TC5P-1LA4A
0F0MK-47LDQ-0J4T0-183GK-APRQA
4U0HA-4LHDN-0JD08-01170-9ZU58
HV2JR-DY0EN-0J4E1-1C3ZP-9L2PF
HZ6NK-6UH0P-4J948-0H176-9K870
JU6XH-0H100-HJDZ1-1C3NP-23U60
1C6H8-2A1DL-0J5U0-1J2NM-AUR54
4G0XH-28L0P-MJ8T1-0VCQ6-12HPF
0C6WR-8G00M-0JD08-019G2-0Z00F
MV6RH-AR2DM-0J151-1C17P-1ARKF
4F6N2-45H80-MJ409-1H0XP-2G066
1Z4XR-4ZH4M-HJ0A9-0L3Z6-8P8P8
JG0E8-8C1DP-4JEQ1-1V17P-8Y22A
5F2W2-A7J91-4J9L0-0R1G0-3P0L0
NG40U-4F20L-0J8G0-082Z6-AU2L0
HA0JR-63HE3-4J041-01176-3YHN2
MZ09K-2V106-0J5W1-1LA7H-AZK64
HZ2TU-0W017-0JD49-139GH-13U24
0Y002-FHH8M-0J108-121QP-3C04D
MU65R-FK34L-4J8W8-0HAQ2-CU22D
0Z05K-6R343-MJ9T0-0CAN0-82810
4V4R0-4RH5K-MJ999-1A3NM-2C8L6
NZ45U-8RJE4-HJDZ8-0V2Q2-33AQ2
HG2EA-D920L-0JD50-1R1NP-37H26
5G0DK-6G21K-4JEA9-122ZH-2YU6D
MY6XR-DLJ00-0J9N0-1907K-1QH16
JG00H-AGH9H-4J1G8-093Z2-1PUQ4
4V69K-8ZJ41-MJEH8-0L0G4-3Q864
JV4H0-8TL9K-0J4Y0-0LCQ2-CFRL8
MG4XR-ACH8N-HJ049-008N0-CYK66
MU00H-6H042-0J8E8-0R352-9286D
MC6DH-AGKD5-4J4D1-133EK-0P8NA
4A018-603D3-4J4J1-1A0NP-8CA0F
MF4JU-872DK-0J1E1-0RAZ4-CY81F
0A0X0-D6L0M-4J8R8-00CG0-3V0H4
MY218-8LK5L-4J1D1-1LCNM-2P21A
4A648-24111-HJ8J1-0U1X4-9AU56
1F61R-D7H81-4JE38-0U8G2-AQUN2
JU6EU-DL2DL-HJ4G0-1937P-3Y050
4U2JR-0L25Q-4J998-1U3NH-AYUMD
0G440-29186-4JER1-0LAQ0-0GKH8
MF4D8-D621P-0JE51-0R0G0-AKR04
MG6JA-AD151-HJ9W1-0KAZ6-938HA
NG6DU-2GH83-0J0G9-18CGK-1QHQD
JV28H-FY19K-HJ0Y8-12AGP-9KKQ2
0F0EK-83LD0-4J0H9-1L1QM-3P202
5C40A-0E193-0J9U9-11AXM-36H6A
JY2JR-FH25N-4J071-0R976-33KP0
MC28R-D8HDN-4JD41-1K15P-2A006
NF4ER-2531L-MJ4Y1-0H2G6-2G0P0
HV6RK-DRH4H-HJE58-0T052-CAAM4
5Z052-8Y196-HJDU9-00CE6-9V8QF
0U08K-DQ29P-MJ501-0H9E4-2YAK8
HF2ER-0620P-MJ140-009G2-CVU5D
JU250-0LL1J-4J9P8-1L05P-3PUQ4
4F0JR-A5284-HJ019-189ZH-AGUM2
JG41R-AFK4N-0J170-1V1XP-AL864
1Y0NH-DK151-MJDU0-00276-AKK58
MV05R-0VL0P-MJ5X0-1827M-8P0L2
HY2JK-DHLEM-0J8X0-0TAN6-92AMA
JA4JK-D2L5K-4JEY0-113QK-AV056
NF2MU-D0K1J-HJ870-0T1Q2-CAR68
1U2DR-8QJ4P-0J9K8-131GP-0Z2L6
5Z4RA-2TJ1J-0J5K0-1H9QH-97R36
0F6XR-63282-HJD11-098Q2-9ZUL6
MZ2EA-8W2D6-MJ050-191XM-8CAHF
HG40H-FEK5J-0J5D9-103GM-96H34
JA6N8-62H5H-MJ068-1297P-CL2Q0
JZ24R-AUL9J-0J4Y8-0H2N0-1UAP6
1V6N2-6Y0D4-HJEC0-1UCXH-ALU1A
NZ6H0-0U007-4JD69-0H976-0U2MF
NV0M0-FWK5M-4J871-0U0E2-1283D
MG6HA-0F3E6-MJ9W9-0H3G0-AUAK6
4Z040-DWH50-HJ091-1R3EH-12HLF
5F0WR-20103-MJ5K8-021Q2-ACA28
HG6WR-6G1DJ-HJDN8-1R0EM-CQUPD
HV2WU-8U29P-4J5D1-1127K-1UUH0
0Z68A-8ZHEJ-0J088-0KAE4-8YH20
0G0NK-AEL06-HJ1H9-0H8G0-9FAH2
HA08U-23287-MJ058-0U1N6-9QAKD
JC0TU-2F096-0J861-000X0-9LKNF
MC0H2-8EHD1-0J859-1R8XH-378M4
HU08R-2JJ91-HJ1M1-01976-AFRM8
5A0MA-D319L-MJ9K8-03872-8YHMA
HZ2RR-4WJ8N-MJ8W1-01AG6-A32L2
1G208-8CK84-4J829-109NH-3P256
1Z0XA-FR290-MJ839-0U1Q0-A3K36
NG012-8FL84-HJDP1-011X0-0LHKA
HC4WR-4F093-0JED0-113XH-3UK3F
MY440-2J3D6-4J1M1-0H074-AFHK2
MV4W2-DU1D2-4J9M0-1H17K-CKA5F
JV41R-0Y3E2-HJ1Z1-0C3Z4-AVUP6
MF2M2-63244-4J9E0-09CQ0-2ZH0A
MG01U-AG2E6-HJDE0-1R3GK-CQA4F
4Z212-6YJ83-4J5R9-1HAGM-0UAPA
JF6WR-02J9L-4JEY0-11CQK-CU05A
4G6WA-2A382-4J9T9-1UC5P-3UKMD
5C28U-29396-HJ8K8-0H0N2-1F2H6
0F4NK-A5011-HJ598-0ACX6-2GKP4
HU2HK-0H004-HJDE1-182QP-03H30
JG4H8-290D0-0J5G9-0A270-17R40
NC6TH-4GKD0-4J471-1U8EK-9QH00
HG09R-6EK9H-0J1E1-0T3G0-8GH3F
NC6E2-FFL83-HJ8Y0-0K2E0-CVRL0
5F0NK-82L83-0J5V1-1V2NH-CVKKF
NG6RK-0DJD2-MJ5Z1-08AX2-A2H52
0Y6N8-2LH50-0JD09-1K8NP-2ZA6D
1G44U-2F2DN-MJEA9-10AGM-1KK12
5C0JR-DGKDM-HJ539-0T1Z0-0QAL4
5A2HR-46082-0J431-1C1ZM-ALHP0
0Z69K-4WJ95-HJ4R8-0KCG4-1AR18
5C282-DF30Q-MJ0L1-1V1GP-3U2KD
1C4X0-DA09K-MJ8C0-183NM-CKHM0
1Z6H8-2Y084-0J1C1-19AXM-2UUHD
JY2J8-8QH4N-4J1G1-19CXH-1PHLF
JC2JK-AF187-MJ8Y8-123XM-0U84D
1U6XK-4QJD7-0J5K9-1J8EP-AZU0D
NG6NH-DFK07-4J060-109EM-1VAQ4
0A4R2-F335J-MJ5R9-10CQH-1PR1F
JZ6E0-FV0DK-MJ469-118QK-CY0QA
4Y0WR-2NKDM-0J089-022Z6-17U6A
NC2J2-082D5-HJ860-1J95K-9A832
NY2M0-DL104-4JEY8-032N2-9ZHQ6
0F0RK-27L9K-4J8T8-0VAX0-3Q8P2
NA0RU-A7LD0-MJ8Q0-0A9X0-0QR2D
1G2DK-AGK1N-4J520-120ZK-CZU3A
HV21R-AX183-MJ0X8-082Z6-9FK12
MU44R-0H11Q-0JDW0-032N6-8AUN6
5C6TR-68J91-HJDL1-181QK-23214
5U41K-0QH4L-4JDC1-1U2ZM-2Y02D
NC2RU-29L8K-4J0Z8-1UAQK-CFRMA
4F49H-F30D0-0J191-192QH-AP01D
0V61K-8UJ4M-MJ4R1-0H2N2-CLUP4
0V0R0-FX04J-0JD10-0U8E2-2GU1D
NZ40A-AWL14-4J8Y8-1L2ZM-AAK30
0F64U-27K1N-MJ109-120EP-1Z21A
1Z0RA-4X20M-4JD21-0H9G2-AF838
0U09A-DKJ5P-4J4H0-1H1NK-1KUK2
HU0J2-2PH4K-HJ0E1-1R2XK-ALH18
0C0W0-AA342-0J0R9-132NH-1KAL0
1C20K-2DL4Q-0J9L9-1V8EH-CAUJ4
MG28R-0801M-MJ9D1-133NK-9AA00
0A4N2-22K4H-4J000-1K1QM-CUAP6
0G4T0-D8300-MJ5T0-0VCQ4-03H5F
JU0M8-FHL1L-0JDQ8-1R17K-038KF
HG69R-2D3E2-0J9N8-1V0ZH-0CU4D
HF2XH-F7J8H-MJDX9-0RAZ4-AZA2A
MA4MA-0130J-MJ0W0-11A5H-17A74
4C2X8-2CH93-MJE99-0UCN2-AQAH6
1G2WH-2E316-4J9V0-0C2G4-36866
HV4JH-0U39N-4J5W9-1HC7P-CUH20
5Z6W2-ARL51-4J8K1-1H1NK-1CH70
JV41K-DYK9P-0JEF0-012E6-CLH02
HF012-40093-HJ0E1-0TC52-AA25D
1U6MH-2ML86-MJ0K9-021Z4-2AR08
5G64H-8GL5M-0J1V1-0UAX6-2PHHF
MA0MU-45HDK-4J140-1K8EP-86R40
MG4JA-AAL5L-4J9N9-0A170-AVKQ6
HU6D0-AM2DM-HJE59-190GM-0AR4D
HA2HU-84212-HJ5D9-112ZH-1CK0F
NA4J0-40K80-0JEF1-0LCN0-0301D
HY2XA-4LK1Q-4J8D8-1KC5M-3PRH6
5Y0T8-8K0E7-MJ939-1817K-0U2QA
1V0J8-DWKDL-MJDC1-0U3X6-8AHPD
1A4NU-F4203-0J038-0R8E4-A2RJF
4Y6RH-8N2D6-0J499-1TCZK-9FA5F
1A25U-0038Q-MJ1V0-09354-AARMA
5C48A-A83DP-HJ0L8-0A056-238KF
5Z2N8-DVKE7-MJ030-08870-2PK7F
HV4HU-2TJE0-MJ1M9-1H9QP-C7AMA
NA298-211EN-MJ5Y0-0K354-072M2
NA6NR-60L8H-0JEZ0-0VC52-932N4
NY40U-8H002-4JEF8-0LC74-83A78
JC68R-2C31M-HJ4Z0-1R37H-AZK04
0U01U-AH2D5-HJ908-0J952-92UN2
NC4X0-2E2DK-4J1G1-0C3Z4-CG0Q2
NA0RR-05L9N-HJ4Z8-1R2GK-368PF
1U2J8-8Q106-HJ0U8-0H2G4-CQAHD
JV6E8-FV255-0JEF1-0JC56-0P00A
4C4X2-8E0DP-MJ411-190XH-16H78
0Z2D2-2T00L-4JD81-03AQ4-3GR60
MF6R2-23055-MJ440-008Q4-CZUM6
JY4RH-0PK96-0JD61-1J0EP-2V042
NC6T0-28L4H-MJ0Y8-1J3NP-1CA3F
NG6W8-082D0-HJ060-0J954-9C072
5C012-FEH12-4J9A9-10AEK-A7U0A
MV4TA-2VJE5-MJEW0-13C5H-2YH24
MA2MU-611DP-0J4M1-0L050-8GAH6
MA29R-262DM-MJDE1-1C3GK-0UA66
HF618-00J81-HJ4N1-0U070-1CRL8
0F0JU-D301P-4JD89-1L3QM-0PAQD
0G6MR-DFK4Q-MJD00-0L8G4-3K2Q0
0U20U-6NH8J-MJ899-1UCGH-9FR2A
1A2X2-F1211-HJ038-0U8Q2-0GRH4
MA41R-D1J8J-HJ9W9-123NK-26UQA
HY48R-DJHEM-HJ950-0C8Q2-96AMF
4Z4NA-AYL5N-HJER9-11AEH-8L262
4F6N8-4210K-4J1H8-0L1Q6-9KU52
5G4E0-AEL14-4J8K1-019X6-3FAKF
MF0RU-831E3-HJDW8-12C7K-2QH18
MV2DR-4Z28N-0J448-0H1X6-2Y214
4Y65H-AJL97-HJ8R9-0LC76-07R4F
0Z6NK-6WL9H-MJ8T1-18AGP-13854
MU4M8-AQJD5-MJ1W9-10AEP-8YA4D
0V6JH-AU0E5-4J089-1L27K-1UA40
JZ6J2-0RHE6-0J9G9-083Q2-2AHM0
1Y2M8-DLJEL-0JDU9-103NP-2P0Q4
JY6NU-8L0E5-HJ4F9-0K274-2Y810
1G2RK-FEJ4P-4J1U8-0L2E2-0GAH0
NU6T8-8MJ91-HJ8Y8-0JAE4-03HN8
NZ6M0-0VH0N-0J9G9-1VA5K-1ZKNA
MZ2DU-2X35J-MJ1M0-0H9E2-C70M2
4A65A-27JD5-0J1T8-09AX2-AY2J4
5V65H-DW19H-4JEU0-113XP-3C8PA
0C6E0-FD104-HJ9T1-192ZP-8AH32
HA258-6015L-HJ1X9-1AC5H-3A2M6
JF4R8-63315-0J0Z0-08C56-CYH60
NY092-6QK0P-0J8F9-0K3X6-9PUQ4
4Y21R-4N1DJ-HJDR9-1H2GK-07U3A
JA690-42194-0J9Y0-1L3NK-2U072
MY0TR-DNL82-MJEM1-138XM-8G02D
JY6W8-8PK0H-HJE78-0C8E6-1KU20
HG4NA-6CJ8Q-MJ0X0-0AA76-AP2NF
JY6X8-8LH8K-MJ9F1-0KA72-CP2Q4
HG2NU-4CL5K-0J4X1-1A3QP-0Y87A
MG0D2-6F2DJ-MJD49-1H9ZH-2KKH2
MY4EU-8KJEJ-HJ4M8-109QM-8VU48
5Z0TK-0WKE6-0J0A9-0LAX2-CAHH4
MY6WH-6P000-4J1D9-0J3X4-8LHPF
4C49A-2D145-0J8T9-0U3Z6-92AN6
5A2W8-230EP-0J529-039Q0-0Q8H4
MC4XK-AEH0L-0J4E9-0V3X4-3GH2A
1Y658-4L082-HJ5C1-0A352-8P224
4Y0E0-AKHEQ-4J589-0H3Q6-AKUQF
MY61H-ANH10-0J450-0C8X0-A7038
0Y0TU-FJKDL-MJE98-1R3QH-A681F
1A6RA-84286-MJ1A0-03AZ2-A3AKA
0Y6RA-AL283-MJ410-1U0QH-1P8M8
JZ440-DY346-4J0P0-1J0ZP-AUUQD
MZ2DK-DT204-MJ0D0-013Q4-AF0LA
4Y6EU-8N2DK-0J580-0J2G2-C6224
HA280-8711P-MJ1N9-0R1E6-2ZRMA
NU2RR-FK39L-HJ5Q1-1915P-2U028
1V6R0-0WL15-4J0V1-1U2XK-932QA
MV2DK-DRL45-HJDN0-1A1NH-A3802
MF0MK-42HE0-MJ949-031N2-CV0JF
NG68K-FC3E2-0JEY8-1125M-2ZR32
MF4T0-0001P-MJ150-0R1N6-ACRP0
NG6W2-29141-0JDZ8-0T2Q4-AGKQF
NA2M2-25091-HJ469-100EM-37UL0
NF0EK-D6J97-MJ0Y8-0J3X6-8U234
4G0T2-D92E4-MJ190-1TCQM-0GANF
NY2E0-DJH91-MJ1F1-10C7K-A7U0F
1U2E2-FP0EN-0J4A8-12CXK-AKHP6
NA2MA-672DQ-0JDG9-0CCX2-AP030
5Y442-0Q116-4J8V0-1A2EK-2YH76
1C4MK-FCK0N-MJDA8-003N2-2P05D
HV6RU-8TK10-4JD50-1R85K-9GHQ4
0V21K-4Y057-4J090-09CZ4-1KH28
NY250-0J29P-HJ878-1C0NK-97A5A
5Z6W2-DR101-HJDK0-0L0Q2-82A4A
JV6T8-0YJDK-0J8Z9-0VCX6-0KAQF
1G2WK-FC29M-MJ838-1C1NM-0Z2Q6
MY00K-6MKD7-0JDE0-0TCE4-AA2KA
4Z4NK-AXK44-MJ989-01CZ2-8FRJ4
HA2JU-8010Q-HJEX8-1U37H-3A8MD
MF2E0-F2LD3-4J5X8-09C50-9L830
5A212-6329L-0JDC1-0VA72-CZ2M2
MY64K-FP30P-HJ0M0-020G6-1L8Q0
HU2D2-2LH9N-MJEE1-0AA52-1Y2N6
5G442-DFJ8L-MJEV9-1U2GK-3K2J6
MA6XA-07H42-4J841-0H0Z0-8YH2D
HF0R0-F4J8H-HJDW0-10AEM-13A02
0G2WR-8D25M-0J188-0KCG2-AAU50
NY2H8-FQ090-4J571-0A8Z0-2QUHF
4G65R-DG1EQ-HJDT9-08AE6-8Q2J2
0G680-28J91-HJ4T9-0R3Q2-9AH58
4V60A-0R116-0JDJ0-1995H-3AAL8
1A0XR-2110M-0J0V8-18CQM-368K0
1C440-6FK0P-4J4C8-08AG4-8VHJ4
4G6RU-D9151-4J5R9-112QM-870H4
NA6RA-D0056-4J460-1K8NP-CCHN6
5G4H8-6GJ16-HJ0U1-0LAX4-2PAHF
4C6T8-FF2DM-4JD80-1J2XK-8VUK8
MA0J0-83L51-0J4M1-0L074-1YUQF
4F298-A7HDM-HJ410-1C9GM-CYK20
NF2R2-64005-4JDF1-1LCZP-83R5D
5Y0TK-AN304-4JEV0-1CCEH-1FRM6
JU2TH-ANL9J-0J0Z8-0VCX0-0FH1F
1V25U-8R14K-0J0U9-133NM-CCA10
NC20K-89K8H-0JE79-1U17M-C7RK6
0F010-D20DN-MJ991-0C2Q0-3LAH0
JF6H0-073EL-HJ4Q8-1A9EH-8Q078
JA44H-D62EQ-MJE61-010X4-2U8M2
JF0D0-F1041-0J061-03972-96R54
1U6WU-DN245-4J5C9-1R2GM-16HL6
4Y01A-0Q091-MJ500-120ZM-2PH3D
MG00K-F9K0L-0J858-1U1QP-2FH62
MF60A-F034P-0J5X8-0UAQ2-32KQF
JV04A-4WJ95-0J4P0-038Z0-8CH2D
NU418-0J34H-MJ1Q8-080Q4-A6AP8
5V0RK-FW184-HJ1U1-112XH-13R4F
MV01R-6R087-4JDD0-02AQ4-13AL6
JF4JA-F139N-4J1Q9-0A1N0-AGRM6
JC09U-FAKEN-MJE68-031N2-9UUJD
4F20A-84H4J-4J581-133ZM-3CKM6
HV2WA-6UL1N-0J4X0-0C352-0U82A
MY208-4QK81-MJDD0-1KAZM-9Y054
1V6WH-4TH07-4J8C0-0UCN6-A6AJD
5U2WH-6K090-0JDA8-0HA52-9K04D
HY0MU-8LJ02-HJEN8-1T1NM-0Y0P6
1G2M0-D9046-4J8C9-1AA7K-A68N0
4A2JU-A6H14-4J599-19AZK-CVKM8
NC61H-2E34L-HJ0Y1-1K3XK-362QF
4V250-8YH4H-HJ880-0L3Z2-AU0LD
1V6XK-4Y11J-HJ0V1-1U3ZH-2K202
0Y6M2-0H3DH-0J4R9-11A7H-82HKF
NG44R-69307-MJ1Z9-19A7K-2F2N6
MZ05R-0VH9N-0J059-0C9Q0-8YUM2
MC6DH-FFJ02-HJ9N0-0V1G0-2LKL0
MG6EK-48092-HJ9E0-0VAN4-02A40
4U64A-FL10H-0JEH1-1H17H-2ZUQ0
NV488-8U38L-0J4Z1-1ACNM-0LRL4
4Y0X2-AM1E6-0J1T8-1R3GH-0387A
1U4W0-AKJ0J-0J9U1-01354-2KKN2
JG0RA-49L1J-0J1Q8-0A0N2-1701A
5Y2HR-6H15P-HJ0U9-0J274-AAKKA
4V4WK-AW0D6-MJ011-190XK-A3042
HV64U-FZJ8Q-0JEX1-0CCE2-3PUND
4A09R-22L81-4J4J1-180NM-1LUQ0
5Z69U-DW311-MJ8V9-0UCZ0-1AR50
4G69U-FCL1K-4J0H9-111NK-AQH66
4U4NK-4L20M-MJ508-008N2-3PKM6
1C6DU-8FL8P-4J8K0-039Z4-1LR26
MZ05A-6XK50-MJ0D0-0KAZ6-AFA7A
MY4EH-FP114-MJ4W8-112XK-1KK62
1Z0MR-8RHDJ-MJ429-0K074-0A0ND
5A24K-67H15-HJ0A8-12CZP-0Z242
4U4ER-6MK44-MJ891-1RCXM-02AM4
NZ0X0-2T242-MJ170-0U0Q0-1FH70
5V29A-4T35J-MJ4K8-0L872-A70K4
4Y4NH-FLK0L-HJ111-1A97H-CY2M4
0Y24A-4MJ9Q-4J9H0-0L1G6-3C010
5U48K-4N0D5-0J9A1-1H3ZM-0722F
5C6RK-AAK52-0J838-1U9NM-2L2HF
HC0RH-4AL53-0J4M9-03170-9K23D
MV0T0-2TH4L-HJED9-102QM-AGH74
MZ4TH-FYL5P-0J0N1-0V9X6-1U8K8
MU69A-8J2EK-0J8D8-1LC5M-270L4
NZ64U-0W31K-0JEY8-1LAGP-32H64
MY4WA-2K341-4J0M8-1J0QP-1LUL4
NG6RU-0FK5N-HJ568-020Z0-2V0K2
4V400-0X04N-MJ100-1J1ZP-37RN2
MA08U-80L13-HJ8N1-1U87P-8CK2F
MG6DR-AG11Q-4J0X9-0C2G0-AYK42
HA20H-A4251-4J5D8-11CGH-0CR10
HY41A-FHJ5L-MJ9X1-0UC50-122P8
MY0M8-2QL1M-HJ8X1-0A3X4-0ZH18
NG0DA-0C007-MJ1G0-0RA74-AQ8P0
5F6NU-21046-HJ531-0C1N4-06H02
4Y6WU-6HKD3-HJ418-1V87K-02U7D
0V0RA-FRKE1-4J418-1A95K-CAKMA
NA258-61315-HJ9Y1-0L3Q0-86R7F
4C0JA-FA1EQ-HJ0R1-12AQM-0LH0F
4U4M0-FHH46-MJ099-0T270-CA838
HU0WH-4K09K-MJ9E1-1A3QH-ALAP2
JZ6N0-FZ117-0J4Z9-1VAGM-3YU1F
HA6DA-66J97-4JEM9-0L9E2-0KU28
MC00H-48L42-MJ9M8-1085K-C2H2A
4Y08K-2LHE1-0J400-0J054-9Y234
HY0E2-DN044-MJ0D1-01CZ0-CGH6A
4V0DK-2V39M-HJ9J1-0C870-8PRHF
JG2EK-F9J93-4J4Y0-1KAQH-878LA
5A2H8-46J5N-MJ8U0-012G0-AUH3A
NU40H-AJ1E5-MJ0Y1-1LC5H-37HH2
1V68U-AU091-HJ1A9-1LAQM-3KK48
4U05A-0JK5P-0J081-1HCQK-17R1D
JV242-4U382-0J1Z9-09356-CUAK8
5A252-83017-0J939-1A95H-2YH22
JG0H0-DCK5K-MJ4G0-09CQ0-8PK40
HU6W8-0LH94-0J850-0U852-1PH26
0U0M2-AH116-0J5H9-131NM-1CH38
4A20R-2715N-4J9H9-001Z2-CYA76
4G04R-2C1EL-MJER8-1L2NK-2Q8H0
1U4XK-2N00M-MJ9C8-1R2XM-97H2A
MA6EK-2310Q-HJ5M8-0J150-9PR1A
4V2MR-AZJDL-4J5J9-1U9ZM-CY8K2
HG40A-DD34J-HJ8M0-0J8Z0-9C816
4U48R-4QH4P-4J890-0C3G6-AYUK0
5U01U-DKL4K-4JEU1-0KCN4-2UKN6
HU4XU-ANJ0K-0JEW1-0LAG2-87HHD
0Y29U-8QHDN-4J509-1H1GM-AQAP0
4A4TR-45K9K-HJ899-1U3EH-2FUK6
HG6NR-DD305-4JDW9-112EP-2AU5D
MC44A-AGJ5H-MJ4X9-0UAG6-8PA24
JZ6HH-FT18Q-0J0Y8-01AN0-0FU5D
5F0DR-8005N-HJ8A1-0K374-C3A18
NU450-AP0DJ-0J860-1H8GM-AV056
1F0RA-D5H57-MJDA9-0LAZ2-CFK04
1C28R-F829Q-4J021-1L9NM-32272
HV698-DT393-4J8N0-0T8Q2-AGA32
NF61A-8229P-HJ070-1R9NK-2V0J0
4Z04K-2V303-HJDH9-1387P-1YHL6
JA0N8-F2J92-MJ4P8-1H1NM-0VK70
0F0EA-24H5L-0J010-1V0EH-238J6
NG6WH-DC21N-MJ969-02874-0PHNF
HC2W2-8GH11-4J859-1V8ZP-CY0JA
NZ2WK-FWK54-MJ078-1U8XK-3AH5F
1C2M0-AGH4K-HJ8C9-0CAE0-AZU7F
1Y4NA-8K344-HJ0K9-110QP-AUA00
1F6J8-26240-4J139-0C0G4-1UAM6
NY45U-2QH42-4J170-1R1XK-AQA50
HY0WU-DM307-MJ8N1-0U1Z0-3CALF
MY6R2-0MKEH-4J1E0-1AAXK-93R4A
1V4HH-6T35P-MJ9U8-1025M-16826
1Z05R-6U3DP-HJ8V9-1RA5K-AK0J8
NC458-D8H44-MJ960-03070-93A76
HY2D0-6J087-MJD41-1L0QH-16220
4C6XR-4AJ93-0J5T9-1C37K-1UKMD
4U4DK-4QK0P-HJ589-1J3EM-APUQ6
NV6M8-AY28Q-4J4G8-0V2G4-AUR44
1U2J0-8PJ0H-MJ8U0-022G2-CUALF
0A408-62L12-0JDR1-00C54-2V0J4
MF2M8-D3087-0JD40-03850-AYR78
JV6EK-FV3DN-4JEZ9-08C52-CZRN2
NC60U-28K80-MJD61-1K05M-3AKH0
5G4EK-ACJEJ-4JEU1-1H37P-8PALF
HY6R8-FPL46-HJDN0-1V8GM-9VAQ8
5Y60R-0QJ92-4J5V8-1TCZM-AQU54
HA218-60157-HJDM1-02176-8A00A
MV25H-6WJ9H-MJ0M1-0K8Z6-83256
MU2TH-AKK5H-HJ949-1J17M-0KAP6
4Y0E2-4LJ92-MJDR1-02CQ6-9ZK5F
0G0EU-6DL12-4J0T8-1UCXP-C2AK0
JG44K-8910P-4JEY1-10AQK-0FU74
4V6M8-DX393-4J1H9-000E0-A78K0
4C6W8-8GJ8N-4J1T8-0CCX6-8YA3D
1C6R0-4D243-4J4C8-1A3EK-93KHD
NZ08H-2R350-HJ9Z8-1UAQP-3CAM0
HG68K-4D20K-MJ4D1-0K2Z6-13U02
MG01K-FF097-4J458-1T8XH-9VK2D
MV6D0-2YK07-HJ1D8-003G2-3V8H6
NY2D8-6K2EQ-0JEG8-1UCQH-CUKP2
5C09K-0AL0M-MJ0U1-1135K-9K01A
MA6J2-40282-0JDD8-1KCNK-3CKM2
0C6DH-2E3D0-MJ8J9-1V9ZM-9FR54
0Z4JH-6VJ5L-0J1H8-139NH-CPRN0
4A2RK-40H52-MJ411-0R156-9CKP2
JZ00R-8VK55-HJ961-0H0Q4-0YK24
JU6W0-AMH4J-MJ161-1L1EH-C28MA
4Y6MK-4J2EN-MJD88-00CQ2-268NF
0Y2EA-2J24Q-4J898-0VA74-C6A44
MU040-DL294-0J5E0-0V2N6-CZH6D
0F4DR-F4KD4-HJ818-0V8Z4-032Q0
NV280-6R045-MJ8G9-1AC7M-02R08
MV29U-DTL83-HJDX0-0RA52-A62M6
MV210-AZ202-MJDD9-033X4-0PKQ6
NY0MK-AL297-MJE71-1C8NM-AQAKD
4Y4HA-6Q1EN-HJDR9-1LAEH-9ZA32
5V4TK-0W1E5-0J8U0-0J3X2-02202
NZ6X2-AZHE6-0J8F9-1K2ZK-1YA1D
0G0DA-8G0D6-MJ188-1K2EM-3Q87D
JF2DH-043EL-MJ8Q1-1V9EH-02AQ8
NU4RH-FP1DM-0JEQ8-1C0XP-9U032
HZ4HH-8UJ0Q-MJ8X9-0U356-0V8M8
MG6JH-88J83-0J0X1-0AC76-C322F
JF6J8-A0K94-MJ968-020N2-CC864
0G2N0-8AKEN-HJ081-1L3QP-CKH38
1A490-41096-4J0C8-08256-37UND
4U6M0-DJHEQ-4J490-1C37M-96A36
MG0T0-DD257-4J5E1-0T2E4-12056
1A618-F31DP-4J1U1-1KC7H-9PUQ2
4C0DA-0FK5Q-HJ899-1VAEM-0VHKA
MF2MU-21JE3-0JDX1-1TAQK-27HJ8
4Y08R-AQ10P-4J9J1-1V8ZM-9P224
0V0RK-FTL40-4J9R8-02A52-16A00
MA4NA-D6351-HJ0M0-028G2-8V07D
NY49U-4QH11-0JE60-1K1XK-1PHMD
JZ000-DX1E1-0JEZ1-19AGK-CGALA
1A0J8-A1L43-HJ9L8-098Q6-36H10
NV0JA-AX29P-HJ979-091E6-AGR72
0G6E8-FGJ82-4JDT0-182XK-9Y058
1G4T8-AGLD0-MJ8L9-099E6-8YR78
JC0WH-DD192-4JDQ0-0T1G4-2A254
JV0MR-6Y30K-HJDP0-1K9XH-1KR1D
1V0XU-4XK97-0J528-0J0Z2-2GAJ4
5Z642-AT19H-0J9V0-1825M-AF26A
MA0HA-22K17-0JDD0-112QH-9KAQF
1A04A-62J8L-4J1V9-09374-CKU74
JY05K-DM05M-HJD70-0U1X2-03HQF
J
chmod ?
Pourquoi éviter chmod 777 ?Accorder un chmod 777 sur un dossier ou fichier d'application web/serveur signifie donner les droits complets de Lecture (4) + Écriture (2) + Exécution (1) à tout le monde (le propriétaire, le groupe, et n'importe quel utilisateur ou processus du système).Risque de piratage : Si ton application (par exemple en PHP, Node.js, ou Python) subit une faille d'injection ou d'upload, n'importe quel utilisateur malveillant peut modifier ou supprimer tes scripts serveur, exécuter des binaire malveillants, ou injecter du code dans ton projet.Refus de service : Des services comme OpenSSH ou certains serveurs web bloquent volontairement l'accès s'ils détectent des permissions trop ouvertes (777).Comprendre le système binaire des chiffres (chacun des 3 chiffres)Chaque chiffre représente un rôle dans l'ordre strict : Propriétaire | Groupe | Autres.Chaque permission de base possède une valeur numérique fixée :4 = Read (r) : Lire / afficher le contenu2 = Write (w) : Modifier / écrire / supprimer1 = Execute (x) : Exécuter un programme / traverser un dossierPour obtenir le chiffre final d'un rôle, on additionne simplement ses valeurs :7 (4 + 2 + 1) = Lecture, Écriture et Exécution (rwx)6 (4 + 2 + 0) = Lecture et Écriture (rw-)5 (4 + 0 + 1) = Lecture et Exécution (r-x)4 (4 + 0 + 0) = Lecture seule (r--)0 (0 + 0 + 0) = Aucun droit (---)Décodage des cas courantsCodeDécoupage (Propriétaire / Groupe / Autres)Signification7777 (rwx) / 7 (rwx) / 7 (rwx)Portes ouvertes à tout le monde. À bannir.7007 (rwx) / 0 (---) / 0 (---)Réservé exclusivement au propriétaire (ex: dossier .ssh).6006 (rw-) / 0 (---) / 0 (---)Lecture/écriture propriétaire seul (ex: fichier authorized_keys).7557 (rwx) / 5 (r-x) / 5 (r-x)Standard pour les dossiers d'un serveur web (ex: /var/www/html). Le serveur web peut lire/traverser, toi seul peux modifier.6446 (rw-) / 4 (r--) / 4 (r--)Standard pour les fichiers statiques (.html, .css, .png). Tout le monde lit, toi seul modifies.Bonne pratique pour une application serveurAu lieu de faire un 777 pour corriger une erreur d'accès (Permission Denied), la méthode propre consiste à changer le propriétaire du dossier avec chown pour l'attribuer à l'utilisateur du serveur web (ex: nginx, apache, ou www-data) :Bash# Attribuer le dossier web à l'utilisateur et au groupe appropriés
sudo chown -R labhak0:nginx /var/www/html
# Appliquer 755 aux dossiers et 644 aux fichiers
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
ED25519 ?
L'authentification par clé asymétrique ED25519
L'authentification par clé repose sur un principe cryptographique à deux clés mathématiquement liées :
La clé privée (sur l'Oppo A18) : Elle ne quitte jamais le téléphone. ConnectBot la garde en sécurité.
La clé publique (sur RHEL 9) : Elle est déposée sur le serveur. Elle peut être vue par n'importe qui sans compromettre la sécurité.
Comment se passe la connexion ?
ConnectBot contacte le serveur RHEL 9 en disant : "Je veux me connecter avec la clé rhel-lab-key."
Le serveur RHEL génère un message aléatoire (un "défi"), le chiffre avec ta clé publique, et le renvoie au téléphone.
ConnectBot déchiffre ce message à l'aide de ta clé privée et renvoie la preuve au serveur.
Le serveur vérifie la preuve : l'accès est accordé instantanément. Aucun mot de passe ne transite sur le réseau.
Pourquoi ED25519 ?
Inviolable : C'est l'un des algorithmes de cryptographie sur courbes elliptiques les plus sûrs et modernes actuellement disponibles dans OpenSSH.
Ultra-rapide : Les calculs sont légers, ce qui rend l'authentification quasi instantanée sur mobile.
Compact : La clé est très courte par rapport aux anciennes clés RSA (256 bits contre 4096 bits pour un niveau de sécurité supérieur).
2. Détail pas à pas des commandes exécutées
mkdir -p ~/.ssh && chmod 700 ~/.ssh
mkdir -p ~/.ssh : Crée le dossier caché .ssh dans ton répertoire personnel (/home/labhak0/), s'il n'existe pas déjà.
&& : Enchaîne la commande suivante uniquement si la première a réussi.
chmod 700 ~/.ssh : Restreint les permissions du dossier .ssh. Le code 700 signifie que seul toi (le propriétaire) as les droits de lire, écrire et exécuter dans ce dossier. OpenSSH refuse de fonctionner si ce dossier est accessible par d'autres utilisateurs.
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINdmmCaY1YcjREDiIXffigFonyH0caQ3WTyh2gzDE8Is rhel-lab-key" >> ~/.ssh/authorized_keys
echo "..." : Affiche la chaîne de texte contenant le type de clé (ssh-ed25519), l'empreinte publique et l'alias (rhel-lab-key).
>> : Redirige ce texte pour l'ajouter à la fin du fichier authorized_keys (sans écraser les clés existantes). C'est ce fichier que le service SSH consulte pour savoir qui est autorisé à se connecter.
chmod 600 ~/.ssh/authorized_keys
chmod 600 : Ajuste les permissions du fichier authorized_keys. Le code 600 donne les droits de lecture et écriture exclusivement à ton utilisateur. Si un autre utilisateur du système pouvait modifier ce fichier, il pourrait y injecter sa propre clé et pirater ton accès ; OpenSSH bloque donc l'accès si les permissions ne sont pas 600.
Tailscale PAM ?
Tailscale PAM (Privileged Access Management) est un module de contrôle et d'audit qui sécurise les accès à tes ressources critiques (bases de données PostgreSQL, SSH, RDP, applications web) directement au sein de ton réseau Tailnet. Il remplace la distribution manuelle de clés SSH ou d'identifiants de bases de données en s'appuyant sur l'identité SSO/MFA pour accorder des accès temporaires, ciblés et entièrement traçables.
À quoi ça sert concrètement ?
Contrôle d'accès granulaire (Zero Trust) : Accorder un accès à un service précis (ex: PostgreSQL sur le port 5432) sans donner accès à l'ensemble de la machine hôte.
Accès temporaires (Just-In-Time) : Autoriser un utilisateur ou un développeur à accéder à une ressource pendant une durée limitée (ex: 2 heures) avec validation préalable par un administrateur.
Masquage des identifiants (Credential-less Access) : L'utilisateur se connecte via son identité Tailscale sans connaître le mot de passe root de la VM ou l'utilisateur de la base de données.
Traçabilité et logs d'audit : Centralisation et enregistrement des sessions d'accès pour savoir exactement qui s'est connecté à quoi et quand.
Comment l'utiliser (Workflow général) :
1. Déclarer le service dans la console Tailscale
Depuis la console d'administration Tailscale (Admin Console > PAM), tu enregistres le service présent sur ta machine :
Exemple : Ta base PostgreSQL ou ton application Express sur ta VM RHEL (100.124.120.18).
2. Configurer les politiques d'accès (ACLs)
Dans le fichier de configuration des règles de ton Tailnet (tailnet.hujson), tu définis les autorisations :
Spécifier quel groupe ou utilisateur a le droit de se connecter à la ressource.
Ajouter si nécessaire une règle d'approbation (approval step) exigeant une validation administrative avant d'ouvrir le canal.
3. Se connecter côté utilisateur
L'utilisateur initie la connexion directement via Tailscale. Le client vérifie l'identité auprès du fournisseur d'identité (IdP), applique les politiques PAM et établit le tunnel sécurisé vers le service cible sans exposer la machine sous-jacente.
PM2?
[labhak0@labvmrhel01 ~]$ sudo npm install -g pm2
[sudo] password for labhak0:
added 77 packages in 22s
8 packages are looking for funding
run `npm fund` for details
[labhak0@labvmrhel01 ~]$ cd /home/labhak0/Documents/dev_projets/Familly-travel
[labhak0@labvmrhel01 Familly-travel]$ pm2 start index.js --name "family-tracker"
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime Edition
PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.
Start and Daemonize any application:
$ pm2 start app.js
Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4
Monitor in production:
$ pm2 monitor
Make pm2 auto-boot at server restart:
$ pm2 startup
To go further checkout:
http://pm2.io/
-------------
[PM2] Spawning PM2 daemon with pm2_home=/home/labhak0/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/labhak0/Documents/dev_projets/Familly-travel/index.js in fork_mode (1 instance)
[PM2] Done.
┌────┬───────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼───────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ family-tracker │ default │ 1.0.0 │ fork │ 28271 │ 0s │ 0 │ online │ 0% │ 30.9mb │ labhak0 │ disabled │
└────┴───────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[labhak0@labvmrhel01 Familly-travel]$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/labhak0/.pm2/dump.pm2
[labhak0@labvmrhel01 Familly-travel]$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
[labhak0@labvmrhel01 Familly-travel]$ sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
[sudo] password for labhak0:
-------------
__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__
Runtime Edition
PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.
Start and Daemonize any application:
$ pm2 start app.js
Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4
Monitor in production:
$ pm2 monitor
Make pm2 auto-boot at server restart:
$ pm2 startup
To go further checkout:
http://pm2.io/
-------------
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=labhak0
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/labhak0/.local/bin:/home/labhak0/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/labhak0/.pm2
PIDFile=/home/labhak0/.pm2/pm2.pid
Restart=on-failure
ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-labhak0.service
Command list
[ 'systemctl enable pm2-labhak0' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-labhak0.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-labhak0...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-labhak0.service → /etc/systemd/system/pm2-labhak0.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd
[labhak0@labvmrhel01 Familly-travel]$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/labhak0/.pm2/dump.pm2
[labhak0@labvmrhel01 Familly-travel]$ history
1 curl ifconfig.me
2 reboot now
3 sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/9/tailscale.repo
4 sudo dnf install -y tailscale
5 curl -fsSL https://tailscale.com/install.sh | sh
6 curl -k -O https://pkgs.tailscale.com/stable/rhel/9/x86_64/tailscale-1.76.6-1.x86_64.rpm
7 tar xvf tailscale_1.102.3_amd64.tgz
8 cd tailscale_1.102.3_amd64
9 sudo cp tailscale /usr/bin/
10 sudo cp tailscaled /usr/sbin/
11 sudo cp systemd/tailscaled.service /etc/systemd/system/
12 sudo systemctl daemon-reload
13 sudo systemctl enable --now tailscaled
14 sudo systemctl status tailscaled.service
15 sudo journalctl -xeu tailscaled.service -n 20
16 sudo restorecon -v /usr/sbin/tailscaled /usr/bin/tailscale
17 sudo cp systemd/tailscaled.defaults /etc/default/tailscaled
18 sudo systemctl restart tailscaled
19 sudo tailscale up
20 sudo firewall-cmd --permanent --add-service=ssh
21 sudo firewall-cmd --permanent --add-port=9090/tcp
22 sudo firewall-cmd --permanent --zone=trusted --add-interface=tailscale0
23 sudo firewall-cmd --reload
24 su - root
25 sudo firewall-cmd --reload
26 ip a
27 sudo firewall-cmd --add-service=openvpn --permanent
28 dnf update
29 sudo dnf update
30 sudo dnf update
31 ls
32 sudo systemctl status tailscaled
33 sudo systemctl status openvpn-server@server
34 sudo firewall-cmd --zone=trusted --add-interface=tailscale0 --permanent
35 sudo firewall-cmd --add-port=1194/udp --permanent
36 sudo firewall-cmd --reload
37 sudo systemctl status tailscaled
38 sudo tailscale up
39 sudo firewall-cmd --add-protocol=icmp --permanent
40 sudo firewall-cmd --reload
41 sudo npm install -g pm2
42 cd /home/labhak0/Documents/dev_projets/Familly-travel
43 pm2 start index.js --name "family-tracker"
44 pm2 save
45 pm2 startup
46 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
47 pm2 save
48 history
[labhak0@labvmrhel01 Familly-travel]$
sudo vs su - root in RHEL?
système RHEL (Red Hat Enterprise Linux). Voici l'éclaircissement sur la différence entre ton compte, le sudo et le compte root.
1. Ton compte vs Le compte Root
Sur Linux, il y a une hiérarchie très stricte :
hanifi : C'est ton utilisateur "normal". Tu as le droit de travailler dans ton dossier /home/hanifi, mais tu n'as pas le droit de modifier le système (installer des logiciels globaux, toucher aux fichiers de config de PostgreSQL, etc.).
root : C'est le "Super-Utilisateur" ou Dieu du système. Il a tous les droits, mais il est dangereux de l'utiliser tout le temps car une erreur de frappe peut supprimer tout le serveur.
2. Pourquoi sudo demande TON mot de passe ?
Quand tu as fait sudo npm install -g nodemon, le système t'a demandé le "password for hanifi".
Le concept : sudo veut dire "Substitute User Do". C'est comme si tu présentais ta carte d'identité pour prouver que c'est bien toi, l'utilisateur autorisé, qui demande à faire une action de Super-Utilisateur.
La sécurité : Tu n'as pas besoin de connaître le mot de passe du compte root. Red Hat vérifie juste que hanifi est dans la liste des "Sudoers" (les personnes de confiance). Une fois ton mot de passe validé, la commande s'exécute avec les privilèges de root.
3. La commande su - root
C'est une méthode différente :
su - root (Switch User) : Ici, tu quittes complètement ta session hanifi pour devenir le compte root. Le système te demandera alors le mot de passe de root, pas le tien.
Danger : On évite souvent cette méthode car une fois que tu es en root, tu peux tout casser sans que le système ne te demande jamais de confirmation.
Résumé de ta situation actuelle
Note importante : Dans ton test réussi, tu as utilisé sudo, ce qui est la meilleure pratique. Cela permet au système de garder une trace : "L'utilisateur hanifi a installé nodemon à telle heure". C'est plus propre pour ton support VPS.
How you would call the function upTop() from the command line ?
labhak0@PC-AITWAHNIZ:~/ic-projects/DBank-Hanifi-Algeria$ dfx canister call DBank-Hanifi-Algeria-backend topUp (enter)
This method requires arguments.
✔ Enter a float64 · 50000
Sending the following argument:
(50000.0 : float64)
Do you want to send this message? [y/N]
y
(350004.92771751207 : float64)
labhak0@PC-AITWAHNIZ:~/ic-projects/DBank-Hanifi-Algeria$
1. La "Banque" (Smart Contract)Dépôt réel : Tu peux injecter des fonds avec topUp.Retrait intelligent (withdraw) : Tu peux retirer ton argent. Le contrat calcule automatiquement tes intérêts gagnés jusqu'à la seconde près avant de te rendre le montant.Intérêts composés : Le calcul suit la formule $A = P(1+r)^t$ avec un taux annuel de 3,25%.2. La Sécurité (Authentification)Ton Principal ID (ajbag-...) est gravé dans le code comme administrateur unique.Grâce à shared(msg), personne d'autre que toi ne peut utiliser la fonction resetTimer. Ton identité blockchain est ton mot de passe.3. L'outil de Simulation (Marketing)Tu as une fonction simulatePastDeposit qui ne touche pas au solde réel.Elle permet de montrer à un client : "Si tu avais mis 1 000 000 DA en 2019, tu aurais aujourd'hui 1 247 939 DA". C'est l'argument de vente parfait.4. La Maîtrise du TempsOn a abandonné la modification manuelle de la date (qui créait des erreurs de synchronisation) pour utiliser le temps réel de la blockchain.Le système est maintenant "propre" et ne nécessite plus de bidouillage pour fonctionner.
import Time "mo:base/Time";
import Float "mo:base/Float";
import Principal "mo:base/Principal";
import Int "mo:base/Int";
persistent actor DBank {
var currentValue : Float = 0.0;
var lastUpdateTimestamp : Int = Time.now();
// Ta clé admin pour la sécurité
let admin : Principal = Principal.fromText("ajbag-mbh7x-n4xf1-rbrf4-vzkkw-ziree-3miu3-i4mlb-dziwb-zwnsc-eqe");
let annualRate : Float = 0.0325; // Taux de 3.25%
let secondsInYear : Float = 31_536_000.0;
// --- LOGIQUE INTERNE ---
private func applyInterest() {
let currentTime = Time.now();
let secondsElapsed = Float.fromInt((currentTime - lastUpdateTimestamp) / 1_000_000_000);
if (secondsElapsed > 0) {
let yearsElapsed = secondsElapsed / secondsInYear;
currentValue := currentValue * Float.pow(1.0 + annualRate, yearsElapsed);
lastUpdateTimestamp := currentTime;
};
};
// --- FONCTION DE RETRAIT (DRAW) ---
public func withdraw(amount : Float) : async Float {
applyInterest();
if (amount <= currentValue) {
currentValue -= amount;
};
return currentValue;
};
// --- FONCTION DE DÉPÔT ---
public func topUp(amount : Float) : async Float {
applyInterest();
currentValue += amount;
return currentValue;
};
// --- CONSULTATION SOLDE ---
public query func checkBalance() : async Float {
let currentTime = Time.now();
let secondsElapsed = Float.fromInt((currentTime - lastUpdateTimestamp) / 1_000_000_000);
let yearsElapsed = secondsElapsed / secondsInYear;
return currentValue * Float.pow(1.0 + annualRate, yearsElapsed);
};
// --- TEMPS ÉCOULÉ (DYNAMIQUE) ---
// Affiche le temps qui défile entre le dernier enregistrement et maintenant
public query func getElapsedTime() : async Text {
let now = Time.now();
let diff = (now - lastUpdateTimestamp) / 1_000_000_000;
let days = diff / 86_400;
let hours = (diff % 86_400) / 3_600;
let minutes = (diff % 3_600) / 60;
let seconds = diff % 60;
return "Temps écoulé : " #
Int.toText(days) # "j " #
Int.toText(hours) # "h " #
Int.toText(minutes) # "m " #
Int.toText(seconds) # "s";
};
// --- SIMULATION PAR DATE (POUR LES CLIENTS) ---
public query func simulatePastDeposit(amount : Float, year : Int, month : Int, day : Int) : async {
total : Float;
profit : Float;
yearsElapsed : Float;
} {
let currentTime = Time.now();
let yearSec = (year - 1970) * 31_536_000;
let monthSec = (month - 1) * 2_628_000;
let daySec = (day - 1) * 86_400;
let chosenTimestamp = (yearSec + monthSec + daySec) * 1_000_000_000;
let secondsDiff = Float.fromInt((currentTime - chosenTimestamp) / 1_000_000_000);
let yearsElapsed = secondsDiff / secondsInYear;
if (yearsElapsed > 0) {
let finalAmount = amount * Float.pow(1.0 + annualRate, yearsElapsed);
return {
total = finalAmount;
profit = finalAmount - amount;
yearsElapsed = yearsElapsed;
};
} else {
return { total = amount; profit = 0.0; yearsElapsed = 0.0 };
};
};
// --- RÉINITIALISATION (ADMIN SEULEMENT) ---
public shared (msg) func resetTimer() : async Text {
if (msg.caller != admin) { return "Accès refusé" };
applyInterest();
lastUpdateTimestamp := Time.now();
return "Compteur synchronisé avec l'heure réelle.";
};
};
ICP SDK (dfx) Motoko on WSL2(Ubuntu). Où s'affiche le Debug.print ?
Le message que tu as écrit à la ligne 12 s'affiche uniquement dans ton terminal, et seulement au moment du déploiement.
Regarde bien ton terminal où tu as lancé dfx start (celui de gauche sur image_263f36.png).
Si tu as beaucoup de lignes, le message est peut-être remonté.
Astuce : Pour le voir réapparaître, tape dfx deploy --upgrade-unchanged. Cela forcera le redémarrage de l'actor et déclenchera le Debug.print.
2. Pourquoi Candid n'affiche pas de date ?
Candid affiche uniquement les retours des fonctions que tu appelles manuellement. Ton Debug.print envoie une info au terminal "serveur", pas à l'interface web. import Time "mo:base/Time";
import Float "mo:base/Float";
import Debug "mo:base/Debug";
import Int "mo:base/Int";
persistent actor DBank {
// --- VARIABLES D'ÉTAT ---
var currentValue : Float = 0.0;
var lastUpdateTimestamp : Int = Time.now();
// Ce print s'affichera dans le terminal où tu as fait "dfx start" au déploiement
Debug.print("Initial lastUpdateTimestamp: " # Int.toText(lastUpdateTimestamp));
// Paramètres (3.25% par an)
let annualRate : Float = 0.0325;
let secondsInYear : Float = 31_536_000.0;
// --- LOGIQUE INTERNE ---
private func applyInterest() {
let currentTime = Time.now();
// On convertit la différence de nanosecondes en secondes (Float)
let secondsElapsed = Float.fromInt((currentTime - lastUpdateTimestamp) / 1_000_000_000);
if (secondsElapsed > 0) {
let yearsElapsed = secondsElapsed / secondsInYear;
// Formule des intérêts composés : A = P * (1 + r)^t
currentValue := currentValue * Float.pow(1.0 + annualRate, yearsElapsed);
lastUpdateTimestamp := currentTime;
};
};
// --- FONCTIONS PUBLIQUES (VISIBLES DANS CANDID) ---
public func topUp(amount : Float) : async Float {
applyInterest();
currentValue += amount;
return currentValue;
};
public func withdraw(amount : Float) : async Float {
applyInterest();
if (amount <= currentValue) {
currentValue -= amount;
} else {
Debug.print("Solde insuffisant !");
};
return currentValue;
};
public query func checkBalance() : async Float {
let currentTime = Time.now();
let secondsElapsed = Float.fromInt((currentTime - lastUpdateTimestamp) / 1_000_000_000);
let yearsElapsed = secondsElapsed / secondsInYear;
return currentValue * Float.pow(1.0 + annualRate, yearsElapsed);
};
// Nouvelle fonction pour voir la date stockée en nanosecondes
public query func getLastTimestamp() : async Int {
return lastUpdateTimestamp;
};
// --- OUTILS DE TEST ---
public func backdateLastUpdate(year : Int, month : Int, day : Int) : async Text {
// Calcul très simplifié du timestamp UNIX
let yearSec = (year - 1970) * 31_536_000;
let monthSec = (month - 1) * 2_628_000;
let daySec = (day - 1) * 86_400;
lastUpdateTimestamp := (yearSec + monthSec + daySec) * 1_000_000_000;
return "Date modifiée au " # Int.toText(day) # "/" # Int.toText(month) # "/" # Int.toText(year);
};
};
SUSDB, c’est quoi ?
SUSDB est la base de données utilisée par WSUS (Windows Server Update Services).
Elle contient toutes les métadonnées nécessaires pour gérer les mises à jour Windows au sein d’un réseau (catalogue des updates, états d’approbation, inventaire des machines, rapports, etc.).
Produit concerné : WSUS (intégré ou autonome, parfois sous-jacent à Microsoft Endpoint Configuration Manager/SCCM).
Moteurs possibles :
WID (Windows Internal Database) par défaut lors d’une installation WSUS simple.
SQL Server (Express/Standard/Enterprise) si vous choisissez/avez migré vers SQL.
Nom de la base : SUSDB
Fichiers (WID) : C:\Windows\WID\Data\SUSDB.mdf et SUSDB_log.ldf (emplacement par défaut).
Contenu des mises à jour (binaires .cab/.msu) : pas dans SUSDB — stockés dans le dossier WSUSContent (ex. C:\WSUS\WsusContent ou un volume dédié).WID (local uniquement) :
Server name = np:\\.\pipe\Microsoft##WID\tsql\query
Auth = Windows, SSMS Admin, ouvrir SSMS sur le serveur WSUS.
Security-SPP, c’est quoi ?
Security-SPP est le nom que vous voyez dans l’Observateur d’événements (Event Viewer) pour la plateforme de protection logicielle de Microsoft :
Service Windows : Software Protection
Nom de service : sppsvc
Processus : sppsvc.exe (situé dans C:\Windows\System32\)
Ce composant gère l’activation et les licences de Windows et de certains produits Microsoft (notamment via KMS/MAK/digital license). Il vérifie que votre système et vos applications sont correctement licenciés, stocke/valide les jetons de licence, et renouvelle les activations quand c’est nécessaire (ex. KMS).
What is the Compound Protocol?
Compound is a decentralized finance (DeFi) protocol built on the Ethereum blockchain that allows users to lend and borrow cryptocurrencies without using a traditional bank or intermediary.
It operates entirely through smart contracts, making it non-custodial, transparent, and permissionless.
What's hashing?
It's basically a mathematical formula that allows you to turn a message into a Hash code by passing the message through the hash function. But unlike encryption, a hash is a bunch of mumbo jumbo but if you use the same hash function, no matter what message you put in, you will always get an output with the same number of characters. If you hashed abc and 123 you might get this bottom result. 45dbaf8529d52c6 3bc4g3a4fb34j5b but they both have the same number of characters.
Movable-type.co.uk/scripts/sha256.html
What exactly is web3 anyways?
Well, it's basically the new internet. Web3. 0 describes the third iteration or the third sort of stage of the Web.
What is Web3?
Internet 1970.
WEB 1990
Web1.0 1995 it was a read-only web.
Web2.0 2005 became interactive this is your Facebook, your X, your Instagram... The user, interact with them, read and we can also write.
Web3.0 2018 applications on the Blockchain...and this is the dawn of Web 3.0 cryptocurrencies if you think you can predict the future, the this is probably the path to go down. For example, Helium is a really popular web3 project, which is providing wireless internet to out of the way places through individual people hosting their 5G network and owning cryptocurrency or PoolTogether, which lets you participate in no loss lotteries.
Qu’est-ce que pgAdmin 4 ?
Data Persistence: Interface web (accessible via navigateur) ou desktop pour PostgreSQL.
Permet de créer, modifier et gérer :
Bases de données
Tables, vues, fonctions
Utilisateurs et rôles
Inclut un éditeur SQL, un explorateur d’objets, et des outils de sauvegarde/restauration.
API avec Postman : c'est quoi ?
API (Application Programming Interface) : Un ensemble de règles permettant à deux applications de communiquer.
Postman : Un outil graphique qui sert à tester, envoyer et automatiser des requêtes HTTP vers une API (GET, POST, PUT, DELETE…).my Own API in khelaf-hanifi.com/dev-api
Qu’est-ce qu’Axios et à quoi sert-il dans le développement web, notamment avec React.js ?
Axios est une bibliothèque JavaScript qui sert à faire des requêtes HTTP (GET, POST, PUT, DELETE…) depuis le navigateur ou Node.js.
Comment reagir avec input AI ?
Un input clair, net et précis est le carburant de l’IA.( Clear, precise input is the fuel that powers AI. ).