private static function normalize($cn)
 {
     $cn_orig = $cn;
     $regex_alpha = "([A-Z]{1,3})";
     $regex_num = "([0-9]{0,4})";
     $regex_extra = "([ ]?\\.[A-Z0-9][0-9]*)";
     $regex = "/^{$regex_alpha}{$regex_num}?{$regex_extra}?/";
     $matches = array();
     if (preg_match($regex, $cn, $matches)) {
         //normalize alpha
         $alpha = $matches[1];
         //.\util\Utility::ntimes('*',3-strlen($matches[1]));
         //normalize num
         if (array_key_exists(2, $matches)) {
             $num = $matches[2] . \util\Utility::ntimes('*', 4 - strlen($matches[2]));
         } else {
             $num = "****";
         }
         //normalize extra
         if (array_key_exists(3, $matches)) {
             $extra_match = array();
             if (preg_match("/([A-Z])/", $matches[3], $extra_match)) {
                 $ch = $extra_match[0];
                 $i = 2;
             } else {
                 $ch = '*';
                 $i = 1;
             }
             $extra = $ch . substr($matches[3], $i);
         } else {
             $extra = "";
         }
         return str_split($alpha . $num . $extra);
     }
     error_log("failed to normalize: {$cn_orig}");
     return;
 }