:: TS_RustDeskInstall.cmd (TechDental Software RustDeskInstall.cmd) créé par Tlem33 :: Ce batch permet l'installation du logiciel RustDesk en mode client ou serveur avec :: des paramètres spécifiques (Utilisé principalement dans un système tel que le Trios Share). :: Il permet aussi l'installation d'un pilote d'écran virtuel et de plusieurs fonctions utiles. :: :: Version 2.0 du 05/09/2025 :: Voir l'historique des modifications à la fin de ce fichier. :: @Echo Off Mode Con:Cols=91 Lines=31 :: On demande les droits admin. Net.exe session 1>NUL 2>NUL || (Powershell start-process """%~dpnx0""" "%*" -verb RunAs & Exit /b 1) :: Déclaration de variables :: ================================================================================ :: Ajout des chemins vers System32, wbem et Powershell au path (au cas ou) SET "PATH=%PATH%;%WINDIR%\System32;%WINDIR%\System32\wbem;%WINDIR%\System32\WindowsPowerShell\v1.0" :: Version du script batch Set BatchVersion=2.0 :: Paramétrage du mot de passe Set FixedPasswd= :: Variables diverses Set InstallDir=%systemdrive%\Utilitaires\RustDesk\ Set VDDExeName=VirtualDisplayDriverInstaller.exe Set RustdeskSetupFile= Set RustdeskSetupPath= Set RustDesk_URL= Set VDDSetupFile= Set RustDeskExe= Set IsCDW=R :: URL du fichier d'installation et du pilote d'écran virtuel Set CMD_URL=https://www.techdental.fr/download/download/Telemaintenance/RustDeskInstall/TS_RustDeskInstall.cmd Set VDD_URL=https://www.techdental.fr/download/download/Telemaintenance/RustDeskInstall/VirtualDisplayDriverInstaller.exe :: ================================================================================ :: On se place dans le dossier du script PushD "%~DP0" :: On test si on peux écrire dans le dossier du script :: Si oui alors IsCDW = W sino IsCDW = R Call :CheckIfDirIsWritable "%~DP0" If %Errorlevel% EQU 0 Set IsCDW=W :: Nettoyage des fichiers temporaire Call :CleanTemp :: ============== :: Menu principal :: ============== :Main_Menu Set Menu=Principal Call :GetRustDeskExe Cls & Color 0F Call :Main_Title Echo Veuillez s‚lectionner l'action … r‚aliser : Echo. Echo 1 - D‚ployer Rustdesk sans installation Echo. Echo 2 - Installation en mode serveur\client Echo. Echo 3 - Installation du pilote d'‚cran Virtuel Echo. Echo 4 - Mise … jour d'une installation de Rustdesk Echo. Echo 5 - Menu des outils Echo. Echo 6 - Quitter Echo. Echo. Echo. Choice /C 123456 /M "Entrez votre choix :" If %Errorlevel% EQU 6 Goto :End If %Errorlevel% EQU 5 Goto :Tools_Menu If %Errorlevel% EQU 4 Call :Server_Update If %Errorlevel% EQU 3 Call :VDD_Install If %Errorlevel% EQU 2 Call :Server_Install If %Errorlevel% EQU 1 Call :Client_Install Goto :Main_Menu :: =============== :: Menu des Outils :: =============== :Tools_Menu Set Menu=des Outils Call :GetRustDeskExe Cls & Color 0F Call :Main_Title Echo Veuillez s‚lectionner l'action … r‚aliser : Echo. Echo 1 - Cr‚ation d'un raccourci vers un serveur RustDesk Echo. Echo 2 - T‚l‚chargement du dernier Rustdesk dans %InstallDir% Echo. Echo 3 - G‚n‚rer un nouvel ID Rustdesk (pour le cas des machines clon‚es) Echo. Echo 4 - D‚sinstallation et nettoyage Echo. Echo 5 - Menu principal Echo. Echo 6 - Quitter Echo. Echo. Echo. Choice /C 123456 /M "Entrez votre choix :" If %Errorlevel% EQU 6 Goto :End If %Errorlevel% EQU 5 Goto :Main_Menu If %Errorlevel% EQU 4 Call :Uninstall If %Errorlevel% EQU 3 Goto :Get_New_ID If %Errorlevel% EQU 2 Call :DownloadLastRustdesk "C:\Utilitaires\Rustdesk" & Goto :Tools_Menu If %Errorlevel% EQU 1 Call :Server_Link Goto :Tools_Menu :: ================================== :: Installation en mode client simple :: ================================== :Client_Install Cls Echo Installation de RustDesk en mode client simple. Veuillez patienter. :: Récupération de l'installateur Call :GetRustdeskSetupFile :: Copie de l'installateur Rustdesk sous la forme "rustdesk-x.x.x-x86_64.exe" Copy "%RustdeskSetupPath%%RustdeskSetupFile%" "%InstallDir%" /Y >Nul 2>Nul Call :CreateDesktopLink "Rustdesk" "%InstallDir%%RustdeskSetupFile%" :: Ecriture du fichier de configuration et démarrage de RustDesk Client Call :WriteClientConfig Start "" "%RustdeskSetupPath%%RustdeskSetupFile%" :: Message de fin Echo. & Echo Installation en mode client termin‚e. Timeout 3 Goto :Eof :: ============================ :: Installation en mode serveur :: ============================ :Server_Install Cls Set Passwd= :: Désinstalle toute version précédente (Client/Serveur) Call :Uninstall :: Récupération de l'installateur Call :GetRustdeskSetupFile :: Si un mot de passe permanent est inscrit en dur dans le script, on passe à la suite de l'installation If Defined FixedPasswd ( Set "Passwd=%FixedPasswd%" Echo. & Echo Utilisation du mot de passe pr‚d‚finis ) Else ( :: Demande de la saisie du mot de passe If "%Passwd%" EQU "" Call :SetPassword ) :: Si pas de mot de passe, on retourne au menu principal If "%Passwd%" EQU "" Goto :Main_Menu :: Installation silentieuse de RustDesk et suppression du fichier temporaire :: Notes : :: --password can be used to set a permanent password. :: --get-id can be used to retrieve the ID. :: --set-id can be used to set an ID, please note IDs should start with a letter. :: --silent-install can be used to install RustDesk silently :: --option arg1 arg2 to configure options :: --install-service to install service Echo. & Echo Installation de Rustdesk en mode serveur cours. Veuillez patienter. "%RustdeskSetupPath%%RustdeskSetupFile%" --silent-install Ping -n 5 127.0.0.1>Nul :: Vérifie si Rustdesk est installé. Call :CheckRustdeskInstalled Set RustDeskExe="%ProgramFiles%\RustDesk\RustDesk.exe" :: Paramètrage personnalisés Echo ParamŠtrage personnalis‚ de RustDesk... %RustDeskExe% --option direct-server Y %RustDeskExe% --option verification-method use-both-passwords %RustDeskExe% --option temporary-password-length 10 %RustDeskExe% --option allow-auto-disconnect Y %RustDeskExe% --option auto-disconnect-timeout 60 :: Paramètrage configuration client initiale Call :WriteClientConfig :: Message de fin Echo. Echo. Echo. Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» Echo º Pour utiliser RustDesk en milieu professionnel interne, º Echo º vous devez utiliser une connexion par IP ou nom NETBIOS. º Echo º º Echo º Utilisez l'option de Cr‚ation d'un raccourcis vers un serveur º Echo º RustDesk pour ˆtre en conformit‚ avec la licence d'utilisation. º Echo º https://rustdesk.com/terms/ º Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Echo. Echo. :: Mise en place du mot de passe Echo Mise en place du mot de passe "%Passwd%" %RustDeskExe% --password %Passwd% :: Récupération et affichage de l'ID For /F "Delims=" %%i In ('"%RustDeskExe%" --get-id ^| more') Do Set ID=%%i Echo ID Rustdesk = %ID% Echo.&Echo.&Echo. Echo Installation de RustDesk en mode serveur termin‚. Echo Appuyez sur une touche pour revenir au menu. & Pause>Nul Goto :Eof :: ================================ :: Installation en mode mise à jour :: ================================ :Server_Update Cls :: Vérifie si Rustdesk est installé. Call :CheckRustdeskInstalled :: Récupération de l'installateur Call :GetRustdeskSetupFile Echo. Echo. Echo Mise … jour de RustDesk. Veuillez patienter. Echo. :: Installation/Mise a jour "%RustdeskSetupPath%%RustdeskSetupFile%" --silent-install :: Message de fin Echo. Echo Mise … jour de RustDesk termin‚e. Echo Appuyez sur une touche pour revenir au menu. Pause>Nul Goto :Eof :: ====================================== :: Installation du pilote d'écran virtuel :: ====================================== :VDD_Install Set VDDSetupFile=%~DP0%VirtualDisplayDriverInstaller.exe :: Si l'installateur n'est pas présent localement, on le télécharge dans le dossier Temp If Not Exist "%VDDSetupFile%" ( Call :Download_File "%Temp%" "%VDDExeName%" %VDD_URL% ) :: On essaie de déplacer le fichier localement Move /Y "%Temp%\%VDDExeName%" "%VDDSetupFile%" >Nul 2>Nul :: Lance l'installation de l'écran virtuel If Exist "%VDDSetupFile%" ( Start "" "%VDDSetupFile%" ) Else ( Start "" "%Temp%\%VDDExeName%" ) Goto :Eof :: ================================ :: Vérifie si rustdesk est installé :: ================================ :CheckRustdeskInstalled :: Si le programme n'est pas trouvé => Erreur If Not Exist "%ProgramFiles%\RustDesk\RustDesk.exe" ( Color 0C Cls Echo. Echo ERREUR : "%ProgramFiles%\RustDesk\RustDesk.exe" n'existe pas. Echo Le programme RustDesk ne s'est pas install‚ correctement. Echo Impossible de continuer. Echo. Echo. Echo Appuyez sur une touche pour revenir au menu & Pause>Nul Goto :Main_Menu ) Goto :Eof :: ========================================== :: Vérifie la connexion vers un site Internet :: ========================================== :CheckInternetConnexion Set Site2Test=gitub.com Set Ip2Test=172.233.219.78 Set RetIp= :: Test de la connexion vers le site Internet "Site2Test" :: Version Powershell => tnc gitub.com -port 443 For /F "Tokens=2 Delims=: " %%A In ('Nslookup %Site2Test% 2^>NUL^|Find "%Ip2Test%"') Do Set RetIp=%%A If "%RetIp%" EQU "" ( Cls Echo Pas de connexion vers %Site2Test%. Echo Utilisation du programme d'installation local si existant. Ping -n 2 127.0.0.1>Nul Exit /B 1 ) Exit /B 0 :: ================================================ :: Vérifie si le dossier est accessible en écriture :: ================================================ :: Vérifie si le dossier donné en paramètre est accessible en écriture. :: Si le dossier n'existe pas, il sera créé. :CheckIfDirIsWritable :CheckIfDirIsWritableLoop Set TmpDir="%~1\~TestDir%random%" If /I Exist %TmpDir% Goto CheckIfDirIsWritableLoop MD %TmpDir%>Nul 2>Nul If %Errorlevel% EQU 1 Exit /B 1 RD %TmpDir%>NUL :: ===================================================== :: Recherche d'un exécutable Rustdesk existant sur le PC :: ===================================================== :GetRustDeskExe Set RustDeskExe= :: Recherche dans le dossier Program Files\RustDesk If Exist "%ProgramFiles%\RustDesk\rustdesk.exe" ( Set RustDeskExe=%ProgramFiles%\RustDesk\rustdesk.exe Goto :EoF ) :: Recherche dans le dossier %UserProfile%\AppData\local\RustDesk If Exist "%UserProfile%\AppData\local\RustDesk\RustDesk\rustdesk.exe" ( Set RustDeskExe=%UserProfile%\AppData\local\RustDesk\RustDesk\rustdesk.exe Goto :EoF ) :: Recherche dans le dossier %InstallDir% If Exist "%InstallDir%\rustdesk-*x86_64.exe" ( For /F "Tokens=* Delims=" %%a In ('Dir /B "%InstallDir%rustdesk-*x86_64.exe"') Do (Set RustDeskExe=%InstallDir%%%a) Exit /B 1 ) Exit /B 0 :: ====================================== :: Récupération du fichier d'installation :: ====================================== :GetRustdeskSetupFile Set RustDeskSetupPath= Set RustdeskSetupFile= Set LastExeName= Set LastVersion= Call :CheckIfDirIsWritable "%~DP0" If %Errorlevel% EQU 0 ( Set RustDeskSetupPath=%~DP0 ) Else ( Set RustDeskSetupPath=%InstallDir% ) :: Télécharge la dernière version de Rustdesk. Sinon utilise la version locale si existante Call :DownloadLastRustdesk "%RustDeskSetupPath%" If %Errorlevel% EQU 1 ( For /F "Tokens=1 Delims=" %%a In ('Dir /B "%~DP0rustdesk-*x86_64.exe"') Do (Set RustdeskSetupFile=%%a&Set RustdeskSetupPath=%~DP0) ) :: Si pas de fichier d'installation, alors ERREUR. If "%RustdeskSetupFile%" EQU "" ( Color 0C Echo. Echo Erreur - Impossible de d‚terminer le programme d'installation de RustDesk Echo. Echo T‚l‚chargez manuellement le programme d'installation et placez le dans Echo le mˆme dossier que ce batch. Le nom du programme doit avoir la forme : Echo. Echo rustdesk-x.x.x-x86_64.exe Echo. Echo Rendez-vous sur le site : https://rustdesk.com/download Echo. Echo. Echo Appuyez sur une touche pour revenir au menu. Pause>Nul Goto :Main_Menu ) Goto :Eof :: =================================================================== :: Recherche de la dernière version du fichier d'installation Rustdesk :: =================================================================== :GetRustDeskLastVersionInfos Set TempFile="%temp%\RustDeskTmpFile.txt" Set LastVersion= :: Récupère les dernières informations api pour RustDesk depuis le site Github Curl -ks https://api.github.com/repos/rustdesk/rustdesk/releases/latest>%TempFile% :: Récupère le lien de téléchargement du dernier exécutable :: %RustDesk_URL% For /F "Tokens=1,* Delims=:" %%a In ('Type %TempFile% ^| Findstr "browser_download_url" ^| Findstr "x86_64.exe"') Do (Set RustDesk_URL=%%b) If "%RustDesk_URL%" EQU "" Goto :Eof :: Récupère le dernier numéro de version de RustDesk :: %LastVersion% For /F "Tokens=1,* Delims=:" %%a In ('Type %TempFile% ^| Findstr "tag_name"') Do (Set LastVersion=%%b) Set LastVersion=%LastVersion:~2,-2% :: Récupère le nom du dernier exécutale pour Windows :: %LastExeName% For /F "Tokens=1,* Delims=:" %%a In ('Type %TempFile% ^| Findstr /I /R /C:"name.*x86_64.exe"') Do (Set LastExeName=%%b) Set LastExeName=%LastExeName:~2,-2% :: Supression du fichier temporaire Del /F %TempFile% Goto :Eof :: =============== :: Changement d'ID :: =============== :Get_New_ID Cls :: Erreur : Pas d'exécutable Rustdesk trouvé If "%RustDeskExe%" EQU "" ( Color 0C Echo. Echo Erreur - Pour utiliser cette fonction, Rustdesk doit ˆtre install‚ sur cette machine Echo. Echo. Echo Appuyez sur une touche pour revenir au menu. Pause>Nul Goto :Eof ) :: Affiche l'ID actuel For /F "Delims=" %%i In ('"%RustDeskExe%" --get-id ^| more') Do Set ID=%%i Echo Echo Votre ID actuel : %ID% :: Arrêt du service et fermeture de l'executable SC Stop Rustdesk >Nul 2>Nul Taskkill /IM Rustdesk.exe /F >Nul 2>Nul :: Modification de la première ligne du fichier RustDesk.toml Set RustDesktoml="%UserProfile%\AppData\Roaming\RustDesk\config\RustDesk.toml" If Exist %RustDesktoml% ( ( Echo enc_id = '0' For /F "Skip=1 Tokens=* delims=" %%a In ('Type %RustDesktoml%') Do Echo %%a )>%RustDesktoml% ) :: Modification de la première ligne du fichier RustDesk.toml Set RustDesktoml="%Windir%\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml" If Exist %RustDesktoml% ( ( Echo enc_id = '0' For /F "Skip=1 Tokens=* delims=" %%a In ('Type %RustDesktoml%') Do Echo %%a )>%RustDesktoml% ) :: Démarrage du service SC Start RustDesk >Nul 2>Nul If Exist "%ProgramFiles%\RustDesk\rustdesk.exe" Start "" "%ProgramFiles%\RustDesk\rustdesk.exe" --tray >Nul 2>Nul :: Affiche le nouvel ID For /F "Delims=" %%i In ('"%RustDeskExe%" --get-id ^| more') Do Set ID=%%i Echo Echo Votre nouvel ID : %ID% Timeout /T 10 Goto :Eof :: ================================== :: Téléchargement du dernier Rustdesk :: ================================== :DownloadLastRustdesk Set RustDeskSetupPath=%~1 Set RustdeskSetupFile=%~2 Set LastExeName= Set LastVersion= Set RustDesk_URL= Call :CheckInternetConnexion If %Errorlevel% EQU 1 Exit /B 1 Echo. Echo R‚cup‚ration de la derniŠre version de Rustdesk :: Récupère le nom de la dernière version de RustDesk Call :GetRustDeskLastVersionInfos If "%RustdeskSetupFile%" EQU "" Set RustdeskSetupFile=%LastExeName% :: Suppression des anciennes version For /F "Tokens=1 Delims=" %%a In ('Dir /B "%RustDeskSetupPath%\rustdesk-*x86_64.exe"') Do ( If "%%a" NEQ "%LastExeName%" Del /F /Q "%RustDeskSetupPath%\%%a" ) :: Si la dernière version de Rustdesk n'existe pas dans le dossier, on le télécharge If /I Not Exist "%RustDeskSetupPath%\%RustdeskSetupFile%" ( Call :Download_File "%RustDeskSetupPath%" "%RustdeskSetupFile%" %RustDesk_URL% ) Else ( Echo Vous avez d‚j… la derniŠre version. Ping -n 2 127.0.0.1>Nul ) Goto :Eof :: ============================================= :: Téléchargement fichier dans :: ============================================= :Download_File Set DownloadDestination=%~1 Set FileName=%~2 Set FileURL=%~3 :: Crée le dossier de destination si nécessaire If Not Exist "%DownloadDestination%" MD "%DownloadDestination%">Nul :: Téléchargement du pilote d'écran virtuel Echo T‚l‚chargement du fichier %FileName% Curl -k -L -o "%DownloadDestination%\%FileName%" "%FileURL%" Echo. :: S'il y a eu problème de téléchargement If Not Exist "%DownloadDestination%\%FileName%" ( Color 0C Echo. Echo Erreur - Impossible de r‚cup‚rer le fichier %FileName% Echo. Echo T‚l‚chargez le manuellement sur le lien : Echo. Echo %FileURL% Echo. Echo. Echo. Echo Appuyez sur une touche pour revenir au menu principal Pause>Nul Goto :Main_Menu ) :: On indique le chemin et le nom du fichier téléchargé Set DownloadedFile="%DownloadDestination%\%FileName%" Goto :Eof :: ================================= :: Demande du mot de passe permanent :: ================================= :SetPassword Set Count=0 :: Demande du mot de passe Echo. Echo Choix du mot de passe : Echo Ne pas utiliser les caractŠres sp‚ciaux : ^< ^> ^^ ^& " ( ) Echo Longueur minimale 8 caractŠres Echo. Set /P Passwd=Entrez le mot de passe If "%Passwd%" EQU "" Goto :SetPassword Set TestPass=%Passwd% :: Test la longueur du mot de passe :SetPasswordLoop If Defined TestPass (Set "TestPass=%TestPass:~1%" & Set /A Count+ = 1 & Goto SetPasswordLoop) If %Count% LSS 8 ( Color 0C Echo. Echo 8 CaractŠre minimum !!! Echo. Echo Appuyez sur une touche pour recommencer Pause>Nul Color 0F Cls Set Passwd= Goto :SetPassword ) :: Vérification du mot de passe :SetPasswordConfirm Set /P ConfirmPasswd=Confirmez le mot de passe If "%ConfirmPasswd%" EQU "" Goto :SetPasswordConfirm If "%ConfirmPasswd%" NEQ "%Passwd%" ( Echo Erreur lors de la v‚rification du mot de passe Echo Appuyez sur une touche pour recommencer. Pause>Nul CLS & Goto :SetPassword ) Goto :Eof :: ======================================== :: Désinstallation et nettoyage de Rustdesk :: ======================================== :Uninstall Echo. Echo D‚sinstallation et nettoyage de RustDesk (si existant) :: Désinstallation de RustDesk If Exist "%ProgramFiles%\RustDesk\RustDesk.exe" Start " " /Wait "%ProgramFiles%\RustDesk\RustDesk.exe" --uninstall :: Suppression de fichiers additionnels If Exist "%Programfiles%\RustDesk" RMDIR /S /Q "%Programfiles%\RustDesk" If Exist "%PUBLIC%\Desktop\RustDesk.lnk" Del /F "C:\Users\Public\Desktop\RustDesk.lnk" If Exist "%UserProfile%\AppData\local\RustDesk" RMDIR /S /Q "%UserProfile%\AppData\local\RustDesk" If Exist "%UserProfile%\AppData\Roaming\RustDesk" RMDIR /S /Q "%UserProfile%\AppData\Roaming\RustDesk" If Exist "%Windir%\ServiceProfiles\LocalService\AppData\Roaming\RustDesk" RMDIR /S /Q "%Windir%\ServiceProfiles\LocalService\AppData\Roaming\RustDesk" :: Récupération du véritable chemin vers le dossier Bureau de l'utilisateur For /F "Usebackq Tokens=1,2,*" %%B In (`Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) Do Set UserDesktop=%%D If Exist "%UserDesktop%\RustDesk.lnk" Del /F "%UserDesktop%\RustDesk.lnk" Echo D‚sinstallation et nettoyage termin‚ Ping -n 2 127.0.0.1>Nul Goto :Eof :: =========================================== :: Ecriture du fichier de configuration client :: =========================================== :WriteClientConfig Echo. Echo Ecriture du fichier de configuration client :: Ecriture du fichier de configuration initiale personnalisée If Not Exist "%UserProfile%\AppData\Roaming\RustDesk\config\" MD "%UserProfile%\AppData\Roaming\RustDesk\config\" If Not Exist "%Temp%\ini.vbs" Call :Func_Write_IniVBS :: Ecriture des paramètres dans RustDesk_default.toml Set ConfigFile="%UserProfile%\AppData\Roaming\RustDesk\config\RustDesk_default.toml" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "i444" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "view_style" "'adaptive'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "collapse_toolbar" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "enable_file_transfer" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "show_remote_cursor" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "zoom-cursor" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "image_quality" "'best'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "follow_remote_window" "'Y'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "follow_remote_cursor" "'Y'" :: Ecriture des paramètres dans RustDesk_local.toml Set ConfigFile="%UserProfile%\AppData\Roaming\RustDesk\config\RustDesk_local.toml" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "theme" "'dark'" Cscript.exe /nologo "%Temp%\ini.vbs" %ConfigFile% "options" "lang" "'fr'" Echo Ecriture du fichier de configuration client termin‚e Ping -n 2 127.0.0.1>Nul Goto :Eof :: ============== :: Titre du batch :: ============== :Main_Title Color 0F Echo R‚pertoire courant (%IsCDW%) : %~DP0 Echo. Echo. Echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» Echo º TechDental Software º Echo º º Echo º RustDeskInstall v%BatchVersion% º Echo º º Echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ Echo. Echo Menu %Menu% Echo. Echo. Goto :Eof :: ========================== :: Fonction CreateDesktopLink :: ========================== :: :: Examples :: Call :CreateDesktopLink "MyApp" "D:\Dirs\MyApp.exe" :: Call :CreateDesktopLink "MyApp" "D:\Dirs\MyApp.exe" "D:\Dirs\MyApp.ico" "Description of MyApp" :: Call :CreateDesktopLink "MyApp" "D:\Dirs\MyApp.exe" "D:\Dirs\MyApp.exe" "Description of MyApp" :: Call :CreateDesktopLink "MyApp" "D:\Dirs\MyApp.exe" "D:\Dirs\MyApp.exe,3" "Description of MyApp" :: :CreateDesktopLink LinkName TargetPath IconFile Description Set TmpFile="%temp%\CreateLink.vbs" Set IconFile=%~3 If "%IconFile%" EQU "" Set IconFile=%~2 Set Desc=%~4 If "%Desc%" EQU "" Set Desc=%~1 :: LnkFolder can be : AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, :: MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup, Templates :: Some special folders needs that the function ran in admin mode (AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup) Set LnkFolder=Desktop ( Echo: Set WshShell = WScript.CreateObject^("WScript.Shell"^) Echo: linkFile = WshShell.SpecialFolders^("%LnkFolder%"^) + "\%~1.lnk" Echo: Set link = WshShell.CreateShortcut^(linkFile^) Echo: link.TargetPath = "%~2" Echo: link.workingDirectory = "%~DP2" Echo: link.IconLocation = "%IconFile%" Echo: link.Description = "%Desc%" Echo: link.Save )>%TmpFile% "%Windir%\System32\Cscript.exe" %TmpFile%>Nul 2>Nul Del /Q /F %TmpFile%>Nul 2>Nul Goto :Eof :: ======================================================= :: Création d'un raccourci bureau vers serveur le Rustdesk :: ======================================================= :Server_Link Cls Set TargetPC= Set TargetIP= Set LINK_Icon= Set RustExe= Set TestIP= :: Recherche de l'executable Rustdesk For /F "Tokens=* Delims=" %%a In ('Dir /B "%~DP0rustdesk-*x86_64.exe"') Do (Set RustExe=%~DP0%%a) If Exist "%Localappdata%\rustdesk\rustdesk.exe" Set RustExe=%Localappdata%\rustdesk\rustdesk.exe If Exist "C:\Program Files\RustDesk\rustdesk.exe" Set RustExe=C:\Program Files\RustDesk\rustdesk.exe :: Si Rustdesk n'est pas présent sur le PC on télécharge la dernière version If "%RustExe%" EQU "" ( Call :GetRustdeskSetupFile Goto :Server_Link ) :: Demande ¨de rentrer le nom d'hote (ou l'IP si elle est fixe) Echo Veuillez indiquer le nom d'h“te de la machine … connecter. Echo Laissez le champs vide pour revenir au menu des outils. Set /P TargetPC=Vous pouvez aussi utiliser une adresse IP si elle est fixe : If "%TargetPC%" EQU "" Goto :Eof Echo. Echo Recherche de la machine "%TargetPC%" ... :: Test Ping et récupération de l'IP V4 For /F "Delims=[] Tokens=2" %%a In ('Ping -4 -n 1 %TargetPC% ^| Findstr [') Do Set TargetIP=%%a :: Si la recherche par nom Netbios ne donne rien on test si c'est une IP If "%TargetIP%" EQU "" ( For /F "Tokens=* Delims= " %%a In ('Ping -4 -n 1 %TargetPC% ^| Findstr /C:TTL') Do ( If "%%a" NEQ "" Set TargetIP=%TargetPc% ) ) :: Message d'erreur If "%TargetIP%" EQU "" ( Echo Impossible de trouver "%TargetPC%" Echo. Echo La machine doit ˆtre allum‚e et visible sur le r‚seau pour cr‚er le raccourci. Echo V‚rifiez les branchements, le nom et les paramŠtres r‚seau puis essayez … nouveau. Echo. Echo Appuyez sur une touche pour revenir au menu des outils. Pause>Nul Goto :Eof ) :: Message machine trouvée Echo "%TargetPC%" trouv‚ sur l'adresse IP %TargetIP% Echo. Echo. :: Choix de l'icône du raccourci Echo Quelle ic“ne souhaitez vous pour le raccourci ? Echo. Echo 1 - Ic“ne RustDesk (ic“ne par d‚faut) Echo. Echo 2 - Ic“ne 3Shape Echo. Echo. Choice /C 12 /T 10 /D 1 /M "Entrez votre choix (1 par d‚faut dans 10s) :" If %Errorlevel% EQU 2 Set LINK_Icon=3Shape If %Errorlevel% EQU 1 Set LINK_Icon=Rustdesk :: Choix icône RustDesk - Vérification si exe présent sur la machine et définition du chemin de l'exe dans la variable If "%LINK_Icon%" EQU "Rustdesk" Set LINK_Icon=%RustExe% :: Si le dossier d'installation n'existe pas, on le crée If Not Exist "%InstallDir%" MD "%InstallDir%" :: Choix icône 3Shape - Extraction de l'icône dans C:\Utilitaires\Rustdesk If "%LINK_Icon%" EQU "3Shape" ( Echo. Call :Icon-3Shape "%InstallDir%" Set LINK_Icon=%InstallDir%3Shape.ico Echo. ) :: Création du batch de connexion par nom NetBios/IP ( Echo::: %TargetPC%.cmd créé par ts_RustdeskInstall.cmd Version %BatchVersion% Echo::: Si le programme RustDesk n'est pas présent sur la machine, il sera téléchargé Echo::: Ce batch doit impérativement porter le nom de la machine à joindre. Echo::: Ce batch s'autoinstalle dans le dossier C:\Utilitaires\Rustdesk Echo::: Echo::: Echo:@Echo Off Echo:Cls Echo: Echo::: Vérifie si le batch est lancé depuis C:\Utilitaires\Rustdesk Echo::: Si ce n'est pas le cas, demande de choisir entre le lancement ou l'installation puis le lancement. Echo::: Si installation, lancement du menu de création du raccourci ^(1ere installation^). Echo:Set InstDir=C:\Utilitaires\Rustdesk Echo:If /I "%%~DP0" NEQ "%%InstDir%%\" ^( Echo: Echo Ce programme n'est pas lanc‚ depuis le dossier d'installation standard : %%InstDir%% Echo: Echo. Echo: Echo Que souhaitez vous faire ? Echo: Echo. Echo: Echo 1 - Lancer la connexion sur %%~n0 Echo: Echo. Echo: Echo 2 - Installer le programm puis lancer la connexion sur %%~n0 Echo: Echo. Echo: Echo 3 - Quitter Echo: Echo. Echo: Echo. Echo: Choice /C 123 /M "Entrez votre choix :" Echo: If Errorlevel 3 Exit Echo: If Errorlevel 2 XCopy /Y "%%~DPnx0" "%%InstDir%%\" ^& Start "" /B "%%InstDir%%\%%~nx0" Menu ^& Exit Echo: Cls Echo:^) Echo: Echo::: Recherche de l'executable Rustdesk Echo:Set RustdeskExe= Echo:For /F "Tokens=* Delims=" %%%%a In ^('Dir /B "%%~DP0rustdesk-*x86_64.exe"'^) Do ^(Set RustdeskExe=%%~DP0%%%%a^) Echo:If Exist "%%Localappdata%%\rustdesk\rustdesk.exe" Set RustdeskExe=%%Localappdata%%\rustdesk\rustdesk.exe Echo:If Exist "C:\Program Files\RustDesk\rustdesk.exe" Set RustdeskExe=C:\Program Files\RustDesk\rustdesk.exe Echo: Echo::: Si pas trouvé d'exécutable Rustdesk, on en télécharge un. Echo:If "%%RustdeskExe%%" EQU "" Call :DownloadRustdesk Echo:Cls Echo: Echo:If "%%~1" EQU "Menu" Call :Menu Echo:Choice /T 2 /C Mn /N /D n /M "Appuyez sur M pour acceder au menu raccourci" Echo:If %%errorlevel%% EQU 1 Cls ^& Call :Menu Echo:Cls Echo: Echo::: Utilise le nom de ce batch pour récupérer l'adresse IP V4 de la machine cible Echo:For /F "Delims=[] Tokens=2" %%%%a In ^('Ping -4 -n 1 %%~n0 ^^^| Findstr ['^) Do ^(Set NetworkIP=%%%%a^) Echo: Echo: Echo:If "%%NetworkIP%%" EQU "" ^( Echo: Color 0C Echo: Echo ERREUR : Pas d'adresse IP trouv‚ pour la machine %%~n0 Echo: Echo Verifiez qu'elle est bien allum‚e et dans le mˆme r‚seau. Echo: Echo. Echo: Echo Appuyez sur une touche pour quitter Echo: Pause^>Nul Echo: Exit Echo:^) Echo: Echo::: Message avec tempo Echo:Echo Connexion … "%%~n0" avec l'adresse IP : %%NetworkIP%% Echo:timeout 2 Echo: Echo::: Ecriture de la configuration client Echo:Call :CustomConfigFile Echo: Echo::: Lance RustDesk avec les paramètres de connexion au serveur Echo:Start "" "%%RustdeskExe%%" --connect %%NetworkIP%% Echo:Exit Echo: Echo: Echo::DownloadRustdesk Echo:Set TempFile="%%temp%%\RustDeskTmpFile.txt" Echo: Echo::: Récupère les dernières informations api pour RustDesk depuis le site Github Echo:Curl -ks https://api.github.com/repos/rustdesk/rustdesk/releases/latest^>%%TempFile%% Echo: Echo::: Récupère le lien de téléchargement du dernier exécutable Echo:For /F "Tokens=1,* Delims=:" %%%%a In ^('Type %%TempFile%% ^^^| Findstr "browser_download_url" ^^^| Findstr "x86_64.exe"'^) Do ^(Set RustDesk_URL=%%%%b^) Echo:If "%%RustDesk_URL%%" EQU "" Goto :Eof Echo: Echo::: Récupère le nom de l'exécutale Echo:For /F "Tokens=1,* Delims=:" %%%%a In ^('Type %%TempFile%% ^^^| Findstr /I /R /C:"name.*x86_64.exe"'^) Do ^(Set RustdeskExe=%%%%b^) Echo:Set RustdeskExe=%%~DP0%%RustdeskExe:~2,-2%% Echo: Echo::: Téléchargement du dernier programme Rustdesk Echo:Echo T‚l‚chargement du programme Rustdesk Echo:Echo. Echo:Curl -k -L -o "%%RustdeskExe%%" %%RustDesk_URL%% Echo:Echo. Echo:Echo. Echo:Del /F /Q %%TempFile%% Echo:Goto :Eof Echo: Echo: Echo::CustomConfigFile Echo::: Ecriture des paramètres dans RustDesk_default.toml et RustDesk_local.toml Echo:Set ConfigFile="%%UserProfile%%\AppData\Roaming\RustDesk\config\RustDesk_default.toml" Echo:^( Echo:Echo:[options] Echo:Echo:follow_remote_cursor='Y' Echo:Echo:follow_remote_window='Y' Echo:Echo:image_quality='best' Echo:Echo:zoom-cursor='Y' Echo:Echo:show_remote_cursor='Y' Echo:Echo:enable_file_transfer='Y' Echo:Echo:collapse_toolbar='Y' Echo:Echo:view_style='adaptive' Echo:Echo:i444='Y' Echo:^)^>%%ConfigFile%% Echo: Echo:Set ConfigFile="%%UserProfile%%\AppData\Roaming\RustDesk\config\RustDesk_local.toml" Echo:^( Echo:Echo:[options] Echo:Echo:remote-menubar-drag-right = '1.0' Echo:Echo:lang = 'fr' Echo:Echo:theme = 'light' Echo:^)^>%%ConfigFile%% Echo:Goto :Eof Echo: Echo: Echo::Menu Echo::: Choix de l'icône du raccourci Echo:Echo Quelle ic“ne souhaitez vous pour le raccourci ? Echo:Echo. Echo:Echo 1 - Ic“ne RustDesk Echo:Echo. Echo:Echo 2 - Ic“ne 3Shape Echo:Echo. Echo:Echo. Echo:Choice /C 12 /M "Entrez votre choix :" Echo:If Errorlevel 2 Call :Icon-3Shape ^& Set LINK_Icon=%%~DP03Shape.ico Echo:If Errorlevel 1 Set LINK_Icon=%%RustdeskExe%% Echo:Echo. Echo: Echo:Set Linkname=%%~n0 Echo:Set /P LinkName=Quel nom voulez-vous donner au raccourci ^("%%LinkName%%" par d‚faut^) ? Echo:If "%%LinkName%%" EQU "" Set LinkName=%%LinkName%% Echo: Echo:If Not Exist "%%~DP0rustdesk-*.exe" Call :DownloadRustdesk Echo: Echo::: Création du raccourci sur le bureau Echo:Call :CreateDesktopLink "%%LinkName%%" "%%~DPnx0" "%%LINK_Icon%%" Echo: Echo:Echo. Echo:Echo Cr‚ation du raccourci termin‚. Echo:Timeout /T 2 Echo:Cls Echo:Goto :Eof Echo: Echo: Echo::CreateDesktopLink LinkName TargetPath IconFile Echo:Set TmpFile="%%temp%%\CreateLink.vbs" Echo:Set IconFile=%%~3 Echo:If "%%IconFile%%" EQU "" Set IconFile=%%~2 Echo:Set LnkFolder=Desktop Echo: ^( Echo: Echo: Set WshShell = WScript.CreateObject^^^("WScript.Shell"^^^) Echo: Echo: linkFile = WshShell.SpecialFolders^^^("%%LnkFolder%%"^^^) + "\%%~1.lnk" Echo: Echo: Set link = WshShell.CreateShortcut^^^(linkFile^^^) Echo: Echo: link.TargetPath = "%%~2" Echo: Echo: link.workingDirectory = "%%~DP2" Echo: Echo: link.IconLocation = "%%IconFile%%" Echo: Echo: link.Save Echo: ^)^>%%TmpFile%% Echo:"%%Windir%%\System32\Cscript.exe" %%TmpFile%%^>Nul 2^>Nul Echo:Del /Q /F %%TmpFile%%^>Nul 2^>Nul Echo:Goto :Eof Echo: Echo: Echo::Icon-3Shape Echo:Set "OutputFile=%%~DP0\3Shape.ico" Echo:Set "TempFile=%%temp%%\3Shape64.ico.h64" Echo: Echo::: Icône 3Shape sous forme de fichier certificat Echo:^( Echo:Echo: -----BEGIN CERTIFICATE----- Echo:Echo: AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTIIjwUyF88FMhOPBTIFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIfzwUyPs8FMj/PBTI/zwUyPs8FMjSPBTIkTwU Echo:Echo: yE88FMgSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTISDwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI+zwUyM08FMiLPBTISjwUyA8AAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yJs8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj4PBTIxTwUyIM8FMhCPBTICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMijPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPU8FMi9PBTIezwU Echo:Echo: yDk8FMgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIgzwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI8DwUyLU8FMhyPBTIMDwUyAUAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yFs8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIvjwUyKU8FMjdPBTI/TwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMjpPBTIrDwUyGk8FMgnPBTIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMgzPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI1zwU Echo:Echo: yAMAAAAAPBTIATwUyDc8FMidPBTI8zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOE8FMiiPBTIXzwU Echo:Echo: yB48FMgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDTwUyPs8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyN48FMgDAAAAAAAAAAAAAAAAAAAAADwUyBI8FMhtPBTI0TwU Echo:Echo: yP08FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj9PBTI2DwUyJg8FMhVPBTIFzwUyAEAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMjePBTI/zwUyP88FMj/PBTI/zwUyP88FMj+PBTIVgAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMg3PBTImTwUyO88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yPs8FMjPPBTIjjwUyEw8FMgRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTItDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yOE8FMgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgNPBTIYTwU Echo:Echo: yMQ8FMj8PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI+DwUyMY8FMiFPBTIRTwU Echo:Echo: yAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyIo8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTImgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIKzwUyIs8FMjnPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj1PBTIwDwUyH48FMg9PBTICgAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMhgPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPw8FMhFAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTICDwU Echo:Echo: yFM8FMi3PBTI+TwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yPE8FMi5PBTIdjwUyDc8FMgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTINzwUyP88FMj/PBTI/zwUyP88FMjcPBTI/zwU Echo:Echo: yP88FMj/PBTI3TwUyA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyCA8FMh+PBTI3TwUyP48FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI7TwUyLU8FMhzPBTIMzwU Echo:Echo: yAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyA48FMj7PBTI/zwU Echo:Echo: yP88FMj/PBTIqjwUyOc8FMj/PBTI/zwUyP88FMiTAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yAQ8FMhGPBTIqjwUyPU8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMjrPBTIsTwUyHI8FMg0PBTICQAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMgBPBTI3zwUyP88FMj/PBTI/zwUyNo8FMh2PBTI/zwUyP88FMj/PBTI+zwU Echo:Echo: yD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgWPBTIcTwUyNI8FMj9PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yO88FMiwPBTIKgAAAAAAAAAAAAAAADwUyLU8FMj/PBTI/zwUyP88FMj5PBTIJjwU Echo:Echo: yOo8FMj/PBTI/zwUyP88FMjYPBTICwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMgBPBTIOjwUyJo8FMjvPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOw8FMghAAAAAAAAAAA8FMiKPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyEs8FMh6PBTI/zwUyP88FMj/PBTI/zwUyIsAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDzwUyGI8FMjEPBTI+zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIkQAA Echo:Echo: AAAAAAAAPBTIXzwUyP88FMj/PBTI/zwUyP88FMiCPBTIEDwUyOs8FMj/PBTI/zwU Echo:Echo: yP88FMj6PBTIOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyCw8FMiLPBTI5jwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyLkAAAAAAAAAADwUyDU8FMj/PBTI/zwUyP88FMj/PBTIugAA Echo:Echo: AAA8FMh9PBTI/zwUyP88FMj/PBTI/zwUyNI8FMgJAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyAk8FMhTPBTItTwU Echo:Echo: yPg8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMicAAAAAAAAAAA8FMgOPBTI+zwU Echo:Echo: yP88FMj/PBTI/zwUyO08FMgFPBTIETwUyO08FMj/PBTI/zwUyP88FMj/PBTIhAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMgfPBTIgDwUyOg8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj4PBTIMQAA Echo:Echo: AAAAAAAAPBTIATwUyN08FMj/PBTI/zwUyP88FMj9PBTILQAAAAA8FMiBPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyPg8FMgzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgQPBTIpDwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMjmPBTIRwAAAAAAAAAAAAAAAAAAAAA8FMiyPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yGUAAAAAPBTIEzwUyO88FMj/PBTI/zwUyP88FMj/PBTIzTwUyAcAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyAY8FMjhPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMiuPBTIFwAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIiDwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMieAAAAAAAAAAA8FMiEPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMh9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgOPBTI5zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPA8FMhiPBTIAQAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyFw8FMj/PBTI/zwUyP88FMj/PBTI1wAAAAAAAAAAPBTIFjwU Echo:Echo: yPA8FMj/PBTI/zwUyP88FMj/PBTI9jwUyC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMghPBTIxjwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyMA8FMgjAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgyPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yPk8FMgYAAAAAAAAAAA8FMiIPBTI/zwUyP88FMj/PBTI/zwUyP88FMjHPBTIBQAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yAE8FMhfPBTI7zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI9zwU Echo:Echo: yHg8FMgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDDwU Echo:Echo: yPk8FMj/PBTI/zwUyP88FMj/PBTITgAAAAAAAAAAPBTIGDwUyPI8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyBY8FMirPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI0TwUyDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyAE8FMjaPBTI/zwUyP88FMj/PBTI/zwUyIkAAAAAAAAAAAAA Echo:Echo: AAA8FMiNPBTI/zwUyP88FMj/PBTI/zwUyP88FMj0PBTIKQAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyE48FMjlPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj6PBTIjDwUyAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIrzwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMjDAAAAAAAAAAAAAAAAPBTIHDwUyPQ8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yMI8FMgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDTwUyJk8FMj8PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjePBTIQgAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yIQ8FMj/PBTI/zwUyP88FMj/PBTI8jwUyAwAAAAAAAAAAAAAAAA8FMiRPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTIbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIPDwU Echo:Echo: yNo8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP08FMigPBTIEAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMhYPBTI/zwUyP88FMj/PBTI/zwUyP88FMg+AAAAAAAA Echo:Echo: AAAAAAAAPBTIHjwUyPU8FMj/PBTI/zwUyP88FMj/PBTI/zwUyPI8FMglAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMgHPBTIhTwUyPo8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yOk8FMhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTILTwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTIewAAAAAAAAAAAAAAAAAAAAA8FMiVPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTIvjwUyAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMgsPBTIzDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyLI8FMgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yAo8FMj3PBTI/zwUyP88FMj/PBTI/zwUyLcAAAAAAAAAAAAAAAAAAAAAPBTIITwU Echo:Echo: yPY8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMhsAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyAM8FMhwPBTI9TwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI8jwUyGY8FMgCAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMgBPBTI1TwUyP88FMj/PBTI/zwUyP88FMjtPBTICAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMiZPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI8jwU Echo:Echo: yCcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyB88FMi7PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIxDwUyCYAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyKo8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/jwUyDcAAAAAAAAAAAAAAAAAAAAAPBTIJDwUyPc8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMjTPBTIFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yFw8FMjtPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj4PBTIezwU Echo:Echo: yAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMh/PBTI/zwUyP88FMj/PBTI/zwUyP88FMh2AAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMidPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyNs8FMhEPBTIAQAA Echo:Echo: AAAAAAAAPBTIHjwUyKk8FMj9PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMjTPBTINAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIUzwUyP88FMj/PBTI/zwUyP88FMj/PBTItwAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIJzwUyPg8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/TwUyNU8FMisPBTIwTwUyPc8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyPw8FMiQPBTICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyCg8FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyO08FMgIAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMinPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOA8FMhFAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAA8FMgIPBTI8zwUyP88FMj/PBTI/zwUyP88FMj+PBTINQAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTITDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyKM8FMgSAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyNA8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yG8AAAAAAAAAAAAAAAAAAAAAAAAAADwUyBc8FMj4PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI6zwU Echo:Echo: yFc8FMgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMikPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMiqAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgDPBTI6zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTItzwUyBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTIeTwUyP88FMj/PBTI/zwUyP88FMj/PBTI5TwUyAUAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTIAjwUyOk8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj0PBTIazwUyAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyE48FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP48FMg5AAAAAAAAAAAAAAAAAAAAADwUyBY8FMj4PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjKPBTIKAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgiPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTInwAAAAAAAAAAAAAAAAAAAAA8FMhaPBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPk8FMiBPBTIBgAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTIBzwUyO48FMj/PBTI/zwUyP88FMj/PBTI/zwUyPo8FMhHAAAAAAAA Echo:Echo: AAA8FMgXPBTI3DwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yNg8FMg6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMjKPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI+DwUyKE8FMiMPBTI5DwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/TwUyJY8FMgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTInjwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI5TwUyEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyHM8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIqzwUyBQAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMhIPBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjuPBTIXTwU Echo:Echo: yAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIHDwU Echo:Echo: yP48FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMi9PBTIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAADwUyAU8FMjpPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyPY8FMhyPBTIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIvTwUyP88FMj/PBTI/zwU Echo:Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyM48FMgsAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo:Echo: yHc8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI+jwUyIY8FMgGAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAA8FMgZPBTI8jwUyP88FMj/PBTI/zwUyP88FMj/PBTI2zwU Echo:Echo: yDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyFQ8FMj1PBTI/zwU Echo:Echo: yP88FMj9PBTImTwUyA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAPBTIHjwUyGw8FMh0PBTIMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo:Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// Echo:Echo: /////////////////////////////8P/////////gD////////8AA////////wAA Echo:Echo: P///////AAAD//////8AAAA//////wAAAAP/////AEAAAD////8AeAAAA////4B/ Echo:Echo: AAAAf///gD/AAAAH//+AP/gAAAB//4Af/gAAAAf/gA//wAAAAH+AD//wAAAAB4AH Echo:Echo: //4AAAABwAP//4AAAADAA///8AAAAMAB///+AAAAwID///+AAADAAP////AAAMBA Echo:Echo: f////AAB4EA////+AAPgYD////4AB+BgH////AAf4DAP///wAD/gMA///+AA/+A4 Echo:Echo: B///wAH/8DgD//8AB//wHAP//gAP//AcAf/4AD//8B4A//AAf//wHgD/wAD///AP Echo:Echo: AH+AA///+A8APwAH///4D4AMAB////gPgAAAP///+AfAAAD////4B8AAAf////wH Echo:Echo: wAAD/////AfAAA/////8A8AAH/////wDwAB//////APAAP/////8AYAD//////4A Echo:Echo: AAf//////gAAH//////+AAA///////4AAH///////gAB///////+AAP///////8A Echo:Echo: D////////wAf////////AH////////+A/////////8P///////////////////// Echo:Echo: //////////////////8= Echo:Echo: -----END CERTIFICATE----- Echo:^)^>%%TempFile%% Echo: Echo::: Décodage du fichier ^(icône^) Echo:Certutil.exe -f -decode "%%TempFile%%" "%%OutputFile%%" ^>Nul 2^>Nul Echo:Echo Extraction de l'ic“ne 3Shape termin‚ Echo:Del /F "%%TempFile%%" Echo:Goto :Eof Echo: Echo: Echo::Eof )>"%InstallDir%%TargetPC%.cmd" :: Création du raccourci sur le bureau Call :CreateDesktopLink "%TargetPC%" "%InstallDir%%TargetPC%.cmd" "%LINK_Icon%" Echo. Echo Cr‚ation du raccourci termin‚. Timeout /T 2 Goto :Eof :: ===================== :: Fonction Write_IniVBS :: ===================== :: :: Examples :: To write a value in Test.ini : :: cscript.exe /nologo "%Temp%\ini.vbs" "%~DP0Test.ini" "Section1" "TEST1" "Val Test1" :: :: To delete a value in Test.ini : :: cscript.exe /nologo "%Temp%\ini.vbs" "%~DP0Test.ini" "Section2" "TEST1" "" :: :: To read a value from Test.ini : :: For /F "Tokens=*" %%a In ('cscript.exe /nologo "%Temp%\ini.vbs" "%~DP0Test.ini" "Section2" "TEST2"') Do Set Result=%%a :: :Func_Write_IniVBS Set OutputFile=%Temp%\Ini.vbs ( Echo: ' This script help on reading/writing on ini file Echo: ' Echo: ' For reading : Ini.vbs File Section Key Echo: ' For writing : Ini.vbs File Section Key Val Echo: ' Echo: ' Arguments: Echo: ' arg0 [string] The ^(path and^) file name of the INI file Echo: ' arg1 [string] The section in the INI file Echo: ' arg2 [string] The key whose value is to be used Echo: ' arg3 [string] The value of the key to be used Echo: ' Echo: ' Source : https://www.robvanderwoude.com/vbstech_files_ini.php' Echo: ' Script modified by Tlem to be used with cmdline batch Echo: ' Echo: ' eg : Ini.vbs "test.ini" "My Section" "My Key" "My Value" Echo: Echo:If WScript.Arguments.Count ^< 3 then WScript.Quit^(0^) Echo: Echo:If WScript.Arguments.Count = 4 Then Echo: strValue = WScript.Arguments^(3^) Echo: If strValue = "" Then strValue = "" Echo: Writeini WScript.Arguments^(0^), WScript.Arguments^(1^), WScript.Arguments^(2^), strValue Echo:Else Echo: WScript.Echo ReadIni ^(WScript.Arguments^(0^), WScript.Arguments^(1^), WScript.Arguments^(2^)^) Echo:End If Echo: Echo:WScript.Quit^(1^) Echo: Echo: Echo:Function ReadIni^(myFilePath, mySection, myKey^) Echo: ' This function returns a value read from an INI file Echo: ' Echo: ' Arguments: Echo: ' myFilePath [string] the ^(path and^) file name of the INI file Echo: ' mySection [string] the section in the INI file to be searched Echo: ' myKey [string] the key whose value is to be returned Echo: ' Echo: ' Returns: Echo: ' the [string] value for the specified key in the specified section Echo: ' Echo: ' CAVEAT: Will return a space if key exists but value is blank Echo: ' Echo: ' Written by Keith Lacelle Echo: ' Modified by Denis St-Pierre and Rob van der Woude Echo: Echo: Const ForReading = 1 Echo: Const ForWriting = 2 Echo: Const ForAppending = 8 Echo: Echo: Dim intEqualPos Echo: Dim objFSO, objIniFile Echo: Dim strFilePath, strKey, strLeftString, strLine, strSection Echo: Echo: Set objFSO = CreateObject^("Scripting.FileSystemObject"^) Echo: Echo: ReadIni = "" Echo: strFilePath = Trim^(myFilePath^) Echo: strSection = Trim^(mySection^) Echo: strKey = Trim^(myKey^) Echo: Echo: If objFSO.FileExists^(strFilePath^) Then Echo: Set objIniFile = objFSO.OpenTextFile^(strFilePath, ForReading, False^) Echo: Do While objIniFile.AtEndOfStream = False Echo: If objIniFile.AtEndOfStream Then Exit Do Echo: strLine = Trim^(objIniFile.ReadLine^) Echo: Echo: ' Check if section is found in the current line Echo: If LCase^(strLine^) = "[" ^& LCase^(strSection^) ^& "]" Then Echo: strLine = Trim^(objIniFile.ReadLine^) Echo: Echo: ' Parse lines until the next section is reached Echo: Do While Left^(strLine, 1^) ^<^> "[" Echo: ' Find position of equal sign in the line Echo: intEqualPos = InStr^(1, strLine, "=", 1^) Echo: If intEqualPos ^> 0 Then Echo: strLeftString = Trim^(Left^(strLine, intEqualPos - 1^)^) Echo: ' Check if item is found in the current line Echo: If LCase^(strLeftString^) = LCase^(strKey^) Then Echo: ReadIni = Trim^(Mid^(strLine, intEqualPos + 1^)^) Echo: ' In case the item exists but value is blank Echo: If ReadIni = "" Then Echo: ReadIni = " " Echo: End If Echo: ' Abort loop when item is found Echo: Exit Do Echo: End If Echo: End If Echo: Echo: ' Abort if the end of the INI file is reached Echo: If objIniFile.AtEndOfStream Then Exit Do Echo: Echo: ' Continue with next line Echo: strLine = Trim^(objIniFile.ReadLine^) Echo: Loop Echo: Exit Do Echo: End If Echo: Loop Echo: objIniFile.Close Echo: Else Echo: WScript.Echo strFilePath ^& " n'existe pas. Fin..." Echo: Wscript.Quit 1 Echo: End If Echo:End Function Echo: Echo:Sub WriteIni^(myFilePath, mySection, myKey, myValue^) Echo: ' This subroutine writes a value to an INI file Echo: ' Echo: ' Arguments: Echo: ' myFilePath [string] the ^(path and^) file name of the INI file Echo: ' mySection [string] the section in the INI file to be searched Echo: ' myKey [string] the key whose value is to be written Echo: ' myValue [string] the value to be written ^(myKey will be Echo: ' deleted if myValue is ^^) Echo: ' Echo: ' Returns: Echo: ' N/A Echo: ' Echo: ' CAVEAT: WriteIni function needs ReadIni function to run Echo: ' Echo: ' Written by Keith Lacelle Echo: ' Modified by Denis St-Pierre, Johan Pol and Rob van der Woude Echo: Echo: Const ForReading = 1 Echo: Const ForWriting = 2 Echo: Const ForAppending = 8 Echo: Echo: Dim blnInSection, blnKeyExists, blnSectionExists, blnWritten Echo: Dim intEqualPos Echo: Dim objFSO, objNewIni, objOrgIni, wshShell Echo: Dim strFilePath, strFolderPath, strKey, strLeftString Echo: Dim strLine, strSection, strTempDir, strTempFile, strValue Echo: Echo: strFilePath = Trim^(myFilePath^) Echo: strSection = Trim^(mySection^) Echo: strKey = Trim^(myKey^) Echo: strValue = Trim^(myValue^) Echo: Echo: Set objFSO = CreateObject^("Scripting.FileSystemObject"^) Echo: Set wshShell = CreateObject^("WScript.Shell"^) Echo: Echo: strTempDir = wshShell.ExpandEnvironmentStrings^("%%TEMP%%"^) Echo: strTempFile = objFSO.BuildPath^(strTempDir, objFSO.GetTempName^) Echo: Echo: Set objOrgIni = objFSO.OpenTextFile^(strFilePath, ForReading, True^) Echo: Set objNewIni = objFSO.CreateTextFile^(strTempFile, False, False^) Echo: Echo: blnInSection = False Echo: blnSectionExists = False Echo: ' Check if the specified key already exists Echo: blnKeyExists = ^(ReadIni^(strFilePath, strSection, strKey^) ^<^> ""^) Echo: blnWritten = False Echo: Echo: ' Check if path to INI file exists, quit if not Echo: strFolderPath = Mid^(strFilePath, 1, InStrRev^(strFilePath, "\"^)^) Echo: If Not objFSO.FolderExists^(strFolderPath^) Then Echo: WScript.Echo "Erreur: Echec de WriteIni, dossier (" _ Echo: ^& strFolderPath ^& ") fichier ini " _ Echo: ^& strFilePath ^& " non trouv‚ !" Echo: Set objOrgIni = Nothing Echo: Set objNewIni = Nothing Echo: Set objFSO = Nothing Echo: WScript.Quit 1 Echo: End If Echo: Echo: While objOrgIni.AtEndOfStream = False Echo: strLine = Trim^(objOrgIni.ReadLine^) Echo: If blnWritten = False Then Echo: If LCase^(strLine^) = "[" ^& LCase^(strSection^) ^& "]" Then Echo: blnSectionExists = True Echo: blnInSection = True Echo: ElseIf InStr^(strLine, "["^) = 1 Then Echo: blnInSection = False Echo: End If Echo: End If Echo: Echo: If blnInSection Then Echo: If blnKeyExists Then Echo: intEqualPos = InStr^(1, strLine, "=", vbTextCompare^) Echo: If intEqualPos ^> 0 Then Echo: strLeftString = Trim^(Left^(strLine, intEqualPos - 1^)^) Echo: If LCase^(strLeftString^) = LCase^(strKey^) Then Echo: ' Only write the key if the value isn't empty Echo: ' Modification by Johan Pol Echo: If strValue ^<^> "" Then Echo: objNewIni.WriteLine strKey ^& "=" ^& strValue Echo: End If Echo: blnWritten = True Echo: blnInSection = False Echo: End If Echo: End If Echo: If Not blnWritten Then Echo: objNewIni.WriteLine strLine Echo: End If Echo: Else Echo: objNewIni.WriteLine strLine Echo: ' Only write the key if the value isn't empty Echo: ' Modification by Johan Pol Echo: If strValue ^<^> "" Then Echo: objNewIni.WriteLine strKey ^& "=" ^& strValue Echo: End If Echo: blnWritten = True Echo: blnInSection = False Echo: End If Echo: Else Echo: objNewIni.WriteLine strLine Echo: End If Echo: Wend Echo: Echo: If blnSectionExists = False Then ' section doesn't exist Echo: objNewIni.WriteLine Echo: objNewIni.WriteLine "[" ^& strSection ^& "]" Echo: ' Only write the key if the value isn't empty Echo: ' Modification by Johan Pol Echo: If strValue ^<^> "" Then Echo: objNewIni.WriteLine strKey ^& "=" ^& strValue Echo: End If Echo: End If Echo: Echo: objOrgIni.Close Echo: objNewIni.Close Echo: Echo: ' Delete old INI file Echo: objFSO.DeleteFile strFilePath, True Echo: ' Rename new INI file Echo: objFSO.MoveFile strTempFile, strFilePath Echo: Echo: Set objOrgIni = Nothing Echo: Set objNewIni = Nothing Echo: Set objFSO = Nothing Echo: Set wshShell = Nothing Echo:End Sub)>"%OutputFile%" Goto :Eof :: ===================================== :: Icône 3Shape sous forme de code batch :: ===================================== :Icon-3Shape Set "OutputFile=%~1\3Shape.ico" Set "TempFile=%temp%\3Shape64.ico.h64" :: Si le dossier de destination n'existe pas, on le crée If Not Exist "%~1" MD "%~1" :: Icône 3Shape sous forme de fichier certificat ( Echo: -----BEGIN CERTIFICATE----- Echo: AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAPBTIIjwUyF88FMhOPBTIFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIfzwUyPs8FMj/PBTI/zwUyPs8FMjSPBTIkTwU Echo: yE88FMgSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTISDwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI+zwUyM08FMiLPBTISjwUyA8AAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yJs8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj4PBTIxTwUyIM8FMhCPBTICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMijPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPU8FMi9PBTIezwU Echo: yDk8FMgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIgzwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI8DwUyLU8FMhyPBTIMDwUyAUAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yFs8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIvjwUyKU8FMjdPBTI/TwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMjpPBTIrDwUyGk8FMgnPBTIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMgzPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI1zwU Echo: yAMAAAAAPBTIATwUyDc8FMidPBTI8zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOE8FMiiPBTIXzwU Echo: yB48FMgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDTwUyPs8FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyN48FMgDAAAAAAAAAAAAAAAAAAAAADwUyBI8FMhtPBTI0TwU Echo: yP08FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj9PBTI2DwUyJg8FMhVPBTIFzwUyAEAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMjePBTI/zwUyP88FMj/PBTI/zwUyP88FMj+PBTIVgAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMg3PBTImTwUyO88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yPs8FMjPPBTIjjwUyEw8FMgRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTItDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yOE8FMgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgNPBTIYTwU Echo: yMQ8FMj8PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI+DwUyMY8FMiFPBTIRTwU Echo: yAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyIo8FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTImgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIKzwUyIs8FMjnPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj1PBTIwDwUyH48FMg9PBTICgAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMhgPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPw8FMhFAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTICDwU Echo: yFM8FMi3PBTI+TwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yPE8FMi5PBTIdjwUyDc8FMgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTINzwUyP88FMj/PBTI/zwUyP88FMjcPBTI/zwU Echo: yP88FMj/PBTI3TwUyA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyCA8FMh+PBTI3TwUyP48FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI7TwUyLU8FMhzPBTIMzwU Echo: yAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyA48FMj7PBTI/zwU Echo: yP88FMj/PBTIqjwUyOc8FMj/PBTI/zwUyP88FMiTAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yAQ8FMhGPBTIqjwUyPU8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMjrPBTIsTwUyHI8FMg0PBTICQAAAAAAAAAAAAAAAAAA Echo: AAA8FMgBPBTI3zwUyP88FMj/PBTI/zwUyNo8FMh2PBTI/zwUyP88FMj/PBTI+zwU Echo: yD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgWPBTIcTwUyNI8FMj9PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yO88FMiwPBTIKgAAAAAAAAAAAAAAADwUyLU8FMj/PBTI/zwUyP88FMj5PBTIJjwU Echo: yOo8FMj/PBTI/zwUyP88FMjYPBTICwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMgBPBTIOjwUyJo8FMjvPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOw8FMghAAAAAAAAAAA8FMiKPBTI/zwU Echo: yP88FMj/PBTI/zwUyEs8FMh6PBTI/zwUyP88FMj/PBTI/zwUyIsAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDzwUyGI8FMjEPBTI+zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIkQAA Echo: AAAAAAAAPBTIXzwUyP88FMj/PBTI/zwUyP88FMiCPBTIEDwUyOs8FMj/PBTI/zwU Echo: yP88FMj6PBTIOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyCw8FMiLPBTI5jwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyLkAAAAAAAAAADwUyDU8FMj/PBTI/zwUyP88FMj/PBTIugAA Echo: AAA8FMh9PBTI/zwUyP88FMj/PBTI/zwUyNI8FMgJAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyAk8FMhTPBTItTwU Echo: yPg8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMicAAAAAAAAAAA8FMgOPBTI+zwU Echo: yP88FMj/PBTI/zwUyO08FMgFPBTIETwUyO08FMj/PBTI/zwUyP88FMj/PBTIhAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMgfPBTIgDwUyOg8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj4PBTIMQAA Echo: AAAAAAAAPBTIATwUyN08FMj/PBTI/zwUyP88FMj9PBTILQAAAAA8FMiBPBTI/zwU Echo: yP88FMj/PBTI/zwUyPg8FMgzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgQPBTIpDwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMjmPBTIRwAAAAAAAAAAAAAAAAAAAAA8FMiyPBTI/zwUyP88FMj/PBTI/zwU Echo: yGUAAAAAPBTIEzwUyO88FMj/PBTI/zwUyP88FMj/PBTIzTwUyAcAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyAY8FMjhPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMiuPBTIFwAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIiDwU Echo: yP88FMj/PBTI/zwUyP88FMieAAAAAAAAAAA8FMiEPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMh9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgOPBTI5zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPA8FMhiPBTIAQAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyFw8FMj/PBTI/zwUyP88FMj/PBTI1wAAAAAAAAAAPBTIFjwU Echo: yPA8FMj/PBTI/zwUyP88FMj/PBTI9jwUyC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMghPBTIxjwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyMA8FMgjAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgyPBTI/zwUyP88FMj/PBTI/zwU Echo: yPk8FMgYAAAAAAAAAAA8FMiIPBTI/zwUyP88FMj/PBTI/zwUyP88FMjHPBTIBQAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yAE8FMhfPBTI7zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI9zwU Echo: yHg8FMgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDDwU Echo: yPk8FMj/PBTI/zwUyP88FMj/PBTITgAAAAAAAAAAPBTIGDwUyPI8FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyBY8FMirPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI0TwUyDEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyAE8FMjaPBTI/zwUyP88FMj/PBTI/zwUyIkAAAAAAAAAAAAA Echo: AAA8FMiNPBTI/zwUyP88FMj/PBTI/zwUyP88FMj0PBTIKQAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyE48FMjlPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj6PBTIjDwUyAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIrzwUyP88FMj/PBTI/zwU Echo: yP88FMjDAAAAAAAAAAAAAAAAPBTIHDwUyPQ8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yMI8FMgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIDTwUyJk8FMj8PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjePBTIQgAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yIQ8FMj/PBTI/zwUyP88FMj/PBTI8jwUyAwAAAAAAAAAAAAAAAA8FMiRPBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTIbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIPDwU Echo: yNo8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP08FMigPBTIEAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMhYPBTI/zwUyP88FMj/PBTI/zwUyP88FMg+AAAAAAAA Echo: AAAAAAAAPBTIHjwUyPU8FMj/PBTI/zwUyP88FMj/PBTI/zwUyPI8FMglAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMgHPBTIhTwUyPo8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yOk8FMhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTILTwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTIewAAAAAAAAAAAAAAAAAAAAA8FMiVPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTIvjwUyAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMgsPBTIzDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyLI8FMgaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yAo8FMj3PBTI/zwUyP88FMj/PBTI/zwUyLcAAAAAAAAAAAAAAAAAAAAAPBTIITwU Echo: yPY8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMhsAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyAM8FMhwPBTI9TwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI8jwUyGY8FMgCAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMgBPBTI1TwUyP88FMj/PBTI/zwUyP88FMjtPBTICAAA Echo: AAAAAAAAAAAAAAAAAAA8FMiZPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI8jwU Echo: yCcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyB88FMi7PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIxDwUyCYAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyKo8FMj/PBTI/zwU Echo: yP88FMj/PBTI/jwUyDcAAAAAAAAAAAAAAAAAAAAAPBTIJDwUyPc8FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMjTPBTIFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yFw8FMjtPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj4PBTIezwU Echo: yAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMh/PBTI/zwUyP88FMj/PBTI/zwUyP88FMh2AAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMidPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyNs8FMhEPBTIAQAA Echo: AAAAAAAAPBTIHjwUyKk8FMj9PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMjTPBTINAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIUzwUyP88FMj/PBTI/zwUyP88FMj/PBTItwAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAPBTIJzwUyPg8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/TwUyNU8FMisPBTIwTwUyPc8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyPw8FMiQPBTICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyCg8FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyO08FMgIAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMinPBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyOA8FMhFAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAA8FMgIPBTI8zwUyP88FMj/PBTI/zwUyP88FMj+PBTINQAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAPBTITDwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyKM8FMgSAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyNA8FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yG8AAAAAAAAAAAAAAAAAAAAAAAAAADwUyBc8FMj4PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI6zwU Echo: yFc8FMgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMikPBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMiqAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgDPBTI6zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTItzwUyBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAPBTIeTwUyP88FMj/PBTI/zwUyP88FMj/PBTI5TwUyAUAAAAAAAAAAAAA Echo: AAAAAAAAPBTIAjwUyOk8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj0PBTIazwUyAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyE48FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP48FMg5AAAAAAAAAAAAAAAAAAAAADwUyBY8FMj4PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjKPBTIKAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMgiPBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTInwAAAAAAAAAAAAAAAAAAAAA8FMhaPBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyPk8FMiBPBTIBgAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAPBTIBzwUyO48FMj/PBTI/zwUyP88FMj/PBTI/zwUyPo8FMhHAAAAAAAA Echo: AAA8FMgXPBTI3DwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yNg8FMg6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMjKPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI+DwUyKE8FMiMPBTI5DwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/TwUyJY8FMgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTInjwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI5TwUyEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyHM8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTIqzwUyBQAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8FMhIPBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMjuPBTIXTwU Echo: yAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIHDwU Echo: yP48FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMi9PBTIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAADwUyAU8FMjpPBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyPY8FMhyPBTIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPBTIvTwUyP88FMj/PBTI/zwU Echo: yP88FMj/PBTI/zwUyP88FMj/PBTI/zwUyM48FMgsAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwU Echo: yHc8FMj/PBTI/zwUyP88FMj/PBTI/zwUyP88FMj/PBTI+jwUyIY8FMgGAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAA8FMgZPBTI8jwUyP88FMj/PBTI/zwUyP88FMj/PBTI2zwU Echo: yDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwUyFQ8FMj1PBTI/zwU Echo: yP88FMj9PBTImTwUyA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAPBTIHjwUyGw8FMh0PBTIMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Echo: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////// Echo: /////////////////////////////8P/////////gD////////8AA////////wAA Echo: P///////AAAD//////8AAAA//////wAAAAP/////AEAAAD////8AeAAAA////4B/ Echo: AAAAf///gD/AAAAH//+AP/gAAAB//4Af/gAAAAf/gA//wAAAAH+AD//wAAAAB4AH Echo: //4AAAABwAP//4AAAADAA///8AAAAMAB///+AAAAwID///+AAADAAP////AAAMBA Echo: f////AAB4EA////+AAPgYD////4AB+BgH////AAf4DAP///wAD/gMA///+AA/+A4 Echo: B///wAH/8DgD//8AB//wHAP//gAP//AcAf/4AD//8B4A//AAf//wHgD/wAD///AP Echo: AH+AA///+A8APwAH///4D4AMAB////gPgAAAP///+AfAAAD////4B8AAAf////wH Echo: wAAD/////AfAAA/////8A8AAH/////wDwAB//////APAAP/////8AYAD//////4A Echo: AAf//////gAAH//////+AAA///////4AAH///////gAB///////+AAP///////8A Echo: D////////wAf////////AH////////+A/////////8P///////////////////// Echo: //////////////////8= Echo: -----END CERTIFICATE----- ) >%TempFile% :: Décodage du fichier (icône) Certutil.exe -f -decode "%TempFile%" "%OutputFile%" >Nul 2>Nul Echo Extraction de l'ic“ne 3Shape termin‚ Del /F "%TempFile%" Goto :Eof :: ===================================== :: Fonction de nettoyage du dossier temp :: ===================================== :CleanTemp Del "%temp%\ini.vbs">Nul 2>Nul Del "%temp%\Rustdesk*.*">Nul 2>Nul Del "%temp%\VirtualDisplay*.*">Nul 2>Nul Goto :Eof :: ========================== :: Nettoyage et fin du script :: ========================== :End Call :CleanTemp :: ============ :: Fin du batch :: ============ :Eof :: :: ============================= :: HISTORIQUE DES MODIFICATIONS :: ============================= :: :: Version 2.0 du 05/09/2025 :: - Grosses modifications sur la partie création du batch de connexion autonôme : :: - Si lancement depuis un autre dossier que C:\Utilitaires\RustDesk => Demande si lancement ou installation :: - Correction d'un bogue sur l'extraction de l'icône 3Shape et l'ajout des icônes sur les raccourcis. :: - Ajout du téléchargement de RustDesk lors du processus de création du raccourci. :: :: Version 1.9 du 01/07/2025 :: - Modification du fichier de connexion client, pour le rendre "autonôme" (Installation auto dans C:\Utilitaires\Rustdesk et création raccourci bureau) :: Cette modification permet de lancer le batch de connexion client depuis n'importe ou. Il "s'installera" automatique dans le répertoire indiqué ci-dessus. :: - Suppression de la fonctionnalité d'utilisation d'un serveur privé (Fonctionnalité non utilisée) => Le code sera sans doute mis dans un batch externe. :: - Ajout dans le batch client de l'écriture de la configuration de base (Affichage adaptatif, affichage curseur distant, etc ...). :: - Grosse modification sur la méthode de récupération du setup de Rustdesk (Gestion online/offline, fichier local/distant). :: - Ajout dans les menus d'une indication sur les droits d'accès du dossier courant (R pour READ et W pour WRITE). :: - Correction d'un bogue sur le batch client qui ne téléchargait pas l'Exe Rustdesk si nécéssaire. :: - Modification de la validation du mot de passe. Une deuxième saisie est maintenant nécéssaire. :: - Ajout d'un contrôle sur la connexion vers Github (site de téléchargement de Rustdesk). :: - Déplacement de certaines fonctions et ré-écriture de certaines parties du code. :: - Ajout d'un contrôle de saisie sur la fonction Server_Link. :: - Légère modification sur l'affichage des menus. :: :: Version 1.8 du 20/05/2025 :: - Corrections bogue intermittant auto-suppression :: - Optimisation recherche nom du dernier exécutable :: :: Version 1.7 du 25/02/2025 :: - Corrections mineures du code :: - Modifications et Corrections sur certains textes :: - Déplacement de l'étape de configuration du mot de passe :: - Ajout du contrôle de l'installation de Rustdesk sur la mise à jour :: - Suppression de l'utilisation de l'option --config (ne fonctionne pas) :: - Ajout de la suppression de l'ancien installateur en cas de téléchargement :: - Ajout de la configuration d'un serveur de rendez-vous (hbbs) privé ou publique :: - Modification de la méthode d'écriture des fichiers de configuration (format .Ini) :: - Ajout d'instructions concernant le mot de passe et test de la longueur (mini 8 caractères) :: - Ajout de l'affichage de l'ID et du mot de passe à la fin de l'installation du mode serveur :: - Correction d'un bogue à l'extraction de l'icône 3Shape si le dossier de destination n'existe pas :: - Ajout d'une option dans le menu Outils, pour supprimer ou activer le serveur de rendez-vous privé :: - Modification du contrôle du nom de la machine pour la création du lien vers un serveur (Prise en charge réélle de l'IP) :: - Ajout du code de création du batch de connexion vers un serveur Rustdesk par l'adresse IP ou le nom netbios (Le code avait été oublié sur batch de test) :: - Modification du batch de connexion vers un serveur Rustdesk. Prise en charge des 3 possibilités d'utilisation de Rustdesk ou téléchargement si nécessaire :: :: Version 1.6 du 29/01/2025 :: - Modification de l'affichage du titre :: - Correction d'un bogue sur la mise à jour :: - Ajout de commentaires sur certaines partie du code :: - Modification du code d'écriture de la configuration client :: - Ajout du lien vers les conditions d'utilisation de Rustdesk :: - Modification du code de l'installation du pilote d'écran virtuel :: - Deuxième changement de nom (afin d'être en adéquation pour l'utilisation par le groupe) :: - Suppression provisoire du paramétrage du thème Dark (non fonctionnel pour le moment) :: - Ajout des options : :: - allow-auto-disconnect sur 60 min :: - i444 = 'Y' :: - follow_remote_window = 'Y' :: - follow_remote_cursor = 'Y' :: :: Version 1.5 du 26/01/2025 :: - Corrections de bogues divers :: - Ajout du nettoyage du dossier Temp :: - Ajout d'un menu supplémantaire pour les outils :: - Ajout de la possibilité de générer un nouvel ID :: - Ajout du téléchargement du script depuit Techdental et de la mise à jour du :: script en cours si lancé depuis le dossier d'installation (autoupdate) :: - Ajout d'une fonction de recherche de l'exécutable Rustdesk dans différents dossiers :: :: Version 1.4 du 20/01/2025 :: - Premier changement de nom :: - Ajout de l'installation du pilote d'écran virtuel :: - Ajout d'un icône 3Shape embarqué (extrait à la demande) :: - Ajout de l'option de copie du batch et des outils dans C:\Utilitaires\RustDesk :: - Ajout de l'option de création d'un raccourcis bureau vers un serveur RustDesk :: :: Version 1.3 du 04/12/2024 :: - Modification de la numérotation de version 0.2 => 1.2 :: - Séparation de l'installation client et de la mise à jour :: :: Version 1.2 du 27/09/2024 :: - Ajout du mode d'installation Client :: - Supression du mot de passe inscrit dans le code :: - Ajout de la configuration de plusieurs paramètes :: - Gestion de la mise à jour de l'exécutable dans le dossier d'installation :: - Gestion du téléchargement de la dernière version du programme d'installation :: - Ajout de la désinstallation de RustDesk avec supression des fichiers de configuration. :: :: Version 1 du 21/05/2021 :: - Première version :: ::