{"id":15,"date":"2025-12-08T12:14:14","date_gmt":"2025-12-08T12:14:14","guid":{"rendered":"http:\/\/geekgen1.be\/?page_id=15"},"modified":"2026-07-11T11:34:24","modified_gmt":"2026-07-11T11:34:24","slug":"outils-osint","status":"publish","type":"page","link":"https:\/\/geekgen1.be\/index.php\/outils-osint\/","title":{"rendered":"Outils Divers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.submarinecablemap.com\">https:\/\/www.submarinecablemap.com<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">nettoyer windows de ses outils inutiles (bloatware) Bulk Crap Uninstaller <a href=\"https:\/\/github.com\/Klocman\/Bulk-Crap-Uninstaller\">GitHub &#8211; Klocman\/Bulk-Crap-Uninstaller: Remove large amounts of unwanted applications quickly.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Autounattend pour d\u00e9marrage windows 11<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/schneegans.de\/windows\/unattend-generator\/\">Generate autounattend.xml files for Windows&nbsp;10\/11<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">un doute sur un programme que vous souhaitez retirer ? : Should I Remove It?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.shouldiremoveit.com\/\">https:\/\/www.shouldiremoveit.com\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9cup\u00e9rer des donn\u00e9es effac\u00e9es sur un disque dur : Autopsy \u2014 Digital<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Forensics <a href=\"https:\/\/www.autopsy.com\/\">&lt; https:\/\/www.autopsy.com\/&gt;<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">optimiser windows pour de meilleures performance (pas en entreprise ! !)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AtlasOS \u2014 An optimized modification of Windows, designed for gamers. <a href=\"https:\/\/atlasos.net\/\">https:\/\/atlasos.net\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sauvegarder le code dans un fichier nomm\u00e9 <code>Check-Device.ps1<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lancer PowerShell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ex\u00e9cuter la commande suivante pour forcer le lancement si la politique d&#8217;ex\u00e9cution bloque les scripts locaux : <code>powershell.exe -ExecutionPolicy Bypass -File .\\Check-Device.ps1<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Code diagnostic :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ReportPath = \"$env:TEMP\\Etat_Poste_Entreprise.html\"\n\n$Head = @\"\n&lt;meta charset=\"utf-8\">\n&lt;style>\n    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f9f9f9; color: #333; margin: 20px; }\n    h2 { border-bottom: 2px solid #005a9e; padding-bottom: 5px; color: #005a9e; }\n    table { border-collapse: collapse; width: 100%; margin-bottom: 20px; background-color: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }\n    th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }\n    th { background-color: #f2f2f2; font-weight: bold; width: 30%; }\n    .cmd { font-family: Consolas, monospace; background-color: #eef1f5; padding: 4px 8px; border-radius: 3px; font-weight: bold; color: #c7254e; }\n    .table-compact th { background-color: #e1edf7; width: auto; }\n    .section-header { background-color: #d0e0ec; font-weight: bold; text-align: center; }\n&lt;\/style>\n\"@\n\n$HtmlContent = @\"\n&lt;!DOCTYPE html>\n&lt;html>\n&lt;head>$Head&lt;\/head>\n&lt;body>\n&lt;h1>Rapport d'\u00c9tat du Poste Client&lt;\/h1>\n\"@\n\nfunction New-HtmlTable {\n    param(&#91;PSCustomObject]$Object)\n    $html = \"&lt;table>\"\n    $Object.psobject.properties | ForEach-Object {\n        $html += \"&lt;tr>&lt;th>$($_.Name)&lt;\/th>&lt;td>$($_.Value)&lt;\/td>&lt;\/tr>\"\n    }\n    $html += \"&lt;\/table>\"\n    return $html\n}\n\n# 1. Informations G\u00e9n\u00e9rales\n$IsAdmin = (New-Object Security.Principal.WindowsPrincipal(&#91;Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(&#91;Security.Principal.WindowsBuiltInRole]::Administrator)\n$OsInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction SilentlyContinue\n$CompInfo = Get-CimInstance Win32_ComputerSystem -ErrorAction SilentlyContinue\n$IpAddress = (Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | Where-Object { $_.InterfaceAlias -notmatch \"Loopback|Pseudo\" } | Select-Object -ExpandProperty IPAddress) -join \", \"\n\n$GenInfo = &#91;PSCustomObject]@{\n    \"Nom de l'appareil\" = $env:COMPUTERNAME\n    \"Domaine\" = if ($CompInfo.Domain) { $CompInfo.Domain } else { \"Non d\u00e9tect\u00e9\" }\n    \"Adresse IP (IPv4)\" = if ($IpAddress) { $IpAddress } else { \"Non d\u00e9tect\u00e9e\" }\n    \"Syst\u00e8me d'exploitation\" = if ($OsInfo) { $OsInfo.Caption } else { \"Acc\u00e8s refus\u00e9\" }\n    \"Utilisateur actif\" = $env:USERNAME\n    \"Droits locaux\" = if ($IsAdmin) { \"Administrateur Local\" } else { \"Utilisateur Standard\" }\n}\n$HtmlContent += \"&lt;h2>1. Informations G\u00e9n\u00e9rales&lt;\/h2>\" + (New-HtmlTable $GenInfo)\n\n# 2. Statut d'Enr\u00f4lement Simplifi\u00e9\n$DsregcmdStatus = dsregcmd \/status\n$AadJoined = ($DsregcmdStatus | Select-String \"AzureAdJoined : YES\") -ne $null\n$TenantId = ($DsregcmdStatus | Select-String \"TenantId :\") -replace \".*TenantId : \",\"\" -replace \"\\s+\",\"\"\n$MdmUrl = ($DsregcmdStatus | Select-String \"MdmUrl :\") -replace \".*MdmUrl : \",\"\" -replace \"\\s+\",\"\"\n\n$EnrollInfo = &#91;PSCustomObject]@{\n    \"Jointure Azure AD\" = if ($AadJoined) { \"Oui\" } else { \"Non\" }\n    \"Tenant ID\" = if ($TenantId) { $TenantId } else { \"Non d\u00e9tect\u00e9\" }\n    \"Gestionnaire MDM\" = if ($MdmUrl) { \"Configur\u00e9\" } else { \"Non d\u00e9tect\u00e9\" }\n}\n$HtmlContent += \"&lt;h2>2. Statut d'Enr\u00f4lement (R\u00e9sum\u00e9)&lt;\/h2>\" + (New-HtmlTable $EnrollInfo)\n\n# 3. Restrictions et Strat\u00e9gies\n$CmdRestricted = (Get-ItemProperty -Path \"HKCU:\\Software\\Policies\\Microsoft\\Windows\\System\" -Name \"DisableCMD\" -ErrorAction SilentlyContinue).DisableCMD -eq 1\n$RegRestricted = (Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" -Name \"DisableRegistryTools\" -ErrorAction SilentlyContinue).DisableRegistryTools -eq 1\n$UacStatus = (Get-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\" -Name \"EnableLUA\" -ErrorAction SilentlyContinue).EnableLUA -eq 1\n\n$PolInfo = &#91;PSCustomObject]@{\n    \"Acc\u00e8s Invite de Commande (CMD)\" = if ($CmdRestricted) { \"Bloqu\u00e9 par GPO\/MDM\" } else { \"Autoris\u00e9\" }\n    \"Acc\u00e8s \u00c9diteur de Registre\" = if ($RegRestricted) { \"Bloqu\u00e9 par GPO\/MDM\" } else { \"Autoris\u00e9\" }\n    \"UAC (Contr\u00f4le des comptes)\" = if ($UacStatus) { \"Actif (Demande d'\u00e9l\u00e9vation)\" } else { \"D\u00e9sactiv\u00e9 ou Inaccessible\" }\n}\n$HtmlContent += \"&lt;h2>3. Restrictions D\u00e9tect\u00e9es (Contexte Utilisateur)&lt;\/h2>\" + (New-HtmlTable $PolInfo)\n\n# 4. S\u00e9curit\u00e9\n$Defender = (Get-Service WinDefend -ErrorAction SilentlyContinue).Status\n$Firewall = (Get-Service mpssvc -ErrorAction SilentlyContinue).Status\n\n$SecInfo = &#91;PSCustomObject]@{\n    \"Service Windows Defender\" = if ($Defender) { $Defender } else { \"Acc\u00e8s Refus\u00e9\" }\n    \"Service Pare-feu Windows\" = if ($Firewall) { $Firewall } else { \"Acc\u00e8s Refus\u00e9\" }\n}\n$HtmlContent += \"&lt;h2>4. Posture de S\u00e9curit\u00e9 (Acc\u00e8s Limit\u00e9)&lt;\/h2>\" + (New-HtmlTable $SecInfo)\n\n# 5. Commandes de Diagnostic\n$HtmlContent += \"&lt;h2>5. Rappel : Commandes de Diagnostic et Reconnexion&lt;\/h2>\"\n$HtmlContent += \"&lt;table>\"\n$HtmlContent += \"&lt;tr>&lt;th>Rafra\u00eechir les GPO&lt;\/th>&lt;td>&lt;span class='cmd'>gpupdate \/force&lt;\/span>&lt;\/td>&lt;\/tr>\"\n$HtmlContent += \"&lt;tr>&lt;th>Rapport des GPO appliqu\u00e9es&lt;\/th>&lt;td>&lt;span class='cmd'>gpresult \/r&lt;\/span>&lt;\/td>&lt;\/tr>\"\n$HtmlContent += \"&lt;tr>&lt;th>V\u00e9rifier la connexion au Tenant&lt;\/th>&lt;td>&lt;span class='cmd'>dsregcmd \/status&lt;\/span>&lt;\/td>&lt;\/tr>\"\n$HtmlContent += \"&lt;tr>&lt;th>Forcer le renouvellement du jeton (PRT)&lt;\/th>&lt;td>&lt;span class='cmd'>dsregcmd \/RefreshPrt&lt;\/span>&lt;\/td>&lt;\/tr>\"\n$HtmlContent += \"&lt;tr>&lt;th>Ouvrir le menu de synchronisation MDM&lt;\/th>&lt;td>&lt;span class='cmd'>start ms-settings:workplace&lt;\/span>&lt;\/td>&lt;\/tr>\"\n$HtmlContent += \"&lt;\/table>\"\n\n# 6. Processus en cours\n$HtmlContent += \"&lt;h2>6. Processus en cours d'ex\u00e9cution (Contexte Utilisateur)&lt;\/h2>\"\n$HtmlContent += \"&lt;table class='table-compact'>\"\n$HtmlContent += \"&lt;tr>&lt;th>Nom du Processus&lt;\/th>&lt;th>PID&lt;\/th>&lt;th>M\u00e9moire (Mo)&lt;\/th>&lt;\/tr>\"\n\n$Processes = Get-Process -ErrorAction SilentlyContinue | Select-Object Name, Id, @{Name=\"MemMB\";Expression={&#91;math]::Round($_.WorkingSet \/ 1MB, 2)}} | Sort-Object Name\nforeach ($Proc in $Processes) {\n    $HtmlContent += \"&lt;tr>&lt;td>$($Proc.Name)&lt;\/td>&lt;td>$($Proc.Id)&lt;\/td>&lt;td>$($Proc.MemMB)&lt;\/td>&lt;\/tr>\"\n}\n$HtmlContent += \"&lt;\/table>\"\n\n# 7. dsregcmd \/status d\u00e9taill\u00e9\n$HtmlContent += \"&lt;h2>7. D\u00e9tails d'Enr\u00f4lement (R\u00e9sultat brut de dsregcmd \/status)&lt;\/h2>\"\n$HtmlContent += \"&lt;table>\"\n$HtmlContent += \"&lt;tr>&lt;th>Param\u00e8tre&lt;\/th>&lt;th>Valeur&lt;\/th>&lt;th>Commentaire \/ Signification&lt;\/th>&lt;\/tr>\"\n\n$DsregDict = @{\n    \"AzureAdJoined\" = \"Jonction native au cloud (Azure AD\/Entra ID). YES = G\u00e9r\u00e9 par l'entreprise.\"\n    \"EnterpriseJoined\" = \"Jonction \u00e0 l'infrastructure locale (ADDS). Souvent li\u00e9 \u00e0 l'\u00e9tat Hybride.\"\n    \"DomainJoined\" = \"Membre d'un domaine Active Directory local classique.\"\n    \"Device Name\" = \"Nom de la machine enregistr\u00e9 dans l'annuaire Microsoft.\"\n    \"DeviceId\" = \"Identifiant unique de cet appareil dans le tenant (locataire) cloud.\"\n    \"Thumbprint\" = \"Empreinte du certificat d'identit\u00e9 cryptographique de l'appareil.\"\n    \"DeviceCertificateValidity\" = \"P\u00e9riode de validit\u00e9 du certificat d'identit\u00e9 de la machine.\"\n    \"KeyContainerId\" = \"Identifiant du conteneur de cl\u00e9 mat\u00e9rielle.\"\n    \"KeyProvider\" = \"Composant fournissant le stockage des cl\u00e9s (ex: Microsoft Platform Crypto Provider).\"\n    \"TpmProtected\" = \"Indique si les identit\u00e9s sont prot\u00e9g\u00e9es mat\u00e9riellement par la puce TPM. YES est attendu pour la s\u00e9curit\u00e9.\"\n    \"DeviceAuthStatus\" = \"\u00c9tat d'authentification de l'appareil aupr\u00e8s des serveurs. SUCCESS est attendu.\"\n    \"TenantName\" = \"Nom principal de l'entreprise ou domaine par d\u00e9faut M365.\"\n    \"TenantId\" = \"Identifiant unique global du locataire de votre entreprise.\"\n    \"Idp\" = \"Serveur d'identit\u00e9 utilis\u00e9 (Identity Provider), g\u00e9n\u00e9ralement login.windows.net.\"\n    \"MdmUrl\" = \"URL du serveur d'enr\u00f4lement MDM (ex: Microsoft Intune).\"\n    \"MdmTouUrl\" = \"URL des conditions d'utilisation (Terms of Use) de l'entreprise.\"\n    \"MdmComplianceUrl\" = \"URL utilis\u00e9e par le syst\u00e8me pour valider si l'appareil respecte les r\u00e8gles de conformit\u00e9.\"\n    \"SettingsUrl\" = \"URL du portail de param\u00e8tres du compte utilisateur.\"\n    \"JoinSrvVersion\" = \"Version de l'API d'enregistrement.\"\n    \"JoinSrvUrl\" = \"URL du service d'enregistrement des appareils Microsoft.\"\n    \"JoinSrvId\" = \"URN de l'application de jonction.\"\n    \"KeySrvVersion\" = \"Version du service de provisionnement de cl\u00e9s.\"\n    \"KeySrvUrl\" = \"URL du service de gestion de cl\u00e9s cloud.\"\n    \"KeySrvId\" = \"URN du service de cl\u00e9s.\"\n    \"WebAuthNSrvVersion\" = \"Version du service WebAuthN (Authentification sans mot de passe).\"\n    \"WebAuthNSrvUrl\" = \"URL du service d'authentification forte.\"\n    \"WebAuthNSrvId\" = \"URN du service WebAuthN.\"\n    \"DeviceManagementSrvVer\" = \"Version du protocole de gestion d'appareil.\"\n    \"DeviceManagementSrvUrl\" = \"URL du service de gestion d'appareil (li\u00e9 au MDM).\"\n    \"DeviceManagementSrvId\" = \"URN du service de gestion.\"\n    \"NgcSet\" = \"Indique si un code PIN (Windows Hello for Business) est configur\u00e9 pour l'utilisateur. (YES = Actif).\"\n    \"NgcKeyId\" = \"Identifiant de la cl\u00e9 Windows Hello associ\u00e9e.\"\n    \"CanReset\" = \"Indique si l'utilisateur est autoris\u00e9 \u00e0 r\u00e9initialiser son code PIN depuis l'\u00e9cran de verrouillage.\"\n    \"WorkplaceJoined\" = \"Appareil personnel enregistr\u00e9 (BYOD). Sur un PC d'entreprise, ceci est g\u00e9n\u00e9ralement NO.\"\n    \"WamDefaultSet\" = \"Indique si un compte par d\u00e9faut est configur\u00e9 dans le Web Account Manager (SSO Windows).\"\n    \"WamDefaultAuthority\" = \"Autorit\u00e9 g\u00e9rant le WAM (g\u00e9n\u00e9ralement 'organizations').\"\n    \"WamDefaultId\" = \"URL de l'autorit\u00e9 de compte par d\u00e9faut.\"\n    \"WamDefaultGUID\" = \"GUID du fournisseur WAM.\"\n    \"AzureAdPrt\" = \"Jeton de rafra\u00eechissement principal (PRT). Si YES : L'authentification unique (SSO) fonctionne, acc\u00e8s cloud autoris\u00e9.\"\n    \"EnterprisePrt\" = \"Jeton PRT pour l'infrastructure r\u00e9seau locale.\"\n    \"AzureAdPrtUpdateTime\" = \"Date et heure de la derni\u00e8re mise \u00e0 jour\/v\u00e9rification du jeton PRT cloud.\"\n    \"AzureAdPrtExpiryTime\" = \"Date d'expiration th\u00e9orique du jeton PRT si le PC reste hors ligne.\"\n    \"AzureAdPrtAuthority\" = \"Serveur d'autorit\u00e9 ayant d\u00e9livr\u00e9 le PRT.\"\n    \"EnterprisePrtUpdateTime\" = \"Derni\u00e8re mise \u00e0 jour du jeton PRT local.\"\n    \"EnterprisePrtExpiryTime\" = \"Expiration du jeton PRT local.\"\n    \"EnterprisePrtAuthority\" = \"Serveur d'autorit\u00e9 local (ex: ADFS).\"\n    \"AcquirePrtDiagnostics\" = \"Diagnostic de l'obtention du jeton. PRESENT indique un \u00e9tat nominal.\"\n    \"PreviousPrtsDiagnostics\" = \"\u00c9tat des jetons pr\u00e9c\u00e9dents (pour le d\u00e9pannage).\"\n    \"ServerErrorCode\" = \"Code d'erreur remont\u00e9 en cas de probl\u00e8me de synchronisation (vide si tout va bien).\"\n    \"ServerMessage\" = \"Message descriptif du serveur lors d'une erreur.\"\n    \"HttpsStatus\" = \"Code de r\u00e9ponse HTTP du serveur lors de la derni\u00e8re connexion. (200 = OK).\"\n    \"PreReqResult\" = \"\u00c9tat de validation des pr\u00e9requis de connexion.\"\n    \"IsUserAzureAD\" = \"L'utilisateur actuellement connect\u00e9 est-il un compte Azure AD ?\"\n    \"PolicyEnabled\" = \"Les strat\u00e9gies li\u00e9es au composant sont-elles activ\u00e9es ?\"\n    \"PostLogonEnabled\" = \"L'enregistrement post-connexion est-il activ\u00e9 ?\"\n}\n\nforeach ($line in $DsregcmdStatus) {\n    $cleanLine = $line.Trim()\n    \n    # Ignorer les bordures et lignes vides\n    if (&#91;string]::IsNullOrWhiteSpace($cleanLine) -or $cleanLine -match \"^\\+-+\\+$\" -or $cleanLine -match \"^\\|.*\\|$\") {\n        continue\n    }\n\n    # D\u00e9tecter les en-t\u00eates de section (lignes sans le caract\u00e8re \":\")\n    if ($cleanLine -notmatch \":\") {\n        $HtmlContent += \"&lt;tr>&lt;td colspan='3' class='section-header'>$cleanLine&lt;\/td>&lt;\/tr>\"\n        continue\n    }\n\n    # S\u00e9parer la cl\u00e9 de la valeur\n    $parts = $cleanLine -split \":\", 2\n    $key = $parts&#91;0].Trim()\n    $val = $parts&#91;1].Trim()\n    \n    # Assigner le commentaire\n    $comment = \"Donn\u00e9e technique interne ou information de diagnostic non document\u00e9e.\"\n    if ($DsregDict.ContainsKey($key)) {\n        $comment = $DsregDict&#91;$key]\n    }\n    \n    $HtmlContent += \"&lt;tr>&lt;td>&lt;strong>$key&lt;\/strong>&lt;\/td>&lt;td>$val&lt;\/td>&lt;td>$comment&lt;\/td>&lt;\/tr>\"\n}\n\n$HtmlContent += \"&lt;\/table>\"\n$HtmlContent += \"&lt;\/body>&lt;\/html>\"\n\n&#91;System.IO.File]::WriteAllText($ReportPath, $HtmlContent, &#91;System.Text.Encoding]::UTF8)\nInvoke-Item $ReportPath<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/www.submarinecablemap.com nettoyer windows de ses outils inutiles (bloatware) Bulk Crap Uninstaller GitHub &#8211; Klocman\/Bulk-Crap-Uninstaller: Remove large amounts of unwanted applications quickly. Autounattend pour d\u00e9marrage windows 11 Generate autounattend.xml files for Windows&nbsp;10\/11 un doute sur un programme que vous souhaitez retirer ? : Should I Remove It? https:\/\/www.shouldiremoveit.com\/ R\u00e9cup\u00e9rer des donn\u00e9es effac\u00e9es sur un disque dur &hellip; <a href=\"https:\/\/geekgen1.be\/index.php\/outils-osint\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Outils Divers<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":6,"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":63,"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/pages\/15\/revisions\/63"}],"wp:attachment":[{"href":"https:\/\/geekgen1.be\/index.php\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}