[Scummvm-git-logs] scummvm master -> b37a3e522461236bb4804415f83fbddb12d862a4

sev- sev at scummvm.org
Tue Feb 7 09:48:03 CET 2017


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7467771480 DIRECTOR: Lingo: Documented D4 "Logical operators and functions" Lingo
eb986c7cc3 DIRECTOR: Lingo: Documented D4 "Menus" Lingo
e0b7e823b2 DIRECTOR: Lingo: Documented D4 "Mouse and pointer" Lingo
b37a3e5224 DIRECTOR: Lingo: Documented D4 "Movie in a window" Lingo


Commit: 746777148022c95490c4ae8fb8f5259f7bab31a3
    https://github.com/scummvm/scummvm/commit/746777148022c95490c4ae8fb8f5259f7bab31a3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T09:06:05+01:00

Commit Message:
DIRECTOR: Lingo: Documented D4 "Logical operators and functions" Lingo

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index adcd276..b080774 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -120,10 +120,11 @@ static struct BuiltinProto {
 	// Types
 	{ "floatP",			Lingo::b_floatP,		1, 1, true },	//		D3
 	{ "ilk",	 		Lingo::b_ilk,			1, 2, false },	//			D4 f
-	{ "integerp",		Lingo::b_integerp,		1, 1, true },	// D2
-	{ "objectp",		Lingo::b_objectp,		1, 1, true },	// D2
-	{ "stringp",		Lingo::b_stringp,		1, 1, true },	// D2
-	{ "symbolp",		Lingo::b_symbolp,		1, 1, true },	// D2
+	{ "integerp",		Lingo::b_integerp,		1, 1, true },	// D2 f
+	{ "objectp",		Lingo::b_objectp,		1, 1, true },	// D2 f
+	{ "puctureP",		Lingo::b_pictureP,		1, 1, true },	//			D4 f
+	{ "stringp",		Lingo::b_stringp,		1, 1, true },	// D2 f
+	{ "symbolp",		Lingo::b_symbolp,		1, 1, true },	// D2 f
 	// Misc
 	{ "alert",	 		Lingo::b_alert,			1, 1, false },	// D2 c
 	{ "cursor",	 		Lingo::b_cursor,		1, 1, false },	// D2
@@ -146,6 +147,7 @@ static struct BuiltinProto {
 		// go													// D2
 	{ "importFileInto",	Lingo::b_importFileInto,2, 2, false },	//			D4 c
 	{ "installMenu",	Lingo::b_installMenu,	1, 1, false },	// D2
+	{ "intersect",		Lingo::b_intersect,		2, 2, false },	//			D4 f
 	{ "label",			Lingo::b_label,			1, 1, true },	// D2
 	{ "marker",			Lingo::b_marker,		1, 1, true },	// D2
 	{ "move",			Lingo::b_move,			1, 2, false },	//			D4 c
@@ -172,7 +174,7 @@ static struct BuiltinProto {
 	{ "sound-fadeOut",	Lingo::b_soundFadeOut, 	1, 2, false },	//		D3
 	{ "sound-playFile",	Lingo::b_soundPlayFile, 2, 2, false },	//		D3 c
 	{ "sound-stop",		Lingo::b_soundStop,	 	1, 1, false },	//		D3
-	{ "soundBusy",		Lingo::b_soundBusy,	 	1, 1, true },	//		D3
+	{ "soundBusy",		Lingo::b_soundBusy,	 	1, 1, true },	//		D3 f
 	// Constants
 	{ "backspace",		Lingo::b_backspace,		0, 0, false },	// D2
 	{ "empty",			Lingo::b_empty,			0, 0, false },	// D2
@@ -214,10 +216,17 @@ static const char *builtinFunctions[] = {
 	"getProp",
 	"getPropAt",
 	"ilk",
+	"integerp",
+	"intersect",
 	"list",
 	"listP",
 	"max",
 	"min",
+	"objectp",
+	"pictureP",
+	"soundBusy",
+	"stringp",
+	"symbolp",
 	"xFactoryList",
 	0
 };
@@ -882,6 +891,12 @@ void Lingo::b_objectp(int nargs) {
 	g_lingo->push(d);
 }
 
+void Lingo::b_pictureP(int nargs) {
+	Datum d = g_lingo->pop();
+	warning("STUB: b_pictureP");
+	g_lingo->push(Datum(0));
+}
+
 void Lingo::b_stringp(int nargs) {
 	Datum d = g_lingo->pop();
 	int res = (d.type == STRING) ? 1 : 0;
@@ -994,6 +1009,14 @@ void Lingo::b_installMenu(int nargs) {
 	warning("STUB: b_installMenu(%d)", d.u.i);
 }
 
+void Lingo::b_intersect(int nargs) {
+	g_lingo->printSTUBWithArglist("b_intersect", nargs);
+
+	g_lingo->dropStack(nargs);
+
+	g_lingo->push(Datum(0));
+}
+
 void Lingo::b_label(int nargs) {
 	Datum d = g_lingo->pop();
 	d.toInt();
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index ec9d631..ac8fd63 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -82,22 +82,22 @@ whitespace [\t ]
 %%
 
 --[^\r\n]*
-^{whitespace}+		{ count(); }
-[\t]+				{ count(); return ' '; }
+^{whitespace}+	{ count(); }
+[\t]+						{ count(); return ' '; }
 
-[#]{identifier}		{ count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
+[#]{identifier}	{ count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
 
 (?i:after)			{ count(); return tAFTER; }		// D3
-(?i:and)			{ count(); return tAND; }
+(?i:and)				{ count(); return tAND; }
 (?i:before)			{ count(); return tBEFORE; }	// D3
-(?i:char)			{ count(); return tCHAR; }		// D3
+(?i:char)				{ count(); return tCHAR; }		// D3
 (?i:contains)		{ count(); return tCONTAINS; }
-(?i:done)			{ count(); return tDONE; }
-(?i:down)			{ count(); return tDOWN; }
-(?i:if)				{ count(); return tIF; }
+(?i:done)				{ count(); return tDONE; }
+(?i:down)				{ count(); return tDOWN; }
+(?i:if)					{ count(); return tIF; }
 (?i:[\n\r]+[\t ]*else[\t ]+if)	{ countnl(); return tNLELSIF; }
 (?i:[\n\r]+[\t ]*else)	{ countnl(); return tNLELSE; }
-(?i:else)			{ count(); return tELSE; }
+(?i:else)				{ count(); return tELSE; }
 (?i:end)([\t ]*{identifier})?	{
 		count();
 
@@ -110,33 +110,33 @@ whitespace [\t ]
 		return ENDCLAUSE;
 	}
 (?i:factory)		{ count(); return tFACTORY; }
-(?i:exit)			{ count(); return tEXIT; }
+(?i:exit)				{ count(); return tEXIT; }
 (?i:frame)			{ count(); return tFRAME; }
 (?i:global)			{ count(); return tGLOBAL; }
-(?i:go[\t ]+to)		{ count(); return tGO; }
-(?i:go)				{ count(); return tGO; }
+(?i:go[\t ]+to)	{ count(); return tGO; }
+(?i:go)					{ count(); return tGO; }
 (?i:instance)		{ count(); return tINSTANCE; }
-(?i:intersects)		{ count(); return tINTERSECTS; }
-(?i:into)			{ count(); return tINTO; }
-(?i:item)			{ count(); return tITEM; }
-(?i:line)			{ count(); return tLINE; }
-(?i:loop)			{ count(); return checkImmediate(tLOOP); }
+(?i:intersects)	{ count(); return tINTERSECTS; }
+(?i:into)				{ count(); return tINTO; }
+(?i:item)				{ count(); return tITEM; }
+(?i:line)				{ count(); return tLINE; }
+(?i:loop)				{ count(); return checkImmediate(tLOOP); }
 (?i:macro)			{ count(); return tMACRO; }
 (?i:method)			{ count(); return tMETHOD; }
-(?i:mod)			{ count(); return tMOD; }
+(?i:mod)				{ count(); return tMOD; }
 (?i:movie)			{ count(); return tMOVIE; }
-(?i:next)			{ count(); return tNEXT; }
-(?i:not)			{ count(); return tNOT; }
-(?i:of)				{ count(); return tOF; }
-(?i:on)				{ count(); return tON; }		// D3
-(?i:open)			{ count(); return tOPEN; }
-(?i:or)				{ count(); return tOR; }
-(?i:play)			{ count(); return tPLAY; }
-(?i:playAccel)		{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
+(?i:next)				{ count(); return tNEXT; }
+(?i:not)				{ count(); return tNOT; }
+(?i:of)					{ count(); return tOF; }
+(?i:on)					{ count(); return tON; }		// D3
+(?i:open)				{ count(); return tOPEN; }
+(?i:or)					{ count(); return tOR; }
+(?i:play)				{ count(); return tPLAY; }
+(?i:playAccel)	{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 (?i:previous)		{ count(); return tPREVIOUS; }
-(?i:put)			{ count(); return tPUT; }
+(?i:put)				{ count(); return tPUT; }
 (?i:repeat)			{ count(); return checkImmediate(tREPEAT); }
-(?i:set)			{ count(); return tSET; }
+(?i:set)				{ count(); return tSET; }
 (?i:starts)			{ count(); return tSTARTS; }
 (?i:the[ \t]+sqrt[\t ]+of[\t ]+)	{
 		count();
@@ -236,21 +236,21 @@ whitespace [\t ]
 
 		warning("Unhandled the entity %s", ptr);
 	}
-(?i:then)			{ count(); return tTHEN; }
-(?i:to)				{ count(); return tTO; }
+(?i:then)				{ count(); return tTHEN; }
+(?i:to)					{ count(); return tTO; }
 (?i:sprite)			{ count(); return tSPRITE; }
-(?i:with)			{ count(); return tWITH; }
+(?i:with)				{ count(); return tWITH; }
 (?i:within)			{ count(); return tWITHIN; }
-(?i:when)			{ count(); return tWHEN; }
+(?i:when)				{ count(); return tWHEN; }
 (?i:while)			{ count(); return tWHILE; }
-(?i:word)			{ count(); return tWORD; }
+(?i:word)				{ count(); return tWORD; }
 
-[<][>]				{ count(); return tNEQ; }
-[>][=]				{ count(); return tGE; }
-[<][=]				{ count(); return tLE; }
-[&][&]				{ count(); return tCONCAT; }
+[<][>]					{ count(); return tNEQ; }
+[>][=]					{ count(); return tGE; }
+[<][=]					{ count(); return tLE; }
+[&][&]					{ count(); return tCONCAT; }
 
-{identifier}	{
+{identifier}		{
 		count();
 		yylval.s = new Common::String(yytext);
 
@@ -289,11 +289,11 @@ whitespace [\t ]
 
 		return ID;
 	}
-{constfloat}	{ count(); yylval.f = atof(yytext); return FLOAT; }
+{constfloat}		{ count(); yylval.f = atof(yytext); return FLOAT; }
 {constinteger}	{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
-{operator}		{ count(); return *yytext; }
-{newline}		{ return '\n'; }
-{conststring}	{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{operator}			{ count(); return *yytext; }
+{newline}				{ return '\n'; }
+{conststring}		{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 .
 
 %%
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 31cd004..8bd082b 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -369,6 +369,7 @@ public:
 	static void b_ilk(int nargs);
 	static void b_integerp(int nargs);
 	static void b_objectp(int nargs);
+	static void b_pictureP(int nargs);
 	static void b_stringp(int nargs);
 	static void b_symbolp(int nargs);
 
@@ -391,6 +392,7 @@ public:
 	static void b_findEmpty(int nargs);
 	static void b_importFileInto(int nargs);
 	static void b_installMenu(int nargs);
+	static void b_intersect(int nargs);
 	static void b_label(int nargs);
 	static void b_marker(int nargs);
 	static void b_move(int nargs);


Commit: eb986c7cc3c6750efc703df7ded218aba56ea01b
    https://github.com/scummvm/scummvm/commit/eb986c7cc3c6750efc703df7ded218aba56ea01b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T09:08:37+01:00

Commit Message:
DIRECTOR: Lingo: Documented D4 "Menus" Lingo

Changed paths:
    engines/director/lingo/lingo-builtins.cpp


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index b080774..ce39796 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -146,7 +146,7 @@ static struct BuiltinProto {
 	{ "findEmpty",		Lingo::b_findEmpty,		1, 1, true },	//			D4 f
 		// go													// D2
 	{ "importFileInto",	Lingo::b_importFileInto,2, 2, false },	//			D4 c
-	{ "installMenu",	Lingo::b_installMenu,	1, 1, false },	// D2
+	{ "installMenu",	Lingo::b_installMenu,	1, 1, false },	// D2 c
 	{ "intersect",		Lingo::b_intersect,		2, 2, false },	//			D4 f
 	{ "label",			Lingo::b_label,			1, 1, true },	// D2
 	{ "marker",			Lingo::b_marker,		1, 1, true },	// D2


Commit: e0b7e823b242d3e5c3bbba41f5d07014c8a35f0c
    https://github.com/scummvm/scummvm/commit/e0b7e823b242d3e5c3bbba41f5d07014c8a35f0c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T09:15:15+01:00

Commit Message:
DIRECTOR: Lingo: Documented D4 "Mouse and pointer" Lingo

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo-the.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index ce39796..cbfa3f2 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -56,11 +56,11 @@ static struct BuiltinProto {
 	{ "string",			Lingo::b_string,		1, 1, true },	// D2
 	{ "value",		 	Lingo::b_value,			1, 1, true },	// D2
 	// Lists
-	{ "add",			Lingo::b_add,			2, 2, false },	//			D4 c
+	{ "add",			Lingo::b_add,			2, 2, false },	//			D4 command
 	{ "addAt",			Lingo::b_addAt,			3, 3, false },	//			D4 c
 	{ "addProp",		Lingo::b_addProp,		3, 3, false },	//			D4 c
 	{ "append",			Lingo::b_append,		2, 2, false },	//			D4 c
-	{ "count",			Lingo::b_count,			1, 1, true },	//			D4 f
+	{ "count",			Lingo::b_count,			1, 1, true },	//			D4 function
 	{ "deleteAt",		Lingo::b_deleteAt,		2, 2, false },	//			D4 c
 	{ "deleteProp",		Lingo::b_deleteProp,	2, 2, false },	//			D4 c
 	{ "findPos",		Lingo::b_findPos,		2, 2, true },	//			D4 f
@@ -127,7 +127,7 @@ static struct BuiltinProto {
 	{ "symbolp",		Lingo::b_symbolp,		1, 1, true },	// D2 f
 	// Misc
 	{ "alert",	 		Lingo::b_alert,			1, 1, false },	// D2 c
-	{ "cursor",	 		Lingo::b_cursor,		1, 1, false },	// D2
+	{ "cursor",	 		Lingo::b_cursor,		1, 1, false },	// D2 c
 	{ "framesToHMS",	Lingo::b_framesToHMS,	4, 4, false },	//		D3
 	{ "HMStoFrames",	Lingo::b_HMStoFrames,	4, 4, false },	//		D3
 	{ "param",	 		Lingo::b_param,			1, 1, true },	//			D4 f
@@ -158,7 +158,7 @@ static struct BuiltinProto {
 	{ "puppetSprite",	Lingo::b_puppetSprite,	-1,0, false },	// D2
 	{ "puppetTempo",	Lingo::b_puppetTempo,	1, 1, false },	// D2
 	{ "puppetTransition",Lingo::b_puppetTransition,-1,0, false },// D2
-	{ "rollOver",		Lingo::b_rollOver,		1, 1, true },	// D2
+	{ "rollOver",		Lingo::b_rollOver,		1, 1, true },	// D2 f
 	{ "spriteBox",		Lingo::b_spriteBox,		-1,0, false },	// D2
 	{ "unLoad",			Lingo::b_unLoad,		0, 2, false },	//			D4 c
 	{ "unLoadCast",		Lingo::b_unLoadCast,	0, 2, false },	//			D4 c
@@ -224,6 +224,7 @@ static const char *builtinFunctions[] = {
 	"min",
 	"objectp",
 	"pictureP",
+	"rollOver",
 	"soundBusy",
 	"stringp",
 	"symbolp",
@@ -892,7 +893,7 @@ void Lingo::b_objectp(int nargs) {
 }
 
 void Lingo::b_pictureP(int nargs) {
-	Datum d = g_lingo->pop();
+	g_lingo->pop();
 	warning("STUB: b_pictureP");
 	g_lingo->push(Datum(0));
 }
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 1f07520..d5fef44 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -38,7 +38,8 @@ TheEntity entities[] = {
 	{ kTheChars,			"chars",			false },	//		 D3
 	{ kTheCheckBoxAccess,	"checkBoxAccess",	false },	// D2 p
 	{ kTheCheckBoxType,		"checkBoxType",		false },	// D2 p
-	{ kTheClickOn,			"clickOn",			false },	// D2 function
+	{ kTheClickLoc,			"clickLoc",			false },	// 				D4 function
+	{ kTheClickOn,			"clickOn",			false },	// D2 f
 	{ kTheColorDepth,		"colorDepth",		false },	// D2 p
 	{ kTheColorQD,			"colorQD",			false },	// D2 f
 	{ kTheCommandDown,		"commandDown",		false },	// D2 f
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index a269d7b..6b69d13 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -36,6 +36,7 @@ enum TheEntityType {
 	kTheChars,
 	kTheCheckBoxAccess,
 	kTheCheckBoxType,
+	kTheClickLoc,
 	kTheClickOn,
 	kTheColorDepth,
 	kTheColorQD,


Commit: b37a3e522461236bb4804415f83fbddb12d862a4
    https://github.com/scummvm/scummvm/commit/b37a3e522461236bb4804415f83fbddb12d862a4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T09:47:33+01:00

Commit Message:
DIRECTOR: Lingo: Documented D4 "Movie in a window" Lingo

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo-the.h
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index cbfa3f2..1042ca5 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -175,6 +175,12 @@ static struct BuiltinProto {
 	{ "sound-playFile",	Lingo::b_soundPlayFile, 2, 2, false },	//		D3 c
 	{ "sound-stop",		Lingo::b_soundStop,	 	1, 1, false },	//		D3
 	{ "soundBusy",		Lingo::b_soundBusy,	 	1, 1, true },	//		D3 f
+	// Window
+	{ "close",			Lingo::b_close,			1, 1, false },	//			D4 c
+	{ "forget",			Lingo::b_forget,		1, 1, false },	//			D4 c
+	{ "inflate",		Lingo::b_inflate,		3, 3, true },	//			D4 f
+	{ "moveToBack",		Lingo::b_moveToBack,	1, 1, false },	//			D4 c
+	{ "moveToFront",	Lingo::b_moveToFront,	1, 1, false },	//			D4 c
 	// Constants
 	{ "backspace",		Lingo::b_backspace,		0, 0, false },	// D2
 	{ "empty",			Lingo::b_empty,			0, 0, false },	// D2
@@ -189,6 +195,7 @@ static struct BuiltinProto {
 	{ "cast",			Lingo::b_cast,			1, 1, false },	//			D4 f
 	{ "field",			Lingo::b_field,			1, 1, false },	//		D3 f
 	{ "me",				Lingo::b_me,			-1,0, false },	//		D3
+	{ "window",			Lingo::b_window,		1, 1, false },	//			D4 f
 
 	{ 0, 0, 0, 0, false }
 };
@@ -216,6 +223,7 @@ static const char *builtinFunctions[] = {
 	"getProp",
 	"getPropAt",
 	"ilk",
+	"inflate",
 	"integerp",
 	"intersect",
 	"list",
@@ -228,6 +236,7 @@ static const char *builtinFunctions[] = {
 	"soundBusy",
 	"stringp",
 	"symbolp",
+	"window",
 	"xFactoryList",
 	0
 };
@@ -1119,6 +1128,41 @@ void Lingo::b_updateStage(int nargs) {
 }
 
 
+///////////////////
+// Window
+///////////////////
+
+void Lingo::b_close(int nargs) {
+	g_lingo->printSTUBWithArglist("b_close", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void Lingo::b_forget(int nargs) {
+	g_lingo->printSTUBWithArglist("b_forget", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void Lingo::b_inflate(int nargs) {
+	g_lingo->printSTUBWithArglist("b_inflate", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void Lingo::b_moveToBack(int nargs) {
+	g_lingo->printSTUBWithArglist("b_moveToBack", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void Lingo::b_moveToFront(int nargs) {
+	g_lingo->printSTUBWithArglist("b_moveToFront", nargs);
+	g_lingo->dropStack(nargs);
+}
+
+void Lingo::b_window(int nargs) {
+	g_lingo->printSTUBWithArglist("b_window", nargs);
+	g_lingo->dropStack(nargs);
+	g_lingo->push(Datum(0));
+}
+
 
 ///////////////////
 // Point
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 2a20e02..7046fed 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -104,6 +104,7 @@ static struct FuncDescr {
 	{ Lingo::c_repeatwithcode,"c_repeatwithcode","ooooos" },
 	{ Lingo::c_exitRepeat,	"c_exitRepeat",	"" },
 	{ Lingo::c_ifcode,		"c_ifcode",		"oooi" },
+	{ Lingo::c_tellcode,	"c_tellcode",	"o" },
 	{ Lingo::c_whencode,	"c_whencode",	"os" },
 	{ Lingo::c_goto,		"c_goto",		"" },
 	{ Lingo::c_gotoloop,	"c_gotoloop",	"" },
@@ -946,6 +947,11 @@ void Lingo::c_whencode() {
 	g_lingo->_pc = end;
 }
 
+void Lingo::c_tellcode() {
+	warning("STUB: c_tellcode");
+}
+
+
 //************************
 // Built-in functions
 //************************
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 56c0af2..8c675c3 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -145,8 +145,9 @@
      tSPRITE = 334,
      tINTERSECTS = 335,
      tWITHIN = 336,
-     tON = 337,
-     tME = 338
+     tTELL = 337,
+     tON = 338,
+     tME = 339
    };
 #endif
 /* Tokens.  */
@@ -229,8 +230,9 @@
 #define tSPRITE 334
 #define tINTERSECTS 335
 #define tWITHIN 336
-#define tON 337
-#define tME 338
+#define tTELL 337
+#define tON 338
+#define tME 339
 
 
 
@@ -298,7 +300,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 302 "engines/director/lingo/lingo-gr.cpp"
+#line 304 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -311,7 +313,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 315 "engines/director/lingo/lingo-gr.cpp"
+#line 317 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -524,22 +526,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  115
+#define YYFINAL  117
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1612
+#define YYLAST   1647
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  99
+#define YYNTOKENS  100
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  42
+#define YYNNTS  43
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  154
+#define YYNRULES  157
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  337
+#define YYNSTATES  346
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   338
+#define YYMAXUTOK   339
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -548,15 +550,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      91,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      92,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,    90,    85,     2,
-      92,    93,    88,    86,    98,    87,     2,    89,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    91,    86,     2,
+      93,    94,    89,    87,    99,    88,     2,    90,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      95,    84,    94,     2,     2,     2,     2,     2,     2,     2,
+      96,    85,    95,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    96,     2,    97,     2,     2,     2,     2,     2,     2,
+       2,    97,     2,    98,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -580,7 +582,7 @@ static const yytype_uint8 yytranslate[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84
 };
 
 #if YYDEBUG
@@ -590,84 +592,86 @@ static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     7,     9,    12,    14,    15,    17,    19,
       21,    26,    31,    36,    41,    46,    52,    57,    62,    68,
-      70,    72,    74,    76,    84,    95,   107,   111,   119,   130,
-     141,   148,   159,   170,   171,   175,   178,   180,   183,   185,
-     192,   194,   201,   203,   207,   211,   214,   218,   220,   222,
-     223,   224,   225,   228,   231,   235,   237,   239,   241,   243,
-     245,   248,   253,   255,   257,   260,   262,   266,   270,   274,
-     278,   282,   286,   290,   294,   298,   302,   306,   310,   313,
-     317,   321,   325,   329,   332,   335,   339,   343,   348,   353,
-     358,   365,   370,   377,   382,   389,   394,   401,   404,   406,
-     408,   411,   413,   416,   419,   421,   424,   427,   429,   432,
-     437,   444,   449,   452,   456,   458,   462,   464,   468,   471,
-     474,   477,   480,   484,   487,   490,   492,   496,   499,   502,
-     505,   509,   512,   513,   517,   518,   527,   530,   531,   540,
-     541,   542,   553,   554,   556,   560,   565,   566,   569,   570,
-     572,   576,   578,   582,   585
+      70,    72,    74,    76,    84,    95,   107,   111,   118,   123,
+     131,   142,   153,   160,   171,   182,   183,   187,   190,   192,
+     195,   197,   204,   206,   213,   215,   219,   223,   226,   230,
+     232,   234,   235,   236,   237,   240,   243,   247,   249,   251,
+     253,   255,   257,   259,   262,   267,   269,   271,   274,   276,
+     280,   284,   288,   292,   296,   300,   304,   308,   312,   316,
+     320,   324,   327,   331,   335,   339,   343,   346,   349,   353,
+     357,   362,   367,   372,   379,   384,   391,   396,   403,   408,
+     415,   418,   420,   422,   425,   427,   430,   433,   435,   438,
+     441,   443,   446,   451,   458,   463,   466,   470,   472,   476,
+     478,   482,   485,   488,   491,   494,   498,   501,   504,   506,
+     510,   513,   516,   519,   523,   526,   527,   531,   532,   541,
+     544,   545,   554,   555,   556,   567,   568,   570,   574,   579,
+     580,   583,   584,   586,   590,   592,   596,   599
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     100,     0,    -1,   100,   101,   102,    -1,   102,    -1,     1,
-     101,    -1,    91,    -1,    -1,   130,    -1,   137,    -1,   105,
-      -1,    45,   121,    38,    24,    -1,    45,   121,    70,   121,
-      -1,    45,   121,    71,   121,    -1,    47,    24,    84,   121,
-      -1,    47,    12,    84,   121,    -1,    47,    13,   121,    84,
-     121,    -1,    47,    24,    49,   121,    -1,    47,    12,    49,
-     121,    -1,    47,    13,   121,    49,   121,    -1,   121,    -1,
-     122,    -1,   104,    -1,   106,    -1,   113,    92,   112,    93,
-     119,   118,    28,    -1,   114,    84,   121,   118,    49,   121,
-     118,   119,   118,    28,    -1,   114,    84,   121,   118,    30,
-      49,   121,   118,   119,   118,    28,    -1,   120,   121,   118,
-      -1,   115,   112,    48,   101,   119,   118,    28,    -1,   115,
-     112,    48,   101,   119,   118,    53,   119,   118,    28,    -1,
-     115,   112,    48,   101,   119,   118,   117,   108,   118,    28,
-      -1,   115,   112,    48,   117,   104,   118,    -1,   115,   112,
-      48,   117,   104,   118,    53,   117,   104,   118,    -1,   115,
-     112,    48,   117,   104,   118,   109,   118,   107,   118,    -1,
-      -1,    53,   117,   104,    -1,   108,   111,    -1,   111,    -1,
-     109,   110,    -1,   110,    -1,   116,   112,    48,   117,   105,
-     118,    -1,   109,    -1,   116,   112,    48,   117,   119,   118,
-      -1,   121,    -1,   121,    84,   121,    -1,    92,   112,    93,
-      -1,    46,    52,    -1,    46,    51,    24,    -1,    37,    -1,
-      32,    -1,    -1,    -1,    -1,   119,   101,    -1,   119,   105,
-      -1,    50,    24,    48,    -1,    11,    -1,    14,    -1,    27,
-      -1,    25,    -1,    22,    -1,    23,   121,    -1,    24,    92,
-     138,    93,    -1,    24,    -1,    12,    -1,    13,   121,    -1,
-     103,    -1,   121,    86,   121,    -1,   121,    87,   121,    -1,
-     121,    88,   121,    -1,   121,    89,   121,    -1,   121,    69,
-     121,    -1,   121,    94,   121,    -1,   121,    95,   121,    -1,
-     121,    65,   121,    -1,   121,    60,   121,    -1,   121,    61,
-     121,    -1,   121,    66,   121,    -1,   121,    67,   121,    -1,
-      68,   121,    -1,   121,    85,   121,    -1,   121,    72,   121,
-      -1,   121,    73,   121,    -1,   121,    74,   121,    -1,    86,
-     121,    -1,    87,   121,    -1,    92,   121,    93,    -1,    96,
-     138,    97,    -1,    79,   121,    80,   121,    -1,    79,   121,
-      81,   121,    -1,    75,   121,    43,   121,    -1,    75,   121,
-      49,   121,    43,   121,    -1,    76,   121,    43,   121,    -1,
-      76,   121,    49,   121,    43,   121,    -1,    77,   121,    43,
-     121,    -1,    77,   121,    49,   121,    43,   121,    -1,    78,
-     121,    43,   121,    -1,    78,   121,    49,   121,    43,   121,
-      -1,    45,   121,    -1,   125,    -1,   128,    -1,    33,    46,
-      -1,    33,    -1,    35,   123,    -1,    59,   124,    -1,    16,
-      -1,    18,   121,    -1,    17,   121,    -1,    17,    -1,    19,
-     140,    -1,    83,    92,    24,    93,    -1,    83,    92,    24,
-      98,   138,    93,    -1,    56,   121,    51,   121,    -1,    56,
-     121,    -1,    20,    24,   138,    -1,    24,    -1,   123,    98,
-      24,    -1,    24,    -1,   124,    98,    24,    -1,    36,    39,
-      -1,    36,    42,    -1,    36,    44,    -1,    36,   126,    -1,
-      36,   126,   127,    -1,    36,   127,    -1,    34,   121,    -1,
-     121,    -1,    43,    41,   121,    -1,    41,   121,    -1,    57,
-      58,    -1,    57,   126,    -1,    57,   126,   127,    -1,    57,
-     127,    -1,    -1,    29,   129,   138,    -1,    -1,    40,    24,
-     131,   117,   135,   101,   136,   119,    -1,    54,    24,    -1,
-      -1,    55,    24,   132,   117,   135,   101,   136,   119,    -1,
-      -1,    -1,    82,    24,   133,   117,   134,   135,   101,   136,
-     119,    28,    -1,    -1,    24,    -1,   135,    98,    24,    -1,
-     135,   101,    98,    24,    -1,    -1,    24,   139,    -1,    -1,
-     121,    -1,   138,    98,   121,    -1,   121,    -1,   139,    98,
-     121,    -1,   121,   101,    -1,   140,    98,   121,   101,    -1
+     101,     0,    -1,   101,   102,   103,    -1,   103,    -1,     1,
+     102,    -1,    92,    -1,    -1,   132,    -1,   139,    -1,   106,
+      -1,    45,   123,    38,    24,    -1,    45,   123,    70,   123,
+      -1,    45,   123,    71,   123,    -1,    47,    24,    85,   123,
+      -1,    47,    12,    85,   123,    -1,    47,    13,   123,    85,
+     123,    -1,    47,    24,    49,   123,    -1,    47,    12,    49,
+     123,    -1,    47,    13,   123,    49,   123,    -1,   123,    -1,
+     124,    -1,   105,    -1,   107,    -1,   114,    93,   113,    94,
+     120,   119,    28,    -1,   115,    85,   123,   119,    49,   123,
+     119,   120,   119,    28,    -1,   115,    85,   123,   119,    30,
+      49,   123,   119,   120,   119,    28,    -1,   121,   123,   119,
+      -1,   122,   123,   102,   120,   119,    28,    -1,   122,   123,
+      49,   123,    -1,   116,   113,    48,   102,   120,   119,    28,
+      -1,   116,   113,    48,   102,   120,   119,    53,   120,   119,
+      28,    -1,   116,   113,    48,   102,   120,   119,   118,   109,
+     119,    28,    -1,   116,   113,    48,   118,   105,   119,    -1,
+     116,   113,    48,   118,   105,   119,    53,   118,   105,   119,
+      -1,   116,   113,    48,   118,   105,   119,   110,   119,   108,
+     119,    -1,    -1,    53,   118,   105,    -1,   109,   112,    -1,
+     112,    -1,   110,   111,    -1,   111,    -1,   117,   113,    48,
+     118,   106,   119,    -1,   110,    -1,   117,   113,    48,   118,
+     120,   119,    -1,   123,    -1,   123,    85,   123,    -1,    93,
+     113,    94,    -1,    46,    52,    -1,    46,    51,    24,    -1,
+      37,    -1,    32,    -1,    -1,    -1,    -1,   120,   102,    -1,
+     120,   106,    -1,    50,    24,    48,    -1,    82,    -1,    11,
+      -1,    14,    -1,    27,    -1,    25,    -1,    22,    -1,    23,
+     123,    -1,    24,    93,   140,    94,    -1,    24,    -1,    12,
+      -1,    13,   123,    -1,   104,    -1,   123,    87,   123,    -1,
+     123,    88,   123,    -1,   123,    89,   123,    -1,   123,    90,
+     123,    -1,   123,    69,   123,    -1,   123,    95,   123,    -1,
+     123,    96,   123,    -1,   123,    65,   123,    -1,   123,    60,
+     123,    -1,   123,    61,   123,    -1,   123,    66,   123,    -1,
+     123,    67,   123,    -1,    68,   123,    -1,   123,    86,   123,
+      -1,   123,    72,   123,    -1,   123,    73,   123,    -1,   123,
+      74,   123,    -1,    87,   123,    -1,    88,   123,    -1,    93,
+     123,    94,    -1,    97,   140,    98,    -1,    79,   123,    80,
+     123,    -1,    79,   123,    81,   123,    -1,    75,   123,    43,
+     123,    -1,    75,   123,    49,   123,    43,   123,    -1,    76,
+     123,    43,   123,    -1,    76,   123,    49,   123,    43,   123,
+      -1,    77,   123,    43,   123,    -1,    77,   123,    49,   123,
+      43,   123,    -1,    78,   123,    43,   123,    -1,    78,   123,
+      49,   123,    43,   123,    -1,    45,   123,    -1,   127,    -1,
+     130,    -1,    33,    46,    -1,    33,    -1,    35,   125,    -1,
+      59,   126,    -1,    16,    -1,    18,   123,    -1,    17,   123,
+      -1,    17,    -1,    19,   142,    -1,    84,    93,    24,    94,
+      -1,    84,    93,    24,    99,   140,    94,    -1,    56,   123,
+      51,   123,    -1,    56,   123,    -1,    20,    24,   140,    -1,
+      24,    -1,   125,    99,    24,    -1,    24,    -1,   126,    99,
+      24,    -1,    36,    39,    -1,    36,    42,    -1,    36,    44,
+      -1,    36,   128,    -1,    36,   128,   129,    -1,    36,   129,
+      -1,    34,   123,    -1,   123,    -1,    43,    41,   123,    -1,
+      41,   123,    -1,    57,    58,    -1,    57,   128,    -1,    57,
+     128,   129,    -1,    57,   129,    -1,    -1,    29,   131,   140,
+      -1,    -1,    40,    24,   133,   118,   137,   102,   138,   120,
+      -1,    54,    24,    -1,    -1,    55,    24,   134,   118,   137,
+     102,   138,   120,    -1,    -1,    -1,    83,    24,   135,   118,
+     136,   137,   102,   138,   120,    28,    -1,    -1,    24,    -1,
+     137,    99,    24,    -1,   137,   102,    99,    24,    -1,    -1,
+      24,   141,    -1,    -1,   123,    -1,   140,    99,   123,    -1,
+     123,    -1,   141,    99,   123,    -1,   123,   102,    -1,   142,
+      99,   123,   102,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -675,20 +679,20 @@ static const yytype_uint16 yyrline[] =
 {
        0,   118,   118,   119,   120,   123,   128,   129,   130,   131,
      134,   140,   141,   142,   148,   156,   164,   170,   178,   188,
-     189,   192,   193,   198,   211,   229,   243,   251,   261,   273,
-     285,   295,   305,   317,   318,   321,   322,   325,   326,   329,
-     337,   338,   346,   347,   348,   351,   354,   361,   368,   376,
-     379,   382,   383,   384,   387,   393,   394,   397,   400,   403,
-     406,   409,   412,   416,   423,   429,   430,   431,   432,   433,
-     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   458,   459,   460,   463,   464,   465,
-     466,   467,   469,   470,   471,   474,   477,   480,   483,   484,
-     485,   486,   487,   488,   491,   492,   495,   496,   507,   508,
-     509,   510,   513,   516,   521,   522,   525,   526,   529,   530,
-     533,   536,   539,   539,   569,   569,   575,   578,   578,   583,
-     584,   583,   594,   595,   596,   597,   600,   604,   612,   613,
-     614,   617,   618,   621,   622
+     189,   192,   193,   198,   211,   229,   243,   249,   252,   257,
+     267,   279,   291,   301,   311,   323,   324,   327,   328,   331,
+     332,   335,   343,   344,   352,   353,   354,   357,   360,   367,
+     374,   382,   385,   388,   389,   390,   393,   399,   403,   404,
+     407,   410,   413,   416,   419,   422,   426,   433,   439,   440,
+     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
+     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
+     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
+     473,   474,   475,   476,   477,   479,   480,   481,   484,   487,
+     490,   493,   494,   495,   496,   497,   498,   501,   502,   505,
+     506,   517,   518,   519,   520,   523,   526,   531,   532,   535,
+     536,   539,   540,   543,   546,   549,   549,   579,   579,   585,
+     588,   588,   593,   594,   593,   604,   605,   606,   607,   610,
+     614,   622,   623,   624,   627,   628,   631,   632
 };
 #endif
 
@@ -709,15 +713,16 @@ static const char *const yytname[] =
   "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ",
   "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
-  "tINTERSECTS", "tWITHIN", "tON", "tME", "'='", "'&'", "'+'", "'-'",
-  "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'['", "']'",
-  "','", "$accept", "program", "nl", "programline", "asgn", "stmtoneliner",
-  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
-  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr",
-  "proc", "globallist", "instancelist", "gotofunc", "gotoframe",
-  "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4", "@5", "argdef",
-  "argstore", "macro", "arglist", "nonemptyarglist", "nonemptyarglistnl", 0
+  "tINTERSECTS", "tWITHIN", "tTELL", "tON", "tME", "'='", "'&'", "'+'",
+  "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'['",
+  "']'", "','", "$accept", "program", "nl", "programline", "asgn",
+  "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt",
+  "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond",
+  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
+  "when", "tell", "expr", "proc", "globallist", "instancelist", "gotofunc",
+  "gotoframe", "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4",
+  "@5", "argdef", "argstore", "macro", "arglist", "nonemptyarglist",
+  "nonemptyarglistnl", 0
 };
 #endif
 
@@ -734,30 +739,30 @@ static const yytype_uint16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,    61,    38,    43,    45,    42,    47,
-      37,    10,    40,    41,    62,    60,    91,    93,    44
+     335,   336,   337,   338,   339,    61,    38,    43,    45,    42,
+      47,    37,    10,    40,    41,    62,    60,    91,    93,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    99,   100,   100,   100,   101,   102,   102,   102,   102,
-     103,   103,   103,   103,   103,   103,   103,   103,   103,   104,
-     104,   105,   105,   105,   105,   105,   105,   106,   106,   106,
-     106,   106,   106,   107,   107,   108,   108,   109,   109,   110,
-     111,   111,   112,   112,   112,   113,   114,   115,   116,   117,
-     118,   119,   119,   119,   120,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   123,   123,   124,   124,   125,   125,
-     125,   125,   125,   125,   126,   126,   127,   127,   128,   128,
-     128,   128,   129,   128,   131,   130,   130,   132,   130,   133,
-     134,   130,   135,   135,   135,   135,   136,   137,   138,   138,
-     138,   139,   139,   140,   140
+       0,   100,   101,   101,   101,   102,   103,   103,   103,   103,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   105,
+     105,   106,   106,   106,   106,   106,   106,   106,   106,   107,
+     107,   107,   107,   107,   107,   108,   108,   109,   109,   110,
+     110,   111,   112,   112,   113,   113,   113,   114,   115,   116,
+     117,   118,   119,   120,   120,   120,   121,   122,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
+     124,   124,   124,   124,   124,   124,   124,   125,   125,   126,
+     126,   127,   127,   127,   127,   127,   127,   128,   128,   129,
+     129,   130,   130,   130,   130,   131,   130,   133,   132,   132,
+     134,   132,   135,   136,   132,   137,   137,   137,   137,   138,
+     139,   140,   140,   140,   141,   141,   142,   142
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -765,20 +770,20 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     3,     1,     2,     1,     0,     1,     1,     1,
        4,     4,     4,     4,     4,     5,     4,     4,     5,     1,
-       1,     1,     1,     7,    10,    11,     3,     7,    10,    10,
-       6,    10,    10,     0,     3,     2,     1,     2,     1,     6,
-       1,     6,     1,     3,     3,     2,     3,     1,     1,     0,
-       0,     0,     2,     2,     3,     1,     1,     1,     1,     1,
-       2,     4,     1,     1,     2,     1,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     3,
-       3,     3,     3,     2,     2,     3,     3,     4,     4,     4,
-       6,     4,     6,     4,     6,     4,     6,     2,     1,     1,
-       2,     1,     2,     2,     1,     2,     2,     1,     2,     4,
-       6,     4,     2,     3,     1,     3,     1,     3,     2,     2,
-       2,     2,     3,     2,     2,     1,     3,     2,     2,     2,
-       3,     2,     0,     3,     0,     8,     2,     0,     8,     0,
-       0,    10,     0,     1,     3,     4,     0,     2,     0,     1,
-       3,     1,     3,     2,     4
+       1,     1,     1,     7,    10,    11,     3,     6,     4,     7,
+      10,    10,     6,    10,    10,     0,     3,     2,     1,     2,
+       1,     6,     1,     6,     1,     3,     3,     2,     3,     1,
+       1,     0,     0,     0,     2,     2,     3,     1,     1,     1,
+       1,     1,     1,     2,     4,     1,     1,     2,     1,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     2,     3,     3,     3,     3,     2,     2,     3,     3,
+       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
+       2,     1,     1,     2,     1,     2,     2,     1,     2,     2,
+       1,     2,     4,     6,     4,     2,     3,     1,     3,     1,
+       3,     2,     2,     2,     2,     3,     2,     2,     1,     3,
+       2,     2,     2,     3,     2,     0,     3,     0,     8,     2,
+       0,     8,     0,     0,    10,     0,     1,     3,     4,     0,
+       2,     0,     1,     3,     1,     3,     2,     4
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -786,101 +791,103 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    55,    63,     0,    56,   104,   107,     0,     0,
-       0,    59,     0,    62,    58,    57,   132,   101,     0,     0,
-      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    58,    66,     0,    59,   107,   110,     0,     0,
+       0,    62,     0,    65,    61,    60,   135,   104,     0,     0,
+      49,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    57,     0,     0,
+       0,     0,     0,   151,     0,     3,    68,    21,     9,    22,
+       0,     0,     0,     0,     0,    19,    20,   101,   102,     7,
+       8,     5,     4,    65,     0,    67,   109,   108,     0,   111,
+     151,    63,   151,   154,   150,   151,   103,   117,   105,     0,
+     121,     0,   122,     0,   123,   128,   124,   126,   137,   100,
+       0,    47,     0,     0,     0,     0,   139,   140,   115,   131,
+     132,   134,   119,   106,    81,     0,     0,     0,     0,     0,
+     142,     0,    86,    87,     0,   152,     0,     1,     6,     0,
+       0,     0,     0,    44,    52,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   148,     0,     3,    65,    21,     9,    22,     0,
-       0,     0,     0,    19,    20,    98,    99,     7,     8,     5,
-       4,    62,     0,    64,   106,   105,     0,   108,   148,    60,
-     148,   151,   147,   148,   100,   114,   102,     0,   118,     0,
-     119,     0,   120,   125,   121,   123,   134,    97,     0,    45,
-       0,     0,     0,     0,   136,   137,   112,   128,   129,   131,
-     116,   103,    78,     0,     0,     0,     0,     0,   139,     0,
-      83,    84,     0,   149,     0,     1,     6,     0,     0,     0,
-       0,    42,    50,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   148,
-       0,   153,     0,   113,   149,     0,     0,   133,     0,   124,
-     127,     0,   122,    49,     0,     0,     0,    46,     0,     0,
-       0,     0,     0,    54,    49,     0,   130,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    49,     0,
-      85,    86,     0,     2,     0,    50,     0,     0,    49,     0,
-      26,    74,    75,    73,    76,    77,    70,    80,    81,    82,
-      79,    66,    67,    68,    69,    71,    72,     0,    61,   152,
-     115,   126,   142,    10,    11,    12,    17,    14,     0,     0,
-      16,    13,   142,   111,   117,    89,     0,    91,     0,    93,
-       0,    95,     0,    87,    88,   140,   109,   148,   150,    51,
-       0,    44,    51,     0,    43,   154,   143,     0,    18,    15,
-       0,     0,     0,     0,     0,   142,     0,    50,     0,     0,
-      50,    50,     0,   146,   146,    90,    92,    94,    96,     0,
-     110,    52,    53,     0,     0,    50,    49,    30,   144,     0,
-      51,    51,   146,    23,    50,    51,    27,    51,     0,    48,
-      49,    50,    38,     0,   145,   135,   138,    51,    51,    50,
-      50,    50,    40,    36,     0,     0,    37,    33,     0,     0,
-      50,     0,     0,    35,     0,     0,    50,    49,    50,    49,
-     141,     0,    24,    28,    29,    49,    31,     0,    32,     0,
-      25,    51,    34,    50,    50,    39,    41
+       0,     0,   151,     0,   156,     0,   116,   152,     0,     0,
+     136,     0,   127,   130,     0,   125,    51,     0,     0,     0,
+      48,     0,     0,     0,     0,     0,    56,    51,     0,   133,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    51,     0,    88,    89,     0,     2,     0,    52,     0,
+       0,    51,     0,    26,     0,    53,    77,    78,    76,    79,
+      80,    73,    83,    84,    85,    82,    69,    70,    71,    72,
+      74,    75,     0,    64,   155,   118,   129,   145,    10,    11,
+      12,    17,    14,     0,     0,    16,    13,   145,   114,   120,
+      92,     0,    94,     0,    96,     0,    98,     0,    90,    91,
+     143,   112,   151,   153,    53,     0,    46,    53,     0,    45,
+      28,    52,   157,   146,     0,    18,    15,     0,     0,     0,
+       0,     0,   145,     0,    52,     0,     0,    52,    52,    54,
+      55,     0,     0,   149,   149,    93,    95,    97,    99,     0,
+     113,     0,     0,    52,    51,    32,    27,   147,     0,    53,
+      53,   149,    23,    52,    53,    29,    53,     0,    50,    51,
+      52,    40,     0,   148,   138,   141,    53,    53,    52,    52,
+      52,    42,    38,     0,     0,    39,    35,     0,     0,    52,
+       0,     0,    37,     0,     0,    52,    51,    52,    51,   144,
+       0,    24,    30,    31,    51,    33,     0,    34,     0,    25,
+      53,    36,    52,    52,    41,    43
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    43,   271,    44,    45,    46,   272,    48,   318,   301,
-     302,   292,   303,   120,    49,    50,    51,   293,   212,   190,
-     257,    52,    53,    54,    76,   101,    55,    84,    85,    56,
-      73,    57,   153,   164,   178,   255,   247,   280,    58,   145,
-      72,    67
+      -1,    44,   269,    45,    46,    47,   270,    49,   327,   310,
+     311,   301,   312,   122,    50,    51,    52,   302,   217,   193,
+     251,    53,    54,    55,    56,    78,   103,    57,    86,    87,
+      58,    75,    59,   156,   167,   181,   262,   254,   289,    60,
+     148,    74,    69
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -264
+#define YYPACT_NINF -273
 static const yytype_int16 yypact[] =
 {
-     297,   -60,  -264,  -264,   907,  -264,  -264,   907,   907,   907,
-      34,  -264,   907,   984,  -264,  -264,  -264,    29,    67,   804,
-    -264,    71,   907,    46,    55,    75,    76,    84,   907,   881,
-      85,   907,   907,   907,   907,   907,   907,    89,    25,   907,
-     907,   907,   907,     2,  -264,  -264,  -264,  -264,  -264,    30,
-      37,  1010,   907,  1517,  -264,  -264,  -264,  -264,  -264,  -264,
-    -264,    31,   907,  1517,  1517,  1517,  1423,    43,   907,  1517,
-     907,  1517,    44,   907,  -264,  -264,    47,   907,  -264,   907,
-    -264,   103,  -264,  1517,   -16,  -264,  -264,  1043,   122,  -264,
-     -38,   907,   -34,   100,  -264,  -264,  1330,  -264,   -16,  -264,
-    -264,    51,   -56,  1075,  1107,  1139,  1171,  1361,  -264,   126,
-     -56,   -56,  1455,  1517,    17,  -264,   383,  1010,   907,  1010,
-     105,  1486,  1517,   907,   907,   907,   907,   907,   907,   907,
-     907,   907,   907,   907,   907,   907,   907,   907,   907,   907,
-    1043,  -264,   907,    53,  1455,   -32,   907,    53,   130,  1517,
-    1517,   907,  -264,  -264,   131,   907,   907,  -264,   907,   907,
-     704,   907,   907,  -264,  -264,   907,  -264,   137,   907,   907,
-     907,   907,   907,   907,   907,   907,   907,   907,  -264,   -12,
-    -264,  -264,   907,  -264,    72,  1517,    74,  1392,   -60,   907,
-    -264,    16,    16,    16,   -56,   -56,   -56,  1517,    16,    16,
-     120,   155,   155,   -56,   -56,  1517,  1517,  1423,  -264,  1517,
-    -264,  1517,   140,  -264,  1517,  1517,  1517,  1517,   907,   907,
-    1517,  1517,   140,  1517,  -264,  1517,  1203,  1517,  1235,  1517,
-    1267,  1517,  1299,  1517,  1517,  -264,  -264,   907,  1517,  -264,
-      -4,  -264,  -264,   727,  1517,  -264,  -264,    -2,  1517,  1517,
-      -2,   907,   907,   907,   907,   140,    14,   555,   119,   907,
-     555,  -264,   157,    81,    81,  1517,  1517,  1517,  1517,    -2,
-    -264,  -264,  -264,   156,   907,  1517,    -6,   -25,  -264,   161,
-    -264,  -264,    81,  -264,  1517,  -264,  -264,  -264,   162,  -264,
-    -264,   162,  -264,  1010,  -264,   555,   555,  -264,  -264,   555,
-     555,   162,   162,  -264,  1010,   727,  -264,   135,   145,   469,
-     555,   167,   169,  -264,   170,   152,  -264,  -264,  -264,  -264,
-    -264,   173,  -264,  -264,  -264,  -264,  -264,   727,  -264,   641,
-    -264,   641,  -264,  -264,   555,  -264,  -264
+     306,   -70,  -273,  -273,   914,  -273,  -273,   914,   914,   914,
+      39,  -273,   914,   972,  -273,  -273,  -273,   -21,    65,   819,
+    -273,    79,   914,    58,    62,    87,    91,    92,   914,   877,
+      93,   914,   914,   914,   914,   914,   914,  -273,    95,   -10,
+     914,   914,   914,   914,     3,  -273,  -273,  -273,  -273,  -273,
+      30,    40,  1009,   914,   914,  1551,  -273,  -273,  -273,  -273,
+    -273,  -273,  -273,    31,   914,  1551,  1551,  1551,  1454,    45,
+     914,  1551,   914,  1551,    48,   914,  -273,  -273,    49,   914,
+    -273,   914,  -273,   108,  -273,  1551,    59,  -273,  -273,  1038,
+     127,  -273,   -37,   914,   -34,   104,  -273,  -273,  1358,  -273,
+      59,  -273,  -273,    54,   -26,  1070,  1102,  1134,  1166,  1390,
+    -273,   130,   -26,   -26,  1487,  1551,   -39,  -273,   393,  1009,
+     914,  1009,   109,  1519,  1551,   718,   914,   914,   914,   914,
+     914,   914,   914,   914,   914,   914,   914,   914,   914,   914,
+     914,   914,   914,  1038,  -273,   914,    57,  1487,    -2,   914,
+      57,   134,  1551,  1551,   914,  -273,  -273,   137,   914,   914,
+    -273,   914,   914,  1326,   914,   914,  -273,  -273,   914,  -273,
+     140,   914,   914,   914,   914,   914,   914,   914,   914,   914,
+     914,  -273,    -1,  -273,  -273,   914,  -273,    73,  1551,    74,
+    1422,   -70,   914,  -273,   914,  -273,    18,    18,    18,   -26,
+     -26,   -26,  1551,    18,    18,   183,   146,   146,   -26,   -26,
+    1551,  1551,  1454,  -273,  1551,  -273,  1551,   147,  -273,  1551,
+    1551,  1551,  1551,   914,   914,  1551,  1551,   147,  1551,  -273,
+    1551,  1198,  1551,  1230,  1551,  1262,  1551,  1294,  1551,  1551,
+    -273,  -273,   914,  1551,  -273,     8,  -273,  -273,   741,  1551,
+    1551,   567,  -273,  -273,   -43,  1551,  1551,   -43,   914,   914,
+     914,   914,   147,     2,   567,   121,   914,   567,  -273,  -273,
+    -273,   154,   159,    88,    88,  1551,  1551,  1551,  1551,   -43,
+    -273,   160,   914,  1551,   -22,    -6,  -273,  -273,   166,  -273,
+    -273,    88,  -273,  1551,  -273,  -273,  -273,   162,  -273,  -273,
+     162,  -273,  1009,  -273,   567,   567,  -273,  -273,   567,   567,
+     162,   162,  -273,  1009,   741,  -273,   138,   144,   480,   567,
+     169,   170,  -273,   172,   153,  -273,  -273,  -273,  -273,  -273,
+     175,  -273,  -273,  -273,  -273,  -273,   741,  -273,   654,  -273,
+     654,  -273,  -273,   567,  -273,  -273
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -264,  -264,    11,    86,  -264,  -240,     0,  -264,  -264,  -264,
-     -74,  -243,   -97,  -113,  -264,  -264,  -264,  -237,   -94,   -27,
-    -225,  -264,     1,  -264,  -264,  -264,  -264,   176,    -8,  -264,
-    -264,  -264,  -264,  -264,  -264,  -264,  -198,  -263,  -264,   -24,
-    -264,  -264
+    -273,  -273,    20,    86,  -273,  -237,     0,  -273,  -273,  -273,
+     -78,  -272,  -102,  -117,  -273,  -273,  -273,  -270,  -100,   -62,
+    -228,  -273,  -273,     1,  -273,  -273,  -273,  -273,   180,   -28,
+    -273,  -273,  -273,  -273,  -273,  -273,  -273,  -210,  -267,  -273,
+     -25,  -273,  -273
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -890,334 +897,340 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-      47,   281,   115,   261,   184,    63,   186,   289,    64,    65,
-      66,   158,    60,    69,    71,   161,   129,   260,   114,   297,
-      83,    99,   286,    87,   250,    79,   258,    81,   290,    96,
-      83,    59,   102,   103,   104,   105,   106,   107,   137,   138,
-     110,   111,   112,   113,   143,   259,   159,   287,   306,   147,
-     162,   304,   121,   122,   116,   295,   296,   269,    68,   306,
-     299,   208,   300,   140,   304,   316,   182,    90,    91,   113,
-     222,   144,   309,   310,   113,    74,   152,   141,   149,    92,
-     150,   236,   126,   127,   235,   128,   237,   332,   129,    59,
-     166,    75,   160,    59,   243,    86,   262,    88,    89,    93,
-      94,   132,   133,   134,   135,   136,   334,   270,    95,   100,
-     137,   138,   182,   108,   181,   182,    47,   109,   121,   185,
-     187,   118,   117,   139,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     113,   142,   146,   207,   151,   148,   157,   209,   163,   167,
-     179,   182,   211,   188,   210,   213,   214,   215,   240,   216,
-     217,   224,   220,   221,   246,   239,   223,   241,   274,   225,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   279,
-     308,   278,   288,   238,   283,   294,   126,   127,   317,   128,
-     244,   315,   129,   319,   289,   322,   305,   323,   324,   242,
-     325,   330,   183,   291,   313,    98,   133,   134,   135,   136,
-       0,     0,     0,   256,   137,   138,     0,     0,   245,   248,
-     249,   126,   127,   327,   128,   329,     0,   129,     0,     0,
-     273,   331,     0,   276,   277,     0,     0,     0,   113,     0,
-       0,     0,     0,   135,   136,     0,     0,     0,   285,   137,
-     138,     0,   265,   266,   267,   268,     0,   298,   263,     0,
-     275,   264,     0,     0,   307,     0,     0,     0,     0,     0,
-       0,     0,   311,   312,   314,   284,     0,     0,     0,     0,
-     282,     0,     0,   321,     0,     0,     0,     0,     0,   326,
-       0,   328,     0,     0,   121,     0,     0,    -6,     1,     0,
-       0,     0,     0,     0,     0,   121,   335,   336,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,    14,     0,    15,     0,    16,     0,     0,   333,
-      17,   333,    18,    19,    20,     0,     0,    21,     0,     0,
-       0,     0,    22,    23,    24,     0,     0,    25,     0,     0,
-       0,    26,    27,    28,    29,     0,    30,     0,     0,     0,
-       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
-      38,     0,     0,    39,    40,     0,     0,     0,    -6,    41,
-       0,     0,     0,    42,     2,     3,     4,     5,     0,     6,
+      48,   101,   187,   117,   189,    65,   295,   290,    66,    67,
+      68,   268,   161,    71,    73,   164,   264,   257,   116,   267,
+      85,    62,    61,    89,   306,    76,   298,   313,   315,    98,
+      85,   296,   104,   105,   106,   107,   108,   109,   265,   315,
+     313,   112,   113,   114,   115,   146,   132,   299,   162,    61,
+     150,   165,   279,   123,   124,   125,   272,   266,   155,   184,
+     185,   304,   305,    70,   118,   143,   308,   227,   309,   140,
+     141,   115,   169,   147,    92,    93,   115,   325,   318,   319,
+     152,   240,   153,   111,   129,   130,    94,   131,   144,    77,
+     132,   248,   213,   241,   163,    61,   280,   185,   242,   341,
+      81,   185,    83,    88,   135,   136,   137,   138,   139,    90,
+      91,    95,   343,   140,   141,    96,    97,   102,    48,   110,
+     123,   188,   190,   119,   142,   120,   245,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   115,   145,   195,   212,   149,   151,   154,
+     214,   160,   166,   170,   182,   216,   185,   191,   215,   219,
+     220,   218,   221,   222,   229,   225,   226,   244,   246,   228,
+     282,   253,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   286,   287,   297,   317,   243,   288,   292,   271,
+     303,   326,   328,   249,   298,   250,   324,   331,   332,   314,
+     333,   334,   281,   339,   186,   284,   285,   300,   322,   100,
+       0,   247,   129,   130,     0,   131,     0,   263,   132,     0,
+       0,   294,     0,     0,   255,   256,   336,     0,   338,     0,
+       0,   307,   252,     0,   340,   138,   139,     0,   316,     0,
+       0,   140,   141,   115,     0,     0,   320,   321,   323,   129,
+     130,     0,   131,     0,     0,   132,     0,   330,     0,   275,
+     276,   277,   278,   335,     0,   337,     0,   283,     0,     0,
+     136,   137,   138,   139,   273,     0,     0,   274,   140,   141,
+     344,   345,     0,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   291,
+       0,     0,     0,   123,     0,     0,    -6,     1,     0,     0,
+       0,     0,     0,     0,   123,     0,     0,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
+      13,    14,     0,    15,     0,    16,     0,     0,   342,    17,
+     342,    18,    19,    20,     0,     0,    21,     0,     0,     0,
+       0,    22,    23,    24,     0,     0,    25,     0,     0,     0,
+      26,    27,    28,    29,     0,    30,     0,     0,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
+      39,     0,     0,    40,    41,     0,     0,     0,    -6,    42,
+       0,     0,     0,    43,     2,     3,     4,     5,     0,     6,
        7,     8,     9,    10,     0,    11,    12,    13,    14,     0,
       15,     0,    16,     0,     0,     0,    17,     0,    18,    19,
       20,     0,     0,    21,     0,     0,     0,     0,    22,    23,
       24,     0,     0,    25,     0,     0,     0,    26,    27,    28,
       29,     0,    30,     0,     0,     0,     0,     0,     0,     0,
        0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,     0,     0,    39,
-      40,     0,     0,     0,     0,    41,     0,     0,     0,    42,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    61,    14,     0,    15,   320,    16,     0,
-       0,     0,    17,     0,    18,    19,    20,     0,     0,     0,
-       0,     0,     0,     0,    22,    23,    24,     0,     0,    25,
-       0,     0,     0,     0,     0,    28,    29,     0,    30,     0,
-       0,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     0,    38,     0,     0,    39,    40,     0,     0,     0,
-      59,    41,     0,     0,     0,    42,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    61,
-      14,     0,    15,     0,    16,     0,     0,     0,    17,     0,
-      18,    19,    20,     0,     0,     0,     0,     0,     0,     0,
-      22,    23,    24,     0,     0,    25,     0,     0,     0,     0,
-       0,    28,    29,     0,    30,     0,     0,     0,     0,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,     0,    38,     0,
-       0,    39,    40,     0,     0,     0,    59,    41,     0,     0,
-       0,    42,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    61,    14,     0,    15,     0,
-      16,     0,     0,     0,    17,     0,    18,    19,    20,     0,
-       0,     0,     0,     0,     0,     0,    22,    23,    24,     0,
-       0,    25,     0,     0,     0,     0,     0,    28,    29,     0,
-      30,     0,     0,     0,     0,     0,     0,     0,     0,    31,
-       0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
-      36,     0,     0,     0,    38,     0,     0,    39,    40,     0,
-       0,     0,     0,    41,     0,     0,     0,    42,     2,     3,
+      34,    35,    36,     0,     0,    37,    38,    39,     0,     0,
+      40,    41,     0,     0,     0,     0,    42,     0,     0,     0,
+      43,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,     0,    11,    12,    63,    14,     0,    15,   329,    16,
+       0,     0,     0,    17,     0,    18,    19,    20,     0,     0,
+       0,     0,     0,     0,     0,    22,    23,    24,     0,     0,
+      25,     0,     0,     0,     0,     0,    28,    29,     0,    30,
+       0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,     0,    39,     0,     0,    40,    41,     0,
+       0,     0,    61,    42,     0,     0,     0,    43,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    61,    14,   218,    15,     0,    16,     0,     0,     0,
-      17,     0,    18,    19,   123,   124,     0,     0,     0,   125,
-     126,   127,    22,   128,    24,     0,   129,   130,   131,     0,
-       0,     0,     0,    28,    29,     0,    30,     0,   219,   132,
-     133,   134,   135,   136,     0,    31,     0,     0,   137,   138,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
-      38,     0,     0,    39,    40,     2,     3,     4,     5,    41,
-       0,     0,     0,    42,     0,     0,    11,    12,    61,    14,
-       0,    15,     0,     0,     0,     0,     0,     0,    77,     0,
-       0,     0,     0,    78,     0,    79,    80,    81,    82,    62,
-       0,    24,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      12,    63,    14,     0,    15,     0,    16,     0,     0,     0,
+      17,     0,    18,    19,    20,     0,     0,     0,     0,     0,
+       0,     0,    22,    23,    24,     0,     0,    25,     0,     0,
+       0,     0,     0,    28,    29,     0,    30,     0,     0,     0,
+       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
+       0,    39,     0,     0,    40,    41,     0,     0,     0,    61,
+      42,     0,     0,     0,    43,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    63,    14,
+       0,    15,     0,    16,     0,     0,     0,    17,     0,    18,
+      19,    20,     0,     0,     0,     0,     0,     0,     0,    22,
+      23,    24,     0,     0,    25,     0,     0,     0,     0,     0,
+      28,    29,     0,    30,     0,     0,     0,     0,     0,     0,
        0,     0,    31,     0,     0,     0,     0,     0,     0,    32,
-      33,    34,    35,    36,     0,     0,     0,     0,     0,     0,
-      39,    40,     2,     3,     4,     5,    41,     0,     0,     0,
-      42,     0,     0,    11,    12,    61,    14,     0,    15,     0,
-       0,     0,     0,     0,     0,    77,     0,     0,     2,     3,
-       4,     5,    79,     0,    81,     0,    62,     0,    24,    11,
-      12,    61,    14,     0,    15,     0,     0,     0,     0,    97,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
-       0,     0,    62,     0,    24,     0,    32,    33,    34,    35,
-      36,     0,     0,     0,     0,     0,     0,    39,    40,     0,
-       0,     0,     0,    41,     0,    31,     0,    42,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
-       0,     0,     0,    39,    40,     2,     3,     4,     5,    41,
-       0,     0,     0,    42,     0,     0,    11,    12,    61,    14,
-       0,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     2,     3,     4,     5,     0,     0,     0,     0,    62,
-       0,    24,    11,    12,    61,    14,     0,    15,     0,     0,
+      33,    34,    35,    36,     0,     0,    37,     0,    39,     0,
+       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
+       0,    43,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    63,    14,   194,    15,     0,
+      16,     0,     0,     0,    17,     0,    18,    19,   126,   127,
+       0,     0,     0,   128,   129,   130,    22,   131,    24,     0,
+     132,   133,   134,     0,     0,     0,     0,    28,    29,     0,
+      30,     0,     0,     0,   135,   136,   137,   138,   139,    31,
+      61,     0,     0,   140,   141,     0,    32,    33,    34,    35,
+      36,     0,     0,     0,     0,    39,     0,     0,    40,    41,
+       2,     3,     4,     5,    42,     0,     0,     0,    43,     0,
+       0,    11,    12,    63,    14,     0,    15,     0,     0,     0,
+       0,     0,     0,    79,     0,     0,     0,     0,    80,     0,
+      81,    82,    83,    84,    64,     0,    24,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,    62,     0,    24,     0,    32,
-      33,    34,    35,    36,     0,     0,     0,     0,     0,     0,
-      39,    40,     0,     0,     0,     0,    70,     0,    31,     0,
-      42,   154,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,     0,     0,     0,     0,    39,    40,     0,     0,
-       0,     0,   119,   123,   124,     0,    42,     0,   125,   126,
-     127,     0,   128,   155,   156,   129,   130,   131,   168,     0,
-       0,     0,     0,     0,   169,     0,     0,     0,   132,   133,
-     134,   135,   136,     0,     0,   123,   124,   137,   138,     0,
-     125,   126,   127,     0,   128,     0,     0,   129,   130,   131,
-     170,     0,     0,     0,     0,     0,   171,     0,     0,     0,
-     132,   133,   134,   135,   136,     0,     0,   123,   124,   137,
-     138,     0,   125,   126,   127,     0,   128,     0,     0,   129,
-     130,   131,   172,     0,     0,     0,     0,     0,   173,     0,
-       0,     0,   132,   133,   134,   135,   136,     0,     0,   123,
-     124,   137,   138,     0,   125,   126,   127,     0,   128,     0,
-       0,   129,   130,   131,   174,     0,     0,     0,     0,     0,
-     175,     0,     0,     0,   132,   133,   134,   135,   136,     0,
-       0,   123,   124,   137,   138,     0,   125,   126,   127,     0,
-     128,     0,     0,   129,   130,   131,   251,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   132,   133,   134,   135,
-     136,     0,     0,   123,   124,   137,   138,     0,   125,   126,
-     127,     0,   128,     0,     0,   129,   130,   131,   252,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   132,   133,
-     134,   135,   136,     0,     0,   123,   124,   137,   138,     0,
-     125,   126,   127,     0,   128,     0,     0,   129,   130,   131,
-     253,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     132,   133,   134,   135,   136,     0,     0,   123,   124,   137,
-     138,     0,   125,   126,   127,     0,   128,     0,     0,   129,
-     130,   131,   254,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   132,   133,   134,   135,   136,     0,     0,   123,
-     124,   137,   138,     0,   125,   126,   127,     0,   128,     0,
-       0,   129,   130,   131,     0,     0,     0,     0,     0,     0,
-       0,   165,     0,     0,   132,   133,   134,   135,   136,     0,
-     123,   124,     0,   137,   138,   125,   126,   127,     0,   128,
-       0,     0,   129,   130,   131,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   132,   133,   134,   135,   136,
-       0,   123,   124,     0,   137,   138,   125,   126,   127,     0,
-     128,     0,     0,   129,   130,   131,     0,     0,     0,     0,
-       0,   176,   177,     0,     0,     0,   132,   133,   134,   135,
-     136,     0,   123,   124,     0,   137,   138,   125,   126,   127,
-       0,   128,     0,     0,   129,   130,   131,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   189,   132,   133,   134,
-     135,   136,     0,   123,   124,   180,   137,   138,   125,   126,
-     127,     0,   128,     0,     0,   129,   130,   131,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   132,   133,
-     134,   135,   136,     0,    59,   123,   124,   137,   138,     0,
-     125,   126,   127,     0,   128,     0,     0,   129,   130,   131,
+       0,     0,     0,     0,     0,     0,     0,    31,     2,     3,
+       4,     5,     0,     0,    32,    33,    34,    35,    36,    11,
+      12,    63,    14,     0,    15,     0,    40,    41,     0,     0,
+       0,    79,    42,     0,     0,     0,    43,     0,    81,     0,
+      83,     0,    64,     0,    24,     2,     3,     4,     5,     0,
+       0,     0,     0,     0,     0,    99,    11,    12,    63,    14,
+       0,    15,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,    64,
+       0,    24,     0,     0,    40,    41,     0,     0,     0,     0,
+      42,     0,     0,     0,    43,     0,     0,     0,     0,     0,
+       0,     0,    31,     2,     3,     4,     5,     0,     0,    32,
+      33,    34,    35,    36,    11,    12,    63,    14,     0,    15,
+       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
+       0,    43,     0,     0,     0,     0,     0,    64,     0,    24,
+       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    63,    14,     0,    15,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    64,     0,    24,     0,     0,    40,
+      41,     0,     0,     0,     0,    72,     0,     0,     0,    43,
+       0,     0,     0,     0,     0,     0,   157,    31,     0,     0,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,     0,     0,     0,     0,     0,    40,    41,   126,   127,
+       0,     0,   121,   128,   129,   130,    43,   131,   158,   159,
+     132,   133,   134,   171,     0,     0,     0,     0,     0,   172,
+       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
+     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
+       0,     0,   132,   133,   134,   173,     0,     0,     0,     0,
+       0,   174,     0,     0,     0,     0,   135,   136,   137,   138,
+     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
+       0,   131,     0,     0,   132,   133,   134,   175,     0,     0,
+       0,     0,     0,   176,     0,     0,     0,     0,   135,   136,
+     137,   138,   139,     0,   126,   127,     0,   140,   141,   128,
+     129,   130,     0,   131,     0,     0,   132,   133,   134,   177,
+       0,     0,     0,     0,     0,   178,     0,     0,     0,     0,
+     135,   136,   137,   138,   139,     0,   126,   127,     0,   140,
+     141,   128,   129,   130,     0,   131,     0,     0,   132,   133,
+     134,   258,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   135,   136,   137,   138,   139,     0,   126,   127,
+       0,   140,   141,   128,   129,   130,     0,   131,     0,     0,
+     132,   133,   134,   259,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
+     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
+       0,     0,   132,   133,   134,   260,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   135,   136,   137,   138,
+     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
+       0,   131,     0,     0,   132,   133,   134,   261,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   135,   136,
+     137,   138,   139,     0,   126,   127,     0,   140,   141,   128,
+     129,   130,     0,   131,     0,     0,   132,   133,   134,     0,
+       0,     0,     0,     0,     0,   223,     0,     0,     0,     0,
+     135,   136,   137,   138,   139,     0,   126,   127,     0,   140,
+     141,   128,   129,   130,     0,   131,     0,     0,   132,   133,
+     134,     0,     0,     0,     0,     0,     0,     0,     0,   168,
+       0,   224,   135,   136,   137,   138,   139,     0,   126,   127,
+       0,   140,   141,   128,   129,   130,     0,   131,     0,     0,
+     132,   133,   134,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
+     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
+       0,     0,   132,   133,   134,     0,     0,     0,     0,     0,
+     179,   180,     0,     0,     0,     0,   135,   136,   137,   138,
+     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
+       0,   131,     0,     0,   132,   133,   134,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   192,   135,   136,
+     137,   138,   139,     0,   126,   127,   183,   140,   141,   128,
+     129,   130,     0,   131,     0,     0,   132,   133,   134,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     132,   133,   134,   135,   136,     0,   123,   124,   180,   137,
-     138,   125,   126,   127,     0,   128,     0,     0,   129,   130,
-     131,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     189,   132,   133,   134,   135,   136,     0,   123,   124,     0,
-     137,   138,   125,   126,   127,     0,   128,     0,     0,   129,
-     130,   131,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   132,   133,   134,   135,   136,     0,     0,     0,
-       0,   137,   138
+     135,   136,   137,   138,   139,     0,    61,   126,   127,   140,
+     141,     0,   128,   129,   130,     0,   131,     0,     0,   132,
+     133,   134,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   135,   136,   137,   138,   139,     0,   126,
+     127,   183,   140,   141,   128,   129,   130,     0,   131,     0,
+       0,   132,   133,   134,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   192,   135,   136,   137,   138,   139,
+       0,   126,   127,     0,   140,   141,   128,   129,   130,     0,
+     131,     0,     0,   132,   133,   134,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   135,   136,   137,
+     138,   139,     0,     0,     0,     0,   140,   141
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   264,     0,   243,   117,     4,   119,    32,     7,     8,
-       9,    49,     1,    12,    13,    49,    72,   242,    42,   282,
-      19,    29,    28,    22,   222,    41,    30,    43,    53,    28,
-      29,    91,    31,    32,    33,    34,    35,    36,    94,    95,
-      39,    40,    41,    42,    68,    49,    84,    53,   291,    73,
-      84,   288,    51,    52,    43,   280,   281,   255,    24,   302,
-     285,    93,   287,    62,   301,   305,    98,    12,    13,    68,
-     164,    70,   297,   298,    73,    46,    84,    66,    77,    24,
-      79,    93,    66,    67,   178,    69,    98,   327,    72,    91,
-      98,    24,    91,    91,   188,    24,    98,    51,    52,    24,
-      24,    85,    86,    87,    88,    89,   331,    93,    24,    24,
-      94,    95,    98,    24,    97,    98,   116,    92,   117,   118,
-     119,    84,    92,    92,   123,   124,   125,   126,   127,   128,
+       0,    29,   119,     0,   121,     4,    28,   274,     7,     8,
+       9,   248,    49,    12,    13,    49,   244,   227,    43,   247,
+      19,     1,    92,    22,   291,    46,    32,   297,   300,    28,
+      29,    53,    31,    32,    33,    34,    35,    36,    30,   311,
+     310,    40,    41,    42,    43,    70,    72,    53,    85,    92,
+      75,    85,   262,    52,    53,    54,    99,    49,    86,    98,
+      99,   289,   290,    24,    44,    64,   294,   167,   296,    95,
+      96,    70,   100,    72,    12,    13,    75,   314,   306,   307,
+      79,   181,    81,    93,    66,    67,    24,    69,    68,    24,
+      72,   191,    94,    94,    93,    92,    94,    99,    99,   336,
+      41,    99,    43,    24,    86,    87,    88,    89,    90,    51,
+      52,    24,   340,    95,    96,    24,    24,    24,   118,    24,
+     119,   120,   121,    93,    93,    85,   188,   126,   127,   128,
      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,    98,    98,   142,    41,    98,    24,   146,    48,    98,
-      24,    98,   151,    48,    24,    24,   155,   156,   185,   158,
-     159,    24,   161,   162,    24,    93,   165,    93,    49,   168,
-     169,   170,   171,   172,   173,   174,   175,   176,   177,    98,
-     293,    24,   276,   182,    28,    24,    66,    67,    53,    69,
-     189,   304,    72,    48,    32,    28,   290,    28,    28,   188,
-      48,    28,   116,   277,   301,    29,    86,    87,    88,    89,
-      -1,    -1,    -1,   237,    94,    95,    -1,    -1,   207,   218,
-     219,    66,    67,   317,    69,   319,    -1,    72,    -1,    -1,
-     257,   325,    -1,   260,   261,    -1,    -1,    -1,   237,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,   275,    94,
-      95,    -1,   251,   252,   253,   254,    -1,   284,   247,    -1,
-     259,   250,    -1,    -1,   291,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   299,   300,   301,   274,    -1,    -1,    -1,    -1,
-     269,    -1,    -1,   310,    -1,    -1,    -1,    -1,    -1,   316,
-      -1,   318,    -1,    -1,   293,    -1,    -1,     0,     1,    -1,
-      -1,    -1,    -1,    -1,    -1,   304,   333,   334,    11,    12,
-      13,    14,    -1,    16,    17,    18,    19,    20,    -1,    22,
-      23,    24,    25,    -1,    27,    -1,    29,    -1,    -1,   329,
-      33,   331,    35,    36,    37,    -1,    -1,    40,    -1,    -1,
-      -1,    -1,    45,    46,    47,    -1,    -1,    50,    -1,    -1,
-      -1,    54,    55,    56,    57,    -1,    59,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    82,
-      83,    -1,    -1,    86,    87,    -1,    -1,    -1,    91,    92,
-      -1,    -1,    -1,    96,    11,    12,    13,    14,    -1,    16,
+     139,   140,   141,   142,    99,   125,   145,    99,    99,    41,
+     149,    24,    48,    99,    24,   154,    99,    48,    24,   158,
+     159,    24,   161,   162,    24,   164,   165,    94,    94,   168,
+      49,    24,   171,   172,   173,   174,   175,   176,   177,   178,
+     179,   180,    28,    24,   284,   302,   185,    99,    28,   251,
+      24,    53,    48,   192,    32,   194,   313,    28,    28,   299,
+      28,    48,   264,    28,   118,   267,   268,   285,   310,    29,
+      -1,   191,    66,    67,    -1,    69,    -1,   242,    72,    -1,
+      -1,   283,    -1,    -1,   223,   224,   326,    -1,   328,    -1,
+      -1,   293,   212,    -1,   334,    89,    90,    -1,   300,    -1,
+      -1,    95,    96,   242,    -1,    -1,   308,   309,   310,    66,
+      67,    -1,    69,    -1,    -1,    72,    -1,   319,    -1,   258,
+     259,   260,   261,   325,    -1,   327,    -1,   266,    -1,    -1,
+      87,    88,    89,    90,   254,    -1,    -1,   257,    95,    96,
+     342,   343,    -1,   282,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   279,
+      -1,    -1,    -1,   302,    -1,    -1,     0,     1,    -1,    -1,
+      -1,    -1,    -1,    -1,   313,    -1,    -1,    11,    12,    13,
+      14,    -1,    16,    17,    18,    19,    20,    -1,    22,    23,
+      24,    25,    -1,    27,    -1,    29,    -1,    -1,   338,    33,
+     340,    35,    36,    37,    -1,    -1,    40,    -1,    -1,    -1,
+      -1,    45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,
+      54,    55,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
+      -1,    75,    76,    77,    78,    79,    -1,    -1,    82,    83,
+      84,    -1,    -1,    87,    88,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    97,    11,    12,    13,    14,    -1,    16,
       17,    18,    19,    20,    -1,    22,    23,    24,    25,    -1,
       27,    -1,    29,    -1,    -1,    -1,    33,    -1,    35,    36,
       37,    -1,    -1,    40,    -1,    -1,    -1,    -1,    45,    46,
       47,    -1,    -1,    50,    -1,    -1,    -1,    54,    55,    56,
       57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
-      77,    78,    79,    -1,    -1,    82,    83,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    96,
-      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
-      -1,    22,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      -1,    -1,    33,    -1,    35,    36,    37,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    45,    46,    47,    -1,    -1,    50,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
-      -1,    -1,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
-      91,    92,    -1,    -1,    -1,    96,    11,    12,    13,    14,
-      -1,    16,    17,    18,    19,    20,    -1,    22,    23,    24,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,
-      35,    36,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    83,    -1,
-      -1,    86,    87,    -1,    -1,    -1,    91,    92,    -1,    -1,
-      -1,    96,    11,    12,    13,    14,    -1,    16,    17,    18,
-      19,    20,    -1,    22,    23,    24,    25,    -1,    27,    -1,
-      29,    -1,    -1,    -1,    33,    -1,    35,    36,    37,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,
-      -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,
-      59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    83,    -1,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    92,    -1,    -1,    -1,    96,    11,    12,
+      77,    78,    79,    -1,    -1,    82,    83,    84,    -1,    -1,
+      87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
+      97,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
+      20,    -1,    22,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    -1,    -1,    33,    -1,    35,    36,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,    -1,
+      50,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+      -1,    -1,    82,    -1,    84,    -1,    -1,    87,    88,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    11,    12,
       13,    14,    -1,    16,    17,    18,    19,    20,    -1,    22,
-      23,    24,    25,    49,    27,    -1,    29,    -1,    -1,    -1,
-      33,    -1,    35,    36,    60,    61,    -1,    -1,    -1,    65,
-      66,    67,    45,    69,    47,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    84,    85,
-      86,    87,    88,    89,    -1,    68,    -1,    -1,    94,    95,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      83,    -1,    -1,    86,    87,    11,    12,    13,    14,    92,
-      -1,    -1,    -1,    96,    -1,    -1,    22,    23,    24,    25,
-      -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,
-      -1,    -1,    -1,    39,    -1,    41,    42,    43,    44,    45,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      23,    24,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,
+      33,    -1,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    45,    46,    47,    -1,    -1,    50,    -1,    -1,
+      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    82,
+      -1,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    97,    11,    12,    13,    14,    -1,
+      16,    17,    18,    19,    20,    -1,    22,    23,    24,    25,
+      -1,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,    35,
+      36,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
+      46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
+      56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    11,    12,    13,    14,    92,    -1,    -1,    -1,
-      96,    -1,    -1,    22,    23,    24,    25,    -1,    27,    -1,
-      -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    11,    12,
-      13,    14,    41,    -1,    43,    -1,    45,    -1,    47,    22,
-      23,    24,    25,    -1,    27,    -1,    -1,    -1,    -1,    58,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-      -1,    -1,    45,    -1,    47,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    92,    -1,    68,    -1,    96,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    86,    87,    11,    12,    13,    14,    92,
-      -1,    -1,    -1,    96,    -1,    -1,    22,    23,    24,    25,
-      -1,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    45,
-      -1,    47,    22,    23,    24,    25,    -1,    27,    -1,    -1,
+      76,    77,    78,    79,    -1,    -1,    82,    -1,    84,    -1,
+      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
+      -1,    97,    11,    12,    13,    14,    -1,    16,    17,    18,
+      19,    20,    -1,    22,    23,    24,    25,    49,    27,    -1,
+      29,    -1,    -1,    -1,    33,    -1,    35,    36,    60,    61,
+      -1,    -1,    -1,    65,    66,    67,    45,    69,    47,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    56,    57,    -1,
+      59,    -1,    -1,    -1,    86,    87,    88,    89,    90,    68,
+      92,    -1,    -1,    95,    96,    -1,    75,    76,    77,    78,
+      79,    -1,    -1,    -1,    -1,    84,    -1,    -1,    87,    88,
+      11,    12,    13,    14,    93,    -1,    -1,    -1,    97,    -1,
+      -1,    22,    23,    24,    25,    -1,    27,    -1,    -1,    -1,
+      -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    39,    -1,
+      41,    42,    43,    44,    45,    -1,    47,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    68,    -1,    -1,    45,    -1,    47,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    92,    -1,    68,    -1,
-      96,    38,    -1,    -1,    -1,    75,    76,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    -1,    -1,
-      -1,    -1,    92,    60,    61,    -1,    96,    -1,    65,    66,
-      67,    -1,    69,    70,    71,    72,    73,    74,    43,    -1,
-      -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    85,    86,
-      87,    88,    89,    -1,    -1,    60,    61,    94,    95,    -1,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      43,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,
-      85,    86,    87,    88,    89,    -1,    -1,    60,    61,    94,
-      95,    -1,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    43,    -1,    -1,    -1,    -1,    -1,    49,    -1,
-      -1,    -1,    85,    86,    87,    88,    89,    -1,    -1,    60,
-      61,    94,    95,    -1,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    43,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,    -1,    -1,    85,    86,    87,    88,    89,    -1,
-      -1,    60,    61,    94,    95,    -1,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    43,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
-      89,    -1,    -1,    60,    61,    94,    95,    -1,    65,    66,
-      67,    -1,    69,    -1,    -1,    72,    73,    74,    43,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
-      87,    88,    89,    -1,    -1,    60,    61,    94,    95,    -1,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      85,    86,    87,    88,    89,    -1,    -1,    60,    61,    94,
-      95,    -1,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    87,    88,    89,    -1,    -1,    60,
-      61,    94,    95,    -1,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    51,    -1,    -1,    85,    86,    87,    88,    89,    -1,
-      60,    61,    -1,    94,    95,    65,    66,    67,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    11,    12,
+      13,    14,    -1,    -1,    75,    76,    77,    78,    79,    22,
+      23,    24,    25,    -1,    27,    -1,    87,    88,    -1,    -1,
+      -1,    34,    93,    -1,    -1,    -1,    97,    -1,    41,    -1,
+      43,    -1,    45,    -1,    47,    11,    12,    13,    14,    -1,
+      -1,    -1,    -1,    -1,    -1,    58,    22,    23,    24,    25,
+      -1,    27,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    45,
+      -1,    47,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
+      93,    -1,    -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    68,    11,    12,    13,    14,    -1,    -1,    75,
+      76,    77,    78,    79,    22,    23,    24,    25,    -1,    27,
+      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
+      -1,    97,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
+      11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    22,    23,    24,    25,    -1,    27,    -1,    -1,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    45,    -1,    47,    -1,    -1,    87,
+      88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    97,
+      -1,    -1,    -1,    -1,    -1,    -1,    38,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    60,    61,
+      -1,    -1,    93,    65,    66,    67,    97,    69,    70,    71,
+      72,    73,    74,    43,    -1,    -1,    -1,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,
+      60,    61,    -1,    95,    96,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    43,    -1,    -1,    -1,    -1,
+      -1,    49,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
+      90,    -1,    60,    61,    -1,    95,    96,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    43,    -1,    -1,
+      -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    86,    87,
+      88,    89,    90,    -1,    60,    61,    -1,    95,    96,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    43,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,
+      86,    87,    88,    89,    90,    -1,    60,    61,    -1,    95,
+      96,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    87,    88,    89,    90,    -1,    60,    61,
+      -1,    95,    96,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    43,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,
+      60,    61,    -1,    95,    96,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    43,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
+      90,    -1,    60,    61,    -1,    95,    96,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    43,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
+      88,    89,    90,    -1,    60,    61,    -1,    95,    96,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,
+      86,    87,    88,    89,    90,    -1,    60,    61,    -1,    95,
+      96,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,
+      -1,    85,    86,    87,    88,    89,    90,    -1,    60,    61,
+      -1,    95,    96,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,
+      60,    61,    -1,    95,    96,    65,    66,    67,    -1,    69,
       -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,
-      -1,    60,    61,    -1,    94,    95,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    -1,    -1,    -1,    85,    86,    87,    88,
-      89,    -1,    60,    61,    -1,    94,    95,    65,    66,    67,
+      80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
+      90,    -1,    60,    61,    -1,    95,    96,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
-      88,    89,    -1,    60,    61,    93,    94,    95,    65,    66,
-      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,
-      87,    88,    89,    -1,    91,    60,    61,    94,    95,    -1,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
+      88,    89,    90,    -1,    60,    61,    94,    95,    96,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      85,    86,    87,    88,    89,    -1,    60,    61,    93,    94,
-      95,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    85,    86,    87,    88,    89,    -1,    60,    61,    -1,
-      94,    95,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      86,    87,    88,    89,    90,    -1,    92,    60,    61,    95,
+      96,    -1,    65,    66,    67,    -1,    69,    -1,    -1,    72,
       73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    87,    88,    89,    -1,    -1,    -1,
-      -1,    94,    95
+      -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,    60,
+      61,    94,    95,    96,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,    90,
+      -1,    60,    61,    -1,    95,    96,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
+      89,    90,    -1,    -1,    -1,    -1,    95,    96
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1227,37 +1240,38 @@ static const yytype_uint8 yystos[] =
        0,     1,    11,    12,    13,    14,    16,    17,    18,    19,
       20,    22,    23,    24,    25,    27,    29,    33,    35,    36,
       37,    40,    45,    46,    47,    50,    54,    55,    56,    57,
-      59,    68,    75,    76,    77,    78,    79,    82,    83,    86,
-      87,    92,    96,   100,   102,   103,   104,   105,   106,   113,
-     114,   115,   120,   121,   122,   125,   128,   130,   137,    91,
-     101,    24,    45,   121,   121,   121,   121,   140,    24,   121,
-      92,   121,   139,   129,    46,    24,   123,    34,    39,    41,
-      42,    43,    44,   121,   126,   127,    24,   121,    51,    52,
-      12,    13,    24,    24,    24,    24,   121,    58,   126,   127,
-      24,   124,   121,   121,   121,   121,   121,   121,    24,    92,
-     121,   121,   121,   121,   138,     0,   101,    92,    84,    92,
-     112,   121,   121,    60,    61,    65,    66,    67,    69,    72,
-      73,    74,    85,    86,    87,    88,    89,    94,    95,    92,
-     121,   101,    98,   138,   121,   138,    98,   138,    98,   121,
-     121,    41,   127,   131,    38,    70,    71,    24,    49,    84,
-     121,    49,    84,    48,   132,    51,   127,    98,    43,    49,
-      43,    49,    43,    49,    43,    49,    80,    81,   133,    24,
-      93,    97,    98,   102,   112,   121,   112,   121,    48,    84,
-     118,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,    93,   121,
-      24,   121,   117,    24,   121,   121,   121,   121,    49,    84,
-     121,   121,   117,   121,    24,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   117,    93,    98,   121,    93,
-     118,    93,   101,   117,   121,   101,    24,   135,   121,   121,
-     135,    43,    43,    43,    43,   134,   138,   119,    30,    49,
-     119,   104,    98,   101,   101,   121,   121,   121,   121,   135,
-      93,   101,   105,   118,    49,   121,   118,   118,    24,    98,
-     136,   136,   101,    28,   121,   118,    28,    53,   117,    32,
-      53,   109,   110,   116,    24,   119,   119,   136,   118,   119,
-     119,   108,   109,   111,   116,   117,   110,   118,   112,   119,
-     119,   118,   118,   111,   118,   112,   104,    53,   107,    48,
-      28,   118,    28,    28,    28,    48,   118,   117,   118,   117,
-      28,   117,   104,   105,   119,   118,   118
+      59,    68,    75,    76,    77,    78,    79,    82,    83,    84,
+      87,    88,    93,    97,   101,   103,   104,   105,   106,   107,
+     114,   115,   116,   121,   122,   123,   124,   127,   130,   132,
+     139,    92,   102,    24,    45,   123,   123,   123,   123,   142,
+      24,   123,    93,   123,   141,   131,    46,    24,   125,    34,
+      39,    41,    42,    43,    44,   123,   128,   129,    24,   123,
+      51,    52,    12,    13,    24,    24,    24,    24,   123,    58,
+     128,   129,    24,   126,   123,   123,   123,   123,   123,   123,
+      24,    93,   123,   123,   123,   123,   140,     0,   102,    93,
+      85,    93,   113,   123,   123,   123,    60,    61,    65,    66,
+      67,    69,    72,    73,    74,    86,    87,    88,    89,    90,
+      95,    96,    93,   123,   102,    99,   140,   123,   140,    99,
+     140,    99,   123,   123,    41,   129,   133,    38,    70,    71,
+      24,    49,    85,   123,    49,    85,    48,   134,    51,   129,
+      99,    43,    49,    43,    49,    43,    49,    43,    49,    80,
+      81,   135,    24,    94,    98,    99,   103,   113,   123,   113,
+     123,    48,    85,   119,    49,   102,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,    94,   123,    24,   123,   118,    24,   123,
+     123,   123,   123,    49,    85,   123,   123,   118,   123,    24,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     118,    94,    99,   123,    94,   119,    94,   102,   118,   123,
+     123,   120,   102,    24,   137,   123,   123,   137,    43,    43,
+      43,    43,   136,   140,   120,    30,    49,   120,   105,   102,
+     106,   119,    99,   102,   102,   123,   123,   123,   123,   137,
+      94,   119,    49,   123,   119,   119,    28,    24,    99,   138,
+     138,   102,    28,   123,   119,    28,    53,   118,    32,    53,
+     110,   111,   117,    24,   120,   120,   138,   119,   120,   120,
+     109,   110,   112,   117,   118,   111,   119,   113,   120,   120,
+     119,   119,   112,   119,   113,   105,    53,   108,    48,    28,
+     119,    28,    28,    28,    48,   119,   118,   119,   118,    28,
+     118,   105,   106,   120,   119,   119
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2236,7 +2250,21 @@ yyreduce:
     break;
 
   case 27:
-#line 251 "engines/director/lingo/lingo-gr.y"
+#line 249 "engines/director/lingo/lingo-gr.y"
+    {
+			warning("STUB: TELL is not implemented");
+			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
+    break;
+
+  case 28:
+#line 252 "engines/director/lingo/lingo-gr.y"
+    {
+			warning("STUB: TELL is not implemented");
+		;}
+    break;
+
+  case 29:
+#line 257 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code));
@@ -2249,8 +2277,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 28:
-#line 261 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 267 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2265,8 +2293,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 29:
-#line 273 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 279 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code));
@@ -2281,8 +2309,8 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(9) - (10)].code)); ;}
     break;
 
-  case 30:
-#line 285 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 291 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2295,8 +2323,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 31:
-#line 295 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 301 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2309,8 +2337,8 @@ yyreduce:
 		g_lingo->processIf(0, 0); ;}
     break;
 
-  case 32:
-#line 305 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 311 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2323,18 +2351,18 @@ yyreduce:
 		g_lingo->processIf(0, (yyvsp[(10) - (10)].code)); ;}
     break;
 
-  case 33:
-#line 317 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 323 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
-  case 34:
-#line 318 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 324 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 39:
-#line 329 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 335 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2343,8 +2371,8 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 41:
-#line 338 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 344 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code));
@@ -2353,23 +2381,23 @@ yyreduce:
 		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
-  case 42:
-#line 346 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 352 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
-  case 43:
-#line 347 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 353 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
-  case 45:
-#line 351 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 357 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 46:
-#line 354 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 360 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2377,8 +2405,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 47:
-#line 361 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 367 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2386,8 +2414,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 48:
-#line 368 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 374 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2396,23 +2424,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 49:
-#line 376 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 382 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 50:
-#line 379 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 385 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 51:
-#line 382 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 388 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 54:
-#line 387 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 393 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2420,63 +2448,70 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 55:
-#line 393 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 399 "engines/director/lingo/lingo-gr.y"
+    {
+		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
+		g_lingo->code1(STOP); ;}
+    break;
+
+  case 58:
+#line 403 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 56:
-#line 394 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 404 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 57:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 407 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 58:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 410 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 59:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 413 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 60:
-#line 406 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 416 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 61:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 419 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
-  case 62:
-#line 412 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 422 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 63:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 426 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2486,8 +2521,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 64:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 433 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2496,336 +2531,336 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 66:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 440 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 67:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 441 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 68:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 442 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 69:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 443 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 70:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 444 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 71:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 445 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 72:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 446 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 73:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 447 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 74:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 448 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 75:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 76:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 450 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 77:
-#line 441 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 451 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 78:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 79:
-#line 443 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 80:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 81:
-#line 445 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 455 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 82:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 456 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 83:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 457 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 84:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 458 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 85:
-#line 449 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 459 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 86:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 460 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 87:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 461 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 88:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 462 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 89:
-#line 453 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 463 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 90:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 464 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 91:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 465 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 92:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 466 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 93:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 467 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 94:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 468 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 95:
-#line 459 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 469 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 96:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 470 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 97:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 473 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 100:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 101:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 104:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 481 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 105:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 484 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 106:
-#line 477 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 487 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 107:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 490 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 108:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 493 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 109:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 110:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 111:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 496 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 112:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 113:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 498 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 114:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 501 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 115:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 502 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 116:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 117:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 118:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 517 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 518 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 120:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 519 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 121:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 520 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 122:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 523 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 123:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 526 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 128:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 539 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 129:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 540 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 130:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 543 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 131:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 546 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 132:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 549 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 133:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 549 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 134:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 579 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 135:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 580 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2833,38 +2868,38 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 136:
-#line 575 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 585 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 137:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 588 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 138:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 589 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
-  case 139:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 593 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 140:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 594 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 141:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 594 "engines/director/lingo/lingo-gr.y"
     {
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
@@ -2876,33 +2911,33 @@ yyreduce:
 			;}
     break;
 
-  case 142:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 604 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 143:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 605 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 144:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 606 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 145:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 607 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 146:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 610 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 147:
-#line 604 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 614 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -2911,44 +2946,44 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 148:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 622 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 149:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 623 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 150:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 624 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 151:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 627 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 152:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 628 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 153:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 631 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 154:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 632 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+#line 2987 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3162,6 +3197,6 @@ yyreturn:
 }
 
 
-#line 625 "engines/director/lingo/lingo-gr.y"
+#line 635 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 639ada7..367837d 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -118,8 +118,9 @@
      tSPRITE = 334,
      tINTERSECTS = 335,
      tWITHIN = 336,
-     tON = 337,
-     tME = 338
+     tTELL = 337,
+     tON = 338,
+     tME = 339
    };
 #endif
 /* Tokens.  */
@@ -202,8 +203,9 @@
 #define tSPRITE 334
 #define tINTERSECTS 335
 #define tWITHIN 336
-#define tON 337
-#define tME 338
+#define tTELL 337
+#define tON 338
+#define tME 339
 
 
 
@@ -221,7 +223,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 225 "engines/director/lingo/lingo-gr.hpp"
+#line 227 "engines/director/lingo/lingo-gr.hpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 7e0f046..8ea770a 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -100,10 +100,10 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tINSTANCE
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT tMOD
 %token tAFTER tBEFORE tCONCAT tCONTAINS tSTARTS tCHAR tITEM tLINE tWORD
-%token tSPRITE tINTERSECTS tWITHIN
+%token tSPRITE tINTERSECTS tWITHIN tTELL
 %token tON tME
 
-%type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist
+%type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist tell
 %type<narg> argdef arglist nonemptyarglist nonemptyarglistnl
 
 %right '='
@@ -246,6 +246,12 @@ stmt: stmtoneliner
 			g_lingo->code1(STOP);
 			(*g_lingo->_currentScript)[$1 + 1] = end;
 		}
+	| tell expr nl stmtlist end ENDCLAUSE {
+			warning("STUB: TELL is not implemented");
+			checkEnd($6, "tell", true); }
+	| tell expr tTO expr {
+			warning("STUB: TELL is not implemented");
+		}
 	;
 
 ifstmt:	if cond tTHEN nl stmtlist end ENDCLAUSE		{
@@ -390,6 +396,10 @@ when:	  tWHEN	ID tTHEN	{
 		g_lingo->codeString($2->c_str());
 		delete $2; }
 
+tell:	  tTELL				{
+		$$ = g_lingo->code1(g_lingo->c_tellcode);
+		g_lingo->code1(STOP); }
+
 expr: INT		{ $$ = g_lingo->codeConst($1); }
 	| FLOAT		{
 		$$ = g_lingo->code1(g_lingo->c_fconstpush);
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index e26eed1..8675768 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 69
-#define YY_END_OF_BUFFER 70
+#define YY_NUM_RULES 70
+#define YY_END_OF_BUFFER 71
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,36 +373,36 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[253] =
+static yyconst flex_int16_t yy_accept[256] =
     {   0,
-        0,    0,   70,   68,    3,   66,   66,   68,   68,   68,
-       65,   65,   65,   64,   65,   65,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,    2,    2,    3,   66,    0,    0,
-        0,    0,    0,   67,    4,   61,    1,   63,   64,   60,
-       58,   59,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   22,   12,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   35,   36,   62,   38,
-       62,   62,   62,   62,   62,   62,   62,   62,   51,   62,
-       62,   62,    2,    2,    0,    4,    1,   63,   62,    6,
-
-       62,   62,   62,   62,   62,   62,   16,   62,   62,   62,
-       62,    0,   62,   62,   62,   62,   62,   62,   62,   31,
-       62,   62,   34,   62,   62,   62,   42,   62,   44,   62,
-       62,   62,   62,   62,   62,   62,    0,   62,   62,    8,
-       62,   10,   11,   15,    0,   16,   18,   62,   62,   62,
-        0,   62,   62,   25,   26,   27,   28,   62,   62,   62,
-       33,   37,   39,   62,   62,   62,   62,    0,   50,   55,
-       62,   53,   57,   14,    5,   62,   62,   16,   16,   62,
-       19,   62,   21,   62,   62,   29,   62,   32,   62,   62,
-       62,   62,   62,   49,   49,   56,   62,    0,    7,   62,
-
-       16,   62,   20,   62,   62,   30,   62,   62,   43,   52,
-       45,    0,    0,   49,   54,    0,   62,   17,   62,   62,
-       62,   62,    0,    0,    0,    0,   49,   13,    9,   23,
-       62,   62,   41,    0,    0,    0,   49,   62,   40,    0,
-        0,    0,    0,   24,   48,   47,   48,    0,    0,    0,
-       46,    0
+        0,    0,   71,   69,    3,   67,   67,   69,   69,   69,
+       66,   66,   66,   65,   66,   66,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,    2,    2,    3,   67,    0,    0,
+        0,    0,    0,   68,    4,   62,    1,   64,   65,   61,
+       59,   60,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   22,   12,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   35,   36,   63,   38,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   52,
+       63,   63,   63,    2,    2,    0,    4,    1,   64,   63,
+
+        6,   63,   63,   63,   63,   63,   63,   16,   63,   63,
+       63,   63,    0,   63,   63,   63,   63,   63,   63,   63,
+       31,   63,   63,   34,   63,   63,   63,   42,   63,   44,
+       63,   63,   63,   63,   63,   63,   63,   63,    0,   63,
+       63,    8,   63,   10,   11,   15,    0,   16,   18,   63,
+       63,   63,    0,   63,   63,   25,   26,   27,   28,   63,
+       63,   63,   33,   37,   39,   63,   63,   63,   63,   46,
+        0,   51,   56,   63,   54,   58,   14,    5,   63,   63,
+       16,   16,   63,   19,   63,   21,   63,   63,   29,   63,
+       32,   63,   63,   63,   63,   63,   50,   50,   57,   63,
+
+        0,    7,   63,   16,   63,   20,   63,   63,   30,   63,
+       63,   43,   53,   45,    0,    0,   50,   55,    0,   63,
+       17,   63,   63,   63,   63,    0,    0,    0,    0,   50,
+       13,    9,   23,   63,   63,   41,    0,    0,    0,   50,
+       63,   40,    0,    0,    0,    0,   24,   49,   48,   49,
+        0,    0,    0,   47,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -448,73 +448,73 @@ static yyconst flex_int32_t yy_meta[65] =
         5,    5,    5,    5
     } ;
 
-static yyconst flex_int16_t yy_base[264] =
+static yyconst flex_int16_t yy_base[267] =
     {   0,
-        0,   63,  160,  645,   67,   71,   75,   79,  140,    0,
-      645,  133,  126,   54,   70,   94,   65,   67,   65,   61,
+        0,   63,  159,  646,   67,   71,   75,   79,  147,    0,
+      646,  133,  126,   54,   70,   94,   65,   67,   65,   61,
        71,   87,   72,    0,  103,   81,  119,  109,  135,  118,
-       82,  112,  146,  155,  194,  208,  212,  645,  216,  181,
-      220,  121,   99,  645,    0,  645,    0,   88,   95,  645,
-      645,  645,    0,  118,   96,  105,  142,  177,  197,  173,
-      183,  183,  210,  215,  204,   88,    0,  202,  217,  211,
-      213,  225,  211,  228,  208,  216,    0,    0,  228,    0,
-      235,  232,  220,  225,  227,  235,  255,  255,    0,  260,
-      248,  251,  291,  300,  253,    0,    0,   84,  267,    0,
-
-      260,  258,  263,  278,  280,  279,  314,  277,  282,  290,
-      302,  321,  293,  300,  301,  311,  300,  301,  311,    0,
-      312,  304,    0,  311,  303,  307,    0,  326,    0,  323,
-      317,  364,  322,  332,  337,  345,  349,  343,  344,    0,
-      354,    0,    0,    0,  189,    0,    0,  348,  358,  364,
-      354,  365,  352,    0,    0,    0,    0,  357,  358,  368,
-        0,    0,  374,  369,  380,  364,  368,  408,    0,    0,
-      384,  390,    0,  237,    0,  397,  395,    0,    0,  391,
-        0,  398,  645,  397,  394,    0,  401,    0,  410,  401,
-      397,  412,  401,  434,  455,    0,  408,  465,    0,  409,
-
-        0,  407,    0,  432,  432,    0,  444,  432,    0,    0,
-        0,  475,  444,  481,    0,  447,  438,    0,  452,  455,
-      454,  448,  479,  476,  475,  476,  502,  645,    0,    0,
-      473,  489,    0,  482,  519,  491,  525,  489,    0,  504,
-      526,  518,  540,    0,  645,  544,  645,  546,  522,  550,
-      551,  645,  600,  602,  605,  608,  614,  619,  624,  627,
-      632,  634,  639
+       82,  112,  153,  155,  191,  208,  212,  646,  216,  179,
+      224,  119,   99,  646,    0,  646,    0,   88,   95,  646,
+      646,  646,    0,  113,   96,  105,  159,  169,  194,  172,
+      188,  199,  215,  218,  201,   88,    0,  203,  218,  212,
+      212,  224,  213,  226,  211,  216,    0,    0,  223,    0,
+      235,  232,  222,  227,  232,  240,  237,  249,  259,    0,
+      263,  248,  253,  290,  299,  256,    0,    0,   84,  275,
+
+        0,  268,  266,  271,  287,  282,  291,  184,  280,  281,
+      289,  300,  322,  285,  304,  300,  305,  298,  298,  312,
+        0,  313,  297,    0,  313,  305,  309,    0,  326,    0,
+      323,  321,  332,  360,  331,  337,  325,  347,  347,  338,
+      342,    0,  359,    0,    0,    0,  375,    0,    0,  349,
+      361,  368,  357,  373,  361,    0,    0,    0,    0,  366,
+      367,  370,    0,    0,  381,  375,  385,  369,  370,    0,
+      404,    0,    0,  387,  387,    0,  412,    0,  398,  397,
+        0,    0,  391,    0,  399,  646,  401,  397,    0,  412,
+        0,  415,  406,  404,  419,  408,  441,  451,    0,  416,
+
+      447,    0,  429,    0,  424,    0,  448,  447,    0,  451,
+      438,    0,    0,    0,  471,  451,  475,    0,  453,  444,
+        0,  458,  465,  466,  447,  509,  473,  472,  474,  516,
+      646,    0,    0,  454,  476,    0,  482,  518,  494,  526,
+      495,    0,  512,  532,  514,  542,    0,  646,  538,  646,
+      540,  526,  547,  552,  646,  601,  603,  606,  609,  615,
+      620,  625,  628,  633,  635,  640
     } ;
 
-static yyconst flex_int16_t yy_def[264] =
+static yyconst flex_int16_t yy_def[267] =
     {   0,
-      252,    1,  252,  252,  252,  252,  252,  252,  253,  254,
-      252,  252,  252,  252,  252,  252,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  252,  252,  252,  252,  252,  252,
-      252,  252,  253,  252,  256,  252,  257,  252,  252,  252,
-      252,  252,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  252,  252,  252,  256,  257,  252,  255,  255,
-
-      255,  255,  255,  255,  255,  255,  258,  255,  255,  255,
-      255,  252,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  252,  255,  255,  255,
-      255,  255,  255,  255,  259,  260,  255,  255,  255,  255,
-      252,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  255,  255,  255,  255,  261,  255,  255,
-      255,  255,  255,  252,  255,  255,  255,  262,  260,  255,
-      255,  255,  252,  255,  255,  255,  255,  255,  255,  255,
-      255,  255,  255,  261,  261,  255,  255,  252,  255,  255,
-
-      262,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      255,  252,  252,  261,  255,  252,  255,  255,  255,  255,
-      255,  255,  252,  252,  252,  252,  261,  252,  255,  255,
-      255,  255,  255,  252,  252,  252,  261,  255,  255,  252,
-      263,  252,  252,  255,  252,  263,  252,  252,  252,  252,
-      263,    0,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252
+      255,    1,  255,  255,  255,  255,  255,  255,  256,  257,
+      255,  255,  255,  255,  255,  255,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  255,  255,  255,  255,  255,  255,
+      255,  255,  256,  255,  259,  255,  260,  255,  255,  255,
+      255,  255,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  255,  255,  255,  259,  260,  255,  258,
+
+      258,  258,  258,  258,  258,  258,  258,  261,  258,  258,
+      258,  258,  255,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  255,  258,
+      258,  258,  258,  258,  258,  258,  262,  263,  258,  258,
+      258,  258,  255,  258,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
+      264,  258,  258,  258,  258,  258,  255,  258,  258,  258,
+      265,  263,  258,  258,  258,  255,  258,  258,  258,  258,
+      258,  258,  258,  258,  258,  258,  264,  264,  258,  258,
+
+      255,  258,  258,  265,  258,  258,  258,  258,  258,  258,
+      258,  258,  258,  258,  255,  255,  264,  258,  255,  258,
+      258,  258,  258,  258,  258,  255,  255,  255,  255,  264,
+      255,  258,  258,  258,  258,  258,  255,  255,  255,  264,
+      258,  258,  255,  266,  255,  255,  258,  255,  266,  255,
+      255,  255,  255,  266,    0,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255
     } ;
 
-static yyconst flex_int16_t yy_nxt[710] =
+static yyconst flex_int16_t yy_nxt[711] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   11,   16,   17,   18,   19,   20,
@@ -524,79 +524,79 @@ static yyconst flex_int16_t yy_nxt[710] =
        26,   27,   28,   29,   30,   24,   31,   32,   33,   24,
        24,   34,   24,   24,   35,   48,   49,   36,   37,   38,
        38,   39,   40,   41,   41,   40,   40,   41,   41,   40,
-       39,   38,   38,   39,   50,   51,   54,   56,   57,  112,
-       59,   42,  112,   55,   58,   42,   98,   60,   65,   61,
+       39,   38,   38,   39,   50,   51,   54,   56,   57,  113,
+       59,   42,  113,   55,   58,   42,   99,   60,   65,   61,
 
-       98,   66,   84,   63,   44,   70,   48,   49,   52,   62,
-       71,   54,   56,   57,   59,  100,   42,   55,   58,   64,
-       42,   60,   65,   61,   67,   66,  101,   84,   63,   75,
+       99,   66,   84,   63,   44,   70,   48,   49,   52,   62,
+       71,   54,   56,   57,   59,  101,   42,   55,   58,   64,
+       42,   60,   65,   61,   67,   66,  102,   84,   63,   75,
        70,   68,   85,   62,   71,   72,   47,   69,   76,   73,
-      100,   46,   86,   64,   81,   44,   87,   95,   74,   67,
-       82,  101,   99,   83,   75,   68,   77,   85,  102,  252,
-       72,   69,   76,   78,   73,   79,   86,   80,   81,   88,
-       87,   95,   74,  252,   82,   89,   99,   83,   90,   91,
-      252,   77,   40,  102,   92,   40,  252,   78,  252,   79,
-      145,   80,  252,  145,   88,   93,   38,   38,   94,   89,
-
-      252,   42,  107,   90,   91,  103,  106,  108,   92,   94,
-       38,   38,   94,   37,   38,   38,   39,   39,   38,   38,
-       39,   40,   41,   41,   40,  104,   42,  107,  109,  103,
-      106,  110,  108,  111,  105,  113,  114,  115,  198,  116,
-       42,  198,  117,  118,  252,  119,  122,  120,  124,  104,
-      123,  125,  126,  109,  127,  128,  110,  111,  105,  113,
-      114,  129,  115,  116,  121,   42,  117,  130,  118,  119,
-      122,  131,  120,  124,  123,  132,  125,  126,  127,  128,
-      133,  252,  135,  136,  134,  129,  137,  138,  121,  139,
-      140,  130,   93,   38,   38,   94,  131,  141,  142,  144,
-
-      132,   94,   38,   38,   94,  133,  135,  136,  143,  134,
-      137,  147,  138,  139,  140,  145,  148,  149,  145,  150,
-      153,  141,  112,  142,  144,  112,   53,  152,  155,  154,
-      157,  156,  143,  158,  159,  147,  160,  252,  161,  162,
-      148,  149,  163,  164,  150,  153,  165,  166,  252,  167,
-      170,  152,  155,  154,  157,  151,  156,  158,  171,  159,
-      172,  160,  161,  162,  173,  168,  163,  164,  168,  174,
-      177,  165,  166,  167,  170,  175,  176,  180,  181,  151,
-      182,  184,  171,  183,  185,  172,  186,  187,  188,  173,
-      189,  252,  169,  190,  174,  177,  191,  252,  192,  175,
-
-      176,  180,  193,  181,  196,  182,  184,  183,  185,  168,
-      186,  187,  168,  188,  197,  189,  169,  199,  190,  200,
-      206,  191,  192,  202,  203,  204,  193,  205,  207,  196,
-      208,  209,  210,  252,  211,  212,  215,  217,  212,  197,
-      252,  195,  199,  213,  200,  206,  218,  202,  203,  204,
-      219,  205,  220,  207,  208,  209,  212,  210,  211,  212,
-      215,  217,  221,  224,  213,  195,  198,  222,  228,  198,
-      218,  229,  230,  231,  232,  219,  223,  220,  226,  223,
-      223,  233,  212,  223,  252,  212,  214,  221,  224,  216,
-      213,  222,  234,  228,  224,  229,  235,  230,  231,  232,
-
-      236,  252,  226,  212,  225,  233,  212,  238,  225,  226,
-      214,  213,  252,  227,  216,  239,  240,  234,  242,  224,
-      241,  235,  244,  241,  245,  236,  243,  241,  225,  243,
-      241,  238,  225,  226,  213,  252,  237,  227,  247,  239,
-      240,  248,  242,  250,  248,  252,  244,  248,  252,  245,
-      248,  251,  251,  252,  251,  251,  252,  252,  252,  224,
-      237,  252,  252,  247,  252,  252,  252,  252,  250,  249,
-      252,  252,  252,  252,  226,  249,  252,  252,  252,  252,
-      252,  252,  252,  252,  224,  252,  252,  252,  252,  252,
-      252,  252,  252,  249,  252,  252,  252,  252,  226,  249,
-
-       43,   43,  252,   43,   43,   43,   45,   45,   53,   53,
-       53,   96,   96,   96,   97,   97,  252,   97,   97,   97,
-      146,  252,  146,  146,  146,  178,  252,  252,  178,  178,
-      179,  179,  179,  194,  252,  252,  194,  201,  201,  201,
-      246,  252,  252,  246,    3,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-
-      252,  252,  252,  252,  252,  252,  252,  252,  252
+      101,   46,   86,   64,   81,   96,   87,  100,   74,   67,
+       82,  102,   44,   83,   75,   68,   77,   85,  255,  255,
+       72,   69,   76,   78,   73,   79,   86,   80,   81,   96,
+       87,  100,   74,   88,   82,  103,   89,   83,   91,   92,
+       40,   77,   90,   40,   93,  147,  255,   78,  147,   79,
+      255,   80,   94,   38,   38,   95,   53,  104,   88,   42,
+
+      103,   89,  255,   91,   92,  107,   90,  108,   93,   95,
+       38,   38,   95,   37,   38,   38,   39,   39,   38,   38,
+       39,  104,  105,  109,   42,   40,   41,   41,   40,  107,
+      112,  106,  108,  110,  111,  255,  114,  115,  116,  255,
+      117,  118,  119,  125,   42,  121,  105,  120,  109,  123,
+      124,  126,  127,  132,  112,  106,  128,  129,  110,  111,
+      114,  115,  122,  116,  117,  118,  130,  119,  125,   42,
+      121,  120,  131,  123,  124,  133,  126,  127,  132,  134,
+      128,  129,  137,  135,  255,  138,  122,  136,  255,  139,
+      130,   94,   38,   38,   95,  140,  131,  141,  142,  133,
+
+       95,   38,   38,   95,  134,  143,  137,  144,  135,  138,
+      145,  146,  136,  139,  149,  150,  151,  152,  255,  154,
+      140,  141,  142,  113,  155,  158,  113,  157,  159,  143,
+      160,  163,  144,  156,  145,  161,  146,  162,  149,  150,
+      151,  164,  152,  154,  165,  166,  167,  168,  175,  155,
+      158,  157,  159,  169,  160,  163,  153,  156,  170,  173,
+      161,  171,  162,  174,  171,  164,  176,  177,  165,  166,
+      178,  167,  168,  175,  179,  180,  147,  169,  183,  147,
+      153,  184,  170,  173,  185,  255,  186,  174,  172,  187,
+      191,  176,  177,  188,  178,  189,  190,  192,  179,  193,
+
+      180,  194,  183,  195,  196,  171,  184,  199,  171,  185,
+      186,  200,  172,  201,  187,  191,  201,  188,  202,  189,
+      190,  203,  192,  205,  193,  206,  194,  195,  196,  207,
+      208,  209,  199,  210,  255,  211,  200,  198,  212,  213,
+      255,  214,  215,  202,  218,  215,  203,  205,  201,  206,
+      216,  201,  215,  207,  208,  215,  209,  220,  210,  211,
+      216,  198,  212,  221,  213,  214,  222,  223,  218,  224,
+      227,  219,  226,  225,  231,  226,  215,  232,  233,  215,
+      236,  220,  217,  234,  216,  229,  235,  221,  241,  237,
+      227,  222,  223,  238,  224,  227,  219,  225,  239,  231,
+
+      228,  232,  242,  233,  236,  229,  217,  230,  234,  229,
+      226,  235,  241,  226,  237,  227,  243,  215,  238,  244,
+      215,  245,  244,  239,  228,  216,  242,  246,  247,  229,
+      246,  230,  248,  244,  250,  216,  244,  255,  228,  255,
+      243,  251,  255,  251,  251,  245,  251,  253,  254,  255,
+      240,  254,  247,  254,  255,  255,  254,  248,  255,  250,
+      255,  227,  228,  255,  255,  255,  255,  255,  255,  252,
+      255,  252,  253,  255,  240,  255,  229,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  227,  255,  255,  255,
+      255,  255,  255,  252,  255,  252,  255,  255,  255,  255,
+
+      229,   43,   43,  255,   43,   43,   43,   45,   45,   53,
+       53,   53,   97,   97,   97,   98,   98,  255,   98,   98,
+       98,  148,  255,  148,  148,  148,  181,  255,  255,  181,
+      181,  182,  182,  182,  197,  255,  255,  197,  204,  204,
+      204,  249,  255,  255,  249,    3,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255
     } ;
 
-static yyconst flex_int16_t yy_chk[710] =
+static yyconst flex_int16_t yy_chk[711] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -607,75 +607,75 @@ static yyconst flex_int16_t yy_chk[710] =
         1,    1,    1,    1,    2,   14,   14,    2,    5,    5,
         5,    5,    6,    6,    6,    6,    7,    7,    7,    7,
         8,    8,    8,    8,   15,   15,   17,   18,   19,   66,
-       20,    6,   66,   17,   19,    7,   98,   21,   23,   21,
+       20,    6,   66,   17,   19,    7,   99,   21,   23,   21,
 
        48,   23,   31,   22,   43,   26,   49,   49,   16,   21,
        26,   17,   18,   19,   20,   55,    6,   17,   19,   22,
         7,   21,   23,   21,   25,   23,   56,   31,   22,   28,
        26,   25,   32,   21,   26,   27,   13,   25,   28,   27,
-       55,   12,   32,   22,   30,    9,   32,   42,   27,   25,
-       30,   56,   54,   30,   28,   25,   29,   32,   57,    3,
-       27,   25,   28,   29,   27,   29,   32,   29,   30,   33,
-       32,   42,   27,    0,   30,   33,   54,   30,   34,   34,
-        0,   29,   40,   57,   34,   40,    0,   29,    0,   29,
-      145,   29,    0,  145,   33,   35,   35,   35,   35,   33,
-
-        0,   40,   61,   34,   34,   58,   60,   62,   34,   36,
+       55,   12,   32,   22,   30,   42,   32,   54,   27,   25,
+       30,   56,    9,   30,   28,   25,   29,   32,    3,    0,
+       27,   25,   28,   29,   27,   29,   32,   29,   30,   42,
+       32,   54,   27,   33,   30,   57,   33,   30,   34,   34,
+       40,   29,   33,   40,   34,  108,    0,   29,  108,   29,
+        0,   29,   35,   35,   35,   35,  108,   58,   33,   40,
+
+       57,   33,    0,   34,   34,   60,   33,   61,   34,   36,
        36,   36,   36,   37,   37,   37,   37,   39,   39,   39,
-       39,   41,   41,   41,   41,   59,   40,   61,   63,   58,
-       60,   64,   62,   65,   59,   68,   68,   69,  174,   70,
-       41,  174,   71,   72,    0,   73,   75,   74,   79,   59,
-       76,   81,   82,   63,   83,   84,   64,   65,   59,   68,
-       68,   85,   69,   70,   74,   41,   71,   86,   72,   73,
-       75,   87,   74,   79,   76,   88,   81,   82,   83,   84,
-       90,    0,   91,   92,   90,   85,   95,   99,   74,  101,
-      102,   86,   93,   93,   93,   93,   87,  103,  104,  106,
-
-       88,   94,   94,   94,   94,   90,   91,   92,  105,   90,
-       95,  108,   99,  101,  102,  107,  109,  110,  107,  111,
-      114,  103,  112,  104,  106,  112,  107,  113,  115,  114,
-      117,  116,  105,  118,  119,  108,  121,    0,  122,  124,
-      109,  110,  125,  126,  111,  114,  128,  130,    0,  131,
-      133,  113,  115,  114,  117,  112,  116,  118,  134,  119,
-      135,  121,  122,  124,  136,  132,  125,  126,  132,  137,
-      141,  128,  130,  131,  133,  138,  139,  148,  149,  112,
-      150,  152,  134,  151,  153,  135,  158,  159,  160,  136,
-      163,    0,  132,  164,  137,  141,  165,    0,  166,  138,
-
-      139,  148,  167,  149,  171,  150,  152,  151,  153,  168,
-      158,  159,  168,  160,  172,  163,  132,  176,  164,  177,
-      187,  165,  166,  180,  182,  184,  167,  185,  189,  171,
-      190,  191,  192,    0,  193,  194,  197,  200,  194,  172,
-        0,  168,  176,  194,  177,  187,  202,  180,  182,  184,
-      204,  185,  205,  189,  190,  191,  195,  192,  193,  195,
-      197,  200,  207,  213,  195,  168,  198,  208,  216,  198,
-      202,  217,  219,  220,  221,  204,  212,  205,  213,  212,
-      223,  222,  214,  223,    0,  214,  195,  207,  213,  198,
-      214,  208,  224,  216,  212,  217,  225,  219,  220,  221,
-
-      226,    0,  213,  227,  212,  222,  227,  231,  223,  212,
-      195,  227,    0,  214,  198,  232,  234,  224,  236,  212,
-      235,  225,  238,  235,  240,  226,  237,  241,  212,  237,
-      241,  231,  223,  212,  237,    0,  227,  214,  242,  232,
-      234,  243,  236,  249,  243,  246,  238,  248,  246,  240,
-      248,  250,  251,    0,  250,  251,    0,    0,    0,  243,
-      227,    0,    0,  242,    0,    0,    0,    0,  249,  243,
-        0,    0,    0,    0,  243,  248,    0,    0,    0,    0,
-        0,    0,    0,    0,  243,    0,    0,    0,    0,    0,
-        0,    0,    0,  243,    0,    0,    0,    0,  243,  248,
-
-      253,  253,    0,  253,  253,  253,  254,  254,  255,  255,
-      255,  256,  256,  256,  257,  257,    0,  257,  257,  257,
-      258,    0,  258,  258,  258,  259,    0,    0,  259,  259,
-      260,  260,  260,  261,    0,    0,  261,  262,  262,  262,
-      263,    0,    0,  263,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
-
-      252,  252,  252,  252,  252,  252,  252,  252,  252
+       39,   58,   59,   62,   40,   41,   41,   41,   41,   60,
+       65,   59,   61,   63,   64,    0,   68,   68,   69,    0,
+       70,   71,   72,   79,   41,   74,   59,   73,   62,   75,
+       76,   81,   82,   87,   65,   59,   83,   84,   63,   64,
+       68,   68,   74,   69,   70,   71,   85,   72,   79,   41,
+       74,   73,   86,   75,   76,   88,   81,   82,   87,   89,
+       83,   84,   92,   91,    0,   93,   74,   91,    0,   96,
+       85,   94,   94,   94,   94,  100,   86,  102,  103,   88,
+
+       95,   95,   95,   95,   89,  104,   92,  105,   91,   93,
+      106,  107,   91,   96,  109,  110,  111,  112,    0,  114,
+      100,  102,  103,  113,  115,  117,  113,  116,  118,  104,
+      119,  123,  105,  115,  106,  120,  107,  122,  109,  110,
+      111,  125,  112,  114,  126,  127,  129,  131,  137,  115,
+      117,  116,  118,  132,  119,  123,  113,  115,  133,  135,
+      120,  134,  122,  136,  134,  125,  138,  139,  126,  127,
+      140,  129,  131,  137,  141,  143,  147,  132,  150,  147,
+      113,  151,  133,  135,  152,    0,  153,  136,  134,  154,
+      162,  138,  139,  155,  140,  160,  161,  165,  141,  166,
+
+      143,  167,  150,  168,  169,  171,  151,  174,  171,  152,
+      153,  175,  134,  177,  154,  162,  177,  155,  179,  160,
+      161,  180,  165,  183,  166,  185,  167,  168,  169,  187,
+      188,  190,  174,  192,    0,  193,  175,  171,  194,  195,
+        0,  196,  197,  179,  200,  197,  180,  183,  201,  185,
+      197,  201,  198,  187,  188,  198,  190,  203,  192,  193,
+      198,  171,  194,  205,  195,  196,  207,  208,  200,  210,
+      216,  201,  215,  211,  219,  215,  217,  220,  222,  217,
+      225,  203,  198,  223,  217,  216,  224,  205,  234,  227,
+      215,  207,  208,  228,  210,  216,  201,  211,  229,  219,
+
+      215,  220,  235,  222,  225,  215,  198,  217,  223,  216,
+      226,  224,  234,  226,  227,  215,  237,  230,  228,  238,
+      230,  239,  238,  229,  215,  230,  235,  240,  241,  215,
+      240,  217,  243,  244,  245,  240,  244,    0,  226,  249,
+      237,  251,  249,  246,  251,  239,  246,  252,  253,    0,
+      230,  253,  241,  254,    0,    0,  254,  243,    0,  245,
+        0,  246,  226,    0,    0,    0,    0,    0,    0,  251,
+        0,  246,  252,    0,  230,    0,  246,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  246,    0,    0,    0,
+        0,    0,    0,  251,    0,  246,    0,    0,    0,    0,
+
+      246,  256,  256,    0,  256,  256,  256,  257,  257,  258,
+      258,  258,  259,  259,  259,  260,  260,    0,  260,  260,
+      260,  261,    0,  261,  261,  261,  262,    0,    0,  262,
+      262,  263,  263,  263,  264,    0,    0,  264,  265,  265,
+      265,  266,    0,    0,  266,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
+
+      255,  255,  255,  255,  255,  255,  255,  255,  255,  255
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1000,13 +1000,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 253 )
+				if ( yy_current_state >= 256 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 645 );
+		while ( yy_base[yy_current_state] != 646 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1270,6 +1270,11 @@ YY_RULE_SETUP
 case 46:
 YY_RULE_SETUP
 #line 141 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTELL; }
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 142 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1279,9 +1284,9 @@ YY_RULE_SETUP
 		return THEENTITYWITHID;
 	}
 	YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 149 "engines/director/lingo/lingo-lex.l"
+#line 150 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1323,9 +1328,9 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 189 "engines/director/lingo/lingo-lex.l"
+#line 190 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1358,9 +1363,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 220 "engines/director/lingo/lingo-lex.l"
+#line 221 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1381,69 +1386,69 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 239 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
-	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 240 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tTHEN; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 241 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tTO; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 242 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 243 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 244 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 245 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 246 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORD; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 248 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+#line 247 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWORD; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 249 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tNEQ; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 250 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
+{ count(); return tGE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 251 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
+{ count(); return tLE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 253 "engines/director/lingo/lingo-lex.l"
+#line 252 "engines/director/lingo/lingo-lex.l"
+{ count(); return tCONCAT; }
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 254 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1484,43 +1489,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 292 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
-	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 293 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 294 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 66:
-/* rule 66 can match eol */
 YY_RULE_SETUP
 #line 295 "engines/director/lingo/lingo-lex.l"
-{ return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 67:
+/* rule 67 can match eol */
 YY_RULE_SETUP
 #line 296 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ return '\n'; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 297 "engines/director/lingo/lingo-lex.l"
-
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 299 "engines/director/lingo/lingo-lex.l"
+#line 298 "engines/director/lingo/lingo-lex.l"
+
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 300 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1524 "engines/director/lingo/lingo-lex.cpp"
+#line 1529 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1813,7 +1818,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 253 )
+			if ( yy_current_state >= 256 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1841,11 +1846,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 253 )
+		if ( yy_current_state >= 256 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 252);
+	yy_is_jam = (yy_current_state == 255);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2483,7 +2488,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 299 "engines/director/lingo/lingo-lex.l"
+#line 300 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index ac8fd63..5b93a46 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -138,6 +138,7 @@ whitespace [\t ]
 (?i:repeat)			{ count(); return checkImmediate(tREPEAT); }
 (?i:set)				{ count(); return tSET; }
 (?i:starts)			{ count(); return tSTARTS; }
+(?i:tell)				{ count(); return tTELL; }
 (?i:the[ \t]+sqrt[\t ]+of[\t ]+)	{
 		count();
 
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index d5fef44..ec94d06 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -135,7 +135,8 @@ TheEntity entities[] = {
 	{ kTheTraceLoad,		"traceLoad",		false },	//				D4 p
 	{ kTheTraceLogFile,		"traceLogFile",		false },	//				D4 p
 	{ kTheUpdateMovieEnabled,"updateMovieEnabled",false },	//				D4 p
-	{ kTheWindow,			"window",			false },
+	{ kTheWindow,			"window",			true },		//				D4
+	{ kTheWindowList,		"windowList",		false },	//				D4 p
 	{ kTheWords,			"words",			false },	//		 D3
 	{ kTheNOEntity, NULL, false }
 };
@@ -175,7 +176,7 @@ TheEntityField fields[] = {
 
 	// Common cast fields
 	{ kTheCast,		"castType",		kTheCastType },		//				D4 p
-	{ kTheCast,		"filename",		kTheFilename },		//				D4 p
+	{ kTheCast,		"filename",		kTheFileName },		//				D4 p
 	{ kTheCast,		"height",		kTheHeight },		//				D4 p
 	{ kTheCast,		"loaded",		kTheLoaded },		//				D4 p
 	{ kTheCast,		"modified",		kTheModified },		//				D4 p
@@ -221,10 +222,15 @@ TheEntityField fields[] = {
 	{ kTheField,	"textSize",		kTheTextSize },		//		D3 p
 	{ kTheField,	"textStyle",	kTheTextStyle },	//		D3 p
 
-	{ kTheWindow,	"drawRect",		kTheDrawRect },
-	{ kTheWindow,	"filename",		kTheFilename },
+	{ kTheWindow,	"drawRect",		kTheDrawRect },		//				D4 p
+	{ kTheWindow,	"fileName",		kTheFileName },		//				D4 p
+	{ kTheWindow,	"modal",		kTheModal },		//				D4 p
+	{ kTheWindow,	"rect",			kTheRect },			//				D4 p
+	{ kTheWindow,	"title",		kTheTitle },		//				D4 p
+	{ kTheWindow,	"titleVisible",	kTheTitleVisible },	//				D4 p
 	{ kTheWindow,	"sourceRect",	kTheSourceRect },
-	{ kTheWindow,	"visible",		kTheVisible },
+	{ kTheWindow,	"visible",		kTheVisible },		//				D4 p
+	{ kTheWindow,	"windowType",	kTheWindowType },	//				D4 p
 
 	{ kTheMenuItem,	"checkmark",	kTheCheckMark },	//		D3 p
 	{ kTheMenuItem, "enabled",		kTheEnabled },		//		D3 p
@@ -648,7 +654,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
 	case kTheCastType:
 		d.u.i = cast->type;
 		break;
-	case kTheFilename:
+	case kTheFileName:
 		d.toString();
 		d.u.s = &castInfo->fileName;
 		break;
@@ -730,7 +736,7 @@ void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
 		cast->type = static_cast<CastType>(d.u.i);
 		cast->modified = 1;
 		break;
-	case kTheFilename:
+	case kTheFileName:
 		castInfo->fileName = *d.u.s;
 		break;
 	case kTheName:
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 6b69d13..24f5e26 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -134,16 +134,21 @@ enum TheEntityType {
 	kTheTraceLogFile,
 	kTheUpdateMovieEnabled,
 	kTheWindow,
+	kTheWindowList,
 	kTheWords
 };
 
 enum TheFieldType {
 	kTheNOField = 0,
 	kTheAbbr    = 1,
+	kTheBackColor,
+	kTheBlend,
+	kTheBottom,
 	kTheCastNum,
 	kTheCastType,
 	kTheCenter,
 	kTheCheckMark,
+	kTheConstraint,
 	kTheController,
 	kTheCrop,
 	kTheCursor,
@@ -151,32 +156,29 @@ enum TheFieldType {
 	kTheDirectToStage,
 	kTheDrawRect,
 	kTheDuration,
-	kTheLocH,
-	kTheLocV,
-	kTheBackColor,
-	kTheBlend,
-	kTheBottom,
-	kTheConstraint,
 	kTheEditableText,
 	kTheEnabled,
+	kTheFileName,
 	kTheForeColor,
 	kTheFrameRate,
-	kTheFilename,
 	kTheHeight,
 	kTheHilite,
 	kTheImmediate,
 	kTheInk,
 	kTheLeft,
 	kTheLineSize,
+	kTheLoaded,
+	kTheLocH,
+	kTheLocV,
 	kTheLong,
 	kTheLoop,
-	kTheLoaded,
+	kTheModal,
 	kTheModified,
 	kTheMoveable,
 	kTheMovieRate,
 	kTheMovieTime,
-	kTheNumber,
 	kTheName,
+	kTheNumber,
 	kThePalette,
 	kThePattern,
 	kThePausedAtStart,
@@ -187,30 +189,33 @@ enum TheFieldType {
 	kTheRect,
 	kTheRegPoint,
 	kTheRight,
-	kTheShort,
-	kTheStopTime,
-	kTheStretch,
-	kTheStartTime,
 	kTheScript,
 	kTheScriptNum,
 	kTheScriptText,
+	kTheShort,
 	kTheSize,
-	kTheStrech,
 	kTheSound,
 	kTheSourceRect,
+	kTheStartTime,
+	kTheStopTime,
+	kTheStrech,
+	kTheStretch,
 	kTheText,
 	kTheTextAlign,
 	kTheTextFont,
 	kTheTextheight,
 	kTheTextSize,
 	kTheTextStyle,
+	kTheTitle,
+	kTheTitleVisible,
 	kTheTop,
 	kTheTrails,
 	kTheType,
 	kTheVideo,
 	kTheVisible,
 	kTheVolume,
-	kTheWidth
+	kTheWidth,
+	kTheWindowType
 };
 
 struct TheEntity {
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 8bd082b..618d658 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -285,6 +285,7 @@ public:
 	static void c_repeatwithcode();
 	static void c_ifcode();
 	static void c_whencode();
+	static void c_tellcode();
 	static void c_exitRepeat();
 	static void c_eq();
 	static void c_neq();
@@ -442,6 +443,13 @@ public:
 
 	static void b_point(int nargs);
 
+	static void b_close(int nargs);
+	static void b_forget(int nargs);
+	static void b_inflate(int nargs);
+	static void b_moveToBack(int nargs);
+	static void b_moveToFront(int nargs);
+	static void b_window(int nargs);
+
 	static void b_beep(int nargs);
 	static void b_mci(int nargs);
 	static void b_mciwait(int nargs);





More information about the Scummvm-git-logs mailing list