nfTlWNl rn Ѻq$³*%yNk9S8jnM/=kt8_ YaTE7#3Qf!RP CӝINgþq ] OEa3dEwԞX^\`Lٔ*ܝIc3ٿ ZmW2d.kغkGrJsf]ZV hHWgq!`P D\isPaܧ\ Ѻq$³*AӪ}# [EhrM U* W@9}~z]I 5 Ыu eh/_gOY-ޏ v;_1IrQK?2}ej]cQ=H;};fr%n5񞯫_QT63xW,:eNS9 ?p87Fo$^3(rN%hkzki#71I~}2 )BGSU t?id~bJU|K6BRBʡ:{o0*Y[a*0v\!%MmF3x6텚/Z[(y%fJ4ѴDZF-]߶JFa[?iYhλW0հ'^; p:FϡBj">WQDZu*Ne6l1ԧ^ ?0k2(x섐`}{:QzDݵ `݄:eXȯ_Zv8 vAGU߂Idvd[)7s39嬢JʰVZ JNH)mT"%79(40TZ Bd2y~ŘI)5۶I*=ORJt곂"n9F1i_VQcj! 7L2JnU<7:v0cD:`Q~/'N/]Gs"?S-p|wfWxKΪ1: \4@:|?--u&&(W5TƮ,9gV˙T(beJ["(M犔h) ̩{qߨeXrx RjB"Kl}a&?3?stmhBc;D%  ->EPr$cl&N 2jėG|xv=Wl?(C:NP@_ f!o4 vAGU8J /d5ؑ]!R,EsjM@ /ڒZ51 (~U|M/JIӇsNwR5LstS>^Czjĥv-;Ajuׄƶ LVtrM45PAX%:S%צEiְZYBuQWUA^dd{3;uf]tsXsNh{,a$M A`nH:qэc $0d-M`UVghA95v N 3捁LYbIP0AG@x yU% bVqPdu:[714m˥ݩ: )(\.2F6uNqcInOz\Zw}r!VUn P9eᑢ.R>pzÓqˊ2lHdb3VH'hGpbߘhd6X%N;\C>; j9mڗ)bի +ycrZ䆵@r_ް0.RK^&,ٵ,I=LoST4h1N0} tggُU:qap^cU=~<8*=$Cy+`~d%;DA(³{:Em 2^[> .+Pls9dmy<^YWiW-G!wɆ#u^65B+I,uKz '|c. <[9;㣤uIX(}E;`,{ KxϷWG3SgGSK bu2=D-^6S\pbP$dRhaˑ#t6y姥ʘa(aƝjHk?AЎ1luHKxfJu)5V~l ,bk$y \ng0`5=mdYᙥ"|nTle05Zg(Լ9=z2F >џֺadG#njI( n΀.YNut>aŐzʭAJߘu!nHxB;u=zҰp# <.s 5-X pX7= 0) { return (float) $number; } throw new Exception(ExcelError::NAN()); } public static function silly1900(DateTime $PHPDateObject, string $mod = '-1 day'): void { $isoDate = $PHPDateObject->format('c'); if ($isoDate < '1900-03-01') { $PHPDateObject->modify($mod); } } public static function dateParse(string $string): array { return self::forceArray(date_parse($string)); } public static function dateParseSucceeded(array $dateArray): bool { return $dateArray['error_count'] === 0; } /** * Despite documentation, date_parse probably never returns false. * Just in case, this routine helps guarantee it. * * @param array|false $dateArray */ private static function forceArray($dateArray): array { return is_array($dateArray) ? $dateArray : ['error_count' => 1]; } }