Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小雨青年
soar
提交
d1952d08
S
soar
项目概览
小雨青年
/
soar
与 Fork 源项目一致
Fork自
Xiaomi / soar
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
soar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d1952d08
编写于
11月 05, 2018
作者:
L
liipx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update vitess, rename Newtable to others
上级
461b6899
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
2240 addition
and
2128 deletion
+2240
-2128
advisor/heuristic.go
advisor/heuristic.go
+1
-1
ast/meta.go
ast/meta.go
+49
-37
ast/meta_test.go
ast/meta_test.go
+52
-8
env/env.go
env/env.go
+15
-1
vendor/vendor.json
vendor/vendor.json
+23
-23
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
+44
-20
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
+2026
-2020
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
+30
-18
未找到文件。
advisor/heuristic.go
浏览文件 @
d1952d08
...
@@ -2305,7 +2305,7 @@ func (q *Query4Audit) RuleCreateDualTable() Rule {
...
@@ -2305,7 +2305,7 @@ func (q *Query4Audit) RuleCreateDualTable() Rule {
var
rule
=
q
.
RuleOK
()
var
rule
=
q
.
RuleOK
()
switch
s
:=
q
.
Stmt
.
(
type
)
{
switch
s
:=
q
.
Stmt
.
(
type
)
{
case
*
sqlparser
.
DDL
:
case
*
sqlparser
.
DDL
:
if
s
.
NewNam
e
.
Name
.
String
()
==
"dual"
{
if
s
.
Tabl
e
.
Name
.
String
()
==
"dual"
{
rule
=
HeuristicRules
[
"TBL.003"
]
rule
=
HeuristicRules
[
"TBL.003"
]
}
}
...
...
ast/meta.go
浏览文件 @
d1952d08
...
@@ -77,27 +77,15 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
...
@@ -77,27 +77,15 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
switch
expr
:=
node
.
(
type
)
{
switch
expr
:=
node
.
(
type
)
{
case
*
sqlparser
.
DDL
:
case
*
sqlparser
.
DDL
:
// 如果SQL是一个DDL,则不需要继续遍历语法树了
// 如果SQL是一个DDL,则不需要继续遍历语法树了
db1
:=
expr
.
Table
.
Qualifier
.
String
()
for
_
,
tb
:=
range
expr
.
FromTables
{
tb1
:=
expr
.
Table
.
Name
.
String
()
appendTable
(
tb
,
""
,
meta
)
db2
:=
expr
.
NewName
.
Qualifier
.
String
()
tb2
:=
expr
.
NewName
.
Name
.
String
()
if
tb1
!=
""
{
if
_
,
ok
:=
meta
[
db1
];
!
ok
{
meta
[
db1
]
=
common
.
NewDB
(
db1
)
}
meta
[
db1
]
.
Table
[
tb1
]
=
common
.
NewTable
(
tb1
)
}
}
if
tb2
!=
""
{
for
_
,
tb
:=
range
expr
.
ToTables
{
if
_
,
ok
:=
meta
[
db2
];
!
ok
{
appendTable
(
tb
,
""
,
meta
)
meta
[
db2
]
=
common
.
NewDB
(
db2
)
}
meta
[
db2
]
.
Table
[
tb2
]
=
common
.
NewTable
(
tb2
)
}
}
appendTable
(
expr
.
Table
,
""
,
meta
)
return
false
,
nil
return
false
,
nil
case
*
sqlparser
.
AliasedTableExpr
:
case
*
sqlparser
.
AliasedTableExpr
:
// 非 DDL 情况下处理 TableExpr
// 非 DDL 情况下处理 TableExpr
...
@@ -110,26 +98,7 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
...
@@ -110,26 +98,7 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
// 表名存放在 AST 中 TableName 里,包含表名与表前缀名。
// 表名存放在 AST 中 TableName 里,包含表名与表前缀名。
// 当与 As 相对应的 Expr 为 TableName 的时候,别名才是一张实体表的别名,否则为结果集的别名。
// 当与 As 相对应的 Expr 为 TableName 的时候,别名才是一张实体表的别名,否则为结果集的别名。
case
sqlparser
.
TableName
:
case
sqlparser
.
TableName
:
db
:=
table
.
Qualifier
.
String
()
appendTable
(
table
,
expr
.
As
.
String
(),
meta
)
tb
:=
table
.
Name
.
String
()
if
meta
[
db
]
==
nil
{
meta
[
db
]
=
common
.
NewDB
(
db
)
}
meta
[
db
]
.
Table
[
tb
]
=
common
.
NewTable
(
tb
)
// alias去重
aliasExist
:=
false
for
_
,
existedAlias
:=
range
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
{
if
existedAlias
==
expr
.
As
.
String
()
{
aliasExist
=
true
}
}
if
!
aliasExist
{
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
=
append
(
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
,
expr
.
As
.
String
())
}
default
:
default
:
// 如果 AliasedTableExpr 中的 Expr 不是 TableName 结构体,则表示该表为一个查询结果集(子查询或临时表)。
// 如果 AliasedTableExpr 中的 Expr 不是 TableName 结构体,则表示该表为一个查询结果集(子查询或临时表)。
// 在这里记录一下别名,但将列名制空,用来保证在其他环节中判断列前缀的时候不会有遗漏
// 在这里记录一下别名,但将列名制空,用来保证在其他环节中判断列前缀的时候不会有遗漏
...
@@ -152,6 +121,49 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
...
@@ -152,6 +121,49 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta {
return
meta
return
meta
}
}
// appendTable 将 sqlparser.TableName 中的库表信息提取后放到 meta 中
// @tb 为 sqlparser.TableName 对象
// @as 为该表的别名,无别名时为空
// @meta 为信息集合
func
appendTable
(
tb
sqlparser
.
TableName
,
as
string
,
meta
map
[
string
]
*
common
.
DB
)
map
[
string
]
*
common
.
DB
{
if
meta
==
nil
{
return
meta
}
dbName
:=
tb
.
Qualifier
.
String
()
tbName
:=
tb
.
Name
.
String
()
if
tbName
==
""
{
return
meta
}
if
meta
[
dbName
]
==
nil
{
meta
[
dbName
]
=
common
.
NewDB
(
dbName
)
}
meta
[
dbName
]
.
Table
[
tbName
]
=
common
.
NewTable
(
tbName
)
mergeAlias
(
dbName
,
tbName
,
as
,
meta
)
return
meta
}
// mergeAlias 将所有的表别名归并到一个表下
func
mergeAlias
(
db
,
tb
,
as
string
,
meta
map
[
string
]
*
common
.
DB
)
{
if
meta
==
nil
||
as
==
""
{
return
}
aliasExist
:=
false
for
_
,
existedAlias
:=
range
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
{
if
existedAlias
==
as
{
aliasExist
=
true
}
}
if
!
aliasExist
{
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
=
append
(
meta
[
db
]
.
Table
[
tb
]
.
TableAliases
,
as
)
}
}
// eqOperators 等值条件判断关键字
// eqOperators 等值条件判断关键字
var
eqOperators
=
map
[
string
]
string
{
var
eqOperators
=
map
[
string
]
string
{
"="
:
"eq"
,
"="
:
"eq"
,
...
...
ast/meta_test.go
浏览文件 @
d1952d08
...
@@ -59,7 +59,7 @@ func TestFindCondition(t *testing.T) {
...
@@ -59,7 +59,7 @@ func TestFindCondition(t *testing.T) {
for
_
,
sql
:=
range
common
.
TestSQLs
{
for
_
,
sql
:=
range
common
.
TestSQLs
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -143,7 +143,7 @@ func TestFindJoinTable(t *testing.T) {
...
@@ -143,7 +143,7 @@ func TestFindJoinTable(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -167,7 +167,7 @@ func TestFindJoinCols(t *testing.T) {
...
@@ -167,7 +167,7 @@ func TestFindJoinCols(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -189,7 +189,7 @@ func TestFindJoinColBeWhereEQ(t *testing.T) {
...
@@ -189,7 +189,7 @@ func TestFindJoinColBeWhereEQ(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -211,7 +211,7 @@ func TestFindJoinColBeWhereINEQ(t *testing.T) {
...
@@ -211,7 +211,7 @@ func TestFindJoinColBeWhereINEQ(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -239,7 +239,7 @@ func TestFindAllCondition(t *testing.T) {
...
@@ -239,7 +239,7 @@ func TestFindAllCondition(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -258,7 +258,7 @@ func TestFindColumn(t *testing.T) {
...
@@ -258,7 +258,7 @@ func TestFindColumn(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -286,7 +286,7 @@ func TestFindAllCols(t *testing.T) {
...
@@ -286,7 +286,7 @@ func TestFindAllCols(t *testing.T) {
for
_
,
sql
:=
range
sqlList
{
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
//pretty.Println(stmt)
//
pretty.Println(stmt)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -322,3 +322,47 @@ func TestGetSubqueryDepth(t *testing.T) {
...
@@ -322,3 +322,47 @@ func TestGetSubqueryDepth(t *testing.T) {
fmt
.
Println
(
dep
)
fmt
.
Println
(
dep
)
}
}
}
}
func
TestAppendTable
(
t
*
testing
.
T
)
{
sqlList
:=
[]
string
{
"select ID,name from (select address from customer_list where SID=1 order by phone limit 50,10) a join customer_list l on (a.address=l.address) join city c on (c.city=l.city) order by phone desc;"
,
}
meta
:=
make
(
map
[
string
]
*
common
.
DB
)
for
_
,
sql
:=
range
sqlList
{
fmt
.
Println
(
sql
)
stmt
,
err
:=
sqlparser
.
Parse
(
sql
)
if
err
!=
nil
{
t
.
Error
(
"syntax check error."
)
}
err
=
sqlparser
.
Walk
(
func
(
node
sqlparser
.
SQLNode
)
(
kontinue
bool
,
err
error
)
{
switch
expr
:=
node
.
(
type
)
{
case
*
sqlparser
.
AliasedTableExpr
:
switch
table
:=
expr
.
Expr
.
(
type
)
{
case
sqlparser
.
TableName
:
appendTable
(
table
,
expr
.
As
.
String
(),
meta
)
default
:
if
meta
==
nil
{
meta
=
make
(
map
[
string
]
*
common
.
DB
)
}
if
meta
[
""
]
==
nil
{
meta
[
""
]
=
common
.
NewDB
(
""
)
}
meta
[
""
]
.
Table
[
""
]
=
common
.
NewTable
(
""
)
meta
[
""
]
.
Table
[
""
]
.
TableAliases
=
append
(
meta
[
""
]
.
Table
[
""
]
.
TableAliases
,
expr
.
As
.
String
())
}
}
return
true
,
nil
},
stmt
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
}
// 仅对第一条测试SQL进行测试,验证别名正确性
if
meta
[
""
]
.
Table
[
"customer_list"
]
.
TableAliases
[
0
]
!=
"l"
||
meta
[
""
]
.
Table
[
"city"
]
.
TableAliases
[
0
]
!=
"c"
{
t
.
Error
(
"alias filed
\n
"
,
pretty
.
Sprint
(
meta
))
}
}
env/env.go
浏览文件 @
d1952d08
...
@@ -248,11 +248,25 @@ func (ve *VirtualEnv) BuildVirtualEnv(rEnv *database.Connector, SQLs ...string)
...
@@ -248,11 +248,25 @@ func (ve *VirtualEnv) BuildVirtualEnv(rEnv *database.Connector, SQLs ...string)
// 为了支持并发,需要将DB进行映射,但db.table这种形式无法保证DB的映射是正确的
// 为了支持并发,需要将DB进行映射,但db.table这种形式无法保证DB的映射是正确的
// TODO:暂不支持 create db.tableName (id int) 形式的建表语句
// TODO:暂不支持 create db.tableName (id int) 形式的建表语句
if
stmt
.
Table
.
Qualifier
.
String
()
!=
""
||
stmt
.
NewName
.
Qualifier
.
String
()
!=
""
{
if
stmt
.
Table
.
Qualifier
.
String
()
!=
""
{
common
.
Log
.
Error
(
"BuildVirtualEnv DDL Not support '.'"
)
common
.
Log
.
Error
(
"BuildVirtualEnv DDL Not support '.'"
)
return
false
return
false
}
}
for
_
,
tb
:=
range
stmt
.
FromTables
{
if
tb
.
Qualifier
.
String
()
!=
""
{
common
.
Log
.
Error
(
"BuildVirtualEnv DDL Not support '.'"
)
return
false
}
}
for
_
,
tb
:=
range
stmt
.
ToTables
{
if
tb
.
Qualifier
.
String
()
!=
""
{
common
.
Log
.
Error
(
"BuildVirtualEnv DDL Not support '.'"
)
return
false
}
}
// 拉取表结构
// 拉取表结构
table
:=
stmt
.
Table
.
Name
.
String
()
table
:=
stmt
.
Table
.
Name
.
String
()
if
table
!=
""
{
if
table
!=
""
{
...
...
vendor/vendor.json
浏览文件 @
d1952d08
...
@@ -1016,68 +1016,68 @@
...
@@ -1016,68 +1016,68 @@
{
{
"checksumSHA1"
:
"w8FCRjH70gM6QttB9QrEh9Y1x64="
,
"checksumSHA1"
:
"w8FCRjH70gM6QttB9QrEh9Y1x64="
,
"path"
:
"vitess.io/vitess"
,
"path"
:
"vitess.io/vitess"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"aKn1oKcY74N8TRLm3Ayt7Q4bbI4="
,
"checksumSHA1"
:
"aKn1oKcY74N8TRLm3Ayt7Q4bbI4="
,
"path"
:
"vitess.io/vitess/go/bytes2"
,
"path"
:
"vitess.io/vitess/go/bytes2"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"JVCEN4UGRmg3TofIBdzZMZ3G0Ww="
,
"checksumSHA1"
:
"JVCEN4UGRmg3TofIBdzZMZ3G0Ww="
,
"path"
:
"vitess.io/vitess/go/hack"
,
"path"
:
"vitess.io/vitess/go/hack"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"e1WJ7vCnVrlQQQlc6n/FewCDMso="
,
"checksumSHA1"
:
"e1WJ7vCnVrlQQQlc6n/FewCDMso="
,
"path"
:
"vitess.io/vitess/go/sqltypes"
,
"path"
:
"vitess.io/vitess/go/sqltypes"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"ntFIQYkBS51G6y+FEkjFW40+HOU="
,
"checksumSHA1"
:
"ntFIQYkBS51G6y+FEkjFW40+HOU="
,
"path"
:
"vitess.io/vitess/go/vt/log"
,
"path"
:
"vitess.io/vitess/go/vt/log"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"XozR8bmeSR5KTe/nlUJkpJY2HKI="
,
"checksumSHA1"
:
"XozR8bmeSR5KTe/nlUJkpJY2HKI="
,
"path"
:
"vitess.io/vitess/go/vt/proto/query"
,
"path"
:
"vitess.io/vitess/go/vt/proto/query"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"OnWsUHLDKcO3spwH0jD55SvKD24="
,
"checksumSHA1"
:
"OnWsUHLDKcO3spwH0jD55SvKD24="
,
"path"
:
"vitess.io/vitess/go/vt/proto/topodata"
,
"path"
:
"vitess.io/vitess/go/vt/proto/topodata"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"sBAuZ/itMR8U8qbK4yLHxkP6Cpc="
,
"checksumSHA1"
:
"sBAuZ/itMR8U8qbK4yLHxkP6Cpc="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtgate"
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtgate"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"pLWM+SPGZs3k+IhjktE/cGUlpM0="
,
"checksumSHA1"
:
"pLWM+SPGZs3k+IhjktE/cGUlpM0="
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtrpc"
,
"path"
:
"vitess.io/vitess/go/vt/proto/vtrpc"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"
re3V8oX+ujxHbNZuB+QEtrcXxE8
="
,
"checksumSHA1"
:
"
3rucaIfitefjezWeglPndd50Mcw
="
,
"path"
:
"vitess.io/vitess/go/vt/sqlparser"
,
"path"
:
"vitess.io/vitess/go/vt/sqlparser"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
},
},
{
{
"checksumSHA1"
:
"oF4XzuOzwvj1iduX/lYqNSyY/HM="
,
"checksumSHA1"
:
"oF4XzuOzwvj1iduX/lYqNSyY/HM="
,
"path"
:
"vitess.io/vitess/go/vt/vterrors"
,
"path"
:
"vitess.io/vitess/go/vt/vterrors"
,
"revision"
:
"
6fca9975675109decbf1c389641597929824eeba
"
,
"revision"
:
"
54855ec7b36906b6d53aa5af0f0293a0a73ae928
"
,
"revisionTime"
:
"2018-1
0-31T20:10:04
Z"
"revisionTime"
:
"2018-1
1-05T03:16:12
Z"
}
}
],
],
"rootPath"
:
"github.com/XiaoMi/soar"
"rootPath"
:
"github.com/XiaoMi/soar"
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/ast.go
浏览文件 @
d1952d08
...
@@ -718,20 +718,29 @@ func (node *DBDDL) walkSubtree(visit Visit) error {
...
@@ -718,20 +718,29 @@ func (node *DBDDL) walkSubtree(visit Visit) error {
return
nil
return
nil
}
}
// DDL represents a CREATE, ALTER, DROP, RENAME or TRUNCATE statement.
// DDL represents a CREATE, ALTER, DROP, RENAME, TRUNCATE or ANALYZE statement.
// Table is set for AlterStr, DropStr, RenameStr, TruncateStr
// NewName is set for AlterStr, CreateStr, RenameStr.
// VindexSpec is set for CreateVindexStr, DropVindexStr, AddColVindexStr, DropColVindexStr
// VindexCols is set for AddColVindexStr
type
DDL
struct
{
type
DDL
struct
{
Action
string
Action
string
// FromTables is set if Action is RenameStr or DropStr.
FromTables
TableNames
// ToTables is set if Action is RenameStr.
ToTables
TableNames
// Table is set if Action is other than RenameStr or DropStr.
Table
TableName
Table
TableName
NewName
TableName
// The following fields are set if a DDL was fully analyzed.
IfExists
bool
IfExists
bool
TableSpec
*
TableSpec
TableSpec
*
TableSpec
OptLike
*
OptLike
OptLike
*
OptLike
PartitionSpec
*
PartitionSpec
PartitionSpec
*
PartitionSpec
// VindexSpec is set for CreateVindexStr, DropVindexStr, AddColVindexStr, DropColVindexStr.
VindexSpec
*
VindexSpec
VindexSpec
*
VindexSpec
// VindexCols is set for AddColVindexStr.
VindexCols
[]
ColIdent
VindexCols
[]
ColIdent
}
}
...
@@ -756,20 +765,23 @@ func (node *DDL) Format(buf *TrackedBuffer) {
...
@@ -756,20 +765,23 @@ func (node *DDL) Format(buf *TrackedBuffer) {
switch
node
.
Action
{
switch
node
.
Action
{
case
CreateStr
:
case
CreateStr
:
if
node
.
OptLike
!=
nil
{
if
node
.
OptLike
!=
nil
{
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
NewNam
e
,
node
.
OptLike
)
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
Tabl
e
,
node
.
OptLike
)
}
else
if
node
.
TableSpec
!=
nil
{
}
else
if
node
.
TableSpec
!=
nil
{
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
NewNam
e
,
node
.
TableSpec
)
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
Tabl
e
,
node
.
TableSpec
)
}
else
{
}
else
{
buf
.
Myprintf
(
"%s table %v"
,
node
.
Action
,
node
.
NewNam
e
)
buf
.
Myprintf
(
"%s table %v"
,
node
.
Action
,
node
.
Tabl
e
)
}
}
case
DropStr
:
case
DropStr
:
exists
:=
""
exists
:=
""
if
node
.
IfExists
{
if
node
.
IfExists
{
exists
=
" if exists"
exists
=
" if exists"
}
}
buf
.
Myprintf
(
"%s table%s %v"
,
node
.
Action
,
exists
,
node
.
Table
)
buf
.
Myprintf
(
"%s table%s %v"
,
node
.
Action
,
exists
,
node
.
FromTables
)
case
RenameStr
:
case
RenameStr
:
buf
.
Myprintf
(
"%s table %v to %v"
,
node
.
Action
,
node
.
Table
,
node
.
NewName
)
buf
.
Myprintf
(
"%s table %v to %v"
,
node
.
Action
,
node
.
FromTables
[
0
],
node
.
ToTables
[
0
])
for
i
:=
1
;
i
<
len
(
node
.
FromTables
);
i
++
{
buf
.
Myprintf
(
", %v to %v"
,
node
.
FromTables
[
i
],
node
.
ToTables
[
i
])
}
case
AlterStr
:
case
AlterStr
:
if
node
.
PartitionSpec
!=
nil
{
if
node
.
PartitionSpec
!=
nil
{
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
Table
,
node
.
PartitionSpec
)
buf
.
Myprintf
(
"%s table %v %v"
,
node
.
Action
,
node
.
Table
,
node
.
PartitionSpec
)
...
@@ -804,11 +816,23 @@ func (node *DDL) walkSubtree(visit Visit) error {
...
@@ -804,11 +816,23 @@ func (node *DDL) walkSubtree(visit Visit) error {
if
node
==
nil
{
if
node
==
nil
{
return
nil
return
nil
}
}
return
Walk
(
for
_
,
t
:=
range
node
.
AffectedTables
()
{
visit
,
if
err
:=
Walk
(
visit
,
t
);
err
!=
nil
{
node
.
Table
,
return
err
node
.
NewName
,
}
)
}
return
nil
}
// AffectedTables returns the list table names affected by the DDL.
func
(
node
*
DDL
)
AffectedTables
()
TableNames
{
if
node
.
Action
==
RenameStr
||
node
.
Action
==
DropStr
{
list
:=
make
(
TableNames
,
0
,
len
(
node
.
FromTables
)
+
len
(
node
.
ToTables
))
list
=
append
(
list
,
node
.
FromTables
...
)
list
=
append
(
list
,
node
.
ToTables
...
)
return
list
}
return
TableNames
{
node
.
Table
}
}
}
// Partition strings
// Partition strings
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/sql.go
浏览文件 @
d1952d08
...
@@ -628,349 +628,367 @@ var yyExca = [...]int{
...
@@ -628,349 +628,367 @@ var yyExca = [...]int{
5
,
29
,
5
,
29
,
-
2
,
4
,
-
2
,
4
,
-
1
,
37
,
-
1
,
37
,
159
,
29
2
,
159
,
29
4
,
160
,
29
2
,
160
,
29
4
,
-
2
,
28
2
,
-
2
,
28
4
,
-
1
,
262
,
-
1
,
262
,
112
,
62
2
,
112
,
62
4
,
-
2
,
6
18
,
-
2
,
6
20
,
-
1
,
263
,
-
1
,
263
,
112
,
62
3
,
112
,
62
5
,
-
2
,
6
19
,
-
2
,
6
21
,
-
1
,
326
,
-
1
,
326
,
82
,
79
1
,
82
,
79
3
,
-
2
,
60
,
-
2
,
60
,
-
1
,
327
,
-
1
,
327
,
82
,
7
49
,
82
,
7
51
,
-
2
,
61
,
-
2
,
61
,
-
1
,
332
,
-
1
,
332
,
82
,
729
,
82
,
731
,
-
2
,
584
,
-
1
,
334
,
82
,
770
,
-
2
,
586
,
-
2
,
586
,
-
1
,
586
,
-
1
,
334
,
1
,
344
,
82
,
772
,
5
,
344
,
-
2
,
588
,
12
,
344
,
-
1
,
587
,
13
,
344
,
1
,
346
,
14
,
344
,
5
,
346
,
15
,
344
,
12
,
346
,
17
,
344
,
13
,
346
,
19
,
344
,
14
,
346
,
30
,
344
,
15
,
346
,
31
,
344
,
17
,
346
,
42
,
344
,
19
,
346
,
43
,
344
,
30
,
346
,
44
,
344
,
31
,
346
,
45
,
344
,
42
,
346
,
46
,
344
,
43
,
346
,
48
,
344
,
44
,
346
,
49
,
344
,
45
,
346
,
52
,
344
,
46
,
346
,
53
,
344
,
48
,
346
,
55
,
344
,
49
,
346
,
56
,
344
,
52
,
346
,
263
,
344
,
53
,
346
,
-
2
,
362
,
55
,
346
,
-
1
,
589
,
56
,
346
,
263
,
346
,
-
2
,
364
,
-
1
,
590
,
53
,
43
,
53
,
43
,
55
,
43
,
55
,
43
,
-
2
,
45
,
-
2
,
45
,
-
1
,
72
5
,
-
1
,
72
7
,
112
,
62
5
,
112
,
62
7
,
-
2
,
62
1
,
-
2
,
62
3
,
-
1
,
9
37
,
-
1
,
9
40
,
5
,
30
,
5
,
30
,
-
2
,
4
28
,
-
2
,
4
30
,
-
1
,
96
2
,
-
1
,
96
5
,
5
,
29
,
5
,
29
,
-
2
,
5
58
,
-
2
,
5
60
,
-
1
,
120
2
,
-
1
,
120
7
,
5
,
30
,
5
,
30
,
-
2
,
559
,
-
1
,
1252
,
5
,
29
,
-
2
,
561
,
-
2
,
561
,
-
1
,
1325
,
-
1
,
1257
,
5
,
29
,
-
2
,
563
,
-
1
,
1330
,
5
,
30
,
5
,
30
,
-
2
,
56
2
,
-
2
,
56
4
,
}
}
const
yyPrivate
=
57344
const
yyPrivate
=
57344
const
yyLast
=
11
302
const
yyLast
=
11
224
var
yyAct
=
[
...
]
int
{
var
yyAct
=
[
...
]
int
{
263
,
1360
,
1350
,
1316
,
876
,
661
,
965
,
551
,
1264
,
1103
,
263
,
1365
,
1355
,
1321
,
878
,
662
,
968
,
1227
,
552
,
267
,
983
,
241
,
804
,
1137
,
1034
,
1100
,
966
,
267
,
1104
,
903
,
1269
,
1107
,
986
,
1141
,
969
,
1104
,
1037
,
828
,
293
,
829
,
850
,
870
,
293
,
989
,
836
,
826
,
57
,
802
,
269
,
1008
,
806
,
804
,
906
,
57
,
838
,
1108
,
1120
,
872
,
551
,
3
,
1222
,
1110
,
82
,
1116
,
856
,
750
,
204
,
1077
,
260
,
204
,
825
,
1114
,
82
,
1011
,
1081
,
932
,
204
,
331
,
762
,
204
,
690
,
929
,
1037
,
760
,
550
,
3
,
1025
,
823
,
806
,
599
,
992
,
759
,
600
,
241
,
752
,
692
,
1040
,
1028
,
793
,
232
,
840
,
483
,
776
,
727
,
866
,
791
,
489
,
827
,
430
,
495
,
778
,
729
,
294
,
51
,
842
,
808
,
484
,
490
,
430
,
584
,
784
,
294
,
51
,
232
,
503
,
598
,
322
,
204
,
82
,
325
,
852
,
496
,
583
,
265
,
868
,
599
,
325
,
204
,
82
,
320
,
265
,
582
,
204
,
911
,
204
,
331
,
82
,
250
,
320
,
56
,
786
,
914
,
204
,
504
,
204
,
322
,
82
,
250
,
56
,
1358
,
1353
,
1337
,
1348
,
1323
,
1345
,
877
,
757
,
1336
,
1322
,
583
,
240
,
1342
,
1353
,
462
,
566
,
1328
,
1350
,
895
,
879
,
1341
,
1095
,
1196
,
565
,
435
,
1275
,
1131
,
240
,
1145
,
1146
,
1147
,
1099
,
1201
,
435
,
1327
,
233
,
234
,
235
,
236
,
1280
,
858
,
1132
,
1133
,
818
,
819
,
817
,
1150
,
1148
,
254
,
233
,
234
,
239
,
894
,
254
,
601
,
51
,
602
,
457
,
199
,
195
,
196
,
235
,
236
,
996
,
51
,
239
,
995
,
238
,
600
,
997
,
601
,
197
,
1135
,
246
,
1136
,
1137
,
269
,
1296
,
517
,
516
,
526
,
456
,
246
,
759
,
24
,
25
,
52
,
27
,
28
,
1291
,
516
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
899
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
819
,
528
,
260
,
61
,
238
,
1149
,
1150
,
1151
,
893
,
999
,
517
,
237
,
43
,
527
,
1016
,
849
,
61
,
29
,
48
,
49
,
237
,
475
,
998
,
1154
,
1152
,
1000
,
820
,
821
,
476
,
473
,
199
,
195
,
196
,
197
,
474
,
1225
,
1241
,
857
,
1185
,
1183
,
474
,
1019
,
851
,
1230
,
1246
,
859
,
761
,
231
,
1190
,
63
,
231
,
475
,
472
,
473
,
467
,
468
,
1347
,
38
,
1344
,
461
,
64
,
65
,
66
,
67
,
1188
,
468
,
469
,
1352
,
1349
,
1322
,
1317
,
54
,
63
,
64
,
65
,
66
,
67
,
1058
,
785
,
841
,
1082
,
1061
,
459
,
787
,
461
,
445
,
1312
,
843
,
1373
,
987
,
1307
,
1265
,
1368
,
1273
,
445
,
438
,
458
,
193
,
460
,
444
,
989
,
1270
,
446
,
438
,
1369
,
192
,
193
,
193
,
890
,
887
,
984
,
986
,
669
,
204
,
1267
,
204
,
1055
,
192
,
843
,
193
,
888
,
1062
,
886
,
204
,
1272
,
204
,
671
,
1130
,
845
,
661
,
660
,
204
,
1057
,
1126
,
1125
,
1124
,
433
,
441
,
204
,
207
,
441
,
204
,
1278
,
1058
,
458
,
460
,
845
,
1084
,
204
,
1060
,
194
,
905
,
82
,
82
,
82
,
82
,
1296
,
82
,
457
,
459
,
1129
,
1128
,
82
,
82
,
82
,
82
,
433
,
82
,
207
,
194
,
539
,
540
,
1364
,
1205
,
1064
,
843
,
945
,
82
,
923
,
824
,
540
,
541
,
1301
,
897
,
900
,
198
,
1210
,
82
,
1068
,
521
,
699
,
507
,
31
,
32
,
34
,
33
,
36
,
451
,
50
,
516
,
522
,
523
,
524
,
525
,
518
,
1012
,
948
,
528
,
926
,
701
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
1086
,
1158
,
1090
,
508
,
1085
,
452
,
1083
,
518
,
826
,
528
,
517
,
527
,
696
,
527
,
1009
,
1154
,
502
,
82
,
1305
,
37
,
528
,
1088
,
693
,
698
,
502
,
501
,
988
,
82
,
431
,
892
,
44
,
45
,
1266
,
70
,
46
,
47
,
35
,
985
,
198
,
517
,
1087
,
1103
,
1271
,
908
,
463
,
463
,
463
,
463
,
492
,
463
,
1164
,
491
,
527
,
462
,
462
,
462
,
462
,
1149
,
462
,
39
,
501
,
503
,
503
,
1089
,
1091
,
493
,
1310
,
70
,
1168
,
463
,
40
,
588
,
41
,
42
,
1274
,
1272
,
857
,
1114
,
462
,
904
,
1118
,
891
,
603
,
1297
,
859
,
1101
,
503
,
480
,
481
,
456
,
481
,
492
,
930
,
537
,
842
,
1292
,
1321
,
602
,
1056
,
71
,
1367
,
429
,
1159
,
1368
,
844
,
1366
,
465
,
466
,
467
,
51
,
1054
,
479
,
480
,
455
,
691
,
1097
,
1155
,
777
,
51
,
541
,
470
,
1326
,
844
,
1279
,
1277
,
1059
,
944
,
1057
,
943
,
437
,
542
,
543
,
544
,
545
,
546
,
547
,
548
,
201
,
204
,
204
,
479
,
502
,
501
,
71
,
537
,
1153
,
779
,
539
,
204
,
204
,
204
,
842
,
843
,
536
,
82
,
664
,
538
,
500
,
1362
,
1014
,
204
,
896
,
736
,
848
,
82
,
502
,
501
,
845
,
503
,
849
,
82
,
1363
,
1193
,
1361
,
518
,
519
,
520
,
521
,
522
,
523
,
82
,
665
,
482
,
694
,
898
,
945
,
734
,
735
,
733
,
1017
,
524
,
517
,
1310
,
502
,
527
,
497
,
581
,
586
,
321
,
1327
,
582
,
907
,
503
,
1315
,
779
,
550
,
955
,
554
,
555
,
556
,
777
,
431
,
952
,
432
,
549
,
434
,
553
,
554
,
555
,
556
,
557
,
558
,
559
,
560
,
561
,
562
,
431
,
565
,
567
,
567
,
557
,
558
,
559
,
560
,
561
,
53
,
564
,
566
,
566
,
566
,
567
,
567
,
567
,
567
,
567
,
567
,
575
,
576
,
577
,
578
,
566
,
566
,
566
,
566
,
566
,
574
,
575
,
576
,
577
,
1232
,
498
,
588
,
1332
,
448
,
449
,
450
,
719
,
721
,
722
,
191
,
587
,
191
,
464
,
465
,
466
,
692
,
469
,
447
,
448
,
449
,
538
,
494
,
720
,
1237
,
1236
,
502
,
501
,
439
,
440
,
591
,
596
,
846
,
431
,
1231
,
493
,
1329
,
478
,
847
,
590
,
567
,
54
,
568
,
569
,
570
,
571
,
572
,
573
,
574
,
1032
,
597
,
568
,
569
,
570
,
571
,
572
,
573
,
516
,
515
,
525
,
526
,
732
,
1031
,
503
,
542
,
543
,
544
,
545
,
546
,
547
,
548
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
517
,
842
,
54
,
549
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
527
,
1029
,
734
,
839
,
837
,
429
,
838
,
501
,
500
,
730
,
524
,
525
,
518
,
844
,
1020
,
528
,
704
,
705
,
841
,
839
,
204
,
835
,
841
,
942
,
1099
,
82
,
732
,
733
,
731
,
1369
,
204
,
840
,
1374
,
22
,
587
,
82
,
837
,
843
,
923
,
924
,
1028
,
204
,
204
,
82
,
502
,
204
,
317
,
318
,
204
,
702
,
925
,
204
,
204
,
82
,
317
,
318
,
204
,
1334
,
753
,
204
,
703
,
1017
,
204
,
437
,
82
,
82
,
82
,
82
,
82
,
82
,
754
,
1311
,
1001
,
204
,
1002
,
82
,
82
,
82
,
82
,
82
,
82
,
82
,
520
,
521
,
522
,
523
,
524
,
517
,
82
,
82
,
82
,
82
,
82
,
464
,
933
,
1253
,
1234
,
1065
,
1029
,
82
,
527
,
941
,
1303
,
940
,
442
,
1306
,
443
,
204
,
1370
,
463
,
82
,
1375
,
1275
,
1351
,
502
,
501
,
1338
,
483
,
204
,
519
,
1248
,
22
,
450
,
501
,
500
,
501
,
500
,
1229
,
1061
,
452
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
463
,
292
,
528
,
501
,
500
,
920
,
921
,
922
,
82
,
462
,
501
,
500
,
204
,
680
,
503
,
1308
,
245
,
1012
,
463
,
82
,
1275
,
1319
,
483
,
502
,
1026
,
502
,
704
,
462
,
82
,
751
,
502
,
752
,
998
,
204
,
1275
,
483
,
1275
,
1302
,
1335
,
82
,
463
,
463
,
463
,
1009
,
999
,
1004
,
698
,
502
,
462
,
462
,
462
,
462
,
462
,
463
,
463
,
463
,
463
,
463
,
672
,
1275
,
1274
,
660
,
1007
,
462
,
462
,
462
,
1270
,
1346
,
676
,
879
,
678
,
753
,
462
,
80
,
463
,
463
,
24
,
678
,
881
,
669
,
1225
,
1224
,
1285
,
462
,
439
,
440
,
728
,
717
,
719
,
720
,
675
,
292
,
729
,
730
,
328
,
1212
,
483
,
1209
,
483
,
706
,
755
,
681
,
682
,
718
,
245
,
1333
,
482
,
1270
,
1314
,
482
,
328
,
726
,
82
,
683
,
684
,
685
,
686
,
687
,
688
,
727
,
963
,
700
,
677
,
697
,
735
,
736
,
737
,
738
,
739
,
740
,
741
,
742
,
743
,
82
,
964
,
689
,
690
,
676
,
666
,
330
,
283
,
282
,
285
,
744
,
745
,
746
,
747
,
748
,
749
,
674
,
501
,
500
,
721
,
286
,
287
,
288
,
664
,
436
,
659
,
284
,
289
,
454
,
771
,
80
,
706
,
1270
,
482
,
1270
,
1297
,
769
,
772
,
1270
,
1269
,
774
,
54
,
708
,
1165
,
1164
,
780
,
1161
,
1162
,
594
,
723
,
204
,
723
,
778
,
725
,
502
,
1220
,
1219
,
1330
,
204
,
204
,
725
,
204
,
447
,
766
,
1284
,
699
,
1161
,
1160
,
1281
,
204
,
665
,
663
,
204
,
204
,
1207
,
482
,
82
,
658
,
764
,
580
,
204
,
483
,
51
,
204
,
204
,
938
,
483
,
82
,
790
,
483
,
51
,
589
,
1204
,
482
,
659
,
453
,
330
,
1161
,
1160
,
82
,
764
,
483
,
502
,
501
,
756
,
757
,
1155
,
554
,
610
,
609
,
754
,
755
,
668
,
446
,
436
,
553
,
586
,
1157
,
1158
,
812
,
82
,
846
,
1105
,
1117
,
814
,
1117
,
764
,
1205
,
783
,
503
,
586
,
774
,
1280
,
679
,
680
,
681
,
682
,
683
,
684
,
685
,
595
,
790
,
593
,
993
,
776
,
24
,
1167
,
731
,
517
,
516
,
686
,
1157
,
1156
,
935
,
482
,
788
,
482
,
687
,
688
,
852
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
853
,
854
,
855
,
1078
,
762
,
482
,
609
,
608
,
24
,
803
,
24
,
805
,
528
,
728
,
993
,
588
,
737
,
738
,
739
,
740
,
810
,
1279
,
1276
,
587
,
24
,
863
,
864
,
865
,
858
,
859
,
741
,
742
,
743
,
744
,
745
,
746
,
747
,
748
,
749
,
750
,
860
,
204
,
781
,
815
,
82
,
814
,
82
,
1151
,
831
,
990
,
751
,
812
,
204
,
816
,
817
,
82
,
790
,
82
,
1256
,
833
,
204
,
990
,
960
,
204
,
82
,
844
,
961
,
765
,
766
,
872
,
58
,
204
,
204
,
54
,
789
,
204
,
82
,
1163
,
1071
,
950
,
1080
,
1101
,
1251
,
773
,
1113
,
811
,
593
,
592
,
1067
,
1113
,
854
,
855
,
856
,
857
,
1003
,
818
,
874
,
1117
,
54
,
947
,
204
,
58
,
204
,
204
,
762
,
787
,
54
,
780
,
1200
,
782
,
938
,
813
,
204
,
593
,
204
,
204
,
865
,
866
,
867
,
790
,
783
,
788
,
54
,
662
,
1163
,
947
,
1159
,
1000
,
816
,
868
,
330
,
330
,
330
,
330
,
587
,
330
,
593
,
596
,
587
,
702
,
869
,
610
,
788
,
1082
,
1113
,
1086
,
24
,
1081
,
944
,
1079
,
938
,
670
,
767
,
768
,
247
,
330
,
54
,
463
,
775
,
463
,
788
,
935
,
666
,
667
,
1084
,
462
,
670
,
462
,
594
,
673
,
870
,
871
,
938
,
949
,
860
,
861
,
862
,
1343
,
463
,
1197
,
592
,
935
,
935
,
1083
,
595
,
462
,
525
,
526
,
518
,
519
,
483
,
1318
,
782
,
946
,
784
,
785
,
1241
,
1232
,
853
,
727
,
520
,
521
,
522
,
523
,
524
,
517
,
1085
,
1087
,
527
,
946
,
795
,
798
,
799
,
800
,
796
,
506
,
797
,
801
,
882
,
1217
,
330
,
330
,
330
,
330
,
728
,
330
,
913
,
912
,
693
,
700
,
884
,
873
,
730
,
1146
,
1121
,
1122
,
1127
,
1006
,
869
,
904
,
729
,
874
,
943
,
247
,
54
,
330
,
54
,
1338
,
1313
,
1236
,
915
,
864
,
54
,
916
,
863
,
663
,
876
,
517
,
516
,
526
,
1227
,
926
,
927
,
928
,
851
,
725
,
1212
,
871
,
1142
,
1003
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
927
,
713
,
1117
,
1118
,
705
,
867
,
925
,
924
,
862
,
861
,
204
,
1360
,
528
,
1356
,
1148
,
1124
,
928
,
1105
,
328
,
1033
,
674
,
204
,
204
,
204
,
204
,
1355
,
505
,
1351
,
1144
,
1120
,
1101
,
477
,
204
,
204
,
204
,
204
,
204
,
980
,
978
,
1126
,
970
,
1030
,
204
,
672
,
328
,
204
,
967
,
476
,
712
,
204
,
1045
,
714
,
981
,
979
,
204
,
977
,
982
,
204
,
799
,
800
,
976
,
977
,
54
,
204
,
1123
,
1122
,
978
,
974
,
586
,
586
,
586
,
204
,
1347
,
330
,
1340
,
204
,
965
,
251
,
252
,
605
,
1067
,
586
,
586
,
973
,
1342
,
1335
,
975
,
1063
,
82
,
951
,
962
,
911
,
497
,
1346
,
921
,
920
,
485
,
707
,
1024
,
954
,
82
,
976
,
908
,
586
,
880
,
919
,
882
,
992
,
1341
,
1043
,
991
,
1203
,
608
,
455
,
1016
,
766
,
994
,
495
,
486
,
1317
,
966
,
586
,
761
,
763
,
901
,
251
,
252
,
963
,
964
,
764
,
496
,
967
,
1316
,
1254
,
588
,
588
,
588
,
588
,
588
,
1004
,
731
,
587
,
587
,
587
,
587
,
587
,
980
,
988
,
779
,
918
,
917
,
983
,
972
,
973
,
971
,
975
,
995
,
974
,
1014
,
805
,
1008
,
968
,
786
,
330
,
971
,
494
,
803
,
993
,
987
,
604
,
979
,
990
,
996
,
1242
,
883
,
673
,
991
,
588
,
929
,
930
,
931
,
1010
,
797
,
798
,
587
,
813
,
82
,
82
,
1021
,
82
,
969
,
922
,
803
,
248
,
249
,
497
,
919
,
1013
,
82
,
82
,
242
,
970
,
934
,
972
,
484
,
1001
,
607
,
454
,
1018
,
1019
,
1006
,
82
,
1290
,
243
,
918
,
763
,
765
,
58
,
1289
,
1244
,
1023
,
1007
,
1013
,
1237
,
1312
,
256
,
485
,
1311
,
949
,
1249
,
1011
,
993
,
1025
,
1026
,
1027
,
478
,
1009
,
1010
,
1362
,
1361
,
62
,
1005
,
82
,
1198
,
881
,
1020
,
1044
,
1022
,
1023
,
1024
,
1027
,
781
,
691
,
499
,
1362
,
82
,
1298
,
587
,
587
,
587
,
587
,
1049
,
1046
,
1039
,
1047
,
1042
,
204
,
671
,
801
,
1040
,
1041
,
587
,
1231
,
1030
,
697
,
60
,
592
,
55
,
937
,
204
,
1
,
248
,
249
,
496
,
916
,
82
,
242
,
1285
,
243
,
1050
,
58
,
1354
,
587
,
880
,
330
,
1036
,
889
,
1320
,
82
,
1268
,
587
,
1284
,
915
,
1048
,
1239
,
990
,
477
,
689
,
462
,
1051
,
1357
,
463
,
330
,
1140
,
952
,
1053
,
1039
,
836
,
827
,
69
,
428
,
1356
,
1357
,
875
,
1060
,
498
,
1293
,
1226
,
1036
,
695
,
60
,
68
,
1309
,
835
,
330
,
330
,
330
,
330
,
330
,
330
,
330
,
62
,
899
,
591
,
55
,
900
,
1
,
1349
,
878
,
1033
,
887
,
330
,
1064
,
834
,
1276
,
1021
,
1022
,
463
,
330
,
330
,
1229
,
1315
,
1263
,
462
,
1136
,
82
,
82
,
834
,
1102
,
1071
,
1073
,
847
,
1035
,
1018
,
850
,
1147
,
1075
,
1314
,
82
,
82
,
1074
,
1074
,
902
,
825
,
330
,
69
,
428
,
1096
,
1088
,
967
,
1076
,
1106
,
1015
,
726
,
970
,
616
,
614
,
1100
,
1080
,
615
,
613
,
1089
,
330
,
1090
,
1091
,
1105
,
1093
,
1094
,
724
,
82
,
1112
,
1093
,
618
,
617
,
1109
,
710
,
612
,
727
,
1063
,
215
,
1092
,
68
,
1304
,
330
,
330
,
330
,
330
,
330
,
330
,
330
,
330
,
323
,
82
,
802
,
604
,
506
,
1111
,
875
,
330
,
500
,
72
,
833
,
82
,
832
,
82
,
82
,
1121
,
330
,
330
,
1107
,
1271
,
1056
,
1125
,
1055
,
885
,
82
,
471
,
82
,
82
,
472
,
1116
,
1224
,
1070
,
845
,
1015
,
848
,
1130
,
1128
,
1143
,
1309
,
1127
,
217
,
536
,
256
,
917
,
997
,
329
,
1132
,
1110
,
1112
,
51
,
1012
,
725
,
615
,
1106
,
613
,
51
,
1134
,
614
,
612
,
1139
,
703
,
1138
,
1131
,
489
,
1288
,
1139
,
1243
,
953
,
563
,
777
,
617
,
204
,
616
,
708
,
611
,
215
,
1140
,
1141
,
323
,
82
,
268
,
718
,
1143
,
281
,
204
,
1134
,
278
,
280
,
758
,
279
,
800
,
603
,
873
,
505
,
932
,
1032
,
330
,
499
,
933
,
72
,
709
,
962
,
82
,
1144
,
1145
,
510
,
266
,
258
,
772
,
772
,
1053
,
1052
,
82
,
204
,
883
,
937
,
938
,
939
,
470
,
82
,
586
,
579
,
1156
,
1157
,
772
,
82
,
204
,
794
,
792
,
791
,
1135
,
471
,
217
,
535
,
948
,
82
,
1152
,
1153
,
204
,
954
,
328
,
1123
,
82
,
204
,
1119
,
585
,
1077
,
1078
,
1070
,
82
,
1059
,
955
,
956
,
957
,
958
,
328
,
914
,
994
,
329
,
1108
,
1200
,
1295
,
204
,
830
,
713
,
26
,
59
,
253
,
19
,
1094
,
1172
,
701
,
488
,
1283
,
1238
,
950
,
562
,
756
,
828
,
775
,
1095
,
18
,
1097
,
1098
,
17
,
330
,
20
,
1177
,
935
,
16
,
1173
,
268
,
1190
,
982
,
716
,
1174
,
586
,
770
,
770
,
1178
,
1169
,
15
,
936
,
1179
,
14
,
443
,
30
,
21
,
330
,
940
,
1179
,
1165
,
1180
,
770
,
1181
,
1182
,
281
,
1184
,
278
,
280
,
941
,
942
,
13
,
1171
,
12
,
11
,
1174
,
10
,
951
,
9
,
279
,
1176
,
707
,
959
,
1167
,
509
,
266
,
1170
,
1199
,
258
,
8
,
1178
,
7
,
957
,
1186
,
958
,
959
,
960
,
961
,
6
,
585
,
578
,
792
,
283
,
282
,
285
,
286
,
287
,
288
,
587
,
5
,
4
,
1204
,
244
,
588
,
23
,
2
,
970
,
0
,
0
,
1209
,
967
,
284
,
289
,
330
,
82
,
790
,
486
,
490
,
1208
,
0
,
0
,
1214
,
0
,
0
,
0
,
0
,
985
,
0
,
82
,
1218
,
789
,
1119
,
82
,
1115
,
584
,
1066
,
330
,
1195
,
793
,
1213
,
0
,
0
,
1183
,
1184
,
0
,
1185
,
82
,
0
,
1187
,
796
,
797
,
798
,
794
,
508
,
795
,
799
,
1194
,
1290
,
1221
,
0
,
1189
,
1199
,
330
,
0
,
330
,
0
,
0
,
1004
,
0
,
711
,
26
,
59
,
82
,
82
,
82
,
516
,
515
,
525
,
526
,
0
,
0
,
0
,
0
,
330
,
726
,
488
,
82
,
82
,
82
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
517
,
1234
,
724
,
0
,
0
,
0
,
0
,
0
,
0
,
1223
,
0
,
0
,
0
,
527
,
253
,
19
,
18
,
17
,
20
,
1214
,
1215
,
1216
,
552
,
589
,
1219
,
1220
,
1221
,
1239
,
0
,
0
,
587
,
1240
,
0
,
16
,
1228
,
1001
,
1230
,
15
,
14
,
1065
,
30
,
563
,
21
,
330
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
13
,
12
,
330
,
11
,
330
,
82
,
82
,
10
,
82
,
9
,
525
,
518
,
202
,
1226
,
528
,
230
,
0
,
0
,
0
,
1181
,
8
,
7
,
330
,
82
,
1240
,
82
,
82
,
82
,
204
,
1250
,
82
,
82
,
0
,
82
,
0
,
0
,
201
,
0
,
82
,
463
,
1257
,
82
,
1235
,
1105
,
462
,
1075
,
6
,
5
,
1242
,
1243
,
82
,
82
,
82
,
204
,
1109
,
1263
,
82
,
1264
,
1265
,
1266
,
1262
,
1244
,
1245
,
1246
,
1268
,
4
,
244
,
82
,
330
,
23
,
257
,
1255
,
0
,
202
,
0
,
0
,
0
,
1257
,
202
,
1273
,
893
,
2
,
0
,
1258
,
0
,
1259
,
1260
,
1261
,
1252
,
793
,
202
,
0
,
82
,
1267
,
0
,
0
,
0
,
321
,
0
,
1286
,
796
,
797
,
798
,
794
,
892
,
795
,
799
,
0
,
0
,
1117
,
1238
,
0
,
432
,
0
,
434
,
487
,
491
,
1262
,
1110
,
0
,
1118
,
1294
,
1106
,
0
,
0
,
1253
,
0
,
1281
,
0
,
0
,
1233
,
1258
,
1235
,
0
,
1282
,
0
,
1283
,
0
,
1299
,
0
,
0
,
82
,
1302
,
1301
,
1105
,
0
,
1277
,
0
,
1278
,
0
,
1079
,
0
,
509
,
0
,
0
,
1109
,
82
,
0
,
772
,
1307
,
0
,
0
,
897
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1306
,
0
,
0
,
0
,
1245
,
0
,
0
,
1300
,
0
,
0
,
0
,
891
,
0
,
1319
,
0
,
0
,
0
,
82
,
1295
,
1282
,
0
,
0
,
830
,
1048
,
0
,
1287
,
0
,
0
,
0
,
1324
,
1324
,
0
,
0
,
0
,
0
,
0
,
828
,
0
,
204
,
0
,
0
,
0
,
82
,
0
,
0
,
1329
,
0
,
553
,
970
,
1110
,
0
,
967
,
1162
,
1106
,
0
,
51
,
0
,
0
,
82
,
0
,
0
,
51
,
0
,
204
,
0
,
0
,
564
,
330
,
0
,
0
,
1331
,
0
,
0
,
0
,
0
,
0
,
770
,
0
,
0
,
0
,
0
,
0
,
1046
,
82
,
0
,
1336
,
0
,
1247
,
1248
,
0
,
0
,
0
,
1233
,
0
,
1169
,
0
,
1339
,
1340
,
0
,
82
,
1249
,
1250
,
1251
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
888
,
885
,
886
,
0
,
884
,
0
,
0
,
0
,
0
,
0
,
1344
,
1345
,
1038
,
82
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1354
,
0
,
1045
,
0
,
0
,
1035
,
0
,
1365
,
0
,
1348
,
0
,
0
,
0
,
0
,
0
,
1359
,
0
,
202
,
0
,
1175
,
0
,
0
,
0
,
330
,
487
,
0
,
1177
,
1343
,
0
,
202
,
0
,
0
,
1370
,
1034
,
330
,
202
,
330
,
0
,
0
,
0
,
694
,
0
,
0
,
0
,
895
,
898
,
0
,
1186
,
0
,
0
,
0
,
442
,
202
,
444
,
795
,
798
,
799
,
800
,
1187
,
1188
,
0
,
1043
,
1191
,
0
,
0
,
0
,
0
,
0
,
796
,
451
,
797
,
801
,
0
,
0
,
1121
,
1122
,
453
,
1047
,
0
,
1358
,
0
,
0
,
0
,
714
,
715
,
1201
,
1202
,
1203
,
1073
,
0
,
330
,
0
,
1052
,
1049
,
1042
,
1050
,
1045
,
0
,
0
,
1206
,
202
,
1069
,
0
,
230
,
0
,
0
,
0
,
1352
,
1048
,
0
,
1043
,
1044
,
0
,
1357
,
0
,
1180
,
0
,
0
,
0
,
0
,
890
,
1031
,
330
,
0
,
330
,
0
,
1217
,
0
,
0
,
0
,
1096
,
0
,
1182
,
330
,
1051
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1092
,
0
,
0
,
0
,
0
,
0
,
0
,
1054
,
0
,
0
,
1191
,
1192
,
1193
,
0
,
1046
,
257
,
0
,
0
,
202
,
889
,
0
,
0
,
0
,
202
,
330
,
1196
,
0
,
0
,
0
,
0
,
0
,
0
,
330
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
552
,
0
,
0
,
0
,
0
,
1206
,
1207
,
1208
,
0
,
1211
,
0
,
0
,
1044
,
767
,
768
,
0
,
0
,
1049
,
1046
,
1039
,
1047
,
1042
,
0
,
0
,
772
,
0
,
0
,
1113
,
1115
,
0
,
0
,
0
,
0
,
0
,
330
,
1040
,
1041
,
0
,
1192
,
482
,
0
,
0
,
0
,
0
,
0
,
0
,
1222
,
0
,
0
,
830
,
0
,
830
,
0
,
0
,
0
,
0
,
894
,
0
,
0
,
1048
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1115
,
828
,
0
,
828
,
1038
,
330
,
0
,
1247
,
896
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
202
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
822
,
0
,
770
,
1363
,
696
,
330
,
0
,
330
,
1142
,
1047
,
0
,
581
,
0
,
0
,
0
,
1109
,
1111
,
516
,
515
,
525
,
526
,
518
,
519
,
590
,
1052
,
1049
,
1042
,
1050
,
1045
,
0
,
0
,
0
,
1043
,
520
,
521
,
522
,
523
,
524
,
517
,
0
,
0
,
527
,
0
,
1044
,
0
,
0
,
0
,
716
,
717
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1111
,
0
,
0
,
0
,
0
,
0
,
0
,
1051
,
0
,
0
,
0
,
0
,
0
,
1041
,
0
,
0
,
0
,
1286
,
1287
,
1288
,
1289
,
0
,
213
,
330
,
1170
,
0
,
1073
,
1252
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
330
,
1138
,
0
,
1069
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1172
,
0
,
0
,
0
,
0
,
0
,
0
,
1298
,
1299
,
1300
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
1175
,
0
,
0
,
0
,
0
,
0
,
0
,
330
,
0
,
0
,
0
,
202
,
226
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
553
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
1166
,
0
,
0
,
769
,
770
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1320
,
0
,
0
,
0
,
0
,
1325
,
0
,
0
,
1328
,
1291
,
1292
,
1293
,
1294
,
0
,
0
,
0
,
0
,
0
,
0
,
1168
,
0
,
909
,
910
,
482
,
490
,
0
,
1171
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
1303
,
1304
,
1305
,
0
,
0
,
0
,
330
,
0
,
0
,
1332
,
0
,
0
,
0
,
0
,
0
,
830
,
0
,
0
,
0
,
772
,
202
,
202
,
0
,
0
,
0
,
0
,
208
,
828
,
0
,
0
,
0
,
0
,
0
,
611
,
0
,
202
,
0
,
0
,
202
,
824
,
0
,
0
,
679
,
210
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
216
,
212
,
0
,
667
,
668
,
0
,
0
,
0
,
321
,
330
,
1325
,
675
,
0
,
516
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
0
,
1038
,
830
,
1330
,
0
,
1228
,
0
,
0
,
0
,
0
,
523
,
524
,
517
,
1035
,
828
,
527
,
0
,
0
,
0
,
1366
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
1367
,
0
,
770
,
0
,
0
,
0
,
0
,
936
,
0
,
0
,
0
,
0
,
0
,
1337
,
0
,
330
,
330
,
330
,
695
,
0
,
214
,
0
,
0
,
218
,
0
,
0
,
225
,
0
,
0
,
1189
,
0
,
1076
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
482
,
0
,
953
,
330
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
679
,
0
,
0
,
0
,
0
,
0
,
1223
,
0
,
0
,
202
,
202
,
202
,
0
,
0
,
0
,
715
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
0
,
0
,
209
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
524
,
525
,
518
,
0
,
0
,
528
,
1371
,
1372
,
1259
,
1260
,
0
,
330
,
330
,
330
,
0
,
0
,
0
,
516
,
515
,
525
,
0
,
1261
,
0
,
0
,
0
,
0
,
1228
,
0
,
1228
,
1228
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
517
,
219
,
1228
,
0
,
912
,
913
,
1142
,
491
,
0
,
257
,
0
,
0
,
211
,
527
,
220
,
221
,
222
,
224
,
223
,
229
,
0
,
0
,
0
,
0
,
257
,
257
,
0
,
0
,
773
,
773
,
257
,
0
,
0
,
0
,
0
,
228
,
227
,
0
,
0
,
0
,
0
,
0
,
1228
,
0
,
773
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1254
,
1255
,
0
,
1256
,
0
,
0
,
0
,
0
,
0
,
257
,
257
,
257
,
257
,
0
,
202
,
0
,
0
,
0
,
1223
,
0
,
1223
,
1223
,
1223
,
0
,
0
,
0
,
1138
,
0
,
0
,
0
,
0
,
0
,
202
,
810
,
0
,
0
,
202
,
511
,
0
,
514
,
0
,
0
,
0
,
0
,
0
,
528
,
529
,
202
,
788
,
0
,
0
,
1313
,
0
,
0
,
0
,
0
,
0
,
530
,
531
,
532
,
533
,
534
,
1223
,
512
,
513
,
510
,
516
,
0
,
0
,
0
,
0
,
815
,
0
,
0
,
939
,
0
,
0
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
0
,
24
,
25
,
52
,
27
,
28
,
0
,
772
,
0
,
0
,
517
,
0
,
0
,
527
,
0
,
0
,
202
,
0
,
0
,
1072
,
1331
,
0
,
956
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1062
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
202
,
1308
,
43
,
0
,
0
,
0
,
0
,
29
,
48
,
49
,
0
,
0
,
0
,
202
,
0
,
0
,
202
,
0
,
0
,
0
,
677
,
516
,
0
,
1339
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
213
,
528
,
38
,
0
,
0
,
202
,
54
,
517
,
0
,
770
,
527
,
0
,
1326
,
0
,
0
,
0
,
0
,
0
,
0
,
1228
,
0
,
0
,
0
,
0
,
202
,
202
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
1098
,
0
,
0
,
0
,
202
,
877
,
0
,
0
,
0
,
0
,
226
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1334
,
0
,
0
,
0
,
0
,
901
,
902
,
0
,
0
,
903
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
931
,
0
,
0
,
0
,
909
,
910
,
0
,
0
,
0
,
0
,
0
,
0
,
679
,
0
,
0
,
0
,
0
,
0
,
677
,
0
,
0
,
1223
,
0
,
0
,
0
,
0
,
905
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1129
,
516
,
515
,
525
,
526
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
633
,
0
,
0
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
517
,
0
,
0
,
31
,
32
,
34
,
33
,
36
,
0
,
50
,
0
,
208
,
0
,
527
,
516
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
0
,
0
,
0
,
0
,
0
,
210
,
0
,
0
,
0
,
0
,
523
,
524
,
517
,
0
,
0
,
527
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
216
,
212
,
0
,
0
,
37
,
44
,
45
,
0
,
257
,
257
,
0
,
0
,
771
,
771
,
257
,
0
,
0
,
0
,
1066
,
46
,
47
,
35
,
0
,
0
,
257
,
0
,
0
,
0
,
771
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
39
,
40
,
0
,
0
,
257
,
257
,
257
,
257
,
632
,
202
,
0
,
0
,
0
,
41
,
42
,
0
,
257
,
0
,
214
,
1194
,
483
,
218
,
0
,
0
,
0
,
0
,
0
,
202
,
808
,
0
,
0
,
202
,
202
,
0
,
225
,
0
,
0
,
0
,
0
,
773
,
202
,
202
,
202
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
202
,
202
,
0
,
0
,
0
,
621
,
0
,
0
,
1102
,
984
,
517
,
0
,
0
,
527
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
810
,
209
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
517
,
516
,
526
,
527
,
519
,
520
,
0
,
0
,
0
,
0
,
1197
,
0
,
0
,
0
,
0
,
0
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
1198
,
528
,
0
,
0
,
552
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1210
,
0
,
0
,
634
,
0
,
219
,
211
,
1133
,
220
,
221
,
222
,
0
,
0
,
1211
,
0
,
0
,
1213
,
0
,
0
,
0
,
0
,
224
,
223
,
229
,
0
,
0
,
0
,
0
,
0
,
228
,
227
,
0
,
0
,
0
,
620
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
53
,
647
,
648
,
649
,
650
,
651
,
652
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
202
,
653
,
0
,
654
,
655
,
656
,
657
,
658
,
635
,
636
,
637
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
638
,
619
,
620
,
0
,
0
,
622
,
0
,
623
,
624
,
625
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
906
,
907
,
626
,
627
,
628
,
629
,
630
,
631
,
632
,
639
,
640
,
641
,
633
,
0
,
0
,
0
,
0
,
0
,
677
,
0
,
0
,
0
,
642
,
643
,
644
,
645
,
646
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
257
,
0
,
0
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
0
,
0
,
646
,
647
,
648
,
649
,
650
,
651
,
652
,
0
,
524
,
525
,
518
,
0
,
202
,
528
,
0
,
0
,
0
,
0
,
653
,
654
,
655
,
656
,
657
,
634
,
635
,
636
,
637
,
618
,
0
,
0
,
0
,
1195
,
257
,
0
,
0
,
0
,
1069
,
0
,
619
,
0
,
0
,
621
,
0
,
622
,
623
,
624
,
625
,
626
,
0
,
0
,
0
,
0
,
0
,
257
,
0
,
0
,
0
,
0
,
627
,
628
,
629
,
630
,
631
,
638
,
639
,
640
,
641
,
642
,
0
,
0
,
0
,
0
,
0
,
679
,
1202
,
0
,
0
,
0
,
643
,
644
,
645
,
0
,
0
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
553
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
773
,
1215
,
0
,
512
,
1216
,
515
,
0
,
1218
,
0
,
0
,
0
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
529
,
530
,
531
,
532
,
533
,
534
,
535
,
0
,
513
,
0
,
0
,
0
,
0
,
771
,
202
,
202
,
202
,
202
,
202
,
514
,
511
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
981
,
0
,
0
,
523
,
524
,
525
,
518
,
0
,
0
,
528
,
517
,
516
,
526
,
202
,
0
,
0
,
0
,
808
,
0
,
0
,
0
,
202
,
1318
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
552
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
528
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
157
,
130
,
1166
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
934
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
1173
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
1176
,
517
,
516
,
526
,
527
,
519
,
520
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
0
,
528
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
0
,
528
,
0
,
0
,
773
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
1323
,
553
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
810
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
517
,
516
,
526
,
527
,
519
,
520
,
521
,
522
,
523
,
524
,
525
,
518
,
0
,
0
,
528
,
0
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
257
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
677
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
771
,
0
,
0
,
0
,
0
,
0
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
773
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
202
,
0
,
516
,
0
,
416
,
407
,
1333
,
378
,
419
,
356
,
370
,
427
,
371
,
515
,
525
,
526
,
518
,
519
,
520
,
521
,
522
,
523
,
524
,
372
,
400
,
342
,
386
,
138
,
368
,
0
,
359
,
337
,
365
,
517
,
0
,
0
,
527
,
0
,
0
,
0
,
0
,
0
,
202
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
0
,
205
,
0
,
0
,
202
,
0
,
144
,
0
,
160
,
110
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
831
,
832
,
0
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
1005
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
771
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
0
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
416
,
408
,
39
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
416
,
407
,
0
,
378
,
419
,
356
,
370
,
427
,
371
,
372
,
400
,
407
,
0
,
378
,
419
,
356
,
370
,
427
,
371
,
372
,
400
,
342
,
386
,
138
,
368
,
808
,
359
,
337
,
365
,
338
,
357
,
342
,
386
,
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
8
29
,
830
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
8
31
,
832
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
1002
,
0
,
0
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
771
,
0
,
0
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
202
,
379
,
0
,
0
,
0
,
346
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
118
,
84
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
...
@@ -990,8 +1008,8 @@ var yyAct = [...]int{
...
@@ -990,8 +1008,8 @@ var yyAct = [...]int{
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
347
,
393
,
420
,
369
,
398
,
421
,
54
,
0
,
0
,
81
,
0
,
829
,
83
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
...
@@ -1016,11 +1034,11 @@ var yyAct = [...]int{
...
@@ -1016,11 +1034,11 @@ var yyAct = [...]int{
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
54
,
0
,
0
,
81
,
0
,
0
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
1072
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
...
@@ -1042,11 +1060,11 @@ var yyAct = [...]int{
...
@@ -1042,11 +1060,11 @@ var yyAct = [...]int{
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
398
,
421
,
0
,
0
,
0
,
262
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
1068
,
0
,
360
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
724
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
...
@@ -1068,11 +1086,11 @@ var yyAct = [...]int{
...
@@ -1068,11 +1086,11 @@ var yyAct = [...]int{
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
262
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
722
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
...
@@ -1094,7 +1112,7 @@ var yyAct = [...]int{
...
@@ -1094,7 +1112,7 @@ var yyAct = [...]int{
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
262
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
...
@@ -1119,7 +1137,7 @@ var yyAct = [...]int{
...
@@ -1119,7 +1137,7 @@ var yyAct = [...]int{
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
262
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
...
@@ -1132,11 +1150,11 @@ var yyAct = [...]int{
...
@@ -1132,11 +1150,11 @@ var yyAct = [...]int{
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
333
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
334
,
332
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
...
@@ -1145,7 +1163,7 @@ var yyAct = [...]int{
...
@@ -1145,7 +1163,7 @@ var yyAct = [...]int{
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
0
,
359
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
...
@@ -1158,11 +1176,11 @@ var yyAct = [...]int{
...
@@ -1158,11 +1176,11 @@ var yyAct = [...]int{
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
333
,
177
,
135
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
334
,
332
,
113
,
155
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
...
@@ -1171,7 +1189,7 @@ var yyAct = [...]int{
...
@@ -1171,7 +1189,7 @@ var yyAct = [...]int{
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
337
,
365
,
338
,
357
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
418
,
119
,
425
,
121
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
382
,
411
,
384
,
405
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
398
,
421
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
0
,
0
,
0
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
...
@@ -1182,13 +1200,13 @@ var yyAct = [...]int{
...
@@ -1182,13 +1200,13 @@ var yyAct = [...]int{
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
410
,
358
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
85
,
161
,
598
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
100
,
189
,
91
,
178
,
89
,
333
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
0
,
0
,
95
,
107
,
334
,
332
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
146
,
105
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
146
,
105
,
...
@@ -1208,67 +1226,115 @@ var yyAct = [...]int{
...
@@ -1208,67 +1226,115 @@ var yyAct = [...]int{
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
150
,
122
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
597
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
324
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
333
,
177
,
135
,
164
,
170
,
129
,
126
,
91
,
178
,
89
,
333
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
334
,
332
,
113
,
155
,
116
,
123
,
147
,
188
,
95
,
107
,
334
,
332
,
327
,
326
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
416
,
408
,
390
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
407
,
0
,
378
,
419
,
356
,
370
,
427
,
371
,
372
,
400
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
342
,
386
,
138
,
368
,
0
,
359
,
337
,
365
,
338
,
357
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
380
,
103
,
383
,
355
,
409
,
389
,
418
,
119
,
425
,
121
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
394
,
0
,
157
,
130
,
0
,
0
,
382
,
411
,
384
,
405
,
0
,
0
,
0
,
822
,
0
,
54
,
0
,
0
,
262
,
283
,
377
,
401
,
347
,
393
,
420
,
369
,
398
,
421
,
0
,
0
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
290
,
291
,
823
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
96
,
0
,
396
,
415
,
367
,
397
,
399
,
336
,
395
,
0
,
340
,
343
,
426
,
413
,
362
,
363
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
385
,
402
,
375
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
360
,
0
,
392
,
0
,
0
,
0
,
344
,
341
,
0
,
0
,
379
,
0
,
0
,
0
,
346
,
0
,
361
,
403
,
0
,
335
,
108
,
406
,
412
,
376
,
205
,
414
,
374
,
373
,
417
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
410
,
358
,
366
,
99
,
364
,
151
,
140
,
173
,
391
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
324
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
333
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
339
,
0
,
158
,
175
,
190
,
94
,
354
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
334
,
332
,
327
,
326
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
350
,
353
,
348
,
349
,
387
,
388
,
422
,
423
,
424
,
404
,
345
,
0
,
351
,
352
,
0
,
408
,
390
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
820
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
821
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
105
,
176
,
138
,
0
,
0
,
758
,
0
,
264
,
0
,
0
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
760
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
255
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
483
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
255
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
24
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
...
@@ -1276,7 +1342,7 @@ var yyAct = [...]int{
...
@@ -1276,7 +1342,7 @@ var yyAct = [...]int{
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
255
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
...
@@ -1296,7 +1362,7 @@ var yyAct = [...]int{
...
@@ -1296,7 +1362,7 @@ var yyAct = [...]int{
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
482
,
262
,
283
,
282
,
285
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
...
@@ -1316,229 +1382,62 @@ var yyAct = [...]int{
...
@@ -1316,229 +1382,62 @@ var yyAct = [...]int{
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
299
,
300
,
302
,
138
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
304
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
255
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
99
,
0
,
151
,
140
,
173
,
1364
,
141
,
150
,
122
,
165
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
24
,
301
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
138
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
0
,
0
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
290
,
291
,
0
,
0
,
0
,
0
,
276
,
0
,
303
,
0
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
0
,
264
,
0
,
0
,
0
,
103
,
0
,
261
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
259
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
138
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
0
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
1359
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
138
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
304
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
295
,
296
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
262
,
283
,
282
,
285
,
286
,
287
,
288
,
0
,
0
,
96
,
284
,
289
,
290
,
291
,
0
,
0
,
0
,
0
,
276
,
0
,
303
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
504
,
0
,
0
,
0
,
0
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
506
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
273
,
274
,
96
,
0
,
0
,
0
,
0
,
0
,
501
,
500
,
0
,
0
,
0
,
0
,
0
,
0
,
315
,
0
,
275
,
0
,
0
,
270
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
271
,
272
,
277
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
502
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
313
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
305
,
314
,
311
,
312
,
309
,
310
,
308
,
307
,
306
,
316
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
297
,
298
,
299
,
300
,
302
,
0
,
301
,
83
,
0
,
120
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
187
,
146
,
105
,
176
,
138
,
0
,
0
,
0
,
505
,
0
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
74
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
77
,
78
,
0
,
73
,
0
,
0
,
0
,
79
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
75
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
76
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
807
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
809
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
24
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
24
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
507
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
502
,
501
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
503
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
...
@@ -1554,21 +1453,21 @@ var yyAct = [...]int{
...
@@ -1554,21 +1453,21 @@ var yyAct = [...]int{
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
807
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
809
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
74
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
77
,
78
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
0
,
73
,
0
,
0
,
0
,
79
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
805
,
150
,
122
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
165
,
145
,
172
,
75
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
...
@@ -1576,12 +1475,12 @@ var yyAct = [...]int{
...
@@ -1576,12 +1475,12 @@ var yyAct = [...]int{
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
139
,
152
,
98
,
174
,
156
,
0
,
76
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
809
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
709
,
0
,
0
,
71
0
,
0
,
0
,
0
,
203
,
0
,
811
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
...
@@ -1599,13 +1498,13 @@ var yyAct = [...]int{
...
@@ -1599,13 +1498,13 @@ var yyAct = [...]int{
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
24
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
606
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
81
,
0
,
605
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
...
@@ -1623,228 +1522,322 @@ var yyAct = [...]int{
...
@@ -1623,228 +1522,322 @@ var yyAct = [...]int{
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
156
,
0
,
0
,
0
,
24
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
120
,
187
,
146
,
105
,
176
,
103
,
0
,
0
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
809
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
809
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
811
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
807
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
506
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
711
,
0
,
0
,
712
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
83
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
120
,
187
,
146
,
105
,
176
,
579
,
103
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
176
,
103
,
0
,
607
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
81
,
0
,
606
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
54
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
811
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
507
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
319
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
83
,
0
,
120
,
187
,
146
,
105
,
176
,
580
,
103
,
0
,
0
,
0
,
0
,
0
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
319
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
200
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
200
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
81
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
203
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
262
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
144
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
138
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
103
,
120
,
187
,
146
,
105
,
176
,
119
,
0
,
121
,
0
,
0
,
157
,
130
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
262
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
96
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
144
,
0
,
0
,
108
,
0
,
0
,
0
,
205
,
0
,
0
,
0
,
0
,
1
60
,
110
,
118
,
84
,
90
,
0
,
109
,
136
,
14
9
,
0
,
1
44
,
0
,
160
,
110
,
118
,
84
,
90
,
0
,
10
9
,
1
53
,
0
,
0
,
0
,
99
,
0
,
151
,
140
,
173
,
0
,
1
36
,
149
,
153
,
0
,
0
,
0
,
99
,
0
,
151
,
14
0
,
1
41
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
162
,
179
,
1
73
,
0
,
141
,
150
,
122
,
165
,
145
,
172
,
206
,
180
,
1
86
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
159
,
128
,
1
62
,
179
,
186
,
85
,
161
,
171
,
97
,
154
,
87
,
169
,
1
14
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
137
,
166
,
1
59
,
128
,
114
,
115
,
86
,
0
,
148
,
102
,
106
,
101
,
1
67
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
135
,
164
,
1
37
,
166
,
167
,
100
,
189
,
91
,
178
,
89
,
92
,
177
,
1
70
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
104
,
111
,
1
35
,
164
,
170
,
129
,
126
,
88
,
168
,
127
,
125
,
117
,
1
42
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
0
,
0
,
1
04
,
111
,
142
,
124
,
143
,
112
,
132
,
131
,
133
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
183
,
184
,
0
,
0
,
158
,
175
,
190
,
94
,
0
,
163
,
181
,
182
,
18
5
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
155
,
116
,
18
3
,
184
,
185
,
0
,
0
,
95
,
107
,
134
,
93
,
113
,
1
23
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
1
55
,
116
,
123
,
147
,
188
,
139
,
152
,
98
,
174
,
156
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
0
,
120
,
187
,
146
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
,
0
,
120
,
105
,
176
,
1
87
,
146
,
1
05
,
176
,
}
}
var
yyPact
=
[
...
]
int
{
var
yyPact
=
[
...
]
int
{
117
,
-
1000
,
-
184
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
1775
,
-
1000
,
-
185
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
871
,
909
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
223
,
7486
,
60
,
96
,
-
15
,
10271
,
95
,
1790
,
10731
,
-
1000
,
-
7
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
76
,
-
82
,
-
1000
,
619
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
862
,
866
,
708
,
852
,
776
,
-
1000
,
6046
,
59
,
59
,
10041
,
5066
,
-
1000
,
-
1000
,
201
,
10731
,
92
,
10731
,
-
156
,
10501
,
55
,
55
,
55
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
914
,
944
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
209
,
7564
,
72
,
87
,
28
,
10349
,
86
,
1505
,
10809
,
-
1000
,
-
4
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
75
,
-
100
,
-
1000
,
710
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
908
,
911
,
757
,
900
,
804
,
-
1000
,
6124
,
60
,
60
,
10119
,
5144
,
-
1000
,
-
1000
,
335
,
10809
,
82
,
10809
,
-
155
,
10579
,
57
,
57
,
57
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
...
@@ -1855,22 +1848,22 @@ var yyPact = [...]int{
...
@@ -1855,22 +1848,22 @@ var yyPact = [...]int{
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
77
,
10731
,
-
1000
,
10731
,
54
,
525
,
54
,
54
,
54
,
10731
,
-
1000
,
133
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10731
,
511
,
802
,
49
,
3002
,
3002
,
3002
,
3002
,
6
,
3002
,
-
75
,
738
,
882
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
3002
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
84
,
10809
,
-
1000
,
10809
,
56
,
556
,
56
,
56
,
56
,
443
,
806
,
6539
,
6539
,
871
,
-
1000
,
619
,
-
1000
,
-
1000
,
-
1000
,
10809
,
-
1000
,
125
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10809
,
548
,
856
,
800
,
-
1000
,
-
1000
,
305
,
891
,
-
1000
,
7256
,
131
,
-
1000
,
6539
,
63
,
3080
,
3080
,
3080
,
3080
,
5
,
3080
,
-
62
,
754
,
923
,
2059
,
662
,
-
1000
,
-
1000
,
662
,
-
1000
,
-
1000
,
107
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
3080
,
-
1000
,
-
1000
,
-
1000
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
490
,
864
,
6617
,
6617
,
914
,
-
1000
,
710
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
662
,
-
1000
,
6294
,
662
,
662
,
662
,
662
,
662
,
828
,
-
1000
,
-
1000
,
280
,
933
,
-
1000
,
7334
,
119
,
-
1000
,
6617
,
662
,
662
,
662
,
6539
,
662
,
662
,
662
,
662
,
662
,
662
,
1686
,
712
,
-
1000
,
-
1000
,
712
,
-
1000
,
-
1000
,
107
,
-
1000
,
-
1000
,
662
,
662
,
662
,
662
,
662
,
662
,
662
,
9811
,
9114
,
10731
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
-
1000
,
-
1000
,
567
,
-
1000
,
652
,
4808
,
-
127
,
-
1000
,
-
1000
,
-
1000
,
200
,
8884
,
-
1000
,
-
1000
,
-
1000
,
801
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
712
,
-
1000
,
6372
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
6617
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
712
,
9889
,
9192
,
10809
,
675
,
-
1000
,
679
,
4886
,
-
113
,
-
1000
,
-
1000
,
-
1000
,
215
,
8962
,
-
1000
,
-
1000
,
-
1000
,
855
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
...
@@ -1878,201 +1871,191 @@ var yyPact = [...]int{
...
@@ -1878,201 +1871,191 @@ var yyPact = [...]int{
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
553
,
10731
,
-
1000
,
1857
,
-
1000
,
508
,
3002
,
74
,
712
,
506
,
257
,
498
,
10731
,
10731
,
3002
,
656
,
70
,
10731
,
841
,
737
,
10731
,
497
,
492
,
-
1000
,
4550
,
-
1000
,
3002
,
3002
,
3002
,
3002
,
3002
,
3002
,
3002
,
3002
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
3002
,
3002
,
-
1000
,
890
,
241
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10731
,
6539
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
904
,
161
,
530
,
127
,
654
,
-
1000
,
402
,
862
,
443
,
776
,
8648
,
757
,
-
1000
,
-
1000
,
10731
,
-
1000
,
6539
,
6539
,
308
,
-
1000
,
9574
,
-
1000
,
-
1000
,
3518
,
183
,
7011
,
336
,
246
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
7011
,
391
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
480
,
-
1000
,
619
,
499
,
499
,
142
,
142
,
142
,
142
,
142
,
142
,
142
,
2174
,
5556
,
443
,
545
,
239
,
6294
,
6046
,
6046
,
6539
,
6539
,
10961
,
10961
,
6046
,
853
,
238
,
239
,
10961
,
-
1000
,
443
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
6046
,
6046
,
6046
,
6046
,
22
,
10731
,
-
1000
,
644
,
698
,
-
1000
,
-
1000
,
-
1000
,
849
,
8188
,
8418
,
22
,
638
,
9114
,
10731
,
-
1000
,
-
1000
,
4292
,
652
,
-
127
,
630
,
-
1000
,
-
101
,
-
87
,
5311
,
141
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
2744
,
299
,
555
,
255
,
-
60
,
-
1000
,
-
1000
,
-
1000
,
684
,
-
1000
,
684
,
684
,
684
,
684
,
-
32
,
-
32
,
-
32
,
-
32
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
710
,
707
,
-
1000
,
684
,
684
,
684
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
591
,
10809
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
704
,
704
,
704
,
697
,
697
,
713
,
-
1000
,
1915
,
-
1000
,
540
,
3080
,
75
,
650
,
534
,
251
,
533
,
-
1000
,
10731
,
-
171
,
468
,
3002
,
840
,
3002
,
-
1000
,
72
,
-
1000
,
10809
,
10809
,
3080
,
66
,
10809
,
893
,
750
,
10809
,
509
,
480
,
10731
,
10731
,
651
,
-
1000
,
10731
,
3002
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
4628
,
-
1000
,
3080
,
3080
,
3080
,
3080
,
3080
,
3080
,
3080
,
3080
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
3080
,
3080
,
-
1000
,
925
,
293
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10809
,
6617
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
939
,
160
,
495
,
118
,
704
,
-
1000
,
425
,
908
,
490
,
804
,
8726
,
764
,
-
1000
,
-
1000
,
10809
,
-
1000
,
6617
,
6617
,
466
,
-
1000
,
9652
,
-
1000
,
-
1000
,
3596
,
167
,
7089
,
365
,
346
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
7089
,
449
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
471
,
-
1000
,
710
,
1065
,
1065
,
144
,
144
,
144
,
144
,
144
,
144
,
144
,
2306
,
5634
,
490
,
589
,
413
,
6372
,
6124
,
6124
,
6617
,
6617
,
11039
,
11039
,
6124
,
901
,
229
,
413
,
11039
,
-
1000
,
490
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
6124
,
6124
,
6124
,
6124
,
27
,
10809
,
-
1000
,
665
,
1107
,
-
1000
,
-
1000
,
-
1000
,
895
,
8266
,
8496
,
27
,
632
,
9192
,
10809
,
-
1000
,
-
1000
,
4370
,
679
,
-
113
,
653
,
-
1000
,
-
127
,
-
131
,
5389
,
122
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
2822
,
294
,
619
,
323
,
-
67
,
-
1000
,
-
1000
,
-
1000
,
720
,
-
1000
,
720
,
720
,
720
,
720
,
-
30
,
-
30
,
-
30
,
-
30
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
734
,
733
,
-
1000
,
720
,
720
,
720
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
730
,
730
,
730
,
723
,
723
,
708
,
-
1000
,
-
1000
,
10731
,
251
,
10731
,
10731
,
-
1000
,
239
,
-
1000
,
782
,
6539
,
10809
,
-
174
,
469
,
3080
,
880
,
3080
,
-
1000
,
1225
,
-
1000
,
10809
,
6539
,
4034
,
6539
,
-
1000
,
-
1000
,
-
1000
,
806
,
-
1000
,
853
,
864
,
-
1000
,
-
1000
,
10809
,
3080
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
790
,
789
,
6046
,
-
1000
,
-
1000
,
183
,
197
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10809
,
370
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
126
,
662
,
-
1000
,
2320
,
-
1000
,
199
,
10809
,
10809
,
-
1000
,
413
,
-
1000
,
793
,
6617
,
6617
,
4112
,
-
1000
,
-
1000
,
-
1000
,
336
,
7011
,
7011
,
7011
,
318
,
2320
,
2151
,
6617
,
-
1000
,
-
1000
,
-
1000
,
864
,
-
1000
,
901
,
912
,
-
1000
,
825
,
1717
,
1097
,
142
,
130
,
130
,
143
,
143
,
143
,
143
,
143
,
824
,
6124
,
-
1000
,
-
1000
,
167
,
254
,
-
1000
,
-
1000
,
424
,
-
1000
,
382
,
382
,
-
1000
,
-
1000
,
-
1000
,
443
,
-
1000
,
-
1000
,
-
1000
,
443
,
-
1000
,
-
1000
,
-
1000
,
116
,
712
,
-
1000
,
1808
,
-
1000
,
-
1000
,
-
1000
,
6046
,
635
,
-
1000
,
-
1000
,
6539
,
-
1000
,
443
,
540
,
540
,
253
,
-
1000
,
365
,
7089
,
7089
,
7089
,
146
,
1808
,
1793
,
641
,
1866
,
313
,
678
,
-
1000
,
124
,
668
,
540
,
6046
,
266
,
-
1000
,
6539
,
144
,
363
,
363
,
165
,
165
,
165
,
165
,
165
,
237
,
237
,
443
,
-
1000
,
540
,
443
,
540
,
540
,
517
,
662
,
-
1000
,
10961
,
-
1000
,
-
1000
,
-
1000
,
490
,
-
1000
,
-
1000
,
-
1000
,
490
,
6124
,
666
,
9114
,
9114
,
9114
,
9114
,
9114
,
-
1000
,
767
,
762
,
-
1000
,
755
,
-
1000
,
-
1000
,
6617
,
-
1000
,
490
,
578
,
578
,
418
,
411
,
707
,
754
,
763
,
10731
,
-
1000
,
543
,
8188
,
129
,
662
,
-
1000
,
9344
,
-
1000
,
114
,
694
,
578
,
6124
,
272
,
-
1000
,
6617
,
490
,
-
1000
,
-
1000
,
-
1000
,
878
,
9114
,
611
,
-
1000
,
-
1000
,
630
,
-
127
,
-
93
,
578
,
490
,
578
,
578
,
642
,
712
,
-
1000
,
11039
,
9192
,
9192
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
239
,
-
1000
,
395
,
629
,
2486
,
-
1000
,
9192
,
9192
,
9192
,
-
1000
,
780
,
774
,
-
1000
,
783
,
768
,
827
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
703
,
462
,
-
1000
,
831
,
10809
,
-
1000
,
580
,
8266
,
140
,
712
,
-
1000
,
9422
,
-
1000
,
-
1000
,
170
,
178
,
437
,
829
,
-
1000
,
-
1000
,
-
1000
,
804
,
-
1000
,
271
,
922
,
9192
,
657
,
-
1000
,
-
1000
,
653
,
-
113
,
-
120
,
-
1000
,
-
1000
,
-
62
,
-
1000
,
-
1000
,
364
,
-
32
,
-
32
,
-
1000
,
-
1000
,
141
,
797
,
-
1000
,
-
1000
,
413
,
-
1000
,
452
,
652
,
2564
,
-
1000
,
-
1000
,
-
1000
,
141
,
141
,
141
,
409
,
409
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
341
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
725
,
455
,
-
1000
,
872
,
170
,
197
,
-
1000
,
-
1000
,
-
1000
,
338
,
-
1000
,
736
,
10501
,
3002
,
-
1000
,
3776
,
453
,
871
,
-
1000
,
-
1000
,
-
1000
,
862
,
-
1000
,
261
,
-
69
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
1372
,
1265
,
181
,
-
1000
,
-
1000
,
391
,
-
30
,
-
30
,
-
1000
,
-
1000
,
122
,
847
,
122
,
122
,
122
,
442
,
442
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
380
,
-
1000
,
-
1000
,
-
1000
,
361
,
-
1000
,
748
,
10579
,
3080
,
-
1000
,
3854
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
1326
,
781
,
174
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
26
,
-
1000
,
3080
,
-
1000
,
293
,
-
1000
,
429
,
6617
,
-
1000
,
-
1000
,
787
,
413
,
413
,
112
,
-
1000
,
-
1000
,
10809
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
677
,
-
1000
,
-
1000
,
-
1000
,
3338
,
6124
,
-
1000
,
146
,
1808
,
1726
,
-
1000
,
7089
,
7089
,
-
1000
,
-
1000
,
578
,
6124
,
413
,
-
1000
,
-
1000
,
-
1000
,
535
,
449
,
535
,
7089
,
7089
,
4112
,
7089
,
7089
,
-
166
,
676
,
224
,
-
1000
,
6617
,
355
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
747
,
11039
,
712
,
-
1000
,
8030
,
10579
,
659
,
-
1000
,
205
,
1107
,
729
,
746
,
1207
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
772
,
-
1000
,
771
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
81
,
80
,
79
,
10579
,
-
1000
,
914
,
6617
,
657
,
-
1000
,
-
1000
,
-
1000
,
-
137
,
-
136
,
-
1000
,
-
1000
,
-
1000
,
2822
,
-
1000
,
2822
,
10579
,
41
,
-
1000
,
453
,
453
,
-
1000
,
-
1000
,
-
1000
,
724
,
745
,
38
,
-
1000
,
-
1000
,
-
1000
,
611
,
122
,
122
,
-
1000
,
198
,
-
1000
,
-
1000
,
-
1000
,
576
,
-
1000
,
562
,
651
,
552
,
10809
,
-
1000
,
-
1000
,
649
,
-
1000
,
188
,
-
1000
,
-
1000
,
10579
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10579
,
10809
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10579
,
-
1000
,
20
,
65
,
-
1000
,
3002
,
-
1000
,
241
,
-
1000
,
408
,
6539
,
-
1000
,
199
,
-
1000
,
413
,
-
1000
,
3854
,
-
1000
,
922
,
9192
,
-
1000
,
-
1000
,
-
1000
,
780
,
239
,
239
,
116
,
-
1000
,
-
1000
,
10731
,
-
1000
,
-
1000
,
490
,
-
1000
,
7089
,
1808
,
1808
,
-
1000
,
-
1000
,
490
,
720
,
720
,
-
1000
,
-
1000
,
667
,
-
1000
,
-
1000
,
-
1000
,
3260
,
6046
,
-
1000
,
318
,
-
1000
,
720
,
723
,
-
1000
,
720
,
-
13
,
720
,
-
14
,
490
,
490
,
2320
,
1588
,
-
1000
,
7011
,
7011
,
-
1000
,
-
1000
,
540
,
6046
,
239
,
1614
,
1073
,
-
1000
,
1411
,
313
,
712
,
-
163
,
-
1000
,
413
,
6617
,
-
1000
,
-
1000
,
-
1000
,
62
,
391
,
62
,
7011
,
7011
,
4034
,
7011
,
-
1000
,
875
,
629
,
643
,
-
1000
,
-
1000
,
5879
,
490
,
547
,
111
,
7011
,
-
166
,
655
,
204
,
-
1000
,
6539
,
182
,
-
1000
,
-
1000
,
-
1000
,
539
,
-
1000
,
914
,
11039
,
6617
,
-
1000
,
-
1000
,
6617
,
722
,
-
1000
,
-
1000
,
-
1000
,
734
,
10961
,
662
,
-
1000
,
7952
,
10501
,
632
,
-
1000
,
6617
,
-
1000
,
-
1000
,
-
1000
,
712
,
712
,
712
,
539
,
908
,
413
,
198
,
698
,
702
,
732
,
1334
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
756
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
2564
,
-
1000
,
530
,
-
1000
,
720
,
-
1000
,
-
1000
,
714
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
87
,
86
,
73
,
-
1000
,
-
1000
,
10579
,
-
54
,
937
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
716
,
10501
,
-
1000
,
871
,
6539
,
611
,
-
1000
,
-
1000
,
-
1000
,
-
121
,
-
123
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
30
,
428
,
-
30
,
333
,
-
1000
,
-
1000
,
-
1000
,
2744
,
-
1000
,
2744
,
10501
,
39
,
-
1000
,
437
,
-
1000
,
319
,
3080
,
3854
,
2822
,
-
1000
,
715
,
-
1000
,
-
1000
,
-
1000
,
437
,
-
1000
,
-
1000
,
-
1000
,
699
,
731
,
76
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
866
,
-
1000
,
920
,
646
,
-
1000
,
1808
,
-
1000
,
-
1000
,
99
,
550
,
141
,
141
,
-
1000
,
184
,
-
1000
,
-
1000
,
-
1000
,
531
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
7089
,
521
,
622
,
518
,
10731
,
-
1000
,
-
1000
,
571
,
-
1000
,
196
,
-
1000
,
7089
,
-
1000
,
7089
,
7089
,
7089
,
490
,
421
,
413
,
870
,
-
1000
,
-
1000
,
10501
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
712
,
-
1000
,
-
1000
,
648
,
10579
,
10579
,
-
1000
,
10579
,
908
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10501
,
10731
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
413
,
413
,
10579
,
413
,
10579
,
10579
,
10579
,
7794
,
-
1000
,
128
,
-
1000
,
10501
,
10731
,
-
1000
,
251
,
-
1000
,
239
,
-
1000
,
3776
,
-
1000
,
10579
,
-
1000
,
523
,
-
1000
,
155
,
-
1000
,
-
145
,
596
,
122
,
-
1000
,
878
,
9114
,
-
1000
,
-
1000
,
443
,
-
1000
,
7011
,
2320
,
2320
,
-
1000
,
122
,
595
,
566
,
-
1000
,
-
1000
,
-
1000
,
10579
,
712
,
916
,
910
,
-
1000
,
443
,
684
,
684
,
-
1000
,
684
,
697
,
-
1000
,
684
,
-
8
,
-
1000
,
-
1000
,
1538
,
1538
,
1538
,
1538
,
36
,
-
1000
,
-
1000
,
936
,
684
,
-
14
,
443
,
443
,
1891
,
2074
,
-
1000
,
674
,
1978
,
662
,
-
1000
,
712
,
-
1000
,
710
,
104
,
-
1000
,
-
1000
,
-
1000
,
519
,
517
,
-
163
,
-
1000
,
239
,
6539
,
-
1000
,
803
,
560
,
562
,
-
1000
,
-
1000
,
517
,
517
,
140
,
128
,
-
1000
,
415
,
176
,
416
,
-
1000
,
40
,
5801
,
443
,
479
,
114
,
477
,
-
1000
,
871
,
10961
,
6539
,
-
1000
,
10579
,
276
,
868
,
-
1000
,
865
,
714
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
6539
,
695
,
-
1000
,
6539
,
-
1000
,
-
1000
,
-
1000
,
662
,
662
,
-
1000
,
489
,
19
,
-
1000
,
6617
,
6617
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
662
,
477
,
862
,
239
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
2486
,
-
1000
,
490
,
39
,
-
177
,
11039
,
643
,
490
,
10579
,
-
1000
,
-
1000
,
-
1000
,
472
,
-
1000
,
684
,
-
1000
,
-
1000
,
-
1000
,
10501
,
-
56
,
902
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
289
,
-
1000
,
-
1000
,
10809
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
683
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
336
,
-
1000
,
-
1000
,
531
,
650
,
487
,
-
1000
,
10579
,
413
,
639
,
-
32
,
407
,
-
32
,
324
,
-
1000
,
323
,
3002
,
3776
,
2744
,
-
1000
,
-
1000
,
785
,
-
171
,
-
180
,
634
,
-
1000
,
-
1000
,
-
1000
,
713
,
-
1000
,
682
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
836
,
-
1000
,
-
1000
,
875
,
566
,
-
1000
,
-
174
,
-
1000
,
19
,
803
,
-
1000
,
784
,
-
1000
,
10579
,
-
1000
,
-
1000
,
2320
,
-
1000
,
-
1000
,
97
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
15
,
-
175
,
468
,
12
,
-
178
,
744
,
712
,
-
181
,
742
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
7011
,
7011
,
-
1000
,
7011
,
7011
,
7011
,
-
1000
,
930
,
6853
,
-
1000
,
-
1000
,
932
,
192
,
192
,
1538
,
490
,
443
,
406
,
239
,
814
,
-
1000
,
662
,
-
1000
,
-
1000
,
634
,
10501
,
-
1000
,
-
1000
,
-
1000
,
47
,
410
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
10501
,
-
1000
,
10501
,
862
,
-
1000
,
239
,
239
,
10501
,
239
,
10501
,
-
1000
,
10501
,
10501
,
7716
,
-
1000
,
128
,
10501
,
-
1000
,
461
,
-
1000
,
174
,
-
1000
,
-
141
,
532
,
141
,
-
1000
,
141
,
528
,
473
,
-
1000
,
-
1000
,
-
1000
,
10501
,
662
,
873
,
865
,
-
1000
,
-
1000
,
535
,
535
,
535
,
535
,
24
,
-
1000
,
-
1000
,
896
,
-
1000
,
662
,
-
1000
,
619
,
110
,
-
1000
,
-
1000
,
-
1000
,
448
,
446
,
446
,
446
,
129
,
128
,
-
1000
,
435
,
194
,
392
,
-
1000
,
36
,
10501
,
277
,
813
,
-
1000
,
810
,
677
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
442
,
18
,
-
1000
,
6539
,
6539
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
443
,
44
,
-
175
,
10961
,
562
,
443
,
10501
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
312
,
-
1000
,
-
1000
,
10731
,
-
1000
,
-
1000
,
388
,
-
1000
,
-
1000
,
449
,
712
,
421
,
-
1000
,
10501
,
239
,
561
,
-
1000
,
774
,
-
169
,
-
180
,
558
,
-
1000
,
-
1000
,
-
1000
,
673
,
-
1000
,
-
1000
,
-
171
,
-
1000
,
18
,
788
,
-
1000
,
772
,
-
1000
,
10501
,
-
1000
,
-
1000
,
15
,
-
173
,
417
,
13
,
-
178
,
730
,
662
,
-
182
,
728
,
-
1000
,
888
,
6775
,
-
1000
,
-
1000
,
894
,
154
,
154
,
535
,
443
,
-
1000
,
-
1000
,
-
1000
,
43
,
403
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
-
1000
,
}
}
var
yyPgo
=
[
...
]
int
{
var
yyPgo
=
[
...
]
int
{
0
,
1
241
,
44
,
481
,
1239
,
1236
,
1235
,
1227
,
1226
,
1211
,
0
,
1
126
,
28
,
433
,
1125
,
1123
,
1121
,
1120
,
1119
,
1112
,
1
210
,
1209
,
1207
,
1203
,
1201
,
1200
,
1199
,
1197
,
1195
,
11
94
,
1
110
,
1109
,
1107
,
1105
,
1104
,
1102
,
1097
,
1096
,
1095
,
10
94
,
1
190
,
1185
,
1184
,
1183
,
1182
,
146
,
1181
,
1162
,
1161
,
59
,
1
091
,
1089
,
1086
,
1084
,
1081
,
1078
,
133
,
1077
,
1076
,
1075
,
1160
,
77
,
1158
,
1148
,
41
,
122
,
86
,
43
,
894
,
1146
,
61
,
1074
,
77
,
1071
,
1070
,
35
,
156
,
41
,
38
,
1012
,
27
,
71
,
89
,
1145
,
33
,
1144
,
1142
,
78
,
1141
,
55
,
1068
,
21
,
62
,
59
,
1065
,
26
,
1064
,
1061
,
69
,
1059
,
1136
,
1122
,
281
,
1121
,
1120
,
10
,
23
,
1119
,
1116
,
1115
,
48
,
1058
,
1057
,
1180
,
1051
,
1050
,
12
,
40
,
1047
,
1046
,
1
113
,
70
,
38
,
1112
,
1110
,
1109
,
1108
,
1106
,
1094
,
53
,
1
045
,
1041
,
63
,
132
,
1040
,
1039
,
1037
,
1036
,
1033
,
1031
,
7
,
9
,
22
,
18
,
1091
,
28
,
17
,
1089
,
52
,
1086
,
51
,
8
,
11
,
18
,
25
,
1030
,
115
,
9
,
1029
,
50
,
10
85
,
1084
,
1083
,
26
,
1082
,
56
,
1081
,
11
,
51
,
1079
,
10
28
,
1027
,
1026
,
1024
,
23
,
1023
,
57
,
1020
,
43
,
56
,
30
,
60
,
31
,
15
,
6
,
66
,
65
,
1078
,
16
,
69
,
1018
,
7
,
70
,
31
,
15
,
6
,
75
,
65
,
1015
,
14
,
49
,
1077
,
1076
,
381
,
1063
,
1062
,
40
,
1061
,
1058
,
19
,
66
,
42
,
1014
,
1013
,
379
,
1011
,
1010
,
45
,
1008
,
1005
,
189
,
453
,
1054
,
1051
,
1050
,
1049
,
75
,
0
,
538
,
479
,
22
,
175
,
309
,
1003
,
1002
,
1000
,
999
,
37
,
0
,
488
,
64
,
1047
,
1042
,
1041
,
1366
,
73
,
48
,
12
,
1040
,
63
,
463
,
73
,
998
,
996
,
993
,
1166
,
71
,
55
,
20
,
992
,
169
,
35
,
1038
,
1035
,
37
,
1034
,
1032
,
1030
,
1028
,
1027
,
49
,
83
,
44
,
990
,
988
,
34
,
985
,
982
,
981
,
979
,
1024
,
1022
,
20
,
1020
,
1018
,
1017
,
34
,
47
,
1014
,
101
3
,
978
,
975
,
974
,
60
,
971
,
966
,
964
,
99
,
30
,
96
3
,
54
,
21
,
1012
,
1010
,
1009
,
46
,
58
,
1002
,
1000
,
50
,
962
,
64
,
27
,
960
,
959
,
953
,
47
,
58
,
952
,
942
,
29
,
991
,
990
,
975
,
974
,
972
,
25
,
57
,
966
,
13
,
54
,
33
,
941
,
940
,
939
,
938
,
937
,
17
,
19
,
936
,
963
,
8
,
961
,
24
,
960
,
3
,
959
,
14
,
958
,
4
,
13
,
932
,
10
,
928
,
24
,
926
,
3
,
925
,
16
,
92
4
,
957
,
5
,
42
,
1
,
956
,
2
,
955
,
953
,
61
,
290
,
4
,
922
,
5
,
46
,
1
,
920
,
2
,
919
,
916
,
52
,
952
,
950
,
92
,
332
,
915
,
899
,
84
,
}
}
var
yyR1
=
[
...
]
int
{
var
yyR1
=
[
...
]
int
{
0
,
18
6
,
187
,
187
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
18
7
,
188
,
188
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
6
,
3
,
4
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
6
,
3
,
4
,
4
,
5
,
5
,
7
,
7
,
28
,
28
,
8
,
9
,
9
,
4
,
5
,
5
,
7
,
7
,
29
,
29
,
8
,
9
,
9
,
9
,
190
,
190
,
47
,
47
,
91
,
91
,
10
,
10
,
10
,
9
,
191
,
191
,
48
,
48
,
92
,
92
,
10
,
10
,
10
,
10
,
96
,
96
,
100
,
100
,
100
,
101
,
101
,
101
,
101
,
10
,
97
,
97
,
101
,
101
,
101
,
102
,
102
,
102
,
102
,
132
,
132
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
133
,
133
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
11
,
181
,
181
,
180
,
179
,
179
,
178
,
178
,
177
,
17
,
162
,
182
,
182
,
181
,
180
,
180
,
179
,
179
,
178
,
17
,
163
,
164
,
164
,
163
,
163
,
163
,
163
,
156
,
135
,
135
,
135
,
165
,
165
,
164
,
164
,
164
,
164
,
157
,
136
,
136
,
136
,
135
,
138
,
138
,
136
,
136
,
136
,
136
,
136
,
136
,
136
,
136
,
139
,
139
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
137
,
139
,
139
,
139
,
139
,
139
,
138
,
138
,
138
,
138
,
138
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
140
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
140
,
140
,
140
,
140
,
140
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
141
,
142
,
142
,
142
,
142
,
142
,
141
,
141
,
141
,
155
,
155
,
142
,
142
,
150
,
150
,
151
,
142
,
142
,
142
,
156
,
156
,
143
,
143
,
151
,
151
,
152
,
151
,
151
,
148
,
148
,
149
,
149
,
152
,
152
,
152
,
143
,
152
,
152
,
149
,
149
,
150
,
150
,
153
,
153
,
153
,
144
,
143
,
143
,
143
,
143
,
143
,
143
,
143
,
145
,
145
,
145
,
144
,
144
,
144
,
144
,
144
,
144
,
144
,
146
,
146
,
146
,
153
,
153
,
146
,
146
,
146
,
147
,
147
,
147
,
154
,
154
,
154
,
154
,
147
,
147
,
147
,
148
,
148
,
148
,
155
,
155
,
154
,
154
,
154
,
144
,
144
,
157
,
157
,
172
,
172
,
171
,
155
,
155
,
155
,
145
,
145
,
158
,
158
,
173
,
173
,
172
,
171
,
171
,
161
,
161
,
168
,
168
,
168
,
168
,
168
,
159
,
172
,
172
,
162
,
162
,
169
,
169
,
169
,
169
,
169
,
160
,
159
,
160
,
160
,
170
,
170
,
169
,
158
,
158
,
173
,
173
,
160
,
161
,
161
,
171
,
171
,
170
,
159
,
159
,
174
,
174
,
173
,
173
,
184
,
185
,
183
,
183
,
183
,
183
,
183
,
165
,
174
,
174
,
185
,
186
,
184
,
184
,
184
,
184
,
184
,
166
,
165
,
165
,
166
,
166
,
166
,
167
,
167
,
167
,
12
,
12
,
166
,
166
,
167
,
167
,
167
,
168
,
168
,
168
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
182
,
182
,
182
,
12
,
12
,
12
,
12
,
12
,
12
,
12
,
183
,
183
,
183
,
182
,
182
,
182
,
182
,
182
,
182
,
182
,
182
,
176
,
174
,
183
,
183
,
183
,
183
,
183
,
183
,
183
,
183
,
177
,
175
,
174
,
175
,
175
,
13
,
14
,
14
,
14
,
14
,
14
,
15
,
175
,
176
,
176
,
13
,
18
,
18
,
14
,
14
,
14
,
14
,
15
,
18
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
14
,
15
,
15
,
19
,
20
,
20
,
20
,
20
,
20
,
20
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
20
,
107
,
107
,
105
,
105
,
108
,
108
,
106
,
106
,
106
,
109
,
20
,
20
,
108
,
108
,
106
,
106
,
109
,
109
,
107
,
107
,
109
,
109
,
133
,
133
,
133
,
20
,
20
,
22
,
22
,
23
,
107
,
110
,
110
,
110
,
134
,
134
,
134
,
21
,
21
,
23
,
24
,
21
,
21
,
21
,
21
,
21
,
21
,
21
,
16
,
191
,
23
,
24
,
25
,
22
,
22
,
22
,
22
,
22
,
22
,
22
,
25
,
26
,
26
,
27
,
27
,
27
,
31
,
31
,
31
,
29
,
16
,
192
,
26
,
27
,
27
,
28
,
28
,
28
,
32
,
32
,
29
,
30
,
30
,
36
,
36
,
35
,
35
,
37
,
37
,
37
,
32
,
30
,
30
,
31
,
31
,
37
,
37
,
36
,
36
,
38
,
37
,
121
,
121
,
121
,
120
,
120
,
39
,
39
,
40
,
40
,
38
,
38
,
38
,
122
,
122
,
122
,
121
,
121
,
40
,
40
,
41
,
41
,
42
,
42
,
42
,
42
,
54
,
54
,
90
,
90
,
41
,
41
,
42
,
42
,
43
,
43
,
43
,
43
,
55
,
55
,
92
,
92
,
43
,
43
,
43
,
43
,
44
,
44
,
45
,
45
,
91
,
91
,
93
,
93
,
44
,
44
,
44
,
44
,
45
,
45
,
46
,
46
,
128
,
128
,
127
,
127
,
127
,
126
,
126
,
48
,
46
,
46
,
47
,
47
,
129
,
129
,
128
,
128
,
128
,
127
,
48
,
48
,
50
,
49
,
49
,
49
,
49
,
51
,
51
,
53
,
127
,
49
,
49
,
49
,
51
,
50
,
50
,
50
,
50
,
52
,
53
,
52
,
52
,
55
,
55
,
55
,
55
,
56
,
56
,
38
,
52
,
54
,
54
,
53
,
53
,
56
,
56
,
56
,
56
,
57
,
38
,
38
,
38
,
38
,
38
,
38
,
104
,
104
,
58
,
58
,
57
,
39
,
39
,
39
,
39
,
39
,
39
,
39
,
105
,
105
,
57
,
57
,
57
,
57
,
57
,
57
,
57
,
57
,
57
,
57
,
59
,
59
,
58
,
58
,
58
,
58
,
58
,
58
,
58
,
58
,
68
,
68
,
68
,
68
,
68
,
68
,
59
,
59
,
59
,
59
,
58
,
58
,
69
,
69
,
69
,
69
,
69
,
69
,
60
,
60
,
59
,
59
,
59
,
34
,
34
,
69
,
69
,
69
,
75
,
70
,
60
,
60
,
60
,
60
,
60
,
35
,
35
,
70
,
70
,
70
,
70
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
76
,
71
,
71
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
63
,
62
,
62
,
62
,
66
,
66
,
66
,
64
,
64
,
64
,
64
,
63
,
63
,
63
,
63
,
63
,
67
,
67
,
67
,
65
,
65
,
64
,
64
,
64
,
64
,
64
,
64
,
64
,
64
,
64
,
64
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
64
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
65
,
192
,
65
,
65
,
65
,
66
,
66
,
66
,
66
,
66
,
66
,
66
,
192
,
67
,
67
,
67
,
67
,
32
,
32
,
32
,
32
,
32
,
66
,
193
,
193
,
68
,
68
,
68
,
68
,
33
,
33
,
33
,
131
,
131
,
134
,
134
,
134
,
134
,
134
,
134
,
134
,
134
,
33
,
33
,
132
,
132
,
135
,
135
,
135
,
135
,
135
,
135
,
134
,
134
,
134
,
134
,
134
,
79
,
79
,
33
,
33
,
77
,
135
,
135
,
135
,
135
,
135
,
135
,
135
,
80
,
80
,
34
,
77
,
78
,
80
,
80
,
76
,
76
,
76
,
61
,
61
,
61
,
34
,
78
,
78
,
79
,
81
,
81
,
77
,
77
,
77
,
62
,
61
,
61
,
61
,
61
,
61
,
63
,
63
,
63
,
81
,
81
,
62
,
62
,
62
,
62
,
62
,
62
,
62
,
64
,
64
,
64
,
82
,
82
,
83
,
83
,
84
,
84
,
85
,
86
,
86
,
86
,
82
,
82
,
83
,
83
,
84
,
84
,
85
,
85
,
86
,
87
,
87
,
87
,
87
,
87
,
88
,
88
,
88
,
60
,
60
,
60
,
87
,
87
,
88
,
88
,
88
,
88
,
89
,
89
,
89
,
61
,
60
,
60
,
60
,
89
,
89
,
89
,
89
,
93
,
93
,
71
,
61
,
61
,
61
,
61
,
61
,
90
,
90
,
90
,
90
,
94
,
71
,
73
,
73
,
72
,
74
,
94
,
94
,
98
,
95
,
95
,
94
,
72
,
72
,
74
,
74
,
73
,
75
,
95
,
95
,
99
,
99
,
99
,
99
,
99
,
97
,
97
,
97
,
123
,
123
,
123
,
96
,
96
,
100
,
100
,
100
,
100
,
98
,
98
,
98
,
124
,
102
,
102
,
110
,
110
,
111
,
111
,
103
,
103
,
112
,
112
,
124
,
124
,
103
,
103
,
111
,
111
,
112
,
112
,
104
,
104
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
112
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
113
,
114
,
114
,
115
,
115
,
115
,
122
,
122
,
118
,
118
,
114
,
114
,
114
,
115
,
115
,
116
,
116
,
116
,
123
,
123
,
119
,
119
,
124
,
124
,
125
,
125
,
116
,
116
,
116
,
116
,
119
,
119
,
120
,
120
,
125
,
125
,
126
,
126
,
117
,
117
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
...
@@ -2082,9 +2065,18 @@ var yyR1 = [...]int{
...
@@ -2082,9 +2065,18 @@ var yyR1 = [...]int{
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
117
,
188
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
189
,
129
,
130
,
130
,
130
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
118
,
189
,
190
,
130
,
131
,
131
,
131
,
}
}
var
yyR2
=
[
...
]
int
{
var
yyR2
=
[
...
]
int
{
...
@@ -2112,44 +2104,44 @@ var yyR2 = [...]int{
...
@@ -2112,44 +2104,44 @@ var yyR2 = [...]int{
1
,
3
,
1
,
2
,
3
,
1
,
1
,
1
,
6
,
7
,
1
,
3
,
1
,
2
,
3
,
1
,
1
,
1
,
6
,
7
,
7
,
12
,
7
,
7
,
7
,
4
,
5
,
1
,
1
,
1
,
7
,
12
,
7
,
7
,
7
,
4
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
7
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
7
,
1
,
3
,
8
,
8
,
5
,
4
,
6
,
5
,
4
,
4
,
3
,
3
,
8
,
8
,
3
,
3
,
5
,
4
,
6
,
5
,
4
,
2
,
3
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
4
,
3
,
2
,
3
,
4
,
4
,
4
,
4
,
4
,
4
,
3
,
3
,
3
,
3
,
4
,
3
,
7
,
5
,
4
,
2
,
4
,
4
,
3
,
3
,
3
,
3
,
4
,
3
,
7
,
5
,
2
,
4
,
4
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
4
,
2
,
2
,
4
,
4
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
2
,
2
,
0
,
2
,
3
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
2
,
2
,
2
,
0
,
1
,
1
,
2
,
1
,
1
,
2
,
1
,
2
,
0
,
2
,
2
,
0
,
1
,
1
,
2
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
3
,
3
,
2
,
0
,
2
,
1
,
1
,
2
,
2
,
2
,
2
,
2
,
3
,
3
,
2
,
0
,
2
,
1
,
2
,
2
,
0
,
1
,
1
,
0
,
2
,
0
,
2
,
0
,
2
,
1
,
2
,
2
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
3
,
1
,
2
,
3
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
3
,
1
,
5
,
0
,
1
,
2
,
1
,
1
,
0
,
2
,
1
,
3
,
2
,
3
,
5
,
0
,
1
,
2
,
1
,
1
,
0
,
2
,
1
,
1
,
1
,
3
,
1
,
3
,
3
,
7
,
1
,
3
,
1
,
3
,
1
,
1
,
1
,
3
,
1
,
3
,
3
,
7
,
1
,
3
,
4
,
4
,
4
,
3
,
2
,
4
,
0
,
1
,
1
,
3
,
1
,
3
,
4
,
4
,
4
,
3
,
2
,
4
,
0
,
2
,
0
,
1
,
0
,
1
,
2
,
1
,
1
,
1
,
0
,
1
,
0
,
2
,
0
,
1
,
0
,
1
,
2
,
1
,
2
,
2
,
1
,
2
,
3
,
2
,
3
,
2
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
2
,
3
,
2
,
3
,
2
,
1
,
1
,
3
,
0
,
5
,
5
,
5
,
0
,
2
,
1
,
2
,
2
,
1
,
1
,
3
,
0
,
5
,
5
,
5
,
0
,
3
,
3
,
2
,
3
,
1
,
2
,
0
,
3
,
1
,
1
,
2
,
1
,
3
,
3
,
2
,
3
,
1
,
2
,
0
,
3
,
3
,
3
,
4
,
4
,
5
,
3
,
4
,
5
,
6
,
2
,
1
,
1
,
3
,
3
,
4
,
4
,
5
,
3
,
4
,
5
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
6
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
0
,
2
,
1
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
2
,
1
,
1
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
3
,
3
,
3
,
3
,
3
,
1
,
3
,
1
,
1
,
1
,
1
,
1
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
3
,
1
,
3
,
3
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
4
,
5
,
6
,
4
,
4
,
6
,
6
,
3
,
1
,
1
,
1
,
1
,
4
,
5
,
6
,
4
,
4
,
6
,
6
,
8
,
8
,
6
,
8
,
8
,
9
,
7
,
5
,
6
,
6
,
6
,
6
,
8
,
8
,
6
,
8
,
8
,
9
,
4
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
0
,
7
,
5
,
4
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
4
,
4
,
4
,
4
,
0
,
3
,
4
,
7
,
3
,
2
,
0
,
2
,
4
,
4
,
4
,
4
,
0
,
3
,
4
,
1
,
1
,
2
,
3
,
3
,
1
,
2
,
2
,
1
,
2
,
7
,
3
,
1
,
1
,
2
,
3
,
3
,
1
,
2
,
2
,
1
,
2
,
2
,
1
,
2
,
0
,
1
,
0
,
2
,
1
,
1
,
2
,
1
,
2
,
2
,
1
,
2
,
0
,
1
,
0
,
2
,
4
,
0
,
2
,
1
,
3
,
5
,
1
,
1
,
1
,
2
,
1
,
2
,
4
,
0
,
2
,
1
,
3
,
5
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
0
,
3
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
2
,
0
,
2
,
0
,
3
,
1
,
3
,
2
,
0
,
1
,
1
,
0
,
3
,
0
,
2
,
0
,
3
,
1
,
3
,
2
,
0
,
0
,
2
,
4
,
4
,
0
,
2
,
4
,
2
,
1
,
3
,
1
,
1
,
0
,
2
,
4
,
4
,
0
,
2
,
4
,
2
,
5
,
4
,
6
,
1
,
3
,
3
,
5
,
0
,
5
,
1
,
1
,
3
,
5
,
4
,
6
,
1
,
3
,
3
,
5
,
0
,
3
,
1
,
2
,
3
,
1
,
1
,
3
,
3
,
1
,
3
,
5
,
1
,
3
,
1
,
2
,
3
,
1
,
1
,
3
,
3
,
3
,
3
,
3
,
3
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
3
,
3
,
3
,
3
,
3
,
1
,
2
,
1
,
1
,
1
,
1
,
0
,
2
,
0
,
3
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
2
,
0
,
3
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
2
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
...
@@ -2171,19 +2163,19 @@ var yyR2 = [...]int{
...
@@ -2171,19 +2163,19 @@ var yyR2 = [...]int{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
}
}
var
yyChk
=
[
...
]
int
{
var
yyChk
=
[
...
]
int
{
-
1000
,
-
18
6
,
-
1
,
-
2
,
-
6
,
-
7
,
-
8
,
-
9
,
-
10
,
-
11
,
-
1000
,
-
18
7
,
-
1
,
-
2
,
-
6
,
-
7
,
-
8
,
-
9
,
-
10
,
-
11
,
-
12
,
-
13
,
-
14
,
-
15
,
-
1
8
,
-
19
,
-
20
,
-
22
,
-
23
,
-
24
,
-
12
,
-
13
,
-
14
,
-
15
,
-
1
9
,
-
20
,
-
21
,
-
23
,
-
24
,
-
25
,
-
2
1
,
-
16
,
-
3
,
-
4
,
6
,
7
,
-
28
,
9
,
10
,
30
,
-
2
2
,
-
16
,
-
3
,
-
4
,
6
,
7
,
-
29
,
9
,
10
,
30
,
-
17
,
115
,
116
,
118
,
117
,
149
,
119
,
142
,
50
,
162
,
-
17
,
115
,
116
,
118
,
117
,
149
,
119
,
142
,
50
,
162
,
163
,
165
,
166
,
25
,
143
,
144
,
147
,
148
,
31
,
32
,
163
,
165
,
166
,
25
,
143
,
144
,
147
,
148
,
31
,
32
,
121
,
-
18
8
,
8
,
248
,
54
,
-
187
,
263
,
-
83
,
15
,
-
27
,
121
,
-
18
9
,
8
,
248
,
54
,
-
188
,
263
,
-
84
,
15
,
-
28
,
5
,
-
2
5
,
-
191
,
-
25
,
-
25
,
-
25
,
-
25
,
-
25
,
-
162
,
-
164
,
5
,
-
2
6
,
-
192
,
-
26
,
-
26
,
-
26
,
-
26
,
-
26
,
-
163
,
-
165
,
54
,
90
,
-
11
5
,
125
,
72
,
157
,
240
,
122
,
123
,
129
,
54
,
90
,
-
11
6
,
125
,
72
,
157
,
240
,
122
,
123
,
129
,
-
11
8
,
57
,
-
117
,
256
,
135
,
162
,
173
,
167
,
194
,
186
,
-
11
9
,
57
,
-
118
,
256
,
135
,
162
,
173
,
167
,
194
,
186
,
136
,
184
,
187
,
227
,
214
,
224
,
66
,
165
,
236
,
145
,
136
,
184
,
187
,
227
,
214
,
224
,
66
,
165
,
236
,
145
,
182
,
178
,
176
,
27
,
199
,
261
,
177
,
225
,
121
,
138
,
182
,
178
,
176
,
27
,
199
,
261
,
177
,
225
,
121
,
138
,
133
,
200
,
204
,
228
,
171
,
172
,
230
,
198
,
134
,
33
,
133
,
200
,
204
,
228
,
171
,
172
,
230
,
198
,
134
,
33
,
...
@@ -2194,21 +2186,21 @@ var yyChk = [...]int{
...
@@ -2194,21 +2186,21 @@ var yyChk = [...]int{
132
,
163
,
159
,
216
,
190
,
154
,
180
,
181
,
195
,
168
,
132
,
163
,
159
,
216
,
190
,
154
,
180
,
181
,
195
,
168
,
191
,
164
,
156
,
149
,
237
,
212
,
262
,
188
,
185
,
160
,
191
,
164
,
156
,
149
,
237
,
212
,
262
,
188
,
185
,
160
,
158
,
217
,
218
,
219
,
220
,
221
,
161
,
259
,
233
,
183
,
158
,
217
,
218
,
219
,
220
,
221
,
161
,
259
,
233
,
183
,
213
,
-
10
3
,
125
,
127
,
123
,
123
,
124
,
125
,
240
,
122
,
213
,
-
10
4
,
125
,
127
,
123
,
123
,
124
,
125
,
240
,
122
,
123
,
-
5
2
,
-
124
,
57
,
-
117
,
125
,
157
,
123
,
108
,
187
,
123
,
-
5
3
,
-
125
,
57
,
-
118
,
125
,
157
,
123
,
108
,
187
,
115
,
215
,
124
,
33
,
155
,
-
13
3
,
123
,
-
105
,
158
,
214
,
115
,
215
,
124
,
33
,
155
,
-
13
4
,
123
,
-
106
,
158
,
214
,
217
,
218
,
219
,
221
,
220
,
161
,
57
,
229
,
228
,
222
,
217
,
218
,
219
,
221
,
220
,
161
,
57
,
229
,
228
,
222
,
-
12
4
,
164
,
-
129
,
-
129
,
-
129
,
-
129
,
-
129
,
216
,
216
,
-
129
,
-
12
5
,
164
,
-
130
,
-
130
,
-
130
,
-
130
,
-
130
,
216
,
216
,
-
130
,
-
2
,
-
8
7
,
17
,
16
,
-
5
,
-
3
,
-
188
,
6
,
20
,
21
,
-
2
,
-
8
8
,
17
,
16
,
-
5
,
-
3
,
-
189
,
6
,
20
,
21
,
-
3
1
,
40
,
41
,
-
26
,
-
37
,
99
,
-
38
,
-
124
,
-
57
,
74
,
-
3
2
,
40
,
41
,
-
27
,
-
38
,
99
,
-
39
,
-
125
,
-
58
,
74
,
-
6
2
,
29
,
57
,
-
117
,
23
,
-
61
,
-
58
,
-
76
,
-
74
,
-
75
,
-
6
3
,
29
,
57
,
-
118
,
23
,
-
62
,
-
59
,
-
77
,
-
75
,
-
76
,
108
,
109
,
110
,
97
,
98
,
105
,
75
,
111
,
-
6
6
,
-
64
,
108
,
109
,
110
,
97
,
98
,
105
,
75
,
111
,
-
6
7
,
-
65
,
-
6
5
,
-
67
,
59
,
58
,
67
,
60
,
61
,
62
,
63
,
68
,
-
6
6
,
-
68
,
59
,
58
,
67
,
60
,
61
,
62
,
63
,
68
,
69
,
70
,
-
11
8
,
-
72
,
-
188
,
44
,
45
,
249
,
250
,
251
,
69
,
70
,
-
11
9
,
-
73
,
-
189
,
44
,
45
,
249
,
250
,
251
,
252
,
255
,
253
,
77
,
34
,
239
,
247
,
246
,
245
,
243
,
252
,
255
,
253
,
77
,
34
,
239
,
247
,
246
,
245
,
243
,
244
,
241
,
242
,
128
,
240
,
103
,
248
,
-
10
3
,
-
103
,
11
,
244
,
241
,
242
,
128
,
240
,
103
,
248
,
-
10
4
,
-
104
,
11
,
-
4
7
,
-
52
,
-
95
,
-
132
,
164
,
-
99
,
229
,
228
,
-
119
,
-
97
,
-
4
8
,
-
53
,
-
96
,
-
133
,
164
,
-
100
,
229
,
228
,
-
120
,
-
98
,
-
11
8
,
-
116
,
227
,
187
,
226
,
120
,
73
,
22
,
24
,
209
,
-
11
9
,
-
117
,
227
,
187
,
226
,
120
,
73
,
22
,
24
,
209
,
76
,
108
,
16
,
77
,
107
,
249
,
115
,
48
,
241
,
242
,
76
,
108
,
16
,
77
,
107
,
249
,
115
,
48
,
241
,
242
,
239
,
251
,
252
,
240
,
215
,
29
,
10
,
25
,
143
,
21
,
239
,
251
,
252
,
240
,
215
,
29
,
10
,
25
,
143
,
21
,
101
,
117
,
80
,
81
,
146
,
23
,
144
,
70
,
19
,
51
,
101
,
117
,
80
,
81
,
146
,
23
,
144
,
70
,
19
,
51
,
...
@@ -2217,243 +2209,243 @@ var yyChk = [...]int{
...
@@ -2217,243 +2209,243 @@ var yyChk = [...]int{
255
,
150
,
103
,
49
,
36
,
74
,
68
,
71
,
52
,
72
,
255
,
150
,
103
,
49
,
36
,
74
,
68
,
71
,
52
,
72
,
15
,
47
,
91
,
118
,
248
,
45
,
122
,
6
,
254
,
30
,
15
,
47
,
91
,
118
,
248
,
45
,
122
,
6
,
254
,
30
,
142
,
43
,
123
,
79
,
126
,
69
,
5
,
129
,
32
,
9
,
142
,
43
,
123
,
79
,
126
,
69
,
5
,
129
,
32
,
9
,
50
,
53
,
245
,
246
,
247
,
34
,
78
,
12
,
-
16
3
,
90
,
50
,
53
,
245
,
246
,
247
,
34
,
78
,
12
,
-
16
4
,
90
,
-
15
6
,
57
,
-
52
,
124
,
-
52
,
248
,
-
118
,
-
111
,
128
,
-
111
,
-
15
7
,
57
,
-
53
,
124
,
-
53
,
248
,
-
119
,
-
112
,
128
,
-
112
,
-
11
1
,
123
,
-
52
,
-
52
,
-
110
,
128
,
57
,
-
110
,
-
110
,
-
110
,
-
11
2
,
123
,
-
53
,
-
18
,
-
53
,
-
111
,
128
,
57
,
-
111
,
-
111
,
-
52
,
112
,
-
52
,
57
,
30
,
240
,
57
,
155
,
123
,
156
,
-
111
,
-
53
,
112
,
-
53
,
57
,
30
,
240
,
57
,
155
,
123
,
1
25
,
-
130
,
-
188
,
-
119
,
-
130
,
-
130
,
-
130
,
159
,
160
,
-
13
0
,
1
56
,
125
,
-
131
,
-
189
,
-
120
,
-
131
,
-
131
,
-
131
,
159
,
16
0
,
-
1
08
,
-
107
,
224
,
225
,
216
,
223
,
52
,
12
,
-
130
,
-
129
,
-
1
31
,
-
109
,
-
108
,
224
,
225
,
216
,
223
,
52
,
12
,
-
131
,
-
1
29
,
-
189
,
56
,
-
88
,
19
,
31
,
-
38
,
-
124
,
-
84
,
-
85
,
-
1
30
,
-
130
,
-
190
,
56
,
-
89
,
19
,
31
,
-
39
,
-
125
,
-
85
,
-
38
,
-
83
,
-
2
,
-
25
,
36
,
-
29
,
21
,
65
,
11
,
-
12
1
,
-
86
,
-
39
,
-
84
,
-
2
,
-
26
,
36
,
-
30
,
21
,
65
,
1
1
,
73
,
72
,
89
,
-
120
,
22
,
-
118
,
59
,
112
,
-
38
,
-
5
9
,
-
122
,
73
,
72
,
89
,
-
121
,
22
,
-
119
,
59
,
112
,
-
3
9
,
92
,
74
,
90
,
91
,
76
,
94
,
93
,
104
,
97
,
98
,
-
60
,
92
,
74
,
90
,
91
,
76
,
94
,
93
,
104
,
97
,
9
9
,
100
,
101
,
102
,
103
,
95
,
96
,
107
,
82
,
83
,
9
8
,
99
,
100
,
101
,
102
,
103
,
95
,
96
,
107
,
82
,
8
4
,
85
,
86
,
87
,
88
,
-
104
,
-
188
,
-
75
,
-
188
,
113
,
8
3
,
84
,
85
,
86
,
87
,
88
,
-
105
,
-
189
,
-
76
,
-
189
,
11
4
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
188
,
11
3
,
114
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
2
,
-
70
,
-
38
,
-
188
,
-
188
,
-
188
,
-
188
,
-
188
,
-
188
,
-
188
,
-
189
,
-
2
,
-
71
,
-
39
,
-
189
,
-
189
,
-
189
,
-
189
,
-
189
,
-
189
,
-
18
8
,
-
188
,
-
79
,
-
38
,
-
188
,
-
192
,
-
188
,
-
192
,
-
192
,
-
192
,
-
18
9
,
-
189
,
-
189
,
-
80
,
-
39
,
-
189
,
-
193
,
-
189
,
-
193
,
-
193
,
-
19
2
,
-
192
,
-
192
,
-
192
,
-
188
,
-
188
,
-
188
,
-
188
,
-
53
,
26
,
-
19
3
,
-
193
,
-
193
,
-
193
,
-
193
,
-
189
,
-
189
,
-
189
,
-
189
,
-
54
,
-
52
,
-
40
,
-
41
,
-
42
,
-
43
,
-
54
,
-
75
,
-
188
,
-
52
,
-
52
,
26
,
-
53
,
-
41
,
-
42
,
-
43
,
-
44
,
-
55
,
-
76
,
-
189
,
-
53
,
-
47
,
-
190
,
55
,
11
,
53
,
55
,
-
95
,
164
,
-
96
,
-
100
,
-
53
,
-
48
,
-
191
,
55
,
11
,
53
,
55
,
-
96
,
164
,
-
97
,
230
,
232
,
82
,
-
123
,
-
118
,
59
,
29
,
30
,
56
,
55
,
-
101
,
230
,
232
,
82
,
-
124
,
-
119
,
59
,
29
,
30
,
56
,
-
52
,
-
135
,
-
138
,
-
140
,
-
139
,
-
141
,
-
136
,
-
137
,
184
,
185
,
55
,
-
53
,
-
136
,
-
139
,
-
141
,
-
140
,
-
142
,
-
137
,
-
138
,
184
,
1
08
,
188
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
1
85
,
108
,
188
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
19
8
,
199
,
30
,
145
,
180
,
181
,
182
,
183
,
200
,
201
,
19
7
,
198
,
199
,
30
,
145
,
180
,
181
,
182
,
183
,
200
,
20
2
,
203
,
204
,
205
,
206
,
207
,
167
,
168
,
169
,
170
,
20
1
,
202
,
203
,
204
,
205
,
206
,
207
,
167
,
168
,
169
,
17
1
,
172
,
173
,
175
,
176
,
177
,
178
,
179
,
57
,
-
130
,
17
0
,
171
,
172
,
173
,
175
,
176
,
177
,
178
,
179
,
57
,
125
,
-
181
,
53
,
57
,
74
,
57
,
-
52
,
-
52
,
-
130
,
126
,
-
131
,
125
,
-
182
,
53
,
57
,
74
,
57
,
-
53
,
-
53
,
-
131
,
-
52
,
23
,
52
,
-
52
,
57
,
57
,
-
125
,
-
124
,
-
116
,
-
130
,
55
,
126
,
-
48
,
23
,
52
,
-
53
,
57
,
57
,
-
126
,
-
125
,
-
1
30
,
-
130
,
-
130
,
-
130
,
-
130
,
-
130
,
-
130
,
-
130
,
-
130
,
1
1
,
-
1
17
,
-
131
,
-
131
,
-
131
,
-
131
,
-
131
,
-
131
,
-
131
,
-
131
,
-
13
1
,
-
1
06
,
11
,
92
,
-
52
,
-
38
,
9
,
92
,
55
,
18
,
112
,
-
1
31
,
11
,
-
107
,
11
,
92
,
-
53
,
-
39
,
9
,
92
,
55
,
55
,
-
86
,
24
,
25
,
-
87
,
-
189
,
-
31
,
-
63
,
-
118
,
60
,
18
,
112
,
55
,
-
87
,
24
,
25
,
-
88
,
-
190
,
-
32
,
-
64
,
63
,
-
30
,
43
,
-
52
,
-
38
,
-
38
,
-
68
,
68
,
74
,
69
,
-
119
,
60
,
63
,
-
31
,
43
,
-
53
,
-
39
,
-
39
,
-
69
,
68
,
7
0
,
-
120
,
99
,
-
125
,
-
119
,
-
116
,
-
62
,
-
69
,
-
72
,
-
75
,
7
4
,
69
,
70
,
-
121
,
99
,
-
126
,
-
120
,
-
117
,
-
63
,
-
70
,
64
,
92
,
90
,
91
,
76
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
73
,
-
76
,
64
,
92
,
90
,
91
,
76
,
-
63
,
-
63
,
-
63
,
-
6
2
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
6
3
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
63
,
-
131
,
57
,
59
,
57
,
-
61
,
-
61
,
-
118
,
-
36
,
21
,
-
35
,
-
63
,
-
63
,
-
132
,
57
,
59
,
57
,
-
62
,
-
62
,
-
119
,
-
37
,
-
37
,
-
189
,
55
,
-
189
,
-
2
,
-
35
,
-
35
,
-
38
,
-
38
,
-
76
,
21
,
-
36
,
-
38
,
-
190
,
55
,
-
190
,
-
2
,
-
36
,
-
36
,
-
39
,
-
118
,
-
124
,
-
76
,
-
35
,
-
29
,
-
77
,
-
78
,
78
,
-
76
,
-
189
,
-
39
,
-
77
,
-
119
,
-
125
,
-
77
,
-
36
,
-
30
,
-
78
,
-
79
,
78
,
-
35
,
-
36
,
-
35
,
-
35
,
-
91
,
151
,
-
52
,
30
,
55
,
-
48
,
-
77
,
-
190
,
-
36
,
-
37
,
-
36
,
-
36
,
-
92
,
151
,
-
53
,
30
,
-
50
,
-
49
,
-
51
,
42
,
46
,
48
,
43
,
44
,
45
,
49
,
55
,
-
49
,
-
51
,
-
50
,
-
52
,
42
,
46
,
48
,
43
,
44
,
-
128
,
22
,
-
40
,
-
188
,
-
127
,
151
,
-
126
,
22
,
-
124
,
59
,
45
,
49
,
-
129
,
22
,
-
41
,
-
189
,
-
128
,
151
,
-
127
,
22
,
-
91
,
53
,
-
40
,
-
52
,
-
99
,
-
96
,
55
,
231
,
233
,
234
,
-
125
,
59
,
-
92
,
53
,
-
41
,
-
53
,
-
100
,
-
97
,
55
,
231
,
52
,
71
,
-
38
,
-
147
,
107
,
-
165
,
-
166
,
-
167
,
-
119
,
59
,
233
,
234
,
52
,
71
,
-
39
,
-
148
,
107
,
-
166
,
-
167
,
-
168
,
60
,
-
156
,
-
157
,
-
158
,
-
168
,
137
,
-
173
,
130
,
132
,
129
,
-
120
,
59
,
60
,
-
157
,
-
158
,
-
159
,
-
169
,
137
,
-
174
,
130
,
-
159
,
138
,
124
,
28
,
56
,
-
152
,
68
,
74
,
-
148
,
212
,
132
,
129
,
-
160
,
138
,
124
,
28
,
56
,
-
153
,
68
,
74
,
-
14
2
,
54
,
-
142
,
-
142
,
-
142
,
-
142
,
-
146
,
187
,
-
146
,
-
146
,
-
14
9
,
212
,
-
143
,
54
,
-
143
,
-
143
,
-
143
,
-
143
,
-
147
,
187
,
-
14
6
,
54
,
54
,
-
142
,
-
142
,
-
142
,
-
150
,
54
,
-
150
,
-
150
,
-
14
7
,
-
147
,
-
147
,
54
,
54
,
-
143
,
-
143
,
-
143
,
-
151
,
54
,
-
151
,
54
,
-
151
,
-
122
,
53
,
-
52
,
-
179
,
259
,
-
180
,
57
,
-
151
,
-
151
,
-
152
,
54
,
-
152
,
-
123
,
53
,
-
53
,
-
180
,
259
,
-
1
30
,
23
,
-
130
,
-
112
,
120
,
117
,
118
,
-
176
,
116
,
209
,
-
1
81
,
57
,
-
131
,
23
,
-
131
,
-
113
,
120
,
117
,
118
,
-
177
,
1
87
,
66
,
29
,
15
,
249
,
151
,
262
,
57
,
152
,
-
52
,
1
16
,
209
,
187
,
66
,
29
,
15
,
249
,
151
,
262
,
57
,
-
52
,
-
130
,
-
52
,
-
109
,
90
,
12
,
-
124
,
-
124
,
38
,
-
38
,
152
,
-
53
,
-
53
,
-
53
,
-
131
,
-
53
,
-
110
,
90
,
12
,
-
125
,
-
38
,
-
125
,
-
85
,
-
88
,
-
102
,
19
,
11
,
34
,
34
,
-
35
,
-
125
,
38
,
-
39
,
-
39
,
-
126
,
-
86
,
-
89
,
-
103
,
19
,
11
,
68
,
69
,
70
,
112
,
-
188
,
-
69
,
-
62
,
-
62
,
-
62
,
-
34
,
34
,
34
,
-
36
,
68
,
69
,
70
,
112
,
-
189
,
-
70
,
-
63
,
146
,
73
,
-
189
,
-
189
,
-
35
,
55
,
-
38
,
-
189
,
-
189
,
-
18
9
,
-
63
,
-
63
,
-
35
,
146
,
73
,
-
190
,
-
190
,
-
36
,
55
,
-
3
9
,
55
,
53
,
22
,
55
,
11
,
112
,
55
,
11
,
-
189
,
-
3
5
,
-
190
,
-
190
,
-
190
,
55
,
53
,
22
,
55
,
11
,
112
,
5
5
,
-
80
,
-
78
,
80
,
-
38
,
-
189
,
-
189
,
-
189
,
-
189
,
-
189
,
-
6
0
,
11
,
-
190
,
-
36
,
-
81
,
-
79
,
80
,
-
39
,
-
190
,
-
190
,
-
19
0
,
30
,
34
,
-
2
,
-
188
,
-
188
,
-
94
,
-
98
,
-
76
,
-
41
,
-
42
,
-
190
,
-
190
,
-
61
,
30
,
34
,
-
2
,
-
189
,
-
189
,
-
95
,
-
99
,
-
42
,
-
41
,
-
42
,
42
,
42
,
42
,
47
,
42
,
47
,
42
,
-
77
,
-
42
,
-
43
,
-
43
,
-
42
,
-
43
,
42
,
42
,
42
,
47
,
-
49
,
-
124
,
-
189
,
-
55
,
50
,
127
,
51
,
-
188
,
-
126
,
-
56
,
42
,
47
,
42
,
-
50
,
-
125
,
-
190
,
-
56
,
50
,
127
,
51
,
12
,
-
40
,
-
56
,
-
100
,
-
101
,
235
,
232
,
238
,
57
,
59
,
-
189
,
-
127
,
-
57
,
12
,
-
41
,
-
57
,
-
101
,
-
102
,
235
,
232
,
55
,
-
167
,
82
,
54
,
57
,
28
,
-
159
,
-
159
,
-
160
,
57
,
238
,
57
,
59
,
55
,
-
168
,
82
,
54
,
57
,
28
,
-
160
,
-
160
,
28
,
-
143
,
29
,
68
,
-
149
,
213
,
60
,
-
146
,
-
146
,
-
160
,
-
161
,
57
,
-
161
,
28
,
-
144
,
29
,
68
,
-
150
,
213
,
-
147
,
30
,
-
147
,
-
147
,
-
147
,
-
155
,
59
,
-
155
,
60
,
60
,
60
,
-
147
,
-
147
,
-
148
,
30
,
-
148
,
-
148
,
-
148
,
-
156
,
59
,
52
,
-
118
,
-
130
,
-
178
,
-
177
,
-
119
,
-
129
,
-
182
,
157
,
131
,
-
156
,
60
,
60
,
52
,
-
119
,
-
131
,
-
179
,
-
178
,
-
120
,
-
130
,
137
,
138
,
133
,
57
,
124
,
28
,
130
,
132
,
151
,
129
,
-
183
,
157
,
131
,
137
,
138
,
133
,
57
,
124
,
28
,
130
,
-
182
,
157
,
-
113
,
-
114
,
126
,
22
,
124
,
28
,
151
,
-
130
,
132
,
151
,
129
,
-
183
,
157
,
-
114
,
-
115
,
126
,
22
,
124
,
-
106
,
59
,
-
38
,
39
,
112
,
-
52
,
-
39
,
11
,
99
,
-
119
,
28
,
151
,
126
,
-
131
,
-
107
,
59
,
-
39
,
39
,
112
,
-
53
,
-
36
,
-
34
,
73
,
-
62
,
-
62
,
-
189
,
-
37
,
-
134
,
108
,
184
,
-
40
,
11
,
99
,
-
120
,
-
37
,
-
35
,
73
,
-
63
,
-
63
,
-
190
,
145
,
182
,
178
,
198
,
189
,
211
,
180
,
212
,
-
131
,
-
134
,
-
38
,
-
135
,
108
,
184
,
145
,
182
,
178
,
198
,
189
,
211
,
-
62
,
-
62
,
-
119
,
-
62
,
-
62
,
256
,
-
83
,
81
,
-
38
,
79
,
180
,
212
,
-
132
,
-
135
,
-
63
,
-
63
,
-
120
,
-
63
,
-
63
,
256
,
-
93
,
52
,
-
94
,
-
71
,
-
73
,
-
72
,
-
188
,
-
2
,
-
89
,
-
118
,
-
84
,
81
,
-
39
,
79
,
-
94
,
52
,
-
95
,
-
72
,
-
74
,
-
73
,
-
92
,
-
118
,
-
56
,
55
,
82
,
-
45
,
-
44
,
52
,
53
,
-
46
,
-
189
,
-
2
,
-
90
,
-
119
,
-
93
,
-
119
,
-
57
,
55
,
82
,
-
46
,
52
,
-
44
,
42
,
42
,
124
,
124
,
124
,
-
92
,
-
83
,
-
38
,
-
45
,
52
,
53
,
-
47
,
52
,
-
45
,
42
,
42
,
124
,
124
,
-
56
,
232
,
236
,
237
,
-
166
,
-
167
,
-
170
,
-
169
,
-
118
,
-
173
,
124
,
-
93
,
-
84
,
-
39
,
-
57
,
232
,
236
,
237
,
-
167
,
-
168
,
-
1
60
,
-
160
,
54
,
-
145
,
52
,
59
,
60
,
61
,
68
,
23
9
,
-
1
71
,
-
170
,
-
119
,
-
174
,
-
161
,
-
161
,
54
,
-
146
,
52
,
5
9
,
6
7
,
56
,
-
147
,
-
147
,
57
,
108
,
56
,
55
,
56
,
55
,
6
0
,
61
,
68
,
239
,
67
,
56
,
-
148
,
-
148
,
57
,
108
,
56
,
55
,
-
52
,
55
,
82
,
-
129
,
-
118
,
-
129
,
-
118
,
-
52
,
56
,
55
,
56
,
55
,
56
,
55
,
-
53
,
55
,
82
,
-
130
,
-
1
29
,
-
118
,
-
109
,
-
56
,
-
40
,
-
189
,
-
62
,
-
189
,
-
142
,
-
142
,
-
1
19
,
-
130
,
-
119
,
-
53
,
-
130
,
-
119
,
-
53
,
-
110
,
-
57
,
-
41
,
-
1
42
,
-
151
,
-
142
,
172
,
-
142
,
172
,
-
189
,
-
189
,
-
189
,
55
,
-
1
90
,
-
63
,
-
190
,
-
143
,
-
143
,
-
143
,
-
152
,
-
143
,
172
,
-
143
,
1
9
,
-
189
,
55
,
19
,
-
188
,
-
33
,
254
,
-
38
,
27
,
-
93
,
1
72
,
-
190
,
-
190
,
-
190
,
55
,
19
,
-
190
,
55
,
19
,
-
189
,
55
,
-
189
,
-
189
,
-
189
,
55
,
112
,
-
189
,
55
,
-
83
,
-
98
,
-
34
,
254
,
-
39
,
27
,
-
94
,
55
,
-
190
,
-
190
,
-
190
,
55
,
-
38
,
-
38
,
54
,
-
38
,
-
188
,
-
188
,
-
188
,
-
189
,
-
87
,
56
,
112
,
-
190
,
55
,
-
84
,
-
99
,
-
39
,
-
39
,
54
,
-
39
,
-
189
,
55
,
-
142
,
-
90
,
-
118
,
-
153
,
209
,
9
,
54
,
-
146
,
59
,
-
189
,
-
189
,
-
190
,
-
88
,
56
,
55
,
-
143
,
-
91
,
-
119
,
-
154
,
-
146
,
60
,
60
,
-
130
,
-
177
,
-
167
,
54
,
26
,
-
81
,
13
,
209
,
9
,
54
,
-
147
,
59
,
-
147
,
60
,
60
,
-
131
,
-
178
,
-
1
46
,
57
,
-
62
,
-
62
,
-
62
,
-
62
,
-
62
,
-
189
,
59
,
28
,
-
1
68
,
54
,
26
,
-
82
,
13
,
-
147
,
57
,
-
63
,
-
63
,
-
63
,
-
73
,
34
,
-
2
,
-
188
,
-
118
,
-
118
,
-
118
,
-
87
,
-
90
,
-
90
,
-
63
,
-
63
,
-
190
,
59
,
28
,
-
74
,
34
,
-
2
,
-
189
,
-
119
,
-
90
,
-
90
,
-
127
,
-
172
,
-
171
,
53
,
134
,
66
,
-
169
,
56
,
-
119
,
-
119
,
-
88
,
-
91
,
-
91
,
-
91
,
-
91
,
-
128
,
-
173
,
-
172
,
5
5
,
-
154
,
130
,
28
,
129
,
239
,
56
,
-
147
,
-
147
,
56
,
5
3
,
134
,
66
,
-
170
,
56
,
55
,
-
155
,
130
,
28
,
129
,
56
,
-
90
,
-
188
,
-
82
,
14
,
16
,
-
189
,
-
189
,
-
189
,
-
189
,
239
,
56
,
-
148
,
-
148
,
56
,
56
,
-
91
,
-
189
,
-
83
,
14
,
-
32
,
92
,
259
,
9
,
-
71
,
-
2
,
112
,
56
,
-
189
,
-
189
,
16
,
-
190
,
-
190
,
-
190
,
-
190
,
-
33
,
92
,
259
,
9
,
-
72
,
-
189
,
-
55
,
-
171
,
57
,
-
161
,
82
,
59
,
140
,
-
118
,
-
144
,
-
2
,
112
,
56
,
-
190
,
-
190
,
-
190
,
-
56
,
-
172
,
57
,
-
162
,
66
,
28
,
28
,
54
,
56
,
-
174
,
-
175
,
151
,
-
38
,
-
70
,
82
,
59
,
140
,
-
119
,
-
145
,
66
,
28
,
28
,
54
,
56
,
-
1
89
,
257
,
49
,
260
,
-
94
,
-
189
,
-
118
,
60
,
-
52
,
59
,
-
1
75
,
-
176
,
151
,
-
39
,
-
71
,
-
190
,
257
,
49
,
260
,
-
95
,
56
,
-
181
,
-
189
,
55
,
-
118
,
39
,
258
,
261
,
54
,
-
17
9
,
-
190
,
-
119
,
60
,
-
53
,
59
,
56
,
-
182
,
-
190
,
55
,
-
11
9
,
-
175
,
34
,
39
,
-
90
,
153
,
259
,
56
,
154
,
260
,
-
184
,
39
,
258
,
261
,
54
,
-
180
,
-
176
,
34
,
39
,
-
91
,
153
,
-
185
,
52
,
-
188
,
261
,
-
185
,
52
,
10
,
9
,
-
62
,
150
,
259
,
56
,
154
,
260
,
-
185
,
-
186
,
52
,
-
189
,
261
,
-
186
,
-
183
,
141
,
136
,
139
,
30
,
-
183
,
-
189
,
-
189
,
135
,
29
,
52
,
10
,
9
,
-
63
,
150
,
-
184
,
141
,
136
,
139
,
30
,
68
,
-
184
,
-
190
,
-
190
,
135
,
29
,
68
,
}
}
var
yyDef
=
[
...
]
int
{
var
yyDef
=
[
...
]
int
{
23
,
-
2
,
2
,
-
2
,
5
,
6
,
7
,
8
,
9
,
10
,
23
,
-
2
,
2
,
-
2
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
54
2
,
0
,
309
,
309
,
309
,
309
,
309
,
309
,
21
,
22
,
54
4
,
0
,
311
,
311
,
311
,
311
,
311
,
311
,
0
,
61
3
,
596
,
0
,
0
,
0
,
0
,
-
2
,
296
,
297
,
0
,
61
5
,
598
,
0
,
0
,
0
,
0
,
-
2
,
298
,
299
,
0
,
299
,
300
,
831
,
831
,
831
,
831
,
831
,
0
,
0
,
0
,
301
,
302
,
833
,
833
,
833
,
833
,
833
,
0
,
0
,
83
1
,
0
,
35
,
36
,
829
,
1
,
3
,
550
,
0
,
0
,
83
3
,
0
,
35
,
36
,
831
,
1
,
3
,
552
,
0
,
0
,
31
3
,
316
,
311
,
0
,
596
,
596
,
0
,
0
,
62
,
63
,
31
5
,
318
,
313
,
0
,
598
,
598
,
0
,
0
,
62
,
63
,
0
,
0
,
0
,
81
6
,
0
,
817
,
594
,
594
,
594
,
614
,
0
,
0
,
0
,
81
8
,
0
,
819
,
596
,
596
,
596
,
616
,
61
5
,
618
,
619
,
719
,
720
,
721
,
722
,
723
,
724
,
725
,
61
7
,
620
,
621
,
721
,
722
,
723
,
724
,
725
,
726
,
727
,
72
6
,
727
,
728
,
729
,
730
,
731
,
732
,
733
,
734
,
735
,
72
8
,
729
,
730
,
731
,
732
,
733
,
734
,
735
,
736
,
737
,
73
6
,
737
,
738
,
739
,
740
,
741
,
742
,
743
,
744
,
745
,
73
8
,
739
,
740
,
741
,
742
,
743
,
744
,
745
,
746
,
747
,
74
6
,
747
,
748
,
749
,
750
,
751
,
752
,
753
,
754
,
755
,
74
8
,
749
,
750
,
751
,
752
,
753
,
754
,
755
,
756
,
757
,
75
6
,
757
,
758
,
759
,
760
,
761
,
762
,
763
,
764
,
765
,
75
8
,
759
,
760
,
761
,
762
,
763
,
764
,
765
,
766
,
767
,
76
6
,
767
,
768
,
769
,
770
,
771
,
772
,
773
,
774
,
775
,
76
8
,
769
,
770
,
771
,
772
,
773
,
774
,
775
,
776
,
777
,
77
6
,
777
,
778
,
779
,
780
,
781
,
782
,
783
,
784
,
785
,
77
8
,
779
,
780
,
781
,
782
,
783
,
784
,
785
,
786
,
787
,
78
6
,
787
,
788
,
789
,
790
,
791
,
792
,
793
,
794
,
795
,
78
8
,
789
,
790
,
791
,
792
,
793
,
794
,
795
,
796
,
797
,
79
6
,
797
,
798
,
799
,
800
,
801
,
802
,
803
,
804
,
805
,
79
8
,
799
,
800
,
801
,
802
,
803
,
804
,
805
,
806
,
807
,
80
6
,
807
,
808
,
809
,
810
,
811
,
812
,
813
,
814
,
815
,
80
8
,
809
,
810
,
811
,
812
,
813
,
814
,
815
,
816
,
817
,
8
18
,
819
,
820
,
821
,
822
,
823
,
824
,
825
,
826
,
827
,
8
20
,
821
,
822
,
823
,
824
,
825
,
826
,
827
,
828
,
829
,
8
28
,
0
,
0
,
597
,
0
,
592
,
0
,
592
,
592
,
592
,
8
30
,
0
,
0
,
599
,
0
,
594
,
0
,
594
,
594
,
594
,
0
,
25
0
,
381
,
622
,
623
,
816
,
817
,
0
,
0
,
0
,
0
,
25
2
,
383
,
624
,
625
,
818
,
819
,
0
,
0
,
0
,
0
,
83
2
,
832
,
832
,
832
,
0
,
832
,
0
,
269
,
270
,
0
,
83
4
,
834
,
834
,
834
,
0
,
834
,
0
,
271
,
272
,
27
3
,
274
,
275
,
276
,
277
,
278
,
832
,
293
,
294
,
283
,
27
5
,
276
,
277
,
278
,
279
,
280
,
834
,
295
,
296
,
285
,
29
5
,
298
,
301
,
302
,
303
,
304
,
305
,
831
,
831
,
308
,
29
7
,
300
,
303
,
304
,
305
,
306
,
307
,
833
,
833
,
310
,
29
,
55
4
,
0
,
0
,
542
,
31
,
0
,
309
,
314
,
315
,
29
,
55
6
,
0
,
0
,
544
,
31
,
0
,
311
,
316
,
317
,
3
19
,
317
,
318
,
310
,
0
,
327
,
331
,
0
,
389
,
0
,
3
21
,
319
,
320
,
312
,
0
,
329
,
333
,
0
,
391
,
0
,
39
4
,
396
,
-
2
,
-
2
,
0
,
431
,
432
,
433
,
434
,
435
,
39
6
,
398
,
-
2
,
-
2
,
0
,
433
,
434
,
435
,
436
,
437
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
59
,
460
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
61
,
462
,
46
1
,
462
,
527
,
528
,
529
,
530
,
531
,
532
,
533
,
534
,
46
3
,
464
,
529
,
530
,
531
,
532
,
533
,
534
,
535
,
536
,
398
,
399
,
524
,
574
,
0
,
0
,
0
,
0
,
0
,
0
,
400
,
401
,
526
,
576
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
51
5
,
0
,
489
,
489
,
489
,
489
,
489
,
0
,
0
,
0
,
51
7
,
0
,
491
,
491
,
491
,
491
,
491
,
4
89
,
489
,
489
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
91
,
491
,
491
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
43
,
47
,
0
,
80
7
,
578
,
-
2
,
-
2
,
0
,
0
,
0
,
43
,
47
,
0
,
80
9
,
580
,
-
2
,
-
2
,
0
,
0
,
62
0
,
621
,
-
2
,
728
,
-
2
,
626
,
627
,
628
,
629
,
630
,
62
2
,
623
,
-
2
,
730
,
-
2
,
628
,
629
,
630
,
631
,
632
,
63
1
,
632
,
633
,
634
,
635
,
636
,
637
,
638
,
639
,
640
,
63
3
,
634
,
635
,
636
,
637
,
638
,
639
,
640
,
641
,
642
,
64
1
,
642
,
643
,
644
,
645
,
646
,
647
,
648
,
649
,
650
,
64
3
,
644
,
645
,
646
,
647
,
648
,
649
,
650
,
651
,
652
,
65
1
,
652
,
653
,
654
,
655
,
656
,
657
,
658
,
659
,
660
,
65
3
,
654
,
655
,
656
,
657
,
658
,
659
,
660
,
661
,
662
,
66
1
,
662
,
663
,
664
,
665
,
666
,
667
,
668
,
669
,
670
,
66
3
,
664
,
665
,
666
,
667
,
668
,
669
,
670
,
671
,
672
,
67
1
,
672
,
673
,
674
,
675
,
676
,
677
,
678
,
679
,
680
,
67
3
,
674
,
675
,
676
,
677
,
678
,
679
,
680
,
681
,
682
,
68
1
,
682
,
683
,
684
,
685
,
686
,
687
,
688
,
689
,
690
,
68
3
,
684
,
685
,
686
,
687
,
688
,
689
,
690
,
691
,
692
,
69
1
,
692
,
693
,
694
,
695
,
696
,
697
,
698
,
699
,
700
,
69
3
,
694
,
695
,
696
,
697
,
698
,
699
,
700
,
701
,
702
,
70
1
,
702
,
703
,
704
,
705
,
706
,
707
,
708
,
709
,
710
,
70
3
,
704
,
705
,
706
,
707
,
708
,
709
,
710
,
711
,
712
,
71
1
,
712
,
713
,
714
,
715
,
716
,
717
,
718
,
0
,
0
,
71
3
,
714
,
715
,
716
,
717
,
718
,
719
,
720
,
0
,
0
,
82
,
0
,
80
,
0
,
83
2
,
0
,
70
,
0
,
0
,
0
,
82
,
0
,
80
,
0
,
83
4
,
0
,
70
,
0
,
0
,
0
,
0
,
0
,
83
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
83
4
,
243
,
0
,
0
,
0
,
0
,
0
,
0
,
249
,
0
,
251
,
832
,
832
,
832
,
832
,
832
,
832
,
832
,
0
,
251
,
0
,
253
,
834
,
834
,
834
,
834
,
834
,
834
,
83
2
,
260
,
833
,
834
,
261
,
262
,
263
,
832
,
832
,
265
,
83
4
,
834
,
262
,
835
,
836
,
263
,
264
,
265
,
834
,
834
,
0
,
286
,
284
,
285
,
280
,
281
,
0
,
0
,
279
,
306
,
267
,
0
,
288
,
286
,
287
,
282
,
283
,
0
,
0
,
281
,
30
7
,
30
,
830
,
24
,
0
,
0
,
551
,
0
,
543
,
544
,
30
8
,
309
,
30
,
832
,
24
,
0
,
0
,
553
,
0
,
545
,
54
7
,
550
,
29
,
316
,
0
,
321
,
320
,
312
,
0
,
328
,
54
6
,
549
,
552
,
29
,
318
,
0
,
323
,
322
,
314
,
0
,
0
,
0
,
0
,
332
,
0
,
334
,
335
,
0
,
392
,
0
,
330
,
0
,
0
,
0
,
334
,
0
,
336
,
337
,
0
,
394
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
416
,
417
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
418
,
41
8
,
419
,
420
,
421
,
422
,
395
,
0
,
409
,
0
,
0
,
41
9
,
420
,
421
,
422
,
423
,
424
,
397
,
0
,
411
,
0
,
0
,
451
,
452
,
453
,
454
,
455
,
456
,
457
,
0
,
323
,
0
,
0
,
453
,
454
,
455
,
456
,
457
,
458
,
459
,
0
,
29
,
0
,
429
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
325
,
29
,
0
,
431
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
319
,
0
,
516
,
0
,
481
,
0
,
482
,
483
,
484
,
0
,
0
,
321
,
0
,
518
,
0
,
483
,
0
,
484
,
485
,
48
5
,
486
,
487
,
488
,
0
,
323
,
0
,
0
,
45
,
0
,
48
6
,
487
,
488
,
489
,
490
,
0
,
325
,
0
,
0
,
45
,
380
,
0
,
338
,
340
,
341
,
342
,
-
2
,
0
,
364
,
-
2
,
0
,
382
,
0
,
340
,
342
,
343
,
344
,
-
2
,
0
,
366
,
0
,
0
,
0
,
41
,
42
,
0
,
48
,
807
,
50
,
51
,
-
2
,
0
,
0
,
0
,
41
,
42
,
0
,
48
,
809
,
50
,
0
,
0
,
0
,
165
,
587
,
588
,
589
,
585
,
209
,
0
,
51
,
0
,
0
,
0
,
165
,
589
,
590
,
591
,
587
,
209
,
0
,
146
,
142
,
88
,
89
,
90
,
135
,
92
,
135
,
135
,
0
,
0
,
146
,
142
,
88
,
89
,
90
,
135
,
92
,
135
,
135
,
135
,
1
62
,
162
,
162
,
162
,
118
,
119
,
120
,
121
,
135
,
135
,
1
35
,
162
,
162
,
162
,
162
,
118
,
119
,
120
,
12
2
,
0
,
0
,
105
,
135
,
135
,
135
,
109
,
125
,
126
,
12
1
,
122
,
0
,
0
,
105
,
135
,
135
,
135
,
109
,
125
,
12
7
,
128
,
129
,
130
,
131
,
132
,
93
,
94
,
95
,
96
,
12
6
,
127
,
128
,
129
,
130
,
131
,
132
,
93
,
94
,
95
,
9
7
,
98
,
99
,
137
,
137
,
137
,
139
,
139
,
616
,
65
,
9
6
,
97
,
98
,
99
,
137
,
137
,
137
,
139
,
139
,
618
,
0
,
73
,
0
,
832
,
0
,
832
,
78
,
0
,
225
,
0
,
65
,
0
,
73
,
0
,
834
,
0
,
834
,
78
,
0
,
225
,
244
,
593
,
0
,
832
,
247
,
248
,
382
,
624
,
625
,
252
,
0
,
0
,
246
,
595
,
0
,
834
,
249
,
250
,
384
,
626
,
253
,
254
,
255
,
256
,
257
,
258
,
259
,
264
,
268
,
0
,
627
,
254
,
255
,
256
,
257
,
258
,
259
,
260
,
261
,
266
,
2
89
,
0
,
0
,
272
,
271
,
555
,
0
,
0
,
0
,
0
,
2
70
,
0
,
291
,
0
,
0
,
274
,
273
,
557
,
0
,
0
,
0
,
546
,
548
,
549
,
554
,
32
,
319
,
0
,
535
,
0
,
0
,
0
,
0
,
548
,
550
,
551
,
556
,
32
,
321
,
0
,
0
,
0
,
322
,
27
,
390
,
391
,
393
,
410
,
0
,
412
,
537
,
0
,
0
,
0
,
324
,
27
,
392
,
393
,
395
,
412
,
414
,
333
,
329
,
0
,
525
,
-
2
,
400
,
401
,
425
,
426
,
0
,
414
,
416
,
335
,
331
,
0
,
527
,
-
2
,
402
,
403
,
427
,
0
,
0
,
0
,
0
,
423
,
405
,
0
,
436
,
437
,
427
,
428
,
429
,
0
,
0
,
0
,
0
,
425
,
407
,
0
,
438
,
439
,
440
,
441
,
442
,
443
,
444
,
445
,
446
,
447
,
438
,
439
,
440
,
441
,
442
,
443
,
444
,
445
,
446
,
447
,
4
50
,
500
,
501
,
0
,
448
,
449
,
458
,
0
,
0
,
324
,
4
48
,
449
,
452
,
502
,
503
,
0
,
450
,
451
,
460
,
0
,
325
,
428
,
0
,
573
,
29
,
0
,
0
,
0
,
0
,
0
,
0
,
326
,
327
,
430
,
0
,
575
,
29
,
0
,
0
,
0
,
524
,
0
,
0
,
0
,
0
,
522
,
519
,
0
,
0
,
49
0
,
0
,
0
,
526
,
0
,
0
,
0
,
0
,
524
,
521
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
379
,
0
,
0
,
0
,
0
,
492
,
0
,
0
,
0
,
0
,
0
,
0
,
381
,
0
,
0
,
0
,
0
,
369
,
0
,
0
,
372
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
371
,
0
,
0
,
374
,
0
,
0
,
363
,
0
,
0
,
383
,
777
,
365
,
0
,
367
,
368
,
0
,
0
,
0
,
365
,
0
,
0
,
385
,
779
,
367
,
0
,
3
87
,
0
,
387
,
44
,
579
,
49
,
0
,
0
,
54
,
55
,
3
69
,
370
,
389
,
0
,
389
,
44
,
581
,
49
,
0
,
0
,
5
80
,
581
,
582
,
583
,
0
,
79
,
210
,
212
,
215
,
216
,
5
4
,
55
,
582
,
583
,
584
,
585
,
0
,
79
,
210
,
212
,
21
7
,
83
,
84
,
85
,
0
,
0
,
197
,
0
,
0
,
191
,
21
5
,
216
,
217
,
83
,
84
,
85
,
0
,
0
,
197
,
0
,
191
,
0
,
189
,
190
,
81
,
149
,
147
,
0
,
144
,
143
,
0
,
191
,
191
,
0
,
189
,
190
,
81
,
149
,
147
,
0
,
91
,
0
,
162
,
162
,
112
,
113
,
165
,
0
,
165
,
165
,
144
,
143
,
91
,
0
,
162
,
162
,
112
,
113
,
165
,
0
,
165
,
0
,
0
,
106
,
107
,
108
,
100
,
0
,
101
,
102
,
165
,
165
,
165
,
0
,
0
,
106
,
107
,
108
,
100
,
0
,
10
3
,
0
,
104
,
0
,
0
,
832
,
67
,
0
,
71
,
72
,
10
1
,
102
,
103
,
0
,
104
,
0
,
0
,
834
,
67
,
0
,
68
,
595
,
69
,
831
,
0
,
0
,
608
,
226
,
598
,
599
,
71
,
72
,
68
,
597
,
69
,
833
,
0
,
0
,
610
,
226
,
600
,
601
,
602
,
603
,
604
,
605
,
606
,
607
,
0
,
243
,
600
,
601
,
602
,
603
,
604
,
605
,
606
,
607
,
608
,
609
,
832
,
246
,
286
,
267
,
0
,
0
,
287
,
288
,
0
,
552
,
0
,
0
,
244
,
834
,
248
,
288
,
269
,
0
,
0
,
289
,
553
,
0
,
545
,
25
,
0
,
590
,
591
,
536
,
537
,
336
,
290
,
0
,
554
,
555
,
0
,
547
,
25
,
0
,
592
,
593
,
411
,
413
,
415
,
0
,
323
,
402
,
423
,
406
,
0
,
403
,
538
,
539
,
338
,
413
,
415
,
417
,
0
,
325
,
404
,
425
,
0
,
0
,
397
,
463
,
0
,
0
,
430
,
-
2
,
466
,
467
,
408
,
0
,
405
,
0
,
0
,
399
,
465
,
0
,
0
,
432
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
542
,
-
2
,
468
,
469
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
520
,
0
,
0
,
480
,
491
,
492
,
493
,
494
,
567
,
0
,
0
,
544
,
0
,
522
,
0
,
0
,
482
,
493
,
494
,
0
,
0
,
-
2
,
0
,
0
,
387
,
575
,
0
,
339
,
358
,
495
,
496
,
569
,
0
,
0
,
-
2
,
0
,
0
,
389
,
577
,
360
,
0
,
355
,
370
,
371
,
373
,
0
,
375
,
0
,
377
,
0
,
341
,
360
,
362
,
0
,
357
,
372
,
373
,
375
,
0
,
37
8
,
343
,
345
,
346
,
0
,
0
,
0
,
0
,
366
,
542
,
37
7
,
0
,
379
,
380
,
345
,
347
,
348
,
0
,
0
,
0
,
0
,
3
87
,
40
,
52
,
53
,
0
,
0
,
59
,
166
,
167
,
0
,
3
68
,
544
,
0
,
389
,
40
,
52
,
53
,
0
,
0
,
0
,
213
,
0
,
0
,
0
,
184
,
191
,
191
,
187
,
192
,
59
,
166
,
167
,
0
,
213
,
0
,
0
,
0
,
184
,
191
,
1
88
,
0
,
157
,
0
,
148
,
87
,
145
,
0
,
165
,
16
5
,
1
91
,
187
,
192
,
188
,
0
,
157
,
0
,
148
,
87
,
14
5
,
114
,
0
,
115
,
116
,
117
,
0
,
133
,
0
,
0
,
0
,
0
,
165
,
165
,
114
,
0
,
115
,
116
,
117
,
0
,
133
,
0
,
617
,
66
,
74
,
75
,
0
,
218
,
831
,
0
,
227
,
0
,
0
,
0
,
0
,
619
,
66
,
74
,
75
,
0
,
218
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
833
,
0
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
831
,
0
,
0
,
831
,
609
,
610
,
611
,
612
,
0
,
245
,
235
,
236
,
237
,
833
,
0
,
0
,
833
,
611
,
612
,
613
,
289
,
290
,
291
,
556
,
0
,
26
,
387
,
0
,
330
,
5
26
,
614
,
0
,
0
,
247
,
291
,
292
,
293
,
558
,
0
,
26
,
0
,
404
,
0
,
424
,
407
,
464
,
326
,
0
,
135
,
135
,
389
,
0
,
332
,
528
,
0
,
406
,
0
,
426
,
409
,
466
,
505
,
135
,
139
,
508
,
135
,
510
,
135
,
513
,
0
,
0
,
328
,
0
,
135
,
135
,
507
,
135
,
139
,
510
,
135
,
512
,
0
,
0
,
525
,
0
,
0
,
0
,
517
,
479
,
523
,
0
,
135
,
515
,
0
,
0
,
0
,
0
,
527
,
0
,
0
,
0
,
33
,
0
,
567
,
557
,
569
,
571
,
0
,
29
,
0
,
56
3
,
519
,
481
,
525
,
0
,
33
,
0
,
569
,
559
,
571
,
57
3
,
0
,
350
,
542
,
0
,
0
,
352
,
359
,
0
,
0
,
353
,
0
,
29
,
0
,
565
,
0
,
352
,
544
,
0
,
0
,
354
,
0
,
354
,
374
,
376
,
0
,
0
,
0
,
0
,
550
,
388
,
361
,
0
,
0
,
355
,
0
,
356
,
376
,
378
,
0
,
0
,
39
,
56
,
57
,
58
,
211
,
214
,
0
,
193
,
135
,
196
,
0
,
0
,
552
,
390
,
39
,
56
,
57
,
58
,
211
,
214
,
185
,
186
,
0
,
160
,
0
,
150
,
151
,
152
,
153
,
154
,
0
,
193
,
135
,
196
,
185
,
186
,
0
,
160
,
0
,
150
,
15
6
,
136
,
110
,
111
,
163
,
164
,
162
,
0
,
162
,
0
,
15
1
,
152
,
153
,
154
,
156
,
136
,
110
,
111
,
163
,
164
,
1
40
,
0
,
832
,
0
,
0
,
219
,
0
,
220
,
222
,
223
,
1
62
,
0
,
162
,
0
,
140
,
0
,
834
,
0
,
0
,
219
,
224
,
0
,
266
,
538
,
337
,
465
,
408
,
468
,
502
,
162
,
0
,
220
,
222
,
223
,
224
,
0
,
245
,
268
,
540
,
339
,
506
,
507
,
509
,
511
,
512
,
514
,
470
,
469
,
471
,
0
,
467
,
410
,
470
,
504
,
162
,
508
,
509
,
511
,
513
,
514
,
0
,
474
,
0
,
0
,
0
,
0
,
0
,
521
,
0
,
34
,
516
,
472
,
471
,
473
,
0
,
0
,
476
,
0
,
0
,
0
,
0
,
572
,
-
2
,
0
,
0
,
0
,
46
,
0
,
550
,
576
,
0
,
0
,
523
,
0
,
34
,
0
,
574
,
-
2
,
0
,
0
,
577
,
356
,
0
,
361
,
0
,
0
,
0
,
364
,
38
,
176
,
0
,
46
,
0
,
552
,
578
,
579
,
358
,
0
,
363
,
0
,
0
,
195
,
0
,
348
,
168
,
161
,
0
,
0
,
165
,
134
,
0
,
0
,
366
,
38
,
176
,
0
,
195
,
0
,
350
,
168
,
16
5
,
0
,
0
,
64
,
76
,
77
,
0
,
0
,
540
,
0
,
16
1
,
0
,
0
,
165
,
134
,
165
,
0
,
0
,
64
,
76
,
503
,
504
,
0
,
0
,
0
,
0
,
495
,
478
,
518
,
0
,
77
,
0
,
0
,
542
,
0
,
505
,
506
,
0
,
0
,
0
,
570
,
0
,
-
2
,
0
,
565
,
564
,
351
,
37
,
0
,
0
,
0
,
497
,
480
,
520
,
0
,
572
,
0
,
-
2
,
0
,
567
,
0
,
0
,
383
,
175
,
177
,
0
,
182
,
0
,
194
,
0
,
566
,
353
,
37
,
0
,
0
,
0
,
0
,
385
,
175
,
177
,
0
,
1
73
,
0
,
170
,
172
,
158
,
155
,
123
,
124
,
138
,
0
,
1
82
,
0
,
194
,
0
,
0
,
173
,
0
,
170
,
172
,
1
41
,
0
,
0
,
28
,
0
,
0
,
472
,
473
,
475
,
476
,
1
58
,
155
,
123
,
124
,
138
,
141
,
0
,
0
,
28
,
0
,
0
,
0
,
0
,
0
,
560
,
29
,
0
,
357
,
384
,
385
,
0
,
474
,
475
,
477
,
478
,
0
,
0
,
0
,
0
,
562
,
386
,
347
,
178
,
179
,
0
,
183
,
181
,
0
,
349
,
86
,
29
,
0
,
359
,
386
,
387
,
388
,
349
,
178
,
179
,
0
,
0
,
169
,
171
,
0
,
70
,
0
,
239
,
0
,
541
,
539
,
183
,
181
,
0
,
351
,
86
,
0
,
169
,
171
,
0
,
70
,
477
,
0
,
0
,
0
,
568
,
-
2
,
566
,
180
,
0
,
174
,
0
,
239
,
0
,
543
,
541
,
479
,
0
,
0
,
0
,
570
,
159
,
73
,
238
,
0
,
0
,
496
,
0
,
499
,
0
,
221
,
-
2
,
568
,
180
,
0
,
174
,
159
,
73
,
238
,
0
,
0
,
240
,
0
,
497
,
0
,
0
,
0
,
198
,
0
,
0
,
199
,
498
,
0
,
501
,
0
,
221
,
240
,
0
,
499
,
0
,
0
,
200
,
0
,
0
,
498
,
201
,
0
,
0
,
0
,
0
,
0
,
0
,
198
,
0
,
0
,
199
,
200
,
0
,
0
,
500
,
201
,
202
,
204
,
205
,
0
,
0
,
203
,
241
,
242
,
206
,
207
,
0
,
0
,
0
,
0
,
0
,
202
,
204
,
205
,
0
,
0
,
208
,
20
3
,
241
,
242
,
206
,
207
,
20
8
,
}
}
var
yyTok1
=
[
...
]
int
{
var
yyTok1
=
[
...
]
int
{
...
@@ -3132,19 +3124,19 @@ yydefault:
...
@@ -3132,19 +3124,19 @@ yydefault:
//line sql.y:561
//line sql.y:561
{
{
// Change this to an alter statement
// Change this to an alter statement
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
7
]
.
tableName
,
NewName
:
yyDollar
[
7
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
7
]
.
tableName
}
}
}
case
65
:
case
65
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:566
//line sql.y:566
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
CreateStr
,
NewNam
e
:
yyDollar
[
3
]
.
tableName
.
ToViewName
()}
yyVAL
.
statement
=
&
DDL
{
Action
:
CreateStr
,
Tabl
e
:
yyDollar
[
3
]
.
tableName
.
ToViewName
()}
}
}
case
66
:
case
66
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:570
//line sql.y:570
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
CreateStr
,
NewNam
e
:
yyDollar
[
5
]
.
tableName
.
ToViewName
()}
yyVAL
.
statement
=
&
DDL
{
Action
:
CreateStr
,
Tabl
e
:
yyDollar
[
5
]
.
tableName
.
ToViewName
()}
}
}
case
67
:
case
67
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
...
@@ -3222,7 +3214,7 @@ yydefault:
...
@@ -3222,7 +3214,7 @@ yydefault:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:634
//line sql.y:634
{
{
yyVAL
.
ddl
=
&
DDL
{
Action
:
CreateStr
,
NewNam
e
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
ddl
=
&
DDL
{
Action
:
CreateStr
,
Tabl
e
:
yyDollar
[
4
]
.
tableName
}
setDDL
(
yylex
,
yyVAL
.
ddl
)
setDDL
(
yylex
,
yyVAL
.
ddl
)
}
}
case
79
:
case
79
:
...
@@ -4076,19 +4068,19 @@ yydefault:
...
@@ -4076,19 +4068,19 @@ yydefault:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:1292
//line sql.y:1292
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
NewName
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
}
}
}
case
219
:
case
219
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:1296
//line sql.y:1296
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
NewName
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
}
}
}
case
220
:
case
220
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:1300
//line sql.y:1300
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
NewName
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
}
}
}
case
221
:
case
221
:
yyDollar
=
yyS
[
yypt
-
12
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
12
:
yypt
+
1
]
...
@@ -4122,20 +4114,20 @@ yydefault:
...
@@ -4122,20 +4114,20 @@ yydefault:
//line sql.y:1327
//line sql.y:1327
{
{
// Change this to a rename statement
// Change this to a rename statement
yyVAL
.
statement
=
&
DDL
{
Action
:
RenameStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
NewName
:
yyDollar
[
7
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
RenameStr
,
FromTables
:
TableNames
{
yyDollar
[
4
]
.
tableName
},
ToTables
:
TableNames
{
yyDollar
[
7
]
.
tableName
}
}
}
}
case
224
:
case
224
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:1332
//line sql.y:1332
{
{
// Rename an index can just be an alter
// Rename an index can just be an alter
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
NewName
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
4
]
.
tableName
}
}
}
case
225
:
case
225
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:1337
//line sql.y:1337
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
3
]
.
tableName
.
ToViewName
()
,
NewName
:
yyDollar
[
3
]
.
tableName
.
ToViewName
()
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
3
]
.
tableName
.
ToViewName
()}
}
}
case
226
:
case
226
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
...
@@ -4174,162 +4166,176 @@ yydefault:
...
@@ -4174,162 +4166,176 @@ yydefault:
yyVAL
.
partDef
=
&
PartitionDefinition
{
Name
:
yyDollar
[
2
]
.
colIdent
,
Maxvalue
:
true
}
yyVAL
.
partDef
=
&
PartitionDefinition
{
Name
:
yyDollar
[
2
]
.
colIdent
,
Maxvalue
:
true
}
}
}
case
243
:
case
243
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1386
//line sql.y:1386
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
RenameStr
,
Table
:
yyDollar
[
3
]
.
tableName
,
NewName
:
yyDollar
[
5
]
.
tableName
}
yyVAL
.
statement
=
yyDollar
[
3
]
.
ddl
}
}
case
244
:
case
244
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1392
//line sql.y:1392
{
yyVAL
.
ddl
=
&
DDL
{
Action
:
RenameStr
,
FromTables
:
TableNames
{
yyDollar
[
1
]
.
tableName
},
ToTables
:
TableNames
{
yyDollar
[
3
]
.
tableName
}}
}
case
245
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:1396
{
yyVAL
.
ddl
=
yyDollar
[
1
]
.
ddl
yyVAL
.
ddl
.
FromTables
=
append
(
yyVAL
.
ddl
.
FromTables
,
yyDollar
[
3
]
.
tableName
)
yyVAL
.
ddl
.
ToTables
=
append
(
yyVAL
.
ddl
.
ToTables
,
yyDollar
[
5
]
.
tableName
)
}
case
246
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:1404
{
{
var
exists
bool
var
exists
bool
if
yyDollar
[
3
]
.
byt
!=
0
{
if
yyDollar
[
3
]
.
byt
!=
0
{
exists
=
true
exists
=
true
}
}
yyVAL
.
statement
=
&
DDL
{
Action
:
DropStr
,
Table
:
yyDollar
[
4
]
.
tableName
,
IfExists
:
exists
}
yyVAL
.
statement
=
&
DDL
{
Action
:
DropStr
,
FromTables
:
yyDollar
[
4
]
.
tableNames
,
IfExists
:
exists
}
}
}
case
24
5
:
case
24
7
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:14
00
//line sql.y:14
12
{
{
// Change this to an alter statement
// Change this to an alter statement
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
5
]
.
tableName
,
NewName
:
yyDollar
[
5
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
5
]
.
tableName
}
}
}
case
24
6
:
case
24
8
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:14
05
//line sql.y:14
17
{
{
var
exists
bool
var
exists
bool
if
yyDollar
[
3
]
.
byt
!=
0
{
if
yyDollar
[
3
]
.
byt
!=
0
{
exists
=
true
exists
=
true
}
}
yyVAL
.
statement
=
&
DDL
{
Action
:
DropStr
,
Table
:
yyDollar
[
4
]
.
tableName
.
ToViewName
()
,
IfExists
:
exists
}
yyVAL
.
statement
=
&
DDL
{
Action
:
DropStr
,
FromTables
:
TableNames
{
yyDollar
[
4
]
.
tableName
.
ToViewName
()}
,
IfExists
:
exists
}
}
}
case
24
7
:
case
24
9
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
13
//line sql.y:14
25
{
{
yyVAL
.
statement
=
&
DBDDL
{
Action
:
DropStr
,
DBName
:
string
(
yyDollar
[
4
]
.
bytes
)}
yyVAL
.
statement
=
&
DBDDL
{
Action
:
DropStr
,
DBName
:
string
(
yyDollar
[
4
]
.
bytes
)}
}
}
case
2
48
:
case
2
50
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
17
//line sql.y:14
29
{
{
yyVAL
.
statement
=
&
DBDDL
{
Action
:
DropStr
,
DBName
:
string
(
yyDollar
[
4
]
.
bytes
)}
yyVAL
.
statement
=
&
DBDDL
{
Action
:
DropStr
,
DBName
:
string
(
yyDollar
[
4
]
.
bytes
)}
}
}
case
2
49
:
case
2
51
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
23
//line sql.y:14
35
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
TruncateStr
,
Table
:
yyDollar
[
3
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
TruncateStr
,
Table
:
yyDollar
[
3
]
.
tableName
}
}
}
case
25
0
:
case
25
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:14
27
//line sql.y:14
39
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
TruncateStr
,
Table
:
yyDollar
[
2
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
TruncateStr
,
Table
:
yyDollar
[
2
]
.
tableName
}
}
}
case
25
1
:
case
25
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
32
//line sql.y:14
44
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
3
]
.
tableName
,
NewName
:
yyDollar
[
3
]
.
tableName
}
yyVAL
.
statement
=
&
DDL
{
Action
:
AlterStr
,
Table
:
yyDollar
[
3
]
.
tableName
}
}
}
case
25
2
:
case
25
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
38
//line sql.y:14
50
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
25
3
:
case
25
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
42
//line sql.y:14
54
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
25
4
:
case
25
6
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
46
//line sql.y:14
58
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
25
5
:
case
25
7
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
51
//line sql.y:14
63
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
25
6
:
case
25
8
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
55
//line sql.y:14
67
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
25
7
:
case
25
9
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
59
//line sql.y:14
71
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
2
58
:
case
2
60
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
63
//line sql.y:14
75
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
2
59
:
case
2
61
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
67
//line sql.y:14
79
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)
+
" "
+
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
26
0
:
case
26
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
71
//line sql.y:14
83
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
26
1
:
case
26
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
75
//line sql.y:14
87
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
26
2
:
case
26
4
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
79
//line sql.y:14
91
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
26
3
:
case
26
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:14
83
//line sql.y:14
95
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
26
4
:
case
26
6
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:14
87
//line sql.y:14
99
{
{
yyVAL
.
statement
=
&
Show
{
Scope
:
yyDollar
[
2
]
.
str
,
Type
:
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Scope
:
yyDollar
[
2
]
.
str
,
Type
:
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
26
5
:
case
26
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1
491
//line sql.y:1
503
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
26
6
:
case
26
8
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:1
495
//line sql.y:1
507
{
{
showTablesOpt
:=
&
ShowTablesOpt
{
Full
:
yyDollar
[
2
]
.
str
,
DbName
:
yyDollar
[
6
]
.
str
,
Filter
:
yyDollar
[
7
]
.
showFilter
}
showTablesOpt
:=
&
ShowTablesOpt
{
Full
:
yyDollar
[
2
]
.
str
,
DbName
:
yyDollar
[
6
]
.
str
,
Filter
:
yyDollar
[
7
]
.
showFilter
}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
3
]
.
str
),
ShowTablesOpt
:
showTablesOpt
,
OnTable
:
yyDollar
[
5
]
.
tableName
}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
3
]
.
str
),
ShowTablesOpt
:
showTablesOpt
,
OnTable
:
yyDollar
[
5
]
.
tableName
}
}
}
case
26
7
:
case
26
9
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:15
00
//line sql.y:15
12
{
{
// this is ugly, but I couldn't find a better way for now
// this is ugly, but I couldn't find a better way for now
if
yyDollar
[
3
]
.
str
==
"processlist"
{
if
yyDollar
[
3
]
.
str
==
"processlist"
{
...
@@ -4339,650 +4345,650 @@ yydefault:
...
@@ -4339,650 +4345,650 @@ yydefault:
yyVAL
.
statement
=
&
Show
{
Type
:
yyDollar
[
3
]
.
str
,
ShowTablesOpt
:
showTablesOpt
}
yyVAL
.
statement
=
&
Show
{
Type
:
yyDollar
[
3
]
.
str
,
ShowTablesOpt
:
showTablesOpt
}
}
}
}
}
case
2
68
:
case
2
70
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:15
10
//line sql.y:15
22
{
{
yyVAL
.
statement
=
&
Show
{
Scope
:
yyDollar
[
2
]
.
str
,
Type
:
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Scope
:
yyDollar
[
2
]
.
str
,
Type
:
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
2
69
:
case
2
71
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
14
//line sql.y:15
26
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
0
:
case
27
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
18
//line sql.y:15
30
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
1
:
case
27
3
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:15
22
//line sql.y:15
34
{
{
// Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled
// Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled
showCollationFilterOpt
:=
yyDollar
[
4
]
.
expr
showCollationFilterOpt
:=
yyDollar
[
4
]
.
expr
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
),
ShowCollationFilterOpt
:
&
showCollationFilterOpt
}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
),
ShowCollationFilterOpt
:
&
showCollationFilterOpt
}
}
}
case
27
2
:
case
27
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:15
28
//line sql.y:15
40
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
),
OnTable
:
yyDollar
[
4
]
.
tableName
}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
),
OnTable
:
yyDollar
[
4
]
.
tableName
}
}
}
case
27
3
:
case
27
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
32
//line sql.y:15
44
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
4
:
case
27
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
36
//line sql.y:15
48
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
5
:
case
27
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
40
//line sql.y:15
52
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
6
:
case
27
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
44
//line sql.y:15
56
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
27
7
:
case
27
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
48
//line sql.y:15
60
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
2
78
:
case
2
80
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:15
52
//line sql.y:15
64
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
2
79
:
case
2
81
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:15
62
//line sql.y:15
74
{
{
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
statement
=
&
Show
{
Type
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
28
0
:
case
28
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:15
68
//line sql.y:15
80
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
28
1
:
case
28
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:15
72
//line sql.y:15
84
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
28
2
:
case
28
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:15
78
//line sql.y:15
90
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
28
3
:
case
28
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:15
82
//line sql.y:15
94
{
{
yyVAL
.
str
=
"full "
yyVAL
.
str
=
"full "
}
}
case
28
4
:
case
28
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:1
588
//line sql.y:1
600
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
28
5
:
case
28
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:1
592
//line sql.y:1
604
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
28
6
:
case
28
8
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:1
598
//line sql.y:1
610
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
28
7
:
case
28
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
02
//line sql.y:16
14
{
{
yyVAL
.
str
=
yyDollar
[
2
]
.
tableIdent
.
v
yyVAL
.
str
=
yyDollar
[
2
]
.
tableIdent
.
v
}
}
case
2
88
:
case
2
90
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
06
//line sql.y:16
18
{
{
yyVAL
.
str
=
yyDollar
[
2
]
.
tableIdent
.
v
yyVAL
.
str
=
yyDollar
[
2
]
.
tableIdent
.
v
}
}
case
2
89
:
case
2
91
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:16
12
//line sql.y:16
24
{
{
yyVAL
.
showFilter
=
nil
yyVAL
.
showFilter
=
nil
}
}
case
29
0
:
case
29
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
16
//line sql.y:16
28
{
{
yyVAL
.
showFilter
=
&
ShowFilter
{
Like
:
string
(
yyDollar
[
2
]
.
bytes
)}
yyVAL
.
showFilter
=
&
ShowFilter
{
Like
:
string
(
yyDollar
[
2
]
.
bytes
)}
}
}
case
29
1
:
case
29
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
20
//line sql.y:16
32
{
{
yyVAL
.
showFilter
=
&
ShowFilter
{
Filter
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
showFilter
=
&
ShowFilter
{
Filter
:
yyDollar
[
2
]
.
expr
}
}
}
case
29
2
:
case
29
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:16
26
//line sql.y:16
38
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
29
3
:
case
29
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
30
//line sql.y:16
42
{
{
yyVAL
.
str
=
SessionStr
yyVAL
.
str
=
SessionStr
}
}
case
29
4
:
case
29
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
34
//line sql.y:16
46
{
{
yyVAL
.
str
=
GlobalStr
yyVAL
.
str
=
GlobalStr
}
}
case
29
5
:
case
29
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
40
//line sql.y:16
52
{
{
yyVAL
.
statement
=
&
Use
{
DBName
:
yyDollar
[
2
]
.
tableIdent
}
yyVAL
.
statement
=
&
Use
{
DBName
:
yyDollar
[
2
]
.
tableIdent
}
}
}
case
29
6
:
case
29
8
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
44
//line sql.y:16
56
{
{
yyVAL
.
statement
=
&
Use
{
DBName
:
TableIdent
{
v
:
""
}}
yyVAL
.
statement
=
&
Use
{
DBName
:
TableIdent
{
v
:
""
}}
}
}
case
29
7
:
case
29
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
50
//line sql.y:16
62
{
{
yyVAL
.
statement
=
&
Begin
{}
yyVAL
.
statement
=
&
Begin
{}
}
}
case
298
:
case
300
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
54
//line sql.y:16
66
{
{
yyVAL
.
statement
=
&
Begin
{}
yyVAL
.
statement
=
&
Begin
{}
}
}
case
299
:
case
301
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
60
//line sql.y:16
72
{
{
yyVAL
.
statement
=
&
Commit
{}
yyVAL
.
statement
=
&
Commit
{}
}
}
case
30
0
:
case
30
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:16
66
//line sql.y:16
78
{
{
yyVAL
.
statement
=
&
Rollback
{}
yyVAL
.
statement
=
&
Rollback
{}
}
}
case
30
1
:
case
30
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
72
//line sql.y:16
84
{
{
yyVAL
.
statement
=
&
OtherRead
{}
yyVAL
.
statement
=
&
OtherRead
{}
}
}
case
30
2
:
case
30
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
76
//line sql.y:16
88
{
{
yyVAL
.
statement
=
&
OtherRead
{}
yyVAL
.
statement
=
&
OtherRead
{}
}
}
case
30
3
:
case
30
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
80
//line sql.y:16
92
{
{
yyVAL
.
statement
=
&
OtherRead
{}
yyVAL
.
statement
=
&
OtherRead
{}
}
}
case
30
4
:
case
30
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:16
84
//line sql.y:16
96
{
{
yyVAL
.
statement
=
&
OtherAdmin
{}
yyVAL
.
statement
=
&
OtherAdmin
{}
}
}
case
30
5
:
case
30
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:1
688
//line sql.y:1
700
{
{
yyVAL
.
statement
=
&
OtherAdmin
{}
yyVAL
.
statement
=
&
OtherAdmin
{}
}
}
case
30
6
:
case
30
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1
692
//line sql.y:1
704
{
{
yyVAL
.
statement
=
&
OtherAdmin
{}
yyVAL
.
statement
=
&
OtherAdmin
{}
}
}
case
30
7
:
case
30
9
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1
696
//line sql.y:1
708
{
{
yyVAL
.
statement
=
&
OtherAdmin
{}
yyVAL
.
statement
=
&
OtherAdmin
{}
}
}
case
3
08
:
case
3
10
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:17
02
//line sql.y:17
14
{
{
yyVAL
.
statement
=
&
DDL
{
Action
:
FlushStr
}
yyVAL
.
statement
=
&
DDL
{
Action
:
FlushStr
}
}
}
case
3
09
:
case
3
11
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
06
//line sql.y:17
18
{
{
setAllowComments
(
yylex
,
true
)
setAllowComments
(
yylex
,
true
)
}
}
case
31
0
:
case
31
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:17
10
//line sql.y:17
22
{
{
yyVAL
.
bytes2
=
yyDollar
[
2
]
.
bytes2
yyVAL
.
bytes2
=
yyDollar
[
2
]
.
bytes2
setAllowComments
(
yylex
,
false
)
setAllowComments
(
yylex
,
false
)
}
}
case
31
1
:
case
31
3
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
16
//line sql.y:17
28
{
{
yyVAL
.
bytes2
=
nil
yyVAL
.
bytes2
=
nil
}
}
case
31
2
:
case
31
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:17
20
//line sql.y:17
32
{
{
yyVAL
.
bytes2
=
append
(
yyDollar
[
1
]
.
bytes2
,
yyDollar
[
2
]
.
bytes
)
yyVAL
.
bytes2
=
append
(
yyDollar
[
1
]
.
bytes2
,
yyDollar
[
2
]
.
bytes
)
}
}
case
31
3
:
case
31
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
26
//line sql.y:17
38
{
{
yyVAL
.
str
=
UnionStr
yyVAL
.
str
=
UnionStr
}
}
case
31
4
:
case
31
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:17
30
//line sql.y:17
42
{
{
yyVAL
.
str
=
UnionAllStr
yyVAL
.
str
=
UnionAllStr
}
}
case
31
5
:
case
31
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:17
34
//line sql.y:17
46
{
{
yyVAL
.
str
=
UnionDistinctStr
yyVAL
.
str
=
UnionDistinctStr
}
}
case
31
6
:
case
31
8
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
39
//line sql.y:17
51
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
31
7
:
case
31
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
43
//line sql.y:17
55
{
{
yyVAL
.
str
=
SQLNoCacheStr
yyVAL
.
str
=
SQLNoCacheStr
}
}
case
3
18
:
case
3
20
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
47
//line sql.y:17
59
{
{
yyVAL
.
str
=
SQLCacheStr
yyVAL
.
str
=
SQLCacheStr
}
}
case
3
19
:
case
3
21
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
52
//line sql.y:17
64
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
32
0
:
case
32
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
56
//line sql.y:17
68
{
{
yyVAL
.
str
=
DistinctStr
yyVAL
.
str
=
DistinctStr
}
}
case
32
1
:
case
32
3
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
61
//line sql.y:17
73
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
32
2
:
case
32
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
65
//line sql.y:17
77
{
{
yyVAL
.
str
=
StraightJoinHint
yyVAL
.
str
=
StraightJoinHint
}
}
case
32
3
:
case
32
5
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:17
70
//line sql.y:17
82
{
{
yyVAL
.
selectExprs
=
nil
yyVAL
.
selectExprs
=
nil
}
}
case
32
4
:
case
32
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
74
//line sql.y:17
86
{
{
yyVAL
.
selectExprs
=
yyDollar
[
1
]
.
selectExprs
yyVAL
.
selectExprs
=
yyDollar
[
1
]
.
selectExprs
}
}
case
32
5
:
case
32
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:17
80
//line sql.y:17
92
{
{
yyVAL
.
selectExprs
=
SelectExprs
{
yyDollar
[
1
]
.
selectExpr
}
yyVAL
.
selectExprs
=
SelectExprs
{
yyDollar
[
1
]
.
selectExpr
}
}
}
case
32
6
:
case
32
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:17
84
//line sql.y:17
96
{
{
yyVAL
.
selectExprs
=
append
(
yyVAL
.
selectExprs
,
yyDollar
[
3
]
.
selectExpr
)
yyVAL
.
selectExprs
=
append
(
yyVAL
.
selectExprs
,
yyDollar
[
3
]
.
selectExpr
)
}
}
case
32
7
:
case
32
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:1
790
//line sql.y:1
802
{
{
yyVAL
.
selectExpr
=
&
StarExpr
{}
yyVAL
.
selectExpr
=
&
StarExpr
{}
}
}
case
3
28
:
case
3
30
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:1
794
//line sql.y:1
806
{
{
yyVAL
.
selectExpr
=
&
AliasedExpr
{
Expr
:
yyDollar
[
1
]
.
expr
,
As
:
yyDollar
[
2
]
.
colIdent
}
yyVAL
.
selectExpr
=
&
AliasedExpr
{
Expr
:
yyDollar
[
1
]
.
expr
,
As
:
yyDollar
[
2
]
.
colIdent
}
}
}
case
3
29
:
case
3
31
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1
798
//line sql.y:1
810
{
{
yyVAL
.
selectExpr
=
&
StarExpr
{
TableName
:
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
}}
yyVAL
.
selectExpr
=
&
StarExpr
{
TableName
:
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
}}
}
}
case
33
0
:
case
33
2
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:18
02
//line sql.y:18
14
{
{
yyVAL
.
selectExpr
=
&
StarExpr
{
TableName
:
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
}}
yyVAL
.
selectExpr
=
&
StarExpr
{
TableName
:
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
}}
}
}
case
33
1
:
case
33
3
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:18
07
//line sql.y:18
19
{
{
yyVAL
.
colIdent
=
ColIdent
{}
yyVAL
.
colIdent
=
ColIdent
{}
}
}
case
33
2
:
case
33
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
11
//line sql.y:18
23
{
{
yyVAL
.
colIdent
=
yyDollar
[
1
]
.
colIdent
yyVAL
.
colIdent
=
yyDollar
[
1
]
.
colIdent
}
}
case
33
3
:
case
33
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:18
15
//line sql.y:18
27
{
{
yyVAL
.
colIdent
=
yyDollar
[
2
]
.
colIdent
yyVAL
.
colIdent
=
yyDollar
[
2
]
.
colIdent
}
}
case
33
5
:
case
33
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
22
//line sql.y:18
34
{
{
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
33
6
:
case
33
8
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:18
27
//line sql.y:18
39
{
{
yyVAL
.
tableExprs
=
TableExprs
{
&
AliasedTableExpr
{
Expr
:
TableName
{
Name
:
NewTableIdent
(
"dual"
)}}}
yyVAL
.
tableExprs
=
TableExprs
{
&
AliasedTableExpr
{
Expr
:
TableName
{
Name
:
NewTableIdent
(
"dual"
)}}}
}
}
case
33
7
:
case
33
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:18
31
//line sql.y:18
43
{
{
yyVAL
.
tableExprs
=
yyDollar
[
2
]
.
tableExprs
yyVAL
.
tableExprs
=
yyDollar
[
2
]
.
tableExprs
}
}
case
3
38
:
case
3
40
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
37
//line sql.y:18
49
{
{
yyVAL
.
tableExprs
=
TableExprs
{
yyDollar
[
1
]
.
tableExpr
}
yyVAL
.
tableExprs
=
TableExprs
{
yyDollar
[
1
]
.
tableExpr
}
}
}
case
3
39
:
case
3
41
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:18
41
//line sql.y:18
53
{
{
yyVAL
.
tableExprs
=
append
(
yyVAL
.
tableExprs
,
yyDollar
[
3
]
.
tableExpr
)
yyVAL
.
tableExprs
=
append
(
yyVAL
.
tableExprs
,
yyDollar
[
3
]
.
tableExpr
)
}
}
case
34
2
:
case
34
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
51
//line sql.y:18
63
{
{
yyVAL
.
tableExpr
=
yyDollar
[
1
]
.
aliasedTableName
yyVAL
.
tableExpr
=
yyDollar
[
1
]
.
aliasedTableName
}
}
case
34
3
:
case
34
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:18
55
//line sql.y:18
67
{
{
yyVAL
.
tableExpr
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
subquery
,
As
:
yyDollar
[
3
]
.
tableIdent
}
yyVAL
.
tableExpr
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
subquery
,
As
:
yyDollar
[
3
]
.
tableIdent
}
}
}
case
34
4
:
case
34
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
59
//line sql.y:18
71
{
{
// missed alias for subquery
// missed alias for subquery
yylex
.
Error
(
"Every derived table must have its own alias"
)
yylex
.
Error
(
"Every derived table must have its own alias"
)
return
1
return
1
}
}
case
34
5
:
case
34
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:18
65
//line sql.y:18
77
{
{
yyVAL
.
tableExpr
=
&
ParenTableExpr
{
Exprs
:
yyDollar
[
2
]
.
tableExprs
}
yyVAL
.
tableExpr
=
&
ParenTableExpr
{
Exprs
:
yyDollar
[
2
]
.
tableExprs
}
}
}
case
34
6
:
case
34
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:18
71
//line sql.y:18
83
{
{
yyVAL
.
aliasedTableName
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
tableName
,
As
:
yyDollar
[
2
]
.
tableIdent
,
Hints
:
yyDollar
[
3
]
.
indexHints
}
yyVAL
.
aliasedTableName
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
tableName
,
As
:
yyDollar
[
2
]
.
tableIdent
,
Hints
:
yyDollar
[
3
]
.
indexHints
}
}
}
case
34
7
:
case
34
9
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:18
75
//line sql.y:18
87
{
{
yyVAL
.
aliasedTableName
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
tableName
,
Partitions
:
yyDollar
[
4
]
.
partitions
,
As
:
yyDollar
[
6
]
.
tableIdent
,
Hints
:
yyDollar
[
7
]
.
indexHints
}
yyVAL
.
aliasedTableName
=
&
AliasedTableExpr
{
Expr
:
yyDollar
[
1
]
.
tableName
,
Partitions
:
yyDollar
[
4
]
.
partitions
,
As
:
yyDollar
[
6
]
.
tableIdent
,
Hints
:
yyDollar
[
7
]
.
indexHints
}
}
}
case
3
48
:
case
3
50
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:18
81
//line sql.y:18
93
{
{
yyVAL
.
columns
=
Columns
{
yyDollar
[
1
]
.
colIdent
}
yyVAL
.
columns
=
Columns
{
yyDollar
[
1
]
.
colIdent
}
}
}
case
3
49
:
case
3
51
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:18
85
//line sql.y:18
97
{
{
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
3
]
.
colIdent
)
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
3
]
.
colIdent
)
}
}
case
35
0
:
case
35
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:1
891
//line sql.y:1
903
{
{
yyVAL
.
partitions
=
Partitions
{
yyDollar
[
1
]
.
colIdent
}
yyVAL
.
partitions
=
Partitions
{
yyDollar
[
1
]
.
colIdent
}
}
}
case
35
1
:
case
35
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:1
895
//line sql.y:1
907
{
{
yyVAL
.
partitions
=
append
(
yyVAL
.
partitions
,
yyDollar
[
3
]
.
colIdent
)
yyVAL
.
partitions
=
append
(
yyVAL
.
partitions
,
yyDollar
[
3
]
.
colIdent
)
}
}
case
35
2
:
case
35
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:19
08
//line sql.y:19
20
{
{
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
}
}
case
35
3
:
case
35
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:19
12
//line sql.y:19
24
{
{
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
}
}
case
35
4
:
case
35
6
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:19
16
//line sql.y:19
28
{
{
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
,
Condition
:
yyDollar
[
4
]
.
joinCondition
}
}
}
case
35
5
:
case
35
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:19
20
//line sql.y:19
32
{
{
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
}
yyVAL
.
tableExpr
=
&
JoinTableExpr
{
LeftExpr
:
yyDollar
[
1
]
.
tableExpr
,
Join
:
yyDollar
[
2
]
.
str
,
RightExpr
:
yyDollar
[
3
]
.
tableExpr
}
}
}
case
35
6
:
case
35
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:19
26
//line sql.y:19
38
{
{
yyVAL
.
joinCondition
=
JoinCondition
{
On
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
joinCondition
=
JoinCondition
{
On
:
yyDollar
[
2
]
.
expr
}
}
}
case
35
7
:
case
35
9
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:19
28
//line sql.y:19
40
{
{
yyVAL
.
joinCondition
=
JoinCondition
{
Using
:
yyDollar
[
3
]
.
columns
}
yyVAL
.
joinCondition
=
JoinCondition
{
Using
:
yyDollar
[
3
]
.
columns
}
}
}
case
3
58
:
case
3
60
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:19
32
//line sql.y:19
44
{
{
yyVAL
.
joinCondition
=
JoinCondition
{}
yyVAL
.
joinCondition
=
JoinCondition
{}
}
}
case
3
59
:
case
3
61
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
34
//line sql.y:19
46
{
{
yyVAL
.
joinCondition
=
yyDollar
[
1
]
.
joinCondition
yyVAL
.
joinCondition
=
yyDollar
[
1
]
.
joinCondition
}
}
case
36
0
:
case
36
2
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:19
38
//line sql.y:19
50
{
{
yyVAL
.
joinCondition
=
JoinCondition
{}
yyVAL
.
joinCondition
=
JoinCondition
{}
}
}
case
36
1
:
case
36
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:19
40
//line sql.y:19
52
{
{
yyVAL
.
joinCondition
=
JoinCondition
{
On
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
joinCondition
=
JoinCondition
{
On
:
yyDollar
[
2
]
.
expr
}
}
}
case
36
2
:
case
36
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:19
43
//line sql.y:19
55
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
36
3
:
case
36
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
45
//line sql.y:19
57
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
36
4
:
case
36
6
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:19
48
//line sql.y:19
60
{
{
yyVAL
.
tableIdent
=
NewTableIdent
(
""
)
yyVAL
.
tableIdent
=
NewTableIdent
(
""
)
}
}
case
36
5
:
case
36
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
52
//line sql.y:19
64
{
{
yyVAL
.
tableIdent
=
yyDollar
[
1
]
.
tableIdent
yyVAL
.
tableIdent
=
yyDollar
[
1
]
.
tableIdent
}
}
case
36
6
:
case
36
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:19
56
//line sql.y:19
68
{
{
yyVAL
.
tableIdent
=
yyDollar
[
2
]
.
tableIdent
yyVAL
.
tableIdent
=
yyDollar
[
2
]
.
tableIdent
}
}
case
3
68
:
case
3
70
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
63
//line sql.y:19
75
{
{
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
3
69
:
case
3
71
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
69
//line sql.y:19
81
{
{
yyVAL
.
str
=
JoinStr
yyVAL
.
str
=
JoinStr
}
}
case
37
0
:
case
37
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:19
73
//line sql.y:19
85
{
{
yyVAL
.
str
=
JoinStr
yyVAL
.
str
=
JoinStr
}
}
case
37
1
:
case
37
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:19
77
//line sql.y:19
89
{
{
yyVAL
.
str
=
JoinStr
yyVAL
.
str
=
JoinStr
}
}
case
37
2
:
case
37
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:19
83
//line sql.y:19
95
{
{
yyVAL
.
str
=
StraightJoinStr
yyVAL
.
str
=
StraightJoinStr
}
}
case
37
3
:
case
37
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:
1989
//line sql.y:
2001
{
{
yyVAL
.
str
=
LeftJoinStr
yyVAL
.
str
=
LeftJoinStr
}
}
case
37
4
:
case
37
6
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:
1993
//line sql.y:
2005
{
{
yyVAL
.
str
=
LeftJoinStr
yyVAL
.
str
=
LeftJoinStr
}
}
case
37
5
:
case
37
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:
1997
//line sql.y:
2009
{
{
yyVAL
.
str
=
RightJoinStr
yyVAL
.
str
=
RightJoinStr
}
}
case
37
6
:
case
37
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:20
01
//line sql.y:20
13
{
{
yyVAL
.
str
=
RightJoinStr
yyVAL
.
str
=
RightJoinStr
}
}
case
37
7
:
case
37
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:20
07
//line sql.y:20
19
{
{
yyVAL
.
str
=
NaturalJoinStr
yyVAL
.
str
=
NaturalJoinStr
}
}
case
3
78
:
case
3
80
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:20
11
//line sql.y:20
23
{
{
if
yyDollar
[
2
]
.
str
==
LeftJoinStr
{
if
yyDollar
[
2
]
.
str
==
LeftJoinStr
{
yyVAL
.
str
=
NaturalLeftJoinStr
yyVAL
.
str
=
NaturalLeftJoinStr
...
@@ -4990,459 +4996,459 @@ yydefault:
...
@@ -4990,459 +4996,459 @@ yydefault:
yyVAL
.
str
=
NaturalRightJoinStr
yyVAL
.
str
=
NaturalRightJoinStr
}
}
}
}
case
3
79
:
case
3
81
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:20
21
//line sql.y:20
33
{
{
yyVAL
.
tableName
=
yyDollar
[
2
]
.
tableName
yyVAL
.
tableName
=
yyDollar
[
2
]
.
tableName
}
}
case
38
0
:
case
38
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:20
25
//line sql.y:20
37
{
{
yyVAL
.
tableName
=
yyDollar
[
1
]
.
tableName
yyVAL
.
tableName
=
yyDollar
[
1
]
.
tableName
}
}
case
38
1
:
case
38
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:20
31
//line sql.y:20
43
{
{
yyVAL
.
tableName
=
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
}
yyVAL
.
tableName
=
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
}
}
}
case
38
2
:
case
38
4
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:20
35
//line sql.y:20
47
{
{
yyVAL
.
tableName
=
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
}
yyVAL
.
tableName
=
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
}
}
}
case
38
3
:
case
38
5
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:20
40
//line sql.y:20
52
{
{
yyVAL
.
indexHints
=
nil
yyVAL
.
indexHints
=
nil
}
}
case
38
4
:
case
38
6
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:20
44
//line sql.y:20
56
{
{
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
UseStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
UseStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
}
}
case
38
5
:
case
38
7
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:20
48
//line sql.y:20
60
{
{
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
IgnoreStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
IgnoreStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
}
}
case
38
6
:
case
38
8
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:20
52
//line sql.y:20
64
{
{
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
ForceStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
yyVAL
.
indexHints
=
&
IndexHints
{
Type
:
ForceStr
,
Indexes
:
yyDollar
[
4
]
.
columns
}
}
}
case
38
7
:
case
38
9
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:20
57
//line sql.y:20
69
{
{
yyVAL
.
expr
=
nil
yyVAL
.
expr
=
nil
}
}
case
3
88
:
case
3
90
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:20
61
//line sql.y:20
73
{
{
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
}
}
case
3
89
:
case
3
91
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:20
67
//line sql.y:20
79
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
}
}
case
39
0
:
case
39
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:20
71
//line sql.y:20
83
{
{
yyVAL
.
expr
=
&
AndExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
AndExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
39
1
:
case
39
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:20
75
//line sql.y:20
87
{
{
yyVAL
.
expr
=
&
OrExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
OrExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
39
2
:
case
39
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:20
79
//line sql.y:20
91
{
{
yyVAL
.
expr
=
&
NotExpr
{
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
NotExpr
{
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
39
3
:
case
39
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:20
83
//line sql.y:20
95
{
{
yyVAL
.
expr
=
&
IsExpr
{
Operator
:
yyDollar
[
3
]
.
str
,
Expr
:
yyDollar
[
1
]
.
expr
}
yyVAL
.
expr
=
&
IsExpr
{
Operator
:
yyDollar
[
3
]
.
str
,
Expr
:
yyDollar
[
1
]
.
expr
}
}
}
case
39
4
:
case
39
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:20
87
//line sql.y:20
99
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
}
}
case
39
5
:
case
39
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
091
//line sql.y:2
103
{
{
yyVAL
.
expr
=
&
Default
{
ColName
:
yyDollar
[
2
]
.
str
}
yyVAL
.
expr
=
&
Default
{
ColName
:
yyDollar
[
2
]
.
str
}
}
}
case
39
6
:
case
39
8
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:2
097
//line sql.y:2
109
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
39
7
:
case
39
9
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:21
01
//line sql.y:21
13
{
{
yyVAL
.
str
=
string
(
yyDollar
[
2
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
2
]
.
bytes
)
}
}
case
398
:
case
400
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
07
//line sql.y:21
19
{
{
yyVAL
.
boolVal
=
BoolVal
(
true
)
yyVAL
.
boolVal
=
BoolVal
(
true
)
}
}
case
399
:
case
401
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
11
//line sql.y:21
23
{
{
yyVAL
.
boolVal
=
BoolVal
(
false
)
yyVAL
.
boolVal
=
BoolVal
(
false
)
}
}
case
40
0
:
case
40
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:21
17
//line sql.y:21
29
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
yyDollar
[
2
]
.
str
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
yyDollar
[
2
]
.
str
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
40
1
:
case
40
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:21
21
//line sql.y:21
33
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
InStr
,
Right
:
yyDollar
[
3
]
.
colTuple
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
InStr
,
Right
:
yyDollar
[
3
]
.
colTuple
}
}
}
case
40
2
:
case
40
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:21
25
//line sql.y:21
37
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotInStr
,
Right
:
yyDollar
[
4
]
.
colTuple
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotInStr
,
Right
:
yyDollar
[
4
]
.
colTuple
}
}
}
case
40
3
:
case
40
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:21
29
//line sql.y:21
41
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
LikeStr
,
Right
:
yyDollar
[
3
]
.
expr
,
Escape
:
yyDollar
[
4
]
.
expr
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
LikeStr
,
Right
:
yyDollar
[
3
]
.
expr
,
Escape
:
yyDollar
[
4
]
.
expr
}
}
}
case
40
4
:
case
40
6
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:21
33
//line sql.y:21
45
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotLikeStr
,
Right
:
yyDollar
[
4
]
.
expr
,
Escape
:
yyDollar
[
5
]
.
expr
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotLikeStr
,
Right
:
yyDollar
[
4
]
.
expr
,
Escape
:
yyDollar
[
5
]
.
expr
}
}
}
case
40
5
:
case
40
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:21
37
//line sql.y:21
49
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
RegexpStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
RegexpStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
40
6
:
case
40
8
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:21
41
//line sql.y:21
53
{
{
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotRegexpStr
,
Right
:
yyDollar
[
4
]
.
expr
}
yyVAL
.
expr
=
&
ComparisonExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotRegexpStr
,
Right
:
yyDollar
[
4
]
.
expr
}
}
}
case
40
7
:
case
40
9
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:21
45
//line sql.y:21
57
{
{
yyVAL
.
expr
=
&
RangeCond
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BetweenStr
,
From
:
yyDollar
[
3
]
.
expr
,
To
:
yyDollar
[
5
]
.
expr
}
yyVAL
.
expr
=
&
RangeCond
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BetweenStr
,
From
:
yyDollar
[
3
]
.
expr
,
To
:
yyDollar
[
5
]
.
expr
}
}
}
case
4
08
:
case
4
10
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:21
49
//line sql.y:21
61
{
{
yyVAL
.
expr
=
&
RangeCond
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotBetweenStr
,
From
:
yyDollar
[
4
]
.
expr
,
To
:
yyDollar
[
6
]
.
expr
}
yyVAL
.
expr
=
&
RangeCond
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
NotBetweenStr
,
From
:
yyDollar
[
4
]
.
expr
,
To
:
yyDollar
[
6
]
.
expr
}
}
}
case
4
09
:
case
4
11
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:21
53
//line sql.y:21
65
{
{
yyVAL
.
expr
=
&
ExistsExpr
{
Subquery
:
yyDollar
[
2
]
.
subquery
}
yyVAL
.
expr
=
&
ExistsExpr
{
Subquery
:
yyDollar
[
2
]
.
subquery
}
}
}
case
41
0
:
case
41
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
59
//line sql.y:21
71
{
{
yyVAL
.
str
=
IsNullStr
yyVAL
.
str
=
IsNullStr
}
}
case
41
1
:
case
41
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:21
63
//line sql.y:21
75
{
{
yyVAL
.
str
=
IsNotNullStr
yyVAL
.
str
=
IsNotNullStr
}
}
case
41
2
:
case
41
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
67
//line sql.y:21
79
{
{
yyVAL
.
str
=
IsTrueStr
yyVAL
.
str
=
IsTrueStr
}
}
case
41
3
:
case
41
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:21
71
//line sql.y:21
83
{
{
yyVAL
.
str
=
IsNotTrueStr
yyVAL
.
str
=
IsNotTrueStr
}
}
case
41
4
:
case
41
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
75
//line sql.y:21
87
{
{
yyVAL
.
str
=
IsFalseStr
yyVAL
.
str
=
IsFalseStr
}
}
case
41
5
:
case
41
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:21
79
//line sql.y:21
91
{
{
yyVAL
.
str
=
IsNotFalseStr
yyVAL
.
str
=
IsNotFalseStr
}
}
case
41
6
:
case
41
8
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:21
85
//line sql.y:21
97
{
{
yyVAL
.
str
=
EqualStr
yyVAL
.
str
=
EqualStr
}
}
case
41
7
:
case
41
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
189
//line sql.y:2
201
{
{
yyVAL
.
str
=
LessThanStr
yyVAL
.
str
=
LessThanStr
}
}
case
4
18
:
case
4
20
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
193
//line sql.y:2
205
{
{
yyVAL
.
str
=
GreaterThanStr
yyVAL
.
str
=
GreaterThanStr
}
}
case
4
19
:
case
4
21
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
197
//line sql.y:2
209
{
{
yyVAL
.
str
=
LessEqualStr
yyVAL
.
str
=
LessEqualStr
}
}
case
42
0
:
case
42
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
01
//line sql.y:22
13
{
{
yyVAL
.
str
=
GreaterEqualStr
yyVAL
.
str
=
GreaterEqualStr
}
}
case
42
1
:
case
42
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
05
//line sql.y:22
17
{
{
yyVAL
.
str
=
NotEqualStr
yyVAL
.
str
=
NotEqualStr
}
}
case
42
2
:
case
42
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
09
//line sql.y:22
21
{
{
yyVAL
.
str
=
NullSafeEqualStr
yyVAL
.
str
=
NullSafeEqualStr
}
}
case
42
3
:
case
42
5
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:22
14
//line sql.y:22
26
{
{
yyVAL
.
expr
=
nil
yyVAL
.
expr
=
nil
}
}
case
42
4
:
case
42
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:22
18
//line sql.y:22
30
{
{
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
}
}
case
42
5
:
case
42
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
24
//line sql.y:22
36
{
{
yyVAL
.
colTuple
=
yyDollar
[
1
]
.
valTuple
yyVAL
.
colTuple
=
yyDollar
[
1
]
.
valTuple
}
}
case
42
6
:
case
42
8
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
28
//line sql.y:22
40
{
{
yyVAL
.
colTuple
=
yyDollar
[
1
]
.
subquery
yyVAL
.
colTuple
=
yyDollar
[
1
]
.
subquery
}
}
case
42
7
:
case
42
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
32
//line sql.y:22
44
{
{
yyVAL
.
colTuple
=
ListArg
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
colTuple
=
ListArg
(
yyDollar
[
1
]
.
bytes
)
}
}
case
4
28
:
case
4
30
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
38
//line sql.y:22
50
{
{
yyVAL
.
subquery
=
&
Subquery
{
yyDollar
[
2
]
.
selStmt
}
yyVAL
.
subquery
=
&
Subquery
{
yyDollar
[
2
]
.
selStmt
}
}
}
case
4
29
:
case
4
31
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
44
//line sql.y:22
56
{
{
yyVAL
.
exprs
=
Exprs
{
yyDollar
[
1
]
.
expr
}
yyVAL
.
exprs
=
Exprs
{
yyDollar
[
1
]
.
expr
}
}
}
case
43
0
:
case
43
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
48
//line sql.y:22
60
{
{
yyVAL
.
exprs
=
append
(
yyDollar
[
1
]
.
exprs
,
yyDollar
[
3
]
.
expr
)
yyVAL
.
exprs
=
append
(
yyDollar
[
1
]
.
exprs
,
yyDollar
[
3
]
.
expr
)
}
}
case
43
1
:
case
43
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
54
//line sql.y:22
66
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
}
}
case
43
2
:
case
43
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
58
//line sql.y:22
70
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
boolVal
yyVAL
.
expr
=
yyDollar
[
1
]
.
boolVal
}
}
case
43
3
:
case
43
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
62
//line sql.y:22
74
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
colName
yyVAL
.
expr
=
yyDollar
[
1
]
.
colName
}
}
case
43
4
:
case
43
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
66
//line sql.y:22
78
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
}
}
case
43
5
:
case
43
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:22
70
//line sql.y:22
82
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
subquery
yyVAL
.
expr
=
yyDollar
[
1
]
.
subquery
}
}
case
43
6
:
case
43
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
74
//line sql.y:22
86
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitAndStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitAndStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
43
7
:
case
43
9
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
78
//line sql.y:22
90
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitOrStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitOrStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
4
38
:
case
4
40
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
82
//line sql.y:22
94
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitXorStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
BitXorStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
4
39
:
case
4
41
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:22
86
//line sql.y:22
98
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
PlusStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
PlusStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
0
:
case
44
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:2
290
//line sql.y:2
302
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
MinusStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
MinusStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
1
:
case
44
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:2
294
//line sql.y:2
306
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
MultStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
MultStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
2
:
case
44
4
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:2
298
//line sql.y:2
310
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
DivStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
DivStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
3
:
case
44
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
02
//line sql.y:23
14
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
IntDivStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
IntDivStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
4
:
case
44
6
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
06
//line sql.y:23
18
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ModStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ModStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
5
:
case
44
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
10
//line sql.y:23
22
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ModStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ModStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
6
:
case
44
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
14
//line sql.y:23
26
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ShiftLeftStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ShiftLeftStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
44
7
:
case
44
9
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
18
//line sql.y:23
30
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ShiftRightStr
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
expr
,
Operator
:
ShiftRightStr
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
4
48
:
case
4
50
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
22
//line sql.y:23
34
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
colName
,
Operator
:
JSONExtractOp
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
colName
,
Operator
:
JSONExtractOp
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
4
49
:
case
4
51
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
26
//line sql.y:23
38
{
{
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
colName
,
Operator
:
JSONUnquoteExtractOp
,
Right
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
expr
=
&
BinaryExpr
{
Left
:
yyDollar
[
1
]
.
colName
,
Operator
:
JSONUnquoteExtractOp
,
Right
:
yyDollar
[
3
]
.
expr
}
}
}
case
45
0
:
case
45
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
30
//line sql.y:23
42
{
{
yyVAL
.
expr
=
&
CollateExpr
{
Expr
:
yyDollar
[
1
]
.
expr
,
Charset
:
yyDollar
[
3
]
.
str
}
yyVAL
.
expr
=
&
CollateExpr
{
Expr
:
yyDollar
[
1
]
.
expr
,
Charset
:
yyDollar
[
3
]
.
str
}
}
}
case
45
1
:
case
45
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
34
//line sql.y:23
46
{
{
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
BinaryStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
BinaryStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
45
2
:
case
45
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
38
//line sql.y:23
50
{
{
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UBinaryStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UBinaryStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
45
3
:
case
45
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
42
//line sql.y:23
54
{
{
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
Utf8mb4Str
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
Utf8mb4Str
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
45
4
:
case
45
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
46
//line sql.y:23
58
{
{
if
num
,
ok
:=
yyDollar
[
2
]
.
expr
.
(
*
SQLVal
);
ok
&&
num
.
Type
==
IntVal
{
if
num
,
ok
:=
yyDollar
[
2
]
.
expr
.
(
*
SQLVal
);
ok
&&
num
.
Type
==
IntVal
{
yyVAL
.
expr
=
num
yyVAL
.
expr
=
num
...
@@ -5450,9 +5456,9 @@ yydefault:
...
@@ -5450,9 +5456,9 @@ yydefault:
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UPlusStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UPlusStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
}
}
case
45
5
:
case
45
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
54
//line sql.y:23
66
{
{
if
num
,
ok
:=
yyDollar
[
2
]
.
expr
.
(
*
SQLVal
);
ok
&&
num
.
Type
==
IntVal
{
if
num
,
ok
:=
yyDollar
[
2
]
.
expr
.
(
*
SQLVal
);
ok
&&
num
.
Type
==
IntVal
{
// Handle double negative
// Handle double negative
...
@@ -5466,21 +5472,21 @@ yydefault:
...
@@ -5466,21 +5472,21 @@ yydefault:
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UMinusStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
UMinusStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
}
}
case
45
6
:
case
45
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
68
//line sql.y:23
80
{
{
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
TildaStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
TildaStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
45
7
:
case
45
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:23
72
//line sql.y:23
84
{
{
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
BangStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
expr
=
&
UnaryExpr
{
Operator
:
BangStr
,
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
4
58
:
case
4
60
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:23
76
//line sql.y:23
88
{
{
// This rule prevents the usage of INTERVAL
// This rule prevents the usage of INTERVAL
// as a function. If support is needed for that,
// as a function. If support is needed for that,
...
@@ -5488,431 +5494,431 @@ yydefault:
...
@@ -5488,431 +5494,431 @@ yydefault:
// will be non-trivial because of grammar conflicts.
// will be non-trivial because of grammar conflicts.
yyVAL
.
expr
=
&
IntervalExpr
{
Expr
:
yyDollar
[
2
]
.
expr
,
Unit
:
yyDollar
[
3
]
.
colIdent
.
String
()}
yyVAL
.
expr
=
&
IntervalExpr
{
Expr
:
yyDollar
[
2
]
.
expr
,
Unit
:
yyDollar
[
3
]
.
colIdent
.
String
()}
}
}
case
46
3
:
case
46
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:2
394
//line sql.y:2
406
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
46
4
:
case
46
6
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:2
398
//line sql.y:2
410
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Distinct
:
true
,
Exprs
:
yyDollar
[
4
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Distinct
:
true
,
Exprs
:
yyDollar
[
4
]
.
selectExprs
}
}
}
case
46
5
:
case
46
7
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
02
//line sql.y:24
14
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
colIdent
,
Exprs
:
yyDollar
[
5
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
colIdent
,
Exprs
:
yyDollar
[
5
]
.
selectExprs
}
}
}
case
46
6
:
case
46
8
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:24
12
//line sql.y:24
24
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"left"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"left"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
46
7
:
case
46
9
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:24
16
//line sql.y:24
28
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"right"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"right"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
4
68
:
case
4
70
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
20
//line sql.y:24
32
{
{
yyVAL
.
expr
=
&
ConvertExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
convertType
}
yyVAL
.
expr
=
&
ConvertExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
convertType
}
}
}
case
4
69
:
case
4
71
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
24
//line sql.y:24
36
{
{
yyVAL
.
expr
=
&
ConvertExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
convertType
}
yyVAL
.
expr
=
&
ConvertExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
convertType
}
}
}
case
47
0
:
case
47
2
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
28
//line sql.y:24
40
{
{
yyVAL
.
expr
=
&
ConvertUsingExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
str
}
yyVAL
.
expr
=
&
ConvertUsingExpr
{
Expr
:
yyDollar
[
3
]
.
expr
,
Type
:
yyDollar
[
5
]
.
str
}
}
}
case
47
1
:
case
47
3
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
32
//line sql.y:24
44
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
nil
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
nil
}
}
}
case
47
2
:
case
47
4
:
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
//line sql.y:24
36
//line sql.y:24
48
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
}
}
case
47
3
:
case
47
5
:
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
//line sql.y:24
40
//line sql.y:24
52
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
}
}
case
47
4
:
case
47
6
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:24
44
//line sql.y:24
56
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
nil
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
nil
}
}
}
case
47
5
:
case
47
7
:
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
//line sql.y:24
48
//line sql.y:24
60
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
}
}
case
47
6
:
case
47
8
:
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
8
:
yypt
+
1
]
//line sql.y:24
52
//line sql.y:24
64
{
{
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
yyVAL
.
expr
=
&
SubstrExpr
{
Name
:
yyDollar
[
3
]
.
colName
,
From
:
yyDollar
[
5
]
.
expr
,
To
:
yyDollar
[
7
]
.
expr
}
}
}
case
47
7
:
case
47
9
:
yyDollar
=
yyS
[
yypt
-
9
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
9
:
yypt
+
1
]
//line sql.y:24
56
//line sql.y:24
68
{
{
yyVAL
.
expr
=
&
MatchExpr
{
Columns
:
yyDollar
[
3
]
.
selectExprs
,
Expr
:
yyDollar
[
7
]
.
expr
,
Option
:
yyDollar
[
8
]
.
str
}
yyVAL
.
expr
=
&
MatchExpr
{
Columns
:
yyDollar
[
3
]
.
selectExprs
,
Expr
:
yyDollar
[
7
]
.
expr
,
Option
:
yyDollar
[
8
]
.
str
}
}
}
case
4
78
:
case
4
80
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:24
60
//line sql.y:24
72
{
{
yyVAL
.
expr
=
&
GroupConcatExpr
{
Distinct
:
yyDollar
[
3
]
.
str
,
Exprs
:
yyDollar
[
4
]
.
selectExprs
,
OrderBy
:
yyDollar
[
5
]
.
orderBy
,
Separator
:
yyDollar
[
6
]
.
str
}
yyVAL
.
expr
=
&
GroupConcatExpr
{
Distinct
:
yyDollar
[
3
]
.
str
,
Exprs
:
yyDollar
[
4
]
.
selectExprs
,
OrderBy
:
yyDollar
[
5
]
.
orderBy
,
Separator
:
yyDollar
[
6
]
.
str
}
}
}
case
4
79
:
case
4
81
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:24
64
//line sql.y:24
76
{
{
yyVAL
.
expr
=
&
CaseExpr
{
Expr
:
yyDollar
[
2
]
.
expr
,
Whens
:
yyDollar
[
3
]
.
whens
,
Else
:
yyDollar
[
4
]
.
expr
}
yyVAL
.
expr
=
&
CaseExpr
{
Expr
:
yyDollar
[
2
]
.
expr
,
Whens
:
yyDollar
[
3
]
.
whens
,
Else
:
yyDollar
[
4
]
.
expr
}
}
}
case
48
0
:
case
48
2
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:24
68
//line sql.y:24
80
{
{
yyVAL
.
expr
=
&
ValuesFuncExpr
{
Name
:
yyDollar
[
3
]
.
colName
}
yyVAL
.
expr
=
&
ValuesFuncExpr
{
Name
:
yyDollar
[
3
]
.
colName
}
}
}
case
48
1
:
case
48
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:24
78
//line sql.y:24
90
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_timestamp"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_timestamp"
)}
}
}
case
48
2
:
case
48
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:24
82
//line sql.y:24
94
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_timestamp"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_timestamp"
)}
}
}
case
48
3
:
case
48
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:24
86
//line sql.y:24
98
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_time"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_time"
)}
}
}
case
48
4
:
case
48
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
490
//line sql.y:2
502
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_date"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"utc_date"
)}
}
}
case
48
5
:
case
48
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
495
//line sql.y:2
507
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"localtime"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"localtime"
)}
}
}
case
48
6
:
case
48
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:25
00
//line sql.y:25
12
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"localtimestamp"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"localtimestamp"
)}
}
}
case
48
7
:
case
48
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:25
05
//line sql.y:25
17
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_date"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_date"
)}
}
}
case
4
88
:
case
4
90
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:25
10
//line sql.y:25
22
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_time"
)}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"current_time"
)}
}
}
case
49
1
:
case
49
3
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:25
24
//line sql.y:25
36
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"if"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"if"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
49
2
:
case
49
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:25
28
//line sql.y:25
40
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"database"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"database"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
49
3
:
case
49
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:25
32
//line sql.y:25
44
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"mod"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"mod"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
49
4
:
case
49
6
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:25
36
//line sql.y:25
48
{
{
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"replace"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
yyVAL
.
expr
=
&
FuncExpr
{
Name
:
NewColIdent
(
"replace"
),
Exprs
:
yyDollar
[
3
]
.
selectExprs
}
}
}
case
49
5
:
case
49
7
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:25
42
//line sql.y:25
54
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
49
6
:
case
49
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:25
46
//line sql.y:25
58
{
{
yyVAL
.
str
=
BooleanModeStr
yyVAL
.
str
=
BooleanModeStr
}
}
case
49
7
:
case
49
9
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:25
50
//line sql.y:25
62
{
{
yyVAL
.
str
=
NaturalLanguageModeStr
yyVAL
.
str
=
NaturalLanguageModeStr
}
}
case
498
:
case
500
:
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
7
:
yypt
+
1
]
//line sql.y:25
54
//line sql.y:25
66
{
{
yyVAL
.
str
=
NaturalLanguageModeWithQueryExpansionStr
yyVAL
.
str
=
NaturalLanguageModeWithQueryExpansionStr
}
}
case
499
:
case
501
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:25
58
//line sql.y:25
70
{
{
yyVAL
.
str
=
QueryExpansionStr
yyVAL
.
str
=
QueryExpansionStr
}
}
case
50
0
:
case
50
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:25
64
//line sql.y:25
76
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
50
1
:
case
50
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:25
68
//line sql.y:25
80
{
{
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
str
=
string
(
yyDollar
[
1
]
.
bytes
)
}
}
case
50
2
:
case
50
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:25
74
//line sql.y:25
86
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
}
}
case
50
3
:
case
50
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:25
78
//line sql.y:25
90
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
,
Charset
:
yyDollar
[
3
]
.
str
,
Operator
:
CharacterSetStr
}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
,
Charset
:
yyDollar
[
3
]
.
str
,
Operator
:
CharacterSetStr
}
}
}
case
50
4
:
case
50
6
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:25
82
//line sql.y:25
94
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
,
Charset
:
string
(
yyDollar
[
3
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
,
Charset
:
string
(
yyDollar
[
3
]
.
bytes
)}
}
}
case
50
5
:
case
50
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:25
86
//line sql.y:25
98
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
50
6
:
case
50
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
590
//line sql.y:2
602
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
}
}
case
50
7
:
case
50
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
594
//line sql.y:2
606
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
.
Length
=
yyDollar
[
2
]
.
LengthScaleOption
.
Length
yyVAL
.
convertType
.
Length
=
yyDollar
[
2
]
.
LengthScaleOption
.
Length
yyVAL
.
convertType
.
Scale
=
yyDollar
[
2
]
.
LengthScaleOption
.
Scale
yyVAL
.
convertType
.
Scale
=
yyDollar
[
2
]
.
LengthScaleOption
.
Scale
}
}
case
5
08
:
case
5
10
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
00
//line sql.y:26
12
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
5
09
:
case
5
11
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
04
//line sql.y:26
16
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
}
}
case
51
0
:
case
51
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
08
//line sql.y:26
20
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
51
1
:
case
51
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
12
//line sql.y:26
24
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
51
2
:
case
51
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
16
//line sql.y:26
28
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
),
Length
:
yyDollar
[
2
]
.
optVal
}
}
}
case
51
3
:
case
51
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
20
//line sql.y:26
32
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
51
4
:
case
51
6
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
24
//line sql.y:26
36
{
{
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
yyVAL
.
convertType
=
&
ConvertType
{
Type
:
string
(
yyDollar
[
1
]
.
bytes
)}
}
}
case
51
5
:
case
51
7
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:26
29
//line sql.y:26
41
{
{
yyVAL
.
expr
=
nil
yyVAL
.
expr
=
nil
}
}
case
51
6
:
case
51
8
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
33
//line sql.y:26
45
{
{
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
yyVAL
.
expr
=
yyDollar
[
1
]
.
expr
}
}
case
51
7
:
case
51
9
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:26
38
//line sql.y:26
50
{
{
yyVAL
.
str
=
string
(
""
)
yyVAL
.
str
=
string
(
""
)
}
}
case
5
18
:
case
5
20
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
42
//line sql.y:26
54
{
{
yyVAL
.
str
=
" separator '"
+
string
(
yyDollar
[
2
]
.
bytes
)
+
"'"
yyVAL
.
str
=
" separator '"
+
string
(
yyDollar
[
2
]
.
bytes
)
+
"'"
}
}
case
5
19
:
case
5
21
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
48
//line sql.y:26
60
{
{
yyVAL
.
whens
=
[]
*
When
{
yyDollar
[
1
]
.
when
}
yyVAL
.
whens
=
[]
*
When
{
yyDollar
[
1
]
.
when
}
}
}
case
52
0
:
case
52
2
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
52
//line sql.y:26
64
{
{
yyVAL
.
whens
=
append
(
yyDollar
[
1
]
.
whens
,
yyDollar
[
2
]
.
when
)
yyVAL
.
whens
=
append
(
yyDollar
[
1
]
.
whens
,
yyDollar
[
2
]
.
when
)
}
}
case
52
1
:
case
52
3
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:26
58
//line sql.y:26
70
{
{
yyVAL
.
when
=
&
When
{
Cond
:
yyDollar
[
2
]
.
expr
,
Val
:
yyDollar
[
4
]
.
expr
}
yyVAL
.
when
=
&
When
{
Cond
:
yyDollar
[
2
]
.
expr
,
Val
:
yyDollar
[
4
]
.
expr
}
}
}
case
52
2
:
case
52
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:26
63
//line sql.y:26
75
{
{
yyVAL
.
expr
=
nil
yyVAL
.
expr
=
nil
}
}
case
52
3
:
case
52
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:26
67
//line sql.y:26
79
{
{
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
}
}
case
52
4
:
case
52
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
73
//line sql.y:26
85
{
{
yyVAL
.
colName
=
&
ColName
{
Name
:
yyDollar
[
1
]
.
colIdent
}
yyVAL
.
colName
=
&
ColName
{
Name
:
yyDollar
[
1
]
.
colIdent
}
}
}
case
52
5
:
case
52
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:26
77
//line sql.y:26
89
{
{
yyVAL
.
colName
=
&
ColName
{
Qualifier
:
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
},
Name
:
yyDollar
[
3
]
.
colIdent
}
yyVAL
.
colName
=
&
ColName
{
Qualifier
:
TableName
{
Name
:
yyDollar
[
1
]
.
tableIdent
},
Name
:
yyDollar
[
3
]
.
colIdent
}
}
}
case
52
6
:
case
52
8
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:26
81
//line sql.y:26
93
{
{
yyVAL
.
colName
=
&
ColName
{
Qualifier
:
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
},
Name
:
yyDollar
[
5
]
.
colIdent
}
yyVAL
.
colName
=
&
ColName
{
Qualifier
:
TableName
{
Qualifier
:
yyDollar
[
1
]
.
tableIdent
,
Name
:
yyDollar
[
3
]
.
tableIdent
},
Name
:
yyDollar
[
5
]
.
colIdent
}
}
}
case
52
7
:
case
52
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:26
87
//line sql.y:26
99
{
{
yyVAL
.
expr
=
NewStrVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewStrVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
5
28
:
case
5
30
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
691
//line sql.y:2
703
{
{
yyVAL
.
expr
=
NewHexVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewHexVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
5
29
:
case
5
31
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
695
//line sql.y:2
707
{
{
yyVAL
.
expr
=
NewBitVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewBitVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
0
:
case
53
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
699
//line sql.y:2
711
{
{
yyVAL
.
expr
=
NewIntVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewIntVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
1
:
case
53
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
03
//line sql.y:27
15
{
{
yyVAL
.
expr
=
NewFloatVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewFloatVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
2
:
case
53
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
07
//line sql.y:27
19
{
{
yyVAL
.
expr
=
NewHexNum
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewHexNum
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
3
:
case
53
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
11
//line sql.y:27
23
{
{
yyVAL
.
expr
=
NewValArg
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewValArg
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
4
:
case
53
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
15
//line sql.y:27
27
{
{
yyVAL
.
expr
=
&
NullVal
{}
yyVAL
.
expr
=
&
NullVal
{}
}
}
case
53
5
:
case
53
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
21
//line sql.y:27
33
{
{
// TODO(sougou): Deprecate this construct.
// TODO(sougou): Deprecate this construct.
if
yyDollar
[
1
]
.
colIdent
.
Lowered
()
!=
"value"
{
if
yyDollar
[
1
]
.
colIdent
.
Lowered
()
!=
"value"
{
...
@@ -5921,239 +5927,239 @@ yydefault:
...
@@ -5921,239 +5927,239 @@ yydefault:
}
}
yyVAL
.
expr
=
NewIntVal
([]
byte
(
"1"
))
yyVAL
.
expr
=
NewIntVal
([]
byte
(
"1"
))
}
}
case
53
6
:
case
53
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:27
30
//line sql.y:27
42
{
{
yyVAL
.
expr
=
NewIntVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewIntVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
53
7
:
case
53
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:27
34
//line sql.y:27
46
{
{
yyVAL
.
expr
=
NewValArg
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewValArg
(
yyDollar
[
1
]
.
bytes
)
}
}
case
5
38
:
case
5
40
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:27
39
//line sql.y:27
51
{
{
yyVAL
.
exprs
=
nil
yyVAL
.
exprs
=
nil
}
}
case
5
39
:
case
5
41
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:27
43
//line sql.y:27
55
{
{
yyVAL
.
exprs
=
yyDollar
[
3
]
.
exprs
yyVAL
.
exprs
=
yyDollar
[
3
]
.
exprs
}
}
case
54
0
:
case
54
2
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:27
48
//line sql.y:27
60
{
{
yyVAL
.
expr
=
nil
yyVAL
.
expr
=
nil
}
}
case
54
1
:
case
54
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:27
52
//line sql.y:27
64
{
{
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
yyVAL
.
expr
=
yyDollar
[
2
]
.
expr
}
}
case
54
2
:
case
54
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:27
57
//line sql.y:27
69
{
{
yyVAL
.
orderBy
=
nil
yyVAL
.
orderBy
=
nil
}
}
case
54
3
:
case
54
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:27
61
//line sql.y:27
73
{
{
yyVAL
.
orderBy
=
yyDollar
[
3
]
.
orderBy
yyVAL
.
orderBy
=
yyDollar
[
3
]
.
orderBy
}
}
case
54
4
:
case
54
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
67
//line sql.y:27
79
{
{
yyVAL
.
orderBy
=
OrderBy
{
yyDollar
[
1
]
.
order
}
yyVAL
.
orderBy
=
OrderBy
{
yyDollar
[
1
]
.
order
}
}
}
case
54
5
:
case
54
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:27
71
//line sql.y:27
83
{
{
yyVAL
.
orderBy
=
append
(
yyDollar
[
1
]
.
orderBy
,
yyDollar
[
3
]
.
order
)
yyVAL
.
orderBy
=
append
(
yyDollar
[
1
]
.
orderBy
,
yyDollar
[
3
]
.
order
)
}
}
case
54
6
:
case
54
8
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:27
77
//line sql.y:27
89
{
{
yyVAL
.
order
=
&
Order
{
Expr
:
yyDollar
[
1
]
.
expr
,
Direction
:
yyDollar
[
2
]
.
str
}
yyVAL
.
order
=
&
Order
{
Expr
:
yyDollar
[
1
]
.
expr
,
Direction
:
yyDollar
[
2
]
.
str
}
}
}
case
54
7
:
case
54
9
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:27
82
//line sql.y:27
94
{
{
yyVAL
.
str
=
AscScr
yyVAL
.
str
=
AscScr
}
}
case
5
48
:
case
5
50
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:27
86
//line sql.y:27
98
{
{
yyVAL
.
str
=
AscScr
yyVAL
.
str
=
AscScr
}
}
case
5
49
:
case
5
51
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
790
//line sql.y:2
802
{
{
yyVAL
.
str
=
DescScr
yyVAL
.
str
=
DescScr
}
}
case
55
0
:
case
55
2
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:2
795
//line sql.y:2
807
{
{
yyVAL
.
limit
=
nil
yyVAL
.
limit
=
nil
}
}
case
55
1
:
case
55
3
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:2
799
//line sql.y:2
811
{
{
yyVAL
.
limit
=
&
Limit
{
Rowcount
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
limit
=
&
Limit
{
Rowcount
:
yyDollar
[
2
]
.
expr
}
}
}
case
55
2
:
case
55
4
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:28
03
//line sql.y:28
15
{
{
yyVAL
.
limit
=
&
Limit
{
Offset
:
yyDollar
[
2
]
.
expr
,
Rowcount
:
yyDollar
[
4
]
.
expr
}
yyVAL
.
limit
=
&
Limit
{
Offset
:
yyDollar
[
2
]
.
expr
,
Rowcount
:
yyDollar
[
4
]
.
expr
}
}
}
case
55
3
:
case
55
5
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:28
07
//line sql.y:28
19
{
{
yyVAL
.
limit
=
&
Limit
{
Offset
:
yyDollar
[
4
]
.
expr
,
Rowcount
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
limit
=
&
Limit
{
Offset
:
yyDollar
[
4
]
.
expr
,
Rowcount
:
yyDollar
[
2
]
.
expr
}
}
}
case
55
4
:
case
55
6
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:28
12
//line sql.y:28
24
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
55
5
:
case
55
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:28
16
//line sql.y:28
28
{
{
yyVAL
.
str
=
ForUpdateStr
yyVAL
.
str
=
ForUpdateStr
}
}
case
55
6
:
case
55
8
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:28
20
//line sql.y:28
32
{
{
yyVAL
.
str
=
ShareModeStr
yyVAL
.
str
=
ShareModeStr
}
}
case
55
7
:
case
55
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:28
33
//line sql.y:28
45
{
{
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
2
]
.
values
}
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
2
]
.
values
}
}
}
case
5
58
:
case
5
60
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:28
37
//line sql.y:28
49
{
{
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
1
]
.
selStmt
}
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
1
]
.
selStmt
}
}
}
case
5
59
:
case
5
61
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:28
41
//line sql.y:28
53
{
{
// Drop the redundant parenthesis.
// Drop the redundant parenthesis.
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
2
]
.
selStmt
}
yyVAL
.
ins
=
&
Insert
{
Rows
:
yyDollar
[
2
]
.
selStmt
}
}
}
case
56
0
:
case
56
2
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:28
46
//line sql.y:28
58
{
{
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
5
]
.
values
}
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
5
]
.
values
}
}
}
case
56
1
:
case
56
3
:
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
4
:
yypt
+
1
]
//line sql.y:28
50
//line sql.y:28
62
{
{
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
4
]
.
selStmt
}
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
4
]
.
selStmt
}
}
}
case
56
2
:
case
56
4
:
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
6
:
yypt
+
1
]
//line sql.y:28
54
//line sql.y:28
66
{
{
// Drop the redundant parenthesis.
// Drop the redundant parenthesis.
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
5
]
.
selStmt
}
yyVAL
.
ins
=
&
Insert
{
Columns
:
yyDollar
[
2
]
.
columns
,
Rows
:
yyDollar
[
5
]
.
selStmt
}
}
}
case
56
3
:
case
56
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:28
61
//line sql.y:28
73
{
{
yyVAL
.
columns
=
Columns
{
yyDollar
[
1
]
.
colIdent
}
yyVAL
.
columns
=
Columns
{
yyDollar
[
1
]
.
colIdent
}
}
}
case
56
4
:
case
56
6
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:28
65
//line sql.y:28
77
{
{
yyVAL
.
columns
=
Columns
{
yyDollar
[
3
]
.
colIdent
}
yyVAL
.
columns
=
Columns
{
yyDollar
[
3
]
.
colIdent
}
}
}
case
56
5
:
case
56
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:28
69
//line sql.y:28
81
{
{
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
3
]
.
colIdent
)
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
3
]
.
colIdent
)
}
}
case
56
6
:
case
56
8
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:28
73
//line sql.y:28
85
{
{
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
5
]
.
colIdent
)
yyVAL
.
columns
=
append
(
yyVAL
.
columns
,
yyDollar
[
5
]
.
colIdent
)
}
}
case
56
7
:
case
56
9
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:28
78
//line sql.y:28
90
{
{
yyVAL
.
updateExprs
=
nil
yyVAL
.
updateExprs
=
nil
}
}
case
5
68
:
case
5
70
:
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
5
:
yypt
+
1
]
//line sql.y:28
82
//line sql.y:28
94
{
{
yyVAL
.
updateExprs
=
yyDollar
[
5
]
.
updateExprs
yyVAL
.
updateExprs
=
yyDollar
[
5
]
.
updateExprs
}
}
case
5
69
:
case
5
71
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
888
//line sql.y:2
900
{
{
yyVAL
.
values
=
Values
{
yyDollar
[
1
]
.
valTuple
}
yyVAL
.
values
=
Values
{
yyDollar
[
1
]
.
valTuple
}
}
}
case
57
0
:
case
57
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:2
892
//line sql.y:2
904
{
{
yyVAL
.
values
=
append
(
yyDollar
[
1
]
.
values
,
yyDollar
[
3
]
.
valTuple
)
yyVAL
.
values
=
append
(
yyDollar
[
1
]
.
values
,
yyDollar
[
3
]
.
valTuple
)
}
}
case
57
1
:
case
57
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:2
898
//line sql.y:2
910
{
{
yyVAL
.
valTuple
=
yyDollar
[
1
]
.
valTuple
yyVAL
.
valTuple
=
yyDollar
[
1
]
.
valTuple
}
}
case
57
2
:
case
57
4
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:29
02
//line sql.y:29
14
{
{
yyVAL
.
valTuple
=
ValTuple
{}
yyVAL
.
valTuple
=
ValTuple
{}
}
}
case
57
3
:
case
57
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
08
//line sql.y:29
20
{
{
yyVAL
.
valTuple
=
ValTuple
(
yyDollar
[
2
]
.
exprs
)
yyVAL
.
valTuple
=
ValTuple
(
yyDollar
[
2
]
.
exprs
)
}
}
case
57
4
:
case
57
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
14
//line sql.y:29
26
{
{
if
len
(
yyDollar
[
1
]
.
valTuple
)
==
1
{
if
len
(
yyDollar
[
1
]
.
valTuple
)
==
1
{
yyVAL
.
expr
=
&
ParenExpr
{
yyDollar
[
1
]
.
valTuple
[
0
]}
yyVAL
.
expr
=
&
ParenExpr
{
yyDollar
[
1
]
.
valTuple
[
0
]}
...
@@ -6161,312 +6167,312 @@ yydefault:
...
@@ -6161,312 +6167,312 @@ yydefault:
yyVAL
.
expr
=
yyDollar
[
1
]
.
valTuple
yyVAL
.
expr
=
yyDollar
[
1
]
.
valTuple
}
}
}
}
case
57
5
:
case
57
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
24
//line sql.y:29
36
{
{
yyVAL
.
updateExprs
=
UpdateExprs
{
yyDollar
[
1
]
.
updateExpr
}
yyVAL
.
updateExprs
=
UpdateExprs
{
yyDollar
[
1
]
.
updateExpr
}
}
}
case
57
6
:
case
57
8
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
28
//line sql.y:29
40
{
{
yyVAL
.
updateExprs
=
append
(
yyDollar
[
1
]
.
updateExprs
,
yyDollar
[
3
]
.
updateExpr
)
yyVAL
.
updateExprs
=
append
(
yyDollar
[
1
]
.
updateExprs
,
yyDollar
[
3
]
.
updateExpr
)
}
}
case
57
7
:
case
57
9
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
34
//line sql.y:29
46
{
{
yyVAL
.
updateExpr
=
&
UpdateExpr
{
Name
:
yyDollar
[
1
]
.
colName
,
Expr
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
updateExpr
=
&
UpdateExpr
{
Name
:
yyDollar
[
1
]
.
colName
,
Expr
:
yyDollar
[
3
]
.
expr
}
}
}
case
5
78
:
case
5
80
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
40
//line sql.y:29
52
{
{
yyVAL
.
setExprs
=
SetExprs
{
yyDollar
[
1
]
.
setExpr
}
yyVAL
.
setExprs
=
SetExprs
{
yyDollar
[
1
]
.
setExpr
}
}
}
case
5
79
:
case
5
81
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
44
//line sql.y:29
56
{
{
yyVAL
.
setExprs
=
append
(
yyDollar
[
1
]
.
setExprs
,
yyDollar
[
3
]
.
setExpr
)
yyVAL
.
setExprs
=
append
(
yyDollar
[
1
]
.
setExprs
,
yyDollar
[
3
]
.
setExpr
)
}
}
case
58
0
:
case
58
2
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
50
//line sql.y:29
62
{
{
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
NewStrVal
([]
byte
(
"on"
))}
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
NewStrVal
([]
byte
(
"on"
))}
}
}
case
58
1
:
case
58
3
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
54
//line sql.y:29
66
{
{
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
NewStrVal
([]
byte
(
"off"
))}
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
NewStrVal
([]
byte
(
"off"
))}
}
}
case
58
2
:
case
58
4
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
58
//line sql.y:29
70
{
{
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
yyDollar
[
3
]
.
expr
}
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
yyDollar
[
1
]
.
colIdent
,
Expr
:
yyDollar
[
3
]
.
expr
}
}
}
case
58
3
:
case
58
5
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:29
62
//line sql.y:29
74
{
{
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
)),
Expr
:
yyDollar
[
2
]
.
expr
}
yyVAL
.
setExpr
=
&
SetExpr
{
Name
:
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
)),
Expr
:
yyDollar
[
2
]
.
expr
}
}
}
case
58
5
:
case
58
7
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:29
69
//line sql.y:29
81
{
{
yyVAL
.
bytes
=
[]
byte
(
"charset"
)
yyVAL
.
bytes
=
[]
byte
(
"charset"
)
}
}
case
58
7
:
case
58
9
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
76
//line sql.y:29
88
{
{
yyVAL
.
expr
=
NewStrVal
([]
byte
(
yyDollar
[
1
]
.
colIdent
.
String
()))
yyVAL
.
expr
=
NewStrVal
([]
byte
(
yyDollar
[
1
]
.
colIdent
.
String
()))
}
}
case
5
88
:
case
5
90
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
80
//line sql.y:29
92
{
{
yyVAL
.
expr
=
NewStrVal
(
yyDollar
[
1
]
.
bytes
)
yyVAL
.
expr
=
NewStrVal
(
yyDollar
[
1
]
.
bytes
)
}
}
case
5
89
:
case
5
91
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:29
84
//line sql.y:29
96
{
{
yyVAL
.
expr
=
&
Default
{}
yyVAL
.
expr
=
&
Default
{}
}
}
case
59
2
:
case
59
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:
2993
//line sql.y:
3005
{
{
yyVAL
.
byt
=
0
yyVAL
.
byt
=
0
}
}
case
59
3
:
case
59
5
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:
2995
//line sql.y:
3007
{
{
yyVAL
.
byt
=
1
yyVAL
.
byt
=
1
}
}
case
59
4
:
case
59
6
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:
2998
//line sql.y:
3010
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
59
5
:
case
59
7
:
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
3
:
yypt
+
1
]
//line sql.y:30
00
//line sql.y:30
12
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
59
6
:
case
59
8
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:30
03
//line sql.y:30
15
{
{
yyVAL
.
str
=
""
yyVAL
.
str
=
""
}
}
case
597
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:3005
{
yyVAL
.
str
=
IgnoreStr
}
case
598
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:3009
{
yyVAL
.
empty
=
struct
{}{}
}
case
599
:
case
599
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:301
1
//line sql.y:301
7
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
str
=
IgnoreStr
}
}
case
600
:
case
600
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
13
//line sql.y:30
21
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
601
:
case
601
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
15
//line sql.y:30
23
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
602
:
case
602
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
17
//line sql.y:30
25
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
603
:
case
603
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
19
//line sql.y:30
27
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
604
:
case
604
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:302
1
//line sql.y:302
9
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
605
:
case
605
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
23
//line sql.y:30
31
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
606
:
case
606
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
25
//line sql.y:30
33
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
607
:
case
607
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
27
//line sql.y:30
35
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
608
:
case
608
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:303
0
//line sql.y:303
7
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
609
:
case
609
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:303
2
//line sql.y:303
9
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
610
:
case
610
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:30
34
//line sql.y:30
42
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
611
:
case
611
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
38
//line sql.y:30
44
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
612
:
case
612
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:304
0
//line sql.y:304
6
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
613
:
case
613
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
43
//line sql.y:30
50
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
614
:
case
614
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
45
//line sql.y:30
52
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
615
:
case
615
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:30
47
//line sql.y:30
55
{
{
yyVAL
.
empty
=
struct
{}{}
yyVAL
.
empty
=
struct
{}{}
}
}
case
616
:
case
616
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:3057
{
yyVAL
.
empty
=
struct
{}{}
}
case
617
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:3059
{
yyVAL
.
empty
=
struct
{}{}
}
case
618
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:30
50
//line sql.y:30
62
{
{
yyVAL
.
colIdent
=
ColIdent
{}
yyVAL
.
colIdent
=
ColIdent
{}
}
}
case
61
7
:
case
61
9
:
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
2
:
yypt
+
1
]
//line sql.y:30
52
//line sql.y:30
64
{
{
yyVAL
.
colIdent
=
yyDollar
[
2
]
.
colIdent
yyVAL
.
colIdent
=
yyDollar
[
2
]
.
colIdent
}
}
case
6
18
:
case
6
20
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
56
//line sql.y:30
68
{
{
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
6
19
:
case
6
21
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
60
//line sql.y:30
72
{
{
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
62
1
:
case
62
3
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
67
//line sql.y:30
79
{
{
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
colIdent
=
NewColIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
62
2
:
case
62
4
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
73
//line sql.y:30
85
{
{
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
62
3
:
case
62
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
77
//line sql.y:30
89
{
{
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
62
5
:
case
62
7
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:30
84
//line sql.y:30
96
{
{
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
yyVAL
.
tableIdent
=
NewTableIdent
(
string
(
yyDollar
[
1
]
.
bytes
))
}
}
case
8
29
:
case
8
31
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:33
13
//line sql.y:33
25
{
{
if
incNesting
(
yylex
)
{
if
incNesting
(
yylex
)
{
yylex
.
Error
(
"max nesting level reached"
)
yylex
.
Error
(
"max nesting level reached"
)
return
1
return
1
}
}
}
}
case
83
0
:
case
83
2
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:33
22
//line sql.y:33
34
{
{
decNesting
(
yylex
)
decNesting
(
yylex
)
}
}
case
83
1
:
case
83
3
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:33
27
//line sql.y:33
39
{
{
skipToEnd
(
yylex
)
skipToEnd
(
yylex
)
}
}
case
83
2
:
case
83
4
:
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
0
:
yypt
+
1
]
//line sql.y:33
32
//line sql.y:33
44
{
{
skipToEnd
(
yylex
)
skipToEnd
(
yylex
)
}
}
case
83
3
:
case
83
5
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:33
36
//line sql.y:33
48
{
{
skipToEnd
(
yylex
)
skipToEnd
(
yylex
)
}
}
case
83
4
:
case
83
6
:
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
yyDollar
=
yyS
[
yypt
-
1
:
yypt
+
1
]
//line sql.y:33
40
//line sql.y:33
52
{
{
skipToEnd
(
yylex
)
skipToEnd
(
yylex
)
}
}
...
...
vendor/vitess.io/vitess/go/vt/sqlparser/sql.y
浏览文件 @
d1952d08
...
@@ -204,7 +204,7 @@ func skipToEnd(yylex interface{}) {
...
@@ -204,7 +204,7 @@ func skipToEnd(yylex interface{}) {
%type <selStmt> select_statement base_select union_lhs union_rhs
%type <selStmt> select_statement base_select union_lhs union_rhs
%type <statement> stream_statement insert_statement update_statement delete_statement set_statement
%type <statement> stream_statement insert_statement update_statement delete_statement set_statement
%type <statement> create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement
%type <statement> create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement
%type <ddl> create_table_prefix
%type <ddl> create_table_prefix
rename_list
%type <statement> analyze_statement show_statement use_statement other_statement
%type <statement> analyze_statement show_statement use_statement other_statement
%type <statement> begin_statement commit_statement rollback_statement
%type <statement> begin_statement commit_statement rollback_statement
%type <bytes2> comment_opt comment_list
%type <bytes2> comment_opt comment_list
...
@@ -560,15 +560,15 @@ create_statement:
...
@@ -560,15 +560,15 @@ create_statement:
| CREATE constraint_opt INDEX ID using_opt ON table_name ddl_skip_to_end
| CREATE constraint_opt INDEX ID using_opt ON table_name ddl_skip_to_end
{
{
// Change this to an alter statement
// Change this to an alter statement
$$ = &DDL{Action: AlterStr, Table: $7
, NewName:$7
}
$$ = &DDL{Action: AlterStr, Table: $7}
}
}
| CREATE VIEW table_name ddl_skip_to_end
| CREATE VIEW table_name ddl_skip_to_end
{
{
$$ = &DDL{Action: CreateStr,
NewNam
e: $3.ToViewName()}
$$ = &DDL{Action: CreateStr,
Tabl
e: $3.ToViewName()}
}
}
| CREATE OR REPLACE VIEW table_name ddl_skip_to_end
| CREATE OR REPLACE VIEW table_name ddl_skip_to_end
{
{
$$ = &DDL{Action: CreateStr,
NewNam
e: $5.ToViewName()}
$$ = &DDL{Action: CreateStr,
Tabl
e: $5.ToViewName()}
}
}
| CREATE VINDEX sql_id vindex_type_opt vindex_params_opt
| CREATE VINDEX sql_id vindex_type_opt vindex_params_opt
{
{
...
@@ -632,7 +632,7 @@ vindex_param:
...
@@ -632,7 +632,7 @@ vindex_param:
create_table_prefix:
create_table_prefix:
CREATE TABLE not_exists_opt table_name
CREATE TABLE not_exists_opt table_name
{
{
$$ = &DDL{Action: CreateStr,
NewNam
e: $4}
$$ = &DDL{Action: CreateStr,
Tabl
e: $4}
setDDL(yylex, $$)
setDDL(yylex, $$)
}
}
...
@@ -1290,15 +1290,15 @@ table_opt_value:
...
@@ -1290,15 +1290,15 @@ table_opt_value:
alter_statement:
alter_statement:
ALTER ignore_opt TABLE table_name non_add_drop_or_rename_operation skip_to_end
ALTER ignore_opt TABLE table_name non_add_drop_or_rename_operation skip_to_end
{
{
$$ = &DDL{Action: AlterStr, Table: $4
, NewName: $4
}
$$ = &DDL{Action: AlterStr, Table: $4}
}
}
| ALTER ignore_opt TABLE table_name ADD alter_object_type skip_to_end
| ALTER ignore_opt TABLE table_name ADD alter_object_type skip_to_end
{
{
$$ = &DDL{Action: AlterStr, Table: $4
, NewName: $4
}
$$ = &DDL{Action: AlterStr, Table: $4}
}
}
| ALTER ignore_opt TABLE table_name DROP alter_object_type skip_to_end
| ALTER ignore_opt TABLE table_name DROP alter_object_type skip_to_end
{
{
$$ = &DDL{Action: AlterStr, Table: $4
, NewName: $4
}
$$ = &DDL{Action: AlterStr, Table: $4}
}
}
| ALTER ignore_opt TABLE table_name ADD VINDEX sql_id '
(
' column_list '
)
' vindex_type_opt vindex_params_opt
| ALTER ignore_opt TABLE table_name ADD VINDEX sql_id '
(
' column_list '
)
' vindex_type_opt vindex_params_opt
{
{
...
@@ -1326,16 +1326,16 @@ alter_statement:
...
@@ -1326,16 +1326,16 @@ alter_statement:
| ALTER ignore_opt TABLE table_name RENAME to_opt table_name
| ALTER ignore_opt TABLE table_name RENAME to_opt table_name
{
{
// Change this to a rename statement
// Change this to a rename statement
$$ = &DDL{Action: RenameStr,
Table: $4, NewName: $7
}
$$ = &DDL{Action: RenameStr,
FromTables: TableNames{$4}, ToTables: TableNames{$7}
}
}
}
| ALTER ignore_opt TABLE table_name RENAME index_opt skip_to_end
| ALTER ignore_opt TABLE table_name RENAME index_opt skip_to_end
{
{
// Rename an index can just be an alter
// Rename an index can just be an alter
$$ = &DDL{Action: AlterStr, Table: $4
, NewName: $4
}
$$ = &DDL{Action: AlterStr, Table: $4}
}
}
| ALTER VIEW table_name ddl_skip_to_end
| ALTER VIEW table_name ddl_skip_to_end
{
{
$$ = &DDL{Action: AlterStr, Table: $3.ToViewName()
, NewName: $3.ToViewName()
}
$$ = &DDL{Action: AlterStr, Table: $3.ToViewName()}
}
}
| ALTER ignore_opt TABLE table_name partition_operation
| ALTER ignore_opt TABLE table_name partition_operation
{
{
...
@@ -1382,24 +1382,36 @@ partition_definition:
...
@@ -1382,24 +1382,36 @@ partition_definition:
}
}
rename_statement:
rename_statement:
RENAME TABLE
table_name TO table_name
RENAME TABLE
rename_list
{
{
$$ = &DDL{Action: RenameStr, Table: $3, NewName: $5}
$$ = $3
}
rename_list:
table_name TO table_name
{
$$ = &DDL{Action: RenameStr, FromTables: TableNames{$1}, ToTables: TableNames{$3}}
}
| rename_list '
,
' table_name TO table_name
{
$$ = $1
$$.FromTables = append($$.FromTables, $3)
$$.ToTables = append($$.ToTables, $5)
}
}
drop_statement:
drop_statement:
DROP TABLE exists_opt table_name
DROP TABLE exists_opt table_name
_list
{
{
var exists bool
var exists bool
if $3 != 0 {
if $3 != 0 {
exists = true
exists = true
}
}
$$ = &DDL{Action: DropStr,
Table
: $4, IfExists: exists}
$$ = &DDL{Action: DropStr,
FromTables
: $4, IfExists: exists}
}
}
| DROP INDEX ID ON table_name ddl_skip_to_end
| DROP INDEX ID ON table_name ddl_skip_to_end
{
{
// Change this to an alter statement
// Change this to an alter statement
$$ = &DDL{Action: AlterStr, Table: $5
, NewName: $5
}
$$ = &DDL{Action: AlterStr, Table: $5}
}
}
| DROP VIEW exists_opt table_name ddl_skip_to_end
| DROP VIEW exists_opt table_name ddl_skip_to_end
{
{
...
@@ -1407,7 +1419,7 @@ drop_statement:
...
@@ -1407,7 +1419,7 @@ drop_statement:
if $3 != 0 {
if $3 != 0 {
exists = true
exists = true
}
}
$$ = &DDL{Action: DropStr,
Table: $4.ToViewName()
, IfExists: exists}
$$ = &DDL{Action: DropStr,
FromTables: TableNames{$4.ToViewName()}
, IfExists: exists}
}
}
| DROP DATABASE exists_opt ID
| DROP DATABASE exists_opt ID
{
{
...
@@ -1430,7 +1442,7 @@ truncate_statement:
...
@@ -1430,7 +1442,7 @@ truncate_statement:
analyze_statement:
analyze_statement:
ANALYZE TABLE table_name
ANALYZE TABLE table_name
{
{
$$ = &DDL{Action: AlterStr, Table: $3
, NewName: $3
}
$$ = &DDL{Action: AlterStr, Table: $3}
}
}
show_statement:
show_statement:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录