@Override
	@SuppressWarnings("unchecked")
	public String listHolidays(Area A, String otherParms)
	{
		final Object resp=getHolidayFile();
		if(resp instanceof String)
			return (String)resp;
		List<String> steps=null;
		if(resp instanceof List)
			steps=(List<String>)resp;
		else
			return "Unknown error.";
		String areaName=A.Name().toUpperCase().trim();
		if(otherParms.equalsIgnoreCase("ALL"))
			areaName=null;
		final StringBuffer str=new StringBuffer(L("^xDefined Quest Holidays^?\n\r"));
		List<String> line=null;
		String var=null;
		List<String> V=null;
		str.append("^H#  "+CMStrings.padRight(L("Holiday Name"),20)+CMStrings.padRight(L("Area Name(s)"),50)+"^?\n\r");
		for(int s=1;s<steps.size();s++)
		{
			final String step=steps.get(s);
			V=Resources.getFileLineVector(new StringBuffer(step));
			final List<List<String>> cmds=CMLib.quests().parseQuestCommandLines(V,"SET",0);
			List<String> areaLine=null;
			List<String> nameLine=null;
			for(int v=0;v<cmds.size();v++)
			{
				line=cmds.get(v);
				if(line.size()>1)
				{
					var=line.get(1).toUpperCase();
					if (var.equals("AREAGROUP"))
					{
						areaLine = line;
					}
					if (var.equals("NAME"))
					{
						nameLine = line;
					}
				}
			}
			if(nameLine!=null)
			{
				boolean contains=true;//(areaName==null);
				if(areaLine!=null)
				{
					if((!contains) && (areaName != null))
					for(int l=2;l<areaLine.size();l++)
					{
						if(areaName.equalsIgnoreCase(areaLine.get(l)))
							{
								contains = true;
								break;
							}
					}
				}
				else
				{
					areaLine=new XVector<String>("","","*special*");
					contains=true;
				}
				if(contains)
				{
					final String name=CMParms.combine(nameLine,2);
					str.append(CMStrings.padRight(""+s,3)+CMStrings.padRight(name,20)+CMStrings.padRight(CMParms.combineQuoted(areaLine,2),30)+"\n\r");
				}
			}
		}
		return str.toString();
	}