Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1676bfe5
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1676bfe5
编写于
6月 14, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: some problems of parser
上级
63e78e3e
变更
18
显示空白变更内容
内联
并排
Showing
18 changed file
with
804 addition
and
697 deletion
+804
-697
include/libs/parser/parser.h
include/libs/parser/parser.h
+1
-0
include/util/taoserror.h
include/util/taoserror.h
+1
-0
source/client/src/clientMain.c
source/client/src/clientMain.c
+4
-0
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+1
-1
source/libs/parser/src/parAstCreater.c
source/libs/parser/src/parAstCreater.c
+8
-4
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+113
-46
source/libs/parser/src/parUtil.c
source/libs/parser/src/parUtil.c
+2
-0
source/libs/parser/src/parser.c
source/libs/parser/src/parser.c
+2
-0
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+605
-604
source/libs/parser/test/mockCatalog.cpp
source/libs/parser/test/mockCatalog.cpp
+15
-15
source/libs/parser/test/parInitialATest.cpp
source/libs/parser/test/parInitialATest.cpp
+12
-6
source/libs/parser/test/parInitialCTest.cpp
source/libs/parser/test/parInitialCTest.cpp
+3
-1
source/libs/parser/test/parInsertTest.cpp
source/libs/parser/test/parInsertTest.cpp
+4
-4
source/libs/parser/test/parSelectTest.cpp
source/libs/parser/test/parSelectTest.cpp
+12
-2
source/libs/parser/test/parTestUtil.cpp
source/libs/parser/test/parTestUtil.cpp
+4
-2
source/libs/planner/src/planSpliter.c
source/libs/planner/src/planSpliter.c
+3
-0
source/libs/planner/test/planGroupByTest.cpp
source/libs/planner/test/planGroupByTest.cpp
+2
-0
tests/script/jenkins/basic.txt
tests/script/jenkins/basic.txt
+12
-12
未找到文件。
include/libs/parser/parser.h
浏览文件 @
1676bfe5
...
@@ -65,6 +65,7 @@ void qDestroyQuery(SQuery* pQueryNode);
...
@@ -65,6 +65,7 @@ void qDestroyQuery(SQuery* pQueryNode);
int32_t
qExtractResultSchema
(
const
SNode
*
pRoot
,
int32_t
*
numOfCols
,
SSchema
**
pSchema
);
int32_t
qExtractResultSchema
(
const
SNode
*
pRoot
,
int32_t
*
numOfCols
,
SSchema
**
pSchema
);
int32_t
qSetSTableIdForRsma
(
SNode
*
pStmt
,
int64_t
uid
);
int32_t
qSetSTableIdForRsma
(
SNode
*
pStmt
,
int64_t
uid
);
void
qCleanupKeywordsTable
();
int32_t
qBuildStmtOutput
(
SQuery
*
pQuery
,
SHashObj
*
pVgHash
,
SHashObj
*
pBlockHash
);
int32_t
qBuildStmtOutput
(
SQuery
*
pQuery
,
SHashObj
*
pVgHash
,
SHashObj
*
pBlockHash
);
int32_t
qResetStmtDataBlock
(
void
*
block
,
bool
keepBuf
);
int32_t
qResetStmtDataBlock
(
void
*
block
,
bool
keepBuf
);
...
...
include/util/taoserror.h
浏览文件 @
1676bfe5
...
@@ -653,6 +653,7 @@ int32_t* taosGetErrno();
...
@@ -653,6 +653,7 @@ int32_t* taosGetErrno();
#define TSDB_CODE_PAR_INVALID_DELETE_WHERE TAOS_DEF_ERROR_CODE(0, 0x2655)
#define TSDB_CODE_PAR_INVALID_DELETE_WHERE TAOS_DEF_ERROR_CODE(0, 0x2655)
#define TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG TAOS_DEF_ERROR_CODE(0, 0x2656)
#define TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG TAOS_DEF_ERROR_CODE(0, 0x2656)
#define TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x2657)
#define TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC TAOS_DEF_ERROR_CODE(0, 0x2657)
#define TSDB_CODE_PAR_INVALID_WINDOW_PC TAOS_DEF_ERROR_CODE(0, 0x2658)
//planner
//planner
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
#define TSDB_CODE_PLAN_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x2700)
...
...
source/client/src/clientMain.c
浏览文件 @
1676bfe5
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
#include "tref.h"
#include "tref.h"
#include "trpc.h"
#include "trpc.h"
#include "version.h"
#include "version.h"
#include "functionMgt.h"
#define TSC_VAR_NOT_RELEASE 1
#define TSC_VAR_NOT_RELEASE 1
#define TSC_VAR_RELEASED 0
#define TSC_VAR_RELEASED 0
...
@@ -61,6 +62,9 @@ void taos_cleanup(void) {
...
@@ -61,6 +62,9 @@ void taos_cleanup(void) {
cleanupTaskQueue
();
cleanupTaskQueue
();
fmFuncMgtDestroy
();
qCleanupKeywordsTable
();
id
=
clientConnRefPool
;
id
=
clientConnRefPool
;
clientConnRefPool
=
-
1
;
clientConnRefPool
=
-
1
;
taosCloseRef
(
id
);
taosCloseRef
(
id
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
1676bfe5
...
@@ -255,7 +255,7 @@ multi_create_clause(A) ::= multi_create_clause(B) create_subtable_clause(C).
...
@@ -255,7 +255,7 @@ multi_create_clause(A) ::= multi_create_clause(B) create_subtable_clause(C).
create_subtable_clause(A) ::=
create_subtable_clause(A) ::=
not_exists_opt(B) full_table_name(C) USING full_table_name(D)
not_exists_opt(B) full_table_name(C) USING full_table_name(D)
specific_tags_opt(E) TAGS NK_LP
literal_list(F) NK_RP table_options(G).
{ A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); }
specific_tags_opt(E) TAGS NK_LP
expression_list(F) NK_RP table_options(G).
{ A = createCreateSubTableClause(pCxt, B, C, D, E, F, G); }
%type multi_drop_clause { SNodeList* }
%type multi_drop_clause { SNodeList* }
%destructor multi_drop_clause { nodesDestroyList($$); }
%destructor multi_drop_clause { nodesDestroyList($$); }
...
...
source/libs/parser/src/parAstCreater.c
浏览文件 @
1676bfe5
...
@@ -230,10 +230,14 @@ SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) {
...
@@ -230,10 +230,14 @@ SNode* releaseRawExprNode(SAstCreateContext* pCxt, SNode* pNode) {
SRawExprNode
*
pRawExpr
=
(
SRawExprNode
*
)
pNode
;
SRawExprNode
*
pRawExpr
=
(
SRawExprNode
*
)
pNode
;
SNode
*
pExpr
=
pRawExpr
->
pNode
;
SNode
*
pExpr
=
pRawExpr
->
pNode
;
if
(
nodesIsExprNode
(
pExpr
))
{
if
(
nodesIsExprNode
(
pExpr
))
{
if
(
QUERY_NODE_COLUMN
==
nodeType
(
pExpr
))
{
strcpy
(((
SExprNode
*
)
pExpr
)
->
aliasName
,
((
SColumnNode
*
)
pExpr
)
->
colName
);
}
else
{
int32_t
len
=
TMIN
(
sizeof
(((
SExprNode
*
)
pExpr
)
->
aliasName
)
-
1
,
pRawExpr
->
n
);
int32_t
len
=
TMIN
(
sizeof
(((
SExprNode
*
)
pExpr
)
->
aliasName
)
-
1
,
pRawExpr
->
n
);
strncpy
(((
SExprNode
*
)
pExpr
)
->
aliasName
,
pRawExpr
->
p
,
len
);
strncpy
(((
SExprNode
*
)
pExpr
)
->
aliasName
,
pRawExpr
->
p
,
len
);
((
SExprNode
*
)
pExpr
)
->
aliasName
[
len
]
=
'\0'
;
((
SExprNode
*
)
pExpr
)
->
aliasName
[
len
]
=
'\0'
;
}
}
}
taosMemoryFreeClear
(
pNode
);
taosMemoryFreeClear
(
pNode
);
return
pExpr
;
return
pExpr
;
}
}
...
@@ -801,7 +805,7 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti
...
@@ -801,7 +805,7 @@ SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOpti
((
SDatabaseOptions
*
)
pOptions
)
->
pRetentions
=
pVal
;
((
SDatabaseOptions
*
)
pOptions
)
->
pRetentions
=
pVal
;
break
;
break
;
case
DB_OPTION_SCHEMALESS
:
case
DB_OPTION_SCHEMALESS
:
// ((SDatabaseOptions*)pOptions)->schemaless = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
// ((SDatabaseOptions*)pOptions)->schemaless = taosStr2Int8(((SToken*)pVal)->z, NULL, 10);
((
SDatabaseOptions
*
)
pOptions
)
->
schemaless
=
1
;
((
SDatabaseOptions
*
)
pOptions
)
->
schemaless
=
1
;
break
;
break
;
default:
default:
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
1676bfe5
...
@@ -537,13 +537,15 @@ static int32_t findAndSetColumn(STranslateContext* pCxt, SColumnNode** pColRef,
...
@@ -537,13 +537,15 @@ static int32_t findAndSetColumn(STranslateContext* pCxt, SColumnNode** pColRef,
SNode
*
pNode
;
SNode
*
pNode
;
FOREACH
(
pNode
,
pProjectList
)
{
FOREACH
(
pNode
,
pProjectList
)
{
SExprNode
*
pExpr
=
(
SExprNode
*
)
pNode
;
SExprNode
*
pExpr
=
(
SExprNode
*
)
pNode
;
if
(
0
==
strcmp
(
pCol
->
colName
,
pExpr
->
aliasName
)
||
if
(
0
==
strcmp
(
pCol
->
colName
,
pExpr
->
aliasName
))
{
(
isPrimaryKey
((
STempTableNode
*
)
pTable
,
pNode
)
&&
isInternalPrimaryKey
(
pCol
)))
{
if
(
*
pFound
)
{
if
(
*
pFound
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_AMBIGUOUS_COLUMN
,
pCol
->
colName
);
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_AMBIGUOUS_COLUMN
,
pCol
->
colName
);
}
}
setColumnInfoByExpr
(
pTable
,
pExpr
,
pColRef
);
setColumnInfoByExpr
(
pTable
,
pExpr
,
pColRef
);
*
pFound
=
true
;
*
pFound
=
true
;
}
else
if
(
isPrimaryKey
((
STempTableNode
*
)
pTable
,
pNode
)
&&
isInternalPrimaryKey
(
pCol
))
{
setColumnInfoByExpr
(
pTable
,
pExpr
,
pColRef
);
*
pFound
=
true
;
}
}
}
}
}
}
...
@@ -662,9 +664,24 @@ static int32_t parseTimeFromValueNode(STranslateContext* pCxt, SValueNode* pVal)
...
@@ -662,9 +664,24 @@ static int32_t parseTimeFromValueNode(STranslateContext* pCxt, SValueNode* pVal)
}
}
char
*
pEnd
=
NULL
;
char
*
pEnd
=
NULL
;
pVal
->
datum
.
i
=
taosStr2Int64
(
pVal
->
literal
,
&
pEnd
,
10
);
pVal
->
datum
.
i
=
taosStr2Int64
(
pVal
->
literal
,
&
pEnd
,
10
);
return
(
NULL
!=
pEnd
&&
'\0'
==
*
pEnd
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_
FAILED
;
return
(
NULL
!=
pEnd
&&
'\0'
==
*
pEnd
)
?
TSDB_CODE_SUCCESS
:
TSDB_CODE_
PAR_WRONG_VALUE_TYPE
;
}
else
{
}
else
{
return
TSDB_CODE_FAILED
;
return
TSDB_CODE_PAR_WRONG_VALUE_TYPE
;
}
}
static
int32_t
parseBoolFromValueNode
(
STranslateContext
*
pCxt
,
SValueNode
*
pVal
)
{
if
(
IS_VAR_DATA_TYPE
(
pVal
->
node
.
resType
.
type
)
||
TSDB_DATA_TYPE_BOOL
==
pVal
->
node
.
resType
.
type
)
{
pVal
->
datum
.
b
=
(
0
==
strcasecmp
(
pVal
->
literal
,
"true"
));
return
TSDB_CODE_SUCCESS
;
}
else
if
(
IS_INTEGER_TYPE
(
pVal
->
node
.
resType
.
type
))
{
pVal
->
datum
.
b
=
(
0
!=
taosStr2Int64
(
pVal
->
literal
,
NULL
,
10
));
return
TSDB_CODE_SUCCESS
;
}
else
if
(
IS_FLOAT_TYPE
(
pVal
->
node
.
resType
.
type
))
{
pVal
->
datum
.
b
=
(
0
!=
taosStr2Double
(
pVal
->
literal
,
NULL
));
return
TSDB_CODE_SUCCESS
;
}
else
{
return
TSDB_CODE_PAR_WRONG_VALUE_TYPE
;
}
}
}
}
...
@@ -685,7 +702,9 @@ static EDealRes translateValueImpl(STranslateContext* pCxt, SValueNode* pVal, SD
...
@@ -685,7 +702,9 @@ static EDealRes translateValueImpl(STranslateContext* pCxt, SValueNode* pVal, SD
case
TSDB_DATA_TYPE_NULL
:
case
TSDB_DATA_TYPE_NULL
:
break
;
break
;
case
TSDB_DATA_TYPE_BOOL
:
case
TSDB_DATA_TYPE_BOOL
:
pVal
->
datum
.
b
=
(
0
==
strcasecmp
(
pVal
->
literal
,
"true"
));
if
(
TSDB_CODE_SUCCESS
!=
parseBoolFromValueNode
(
pCxt
,
pVal
))
{
return
generateDealNodeErrMsg
(
pCxt
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
pVal
->
literal
);
}
*
(
bool
*
)
&
pVal
->
typeData
=
pVal
->
datum
.
b
;
*
(
bool
*
)
&
pVal
->
typeData
=
pVal
->
datum
.
b
;
break
;
break
;
case
TSDB_DATA_TYPE_TINYINT
:
{
case
TSDB_DATA_TYPE_TINYINT
:
{
...
@@ -1068,6 +1087,16 @@ static int32_t translateForbidFillFunc(STranslateContext* pCxt, SFunctionNode* p
...
@@ -1068,6 +1087,16 @@ static int32_t translateForbidFillFunc(STranslateContext* pCxt, SFunctionNode* p
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
int32_t
translateWindowPseudoColumnFunc
(
STranslateContext
*
pCxt
,
SFunctionNode
*
pFunc
)
{
if
(
!
fmIsWindowPseudoColumnFunc
(
pFunc
->
funcId
))
{
return
TSDB_CODE_SUCCESS
;
}
if
(
NULL
==
pCxt
->
pCurrSelectStmt
->
pWindow
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_WINDOW_PC
);
}
return
TSDB_CODE_SUCCESS
;
}
static
void
setFuncClassification
(
SSelectStmt
*
pSelect
,
SFunctionNode
*
pFunc
)
{
static
void
setFuncClassification
(
SSelectStmt
*
pSelect
,
SFunctionNode
*
pFunc
)
{
if
(
NULL
!=
pSelect
)
{
if
(
NULL
!=
pSelect
)
{
pSelect
->
hasAggFuncs
=
pSelect
->
hasAggFuncs
?
true
:
fmIsAggFunc
(
pFunc
->
funcId
);
pSelect
->
hasAggFuncs
=
pSelect
->
hasAggFuncs
?
true
:
fmIsAggFunc
(
pFunc
->
funcId
);
...
@@ -1097,6 +1126,9 @@ static EDealRes translateFunction(STranslateContext* pCxt, SFunctionNode* pFunc)
...
@@ -1097,6 +1126,9 @@ static EDealRes translateFunction(STranslateContext* pCxt, SFunctionNode* pFunc)
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
pCxt
->
errCode
=
translateForbidFillFunc
(
pCxt
,
pFunc
);
pCxt
->
errCode
=
translateForbidFillFunc
(
pCxt
,
pFunc
);
}
}
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
pCxt
->
errCode
=
translateWindowPseudoColumnFunc
(
pCxt
,
pFunc
);
}
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
if
(
TSDB_CODE_SUCCESS
==
pCxt
->
errCode
)
{
setFuncClassification
(
pCxt
->
pCurrSelectStmt
,
pFunc
);
setFuncClassification
(
pCxt
->
pCurrSelectStmt
,
pFunc
);
}
}
...
@@ -3106,7 +3138,11 @@ static int32_t translateDropSuperTable(STranslateContext* pCxt, SDropSuperTableS
...
@@ -3106,7 +3138,11 @@ static int32_t translateDropSuperTable(STranslateContext* pCxt, SDropSuperTableS
pStmt
->
ignoreNotExists
);
pStmt
->
ignoreNotExists
);
}
}
static
int32_t
setAlterTableField
(
SAlterTableStmt
*
pStmt
,
SMAlterStbReq
*
pAlterReq
)
{
static
int32_t
buildAlterSuperTableReq
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
SMAlterStbReq
*
pAlterReq
)
{
SName
tableName
;
tNameExtractFullName
(
toName
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
tableName
),
pAlterReq
->
name
);
pAlterReq
->
alterType
=
pStmt
->
alterType
;
if
(
TSDB_ALTER_TABLE_UPDATE_OPTIONS
==
pStmt
->
alterType
)
{
if
(
TSDB_ALTER_TABLE_UPDATE_OPTIONS
==
pStmt
->
alterType
)
{
pAlterReq
->
ttl
=
pStmt
->
pOptions
->
ttl
;
pAlterReq
->
ttl
=
pStmt
->
pOptions
->
ttl
;
if
(
'\0'
!=
pStmt
->
pOptions
->
comment
[
0
])
{
if
(
'\0'
!=
pStmt
->
pOptions
->
comment
[
0
])
{
...
@@ -3154,15 +3190,45 @@ static int32_t setAlterTableField(SAlterTableStmt* pStmt, SMAlterStbReq* pAlterR
...
@@ -3154,15 +3190,45 @@ static int32_t setAlterTableField(SAlterTableStmt* pStmt, SMAlterStbReq* pAlterR
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
static
int32_t
translateAlterTable
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
)
{
static
SSchema
*
getColSchema
(
STableMeta
*
pTableMeta
,
const
char
*
pTagName
)
{
SMAlterStbReq
alterReq
=
{
0
};
int32_t
numOfFields
=
getNumOfTags
(
pTableMeta
)
+
getNumOfColumns
(
pTableMeta
);
SName
tableName
;
for
(
int32_t
i
=
0
;
i
<
numOfFields
;
++
i
)
{
tNameExtractFullName
(
toName
(
pCxt
->
pParseCxt
->
acctId
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
tableName
),
alterReq
.
name
);
SSchema
*
pTagSchema
=
pTableMeta
->
schema
+
i
;
alterReq
.
alterType
=
pStmt
->
alterType
;
if
(
0
==
strcmp
(
pTagName
,
pTagSchema
->
name
))
{
return
pTagSchema
;
}
}
return
NULL
;
}
static
int32_t
checkAlterSuperTable
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
)
{
if
(
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
==
pStmt
->
alterType
||
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
==
pStmt
->
alterType
)
{
if
(
TSDB_ALTER_TABLE_UPDATE_TAG_VAL
==
pStmt
->
alterType
||
TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME
==
pStmt
->
alterType
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
}
}
int32_t
code
=
setAlterTableField
(
pStmt
,
&
alterReq
);
if
(
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
==
pStmt
->
alterType
||
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
==
pStmt
->
alterType
)
{
STableMeta
*
pTableMeta
=
NULL
;
int32_t
code
=
getTableMeta
(
pCxt
,
pStmt
->
dbName
,
pStmt
->
tableName
,
&
pTableMeta
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
SSchema
*
pSchema
=
getColSchema
(
pTableMeta
,
pStmt
->
colName
);
if
(
NULL
==
pSchema
)
{
code
=
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_COLUMN
,
pStmt
->
colName
);
}
else
if
(
!
IS_VAR_DATA_TYPE
(
pSchema
->
type
)
||
pSchema
->
type
!=
pStmt
->
dataType
.
type
||
pSchema
->
bytes
>=
pStmt
->
dataType
.
bytes
)
{
code
=
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
}
}
return
code
;
}
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
translateAlterSuperTable
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
)
{
SMAlterStbReq
alterReq
=
{
0
};
int32_t
code
=
checkAlterSuperTable
(
pCxt
,
pStmt
);
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildAlterSuperTableReq
(
pCxt
,
pStmt
,
&
alterReq
);
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
buildCmdMsg
(
pCxt
,
TDMT_MND_ALTER_STB
,
(
FSerializeFunc
)
tSerializeSMAlterStbReq
,
&
alterReq
);
code
=
buildCmdMsg
(
pCxt
,
TDMT_MND_ALTER_STB
,
(
FSerializeFunc
)
tSerializeSMAlterStbReq
,
&
alterReq
);
}
}
...
@@ -3835,7 +3901,7 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
...
@@ -3835,7 +3901,7 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
code
=
translateDropSuperTable
(
pCxt
,
(
SDropSuperTableStmt
*
)
pNode
);
code
=
translateDropSuperTable
(
pCxt
,
(
SDropSuperTableStmt
*
)
pNode
);
break
;
break
;
case
QUERY_NODE_ALTER_TABLE_STMT
:
case
QUERY_NODE_ALTER_TABLE_STMT
:
code
=
translateAlterTable
(
pCxt
,
(
SAlterTableStmt
*
)
pNode
);
code
=
translateAlter
Super
Table
(
pCxt
,
(
SAlterTableStmt
*
)
pNode
);
break
;
break
;
case
QUERY_NODE_CREATE_USER_STMT
:
case
QUERY_NODE_CREATE_USER_STMT
:
code
=
translateCreateUser
(
pCxt
,
(
SCreateUserStmt
*
)
pNode
);
code
=
translateCreateUser
(
pCxt
,
(
SCreateUserStmt
*
)
pNode
);
...
@@ -4445,10 +4511,34 @@ static int32_t translateTagVal(STranslateContext* pCxt, uint8_t precision, SSche
...
@@ -4445,10 +4511,34 @@ static int32_t translateTagVal(STranslateContext* pCxt, uint8_t precision, SSche
?
pCxt
->
errCode
?
pCxt
->
errCode
:
TSDB_CODE_SUCCESS
);
:
TSDB_CODE_SUCCESS
);
}
else
{
}
else
{
return
TSDB_CODE_FAILED
;
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
((
SExprNode
*
)
pNode
)
->
aliasName
)
;
}
}
}
}
static
int32_t
buildJsonTagVal
(
STranslateContext
*
pCxt
,
SSchema
*
pTagSchema
,
SValueNode
*
pVal
,
SArray
*
pTagArray
,
STag
**
ppTag
)
{
if
(
pVal
->
literal
&&
strlen
(
pVal
->
literal
)
>
(
TSDB_MAX_JSON_TAG_LEN
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
)
{
return
buildSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
"json string too long than 4095"
,
pVal
->
literal
);
}
return
parseJsontoTagData
(
pVal
->
literal
,
pTagArray
,
ppTag
,
&
pCxt
->
msgBuf
);
}
static
int32_t
buildNormalTagVal
(
STranslateContext
*
pCxt
,
SSchema
*
pTagSchema
,
SValueNode
*
pVal
,
SArray
*
pTagArray
)
{
if
(
pVal
->
node
.
resType
.
type
!=
TSDB_DATA_TYPE_NULL
)
{
void
*
nodeVal
=
nodesGetValueFromNode
(
pVal
);
STagVal
val
=
{.
cid
=
pTagSchema
->
colId
,
.
type
=
pTagSchema
->
type
};
if
(
IS_VAR_DATA_TYPE
(
pTagSchema
->
type
))
{
val
.
pData
=
varDataVal
(
nodeVal
);
val
.
nData
=
varDataLen
(
nodeVal
);
}
else
{
memcpy
(
&
val
.
i64
,
nodeVal
,
pTagSchema
->
bytes
);
}
taosArrayPush
(
pTagArray
,
&
val
);
}
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
buildKVRowForBindTags
(
STranslateContext
*
pCxt
,
SCreateSubTableClause
*
pStmt
,
STableMeta
*
pSuperTableMeta
,
static
int32_t
buildKVRowForBindTags
(
STranslateContext
*
pCxt
,
SCreateSubTableClause
*
pStmt
,
STableMeta
*
pSuperTableMeta
,
STag
**
ppTag
)
{
STag
**
ppTag
)
{
int32_t
numOfTags
=
getNumOfTags
(
pSuperTableMeta
);
int32_t
numOfTags
=
getNumOfTags
(
pSuperTableMeta
);
...
@@ -4458,11 +4548,10 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla
...
@@ -4458,11 +4548,10 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla
}
}
SArray
*
pTagArray
=
taosArrayInit
(
LIST_LENGTH
(
pStmt
->
pValsOfTags
),
sizeof
(
STagVal
));
SArray
*
pTagArray
=
taosArrayInit
(
LIST_LENGTH
(
pStmt
->
pValsOfTags
),
sizeof
(
STagVal
));
if
(
!
pTagArray
)
{
if
(
NULL
==
pTagArray
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_TSC_OUT_OF_MEMORY
)
;
return
TSDB_CODE_OUT_OF_MEMORY
;
}
}
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
int16_t
nTags
=
0
,
nBufPos
=
0
;
SSchema
*
pTagSchema
=
getTableTagSchema
(
pSuperTableMeta
);
SSchema
*
pTagSchema
=
getTableTagSchema
(
pSuperTableMeta
);
SNode
*
pTag
=
NULL
,
*
pNode
=
NULL
;
SNode
*
pTag
=
NULL
,
*
pNode
=
NULL
;
bool
isJson
=
false
;
bool
isJson
=
false
;
...
@@ -4490,27 +4579,12 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla
...
@@ -4490,27 +4579,12 @@ static int32_t buildKVRowForBindTags(STranslateContext* pCxt, SCreateSubTableCla
}
else
{
}
else
{
REPLACE_LIST2_NODE
(
pVal
);
REPLACE_LIST2_NODE
(
pVal
);
}
}
if
(
pTagSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
{
if
(
pVal
->
literal
&&
strlen
(
pVal
->
literal
)
>
(
TSDB_MAX_JSON_TAG_LEN
-
VARSTR_HEADER_SIZE
)
/
TSDB_NCHAR_SIZE
)
{
code
=
buildSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
"json string too long than 4095"
,
pVal
->
literal
);
goto
end
;
}
if
(
pSchema
->
type
==
TSDB_DATA_TYPE_JSON
)
{
isJson
=
true
;
isJson
=
true
;
code
=
parseJsontoTagData
(
pVal
->
literal
,
pTagArray
,
ppTag
,
&
pCxt
->
msgBuf
);
code
=
buildJsonTagVal
(
pCxt
,
pSchema
,
pVal
,
pTagArray
,
ppTag
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
goto
end
;
}
}
else
if
(
pVal
->
node
.
resType
.
type
!=
TSDB_DATA_TYPE_NULL
)
{
}
else
if
(
pVal
->
node
.
resType
.
type
!=
TSDB_DATA_TYPE_NULL
)
{
void
*
nodeVal
=
nodesGetValueFromNode
(
pVal
);
code
=
buildNormalTagVal
(
pCxt
,
pSchema
,
pVal
,
pTagArray
);
STagVal
val
=
{.
cid
=
pTagSchema
->
colId
,
.
type
=
pTagSchema
->
type
};
if
(
IS_VAR_DATA_TYPE
(
pTagSchema
->
type
))
{
val
.
pData
=
varDataVal
(
nodeVal
);
val
.
nData
=
varDataLen
(
nodeVal
);
}
else
{
memcpy
(
&
val
.
i64
,
nodeVal
,
pTagSchema
->
bytes
);
}
taosArrayPush
(
pTagArray
,
&
val
);
}
}
}
}
...
@@ -4825,17 +4899,6 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) {
...
@@ -4825,17 +4899,6 @@ static int32_t rewriteDropTable(STranslateContext* pCxt, SQuery* pQuery) {
return
rewriteToVnodeModifyOpStmt
(
pQuery
,
pBufArray
);
return
rewriteToVnodeModifyOpStmt
(
pQuery
,
pBufArray
);
}
}
static
SSchema
*
getColSchema
(
STableMeta
*
pTableMeta
,
const
char
*
pTagName
)
{
int32_t
numOfFields
=
getNumOfTags
(
pTableMeta
)
+
getNumOfColumns
(
pTableMeta
);
for
(
int32_t
i
=
0
;
i
<
numOfFields
;
++
i
)
{
SSchema
*
pTagSchema
=
pTableMeta
->
schema
+
i
;
if
(
0
==
strcmp
(
pTagName
,
pTagSchema
->
name
))
{
return
pTagSchema
;
}
}
return
NULL
;
}
static
int32_t
buildUpdateTagValReq
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
STableMeta
*
pTableMeta
,
static
int32_t
buildUpdateTagValReq
(
STranslateContext
*
pCxt
,
SAlterTableStmt
*
pStmt
,
STableMeta
*
pTableMeta
,
SVAlterTbReq
*
pReq
)
{
SVAlterTbReq
*
pReq
)
{
SSchema
*
pSchema
=
getColSchema
(
pTableMeta
,
pStmt
->
colName
);
SSchema
*
pSchema
=
getColSchema
(
pTableMeta
,
pStmt
->
colName
);
...
@@ -4853,6 +4916,10 @@ static int32_t buildUpdateTagValReq(STranslateContext* pCxt, SAlterTableStmt* pS
...
@@ -4853,6 +4916,10 @@ static int32_t buildUpdateTagValReq(STranslateContext* pCxt, SAlterTableStmt* pS
return
pCxt
->
errCode
;
return
pCxt
->
errCode
;
}
}
if
(
IS_VAR_DATA_TYPE
(
pSchema
->
type
)
&&
strlen
(
pStmt
->
pVal
->
literal
)
>
pSchema
->
bytes
)
{
return
generateSyntaxErrMsg
(
&
pCxt
->
msgBuf
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
,
pStmt
->
pVal
->
literal
);
}
pReq
->
isNull
=
(
TSDB_DATA_TYPE_NULL
==
pStmt
->
pVal
->
node
.
resType
.
type
);
pReq
->
isNull
=
(
TSDB_DATA_TYPE_NULL
==
pStmt
->
pVal
->
node
.
resType
.
type
);
if
(
pStmt
->
pVal
->
node
.
resType
.
type
==
TSDB_DATA_TYPE_JSON
)
{
if
(
pStmt
->
pVal
->
node
.
resType
.
type
==
TSDB_DATA_TYPE_JSON
)
{
if
(
pStmt
->
pVal
->
literal
&&
if
(
pStmt
->
pVal
->
literal
&&
...
...
source/libs/parser/src/parUtil.c
浏览文件 @
1676bfe5
...
@@ -186,6 +186,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
...
@@ -186,6 +186,8 @@ static char* getSyntaxErrFormat(int32_t errCode) {
return
"The REDISTRIBUTE VGROUP statement only support 1 to 3 dnodes"
;
return
"The REDISTRIBUTE VGROUP statement only support 1 to 3 dnodes"
;
case
TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC
:
case
TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC
:
return
"%s function not allowed in fill query"
;
return
"%s function not allowed in fill query"
;
case
TSDB_CODE_PAR_INVALID_WINDOW_PC
:
return
"_WSTARTTS, _WENDTS and _WDURATION can only be used in window queries"
;
case
TSDB_CODE_OUT_OF_MEMORY
:
case
TSDB_CODE_OUT_OF_MEMORY
:
return
"Out of memory"
;
return
"Out of memory"
;
default:
default:
...
...
source/libs/parser/src/parser.c
浏览文件 @
1676bfe5
...
@@ -207,6 +207,8 @@ int32_t qSetSTableIdForRsma(SNode* pStmt, int64_t uid) {
...
@@ -207,6 +207,8 @@ int32_t qSetSTableIdForRsma(SNode* pStmt, int64_t uid) {
return
TSDB_CODE_FAILED
;
return
TSDB_CODE_FAILED
;
}
}
void
qCleanupKeywordsTable
()
{
taosCleanupKeywordsTable
();
}
int32_t
qStmtBindParams
(
SQuery
*
pQuery
,
TAOS_MULTI_BIND
*
pParams
,
int32_t
colIdx
)
{
int32_t
qStmtBindParams
(
SQuery
*
pQuery
,
TAOS_MULTI_BIND
*
pParams
,
int32_t
colIdx
)
{
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
...
...
source/libs/parser/src/sql.c
浏览文件 @
1676bfe5
...
@@ -215,543 +215,544 @@ typedef union {
...
@@ -215,543 +215,544 @@ typedef union {
** yy_default[] Default action for each state.
** yy_default[] Default action for each state.
**
**
*********** Begin parsing tables **********************************************/
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (21
52
)
#define YY_ACTTAB_COUNT (21
78
)
static
const
YYACTIONTYPE
yy_action
[]
=
{
static
const
YYACTIONTYPE
yy_action
[]
=
{
/* 0 */
28
,
231
,
1663
,
1650
,
611
,
610
,
297
,
1650
,
358
,
1485
,
/* 0 */
475
,
1650
,
392
,
1663
,
393
,
1395
,
1584
,
1794
,
1361
,
352
,
/* 10 */
314
,
1483
,
35
,
33
,
352
,
36
,
34
,
32
,
31
,
30
,
/* 10 */
11
,
10
,
36
,
34
,
37
,
35
,
33
,
32
,
31
,
1793
,
/* 20 */
3
06
,
24
,
1173
,
1647
,
533
,
442
,
441
,
1647
,
79
,
1647
,
/* 20 */
3
13
,
1647
,
1173
,
1791
,
71
,
510
,
37
,
35
,
33
,
32
,
/* 30 */
1679
,
36
,
34
,
32
,
31
,
30
,
152
,
493
,
517
,
1643
,
/* 30 */
31
,
1679
,
1471
,
33
,
32
,
31
,
1643
,
1649
,
302
,
535
,
/* 40 */
1649
,
115
,
278
,
1643
,
1649
,
1643
,
1649
,
1171
,
516
,
1486
,
/* 40 */
37
,
35
,
33
,
32
,
31
,
1487
,
1679
,
1171
,
528
,
534
,
/* 50 */
5
36
,
533
,
1633
,
1494
,
536
,
1794
,
536
,
497
,
14
,
1746
,
/* 50 */
5
07
,
1794
,
1483
,
1633
,
500
,
936
,
469
,
512
,
14
,
1538
,
/* 60 */
3
5
,
33
,
1300
,
356
,
1179
,
1663
,
114
,
147
,
306
,
1692
,
/* 60 */
3
6
,
34
,
1300
,
147
,
1179
,
322
,
296
,
1791
,
313
,
1692
,
/* 70 */
1173
,
1
791
,
82
,
1664
,
519
,
1666
,
1667
,
515
,
532
,
536
,
/* 70 */
1173
,
1
536
,
281
,
82
,
1664
,
537
,
1666
,
1667
,
533
,
115
,
/* 80 */
1494
,
1
,
1732
,
1743
,
1794
,
1314
,
280
,
1728
,
36
,
34
,
/* 80 */
528
,
1
,
1571
,
1732
,
1314
,
1794
,
40
,
280
,
1728
,
159
,
/* 90 */
32
,
31
,
30
,
1679
,
410
,
1171
,
1793
,
1651
,
1794
,
520
,
/* 90 */
499
,
1276
,
1663
,
940
,
941
,
1171
,
1211
,
148
,
1794
,
1794
,
/* 100 */
1791
,
517
,
309
,
615
,
112
,
1583
,
14
,
1746
,
35
,
33
,
/* 100 */
132
,
1791
,
1375
,
615
,
1262
,
510
,
14
,
1794
,
36
,
34
,
/* 110 */
14
9
,
516
,
1179
,
1172
,
1791
,
1633
,
306
,
1647
,
1173
,
145
,
/* 110 */
14
7
,
149
,
1179
,
1172
,
1791
,
1791
,
313
,
113
,
1173
,
147
,
/* 120 */
1
739
,
1740
,
532
,
1744
,
36
,
34
,
32
,
31
,
30
,
2
,
/* 120 */
1
679
,
1746
,
300
,
1791
,
400
,
567
,
393
,
1395
,
532
,
2
,
/* 130 */
63
,
1742
,
1692
,
1643
,
1649
,
84
,
1664
,
519
,
1666
,
1667
,
/* 130 */
130
,
509
,
144
,
1739
,
1740
,
410
,
1744
,
63
,
534
,
1496
,
/* 140 */
515
,
1364
,
536
,
1171
,
536
,
1732
,
953
,
1794
,
952
,
1731
,
/* 140 */
54
,
358
,
1633
,
1171
,
566
,
1743
,
565
,
564
,
563
,
1307
,
/* 150 */
1728
,
615
,
1490
,
72
,
14
,
392
,
1174
,
393
,
1395
,
148
,
/* 150 */
110
,
615
,
201
,
1263
,
14
,
1197
,
1174
,
382
,
1692
,
1489
,
/* 160 */
1179
,
1172
,
96
,
1791
,
532
,
95
,
94
,
93
,
92
,
91
,
/* 160 */
1179
,
1172
,
273
,
1664
,
537
,
1666
,
1667
,
533
,
531
,
528
,
/* 170 */
90
,
89
,
88
,
87
,
1487
,
954
,
56
,
2
,
132
,
201
,
/* 170 */
525
,
1704
,
133
,
129
,
1268
,
278
,
1451
,
2
,
55
,
1197
,
/* 180 */
1375
,
1177
,
1178
,
39
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
/* 180 */
66
,
1177
,
1178
,
63
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
/* 190 */
1231
,
5
12
,
534
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
615
,
/* 190 */
1231
,
5
30
,
526
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
615
,
/* 200 */
4
00
,
952
,
393
,
1395
,
1174
,
55
,
1197
,
66
,
133
,
1172
,
/* 200 */
4
75
,
161
,
160
,
299
,
1174
,
1490
,
1583
,
65
,
279
,
1172
,
/* 210 */
96
,
150
,
1451
,
95
,
94
,
93
,
92
,
91
,
90
,
89
,
/* 210 */
79
,
150
,
194
,
28
,
311
,
1257
,
1258
,
1259
,
1260
,
1261
,
/* 220 */
88
,
87
,
65
,
279
,
1356
,
38
,
429
,
194
,
567
,
1177
,
/* 220 */
1265
,
1266
,
1267
,
112
,
37
,
35
,
33
,
32
,
31
,
1177
,
/* 230 */
1178
,
1
363
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
512
,
/* 230 */
1178
,
1
486
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
530
,
/* 240 */
5
34
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
566
,
487
,
565
,
/* 240 */
5
26
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
953
,
56
,
952
,
/* 250 */
564
,
563
,
1174
,
55
,
63
,
105
,
104
,
103
,
102
,
101
,
/* 250 */
55
,
96
,
1174
,
1386
,
95
,
94
,
93
,
92
,
91
,
90
,
/* 260 */
100
,
99
,
98
,
97
,
936
,
35
,
33
,
110
,
36
,
34
,
/* 260 */
89
,
88
,
87
,
510
,
569
,
36
,
34
,
37
,
35
,
33
,
/* 270 */
32
,
31
,
30
,
306
,
1746
,
1173
,
1489
,
1177
,
1178
,
1198
,
/* 270 */
32
,
31
,
1385
,
313
,
343
,
1173
,
954
,
1177
,
1178
,
435
,
/* 280 */
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
5
12
,
534
,
1239
,
/* 280 */
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
5
30
,
526
,
1239
,
/* 290 */
1240
,
1241
,
1242
,
1243
,
1244
,
55
,
445
,
444
,
1741
,
1538
,
/* 290 */
1240
,
1241
,
1242
,
1243
,
1244
,
345
,
341
,
445
,
444
,
1384
,
/* 300 */
1171
,
4
43
,
940
,
941
,
111
,
440
,
296
,
1355
,
439
,
438
,
/* 300 */
1171
,
4
34
,
443
,
1633
,
1663
,
111
,
440
,
485
,
150
,
439
,
/* 310 */
43
7
,
1536
,
569
,
35
,
33
,
1245
,
1679
,
1179
,
26
,
310
,
/* 310 */
43
8
,
437
,
397
,
36
,
34
,
1245
,
25
,
1179
,
1195
,
152
,
/* 320 */
1
386
,
306
,
391
,
1173
,
486
,
395
,
290
,
130
,
36
,
34
,
/* 320 */
1
226
,
313
,
1633
,
1173
,
39
,
55
,
37
,
35
,
33
,
32
,
/* 330 */
3
2
,
31
,
30
,
1196
,
8
,
150
,
1496
,
1043
,
559
,
55
8
,
/* 330 */
3
1
,
27
,
1679
,
1425
,
8
,
1794
,
1494
,
1211
,
316
,
119
8
,
/* 340 */
5
57
,
1047
,
556
,
1049
,
1050
,
555
,
1052
,
552
,
1171
,
1058
,
/* 340 */
5
35
,
37
,
35
,
33
,
32
,
31
,
130
,
1792
,
1171
,
1633
,
/* 350 */
5
49
,
1060
,
1061
,
546
,
543
,
150
,
615
,
450
,
482
,
618
,
/* 350 */
5
34
,
1791
,
611
,
610
,
1633
,
1496
,
615
,
501
,
512
,
130
,
/* 360 */
485
,
35
,
33
,
585
,
583
,
1179
,
1172
,
142
,
397
,
306
,
/* 360 */
1538
,
36
,
34
,
514
,
567
,
1179
,
1172
,
301
,
1497
,
313
,
/* 370 */
16
33
,
1173
,
458
,
248
,
1195
,
291
,
1324
,
289
,
288
,
1532
,
/* 370 */
16
92
,
1173
,
1536
,
1005
,
82
,
1664
,
537
,
1666
,
1667
,
533
,
/* 380 */
433
,
318
,
9
,
150
,
435
,
107
,
193
,
399
,
1574
,
1576
,
/* 380 */
150
,
528
,
9
,
566
,
1732
,
565
,
564
,
563
,
280
,
1728
,
/* 390 */
395
,
607
,
603
,
599
,
595
,
247
,
1171
,
1472
,
453
,
157
,
/* 390 */
1007
,
55
,
391
,
445
,
444
,
395
,
1171
,
1364
,
443
,
1653
,
/* 400 */
533
,
129
,
1361
,
447
,
615
,
1425
,
434
,
572
,
192
,
1174
,
/* 400 */
1794
,
111
,
440
,
485
,
615
,
439
,
438
,
437
,
1469
,
1174
,
/* 410 */
1794
,
1385
,
357
,
1179
,
1172
,
479
,
1322
,
1323
,
1325
,
1326
,
/* 410 */
29
,
243
,
147
,
1179
,
1172
,
356
,
1791
,
562
,
96
,
142
,
/* 420 */
80
,
1571
,
1792
,
242
,
61
,
150
,
1791
,
60
,
159
,
1494
,
/* 420 */
290
,
95
,
94
,
93
,
92
,
91
,
90
,
89
,
88
,
87
,
/* 430 */
9
,
488
,
483
,
51
,
1177
,
1178
,
50
,
1224
,
1225
,
1227
,
/* 430 */
9
,
1532
,
1494
,
496
,
1177
,
1178
,
1655
,
1224
,
1225
,
1227
,
/* 440 */
1228
,
1229
,
1230
,
1231
,
5
12
,
534
,
1239
,
1240
,
1241
,
1242
,
/* 440 */
1228
,
1229
,
1230
,
1231
,
5
30
,
526
,
1239
,
1240
,
1241
,
1242
,
/* 450 */
1243
,
1244
,
615
,
55
,
410
,
316
,
529
,
1174
,
54
,
319
,
/* 450 */
1243
,
1244
,
615
,
318
,
150
,
150
,
1538
,
1174
,
319
,
1182
,
/* 460 */
322
,
1633
,
1172
,
130
,
150
,
445
,
444
,
130
,
1538
,
562
,
/* 460 */
1574
,
1576
,
1172
,
317
,
150
,
351
,
130
,
350
,
1536
,
291
,
/* 470 */
443
,
382
,
1496
,
111
,
440
,
311
,
1496
,
439
,
438
,
437
,
/* 470 */
399
,
289
,
288
,
395
,
433
,
1496
,
442
,
441
,
435
,
1155
,
/* 480 */
1
536
,
474
,
1177
,
1178
,
20
3
,
1224
,
1225
,
1227
,
1228
,
1229
,
/* 480 */
1
156
,
195
,
1177
,
1178
,
136
3
,
1224
,
1225
,
1227
,
1228
,
1229
,
/* 490 */
1230
,
1231
,
5
12
,
534
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
/* 490 */
1230
,
1231
,
5
30
,
526
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
/* 500 */
1384
,
1794
,
1147
,
1199
,
197
,
1174
,
1575
,
1576
,
36
,
3
4
,
/* 500 */
434
,
567
,
1199
,
1621
,
1383
,
1174
,
502
,
497
,
105
,
10
4
,
/* 510 */
32
,
31
,
30
,
147
,
1307
,
161
,
160
,
1791
,
35
,
33
,
/* 510 */
103
,
102
,
101
,
100
,
99
,
98
,
97
,
459
,
36
,
34
,
/* 520 */
1197
,
1663
,
1155
,
1156
,
195
,
1470
,
306
,
351
,
1173
,
350
,
/* 520 */
566
,
150
,
565
,
564
,
563
,
1185
,
313
,
1663
,
1173
,
1485
,
/* 530 */
1177
,
1178
,
493
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
/* 530 */
1177
,
1178
,
1651
,
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
/* 540 */
5
12
,
534
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
253
,
1679
,
/* 540 */
5
30
,
526
,
1239
,
1240
,
1241
,
1242
,
1243
,
1244
,
331
,
1647
,
/* 550 */
1
633
,
1524
,
533
,
1171
,
1383
,
1621
,
533
,
517
,
1382
,
1250
,
/* 550 */
1
250
,
584
,
1647
,
1171
,
1633
,
1679
,
1197
,
1746
,
1196
,
1794
,
/* 560 */
277
,
114
,
1195
,
1005
,
367
,
1197
,
1479
,
516
,
106
,
375
,
/* 560 */
277
,
1472
,
1195
,
511
,
1643
,
1649
,
1382
,
1643
,
1649
,
375
,
/* 570 */
1179
,
1633
,
387
,
466
,
533
,
431
,
497
,
1422
,
1211
,
469
,
/* 570 */
1179
,
147
,
387
,
534
,
120
,
1791
,
528
,
1633
,
1663
,
528
,
/* 580 */
1007
,
1494
,
569
,
150
,
1381
,
1494
,
368
,
2
,
1692
,
34
3
,
/* 580 */
157
,
1742
,
37
,
35
,
33
,
32
,
31
,
2
,
585
,
58
3
,
/* 590 */
388
,
82
,
1664
,
519
,
1666
,
1667
,
515
,
1481
,
536
,
112
,
/* 590 */
388
,
485
,
346
,
1692
,
1324
,
1381
,
952
,
83
,
1664
,
537
,
/* 600 */
331
,
1732
,
1477
,
1494
,
1633
,
280
,
1728
,
198
,
1633
,
615
,
/* 600 */
1666
,
1667
,
533
,
106
,
528
,
61
,
1679
,
1732
,
60
,
615
,
/* 610 */
345
,
341
,
533
,
495
,
144
,
1739
,
1740
,
1794
,
1744
,
1172
,
/* 610 */
431
,
306
,
1728
,
143
,
532
,
471
,
1633
,
485
,
410
,
1172
,
/* 620 */
1
794
,
940
,
941
,
1538
,
106
,
1376
,
11
,
10
,
222
,
14
7
,
/* 620 */
1
494
,
429
,
1264
,
253
,
534
,
235
,
1524
,
234
,
1633
,
35
7
,
/* 630 */
317
,
436
,
147
,
1791
,
1633
,
1536
,
1791
,
591
,
590
,
589
,
/* 630 */
486
,
1759
,
1746
,
493
,
1322
,
1323
,
1325
,
1326
,
37
,
35
,
/* 640 */
321
,
1494
,
588
,
587
,
586
,
116
,
581
,
580
,
579
,
578
,
/* 640 */
33
,
32
,
31
,
1269
,
1692
,
1633
,
1494
,
1299
,
273
,
1664
,
/* 650 */
5
77
,
576
,
575
,
574
,
123
,
570
,
32
,
31
,
3
0
,
1380
,
/* 650 */
5
37
,
1666
,
1667
,
533
,
572
,
528
,
1741
,
1705
,
147
0
,
1380
,
/* 660 */
386
,
1
29
9
,
1174
,
381
,
380
,
379
,
378
,
377
,
374
,
373
,
/* 660 */
386
,
1
47
9
,
1174
,
381
,
380
,
379
,
378
,
377
,
374
,
373
,
/* 670 */
372
,
371
,
370
,
366
,
365
,
364
,
363
,
362
,
361
,
360
,
/* 670 */
372
,
371
,
370
,
366
,
365
,
364
,
363
,
362
,
361
,
360
,
/* 680 */
359
,
499
,
1663
,
520
,
1379
,
1226
,
1197
,
1177
,
1178
,
1584
,
/* 680 */
359
,
1379
,
26
,
1378
,
281
,
1422
,
1481
,
1177
,
1178
,
1200
,
/* 690 */
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
512
,
534
,
1239
,
/* 690 */
1224
,
1225
,
1227
,
1228
,
1229
,
1230
,
1231
,
530
,
526
,
1239
,
/* 700 */
1240
,
1241
,
1242
,
1243
,
1244
,
1264
,
131
,
1276
,
1378
,
1633
,
/* 700 */
1240
,
1241
,
1242
,
1243
,
1244
,
485
,
131
,
485
,
507
,
1633
,
/* 710 */
1679
,
259
,
573
,
533
,
1466
,
7
,
511
,
533
,
496
,
1471
,
/* 710 */
573
,
259
,
1466
,
507
,
1538
,
569
,
1262
,
367
,
1356
,
320
,
/* 720 */
1200
,
533
,
459
,
257
,
53
,
409
,
1269
,
52
,
516
,
1491
,
/* 720 */
485
,
1226
,
1377
,
257
,
53
,
1197
,
1537
,
52
,
1374
,
1373
,
/* 730 */
1226
,
533
,
1633
,
1610
,
1633
,
533
,
36
,
34
,
32
,
31
,
/* 730 */
457
,
1633
,
106
,
1633
,
1494
,
7
,
1494
,
115
,
1663
,
436
,
/* 740 */
30
,
1377
,
1494
,
244
,
162
,
1374
,
1494
,
467
,
1663
,
1692
,
/* 740 */
1575
,
1576
,
115
,
455
,
162
,
591
,
590
,
589
,
321
,
1494
,
/* 750 */
1494
,
501
,
83
,
1664
,
519
,
1666
,
1667
,
515
,
1633
,
536
,
/* 750 */
588
,
587
,
586
,
116
,
581
,
580
,
579
,
578
,
577
,
576
,
/* 760 */
1494
,
1373
,
1732
,
1794
,
1494
,
25
,
299
,
1728
,
143
,
55
,
/* 760 */
575
,
574
,
123
,
570
,
485
,
1263
,
1679
,
1372
,
1477
,
55
,
/* 770 */
36
,
34
,
32
,
31
,
30
,
147
,
1679
,
1469
,
533
,
1791
,
/* 770 */
198
,
485
,
1633
,
485
,
511
,
113
,
368
,
485
,
1633
,
1633
,
/* 780 */
223
,
533
,
281
,
130
,
517
,
475
,
1759
,
435
,
533
,
1372
,
/* 780 */
113
,
940
,
941
,
409
,
534
,
1491
,
1268
,
516
,
1633
,
1610
,
/* 790 */
530
,
1633
,
1497
,
531
,
516
,
1633
,
185
,
1371
,
1633
,
183
,
/* 790 */
145
,
1739
,
1740
,
1494
,
1744
,
146
,
1739
,
1740
,
1371
,
1744
,
/* 800 */
320
,
476
,
1370
,
1369
,
1663
,
81
,
1211
,
1494
,
1368
,
434
,
/* 800 */
1494
,
1355
,
1494
,
529
,
1692
,
81
,
1494
,
1663
,
83
,
1664
,
/* 810 */
1494
,
1633
,
567
,
504
,
1262
,
1692
,
281
,
1494
,
274
,
1664
,
/* 810 */
537
,
1666
,
1667
,
533
,
218
,
528
,
519
,
1633
,
1732
,
1370
,
/* 820 */
519
,
1666
,
1667
,
515
,
509
,
536
,
1751
,
1295
,
493
,
561
,
/* 820 */
1369
,
524
,
306
,
1728
,
143
,
28
,
311
,
1257
,
1258
,
1259
,
/* 830 */
457
,
566
,
1679
,
565
,
564
,
563
,
59
,
58
,
355
,
1633
,
/* 830 */
1260
,
1261
,
1265
,
1266
,
1267
,
1679
,
59
,
58
,
355
,
1751
,
/* 840 */
514
,
156
,
1452
,
455
,
1538
,
207
,
349
,
1633
,
1262
,
584
,
/* 840 */
1295
,
156
,
1760
,
535
,
1368
,
1367
,
349
,
185
,
1633
,
187
,
/* 850 */
516
,
1226
,
1633
,
1633
,
1633
,
1367
,
1537
,
114
,
1633
,
276
,
/* 850 */
183
,
1366
,
186
,
534
,
1412
,
1298
,
561
,
1633
,
189
,
276
,
/* 860 */
1173
,
226
,
339
,
1263
,
337
,
333
,
329
,
153
,
324
,
1298
,
/* 860 */
485
,
188
,
339
,
1181
,
337
,
333
,
329
,
153
,
324
,
1633
,
/* 870 */
567
,
1692
,
1412
,
1182
,
273
,
1664
,
519
,
1666
,
1667
,
515
,
/* 870 */
1633
,
485
,
467
,
1692
,
1407
,
1663
,
446
,
83
,
1664
,
537
,
/* 880 */
513
,
536
,
510
,
1704
,
1268
,
1171
,
1366
,
1407
,
1295
,
566
,
/* 880 */
1666
,
1667
,
533
,
483
,
528
,
485
,
485
,
1732
,
1405
,
1494
,
/* 890 */
346
,
565
,
564
,
563
,
446
,
112
,
120
,
1263
,
187
,
150
,
/* 890 */
1226
,
306
,
1728
,
1807
,
1633
,
1633
,
448
,
484
,
244
,
150
,
/* 900 */
189
,
186
,
1179
,
188
,
191
,
1633
,
1663
,
190
,
46
,
448
,
/* 900 */
1494
,
1633
,
1766
,
1679
,
11
,
10
,
191
,
1663
,
1295
,
190
,
/* 910 */
146
,
1739
,
1740
,
1405
,
1744
,
11
,
10
,
1653
,
1268
,
1358
,
/* 910 */
451
,
535
,
466
,
38
,
1494
,
1494
,
977
,
208
,
1358
,
1359
,
/* 920 */
1359
,
480
,
1181
,
27
,
304
,
1257
,
1258
,
1259
,
1260
,
1261
,
/* 920 */
1376
,
534
,
118
,
119
,
238
,
1633
,
120
,
78
,
46
,
1184
,
/* 930 */
1265
,
1266
,
1267
,
210
,
1679
,
451
,
1633
,
471
,
502
,
1185
,
/* 930 */
221
,
38
,
1452
,
978
,
38
,
1679
,
507
,
74
,
494
,
460
,
/* 940 */
78
,
615
,
496
,
37
,
37
,
460
,
37
,
1254
,
233
,
1321
,
/* 940 */
1663
,
1692
,
229
,
535
,
1254
,
83
,
1664
,
537
,
1666
,
1667
,
/* 950 */
74
,
1172
,
516
,
217
,
1655
,
1680
,
1633
,
27
,
304
,
1257
,
/* 950 */
533
,
1680
,
528
,
534
,
1128
,
1732
,
38
,
1633
,
209
,
306
,
/* 960 */
1258
,
1259
,
1260
,
1261
,
1265
,
1266
,
1267
,
118
,
1663
,
1396
,
/* 960 */
1728
,
1807
,
1396
,
478
,
215
,
115
,
428
,
1036
,
1679
,
1321
,
/* 970 */
119
,
1533
,
120
,
1692
,
212
,
46
,
83
,
1664
,
519
,
1666
,
/* 970 */
1789
,
224
,
1270
,
1692
,
517
,
1232
,
535
,
83
,
1664
,
537
,
/* 980 */
1667
,
515
,
977
,
536
,
1270
,
1232
,
1732
,
1128
,
1184
,
235
,
/* 980 */
1666
,
1667
,
533
,
512
,
528
,
541
,
534
,
1732
,
1663
,
119
,
/* 990 */
299
,
1728
,
143
,
541
,
1174
,
428
,
1679
,
1762
,
494
,
978
,
/* 990 */
1633
,
306
,
1728
,
1807
,
512
,
1762
,
1533
,
252
,
120
,
121
,
/* 1000 */
1663
,
225
,
505
,
119
,
517
,
228
,
120
,
230
,
525
,
3
,
/* 1000 */
508
,
237
,
1750
,
113
,
240
,
520
,
1692
,
242
,
3
,
119
,
/* 1010 */
1760
,
241
,
5
,
1036
,
516
,
121
,
252
,
119
,
1633
,
1177
,
/* 1010 */
265
,
1664
,
537
,
1666
,
1667
,
533
,
1679
,
528
,
232
,
1739
,
/* 1020 */
1178
,
323
,
1195
,
326
,
330
,
286
,
287
,
1005
,
1679
,
249
,
/* 1020 */
506
,
5
,
505
,
323
,
535
,
1794
,
1064
,
1195
,
326
,
330
,
/* 1030 */
1139
,
369
,
1573
,
376
,
1064
,
1692
,
517
,
158
,
83
,
1664
,
/* 1030 */
1068
,
286
,
1005
,
287
,
534
,
249
,
1794
,
149
,
1633
,
1074
,
/* 1040 */
519
,
1666
,
1667
,
515
,
1068
,
536
,
516
,
1074
,
1732
,
384
,
/* 1040 */
1072
,
1791
,
512
,
369
,
1573
,
1139
,
158
,
376
,
149
,
384
,
/* 1050 */
1633
,
389
,
299
,
1728
,
1807
,
383
,
1072
,
1201
,
122
,
385
,
/* 1050 */
122
,
383
,
1791
,
385
,
1692
,
389
,
1201
,
390
,
265
,
1664
,
/* 1060 */
1663
,
390
,
1204
,
1766
,
401
,
398
,
165
,
1692
,
402
,
167
,
/* 1060 */
537
,
1666
,
1667
,
533
,
398
,
528
,
1663
,
1204
,
401
,
165
,
/* 1070 */
83
,
1664
,
519
,
1666
,
1667
,
515
,
1203
,
536
,
1205
,
404
,
/* 1070 */
402
,
1203
,
167
,
1043
,
559
,
558
,
557
,
1047
,
556
,
1049
,
/* 1080 */
1732
,
403
,
170
,
406
,
299
,
1728
,
1807
,
172
,
1679
,
407
,
/* 1080 */
1050
,
555
,
1052
,
552
,
1794
,
1058
,
549
,
1060
,
1061
,
546
,
/* 1090 */
1202
,
175
,
1663
,
408
,
62
,
1789
,
517
,
411
,
178
,
430
,
/* 1090 */
543
,
403
,
1205
,
170
,
1679
,
404
,
147
,
406
,
172
,
407
,
/* 1100 */
432
,
1484
,
182
,
86
,
1480
,
184
,
516
,
295
,
124
,
1179
,
/* 1100 */
1791
,
1202
,
535
,
408
,
175
,
62
,
1663
,
411
,
178
,
430
,
/* 1110 */
1633
,
125
,
1482
,
1478
,
1615
,
126
,
127
,
1614
,
196
,
461
,
/* 1110 */
432
,
1484
,
534
,
182
,
1179
,
1480
,
1633
,
86
,
184
,
124
,
/* 1120 */
1679
,
199
,
250
,
202
,
465
,
462
,
1200
,
1692
,
517
,
468
,
/* 1120 */
295
,
1615
,
125
,
1482
,
1614
,
250
,
1478
,
126
,
461
,
127
,
/* 1130 */
83
,
1664
,
519
,
1666
,
1667
,
515
,
472
,
536
,
516
,
205
,
/* 1130 */
196
,
462
,
1692
,
199
,
1679
,
473
,
84
,
1664
,
537
,
1666
,
/* 1140 */
1732
,
481
,
1633
,
1663
,
299
,
1728
,
1807
,
497
,
470
,
478
,
/* 1140 */
1667
,
533
,
535
,
528
,
468
,
202
,
1732
,
472
,
465
,
205
,
/* 1150 */
473
,
523
,
1773
,
1772
,
298
,
1750
,
490
,
208
,
1763
,
1692
,
/* 1150 */
1731
,
1728
,
534
,
491
,
1582
,
476
,
1633
,
470
,
479
,
1581
,
/* 1160 */
211
,
6
,
264
,
1664
,
519
,
1666
,
1667
,
515
,
1753
,
536
,
/* 1160 */
213
,
70
,
480
,
298
,
251
,
1663
,
1200
,
219
,
481
,
495
,
/* 1170 */
484
,
1679
,
216
,
1663
,
477
,
113
,
1295
,
218
,
1199
,
517
,
/* 1170 */
6
,
1753
,
1692
,
1773
,
211
,
1772
,
84
,
1664
,
537
,
1666
,
/* 1180 */
40
,
300
,
1747
,
506
,
503
,
18
,
527
,
1582
,
1794
,
516
,
/* 1180 */
1667
,
533
,
504
,
528
,
1663
,
1495
,
1732
,
488
,
1295
,
1199
,
/* 1190 */
137
,
521
,
522
,
1633
,
219
,
1581
,
526
,
308
,
497
,
237
,
/* 1190 */
523
,
1728
,
489
,
1679
,
490
,
1763
,
223
,
305
,
498
,
114
,
/* 1200 */
149
,
1679
,
528
,
224
,
1791
,
251
,
1663
,
1495
,
1713
,
517
,
/* 1200 */
41
,
535
,
518
,
521
,
307
,
230
,
19
,
72
,
539
,
254
,
/* 1210 */
1692
,
1810
,
1790
,
264
,
1664
,
519
,
1666
,
1667
,
515
,
516
,
/* 1210 */
228
,
534
,
1679
,
1467
,
231
,
1633
,
246
,
136
,
260
,
47
,
/* 1220 */
536
,
239
,
71
,
1633
,
73
,
539
,
246
,
254
,
500
,
614
,
/* 1220 */
535
,
137
,
1747
,
256
,
258
,
614
,
275
,
266
,
1627
,
1626
,
/* 1230 */
136
,
227
,
1467
,
229
,
1679
,
507
,
1663
,
265
,
47
,
1794
,
/* 1230 */
534
,
1692
,
57
,
1625
,
1633
,
134
,
1664
,
537
,
1666
,
1667
,
/* 1240 */
1692
,
256
,
517
,
84
,
1664
,
519
,
1666
,
1667
,
515
,
258
,
/* 1240 */
533
,
1622
,
528
,
1713
,
325
,
1810
,
327
,
1166
,
328
,
1167
,
/* 1250 */
536
,
147
,
516
,
1732
,
275
,
1791
,
1633
,
508
,
1728
,
266
,
/* 1250 */
1692
,
618
,
154
,
236
,
84
,
1664
,
537
,
1666
,
1667
,
533
,
/* 1260 */
1627
,
1626
,
57
,
1625
,
1679
,
325
,
1622
,
327
,
328
,
332
,
/* 1260 */
1663
,
528
,
332
,
1790
,
1732
,
248
,
515
,
239
,
1620
,
1729
,
/* 1270 */
1166
,
1167
,
517
,
1692
,
154
,
1620
,
134
,
1664
,
519
,
1666
,
/* 1270 */
304
,
303
,
522
,
334
,
241
,
336
,
1619
,
107
,
513
,
1808
,
/* 1280 */
1667
,
515
,
516
,
536
,
334
,
335
,
1633
,
1663
,
336
,
1619
,
/* 1280 */
1187
,
335
,
338
,
607
,
603
,
599
,
595
,
247
,
1679
,
1618
,
/* 1290 */
338
,
1618
,
340
,
1617
,
342
,
1616
,
1663
,
344
,
1600
,
155
,
/* 1290 */
340
,
1617
,
1663
,
297
,
342
,
1616
,
535
,
344
,
1600
,
155
,
/* 1300 */
1142
,
347
,
1141
,
1692
,
348
,
1594
,
84
,
1664
,
519
,
1666
,
/* 1300 */
347
,
348
,
1173
,
1142
,
1141
,
1180
,
534
,
1594
,
1593
,
353
,
/* 1310 */
1667
,
515
,
1593
,
536
,
353
,
1679
,
1732
,
354
,
1592
,
498
,
/* 1310 */
1633
,
1592
,
80
,
354
,
1591
,
216
,
1111
,
1566
,
1565
,
1564
,
/* 1320 */
1808
,
1729
,
1591
,
517
,
1679
,
1111
,
1566
,
1565
,
1564
,
1563
,
/* 1320 */
1679
,
1563
,
1179
,
1562
,
1561
,
487
,
1692
,
1171
,
535
,
1560
,
/* 1330 */
1562
,
1561
,
517
,
516
,
1560
,
1559
,
1558
,
1633
,
1557
,
1556
,
/* 1330 */
274
,
1664
,
537
,
1666
,
1667
,
533
,
1559
,
528
,
534
,
450
,
/* 1340 */
1555
,
1554
,
516
,
1553
,
1552
,
1551
,
1633
,
1550
,
1549
,
117
,
/* 1340 */
1558
,
1557
,
1633
,
1556
,
1179
,
1555
,
1554
,
1553
,
482
,
1552
,
/* 1350 */
1663
,
1548
,
1547
,
1546
,
1692
,
1545
,
1544
,
269
,
1664
,
519
,
/* 1350 */
1551
,
1550
,
1549
,
117
,
458
,
1548
,
1663
,
1547
,
1692
,
1546
,
/* 1360 */
1666
,
1667
,
515
,
1692
,
536
,
1543
,
134
,
1664
,
519
,
1666
,
/* 1360 */
1545
,
492
,
274
,
1664
,
537
,
1666
,
1667
,
533
,
193
,
528
,
/* 1370 */
1667
,
515
,
1113
,
536
,
1542
,
1541
,
1540
,
1539
,
1679
,
1424
,
/* 1370 */
1544
,
1183
,
1543
,
474
,
108
,
1113
,
203
,
1542
,
1541
,
1540
,
/* 1380 */
1392
,
943
,
163
,
108
,
942
,
1391
,
517
,
1608
,
1602
,
1590
,
/* 1380 */
453
,
1539
,
1424
,
615
,
1679
,
447
,
1392
,
943
,
163
,
942
,
/* 1390 */
1663
,
171
,
1589
,
394
,
489
,
140
,
516
,
164
,
109
,
169
,
/* 1390 */
192
,
1391
,
535
,
1172
,
1147
,
140
,
197
,
1608
,
1602
,
109
,
/* 1400 */
1633
,
396
,
1579
,
303
,
45
,
174
,
1663
,
1473
,
1423
,
1421
,
/* 1400 */
394
,
164
,
534
,
1590
,
169
,
396
,
1633
,
171
,
1589
,
1663
,
/* 1410 */
1809
,
1419
,
1417
,
412
,
413
,
414
,
417
,
1692
,
1679
,
971
,
/* 1410 */
1579
,
1473
,
1423
,
174
,
1188
,
51
,
1421
,
971
,
50
,
1419
,
/* 1420 */
274
,
1664
,
519
,
1666
,
1667
,
515
,
514
,
536
,
416
,
420
,
/* 1420 */
414
,
1663
,
1692
,
1417
,
1415
,
413
,
269
,
1664
,
537
,
1666
,
/* 1430 */
418
,
421
,
422
,
1415
,
1679
,
426
,
516
,
424
,
1404
,
425
,
/* 1430 */
1667
,
533
,
412
,
528
,
416
,
417
,
1174
,
1679
,
418
,
1191
,
/* 1440 */
1633
,
1403
,
517
,
1390
,
1475
,
1077
,
181
,
1078
,
1474
,
1413
,
/* 1440 */
421
,
420
,
422
,
424
,
425
,
535
,
426
,
1404
,
1403
,
1679
,
/* 1450 */
1004
,
582
,
516
,
1003
,
1663
,
584
,
1633
,
1692
,
292
,
305
,
/* 1450 */
526
,
1239
,
1240
,
1390
,
310
,
534
,
1475
,
535
,
45
,
1633
,
/* 1460 */
273
,
1664
,
519
,
1666
,
1667
,
515
,
1408
,
536
,
1002
,
1705
,
/* 1460 */
1078
,
1177
,
1178
,
503
,
1077
,
1474
,
582
,
534
,
1004
,
1003
,
/* 1470 */
449
,
1001
,
998
,
1692
,
997
,
996
,
274
,
1664
,
519
,
1666
,
/* 1470 */
1413
,
1633
,
181
,
1002
,
1663
,
1692
,
1001
,
584
,
998
,
134
,
/* 1480 */
1667
,
515
,
1679
,
536
,
293
,
1406
,
1663
,
294
,
1389
,
452
,
/* 1480 */
1664
,
537
,
1666
,
1667
,
533
,
997
,
528
,
1692
,
996
,
292
,
/* 1490 */
517
,
180
,
1388
,
454
,
456
,
85
,
1607
,
1149
,
1601
,
463
,
/* 1490 */
1408
,
274
,
1664
,
537
,
1666
,
1667
,
533
,
293
,
528
,
449
,
/* 1500 */
516
,
1588
,
1587
,
141
,
1633
,
1586
,
1578
,
307
,
49
,
427
,
/* 1500 */
1406
,
294
,
1679
,
1389
,
452
,
454
,
1388
,
312
,
456
,
180
,
/* 1510 */
423
,
419
,
415
,
179
,
1679
,
67
,
1663
,
204
,
464
,
4
,
/* 1510 */
535
,
85
,
1607
,
1149
,
49
,
1601
,
463
,
1588
,
1587
,
1586
,
/* 1520 */
37
,
1692
,
517
,
206
,
274
,
1664
,
519
,
1666
,
1667
,
515
,
/* 1520 */
534
,
141
,
1663
,
1809
,
1633
,
128
,
1578
,
427
,
423
,
419
,
/* 1530 */
15
,
536
,
516
,
128
,
209
,
43
,
1633
,
1320
,
64
,
200
,
/* 1530 */
415
,
179
,
204
,
464
,
200
,
67
,
15
,
1663
,
1577
,
210
,
/* 1540 */
135
,
177
,
213
,
215
,
1679
,
22
,
48
,
1653
,
214
,
1313
,
/* 1540 */
1692
,
207
,
206
,
477
,
274
,
1664
,
537
,
1666
,
1667
,
533
,
/* 1550 */
68
,
23
,
517
,
1692
,
42
,
1292
,
260
,
1664
,
519
,
1666
,
/* 1550 */
1679
,
528
,
48
,
68
,
214
,
314
,
64
,
212
,
535
,
177
,
/* 1560 */
1667
,
515
,
516
,
536
,
221
,
1291
,
1633
,
1663
,
138
,
1349
,
/* 1560 */
74
,
69
,
4
,
220
,
38
,
1679
,
217
,
1318
,
534
,
222
,
/* 1570 */
17
,
1338
,
1344
,
1343
,
301
,
1348
,
10
,
1347
,
302
,
19
,
/* 1570 */
1189
,
1320
,
1633
,
535
,
44
,
1313
,
226
,
1663
,
135
,
225
,
/* 1580 */
1255
,
139
,
1234
,
1692
,
151
,
29
,
268
,
1664
,
519
,
1666
,
/* 1580 */
16
,
227
,
23
,
534
,
1653
,
73
,
17
,
1633
,
1692
,
1292
,
/* 1590 */
1667
,
515
,
12
,
536
,
1233
,
1679
,
20
,
1219
,
176
,
16
,
/* 1590 */
24
,
1291
,
274
,
1664
,
537
,
1666
,
1667
,
533
,
233
,
528
,
/* 1600 */
168
,
518
,
173
,
517
,
405
,
41
,
13
,
1663
,
1577
,
238
,
/* 1600 */
43
,
1652
,
138
,
1692
,
18
,
1679
,
1349
,
261
,
1664
,
537
,
/* 1610 */
74
,
524
,
1652
,
516
,
232
,
21
,
234
,
1633
,
1318
,
1189
,
/* 1610 */
1666
,
1667
,
533
,
535
,
528
,
42
,
176
,
1663
,
168
,
13
,
/* 1620 */
236
,
240
,
166
,
69
,
70
,
243
,
1695
,
540
,
1236
,
535
,
/* 1620 */
173
,
1338
,
405
,
534
,
1344
,
10
,
1343
,
1633
,
308
,
1348
,
/* 1630 */
44
,
1071
,
1065
,
538
,
1692
,
1679
,
315
,
270
,
1664
,
519
,
/* 1630 */
1347
,
309
,
20
,
1255
,
1695
,
1219
,
1663
,
1236
,
1234
,
139
,
/* 1640 */
1666
,
1667
,
515
,
517
,
536
,
542
,
544
,
1663
,
1062
,
1059
,
/* 1640 */
166
,
527
,
30
,
1692
,
1233
,
1679
,
12
,
268
,
1664
,
537
,
/* 1650 */
545
,
547
,
548
,
516
,
550
,
1053
,
553
,
1633
,
551
,
1057
,
/* 1650 */
1666
,
1667
,
533
,
535
,
528
,
21
,
151
,
536
,
538
,
1042
,
/* 1660 */
1051
,
1056
,
1663
,
554
,
1055
,
1054
,
75
,
1042
,
76
,
560
,
/* 1660 */
560
,
22
,
540
,
534
,
1679
,
315
,
542
,
1633
,
1065
,
1062
,
/* 1670 */
1073
,
77
,
1070
,
568
,
1692
,
1679
,
969
,
261
,
1664
,
519
,
/* 1670 */
545
,
544
,
535
,
547
,
1059
,
548
,
550
,
553
,
1053
,
551
,
/* 1680 */
1666
,
1667
,
515
,
517
,
536
,
993
,
1011
,
245
,
991
,
571
,
/* 1680 */
1057
,
1051
,
534
,
1692
,
554
,
75
,
1633
,
270
,
1664
,
537
,
/* 1690 */
1679
,
986
,
1008
,
516
,
990
,
989
,
988
,
1633
,
517
,
987
,
/* 1690 */
1666
,
1667
,
533
,
1663
,
528
,
1056
,
1073
,
76
,
77
,
1070
,
/* 1700 */
985
,
984
,
1006
,
981
,
980
,
979
,
976
,
975
,
516
,
974
,
/* 1700 */
969
,
1071
,
1692
,
568
,
993
,
1055
,
262
,
1664
,
537
,
1666
,
/* 1710 */
1420
,
592
,
1633
,
1663
,
1692
,
593
,
594
,
271
,
1664
,
519
,
/* 1710 */
1667
,
533
,
1054
,
528
,
1011
,
571
,
245
,
991
,
990
,
989
,
/* 1720 */
1666
,
1667
,
515
,
1418
,
536
,
1663
,
597
,
596
,
598
,
1692
,
/* 1720 */
986
,
1679
,
1008
,
988
,
1420
,
1663
,
987
,
985
,
984
,
535
,
/* 1730 */
1416
,
600
,
262
,
1664
,
519
,
1666
,
1667
,
515
,
601
,
536
,
/* 1730 */
1006
,
981
,
980
,
979
,
976
,
1418
,
975
,
974
,
592
,
534
,
/* 1740 */
602
,
1679
,
604
,
605
,
606
,
1402
,
608
,
609
,
1401
,
517
,
/* 1740 */
593
,
594
,
598
,
1633
,
596
,
597
,
1416
,
601
,
600
,
602
,
/* 1750 */
1414
,
1387
,
613
,
1679
,
612
,
1175
,
255
,
616
,
617
,
516
,
/* 1750 */
1414
,
605
,
606
,
1679
,
604
,
1402
,
608
,
609
,
1401
,
1692
,
/* 1760 */
1362
,
517
,
1362
,
1633
,
1362
,
1663
,
1362
,
1362
,
1362
,
1362
,
/* 1760 */
1387
,
535
,
613
,
271
,
1664
,
537
,
1666
,
1667
,
533
,
612
,
/* 1770 */
1362
,
516
,
1362
,
1362
,
1362
,
1633
,
1663
,
1362
,
1362
,
1362
,
/* 1770 */
528
,
534
,
616
,
1663
,
1175
,
1633
,
255
,
617
,
1362
,
1362
,
/* 1780 */
1692
,
1362
,
1362
,
272
,
1664
,
519
,
1666
,
1667
,
515
,
1362
,
/* 1780 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1663
,
1362
,
/* 1790 */
536
,
1362
,
1692
,
1679
,
1362
,
263
,
1664
,
519
,
1666
,
1667
,
/* 1790 */
1362
,
1692
,
1362
,
1362
,
1362
,
263
,
1664
,
537
,
1666
,
1667
,
/* 1800 */
515
,
517
,
536
,
1362
,
1679
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1800 */
533
,
1679
,
528
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
535
,
/* 1810 */
1362
,
516
,
517
,
1362
,
1362
,
1633
,
1362
,
1362
,
1362
,
1362
,
/* 1810 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1679
,
1362
,
1362
,
534
,
/* 1820 */
1362
,
1362
,
516
,
1362
,
1362
,
1362
,
1633
,
1663
,
1362
,
1362
,
/* 1820 */
1362
,
1663
,
1362
,
1633
,
535
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1830 */
1362
,
1362
,
1692
,
1362
,
1362
,
1675
,
1664
,
519
,
1666
,
1667
,
/* 1830 */
1362
,
1362
,
1362
,
1362
,
534
,
1362
,
1663
,
1362
,
1633
,
1692
,
/* 1840 */
515
,
1362
,
536
,
1692
,
1362
,
1362
,
1674
,
1664
,
519
,
1666
,
/* 1840 */
1362
,
1362
,
1362
,
272
,
1664
,
537
,
1666
,
1667
,
533
,
1679
,
/* 1850 */
1667
,
515
,
1362
,
536
,
1362
,
1679
,
1362
,
1663
,
1362
,
1362
,
/* 1850 */
528
,
1362
,
1362
,
1663
,
1692
,
1362
,
1362
,
535
,
264
,
1664
,
/* 1860 */
1362
,
1362
,
1362
,
517
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1860 */
537
,
1666
,
1667
,
533
,
1679
,
528
,
1362
,
534
,
1362
,
1362
,
/* 1870 */
1362
,
1362
,
1362
,
516
,
1362
,
1362
,
1362
,
1633
,
1362
,
1362
,
/* 1870 */
1362
,
1633
,
535
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1880 */
1362
,
1362
,
1362
,
1362
,
1362
,
1679
,
1362
,
1663
,
1362
,
1362
,
/* 1880 */
1362
,
1679
,
534
,
1362
,
1362
,
1362
,
1633
,
1692
,
1362
,
535
,
/* 1890 */
1362
,
1362
,
1362
,
517
,
1692
,
1362
,
1362
,
1673
,
1664
,
519
,
/* 1890 */
1362
,
1675
,
1664
,
537
,
1666
,
1667
,
533
,
1362
,
528
,
534
,
/* 1900 */
1666
,
1667
,
515
,
516
,
536
,
1362
,
1362
,
1633
,
1362
,
1362
,
/* 1900 */
1362
,
1362
,
1692
,
1633
,
1362
,
1362
,
1674
,
1664
,
537
,
1666
,
/* 1910 */
1362
,
1362
,
1362
,
1362
,
1362
,
1679
,
1362
,
1362
,
1362
,
1663
,
/* 1910 */
1667
,
533
,
1362
,
528
,
1362
,
1362
,
1663
,
1362
,
1362
,
1692
,
/* 1920 */
1362
,
1362
,
1362
,
517
,
1692
,
1362
,
1362
,
284
,
1664
,
519
,
/* 1920 */
1362
,
1362
,
1362
,
1673
,
1664
,
537
,
1666
,
1667
,
533
,
1362
,
/* 1930 */
1666
,
1667
,
515
,
516
,
536
,
1362
,
1362
,
1633
,
1362
,
1362
,
/* 1930 */
528
,
1663
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1940 */
1362
,
1362
,
1362
,
313
,
312
,
1362
,
1362
,
1679
,
1362
,
1362
,
/* 1940 */
1362
,
1362
,
1362
,
1362
,
1679
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 1950 */
1362
,
1362
,
1663
,
1187
,
1692
,
517
,
1362
,
283
,
1664
,
519
,
/* 1950 */
1362
,
1362
,
535
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1679
,
/* 1960 */
1666
,
1667
,
515
,
1362
,
536
,
516
,
1362
,
1362
,
1362
,
1633
,
/* 1960 */
1362
,
1362
,
534
,
1362
,
1362
,
1362
,
1633
,
535
,
1362
,
1362
,
/* 1970 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1180
,
1362
,
/* 1970 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
534
,
1362
,
1362
,
/* 1980 */
1679
,
1362
,
1362
,
1362
,
1362
,
1663
,
1692
,
1362
,
517
,
285
,
/* 1980 */
1362
,
1633
,
1692
,
1663
,
1362
,
1362
,
284
,
1664
,
537
,
1666
,
/* 1990 */
1664
,
519
,
1666
,
1667
,
515
,
1179
,
536
,
1362
,
516
,
1362
,
/* 1990 */
1667
,
533
,
1362
,
528
,
1362
,
1362
,
1362
,
1692
,
1362
,
1362
,
/* 2000 */
1362
,
1362
,
1633
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2000 */
1362
,
283
,
1664
,
537
,
1666
,
1667
,
533
,
1362
,
528
,
1362
,
/* 2010 */
1362
,
1362
,
1362
,
1679
,
1362
,
1362
,
493
,
1362
,
1362
,
1692
,
/* 2010 */
1362
,
1679
,
1362
,
1362
,
1362
,
1663
,
1362
,
1362
,
1362
,
535
,
/* 2020 */
1362
,
517
,
282
,
1664
,
519
,
1666
,
1667
,
515
,
1362
,
536
,
/* 2020 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
534
,
/* 2030 */
1362
,
516
,
1362
,
1362
,
537
,
1633
,
1362
,
1362
,
1362
,
1362
,
/* 2030 */
1362
,
1362
,
1362
,
1633
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2040 */
1362
,
1362
,
1362
,
1362
,
1183
,
114
,
493
,
1362
,
1362
,
1362
,
/* 2040 */
1362
,
1362
,
1362
,
1679
,
1362
,
1362
,
1362
,
1362
,
1362
,
1692
,
/* 2050 */
1362
,
1362
,
1692
,
1362
,
1362
,
267
,
1664
,
519
,
1666
,
1667
,
/* 2050 */
1362
,
535
,
1362
,
285
,
1664
,
537
,
1666
,
1667
,
533
,
1362
,
/* 2060 */
515
,
1362
,
536
,
1362
,
497
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2060 */
528
,
534
,
1362
,
1663
,
1362
,
1633
,
1362
,
1362
,
1362
,
1362
,
/* 2070 */
1362
,
1362
,
1362
,
1362
,
1362
,
114
,
1362
,
1362
,
1362
,
1362
,
/* 2070 */
1362
,
1362
,
507
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2080 */
1362
,
1362
,
1362
,
112
,
1362
,
1362
,
1362
,
1188
,
1362
,
1362
,
/* 2080 */
1362
,
1692
,
1362
,
1362
,
1362
,
282
,
1664
,
537
,
1666
,
1667
,
/* 2090 */
1362
,
1362
,
1362
,
1362
,
497
,
1362
,
1362
,
1362
,
220
,
1739
,
/* 2090 */
533
,
1679
,
528
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
535
,
/* 2100 */
492
,
1362
,
491
,
1362
,
1362
,
1794
,
1362
,
1362
,
1362
,
1362
,
/* 2100 */
1362
,
115
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
534
,
/* 2110 */
1362
,
1362
,
1191
,
112
,
1362
,
1362
,
1362
,
149
,
1362
,
1362
,
/* 2110 */
1362
,
1362
,
1362
,
1633
,
1362
,
1362
,
1362
,
1362
,
1362
,
512
,
/* 2120 */
1362
,
1791
,
1362
,
534
,
1239
,
1240
,
1362
,
1362
,
220
,
1739
,
/* 2120 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1692
,
/* 2130 */
492
,
1362
,
491
,
1362
,
1362
,
1794
,
1362
,
1362
,
1362
,
1362
,
/* 2130 */
1362
,
1362
,
1362
,
267
,
1664
,
537
,
1666
,
1667
,
533
,
113
,
/* 2140 */
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
147
,
1362
,
1362
,
/* 2140 */
528
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2150 */
1362
,
1791
,
/* 2150 */
1362
,
1362
,
1362
,
1362
,
232
,
1739
,
506
,
1362
,
505
,
1362
,
/* 2160 */
1362
,
1794
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
1362
,
/* 2170 */
1362
,
1362
,
1362
,
147
,
1362
,
1362
,
1362
,
1791
,
};
};
static
const
YYCODETYPE
yy_lookahead
[]
=
{
static
const
YYCODETYPE
yy_lookahead
[]
=
{
/* 0 */
324
,
325
,
243
,
273
,
251
,
252
,
276
,
273
,
250
,
273
,
/* 0 */
289
,
273
,
246
,
243
,
248
,
249
,
295
,
339
,
240
,
297
,
/* 10 */
276
,
272
,
12
,
13
,
298
,
12
,
13
,
14
,
15
,
16
,
/* 10 */
1
,
2
,
12
,
13
,
12
,
13
,
14
,
15
,
16
,
351
,
/* 20 */
20
,
2
,
22
,
293
,
250
,
257
,
258
,
293
,
253
,
293
,
/* 20 */
20
,
293
,
22
,
355
,
253
,
20
,
12
,
13
,
14
,
15
,
/* 30 */
271
,
12
,
13
,
14
,
15
,
16
,
262
,
250
,
279
,
30
9
,
/* 30 */
16
,
271
,
0
,
14
,
15
,
16
,
308
,
309
,
310
,
27
9
,
/* 40 */
310
,
266
,
284
,
309
,
310
,
309
,
310
,
47
,
289
,
274
,
/* 40 */
12
,
13
,
14
,
15
,
16
,
274
,
271
,
47
,
320
,
289
,
/* 50 */
320
,
250
,
293
,
279
,
320
,
339
,
320
,
298
,
58
,
31
1
,
/* 50 */
250
,
339
,
272
,
293
,
279
,
4
,
297
,
297
,
58
,
27
1
,
/* 60 */
12
,
13
,
14
,
262
,
64
,
243
,
279
,
351
,
20
,
310
,
/* 60 */
12
,
13
,
14
,
351
,
64
,
297
,
278
,
355
,
20
,
309
,
/* 70 */
22
,
355
,
313
,
314
,
315
,
316
,
317
,
318
,
20
,
320
,
/* 70 */
22
,
283
,
58
,
313
,
314
,
315
,
316
,
317
,
318
,
279
,
/* 80 */
279
,
81
,
323
,
335
,
339
,
82
,
327
,
328
,
12
,
13
,
/* 80 */
320
,
81
,
279
,
323
,
82
,
339
,
81
,
327
,
328
,
286
,
/* 90 */
14
,
15
,
16
,
271
,
57
,
47
,
351
,
273
,
339
,
28
9
,
/* 90 */
315
,
82
,
243
,
42
,
43
,
47
,
82
,
351
,
339
,
33
9
,
/* 100 */
355
,
279
,
292
,
103
,
317
,
295
,
58
,
311
,
12
,
13
,
/* 100 */
242
,
355
,
244
,
103
,
90
,
20
,
58
,
339
,
12
,
13
,
/* 110 */
351
,
289
,
64
,
113
,
355
,
293
,
20
,
293
,
22
,
332
,
/* 110 */
351
,
351
,
64
,
113
,
355
,
355
,
20
,
317
,
22
,
351
,
/* 120 */
333
,
334
,
20
,
336
,
12
,
13
,
14
,
15
,
16
,
81
,
/* 120 */
271
,
311
,
263
,
355
,
246
,
93
,
248
,
249
,
279
,
81
,
/* 130 */
2
55
,
335
,
310
,
309
,
310
,
313
,
314
,
315
,
316
,
317
,
/* 130 */
2
71
,
331
,
332
,
333
,
334
,
57
,
336
,
255
,
289
,
280
,
/* 140 */
318
,
0
,
320
,
47
,
320
,
323
,
20
,
339
,
22
,
327
,
/* 140 */
3
,
250
,
293
,
47
,
112
,
335
,
114
,
115
,
116
,
14
,
/* 150 */
328
,
103
,
277
,
253
,
58
,
246
,
156
,
248
,
249
,
351
,
/* 150 */
268
,
103
,
55
,
139
,
58
,
20
,
156
,
75
,
309
,
277
,
/* 160 */
64
,
113
,
21
,
355
,
20
,
24
,
25
,
26
,
27
,
28
,
/* 160 */
64
,
113
,
313
,
314
,
315
,
316
,
317
,
318
,
319
,
320
,
/* 170 */
29
,
30
,
31
,
32
,
274
,
49
,
4
,
81
,
242
,
55
,
/* 170 */
321
,
322
,
256
,
145
,
160
,
284
,
260
,
81
,
81
,
20
,
/* 180 */
244
,
181
,
182
,
81
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 180 */
83
,
181
,
182
,
255
,
184
,
185
,
186
,
187
,
188
,
189
,
/* 190 */
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
103
,
/* 190 */
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
103
,
/* 200 */
2
46
,
22
,
248
,
249
,
156
,
81
,
20
,
83
,
25
6
,
113
,
/* 200 */
2
89
,
119
,
120
,
292
,
156
,
277
,
295
,
165
,
16
6
,
113
,
/* 210 */
21
,
211
,
260
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
/* 210 */
253
,
211
,
170
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
/* 220 */
31
,
32
,
165
,
166
,
148
,
81
,
47
,
170
,
93
,
181
,
/* 220 */
206
,
207
,
208
,
266
,
12
,
13
,
14
,
15
,
16
,
181
,
/* 230 */
182
,
0
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 230 */
182
,
274
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
/* 240 */
192
,
193
,
194
,
195
,
196
,
197
,
198
,
112
,
20
,
114
,
/* 240 */
192
,
193
,
194
,
195
,
196
,
197
,
198
,
20
,
4
,
22
,
/* 250 */
115
,
116
,
156
,
81
,
255
,
24
,
25
,
26
,
27
,
28
,
/* 250 */
81
,
21
,
156
,
243
,
24
,
25
,
26
,
27
,
28
,
29
,
/* 260 */
29
,
30
,
31
,
32
,
4
,
12
,
13
,
268
,
12
,
13
,
/* 260 */
30
,
31
,
32
,
20
,
57
,
12
,
13
,
12
,
13
,
14
,
/* 270 */
1
4
,
15
,
16
,
20
,
311
,
22
,
277
,
181
,
182
,
20
,
/* 270 */
1
5
,
16
,
243
,
20
,
151
,
22
,
49
,
181
,
182
,
93
,
/* 280 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 280 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 290 */
194
,
195
,
196
,
197
,
198
,
81
,
60
,
61
,
335
,
271
,
/* 290 */
194
,
195
,
196
,
197
,
198
,
172
,
173
,
60
,
61
,
243
,
/* 300 */
47
,
65
,
42
,
43
,
68
,
69
,
278
,
231
,
72
,
73
,
/* 300 */
47
,
115
,
65
,
293
,
243
,
68
,
69
,
250
,
211
,
72
,
/* 310 */
7
4
,
283
,
57
,
12
,
13
,
14
,
271
,
64
,
2
,
263
,
/* 310 */
7
3
,
74
,
14
,
12
,
13
,
14
,
2
,
64
,
20
,
262
,
/* 320 */
243
,
20
,
247
,
22
,
279
,
250
,
35
,
271
,
12
,
13
,
/* 320 */
185
,
20
,
293
,
22
,
81
,
81
,
12
,
13
,
14
,
15
,
/* 330 */
1
4
,
15
,
16
,
20
,
81
,
211
,
280
,
94
,
95
,
96
,
/* 330 */
1
6
,
2
,
271
,
0
,
81
,
339
,
279
,
82
,
263
,
20
,
/* 340 */
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
47
,
106
,
/* 340 */
279
,
12
,
13
,
14
,
15
,
16
,
271
,
351
,
47
,
293
,
/* 350 */
107
,
108
,
109
,
110
,
111
,
211
,
103
,
4
,
143
,
19
,
/* 350 */
289
,
355
,
251
,
252
,
293
,
280
,
103
,
20
,
297
,
271
,
/* 360 */
315
,
12
,
13
,
257
,
258
,
64
,
113
,
270
,
14
,
20
,
/* 360 */
271
,
12
,
13
,
226
,
93
,
64
,
113
,
278
,
280
,
20
,
/* 370 */
293
,
22
,
19
,
33
,
20
,
84
,
181
,
86
,
87
,
282
,
/* 370 */
309
,
22
,
283
,
47
,
313
,
314
,
315
,
316
,
317
,
318
,
/* 380 */
89
,
281
,
81
,
211
,
93
,
45
,
33
,
247
,
288
,
289
,
/* 380 */
211
,
320
,
81
,
112
,
323
,
114
,
115
,
116
,
327
,
328
,
/* 390 */
250
,
51
,
52
,
53
,
54
,
55
,
47
,
0
,
45
,
55
,
/* 390 */
64
,
81
,
247
,
60
,
61
,
250
,
47
,
0
,
65
,
44
,
/* 400 */
250
,
145
,
240
,
50
,
103
,
0
,
115
,
64
,
55
,
156
,
/* 400 */
339
,
68
,
69
,
250
,
103
,
72
,
73
,
74
,
0
,
156
,
/* 410 */
3
39
,
243
,
262
,
64
,
113
,
220
,
221
,
222
,
223
,
224
,
/* 410 */
3
24
,
325
,
351
,
64
,
113
,
262
,
355
,
92
,
21
,
270
,
/* 420 */
80
,
279
,
351
,
83
,
80
,
211
,
355
,
83
,
286
,
279
,
/* 420 */
35
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
/* 430 */
81
,
2
16
,
217
,
80
,
181
,
182
,
83
,
184
,
185
,
186
,
/* 430 */
81
,
2
82
,
279
,
143
,
181
,
182
,
81
,
184
,
185
,
186
,
/* 440 */
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
/* 440 */
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
/* 450 */
197
,
198
,
103
,
81
,
57
,
263
,
116
,
156
,
3
,
263
,
/* 450 */
197
,
198
,
103
,
281
,
211
,
211
,
271
,
156
,
263
,
47
,
/* 460 */
2
98
,
293
,
113
,
271
,
211
,
60
,
61
,
271
,
271
,
92
,
/* 460 */
2
88
,
289
,
113
,
278
,
211
,
155
,
271
,
157
,
283
,
84
,
/* 470 */
65
,
75
,
280
,
68
,
69
,
278
,
280
,
72
,
73
,
74
,
/* 470 */
247
,
86
,
87
,
250
,
89
,
280
,
257
,
258
,
93
,
167
,
/* 480 */
283
,
141
,
181
,
182
,
144
,
184
,
185
,
186
,
187
,
188
,
/* 480 */
168
,
169
,
181
,
182
,
0
,
184
,
185
,
186
,
187
,
188
,
/* 490 */
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
/* 490 */
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
/* 500 */
243
,
339
,
162
,
20
,
164
,
156
,
288
,
289
,
12
,
13
,
/* 500 */
115
,
93
,
20
,
0
,
243
,
156
,
216
,
217
,
24
,
25
,
/* 510 */
14
,
15
,
16
,
351
,
14
,
119
,
120
,
355
,
12
,
13
,
/* 510 */
26
,
27
,
28
,
29
,
30
,
31
,
32
,
297
,
12
,
13
,
/* 520 */
20
,
243
,
167
,
168
,
169
,
0
,
20
,
155
,
22
,
157
,
/* 520 */
112
,
211
,
114
,
115
,
116
,
113
,
20
,
243
,
22
,
273
,
/* 530 */
181
,
182
,
2
50
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
/* 530 */
181
,
182
,
2
73
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
/* 540 */
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
264
,
271
,
/* 540 */
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
45
,
293
,
/* 550 */
293
,
267
,
250
,
47
,
243
,
0
,
250
,
279
,
243
,
14
,
/* 550 */
14
,
41
,
293
,
47
,
293
,
271
,
20
,
311
,
20
,
339
,
/* 560 */
18
,
279
,
20
,
47
,
262
,
20
,
272
,
289
,
262
,
27
,
/* 560 */
18
,
0
,
20
,
279
,
308
,
309
,
243
,
308
,
309
,
27
,
/* 570 */
64
,
293
,
30
,
302
,
250
,
269
,
298
,
0
,
82
,
298
,
/* 570 */
64
,
351
,
30
,
289
,
41
,
355
,
320
,
293
,
243
,
320
,
/* 580 */
64
,
279
,
57
,
211
,
243
,
279
,
262
,
81
,
310
,
151
,
/* 580 */
55
,
335
,
12
,
13
,
14
,
15
,
16
,
81
,
257
,
258
,
/* 590 */
48
,
313
,
314
,
315
,
316
,
317
,
318
,
272
,
320
,
317
,
/* 590 */
48
,
250
,
82
,
309
,
181
,
243
,
22
,
313
,
314
,
315
,
/* 600 */
45
,
323
,
272
,
279
,
293
,
327
,
328
,
272
,
29
3
,
103
,
/* 600 */
316
,
317
,
318
,
262
,
320
,
80
,
271
,
323
,
8
3
,
103
,
/* 610 */
172
,
173
,
250
,
331
,
332
,
333
,
334
,
339
,
336
,
113
,
/* 610 */
269
,
327
,
328
,
329
,
279
,
82
,
293
,
250
,
57
,
113
,
/* 620 */
339
,
42
,
43
,
271
,
262
,
244
,
1
,
2
,
145
,
351
,
/* 620 */
279
,
47
,
139
,
264
,
289
,
341
,
267
,
145
,
293
,
262
,
/* 630 */
278
,
269
,
351
,
355
,
293
,
283
,
355
,
60
,
61
,
62
,
/* 630 */
346
,
347
,
311
,
220
,
221
,
222
,
223
,
224
,
12
,
13
,
/* 640 */
63
,
279
,
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
/* 640 */
14
,
15
,
16
,
160
,
309
,
293
,
279
,
4
,
313
,
314
,
/* 650 */
73
,
74
,
75
,
76
,
77
,
78
,
14
,
15
,
16
,
243
,
/* 650 */
315
,
316
,
317
,
318
,
64
,
320
,
335
,
322
,
0
,
243
,
/* 660 */
118
,
4
,
156
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
/* 660 */
118
,
272
,
156
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
/* 670 */
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
/* 670 */
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
/* 680 */
138
,
2
26
,
243
,
289
,
243
,
185
,
20
,
181
,
182
,
295
,
/* 680 */
138
,
2
43
,
199
,
243
,
58
,
0
,
272
,
181
,
182
,
20
,
/* 690 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 690 */
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
/* 700 */
194
,
195
,
196
,
197
,
198
,
139
,
18
,
82
,
243
,
293
,
/* 700 */
194
,
195
,
196
,
197
,
198
,
250
,
18
,
250
,
250
,
293
,
/* 710 */
271
,
23
,
259
,
250
,
261
,
37
,
272
,
250
,
279
,
0
,
/* 710 */
259
,
23
,
261
,
250
,
271
,
57
,
90
,
262
,
148
,
262
,
/* 720 */
20
,
250
,
298
,
35
,
36
,
262
,
160
,
39
,
289
,
262
,
/* 720 */
250
,
185
,
243
,
35
,
36
,
20
,
283
,
39
,
243
,
243
,
/* 730 */
185
,
250
,
293
,
262
,
293
,
250
,
12
,
13
,
14
,
15
,
/* 730 */
21
,
293
,
262
,
293
,
279
,
37
,
279
,
279
,
243
,
269
,
/* 740 */
16
,
243
,
279
,
262
,
56
,
243
,
279
,
262
,
243
,
310
,
/* 740 */
288
,
289
,
279
,
34
,
56
,
60
,
61
,
62
,
63
,
279
,
/* 750 */
279
,
41
,
313
,
314
,
315
,
316
,
317
,
318
,
293
,
320
,
/* 750 */
65
,
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
/* 760 */
279
,
243
,
323
,
339
,
279
,
199
,
327
,
328
,
329
,
81
,
/* 760 */
75
,
76
,
77
,
78
,
250
,
139
,
271
,
243
,
272
,
81
,
/* 770 */
12
,
13
,
14
,
15
,
16
,
351
,
271
,
0
,
250
,
355
,
/* 770 */
272
,
250
,
293
,
250
,
279
,
317
,
262
,
250
,
293
,
293
,
/* 780 */
341
,
250
,
58
,
271
,
279
,
346
,
347
,
93
,
250
,
243
,
/* 780 */
317
,
42
,
43
,
262
,
289
,
262
,
160
,
41
,
293
,
262
,
/* 790 */
262
,
293
,
280
,
262
,
289
,
293
,
85
,
243
,
293
,
88
,
/* 790 */
332
,
333
,
334
,
279
,
336
,
332
,
333
,
334
,
243
,
336
,
/* 800 */
262
,
296
,
243
,
243
,
243
,
117
,
82
,
279
,
243
,
115
,
/* 800 */
279
,
231
,
279
,
272
,
309
,
117
,
279
,
243
,
313
,
314
,
/* 810 */
279
,
293
,
93
,
41
,
90
,
310
,
58
,
279
,
313
,
314
,
/* 810 */
315
,
316
,
317
,
318
,
145
,
320
,
41
,
293
,
323
,
243
,
/* 820 */
315
,
316
,
317
,
318
,
58
,
320
,
209
,
210
,
250
,
272
,
/* 820 */
243
,
58
,
327
,
328
,
329
,
199
,
200
,
201
,
202
,
203
,
/* 830 */
21
,
112
,
271
,
114
,
115
,
116
,
148
,
149
,
150
,
293
,
/* 830 */
204
,
205
,
206
,
207
,
208
,
271
,
148
,
149
,
150
,
209
,
/* 840 */
279
,
153
,
260
,
34
,
271
,
145
,
158
,
293
,
90
,
41
,
/* 840 */
210
,
153
,
347
,
279
,
243
,
243
,
158
,
85
,
293
,
85
,
/* 850 */
289
,
185
,
293
,
293
,
293
,
243
,
283
,
279
,
293
,
171
,
/* 850 */
88
,
243
,
88
,
289
,
0
,
212
,
272
,
293
,
85
,
171
,
/* 860 */
22
,
358
,
174
,
139
,
176
,
177
,
178
,
179
,
180
,
212
,
/* 860 */
250
,
88
,
174
,
47
,
176
,
177
,
178
,
179
,
180
,
293
,
/* 870 */
93
,
310
,
0
,
47
,
313
,
314
,
315
,
316
,
317
,
318
,
/* 870 */
293
,
250
,
262
,
309
,
0
,
243
,
22
,
313
,
314
,
315
,
/* 880 */
319
,
320
,
321
,
322
,
160
,
47
,
243
,
0
,
210
,
112
,
/* 880 */
316
,
317
,
318
,
262
,
320
,
250
,
250
,
323
,
0
,
279
,
/* 890 */
82
,
114
,
115
,
116
,
22
,
317
,
41
,
139
,
85
,
211
,
/* 890 */
185
,
327
,
328
,
329
,
293
,
293
,
22
,
262
,
262
,
211
,
/* 900 */
85
,
88
,
64
,
88
,
85
,
293
,
243
,
88
,
41
,
22
,
/* 900 */
279
,
293
,
338
,
271
,
1
,
2
,
85
,
243
,
210
,
88
,
/* 910 */
332
,
333
,
334
,
0
,
336
,
1
,
2
,
44
,
160
,
196
,
/* 910 */
22
,
279
,
301
,
41
,
279
,
279
,
47
,
41
,
196
,
197
,
/* 920 */
197
,
349
,
47
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
/* 920 */
244
,
289
,
41
,
41
,
358
,
293
,
41
,
81
,
41
,
113
,
/* 930 */
206
,
207
,
208
,
41
,
271
,
22
,
293
,
82
,
228
,
113
,
/* 930 */
41
,
41
,
260
,
64
,
41
,
271
,
250
,
91
,
349
,
305
,
/* 940 */
81
,
103
,
279
,
41
,
41
,
306
,
41
,
181
,
41
,
82
,
/* 940 */
243
,
309
,
343
,
279
,
181
,
313
,
314
,
315
,
316
,
317
,
/* 950 */
91
,
113
,
289
,
343
,
81
,
271
,
293
,
199
,
200
,
201
,
/* 950 */
318
,
271
,
320
,
289
,
82
,
323
,
41
,
293
,
82
,
327
,
/* 960 */
202
,
203
,
204
,
205
,
206
,
207
,
208
,
41
,
243
,
249
,
/* 960 */
328
,
329
,
249
,
82
,
82
,
279
,
251
,
82
,
271
,
82
,
/* 970 */
41
,
282
,
41
,
310
,
82
,
41
,
313
,
314
,
315
,
316
,
/* 970 */
338
,
82
,
82
,
309
,
228
,
82
,
279
,
313
,
314
,
315
,
/* 980 */
317
,
318
,
47
,
320
,
82
,
82
,
323
,
82
,
113
,
82
,
/* 980 */
316
,
317
,
318
,
297
,
320
,
41
,
289
,
323
,
243
,
41
,
/* 990 */
327
,
328
,
329
,
41
,
156
,
251
,
271
,
312
,
337
,
64
,
/* 990 */
293
,
327
,
328
,
329
,
297
,
312
,
282
,
82
,
41
,
41
,
/* 1000 */
243
,
352
,
230
,
41
,
279
,
352
,
41
,
352
,
82
,
340
,
/* 1000 */
337
,
352
,
338
,
317
,
352
,
230
,
309
,
352
,
340
,
41
,
/* 1010 */
347
,
82
,
213
,
82
,
289
,
41
,
82
,
41
,
293
,
181
,
/* 1010 */
313
,
314
,
315
,
316
,
317
,
318
,
271
,
320
,
332
,
333
,
/* 1020 */
182
,
308
,
20
,
250
,
45
,
307
,
257
,
47
,
271
,
300
,
/* 1020 */
334
,
213
,
336
,
307
,
279
,
339
,
82
,
20
,
250
,
45
,
/* 1030 */
154
,
250
,
250
,
287
,
82
,
310
,
279
,
40
,
313
,
314
,
/* 1030 */
82
,
306
,
47
,
257
,
289
,
299
,
339
,
351
,
293
,
82
,
/* 1040 */
315
,
316
,
317
,
318
,
82
,
320
,
289
,
82
,
323
,
139
,
/* 1040 */
82
,
355
,
297
,
250
,
250
,
154
,
40
,
287
,
351
,
139
,
/* 1050 */
293
,
250
,
327
,
328
,
329
,
285
,
82
,
20
,
82
,
285
,
/* 1050 */
82
,
285
,
355
,
285
,
309
,
250
,
20
,
245
,
313
,
314
,
/* 1060 */
243
,
245
,
20
,
338
,
304
,
245
,
255
,
310
,
289
,
255
,
/* 1060 */
315
,
316
,
317
,
318
,
245
,
320
,
243
,
20
,
303
,
255
,
/* 1070 */
313
,
314
,
315
,
316
,
317
,
318
,
20
,
320
,
20
,
299
,
/* 1070 */
289
,
20
,
255
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
/* 1080 */
323
,
297
,
255
,
297
,
327
,
328
,
329
,
255
,
271
,
279
,
/* 1080 */
101
,
102
,
103
,
104
,
339
,
106
,
107
,
108
,
109
,
110
,
/* 1090 */
20
,
255
,
243
,
290
,
255
,
338
,
279
,
250
,
255
,
245
,
/* 1090 */
111
,
296
,
20
,
255
,
271
,
298
,
351
,
296
,
255
,
279
,
/* 1100 */
271
,
271
,
271
,
250
,
271
,
271
,
289
,
245
,
271
,
64
,
/* 1100 */
355
,
20
,
279
,
290
,
255
,
255
,
243
,
250
,
255
,
245
,
/* 1110 */
293
,
271
,
271
,
271
,
293
,
271
,
271
,
293
,
253
,
163
,
/* 1110 */
271
,
271
,
289
,
271
,
64
,
271
,
293
,
250
,
271
,
271
,
/* 1120 */
271
,
253
,
304
,
253
,
289
,
303
,
20
,
310
,
279
,
250
,
/* 1120 */
245
,
293
,
271
,
271
,
293
,
303
,
271
,
271
,
163
,
271
,
/* 1130 */
313
,
314
,
315
,
316
,
317
,
318
,
279
,
320
,
289
,
253
,
/* 1130 */
253
,
302
,
309
,
253
,
271
,
290
,
313
,
314
,
315
,
316
,
/* 1140 */
323
,
219
,
293
,
243
,
327
,
328
,
329
,
298
,
297
,
293
,
/* 1140 */
317
,
318
,
279
,
320
,
250
,
253
,
323
,
279
,
289
,
253
,
/* 1150 */
290
,
218
,
348
,
348
,
293
,
338
,
147
,
294
,
312
,
310
,
/* 1150 */
327
,
328
,
289
,
218
,
294
,
293
,
293
,
296
,
142
,
294
,
/* 1160 */
294
,
225
,
313
,
314
,
315
,
316
,
317
,
318
,
345
,
320
,
/* 1160 */
253
,
253
,
291
,
293
,
267
,
243
,
20
,
294
,
290
,
219
,
/* 1170 */
293
,
271
,
344
,
243
,
214
,
279
,
210
,
308
,
20
,
279
,
/* 1170 */
225
,
345
,
309
,
348
,
279
,
348
,
313
,
314
,
315
,
316
,
/* 1180 */
40
,
232
,
311
,
229
,
227
,
81
,
291
,
294
,
339
,
289
,
/* 1180 */
317
,
318
,
147
,
320
,
243
,
279
,
323
,
214
,
210
,
20
,
/* 1190 */
342
,
293
,
293
,
293
,
330
,
294
,
142
,
293
,
298
,
279
,
/* 1190 */
327
,
328
,
293
,
271
,
293
,
312
,
294
,
293
,
293
,
279
,
/* 1200 */
351
,
271
,
290
,
353
,
355
,
267
,
243
,
279
,
326
,
279
,
/* 1200 */
40
,
279
,
227
,
229
,
232
,
307
,
81
,
81
,
275
,
250
,
/* 1210 */
310
,
359
,
354
,
313
,
314
,
315
,
316
,
317
,
318
,
289
,
/* 1210 */
344
,
289
,
271
,
261
,
330
,
293
,
253
,
304
,
265
,
300
,
/* 1220 */
320
,
253
,
253
,
293
,
81
,
275
,
253
,
250
,
354
,
245
,
/* 1220 */
279
,
342
,
311
,
254
,
241
,
245
,
265
,
265
,
0
,
0
,
/* 1230 */
305
,
353
,
261
,
353
,
271
,
354
,
243
,
265
,
301
,
339
,
/* 1230 */
289
,
309
,
40
,
0
,
293
,
313
,
314
,
315
,
316
,
317
,
/* 1240 */
310
,
254
,
279
,
313
,
314
,
315
,
316
,
317
,
318
,
241
,
/* 1240 */
318
,
0
,
320
,
326
,
72
,
359
,
47
,
47
,
175
,
47
,
/* 1250 */
320
,
351
,
289
,
323
,
265
,
355
,
293
,
327
,
328
,
265
,
/* 1250 */
309
,
19
,
47
,
353
,
313
,
314
,
315
,
316
,
317
,
318
,
/* 1260 */
0
,
0
,
40
,
0
,
271
,
72
,
0
,
47
,
175
,
175
,
/* 1260 */
243
,
320
,
175
,
354
,
323
,
33
,
354
,
353
,
0
,
328
,
/* 1270 */
47
,
47
,
279
,
310
,
47
,
0
,
313
,
314
,
315
,
316
,
/* 1270 */
12
,
13
,
354
,
47
,
353
,
175
,
0
,
45
,
356
,
357
,
/* 1280 */
317
,
318
,
289
,
320
,
47
,
47
,
293
,
243
,
175
,
0
,
/* 1280 */
22
,
47
,
175
,
51
,
52
,
53
,
54
,
55
,
271
,
0
,
/* 1290 */
175
,
0
,
47
,
0
,
47
,
0
,
243
,
47
,
0
,
81
,
/* 1290 */
47
,
0
,
243
,
276
,
47
,
0
,
279
,
47
,
0
,
81
,
/* 1300 */
113
,
160
,
156
,
310
,
159
,
0
,
313
,
314
,
315
,
316
,
/* 1300 */
160
,
159
,
22
,
113
,
156
,
47
,
289
,
0
,
0
,
152
,
/* 1310 */
317
,
318
,
0
,
320
,
152
,
271
,
323
,
151
,
0
,
356
,
/* 1310 */
293
,
0
,
80
,
151
,
0
,
83
,
44
,
0
,
0
,
0
,
/* 1320 */
357
,
328
,
0
,
279
,
271
,
44
,
0
,
0
,
0
,
0
,
/* 1320 */
271
,
0
,
64
,
0
,
0
,
276
,
309
,
47
,
279
,
0
,
/* 1330 */
0
,
0
,
279
,
289
,
0
,
0
,
0
,
293
,
0
,
0
,
/* 1330 */
313
,
314
,
315
,
316
,
317
,
318
,
0
,
320
,
289
,
4
,
/* 1340 */
0
,
0
,
289
,
0
,
0
,
0
,
293
,
0
,
0
,
40
,
/* 1340 */
0
,
0
,
293
,
0
,
64
,
0
,
0
,
0
,
116
,
0
,
/* 1350 */
243
,
0
,
0
,
0
,
310
,
0
,
0
,
313
,
314
,
315
,
/* 1350 */
0
,
0
,
0
,
40
,
19
,
0
,
243
,
0
,
309
,
0
,
/* 1360 */
316
,
317
,
318
,
310
,
320
,
0
,
313
,
314
,
315
,
316
,
/* 1360 */
0
,
103
,
313
,
314
,
315
,
316
,
317
,
318
,
33
,
320
,
/* 1370 */
317
,
318
,
22
,
320
,
0
,
0
,
0
,
0
,
271
,
0
,
/* 1370 */
0
,
113
,
0
,
141
,
37
,
22
,
144
,
0
,
0
,
0
,
/* 1380 */
0
,
14
,
40
,
37
,
14
,
0
,
279
,
0
,
0
,
0
,
/* 1380 */
45
,
0
,
0
,
103
,
271
,
50
,
0
,
14
,
40
,
14
,
/* 1390 */
243
,
147
,
0
,
44
,
350
,
41
,
289
,
38
,
37
,
37
,
/* 1390 */
55
,
0
,
279
,
113
,
162
,
41
,
164
,
0
,
0
,
37
,
/* 1400 */
293
,
44
,
0
,
296
,
90
,
37
,
243
,
0
,
0
,
0
,
/* 1400 */
44
,
38
,
289
,
0
,
37
,
44
,
293
,
147
,
0
,
243
,
/* 1410 */
357
,
0
,
0
,
47
,
45
,
37
,
45
,
310
,
271
,
59
,
/* 1410 */
0
,
0
,
0
,
37
,
156
,
80
,
0
,
59
,
83
,
0
,
/* 1420 */
313
,
314
,
315
,
316
,
317
,
318
,
279
,
320
,
47
,
47
,
/* 1420 */
37
,
243
,
309
,
0
,
0
,
45
,
313
,
314
,
315
,
316
,
/* 1430 */
37
,
45
,
37
,
0
,
271
,
37
,
289
,
47
,
0
,
45
,
/* 1430 */
317
,
318
,
47
,
320
,
47
,
45
,
156
,
271
,
37
,
181
,
/* 1440 */
293
,
0
,
279
,
0
,
0
,
22
,
88
,
47
,
0
,
0
,
/* 1440 */
45
,
47
,
37
,
47
,
45
,
279
,
37
,
0
,
0
,
271
,
/* 1450 */
47
,
41
,
289
,
47
,
243
,
41
,
293
,
310
,
22
,
296
,
/* 1450 */
192
,
193
,
194
,
0
,
276
,
289
,
0
,
279
,
90
,
293
,
/* 1460 */
313
,
314
,
315
,
316
,
317
,
318
,
0
,
320
,
47
,
322
,
/* 1460 */
47
,
181
,
182
,
350
,
22
,
0
,
41
,
289
,
47
,
47
,
/* 1470 */
48
,
47
,
47
,
310
,
47
,
47
,
313
,
314
,
315
,
316
,
/* 1470 */
0
,
293
,
88
,
47
,
243
,
309
,
47
,
41
,
47
,
313
,
/* 1480 */
317
,
318
,
271
,
320
,
22
,
0
,
243
,
22
,
0
,
47
,
/* 1480 */
314
,
315
,
316
,
317
,
318
,
47
,
320
,
309
,
47
,
22
,
/* 1490 */
279
,
33
,
0
,
22
,
22
,
20
,
0
,
47
,
0
,
22
,
/* 1490 */
0
,
313
,
314
,
315
,
316
,
317
,
318
,
22
,
320
,
48
,
/* 1500 */
289
,
0
,
0
,
45
,
293
,
0
,
0
,
296
,
145
,
51
,
/* 1500 */
0
,
22
,
271
,
0
,
47
,
22
,
0
,
276
,
22
,
33
,
/* 1510 */
52
,
53
,
54
,
55
,
271
,
81
,
243
,
37
,
145
,
41
,
/* 1510 */
279
,
20
,
0
,
47
,
145
,
0
,
22
,
0
,
0
,
0
,
/* 1520 */
41
,
310
,
279
,
140
,
313
,
314
,
315
,
316
,
317
,
318
,
/* 1520 */
289
,
45
,
243
,
357
,
293
,
161
,
0
,
51
,
52
,
53
,
/* 1530 */
215
,
320
,
289
,
161
,
82
,
41
,
293
,
82
,
80
,
142
,
/* 1530 */
54
,
55
,
37
,
145
,
142
,
81
,
81
,
243
,
0
,
81
,
/* 1540 */
81
,
83
,
81
,
44
,
271
,
81
,
145
,
44
,
41
,
82
,
/* 1540 */
309
,
82
,
140
,
143
,
313
,
314
,
315
,
316
,
317
,
318
,
/* 1550 */
81
,
41
,
279
,
310
,
41
,
82
,
313
,
314
,
315
,
316
,
/* 1550 */
271
,
320
,
145
,
81
,
140
,
276
,
80
,
37
,
279
,
83
,
/* 1560 */
317
,
318
,
289
,
320
,
44
,
82
,
293
,
243
,
44
,
82
,
/* 1560 */
91
,
81
,
41
,
82
,
41
,
271
,
44
,
82
,
289
,
81
,
/* 1570 */
41
,
82
,
47
,
47
,
47
,
47
,
2
,
47
,
47
,
41
,
/* 1570 */
22
,
82
,
293
,
279
,
41
,
82
,
41
,
243
,
81
,
81
,
/* 1580 */
181
,
44
,
82
,
310
,
44
,
81
,
313
,
314
,
315
,
316
,
/* 1580 */
215
,
44
,
81
,
289
,
44
,
81
,
215
,
293
,
309
,
82
,
/* 1590 */
317
,
318
,
81
,
320
,
82
,
271
,
81
,
22
,
140
,
215
,
/* 1590 */
41
,
82
,
313
,
314
,
315
,
316
,
317
,
318
,
44
,
320
,
/* 1600 */
142
,
183
,
144
,
279
,
146
,
209
,
215
,
243
,
0
,
37
,
/* 1600 */
41
,
44
,
44
,
309
,
41
,
271
,
82
,
313
,
314
,
315
,
/* 1610 */
91
,
143
,
44
,
289
,
82
,
81
,
81
,
293
,
82
,
22
,
/* 1610 */
316
,
317
,
318
,
279
,
320
,
209
,
140
,
243
,
142
,
215
,
/* 1620 */
81
,
140
,
164
,
81
,
81
,
44
,
81
,
47
,
82
,
81
,
/* 1620 */
144
,
82
,
146
,
289
,
47
,
2
,
47
,
293
,
47
,
47
,
/* 1630 */
81
,
113
,
82
,
92
,
310
,
271
,
47
,
313
,
314
,
315
,
/* 1630 */
47
,
47
,
41
,
181
,
81
,
22
,
243
,
82
,
82
,
44
,
/* 1640 */
316
,
317
,
318
,
279
,
320
,
81
,
47
,
243
,
82
,
82
,
/* 1640 */
164
,
81
,
81
,
309
,
82
,
271
,
81
,
313
,
314
,
315
,
/* 1650 */
81
,
47
,
81
,
289
,
47
,
82
,
47
,
293
,
81
,
105
,
/* 1650 */
316
,
317
,
318
,
279
,
320
,
81
,
44
,
183
,
92
,
22
,
/* 1660 */
82
,
105
,
243
,
81
,
105
,
105
,
81
,
22
,
81
,
93
,
/* 1660 */
93
,
81
,
47
,
289
,
271
,
47
,
81
,
293
,
82
,
82
,
/* 1670 */
47
,
81
,
22
,
58
,
310
,
271
,
59
,
313
,
314
,
315
,
/* 1670 */
81
,
47
,
279
,
47
,
82
,
81
,
47
,
47
,
82
,
81
,
/* 1680 */
316
,
317
,
318
,
279
,
320
,
47
,
64
,
41
,
47
,
79
,
/* 1680 */
105
,
82
,
289
,
309
,
81
,
81
,
293
,
313
,
314
,
315
,
/* 1690 */
271
,
22
,
64
,
289
,
47
,
47
,
47
,
293
,
279
,
47
,
/* 1690 */
316
,
317
,
318
,
243
,
320
,
105
,
47
,
81
,
81
,
22
,
/* 1700 */
47
,
47
,
47
,
47
,
47
,
47
,
47
,
47
,
289
,
47
,
/* 1700 */
59
,
113
,
309
,
58
,
47
,
105
,
313
,
314
,
315
,
316
,
/* 1710 */
0
,
47
,
293
,
243
,
310
,
45
,
37
,
313
,
314
,
315
,
/* 1710 */
317
,
318
,
105
,
320
,
64
,
79
,
41
,
47
,
47
,
47
,
/* 1720 */
316
,
317
,
318
,
0
,
320
,
243
,
45
,
47
,
37
,
310
,
/* 1720 */
22
,
271
,
64
,
47
,
0
,
243
,
47
,
47
,
47
,
279
,
/* 1730 */
0
,
47
,
313
,
314
,
315
,
316
,
317
,
318
,
45
,
320
,
/* 1730 */
47
,
47
,
47
,
47
,
47
,
0
,
47
,
47
,
47
,
289
,
/* 1740 */
37
,
271
,
47
,
45
,
37
,
0
,
47
,
46
,
0
,
279
,
/* 1740 */
45
,
37
,
37
,
293
,
47
,
45
,
0
,
45
,
47
,
37
,
/* 1750 */
0
,
0
,
21
,
271
,
22
,
22
,
22
,
21
,
20
,
289
,
/* 1750 */
0
,
45
,
37
,
271
,
47
,
0
,
47
,
46
,
0
,
309
,
/* 1760 */
360
,
279
,
360
,
293
,
360
,
243
,
360
,
360
,
360
,
360
,
/* 1760 */
0
,
279
,
21
,
313
,
314
,
315
,
316
,
317
,
318
,
22
,
/* 1770 */
360
,
289
,
360
,
360
,
360
,
293
,
243
,
360
,
360
,
360
,
/* 1770 */
320
,
289
,
21
,
243
,
22
,
293
,
22
,
20
,
360
,
360
,
/* 1780 */
310
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
/* 1780 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
243
,
360
,
/* 1790 */
320
,
360
,
310
,
271
,
360
,
313
,
314
,
315
,
316
,
317
,
/* 1790 */
360
,
309
,
360
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
/* 1800 */
318
,
279
,
320
,
360
,
271
,
360
,
360
,
360
,
360
,
360
,
/* 1800 */
318
,
271
,
320
,
360
,
360
,
360
,
360
,
360
,
360
,
279
,
/* 1810 */
360
,
289
,
279
,
360
,
360
,
293
,
360
,
360
,
360
,
360
,
/* 1810 */
360
,
360
,
360
,
360
,
360
,
360
,
271
,
360
,
360
,
289
,
/* 1820 */
360
,
360
,
289
,
360
,
360
,
360
,
293
,
243
,
360
,
360
,
/* 1820 */
360
,
243
,
360
,
293
,
279
,
360
,
360
,
360
,
360
,
360
,
/* 1830 */
360
,
360
,
310
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
/* 1830 */
360
,
360
,
360
,
360
,
289
,
360
,
243
,
360
,
293
,
309
,
/* 1840 */
318
,
360
,
320
,
310
,
360
,
360
,
313
,
314
,
315
,
316
,
/* 1840 */
360
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
318
,
271
,
/* 1850 */
317
,
318
,
360
,
320
,
360
,
271
,
360
,
243
,
360
,
360
,
/* 1850 */
320
,
360
,
360
,
243
,
309
,
360
,
360
,
279
,
313
,
314
,
/* 1860 */
360
,
360
,
360
,
279
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 1860 */
315
,
316
,
317
,
318
,
271
,
320
,
360
,
289
,
360
,
360
,
/* 1870 */
360
,
360
,
360
,
289
,
360
,
360
,
360
,
293
,
360
,
360
,
/* 1870 */
360
,
293
,
279
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 1880 */
360
,
360
,
360
,
360
,
360
,
271
,
360
,
243
,
360
,
360
,
/* 1880 */
360
,
271
,
289
,
360
,
360
,
360
,
293
,
309
,
360
,
279
,
/* 1890 */
360
,
360
,
360
,
279
,
310
,
360
,
360
,
313
,
314
,
315
,
/* 1890 */
360
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
320
,
289
,
/* 1900 */
316
,
317
,
318
,
289
,
320
,
360
,
360
,
293
,
360
,
360
,
/* 1900 */
360
,
360
,
309
,
293
,
360
,
360
,
313
,
314
,
315
,
316
,
/* 1910 */
360
,
360
,
360
,
360
,
360
,
271
,
360
,
360
,
360
,
243
,
/* 1910 */
317
,
318
,
360
,
320
,
360
,
360
,
243
,
360
,
360
,
309
,
/* 1920 */
360
,
360
,
360
,
279
,
310
,
360
,
360
,
313
,
314
,
315
,
/* 1920 */
360
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
/* 1930 */
316
,
317
,
318
,
289
,
320
,
360
,
360
,
293
,
360
,
360
,
/* 1930 */
320
,
243
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 1940 */
360
,
360
,
360
,
12
,
13
,
360
,
360
,
271
,
360
,
360
,
/* 1940 */
360
,
360
,
360
,
360
,
271
,
360
,
360
,
360
,
360
,
360
,
/* 1950 */
360
,
360
,
243
,
22
,
310
,
279
,
360
,
313
,
314
,
315
,
/* 1950 */
360
,
360
,
279
,
360
,
360
,
360
,
360
,
360
,
360
,
271
,
/* 1960 */
316
,
317
,
318
,
360
,
320
,
289
,
360
,
360
,
360
,
293
,
/* 1960 */
360
,
360
,
289
,
360
,
360
,
360
,
293
,
279
,
360
,
360
,
/* 1970 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
47
,
360
,
/* 1970 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
289
,
360
,
360
,
/* 1980 */
271
,
360
,
360
,
360
,
360
,
243
,
310
,
360
,
279
,
313
,
/* 1980 */
360
,
293
,
309
,
243
,
360
,
360
,
313
,
314
,
315
,
316
,
/* 1990 */
314
,
315
,
316
,
317
,
318
,
64
,
320
,
360
,
289
,
360
,
/* 1990 */
317
,
318
,
360
,
320
,
360
,
360
,
360
,
309
,
360
,
360
,
/* 2000 */
360
,
360
,
293
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2000 */
360
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
320
,
360
,
/* 2010 */
360
,
360
,
360
,
271
,
360
,
360
,
250
,
360
,
360
,
310
,
/* 2010 */
360
,
271
,
360
,
360
,
360
,
243
,
360
,
360
,
360
,
279
,
/* 2020 */
360
,
279
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
320
,
/* 2020 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
289
,
/* 2030 */
360
,
289
,
360
,
360
,
103
,
293
,
360
,
360
,
360
,
360
,
/* 2030 */
360
,
360
,
360
,
293
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2040 */
360
,
360
,
360
,
360
,
113
,
279
,
250
,
360
,
360
,
360
,
/* 2040 */
360
,
360
,
360
,
271
,
360
,
360
,
360
,
360
,
360
,
309
,
/* 2050 */
360
,
360
,
310
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
/* 2050 */
360
,
279
,
360
,
313
,
314
,
315
,
316
,
317
,
318
,
360
,
/* 2060 */
318
,
360
,
320
,
360
,
298
,
360
,
360
,
360
,
360
,
360
,
/* 2060 */
320
,
289
,
360
,
243
,
360
,
293
,
360
,
360
,
360
,
360
,
/* 2070 */
360
,
360
,
360
,
360
,
360
,
279
,
360
,
360
,
360
,
360
,
/* 2070 */
360
,
360
,
250
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2080 */
360
,
360
,
360
,
317
,
360
,
360
,
360
,
156
,
360
,
360
,
/* 2080 */
360
,
309
,
360
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
/* 2090 */
360
,
360
,
360
,
360
,
298
,
360
,
360
,
360
,
332
,
333
,
/* 2090 */
318
,
271
,
320
,
360
,
360
,
360
,
360
,
360
,
360
,
279
,
/* 2100 */
334
,
360
,
336
,
360
,
360
,
339
,
360
,
360
,
360
,
360
,
/* 2100 */
360
,
279
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
289
,
/* 2110 */
360
,
360
,
181
,
317
,
360
,
360
,
360
,
351
,
360
,
360
,
/* 2110 */
360
,
360
,
360
,
293
,
360
,
360
,
360
,
360
,
360
,
297
,
/* 2120 */
360
,
355
,
360
,
192
,
193
,
194
,
360
,
360
,
332
,
333
,
/* 2120 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
309
,
/* 2130 */
334
,
360
,
336
,
360
,
360
,
339
,
360
,
360
,
360
,
360
,
/* 2130 */
360
,
360
,
360
,
313
,
314
,
315
,
316
,
317
,
318
,
317
,
/* 2140 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
351
,
360
,
360
,
/* 2140 */
320
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2150 */
360
,
355
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2150 */
360
,
360
,
360
,
360
,
332
,
333
,
334
,
360
,
336
,
360
,
/* 2160 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2160 */
360
,
339
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2170 */
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
360
,
/* 2170 */
360
,
360
,
360
,
351
,
360
,
360
,
360
,
355
,
/* 2180 */
360
,
360
,
360
,
360
,
};
};
#define YY_SHIFT_COUNT (618)
#define YY_SHIFT_COUNT (618)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (1
931
)
#define YY_SHIFT_MAX (1
760
)
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
static
const
unsigned
short
int
yy_shift_ofst
[]
=
{
/* 0 */
688
,
0
,
0
,
48
,
96
,
96
,
96
,
96
,
253
,
253
,
/* 0 */
688
,
0
,
0
,
48
,
96
,
96
,
96
,
96
,
253
,
253
,
/* 10 */
96
,
96
,
301
,
349
,
506
,
349
,
349
,
349
,
349
,
349
,
/* 10 */
96
,
96
,
301
,
349
,
506
,
349
,
349
,
349
,
349
,
349
,
/* 20 */
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
/* 20 */
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
/* 30 */
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
144
,
144
,
/* 30 */
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
349
,
243
,
/* 40 */
102
,
102
,
102
,
1931
,
1931
,
1931
,
1931
,
372
,
124
,
214
,
/* 40 */
243
,
5
,
5
,
5
,
1258
,
1258
,
1258
,
310
,
97
,
169
,
/* 50 */
58
,
58
,
260
,
260
,
172
,
214
,
214
,
58
,
58
,
58
,
/* 50 */
85
,
85
,
51
,
51
,
244
,
169
,
169
,
85
,
85
,
85
,
/* 60 */
58
,
58
,
58
,
58
,
37
,
58
,
58
,
186
,
228
,
2
59
,
/* 60 */
85
,
85
,
85
,
85
,
78
,
85
,
85
,
159
,
319
,
1
59
,
/* 70 */
186
,
58
,
58
,
186
,
58
,
186
,
186
,
259
,
186
,
58
,
/* 70 */
85
,
85
,
159
,
337
,
85
,
159
,
159
,
319
,
159
,
85
,
/* 80 */
2
55
,
542
,
724
,
758
,
758
,
189
,
236
,
838
,
838
,
838
,
/* 80 */
2
07
,
542
,
14
,
626
,
626
,
230
,
237
,
1280
,
1280
,
1280
,
/* 90 */
838
,
838
,
838
,
838
,
838
,
838
,
838
,
838
,
838
,
838
,
/* 90 */
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
/* 100 */
838
,
838
,
838
,
838
,
838
,
838
,
291
,
126
,
354
,
354
,
/* 100 */
1280
,
1280
,
1280
,
1280
,
1280
,
1280
,
385
,
227
,
298
,
298
,
/* 110 */
397
,
516
,
483
,
483
,
483
,
525
,
516
,
313
,
259
,
186
,
/* 110 */
561
,
326
,
658
,
482
,
482
,
482
,
326
,
538
,
319
,
159
,
/* 120 */
1
86
,
259
,
377
,
343
,
243
,
243
,
243
,
243
,
243
,
243
,
/* 120 */
1
59
,
319
,
325
,
590
,
979
,
979
,
979
,
979
,
979
,
979
,
/* 130 */
243
,
340
,
141
,
405
,
76
,
195
,
57
,
215
,
500
,
545
,
/* 130 */
979
,
1232
,
397
,
333
,
570
,
413
,
42
,
290
,
135
,
536
,
/* 140 */
579
,
179
,
694
,
700
,
617
,
678
,
617
,
455
,
455
,
455
,
/* 140 */
739
,
574
,
186
,
669
,
630
,
698
,
630
,
137
,
137
,
137
,
/* 150 */
6
57
,
666
,
799
,
1002
,
979
,
980
,
876
,
1002
,
1002
,
997
,
/* 150 */
6
43
,
705
,
808
,
1007
,
984
,
985
,
891
,
1007
,
1007
,
1006
,
/* 160 */
910
,
910
,
100
2
,
1037
,
1037
,
1042
,
37
,
259
,
37
,
1056
,
/* 160 */
910
,
910
,
100
7
,
1036
,
1036
,
1047
,
78
,
319
,
78
,
1051
,
/* 170 */
10
58
,
37
,
1056
,
37
,
313
,
1070
,
37
,
37
,
1002
,
37
,
/* 170 */
10
72
,
78
,
1051
,
78
,
538
,
1081
,
78
,
78
,
1007
,
78
,
/* 180 */
103
7
,
186
,
186
,
186
,
186
,
186
,
186
,
186
,
186
,
186
,
/* 180 */
103
6
,
159
,
159
,
159
,
159
,
159
,
159
,
159
,
159
,
159
,
/* 190 */
1
86
,
186
,
1002
,
1037
,
1045
,
1045
,
1042
,
255
,
956
,
25
9
,
/* 190 */
1
59
,
159
,
1007
,
1036
,
1050
,
1050
,
1047
,
207
,
965
,
31
9
,
/* 200 */
2
55
,
1002
,
1056
,
255
,
313
,
1070
,
255
,
1106
,
922
,
933
,
/* 200 */
2
07
,
1007
,
1051
,
207
,
538
,
1081
,
207
,
935
,
1050
,
935
,
/* 210 */
10
45
,
922
,
933
,
1045
,
1045
,
186
,
936
,
1009
,
960
,
799
,
/* 210 */
10
50
,
1016
,
538
,
1081
,
207
,
325
,
207
,
538
,
1146
,
950
,
/* 220 */
9
66
,
313
,
1158
,
1140
,
954
,
957
,
949
,
954
,
957
,
954
,
/* 220 */
9
35
,
1050
,
1050
,
950
,
935
,
1050
,
1050
,
159
,
945
,
1035
,
/* 230 */
9
57
,
1104
,
933
,
1045
,
1045
,
933
,
1045
,
1054
,
313
,
1070
,
/* 230 */
9
73
,
808
,
978
,
538
,
1169
,
1160
,
974
,
975
,
972
,
974
,
/* 240 */
255
,
377
,
255
,
313
,
1143
,
343
,
1002
,
255
,
1037
,
2152
,
/* 240 */
975
,
974
,
975
,
1125
,
1126
,
590
,
1007
,
207
,
1036
,
2178
,
/* 250 */
21
52
,
2152
,
2152
,
2152
,
2152
,
2152
,
577
,
1458
,
231
,
353
,
/* 250 */
21
78
,
2178
,
2178
,
2178
,
2178
,
2178
,
685
,
1476
,
484
,
1335
,
/* 260 */
3
,
19
,
316
,
256
,
496
,
719
,
777
,
112
,
112
,
1
12
,
/* 260 */
32
,
2
,
314
,
329
,
28
,
255
,
408
,
212
,
212
,
2
12
,
/* 270 */
112
,
112
,
112
,
112
,
112
,
135
,
438
,
344
,
396
,
355
,
/* 270 */
212
,
212
,
212
,
212
,
212
,
271
,
123
,
525
,
82
,
312
,
/* 280 */
625
,
566
,
642
,
642
,
642
,
642
,
555
,
808
,
711
,
813
,
/* 280 */
9
,
483
,
19
,
19
,
19
,
19
,
503
,
510
,
762
,
764
,
/* 290 */
815
,
819
,
872
,
887
,
913
,
809
,
855
,
867
,
892
,
914
,
/* 290 */
773
,
821
,
854
,
874
,
888
,
709
,
533
,
872
,
876
,
881
,
/* 300 */
723
,
710
,
772
,
902
,
766
,
903
,
873
,
905
,
907
,
926
,
/* 300 */
882
,
885
,
887
,
412
,
816
,
889
,
903
,
722
,
746
,
775
,
/* 310 */
929
,
931
,
826
,
875
,
934
,
952
,
962
,
965
,
974
,
976
,
/* 310 */
890
,
763
,
893
,
355
,
915
,
944
,
948
,
957
,
958
,
968
,
/* 320 */
8
59
,
935
,
1260
,
1261
,
1222
,
1263
,
1193
,
1266
,
1220
,
109
3
,
/* 320 */
8
46
,
869
,
1228
,
1229
,
1192
,
1233
,
1172
,
1241
,
1199
,
107
3
,
/* 330 */
12
23
,
1224
,
1227
,
1094
,
1275
,
1237
,
1238
,
1113
,
1289
,
1115
,
/* 330 */
12
00
,
1202
,
1205
,
1087
,
1268
,
1226
,
1234
,
1100
,
1276
,
1107
,
/* 340 */
12
91
,
1245
,
1293
,
1247
,
1295
,
1250
,
1298
,
1218
,
1141
,
1145
,
/* 340 */
12
89
,
1243
,
1291
,
1247
,
1295
,
1250
,
1298
,
1218
,
1140
,
1142
,
/* 350 */
11
87
,
1146
,
1305
,
1312
,
1162
,
1166
,
1318
,
1322
,
1281
,
1326
,
/* 350 */
11
90
,
1148
,
1307
,
1308
,
1157
,
1162
,
1311
,
1314
,
1272
,
1317
,
/* 360 */
13
27
,
1328
,
1329
,
1330
,
1331
,
1334
,
1335
,
1336
,
1338
,
1339
,
/* 360 */
13
18
,
1319
,
1321
,
1323
,
1324
,
1329
,
1336
,
1340
,
1341
,
1343
,
/* 370 */
134
0
,
1341
,
1343
,
1344
,
1345
,
1347
,
1348
,
1309
,
1351
,
1352
,
/* 370 */
134
5
,
1346
,
1347
,
1349
,
1350
,
1351
,
1352
,
1313
,
1355
,
1357
,
/* 380 */
135
3
,
1355
,
1356
,
1365
,
1350
,
1374
,
1375
,
1376
,
1377
,
1379
,
/* 380 */
135
9
,
1360
,
1370
,
1372
,
1353
,
1377
,
1378
,
1379
,
1381
,
1382
,
/* 390 */
138
0
,
1342
,
1346
,
1354
,
1367
,
1349
,
1370
,
1357
,
1385
,
1359
,
/* 390 */
138
6
,
1348
,
1337
,
1354
,
1373
,
1356
,
1375
,
1361
,
1391
,
1363
,
/* 400 */
136
1
,
1387
,
1388
,
1389
,
1362
,
1244
,
1392
,
1402
,
1368
,
1407
,
/* 400 */
136
2
,
1397
,
1398
,
1403
,
1367
,
1260
,
1408
,
1410
,
1376
,
1411
,
/* 410 */
13
60
,
1408
,
1409
,
1366
,
1369
,
1378
,
1411
,
1381
,
1371
,
1393
,
/* 410 */
13
58
,
1412
,
1416
,
1385
,
1380
,
1383
,
1419
,
1387
,
1390
,
1401
,
/* 420 */
14
12
,
1382
,
1386
,
1395
,
1433
,
1390
,
1394
,
1398
,
1438
,
1441
,
/* 420 */
14
23
,
1394
,
1395
,
1405
,
1424
,
1396
,
1399
,
1409
,
1447
,
1448
,
/* 430 */
14
43
,
1444
,
1314
,
1358
,
1400
,
1423
,
1448
,
1403
,
1406
,
1421
,
/* 430 */
14
53
,
1456
,
1368
,
1384
,
1413
,
1442
,
1465
,
1421
,
1422
,
1426
,
/* 440 */
142
4
,
1410
,
1414
,
1425
,
1427
,
1428
,
1449
,
1436
,
1466
,
1462
,
/* 440 */
142
9
,
1425
,
1436
,
1431
,
1438
,
1441
,
1470
,
1467
,
1490
,
1475
,
/* 450 */
14
22
,
1485
,
1465
,
1442
,
1488
,
1471
,
1492
,
1472
,
1475
,
1496
,
/* 450 */
14
51
,
1500
,
1479
,
1457
,
1503
,
1483
,
1506
,
1486
,
1491
,
1512
,
/* 460 */
136
3
,
1450
,
1498
,
1372
,
1477
,
1373
,
1397
,
1501
,
1502
,
1505
,
/* 460 */
136
9
,
1466
,
1515
,
1364
,
1494
,
1388
,
1392
,
1517
,
1518
,
1519
,
/* 470 */
140
1
,
1506
,
1434
,
1480
,
1383
,
1478
,
1479
,
1315
,
1452
,
1494
,
/* 470 */
140
7
,
1526
,
1454
,
1495
,
1402
,
1455
,
1459
,
1458
,
1400
,
1472
,
/* 480 */
1
455
,
1459
,
1461
,
1464
,
1467
,
1507
,
1499
,
1503
,
1469
,
1510
,
/* 480 */
1
538
,
1520
,
1414
,
1480
,
1469
,
1522
,
1521
,
1523
,
1365
,
1481
,
/* 490 */
1
384
,
1473
,
1483
,
1520
,
1396
,
1513
,
1524
,
1487
,
1529
,
1391
,
/* 490 */
1
485
,
1488
,
1548
,
1533
,
1489
,
1497
,
1498
,
1501
,
1493
,
1535
,
/* 500 */
1
489
,
1525
,
1526
,
1527
,
1528
,
1530
,
1531
,
1489
,
1574
,
139
9
,
/* 500 */
1
537
,
1540
,
1504
,
1549
,
1371
,
1507
,
1509
,
1554
,
1406
,
155
9
,
/* 510 */
15
38
,
1500
,
1504
,
1512
,
1537
,
1511
,
1515
,
1540
,
1575
,
1418
,
/* 510 */
15
57
,
1558
,
1524
,
1563
,
1404
,
1539
,
1577
,
1579
,
1581
,
1582
,
/* 520 */
15
34
,
1532
,
1536
,
1535
,
1539
,
1468
,
1542
,
1608
,
1572
,
1481
,
/* 520 */
15
83
,
1584
,
1539
,
1623
,
1452
,
1591
,
1553
,
1555
,
1560
,
1556
,
/* 530 */
15
43
,
1519
,
1568
,
1581
,
1545
,
1546
,
1548
,
1597
,
1549
,
1541
,
/* 530 */
15
61
,
1562
,
1595
,
1565
,
1574
,
1612
,
1613
,
1474
,
1580
,
1566
,
/* 540 */
15
50
,
1580
,
1589
,
1564
,
1566
,
1599
,
1569
,
1567
,
1604
,
1571
,
/* 540 */
15
86
,
1615
,
1618
,
1585
,
1587
,
1624
,
1589
,
1592
,
1626
,
1594
,
/* 550 */
15
73
,
1607
,
1577
,
1578
,
1609
,
1582
,
1554
,
1556
,
1559
,
1560
,
/* 550 */
15
96
,
1629
,
1598
,
1599
,
1630
,
1603
,
1575
,
1590
,
1600
,
1607
,
/* 560 */
16
45
,
1576
,
1585
,
1587
,
1623
,
1590
,
1518
,
1650
,
1617
,
161
5
,
/* 560 */
16
37
,
1567
,
1604
,
1616
,
1649
,
1617
,
1588
,
1677
,
1641
,
164
5
,
/* 570 */
16
38
,
1622
,
1610
,
1646
,
1641
,
1647
,
1648
,
1649
,
1652
,
1669
,
/* 570 */
16
57
,
1650
,
1636
,
1675
,
1670
,
1671
,
1672
,
1676
,
1679
,
1698
,
/* 580 */
16
53
,
1654
,
1628
,
1410
,
1655
,
1414
,
1656
,
1657
,
1658
,
1659
,
/* 580 */
16
80
,
1681
,
1658
,
1425
,
1683
,
1436
,
1684
,
1685
,
1686
,
1687
,
/* 590 */
16
60
,
1662
,
1710
,
1664
,
1670
,
1679
,
1723
,
1680
,
1681
,
1691
,
/* 590 */
16
89
,
1690
,
1724
,
1691
,
1695
,
1704
,
1735
,
1697
,
1700
,
1705
,
/* 600 */
17
30
,
1684
,
1693
,
1703
,
1750
,
1695
,
1698
,
1707
,
1745
,
169
9
,
/* 600 */
17
46
,
1701
,
1702
,
1712
,
1750
,
1707
,
1706
,
1715
,
1755
,
170
9
,
/* 610 */
17
01
,
1748
,
1751
,
1732
,
1731
,
1733
,
1734
,
1736
,
1738
,
/* 610 */
17
11
,
1758
,
1760
,
1747
,
1741
,
1752
,
1754
,
1751
,
1757
,
};
};
#define YY_REDUCE_COUNT (255)
#define YY_REDUCE_COUNT (255)
#define YY_REDUCE_MIN (-3
24
)
#define YY_REDUCE_MIN (-3
32
)
#define YY_REDUCE_MAX (1
796
)
#define YY_REDUCE_MAX (1
822
)
static
const
short
yy_reduce_ofst
[]
=
{
static
const
short
yy_reduce_ofst
[]
=
{
/* 0 */
162
,
-
241
,
278
,
439
,
663
,
725
,
757
,
817
,
849
,
900
,
/* 0 */
-
232
,
-
240
,
61
,
284
,
495
,
564
,
632
,
664
,
697
,
745
,
/* 10 */
-
178
,
930
,
561
,
963
,
993
,
505
,
1044
,
1053
,
1107
,
1147
,
/* 10 */
823
,
863
,
-
151
,
922
,
941
,
1017
,
1049
,
1113
,
1166
,
1178
,
/* 20 */
1163
,
1211
,
1243
,
1273
,
1324
,
1364
,
1404
,
1419
,
1470
,
1482
,
/* 20 */
335
,
1231
,
1279
,
1294
,
1334
,
1374
,
1393
,
1450
,
1482
,
1530
,
/* 30 */
15
22
,
1533
,
1584
,
1614
,
1644
,
1676
,
1709
,
1742
,
1766
,
179
6
,
/* 30 */
15
45
,
1578
,
1593
,
1610
,
1673
,
1688
,
1740
,
1772
,
1820
,
68
6
,
/* 40 */
282
,
-
213
,
578
,
-
270
,
-
266
,
-
264
,
-
176
,
-
284
,
281
,
424
,
/* 40 */
1822
,
-
200
,
458
,
463
,
-
272
,
256
,
259
,
-
288
,
-
241
,
220
,
/* 50 */
3
06
,
362
,
-
91
,
-
46
,
-
255
,
-
192
,
71
,
-
226
,
-
199
,
150
,
/* 50 */
3
41
,
470
,
-
244
,
-
122
,
-
332
,
-
254
,
-
4
,
57
,
153
,
367
,
/* 60 */
302
,
324
,
463
,
467
,
-
1
,
471
,
485
,
28
,
45
,
-
190
,
/* 60 */
455
,
514
,
521
,
523
,
-
118
,
527
,
610
,
-
212
,
-
89
,
-
141
,
/* 70 */
56
,
528
,
531
,
197
,
481
,
192
,
352
,
100
,
196
,
538
,
/* 70 */
621
,
635
,
89
,
-
225
,
636
,
75
,
185
,
172
,
195
,
457
,
/* 80 */
-
225
,
-
242
,
-
324
,
-
324
,
-
324
,
-
64
,
-
48
,
77
,
168
,
257
,
/* 80 */
-
43
,
-
109
,
86
,
86
,
86
,
-
142
,
-
84
,
10
,
29
,
56
,
/* 90 */
311
,
315
,
341
,
416
,
441
,
465
,
498
,
502
,
518
,
546
,
/* 90 */
261
,
323
,
352
,
416
,
438
,
440
,
479
,
485
,
486
,
524
,
/* 100 */
55
4
,
559
,
560
,
565
,
612
,
643
,
97
,
-
247
,
75
,
140
,
/* 100 */
55
5
,
576
,
577
,
601
,
602
,
608
,
149
,
101
,
145
,
223
,
/* 110 */
-
125
,
-
232
,
-
252
,
-
204
,
-
37
,
-
100
,
106
,
142
,
394
,
512
,
/* 110 */
-
72
,
219
,
-
229
,
-
190
,
246
,
321
,
331
,
-
197
,
-
289
,
88
,
/* 120 */
573
,
218
,
284
,
453
,
-
261
,
294
,
325
,
330
,
335
,
444
,
/* 120 */
443
,
452
,
359
,
451
,
-
220
,
389
,
414
,
496
,
498
,
531
,
/* 130 */
5
57
,
271
,
381
,
582
,
503
,
572
,
639
,
610
,
684
,
684
,
/* 130 */
5
84
,
611
,
676
,
672
,
566
,
589
,
634
,
599
,
680
,
680
,
/* 140 */
7
20
,
744
,
689
,
685
,
661
,
661
,
661
,
649
,
653
,
655
,
/* 140 */
7
13
,
715
,
714
,
683
,
663
,
663
,
663
,
649
,
652
,
655
,
/* 150 */
66
9
,
684
,
713
,
773
,
718
,
769
,
729
,
781
,
782
,
746
,
/* 150 */
66
8
,
680
,
716
,
778
,
725
,
776
,
736
,
793
,
794
,
760
,
/* 160 */
7
70
,
774
,
801
,
816
,
820
,
760
,
811
,
779
,
814
,
784
,
/* 160 */
7
66
,
768
,
805
,
812
,
819
,
765
,
814
,
781
,
817
,
795
,
/* 170 */
7
80
,
827
,
786
,
832
,
810
,
803
,
836
,
839
,
847
,
84
3
,
/* 170 */
7
97
,
838
,
801
,
843
,
820
,
813
,
849
,
850
,
857
,
85
3
,
/* 180 */
8
54
,
829
,
830
,
831
,
833
,
834
,
837
,
840
,
841
,
842
,
/* 180 */
8
64
,
839
,
840
,
842
,
844
,
847
,
848
,
851
,
852
,
855
,
/* 190 */
8
44
,
845
,
853
,
862
,
821
,
824
,
818
,
865
,
822
,
835
,
/* 190 */
8
56
,
858
,
867
,
875
,
828
,
831
,
822
,
877
,
829
,
859
,
/* 200 */
8
68
,
879
,
851
,
870
,
857
,
860
,
886
,
846
,
804
,
863
,
/* 200 */
8
80
,
894
,
861
,
892
,
868
,
845
,
896
,
860
,
862
,
865
,
/* 210 */
8
56
,
805
,
866
,
861
,
877
,
684
,
823
,
828
,
848
,
869
,
/* 210 */
8
70
,
871
,
895
,
878
,
907
,
897
,
908
,
906
,
883
,
825
,
/* 220 */
661
,
896
,
871
,
864
,
858
,
850
,
852
,
874
,
878
,
881
,
/* 220 */
873
,
899
,
901
,
827
,
902
,
904
,
905
,
680
,
826
,
866
,
/* 230 */
8
80
,
882
,
893
,
898
,
899
,
901
,
904
,
895
,
920
,
912
,
/* 230 */
8
79
,
898
,
663
,
920
,
911
,
884
,
909
,
900
,
886
,
912
,
/* 240 */
9
68
,
938
,
969
,
928
,
950
,
971
,
977
,
973
,
984
,
937
,
/* 240 */
9
14
,
918
,
921
,
917
,
933
,
952
,
959
,
963
,
980
,
919
,
/* 250 */
9
25
,
972
,
989
,
994
,
987
,
1008
,
/* 250 */
9
13
,
953
,
961
,
962
,
969
,
983
,
};
};
static
const
YYACTIONTYPE
yy_default
[]
=
{
static
const
YYACTIONTYPE
yy_default
[]
=
{
/* 0 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 0 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
...
@@ -765,7 +766,7 @@ static const YYACTIONTYPE yy_default[] = {
...
@@ -765,7 +766,7 @@ static const YYACTIONTYPE yy_default[] = {
/* 80 */
1427
,
1567
,
1360
,
1734
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 80 */
1427
,
1567
,
1360
,
1734
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 90 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 90 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 100 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 100 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 110 */
1429
,
1360
,
1
745
,
1745
,
1745
,
1427
,
1360
,
1360
,
1360
,
1360
,
/* 110 */
1429
,
1360
,
1
427
,
1745
,
1745
,
1745
,
1360
,
1360
,
1360
,
1360
,
/* 120 */
1360
,
1360
,
1523
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 120 */
1360
,
1360
,
1523
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 130 */
1360
,
1603
,
1360
,
1360
,
1811
,
1360
,
1609
,
1769
,
1360
,
1360
,
/* 130 */
1360
,
1603
,
1360
,
1360
,
1811
,
1360
,
1609
,
1769
,
1360
,
1360
,
/* 140 */
1360
,
1360
,
1476
,
1761
,
1737
,
1751
,
1738
,
1796
,
1796
,
1796
,
/* 140 */
1360
,
1360
,
1476
,
1761
,
1737
,
1751
,
1738
,
1796
,
1796
,
1796
,
...
@@ -774,18 +775,18 @@ static const YYACTIONTYPE yy_default[] = {
...
@@ -774,18 +775,18 @@ static const YYACTIONTYPE yy_default[] = {
/* 170 */
1360
,
1429
,
1360
,
1429
,
1360
,
1360
,
1429
,
1429
,
1360
,
1429
,
/* 170 */
1360
,
1429
,
1360
,
1429
,
1360
,
1360
,
1429
,
1429
,
1360
,
1429
,
/* 180 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 180 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 190 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1427
,
1605
,
1360
,
/* 190 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1427
,
1605
,
1360
,
/* 200 */
1427
,
1360
,
1360
,
1427
,
1360
,
1360
,
1427
,
1
360
,
1776
,
1774
,
/* 200 */
1427
,
1360
,
1360
,
1427
,
1360
,
1360
,
1427
,
1
774
,
1360
,
1774
,
/* 210 */
1360
,
1
776
,
1774
,
1360
,
1360
,
1360
,
1788
,
1784
,
1767
,
1765
,
/* 210 */
1360
,
1
580
,
1360
,
1360
,
1427
,
1360
,
1427
,
1360
,
1360
,
1776
,
/* 220 */
17
51
,
1360
,
1360
,
1360
,
1802
,
1798
,
1814
,
1802
,
1798
,
1802
,
/* 220 */
17
74
,
1360
,
1360
,
1776
,
1774
,
1360
,
1360
,
1360
,
1788
,
1784
,
/* 230 */
17
98
,
1360
,
1774
,
1360
,
1360
,
1774
,
1360
,
1580
,
1360
,
1360
,
/* 230 */
17
67
,
1765
,
1751
,
1360
,
1360
,
1360
,
1802
,
1798
,
1814
,
1802
,
/* 240 */
1
427
,
1360
,
1427
,
1360
,
1492
,
1360
,
1360
,
1427
,
1360
,
1597
,
/* 240 */
1
798
,
1802
,
1798
,
1360
,
1492
,
1360
,
1360
,
1427
,
1360
,
1597
,
/* 250 */
1611
,
1526
,
1526
,
1526
,
1430
,
1365
,
1360
,
1360
,
1360
,
1360
,
/* 250 */
1611
,
1526
,
1526
,
1526
,
1430
,
1365
,
1360
,
1360
,
1360
,
1360
,
/* 260 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1678
,
1787
,
1786
,
/* 260 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1678
,
1787
,
1786
,
/* 270 */
1710
,
1709
,
1708
,
1706
,
1677
,
1488
,
1360
,
1360
,
1360
,
1360
,
/* 270 */
1710
,
1709
,
1708
,
1706
,
1677
,
1488
,
1360
,
1360
,
1360
,
1360
,
/* 280 */
1360
,
1360
,
1671
,
1672
,
1670
,
1669
,
1360
,
1360
,
1360
,
1360
,
/* 280 */
1360
,
1360
,
1671
,
1672
,
1670
,
1669
,
1360
,
1360
,
1360
,
1360
,
/* 290 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1
735
,
/* 290 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1
360
,
/* 300 */
1360
,
1
799
,
1803
,
1360
,
1360
,
1360
,
1654
,
1360
,
1360
,
1360
,
/* 300 */
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1735
,
1360
,
1799
,
1803
,
/* 310 */
1360
,
1360
,
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 310 */
1360
,
1360
,
1360
,
1
654
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 320 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 320 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 330 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 330 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 340 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 340 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
...
@@ -801,13 +802,13 @@ static const YYACTIONTYPE yy_default[] = {
...
@@ -801,13 +802,13 @@ static const YYACTIONTYPE yy_default[] = {
/* 440 */
1360
,
1457
,
1456
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 440 */
1360
,
1457
,
1456
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 450 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 450 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 460 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 460 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 470 */
1360
,
1360
,
1360
,
1360
,
1360
,
1
758
,
1768
,
1360
,
1360
,
1360
,
/* 470 */
1360
,
1360
,
1360
,
1360
,
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
/* 480 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1
360
,
1654
,
1360
,
1785
,
/* 480 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1
758
,
1768
,
1360
,
1360
,
/* 490 */
1360
,
1
744
,
1740
,
1360
,
1360
,
1736
,
1360
,
1360
,
1797
,
1360
,
/* 490 */
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 500 */
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1730
,
1360
,
/* 500 */
1360
,
1
654
,
1360
,
1785
,
1360
,
1744
,
1740
,
1360
,
1360
,
1736
,
/* 510 */
1
703
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1665
,
/* 510 */
1
653
,
1360
,
1360
,
1797
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 520 */
1360
,
1360
,
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 520 */
1360
,
1360
,
1360
,
1
730
,
1360
,
1703
,
1694
,
1360
,
1360
,
1360
,
/* 530 */
1360
,
1360
,
1
653
,
1360
,
1694
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 530 */
1360
,
1360
,
1
360
,
1360
,
1360
,
1360
,
1360
,
1665
,
1360
,
1360
,
/* 540 */
1360
,
1360
,
1360
,
1520
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 540 */
1360
,
1360
,
1360
,
1520
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 550 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1505
,
1503
,
1502
,
1501
,
/* 550 */
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1505
,
1503
,
1502
,
1501
,
/* 560 */
1360
,
1498
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
/* 560 */
1360
,
1498
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
1360
,
...
@@ -1438,7 +1439,7 @@ static const char *const yyTokenName[] = {
...
@@ -1438,7 +1439,7 @@ static const char *const yyTokenName[] = {
/* 273 */
"signed_literal"
,
/* 273 */
"signed_literal"
,
/* 274 */
"create_subtable_clause"
,
/* 274 */
"create_subtable_clause"
,
/* 275 */
"specific_tags_opt"
,
/* 275 */
"specific_tags_opt"
,
/* 276 */
"
literal
_list"
,
/* 276 */
"
expression
_list"
,
/* 277 */
"drop_table_clause"
,
/* 277 */
"drop_table_clause"
,
/* 278 */
"col_name_list"
,
/* 278 */
"col_name_list"
,
/* 279 */
"table_name"
,
/* 279 */
"table_name"
,
...
@@ -1458,21 +1459,21 @@ static const char *const yyTokenName[] = {
...
@@ -1458,21 +1459,21 @@ static const char *const yyTokenName[] = {
/* 293 */
"duration_literal"
,
/* 293 */
"duration_literal"
,
/* 294 */
"sliding_opt"
,
/* 294 */
"sliding_opt"
,
/* 295 */
"func"
,
/* 295 */
"func"
,
/* 296 */
"
expression_list
"
,
/* 296 */
"
topic_name
"
,
/* 297 */
"
topic_name
"
,
/* 297 */
"
query_expression
"
,
/* 298 */
"
query_expression
"
,
/* 298 */
"
cgroup_name
"
,
/* 299 */
"
cgroup_name
"
,
/* 299 */
"
analyze_opt
"
,
/* 300 */
"
analyze_opt
"
,
/* 300 */
"
explain_options
"
,
/* 301 */
"
explain_options
"
,
/* 301 */
"
agg_func_opt
"
,
/* 302 */
"
agg_func
_opt"
,
/* 302 */
"
bufsize
_opt"
,
/* 303 */
"
bufsize_opt
"
,
/* 303 */
"
stream_name
"
,
/* 304 */
"stream_
name
"
,
/* 304 */
"stream_
options
"
,
/* 305 */
"
stream_options
"
,
/* 305 */
"
into_opt
"
,
/* 306 */
"
into_op
t"
,
/* 306 */
"
dnode_lis
t"
,
/* 307 */
"
dnode_lis
t"
,
/* 307 */
"
where_clause_op
t"
,
/* 308 */
"
where_clause_opt
"
,
/* 308 */
"
signed
"
,
/* 309 */
"
signed
"
,
/* 309 */
"
literal_func
"
,
/* 310 */
"literal_
func
"
,
/* 310 */
"literal_
list
"
,
/* 311 */
"table_alias"
,
/* 311 */
"table_alias"
,
/* 312 */
"column_alias"
,
/* 312 */
"column_alias"
,
/* 313 */
"expression"
,
/* 313 */
"expression"
,
...
@@ -1654,7 +1655,7 @@ static const char *const yyRuleName[] = {
...
@@ -1654,7 +1655,7 @@ static const char *const yyRuleName[] = {
/* 122 */
"alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal"
,
/* 122 */
"alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal"
,
/* 123 */
"multi_create_clause ::= create_subtable_clause"
,
/* 123 */
"multi_create_clause ::= create_subtable_clause"
,
/* 124 */
"multi_create_clause ::= multi_create_clause create_subtable_clause"
,
/* 124 */
"multi_create_clause ::= multi_create_clause create_subtable_clause"
,
/* 125 */
"create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
literal
_list NK_RP table_options"
,
/* 125 */
"create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
expression
_list NK_RP table_options"
,
/* 126 */
"multi_drop_clause ::= drop_table_clause"
,
/* 126 */
"multi_drop_clause ::= drop_table_clause"
,
/* 127 */
"multi_drop_clause ::= multi_drop_clause drop_table_clause"
,
/* 127 */
"multi_drop_clause ::= multi_drop_clause drop_table_clause"
,
/* 128 */
"drop_table_clause ::= exists_opt full_table_name"
,
/* 128 */
"drop_table_clause ::= exists_opt full_table_name"
,
...
@@ -2132,13 +2133,13 @@ static void yy_destructor(
...
@@ -2132,13 +2133,13 @@ static void yy_destructor(
case
293
:
/* duration_literal */
case
293
:
/* duration_literal */
case
294
:
/* sliding_opt */
case
294
:
/* sliding_opt */
case
295
:
/* func */
case
295
:
/* func */
case
29
8
:
/* query_expression */
case
29
7
:
/* query_expression */
case
30
1
:
/* explain_options */
case
30
0
:
/* explain_options */
case
30
5
:
/* stream_options */
case
30
4
:
/* stream_options */
case
30
6
:
/* into_opt */
case
30
5
:
/* into_opt */
case
30
8
:
/* where_clause_opt */
case
30
7
:
/* where_clause_opt */
case
30
9
:
/* signed */
case
30
8
:
/* signed */
case
3
10
:
/* literal_func */
case
3
09
:
/* literal_func */
case
313
:
/* expression */
case
313
:
/* expression */
case
314
:
/* pseudo_column */
case
314
:
/* pseudo_column */
case
315
:
/* column_reference */
case
315
:
/* column_reference */
...
@@ -2174,7 +2175,7 @@ static void yy_destructor(
...
@@ -2174,7 +2175,7 @@ static void yy_destructor(
case
241
:
/* account_options */
case
241
:
/* account_options */
case
242
:
/* alter_account_options */
case
242
:
/* alter_account_options */
case
244
:
/* alter_account_option */
case
244
:
/* alter_account_option */
case
30
3
:
/* bufsize_opt */
case
30
2
:
/* bufsize_opt */
{
{
}
}
...
@@ -2188,9 +2189,9 @@ static void yy_destructor(
...
@@ -2188,9 +2189,9 @@ static void yy_destructor(
case
279
:
/* table_name */
case
279
:
/* table_name */
case
289
:
/* function_name */
case
289
:
/* function_name */
case
290
:
/* index_name */
case
290
:
/* index_name */
case
29
7
:
/* topic_name */
case
29
6
:
/* topic_name */
case
29
9
:
/* cgroup_name */
case
29
8
:
/* cgroup_name */
case
30
4
:
/* stream_name */
case
30
3
:
/* stream_name */
case
311
:
/* table_alias */
case
311
:
/* table_alias */
case
312
:
/* column_alias */
case
312
:
/* column_alias */
case
318
:
/* star_func */
case
318
:
/* star_func */
...
@@ -2209,8 +2210,8 @@ static void yy_destructor(
...
@@ -2209,8 +2210,8 @@ static void yy_destructor(
break
;
break
;
case
253
:
/* not_exists_opt */
case
253
:
/* not_exists_opt */
case
255
:
/* exists_opt */
case
255
:
/* exists_opt */
case
300
:
/* analyze_opt */
case
299
:
/* analyze_opt */
case
30
2
:
/* agg_func_opt */
case
30
1
:
/* agg_func_opt */
case
340
:
/* set_quantifier_opt */
case
340
:
/* set_quantifier_opt */
{
{
...
@@ -2225,12 +2226,12 @@ static void yy_destructor(
...
@@ -2225,12 +2226,12 @@ static void yy_destructor(
case
267
:
/* tags_def */
case
267
:
/* tags_def */
case
268
:
/* multi_drop_clause */
case
268
:
/* multi_drop_clause */
case
275
:
/* specific_tags_opt */
case
275
:
/* specific_tags_opt */
case
276
:
/*
literal
_list */
case
276
:
/*
expression
_list */
case
278
:
/* col_name_list */
case
278
:
/* col_name_list */
case
281
:
/* func_name_list */
case
281
:
/* func_name_list */
case
292
:
/* func_list */
case
292
:
/* func_list */
case
296
:
/* expression
_list */
case
306
:
/* dnode
_list */
case
3
07
:
/* dnode
_list */
case
3
10
:
/* literal
_list */
case
319
:
/* star_func_para_list */
case
319
:
/* star_func_para_list */
case
321
:
/* other_para_list */
case
321
:
/* other_para_list */
case
341
:
/* select_list */
case
341
:
/* select_list */
...
@@ -2700,7 +2701,7 @@ static const struct {
...
@@ -2700,7 +2701,7 @@ static const struct {
{
269
,
-
6
},
/* (122) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */
{
269
,
-
6
},
/* (122) alter_table_clause ::= full_table_name SET TAG column_name NK_EQ signed_literal */
{
266
,
-
1
},
/* (123) multi_create_clause ::= create_subtable_clause */
{
266
,
-
1
},
/* (123) multi_create_clause ::= create_subtable_clause */
{
266
,
-
2
},
/* (124) multi_create_clause ::= multi_create_clause create_subtable_clause */
{
266
,
-
2
},
/* (124) multi_create_clause ::= multi_create_clause create_subtable_clause */
{
274
,
-
10
},
/* (125) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
literal
_list NK_RP table_options */
{
274
,
-
10
},
/* (125) create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
expression
_list NK_RP table_options */
{
268
,
-
1
},
/* (126) multi_drop_clause ::= drop_table_clause */
{
268
,
-
1
},
/* (126) multi_drop_clause ::= drop_table_clause */
{
268
,
-
2
},
/* (127) multi_drop_clause ::= multi_drop_clause drop_table_clause */
{
268
,
-
2
},
/* (127) multi_drop_clause ::= multi_drop_clause drop_table_clause */
{
277
,
-
2
},
/* (128) drop_table_clause ::= exists_opt full_table_name */
{
277
,
-
2
},
/* (128) drop_table_clause ::= exists_opt full_table_name */
...
@@ -2807,27 +2808,27 @@ static const struct {
...
@@ -2807,27 +2808,27 @@ static const struct {
{
240
,
-
2
},
/* (229) cmd ::= DESCRIBE full_table_name */
{
240
,
-
2
},
/* (229) cmd ::= DESCRIBE full_table_name */
{
240
,
-
3
},
/* (230) cmd ::= RESET QUERY CACHE */
{
240
,
-
3
},
/* (230) cmd ::= RESET QUERY CACHE */
{
240
,
-
4
},
/* (231) cmd ::= EXPLAIN analyze_opt explain_options query_expression */
{
240
,
-
4
},
/* (231) cmd ::= EXPLAIN analyze_opt explain_options query_expression */
{
300
,
0
},
/* (232) analyze_opt ::= */
{
299
,
0
},
/* (232) analyze_opt ::= */
{
300
,
-
1
},
/* (233) analyze_opt ::= ANALYZE */
{
299
,
-
1
},
/* (233) analyze_opt ::= ANALYZE */
{
30
1
,
0
},
/* (234) explain_options ::= */
{
30
0
,
0
},
/* (234) explain_options ::= */
{
30
1
,
-
3
},
/* (235) explain_options ::= explain_options VERBOSE NK_BOOL */
{
30
0
,
-
3
},
/* (235) explain_options ::= explain_options VERBOSE NK_BOOL */
{
30
1
,
-
3
},
/* (236) explain_options ::= explain_options RATIO NK_FLOAT */
{
30
0
,
-
3
},
/* (236) explain_options ::= explain_options RATIO NK_FLOAT */
{
240
,
-
6
},
/* (237) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */
{
240
,
-
6
},
/* (237) cmd ::= COMPACT VNODES IN NK_LP integer_list NK_RP */
{
240
,
-
10
},
/* (238) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */
{
240
,
-
10
},
/* (238) cmd ::= CREATE agg_func_opt FUNCTION not_exists_opt function_name AS NK_STRING OUTPUTTYPE type_name bufsize_opt */
{
240
,
-
4
},
/* (239) cmd ::= DROP FUNCTION exists_opt function_name */
{
240
,
-
4
},
/* (239) cmd ::= DROP FUNCTION exists_opt function_name */
{
30
2
,
0
},
/* (240) agg_func_opt ::= */
{
30
1
,
0
},
/* (240) agg_func_opt ::= */
{
30
2
,
-
1
},
/* (241) agg_func_opt ::= AGGREGATE */
{
30
1
,
-
1
},
/* (241) agg_func_opt ::= AGGREGATE */
{
30
3
,
0
},
/* (242) bufsize_opt ::= */
{
30
2
,
0
},
/* (242) bufsize_opt ::= */
{
30
3
,
-
2
},
/* (243) bufsize_opt ::= BUFSIZE NK_INTEGER */
{
30
2
,
-
2
},
/* (243) bufsize_opt ::= BUFSIZE NK_INTEGER */
{
240
,
-
8
},
/* (244) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */
{
240
,
-
8
},
/* (244) cmd ::= CREATE STREAM not_exists_opt stream_name stream_options into_opt AS query_expression */
{
240
,
-
4
},
/* (245) cmd ::= DROP STREAM exists_opt stream_name */
{
240
,
-
4
},
/* (245) cmd ::= DROP STREAM exists_opt stream_name */
{
30
6
,
0
},
/* (246) into_opt ::= */
{
30
5
,
0
},
/* (246) into_opt ::= */
{
30
6
,
-
2
},
/* (247) into_opt ::= INTO full_table_name */
{
30
5
,
-
2
},
/* (247) into_opt ::= INTO full_table_name */
{
30
5
,
0
},
/* (248) stream_options ::= */
{
30
4
,
0
},
/* (248) stream_options ::= */
{
30
5
,
-
3
},
/* (249) stream_options ::= stream_options TRIGGER AT_ONCE */
{
30
4
,
-
3
},
/* (249) stream_options ::= stream_options TRIGGER AT_ONCE */
{
30
5
,
-
3
},
/* (250) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */
{
30
4
,
-
3
},
/* (250) stream_options ::= stream_options TRIGGER WINDOW_CLOSE */
{
30
5
,
-
4
},
/* (251) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */
{
30
4
,
-
4
},
/* (251) stream_options ::= stream_options TRIGGER MAX_DELAY duration_literal */
{
30
5
,
-
3
},
/* (252) stream_options ::= stream_options WATERMARK duration_literal */
{
30
4
,
-
3
},
/* (252) stream_options ::= stream_options WATERMARK duration_literal */
{
240
,
-
3
},
/* (253) cmd ::= KILL CONNECTION NK_INTEGER */
{
240
,
-
3
},
/* (253) cmd ::= KILL CONNECTION NK_INTEGER */
{
240
,
-
3
},
/* (254) cmd ::= KILL QUERY NK_INTEGER */
{
240
,
-
3
},
/* (254) cmd ::= KILL QUERY NK_INTEGER */
{
240
,
-
3
},
/* (255) cmd ::= KILL TRANSACTION NK_INTEGER */
{
240
,
-
3
},
/* (255) cmd ::= KILL TRANSACTION NK_INTEGER */
...
@@ -2835,8 +2836,8 @@ static const struct {
...
@@ -2835,8 +2836,8 @@ static const struct {
{
240
,
-
4
},
/* (257) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */
{
240
,
-
4
},
/* (257) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */
{
240
,
-
4
},
/* (258) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */
{
240
,
-
4
},
/* (258) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */
{
240
,
-
3
},
/* (259) cmd ::= SPLIT VGROUP NK_INTEGER */
{
240
,
-
3
},
/* (259) cmd ::= SPLIT VGROUP NK_INTEGER */
{
30
7
,
-
2
},
/* (260) dnode_list ::= DNODE NK_INTEGER */
{
30
6
,
-
2
},
/* (260) dnode_list ::= DNODE NK_INTEGER */
{
30
7
,
-
3
},
/* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */
{
30
6
,
-
3
},
/* (261) dnode_list ::= dnode_list DNODE NK_INTEGER */
{
240
,
-
3
},
/* (262) cmd ::= SYNCDB db_name REPLICA */
{
240
,
-
3
},
/* (262) cmd ::= SYNCDB db_name REPLICA */
{
240
,
-
4
},
/* (263) cmd ::= DELETE FROM full_table_name where_clause_opt */
{
240
,
-
4
},
/* (263) cmd ::= DELETE FROM full_table_name where_clause_opt */
{
240
,
-
1
},
/* (264) cmd ::= query_expression */
{
240
,
-
1
},
/* (264) cmd ::= query_expression */
...
@@ -2849,12 +2850,12 @@ static const struct {
...
@@ -2849,12 +2850,12 @@ static const struct {
{
243
,
-
1
},
/* (271) literal ::= NULL */
{
243
,
-
1
},
/* (271) literal ::= NULL */
{
243
,
-
1
},
/* (272) literal ::= NK_QUESTION */
{
243
,
-
1
},
/* (272) literal ::= NK_QUESTION */
{
293
,
-
1
},
/* (273) duration_literal ::= NK_VARIABLE */
{
293
,
-
1
},
/* (273) duration_literal ::= NK_VARIABLE */
{
30
9
,
-
1
},
/* (274) signed ::= NK_INTEGER */
{
30
8
,
-
1
},
/* (274) signed ::= NK_INTEGER */
{
30
9
,
-
2
},
/* (275) signed ::= NK_PLUS NK_INTEGER */
{
30
8
,
-
2
},
/* (275) signed ::= NK_PLUS NK_INTEGER */
{
30
9
,
-
2
},
/* (276) signed ::= NK_MINUS NK_INTEGER */
{
30
8
,
-
2
},
/* (276) signed ::= NK_MINUS NK_INTEGER */
{
30
9
,
-
1
},
/* (277) signed ::= NK_FLOAT */
{
30
8
,
-
1
},
/* (277) signed ::= NK_FLOAT */
{
30
9
,
-
2
},
/* (278) signed ::= NK_PLUS NK_FLOAT */
{
30
8
,
-
2
},
/* (278) signed ::= NK_PLUS NK_FLOAT */
{
30
9
,
-
2
},
/* (279) signed ::= NK_MINUS NK_FLOAT */
{
30
8
,
-
2
},
/* (279) signed ::= NK_MINUS NK_FLOAT */
{
273
,
-
1
},
/* (280) signed_literal ::= signed */
{
273
,
-
1
},
/* (280) signed_literal ::= signed */
{
273
,
-
1
},
/* (281) signed_literal ::= NK_STRING */
{
273
,
-
1
},
/* (281) signed_literal ::= NK_STRING */
{
273
,
-
1
},
/* (282) signed_literal ::= NK_BOOL */
{
273
,
-
1
},
/* (282) signed_literal ::= NK_BOOL */
...
@@ -2862,8 +2863,8 @@ static const struct {
...
@@ -2862,8 +2863,8 @@ static const struct {
{
273
,
-
1
},
/* (284) signed_literal ::= duration_literal */
{
273
,
-
1
},
/* (284) signed_literal ::= duration_literal */
{
273
,
-
1
},
/* (285) signed_literal ::= NULL */
{
273
,
-
1
},
/* (285) signed_literal ::= NULL */
{
273
,
-
1
},
/* (286) signed_literal ::= literal_func */
{
273
,
-
1
},
/* (286) signed_literal ::= literal_func */
{
276
,
-
1
},
/* (287) literal_list ::= signed_literal */
{
310
,
-
1
},
/* (287) literal_list ::= signed_literal */
{
276
,
-
3
},
/* (288) literal_list ::= literal_list NK_COMMA signed_literal */
{
310
,
-
3
},
/* (288) literal_list ::= literal_list NK_COMMA signed_literal */
{
250
,
-
1
},
/* (289) db_name ::= NK_ID */
{
250
,
-
1
},
/* (289) db_name ::= NK_ID */
{
279
,
-
1
},
/* (290) table_name ::= NK_ID */
{
279
,
-
1
},
/* (290) table_name ::= NK_ID */
{
271
,
-
1
},
/* (291) column_name ::= NK_ID */
{
271
,
-
1
},
/* (291) column_name ::= NK_ID */
...
@@ -2872,9 +2873,9 @@ static const struct {
...
@@ -2872,9 +2873,9 @@ static const struct {
{
312
,
-
1
},
/* (294) column_alias ::= NK_ID */
{
312
,
-
1
},
/* (294) column_alias ::= NK_ID */
{
245
,
-
1
},
/* (295) user_name ::= NK_ID */
{
245
,
-
1
},
/* (295) user_name ::= NK_ID */
{
290
,
-
1
},
/* (296) index_name ::= NK_ID */
{
290
,
-
1
},
/* (296) index_name ::= NK_ID */
{
29
7
,
-
1
},
/* (297) topic_name ::= NK_ID */
{
29
6
,
-
1
},
/* (297) topic_name ::= NK_ID */
{
30
4
,
-
1
},
/* (298) stream_name ::= NK_ID */
{
30
3
,
-
1
},
/* (298) stream_name ::= NK_ID */
{
29
9
,
-
1
},
/* (299) cgroup_name ::= NK_ID */
{
29
8
,
-
1
},
/* (299) cgroup_name ::= NK_ID */
{
313
,
-
1
},
/* (300) expression ::= literal */
{
313
,
-
1
},
/* (300) expression ::= literal */
{
313
,
-
1
},
/* (301) expression ::= pseudo_column */
{
313
,
-
1
},
/* (301) expression ::= pseudo_column */
{
313
,
-
1
},
/* (302) expression ::= column_reference */
{
313
,
-
1
},
/* (302) expression ::= column_reference */
...
@@ -2889,8 +2890,8 @@ static const struct {
...
@@ -2889,8 +2890,8 @@ static const struct {
{
313
,
-
3
},
/* (311) expression ::= expression NK_SLASH expression */
{
313
,
-
3
},
/* (311) expression ::= expression NK_SLASH expression */
{
313
,
-
3
},
/* (312) expression ::= expression NK_REM expression */
{
313
,
-
3
},
/* (312) expression ::= expression NK_REM expression */
{
313
,
-
3
},
/* (313) expression ::= column_reference NK_ARROW NK_STRING */
{
313
,
-
3
},
/* (313) expression ::= column_reference NK_ARROW NK_STRING */
{
2
9
6
,
-
1
},
/* (314) expression_list ::= expression */
{
2
7
6
,
-
1
},
/* (314) expression_list ::= expression */
{
2
9
6
,
-
3
},
/* (315) expression_list ::= expression_list NK_COMMA expression */
{
2
7
6
,
-
3
},
/* (315) expression_list ::= expression_list NK_COMMA expression */
{
315
,
-
1
},
/* (316) column_reference ::= column_name */
{
315
,
-
1
},
/* (316) column_reference ::= column_name */
{
315
,
-
3
},
/* (317) column_reference ::= table_name NK_DOT column_name */
{
315
,
-
3
},
/* (317) column_reference ::= table_name NK_DOT column_name */
{
314
,
-
1
},
/* (318) pseudo_column ::= ROWTS */
{
314
,
-
1
},
/* (318) pseudo_column ::= ROWTS */
...
@@ -2905,8 +2906,8 @@ static const struct {
...
@@ -2905,8 +2906,8 @@ static const struct {
{
316
,
-
4
},
/* (327) function_expression ::= star_func NK_LP star_func_para_list NK_RP */
{
316
,
-
4
},
/* (327) function_expression ::= star_func NK_LP star_func_para_list NK_RP */
{
316
,
-
6
},
/* (328) function_expression ::= CAST NK_LP expression AS type_name NK_RP */
{
316
,
-
6
},
/* (328) function_expression ::= CAST NK_LP expression AS type_name NK_RP */
{
316
,
-
1
},
/* (329) function_expression ::= literal_func */
{
316
,
-
1
},
/* (329) function_expression ::= literal_func */
{
3
10
,
-
3
},
/* (330) literal_func ::= noarg_func NK_LP NK_RP */
{
3
09
,
-
3
},
/* (330) literal_func ::= noarg_func NK_LP NK_RP */
{
3
10
,
-
1
},
/* (331) literal_func ::= NOW */
{
3
09
,
-
1
},
/* (331) literal_func ::= NOW */
{
320
,
-
1
},
/* (332) noarg_func ::= NOW */
{
320
,
-
1
},
/* (332) noarg_func ::= NOW */
{
320
,
-
1
},
/* (333) noarg_func ::= TODAY */
{
320
,
-
1
},
/* (333) noarg_func ::= TODAY */
{
320
,
-
1
},
/* (334) noarg_func ::= TIMEZONE */
{
320
,
-
1
},
/* (334) noarg_func ::= TIMEZONE */
...
@@ -2977,8 +2978,8 @@ static const struct {
...
@@ -2977,8 +2978,8 @@ static const struct {
{
347
,
-
2
},
/* (399) select_item ::= common_expression column_alias */
{
347
,
-
2
},
/* (399) select_item ::= common_expression column_alias */
{
347
,
-
3
},
/* (400) select_item ::= common_expression AS column_alias */
{
347
,
-
3
},
/* (400) select_item ::= common_expression AS column_alias */
{
347
,
-
3
},
/* (401) select_item ::= table_name NK_DOT NK_STAR */
{
347
,
-
3
},
/* (401) select_item ::= table_name NK_DOT NK_STAR */
{
30
8
,
0
},
/* (402) where_clause_opt ::= */
{
30
7
,
0
},
/* (402) where_clause_opt ::= */
{
30
8
,
-
2
},
/* (403) where_clause_opt ::= WHERE search_condition */
{
30
7
,
-
2
},
/* (403) where_clause_opt ::= WHERE search_condition */
{
342
,
0
},
/* (404) partition_by_clause_opt ::= */
{
342
,
0
},
/* (404) partition_by_clause_opt ::= */
{
342
,
-
3
},
/* (405) partition_by_clause_opt ::= PARTITION BY expression_list */
{
342
,
-
3
},
/* (405) partition_by_clause_opt ::= PARTITION BY expression_list */
{
343
,
0
},
/* (406) twindow_clause_opt ::= */
{
343
,
0
},
/* (406) twindow_clause_opt ::= */
...
@@ -3002,7 +3003,7 @@ static const struct {
...
@@ -3002,7 +3003,7 @@ static const struct {
{
350
,
-
3
},
/* (424) group_by_list ::= group_by_list NK_COMMA expression */
{
350
,
-
3
},
/* (424) group_by_list ::= group_by_list NK_COMMA expression */
{
345
,
0
},
/* (425) having_clause_opt ::= */
{
345
,
0
},
/* (425) having_clause_opt ::= */
{
345
,
-
2
},
/* (426) having_clause_opt ::= HAVING search_condition */
{
345
,
-
2
},
/* (426) having_clause_opt ::= HAVING search_condition */
{
29
8
,
-
4
},
/* (427) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
29
7
,
-
4
},
/* (427) query_expression ::= query_expression_body order_by_clause_opt slimit_clause_opt limit_clause_opt */
{
351
,
-
1
},
/* (428) query_expression_body ::= query_primary */
{
351
,
-
1
},
/* (428) query_expression_body ::= query_primary */
{
351
,
-
4
},
/* (429) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
351
,
-
4
},
/* (429) query_expression_body ::= query_expression_body UNION ALL query_expression_body */
{
351
,
-
3
},
/* (430) query_expression_body ::= query_expression_body UNION query_expression_body */
{
351
,
-
3
},
/* (430) query_expression_body ::= query_expression_body UNION query_expression_body */
...
@@ -3531,7 +3532,7 @@ static YYACTIONTYPE yy_reduce(
...
@@ -3531,7 +3532,7 @@ static YYACTIONTYPE yy_reduce(
{
yylhsminor
.
yy424
=
addNodeToList
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy424
,
yymsp
[
0
].
minor
.
yy632
);
}
{
yylhsminor
.
yy424
=
addNodeToList
(
pCxt
,
yymsp
[
-
1
].
minor
.
yy424
,
yymsp
[
0
].
minor
.
yy632
);
}
yymsp
[
-
1
].
minor
.
yy424
=
yylhsminor
.
yy424
;
yymsp
[
-
1
].
minor
.
yy424
=
yylhsminor
.
yy424
;
break
;
break
;
case
125
:
/* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
literal
_list NK_RP table_options */
case
125
:
/* create_subtable_clause ::= not_exists_opt full_table_name USING full_table_name specific_tags_opt TAGS NK_LP
expression
_list NK_RP table_options */
{
yylhsminor
.
yy632
=
createCreateSubTableClause
(
pCxt
,
yymsp
[
-
9
].
minor
.
yy137
,
yymsp
[
-
8
].
minor
.
yy632
,
yymsp
[
-
6
].
minor
.
yy632
,
yymsp
[
-
5
].
minor
.
yy424
,
yymsp
[
-
2
].
minor
.
yy424
,
yymsp
[
0
].
minor
.
yy632
);
}
{
yylhsminor
.
yy632
=
createCreateSubTableClause
(
pCxt
,
yymsp
[
-
9
].
minor
.
yy137
,
yymsp
[
-
8
].
minor
.
yy632
,
yymsp
[
-
6
].
minor
.
yy632
,
yymsp
[
-
5
].
minor
.
yy424
,
yymsp
[
-
2
].
minor
.
yy424
,
yymsp
[
0
].
minor
.
yy632
);
}
yymsp
[
-
9
].
minor
.
yy632
=
yylhsminor
.
yy632
;
yymsp
[
-
9
].
minor
.
yy632
=
yylhsminor
.
yy632
;
break
;
break
;
...
...
source/libs/parser/test/mockCatalog.cpp
浏览文件 @
1676bfe5
...
@@ -141,16 +141,18 @@ void generateTestT1(MockCatalogService* mcs) {
...
@@ -141,16 +141,18 @@ void generateTestT1(MockCatalogService* mcs) {
* c2 | column | VARCHAR | 20 |
* c2 | column | VARCHAR | 20 |
* tag1 | tag | INT | 4 |
* tag1 | tag | INT | 4 |
* tag2 | tag | VARCHAR | 20 |
* tag2 | tag | VARCHAR | 20 |
* tag3 | tag | TIMESTAMP | 8 |
* Child Table: st1s1, st1s2
* Child Table: st1s1, st1s2
*/
*/
void
generateTestST1
(
MockCatalogService
*
mcs
)
{
void
generateTestST1
(
MockCatalogService
*
mcs
)
{
ITableBuilder
&
builder
=
mcs
->
createTableBuilder
(
"test"
,
"st1"
,
TSDB_SUPER_TABLE
,
3
,
2
)
ITableBuilder
&
builder
=
mcs
->
createTableBuilder
(
"test"
,
"st1"
,
TSDB_SUPER_TABLE
,
3
,
3
)
.
setPrecision
(
TSDB_TIME_PRECISION_MILLI
)
.
setPrecision
(
TSDB_TIME_PRECISION_MILLI
)
.
addColumn
(
"ts"
,
TSDB_DATA_TYPE_TIMESTAMP
)
.
addColumn
(
"ts"
,
TSDB_DATA_TYPE_TIMESTAMP
)
.
addColumn
(
"c1"
,
TSDB_DATA_TYPE_INT
)
.
addColumn
(
"c1"
,
TSDB_DATA_TYPE_INT
)
.
addColumn
(
"c2"
,
TSDB_DATA_TYPE_BINARY
,
20
)
.
addColumn
(
"c2"
,
TSDB_DATA_TYPE_BINARY
,
20
)
.
addTag
(
"tag1"
,
TSDB_DATA_TYPE_INT
)
.
addTag
(
"tag1"
,
TSDB_DATA_TYPE_INT
)
.
addTag
(
"tag2"
,
TSDB_DATA_TYPE_BINARY
,
20
);
.
addTag
(
"tag2"
,
TSDB_DATA_TYPE_BINARY
,
20
)
.
addTag
(
"tag3"
,
TSDB_DATA_TYPE_TIMESTAMP
);
builder
.
done
();
builder
.
done
();
mcs
->
createSubTable
(
"test"
,
"st1"
,
"st1s1"
,
1
);
mcs
->
createSubTable
(
"test"
,
"st1"
,
"st1s1"
,
1
);
mcs
->
createSubTable
(
"test"
,
"st1"
,
"st1s2"
,
2
);
mcs
->
createSubTable
(
"test"
,
"st1"
,
"st1s2"
,
2
);
...
@@ -189,17 +191,17 @@ void generateFunctions(MockCatalogService* mcs) {
...
@@ -189,17 +191,17 @@ void generateFunctions(MockCatalogService* mcs) {
int32_t
__catalogGetHandle
(
const
char
*
clusterId
,
struct
SCatalog
**
catalogHandle
)
{
return
0
;
}
int32_t
__catalogGetHandle
(
const
char
*
clusterId
,
struct
SCatalog
**
catalogHandle
)
{
return
0
;
}
int32_t
__catalogGetTableMeta
(
struct
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
int32_t
__catalogGetTableMeta
(
struct
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
STableMeta
**
pTableMeta
)
{
STableMeta
**
pTableMeta
)
{
return
g_mockCatalogService
->
catalogGetTableMeta
(
pTableName
,
pTableMeta
);
return
g_mockCatalogService
->
catalogGetTableMeta
(
pTableName
,
pTableMeta
);
}
}
int32_t
__catalogGetTableHashVgroup
(
struct
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
int32_t
__catalogGetTableHashVgroup
(
struct
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
const
SName
*
pTableName
,
SVgroupInfo
*
vgInfo
)
{
SVgroupInfo
*
vgInfo
)
{
return
g_mockCatalogService
->
catalogGetTableHashVgroup
(
pTableName
,
vgInfo
);
return
g_mockCatalogService
->
catalogGetTableHashVgroup
(
pTableName
,
vgInfo
);
}
}
int32_t
__catalogGetTableDistVgInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
int32_t
__catalogGetTableDistVgInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
SArray
**
pVgList
)
{
SArray
**
pVgList
)
{
return
g_mockCatalogService
->
catalogGetTableDistVgInfo
(
pTableName
,
pVgList
);
return
g_mockCatalogService
->
catalogGetTableDistVgInfo
(
pTableName
,
pVgList
);
}
}
...
@@ -209,28 +211,26 @@ int32_t __catalogGetDBVgVersion(SCatalog* pCtg, const char* dbFName, int32_t* ve
...
@@ -209,28 +211,26 @@ int32_t __catalogGetDBVgVersion(SCatalog* pCtg, const char* dbFName, int32_t* ve
return
0
;
return
0
;
}
}
int32_t
__catalogGetDBVgInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
dbFName
,
int32_t
__catalogGetDBVgInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
dbFName
,
SArray
**
pVgList
)
{
SArray
**
pVgList
)
{
return
g_mockCatalogService
->
catalogGetDBVgInfo
(
dbFName
,
pVgList
);
return
g_mockCatalogService
->
catalogGetDBVgInfo
(
dbFName
,
pVgList
);
}
}
int32_t
__catalogGetDBCfg
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
dbFName
,
SDbCfgInfo
*
pDbCfg
)
{
int32_t
__catalogGetDBCfg
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
dbFName
,
SDbCfgInfo
*
pDbCfg
)
{
return
0
;
return
0
;
}
}
int32_t
__catalogChkAuth
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
user
,
const
char
*
dbFNam
e
,
int32_t
__catalogChkAuth
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
user
,
const
char
*
dbFName
,
AUTH_TYPE
typ
e
,
AUTH_TYPE
type
,
bool
*
pass
)
{
bool
*
pass
)
{
*
pass
=
true
;
*
pass
=
true
;
return
0
;
return
0
;
}
}
int32_t
__catalogGetUdfInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
funcName
,
int32_t
__catalogGetUdfInfo
(
SCatalog
*
pCtg
,
SRequestConnInfo
*
pConn
,
const
char
*
funcName
,
SFuncInfo
*
pInfo
)
{
SFuncInfo
*
pInfo
)
{
return
g_mockCatalogService
->
catalogGetUdfInfo
(
funcName
,
pInfo
);
return
g_mockCatalogService
->
catalogGetUdfInfo
(
funcName
,
pInfo
);
}
}
int32_t
__catalogRefreshGetTableMeta
(
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
int32_t
__catalogRefreshGetTableMeta
(
SCatalog
*
pCatalog
,
SRequestConnInfo
*
pConn
,
const
SName
*
pTableName
,
const
SName
*
pTableName
,
STableMeta
**
pTableMeta
,
int32_t
isSTable
)
{
STableMeta
**
pTableMeta
,
int32_t
isSTable
)
{
return
g_mockCatalogService
->
catalogGetTableMeta
(
pTableName
,
pTableMeta
);
return
g_mockCatalogService
->
catalogGetTableMeta
(
pTableName
,
pTableMeta
);
}
}
...
...
source/libs/parser/test/parInitialATest.cpp
浏览文件 @
1676bfe5
...
@@ -163,9 +163,9 @@ TEST_F(ParserInitialATest, alterSTable) {
...
@@ -163,9 +163,9 @@ TEST_F(ParserInitialATest, alterSTable) {
run
(
"ALTER TABLE st1 DROP COLUMN c1"
);
run
(
"ALTER TABLE st1 DROP COLUMN c1"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c
1
"
,
TSDB_DATA_TYPE_VARCHAR
,
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES
,
1
,
"c
2
"
,
TSDB_DATA_TYPE_VARCHAR
,
2
0
+
VARSTR_HEADER_SIZE
);
3
0
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER TABLE st1 MODIFY COLUMN c
1 VARCHAR(2
0)"
);
run
(
"ALTER TABLE st1 MODIFY COLUMN c
2 VARCHAR(3
0)"
);
clearAlterStbReq
();
clearAlterStbReq
();
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1");
// setAlterStbReqFunc("st1", TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME, 2, "c1", 0, 0, "cc1");
...
@@ -179,9 +179,9 @@ TEST_F(ParserInitialATest, alterSTable) {
...
@@ -179,9 +179,9 @@ TEST_F(ParserInitialATest, alterSTable) {
run
(
"ALTER TABLE st1 DROP TAG tag1"
);
run
(
"ALTER TABLE st1 DROP TAG tag1"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
,
1
,
"tag
1
"
,
TSDB_DATA_TYPE_VARCHAR
,
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_BYTES
,
1
,
"tag
2
"
,
TSDB_DATA_TYPE_VARCHAR
,
2
0
+
VARSTR_HEADER_SIZE
);
3
0
+
VARSTR_HEADER_SIZE
);
run
(
"ALTER TABLE st1 MODIFY TAG tag
1 VARCHAR(2
0)"
);
run
(
"ALTER TABLE st1 MODIFY TAG tag
2 VARCHAR(3
0)"
);
clearAlterStbReq
();
clearAlterStbReq
();
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
setAlterStbReqFunc
(
"st1"
,
TSDB_ALTER_TABLE_UPDATE_TAG_NAME
,
2
,
"tag1"
,
0
,
0
,
"tag11"
);
...
@@ -196,6 +196,10 @@ TEST_F(ParserInitialATest, alterSTableSemanticCheck) {
...
@@ -196,6 +196,10 @@ TEST_F(ParserInitialATest, alterSTableSemanticCheck) {
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"ALTER TABLE st1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1 MODIFY COLUMN c2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
run
(
"ALTER TABLE st1 MODIFY TAG tag2 NCHAR(10)"
,
TSDB_CODE_PAR_INVALID_MODIFY_COL
);
}
}
TEST_F
(
ParserInitialATest
,
alterTable
)
{
TEST_F
(
ParserInitialATest
,
alterTable
)
{
...
@@ -336,6 +340,8 @@ TEST_F(ParserInitialATest, alterTableSemanticCheck) {
...
@@ -336,6 +340,8 @@ TEST_F(ParserInitialATest, alterTableSemanticCheck) {
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"ALTER TABLE st1s1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 RENAME COLUMN c1 cc1"
,
TSDB_CODE_PAR_INVALID_ALTER_TABLE
);
run
(
"ALTER TABLE st1s1 SET TAG tag2 = '123456789012345678901'"
,
TSDB_CODE_PAR_WRONG_VALUE_TYPE
);
}
}
TEST_F
(
ParserInitialATest
,
alterUser
)
{
TEST_F
(
ParserInitialATest
,
alterUser
)
{
...
...
source/libs/parser/test/parInitialCTest.cpp
浏览文件 @
1676bfe5
...
@@ -548,12 +548,14 @@ TEST_F(ParserInitialCTest, createTable) {
...
@@ -548,12 +548,14 @@ TEST_F(ParserInitialCTest, createTable) {
"a14 NCHAR(30), a15 VARCHAR(50)) "
"a14 NCHAR(30), a15 VARCHAR(50)) "
"TTL 100 COMMENT 'test create table' SMA(c1, c2, c3) ROLLUP (MIN) FILE_FACTOR 0.1"
);
"TTL 100 COMMENT 'test create table' SMA(c1, c2, c3) ROLLUP (MIN) FILE_FACTOR 0.1"
);
run
(
"CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy')"
);
run
(
"CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy'
, NOW
)"
);
run
(
"CREATE TABLE "
run
(
"CREATE TABLE "
"IF NOT EXISTS test.t1 USING test.st1 (tag1, tag2) TAGS(1, 'abc') "
"IF NOT EXISTS test.t1 USING test.st1 (tag1, tag2) TAGS(1, 'abc') "
"IF NOT EXISTS test.t2 USING test.st1 (tag1, tag2) TAGS(2, 'abc') "
"IF NOT EXISTS test.t2 USING test.st1 (tag1, tag2) TAGS(2, 'abc') "
"IF NOT EXISTS test.t3 USING test.st1 (tag1, tag2) TAGS(3, 'abc') "
);
"IF NOT EXISTS test.t3 USING test.st1 (tag1, tag2) TAGS(3, 'abc') "
);
// run("CREATE TABLE IF NOT EXISTS t1 USING st1 TAGS(1, 'wxy', NOW + 1S)");
}
}
TEST_F
(
ParserInitialCTest
,
createTopic
)
{
TEST_F
(
ParserInitialCTest
,
createTopic
)
{
...
...
source/libs/parser/test/parInsertTest.cpp
浏览文件 @
1676bfe5
...
@@ -245,8 +245,8 @@ TEST_F(InsertTest, autoCreateTableTest) {
...
@@ -245,8 +245,8 @@ TEST_F(InsertTest, autoCreateTableTest) {
setDatabase
(
"root"
,
"test"
);
setDatabase
(
"root"
,
"test"
);
bind
(
bind
(
"insert into st1s1 using st1 tags(1, 'wxy'
) values (now, 1,
\"
beijing
\"
)(now+1s, 2,
\"
shanghai
\"
)(now+2s, 3,
"
"insert into st1s1 using st1 tags(1, 'wxy'
, now)
"
"
\"
guangzhou
\"
)"
);
"
values (now, 1,
\"
beijing
\"
)(now+1s, 2,
\"
shanghai
\"
)(now+2s, 3,
\"
guangzhou
\"
)"
);
ASSERT_EQ
(
run
(),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
run
(),
TSDB_CODE_SUCCESS
);
dumpReslut
();
dumpReslut
();
checkReslut
(
1
,
3
);
checkReslut
(
1
,
3
);
...
@@ -257,8 +257,8 @@ TEST_F(InsertTest, autoCreateTableTest) {
...
@@ -257,8 +257,8 @@ TEST_F(InsertTest, autoCreateTableTest) {
ASSERT_EQ
(
run
(),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
run
(),
TSDB_CODE_SUCCESS
);
bind
(
bind
(
"insert into st1s1 using st1 tags(1, 'wxy'
) values (now, 1,
\"
beijing
\"
)(now+1s, 2,
\"
shanghai
\"
)(now+2s, 3,
"
"insert into st1s1 using st1 tags(1, 'wxy'
, now)
"
"
\"
guangzhou
\"
)"
);
"
values (now, 1,
\"
beijing
\"
)(now+1s, 2,
\"
shanghai
\"
)(now+2s, 3,
\"
guangzhou
\"
)"
);
ASSERT_EQ
(
runAsync
(),
TSDB_CODE_SUCCESS
);
ASSERT_EQ
(
runAsync
(),
TSDB_CODE_SUCCESS
);
bind
(
bind
(
...
...
source/libs/parser/test/parSelectTest.cpp
浏览文件 @
1676bfe5
...
@@ -219,6 +219,7 @@ TEST_F(ParserSelectTest, intervalSemanticCheck) {
...
@@ -219,6 +219,7 @@ TEST_F(ParserSelectTest, intervalSemanticCheck) {
run
(
"SELECT HISTOGRAM(c1, 'log_bin', '{
\"
start
\"
: -33,
\"
factor
\"
: 55,
\"
count
\"
: 5,
\"
infinity
\"
: false}', 1) FROM t1 "
run
(
"SELECT HISTOGRAM(c1, 'log_bin', '{
\"
start
\"
: -33,
\"
factor
\"
: 55,
\"
count
\"
: 5,
\"
infinity
\"
: false}', 1) FROM t1 "
"WHERE ts > TIMESTAMP '2022-04-01 00:00:00' and ts < TIMESTAMP '2022-04-30 23:59:59' INTERVAL(10s) FILL(NULL)"
,
"WHERE ts > TIMESTAMP '2022-04-01 00:00:00' and ts < TIMESTAMP '2022-04-30 23:59:59' INTERVAL(10s) FILL(NULL)"
,
TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC
);
TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC
);
run
(
"SELECT _WSTARTTS, _WENDTS, _WDURATION, sum(c1) FROM t1"
,
TSDB_CODE_PAR_INVALID_WINDOW_PC
);
}
}
TEST_F
(
ParserSelectTest
,
subquery
)
{
TEST_F
(
ParserSelectTest
,
subquery
)
{
...
@@ -231,13 +232,22 @@ TEST_F(ParserSelectTest, subquery) {
...
@@ -231,13 +232,22 @@ TEST_F(ParserSelectTest, subquery) {
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a, ts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"
);
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a, ts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"
);
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a, _wstartts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"
);
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a, _wstartts FROM st1s1 PARTITION BY TBNAME INTERVAL(1m)) INTERVAL(1n)"
);
run
(
"SELECT _C0 FROM (SELECT _ROWTS, ts FROM st1s1)"
);
run
(
"SELECT ts FROM (SELECT t1.ts FROM st1s1 t1)"
);
}
}
TEST_F
(
ParserSelectTest
,
subquerySemanticCheck
)
{
TEST_F
(
ParserSelectTest
,
subquerySemanticCheck
)
{
useDb
(
"root"
,
"test"
);
useDb
(
"root"
,
"test"
);
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a FROM st1s1 INTERVAL(1m)) INTERVAL(1n)"
,
TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY
,
run
(
"SELECT SUM(a) FROM (SELECT MAX(c1) a FROM st1s1 INTERVAL(1m)) INTERVAL(1n)"
,
PARSER_STAGE_TRANSLATE
);
TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY
);
run
(
"SELECT ts FROM (SELECT t1.ts AS ts, t2.ts FROM st1s1 t1, st1s2 t2 WHERE t1.ts = t2.ts)"
,
TSDB_CODE_PAR_AMBIGUOUS_COLUMN
);
run
(
"SELECT ts FROM (SELECT ts AS c1 FROM st1s1 t1)"
,
TSDB_CODE_PAR_INVALID_COLUMN
);
}
}
TEST_F
(
ParserSelectTest
,
semanticCheck
)
{
TEST_F
(
ParserSelectTest
,
semanticCheck
)
{
...
...
source/libs/parser/test/parTestUtil.cpp
浏览文件 @
1676bfe5
...
@@ -62,7 +62,7 @@ int32_t getLogLevel() { return g_logLevel; }
...
@@ -62,7 +62,7 @@ int32_t getLogLevel() { return g_logLevel; }
class
ParserTestBaseImpl
{
class
ParserTestBaseImpl
{
public:
public:
ParserTestBaseImpl
(
ParserTestBase
*
pBase
)
:
pBase_
(
pBase
)
{}
ParserTestBaseImpl
(
ParserTestBase
*
pBase
)
:
pBase_
(
pBase
)
,
sqlNo_
(
0
)
{}
void
login
(
const
std
::
string
&
user
)
{
caseEnv_
.
user_
=
user
;
}
void
login
(
const
std
::
string
&
user
)
{
caseEnv_
.
user_
=
user
;
}
...
@@ -73,6 +73,7 @@ class ParserTestBaseImpl {
...
@@ -73,6 +73,7 @@ class ParserTestBaseImpl {
}
}
void
run
(
const
string
&
sql
,
int32_t
expect
,
ParserStage
checkStage
)
{
void
run
(
const
string
&
sql
,
int32_t
expect
,
ParserStage
checkStage
)
{
++
sqlNo_
;
if
(
caseEnv_
.
nsql_
>
0
)
{
if
(
caseEnv_
.
nsql_
>
0
)
{
--
(
caseEnv_
.
nsql_
);
--
(
caseEnv_
.
nsql_
);
return
;
return
;
...
@@ -174,7 +175,7 @@ class ParserTestBaseImpl {
...
@@ -174,7 +175,7 @@ class ParserTestBaseImpl {
}
}
void
dump
()
{
void
dump
()
{
cout
<<
"==========================================sql : ["
<<
stmtEnv_
.
sql_
<<
"]"
<<
endl
;
cout
<<
"==========================================
"
<<
sqlNo_
<<
"
sql : ["
<<
stmtEnv_
.
sql_
<<
"]"
<<
endl
;
if
(
!
res_
.
parsedAst_
.
empty
())
{
if
(
!
res_
.
parsedAst_
.
empty
())
{
cout
<<
"raw syntax tree : "
<<
endl
;
cout
<<
"raw syntax tree : "
<<
endl
;
cout
<<
res_
.
parsedAst_
<<
endl
;
cout
<<
res_
.
parsedAst_
<<
endl
;
...
@@ -425,6 +426,7 @@ class ParserTestBaseImpl {
...
@@ -425,6 +426,7 @@ class ParserTestBaseImpl {
stmtEnv
stmtEnv_
;
stmtEnv
stmtEnv_
;
stmtRes
res_
;
stmtRes
res_
;
ParserTestBase
*
pBase_
;
ParserTestBase
*
pBase_
;
int32_t
sqlNo_
;
};
};
ParserTestBase
::
ParserTestBase
()
:
impl_
(
new
ParserTestBaseImpl
(
this
))
{}
ParserTestBase
::
ParserTestBase
()
:
impl_
(
new
ParserTestBaseImpl
(
this
))
{}
...
...
source/libs/planner/src/planSpliter.c
浏览文件 @
1676bfe5
...
@@ -416,6 +416,8 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO
...
@@ -416,6 +416,8 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO
pMergeAgg
->
node
.
pTargets
=
NULL
;
pMergeAgg
->
node
.
pTargets
=
NULL
;
SNodeList
*
pChildren
=
pMergeAgg
->
node
.
pChildren
;
SNodeList
*
pChildren
=
pMergeAgg
->
node
.
pChildren
;
pMergeAgg
->
node
.
pChildren
=
NULL
;
pMergeAgg
->
node
.
pChildren
=
NULL
;
SNode
*
pConditions
=
pMergeAgg
->
node
.
pConditions
;
pMergeAgg
->
node
.
pConditions
=
NULL
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
int32_t
code
=
TSDB_CODE_SUCCESS
;
SAggLogicNode
*
pPartAgg
=
(
SAggLogicNode
*
)
nodesCloneNode
((
SNode
*
)
pMergeAgg
);
SAggLogicNode
*
pPartAgg
=
(
SAggLogicNode
*
)
nodesCloneNode
((
SNode
*
)
pMergeAgg
);
...
@@ -434,6 +436,7 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO
...
@@ -434,6 +436,7 @@ static int32_t stbSplCreatePartAggNode(SAggLogicNode* pMergeAgg, SLogicNode** pO
}
}
}
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
if
(
TSDB_CODE_SUCCESS
==
code
)
{
pMergeAgg
->
node
.
pConditions
=
pConditions
;
pMergeAgg
->
node
.
pTargets
=
pTargets
;
pMergeAgg
->
node
.
pTargets
=
pTargets
;
pPartAgg
->
node
.
pChildren
=
pChildren
;
pPartAgg
->
node
.
pChildren
=
pChildren
;
...
...
source/libs/planner/test/planGroupByTest.cpp
浏览文件 @
1676bfe5
...
@@ -82,4 +82,6 @@ TEST_F(PlanGroupByTest, stable) {
...
@@ -82,4 +82,6 @@ TEST_F(PlanGroupByTest, stable) {
run
(
"SELECT COUNT(*) FROM st1"
);
run
(
"SELECT COUNT(*) FROM st1"
);
run
(
"SELECT COUNT(*) FROM st1 GROUP BY c1"
);
run
(
"SELECT COUNT(*) FROM st1 GROUP BY c1"
);
run
(
"SELECT SUM(c1) FROM st1 GROUP BY c2 HAVING SUM(c1) IS NOT NULL"
);
}
}
tests/script/jenkins/basic.txt
浏览文件 @
1676bfe5
...
@@ -2,20 +2,20 @@
...
@@ -2,20 +2,20 @@
#======================b1-start===============
#======================b1-start===============
# ---- user
# ---- user
#
./test.sh -f tsim/user/basic1.sim
./test.sh -f tsim/user/basic1.sim
#
./test.sh -f tsim/user/pass_alter.sim
./test.sh -f tsim/user/pass_alter.sim
#
./test.sh -f tsim/user/pass_len.sim
./test.sh -f tsim/user/pass_len.sim
#
./test.sh -f tsim/user/user_len.sim
./test.sh -f tsim/user/user_len.sim
#
./test.sh -f tsim/user/privilege1.sim
./test.sh -f tsim/user/privilege1.sim
#./test.sh -f tsim/user/privilege2.sim#
./test.sh -f tsim/user/privilege2.sim
## ---- db
## ---- db
#
./test.sh -f tsim/db/create_all_options.sim
./test.sh -f tsim/db/create_all_options.sim
#
./test.sh -f tsim/db/alter_option.sim
./test.sh -f tsim/db/alter_option.sim
#
./test.sh -f tsim/db/basic1.sim
./test.sh -f tsim/db/basic1.sim
#
./test.sh -f tsim/db/basic2.sim
./test.sh -f tsim/db/basic2.sim
#
./test.sh -f tsim/db/basic3.sim
./test.sh -f tsim/db/basic3.sim
#
./test.sh -f tsim/db/basic6.sim
./test.sh -f tsim/db/basic6.sim
./test.sh -f tsim/db/basic7.sim
./test.sh -f tsim/db/basic7.sim
./test.sh -f tsim/db/error1.sim
./test.sh -f tsim/db/error1.sim
./test.sh -f tsim/db/taosdlog.sim
./test.sh -f tsim/db/taosdlog.sim
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录