O:60:"SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult":7:{s:72:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult interfaces";a:0:{}s:69:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult classes";a:1:{s:36:"BuyerKiosk\Auth\Services\AuditLogger";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Class_":10:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ name";s:11:"AuditLogger";s:68:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespacedName";s:36:"BuyerKiosk\Auth\Services\AuditLogger";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ namespace";s:24:"BuyerKiosk\Auth\Services";s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ file";s:98:"/Users/rvanvuren/Projects/buyerkiosk-web/userfrosting/src/BuyerKiosk/Auth/Services/AuditLogger.php";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ startLine";i:13;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ endLine";i:430;s:65:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ parentClass";N;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ interfaces";a:0:{}s:60:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ traits";a:0:{}s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Class_ methods";a:25:{s:11:"__construct";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:11:"__construct";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:52;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:55;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";E:63:"SebastianBergmann\CodeCoverage\StaticAnalysis\Visibility:Public";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:20:"__construct(PDO $db)";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:3:"log";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:3:"log";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:65;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:92;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:58:"log(string $eventType, ?int $userId, array $details): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:4;}s:8:"logLogin";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:8:"logLogin";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:101;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:107;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:44:"logLogin(int $userId, ?string $method): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:14:"logLoginFailed";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:14:"logLoginFailed";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:117;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:124;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:78:"logLoginFailed(?int $userId, string $reason, ?string $attemptedUsername): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}s:9:"logLogout";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:9:"logLogout";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:133;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:136;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:45:"logLogout(int $userId, ?string $method): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:17:"logPasswordChange";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:17:"logPasswordChange";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:145;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:148;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:50:"logPasswordChange(int $userId, bool $forced): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:23:"logPasswordResetRequest";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:23:"logPasswordResetRequest";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:157;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:162;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:58:"logPasswordResetRequest(?int $userId, string $email): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:24:"logPasswordResetComplete";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:24:"logPasswordResetComplete";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:170;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:173;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:43:"logPasswordResetComplete(int $userId): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:13:"logMfaEnabled";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:13:"logMfaEnabled";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:182;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:185;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:48:"logMfaEnabled(int $userId, string $method): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:14:"logMfaDisabled";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:14:"logMfaDisabled";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:193;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:196;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:33:"logMfaDisabled(int $userId): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:13:"logMfaSuccess";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:13:"logMfaSuccess";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:205;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:208;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:48:"logMfaSuccess(int $userId, string $method): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:12:"logMfaFailed";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:12:"logMfaFailed";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:217;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:220;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:47:"logMfaFailed(int $userId, string $reason): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:14:"logTokenIssued";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:14:"logTokenIssued";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:229;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:232;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:52:"logTokenIssued(int $userId, string $tokenType): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:17:"logTokenRefreshed";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:17:"logTokenRefreshed";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:240;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:243;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:36:"logTokenRefreshed(int $userId): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:15:"logTokenRevoked";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:15:"logTokenRevoked";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:253;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:259;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:67:"logTokenRevoked(int $userId, string $reason, int $tokenCount): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:16:"logAccountLocked";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:16:"logAccountLocked";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:269;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:275;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:77:"logAccountLocked(int $userId, int $failedAttempts, string $lockedUntil): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:18:"logAccountUnlocked";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:18:"logAccountUnlocked";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:284;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:287;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:53:"logAccountUnlocked(int $userId, string $method): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:19:"logRememberMeIssued";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:19:"logRememberMeIssued";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:295;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:298;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:38:"logRememberMeIssued(int $userId): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:17:"logRememberMeUsed";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:17:"logRememberMeUsed";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:306;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:309;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:36:"logRememberMeUsed(int $userId): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:20:"logRememberMeRevoked";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:20:"logRememberMeRevoked";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:318;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:321;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:55:"logRememberMeRevoked(int $userId, string $reason): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:23:"logPasswordHashUpgraded";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:23:"logPasswordHashUpgraded";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:331;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:337;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:76:"logPasswordHashUpgraded(int $userId, string $oldType, string $newType): bool";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:1;}s:15:"getRecentEvents";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:15:"getRecentEvents";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:346;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:369;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:19;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:47:"getRecentEvents(int $userId, int $limit): array";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:3;}s:11:"getClientIp";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:11:"getClientIp";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:376;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:389;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";E:64:"SebastianBergmann\CodeCoverage\StaticAnalysis\Visibility:Private";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:22:"getClientIp(): ?string";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:3;}s:12:"getUserAgent";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:12:"getUserAgent";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:396;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:406;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:173;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:23:"getUserAgent(): ?string";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:3;}s:9:"maskEmail";O:52:"SebastianBergmann\CodeCoverage\StaticAnalysis\Method":6:{s:58:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method name";s:9:"maskEmail";s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method startLine";i:414;s:61:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method endLine";i:429;s:64:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method visibility";r:173;s:63:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method signature";s:32:"maskEmail(string $email): string";s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\Method cyclomaticComplexity";i:2;}}}}s:68:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult traits";a:0:{}s:71:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult functions";a:0:{}s:73:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult linesOfCode";O:57:"SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode":3:{s:70:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode linesOfCode";i:431;s:77:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode commentLinesOfCode";i:185;s:80:" SebastianBergmann\CodeCoverage\StaticAnalysis\LinesOfCode nonCommentLinesOfCode";i:246;}s:77:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult executableLines";a:82:{i:54;i:3;i:67;i:5;i:68;i:6;i:69;i:7;i:73;i:8;i:77;i:8;i:79;i:9;i:80;i:9;i:81;i:9;i:82;i:9;i:83;i:9;i:84;i:9;i:85;i:9;i:87;i:10;i:88;i:11;i:89;i:12;i:90;i:13;i:103;i:14;i:104;i:14;i:105;i:14;i:106;i:14;i:119;i:15;i:120;i:16;i:121;i:17;i:123;i:18;i:135;i:19;i:147;i:20;i:159;i:21;i:160;i:21;i:161;i:21;i:172;i:22;i:184;i:23;i:195;i:24;i:207;i:25;i:219;i:26;i:231;i:27;i:242;i:28;i:255;i:29;i:256;i:29;i:257;i:29;i:258;i:29;i:271;i:30;i:272;i:30;i:273;i:30;i:274;i:30;i:286;i:31;i:297;i:32;i:308;i:33;i:320;i:34;i:333;i:35;i:334;i:35;i:335;i:35;i:336;i:35;i:348;i:36;i:354;i:36;i:355;i:37;i:356;i:38;i:357;i:39;i:359;i:40;i:362;i:41;i:363;i:42;i:364;i:43;i:368;i:44;i:379;i:45;i:380;i:46;i:381;i:47;i:384;i:48;i:385;i:49;i:388;i:50;i:398;i:51;i:401;i:52;i:402;i:53;i:405;i:54;i:416;i:55;i:417;i:56;i:418;i:57;i:421;i:58;i:422;i:59;i:424;i:60;i:425;i:61;i:426;i:62;i:428;i:63;}s:74:" SebastianBergmann\CodeCoverage\StaticAnalysis\AnalysisResult ignoredLines";a:1:{i:0;i:13;}}