- class TalkingClock { 
- 		private static final String[]-  zeroToTwelve  = { "zero"- ,  "one"- ,  "two"- ,  "three"- ,  "four"- ,  "five"- ,  "six"- ,  "seven"- , 
 
- 				"eight", "nine", "ten", "eleven", "twelve" }; 
- 		private static final String[]-  teens  = { "thirteen"- ,  "fourteen"- ,  "fifteen"- ,  "sixteen"- ,  "seventeen"- ,  "eighteen"- , 
 
- 				"nineteen" }; 
- 		private static final String[]-  twentyToFifty  = { "twenty"- ,  "thirty"- ,  "fourty"- ,  "fifty" };
 
- 		private static final String-  PREFIX  = "It's";
 
-   
- 			int-  hour  = Integer- . parseInt(- hourString );
 
- 			if (hour > 11) { 
- 				suffix = "pm"; 
- 			} 
- 			if (hour > 12) { 
- 				hour = hour - 12; 
- 			} 
- 			if (hour == 0) { 
- 				hour = 12; 
- 			} 
- 			String-  hourInWords  =-  zeroToTwelve [- hour ] + " " +-  suffix ;
 
- 			return hourInWords; 
- 		} 
-   
- 			int-  minutes  = Integer- . parseInt(- minString );
 
- 			if (minutes == 0) { 
- 				// default value of minutesString 
- 			} else if (minutes < 10) { 
- 				minutesString = "oh " + zeroToTwelve[minutes]; 
- 			} else if (minutes < 13) { 
- 				minutesString = zeroToTwelve[minutes]; 
- 			} else if (minutes < 20) { 
- 				minutesString = teens[minutes - 13]; 
- 			} else if ((minutes % 10) == 0) { 
- 				minutesString  =-  twentyToFifty [Math- . floorDiv(- minutes,  20)];
- 			} else { 
- 				minutesString  =-  twentyToFifty [Math- . floorDiv(- minutes,  10) - 2] + " " +-  zeroToTwelve [(- minutes  % 10)];
- 			} 
- 			return minutesString; 
- 		} 
-   
- 		private static String[]-  parseStringTimeToArray (String-  time ) {
 
- 			if (time == null) { 
- 			} 
- 			String[]-  timeArr  =-  time. split(":");
 
- 			if (timeArr.length != 2) { 
- 			} 
- 			return timeArr; 
- 		} 
-   
- 			String[]-  parsedTime  =-  parseStringTimeToArray (- time );
 
- 			String[]-  hourWithSuffix  =-  hourToWords (- parsedTime [0])- . split(" ");
 
- 			String-  hour  =-  hourWithSuffix [0];
 
- 			String-  suffix  =-  hourWithSuffix [1];
 
- 			String-  minutes  =-  minutesToWords (- parsedTime [1]);
 
- 			if ("".equals(minutes)) { 
- 				return PREFIX + " " + hour + " " + suffix; 
- 			} else { 
- 				return PREFIX + " " + hour + " " + minutes + " " + suffix; 
- 			} 
-   
- 		} 
-   
- 		public static void-  main (String[]-  args ) {
 
- 			String[]-  times  = { "00:00"- ,  "01:30"- ,  "12:05"- ,  "14:01"- ,  "20:29"- ,  "21:00" };
 
- 				System- . out- . println(- timeToWords (- time ));
 
- 			} 
-   
- 		} 
- 	} 
				Y2xhc3MgVGFsa2luZ0Nsb2NrIHsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB6ZXJvVG9Ud2VsdmUgPSB7ICJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsCgkJCQkiZWlnaHQiLCAibmluZSIsICJ0ZW4iLCAiZWxldmVuIiwgInR3ZWx2ZSIgfTsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB0ZWVucyA9IHsgInRoaXJ0ZWVuIiwgImZvdXJ0ZWVuIiwgImZpZnRlZW4iLCAic2l4dGVlbiIsICJzZXZlbnRlZW4iLCAiZWlnaHRlZW4iLAoJCQkJIm5pbmV0ZWVuIiB9OwoJCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHR3ZW50eVRvRmlmdHkgPSB7ICJ0d2VudHkiLCAidGhpcnR5IiwgImZvdXJ0eSIsICJmaWZ0eSIgfTsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRklYID0gIkl0J3MiOwoJCgkJcHVibGljIHN0YXRpYyBTdHJpbmcgaG91clRvV29yZHMoU3RyaW5nIGhvdXJTdHJpbmcpIHsKCQkJaW50IGhvdXIgPSBJbnRlZ2VyLnBhcnNlSW50KGhvdXJTdHJpbmcpOwoJCQlTdHJpbmcgc3VmZml4ID0gImFtIjsKCQkJaWYgKGhvdXIgPiAxMSkgewoJCQkJc3VmZml4ID0gInBtIjsKCQkJfQoJCQlpZiAoaG91ciA+IDEyKSB7CgkJCQlob3VyID0gaG91ciAtIDEyOwoJCQl9CgkJCWlmIChob3VyID09IDApIHsKCQkJCWhvdXIgPSAxMjsKCQkJfQoJCQlTdHJpbmcgaG91ckluV29yZHMgPSB6ZXJvVG9Ud2VsdmVbaG91cl0gKyAiICIgKyBzdWZmaXg7CgkJCXJldHVybiBob3VySW5Xb3JkczsKCQl9CgkKCQlwdWJsaWMgc3RhdGljIFN0cmluZyBtaW51dGVzVG9Xb3JkcyhTdHJpbmcgbWluU3RyaW5nKSB7CgkJCWludCBtaW51dGVzID0gSW50ZWdlci5wYXJzZUludChtaW5TdHJpbmcpOwoJCQlTdHJpbmcgbWludXRlc1N0cmluZyA9ICIiOwoJCQlpZiAobWludXRlcyA9PSAwKSB7CgkJCQkvLyBkZWZhdWx0IHZhbHVlIG9mIG1pbnV0ZXNTdHJpbmcKCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgMTApIHsKCQkJCW1pbnV0ZXNTdHJpbmcgPSAib2ggIiArIHplcm9Ub1R3ZWx2ZVttaW51dGVzXTsKCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgMTMpIHsKCQkJCW1pbnV0ZXNTdHJpbmcgPSB6ZXJvVG9Ud2VsdmVbbWludXRlc107CgkJCX0gZWxzZSBpZiAobWludXRlcyA8IDIwKSB7CgkJCQltaW51dGVzU3RyaW5nID0gdGVlbnNbbWludXRlcyAtIDEzXTsKCQkJfSBlbHNlIGlmICgobWludXRlcyAlIDEwKSA9PSAwKSB7CgkJCQltaW51dGVzU3RyaW5nID0gdHdlbnR5VG9GaWZ0eVtNYXRoLmZsb29yRGl2KG1pbnV0ZXMsIDIwKV07CgkJCX0gZWxzZSB7CgkJCQltaW51dGVzU3RyaW5nID0gdHdlbnR5VG9GaWZ0eVtNYXRoLmZsb29yRGl2KG1pbnV0ZXMsIDEwKSAtIDJdICsgIiAiICsgemVyb1RvVHdlbHZlWyhtaW51dGVzICUgMTApXTsKCQkJfQoJCQlyZXR1cm4gbWludXRlc1N0cmluZzsKCQl9CgkKCQlwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBwYXJzZVN0cmluZ1RpbWVUb0FycmF5KFN0cmluZyB0aW1lKSB7CgkJCWlmICh0aW1lID09IG51bGwpIHsKCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBpbnB1dCB0aW1lIG11c3Qgbm90IGJlIG51bGwiKTsKCQkJfQoJCQlTdHJpbmdbXSB0aW1lQXJyID0gdGltZS5zcGxpdCgiOiIpOwoJCQlpZiAodGltZUFyci5sZW5ndGggIT0gMikgewoJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGlucHV0IHRpbWUgbXVzdCBiZSBpbiBmb3JtYXQgXCJISDpNTVwiIik7CgkJCX0KCQkJcmV0dXJuIHRpbWVBcnI7CgkJfQoJCgkJcHVibGljIHN0YXRpYyBTdHJpbmcgdGltZVRvV29yZHMoU3RyaW5nIHRpbWUpIHsKCQkJU3RyaW5nW10gcGFyc2VkVGltZSA9IHBhcnNlU3RyaW5nVGltZVRvQXJyYXkodGltZSk7CgkJCVN0cmluZ1tdIGhvdXJXaXRoU3VmZml4ID0gaG91clRvV29yZHMocGFyc2VkVGltZVswXSkuc3BsaXQoIiAiKTsKCQkJU3RyaW5nIGhvdXIgPSBob3VyV2l0aFN1ZmZpeFswXTsKCQkJU3RyaW5nIHN1ZmZpeCA9IGhvdXJXaXRoU3VmZml4WzFdOwoJCQlTdHJpbmcgbWludXRlcyA9IG1pbnV0ZXNUb1dvcmRzKHBhcnNlZFRpbWVbMV0pOwoJCQlpZiAoIiIuZXF1YWxzKG1pbnV0ZXMpKSB7CgkJCQlyZXR1cm4gUFJFRklYICsgIiAiICsgaG91ciArICIgIiArIHN1ZmZpeDsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBQUkVGSVggKyAiICIgKyBob3VyICsgIiAiICsgbWludXRlcyArICIgIiArIHN1ZmZpeDsKCQkJfQoJCgkJfQoJCQoJCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQkJU3RyaW5nW10gdGltZXMgPSB7ICIwMDowMCIsICIwMTozMCIsICIxMjowNSIsICIxNDowMSIsICIyMDoyOSIsICIyMTowMCIgfTsKCQkJZm9yIChTdHJpbmcgdGltZSA6IHRpbWVzKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4odGltZVRvV29yZHModGltZSkpOwoJCQl9CgkJCQoJCX0KCX0=