fix: some problem of parser and planner

This commit is contained in:
Xiaoyu Wang 2022-07-08 17:35:11 +08:00
parent 9aa35c2e28
commit df06d22cb3
9 changed files with 552 additions and 605 deletions

View File

@ -25,7 +25,7 @@ extern "C" {
typedef struct SFilterInfo SFilterInfo;
int32_t scalarGetOperatorResultType(SDataType left, SDataType right, EOperatorType op, SDataType* pRes);
int32_t scalarGetOperatorResultType(SOperatorNode* pOp);
/*
pNode will be freed in API;

View File

@ -252,7 +252,7 @@ static const SSysTableMeta infosMeta[] = {
{TSDB_INS_TABLE_USER_STABLES, userStbsSchema, tListLen(userStbsSchema)},
{TSDB_PERFS_TABLE_STREAMS, streamSchema, tListLen(streamSchema)},
{TSDB_INS_TABLE_USER_TABLES, userTblsSchema, tListLen(userTblsSchema)},
{TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED, userTblDistSchema, tListLen(userTblDistSchema)},
// {TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED, userTblDistSchema, tListLen(userTblDistSchema)},
{TSDB_INS_TABLE_USER_USERS, userUsersSchema, tListLen(userUsersSchema)},
{TSDB_INS_TABLE_LICENCES, grantsSchema, tListLen(grantsSchema)},
{TSDB_INS_TABLE_VGROUPS, vgroupsSchema, tListLen(vgroupsSchema)},

View File

@ -1131,14 +1131,17 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
SSmaObj *pSma = NULL;
int32_t cols = 0;
SDbObj *pDb = mndAcquireDb(pMnode, pShow->db);
if (pDb == NULL) return 0;
SDbObj *pDb = NULL;
if (strlen(pShow->db) > 0) {
pDb = mndAcquireDb(pMnode, pShow->db);
if (pDb == NULL) return 0;
}
while (numOfRows < rows) {
pShow->pIter = sdbFetch(pSdb, SDB_SMA, pShow->pIter, (void **)&pSma);
if (pShow->pIter == NULL) break;
if (pSma->dbUid != pDb->uid) {
if (NULL != pDb && pSma->dbUid != pDb->uid) {
sdbRelease(pSdb, pSma);
continue;
}
@ -1151,7 +1154,7 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
STR_TO_VARSTR(n1, (char *)tNameGetTableName(&smaName));
char n2[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
STR_TO_VARSTR(n2, (char *)mndGetDbStr(pDb->name));
STR_TO_VARSTR(n2, (char *)mndGetDbStr(pSma->db));
SName stbName = {0};
tNameFromString(&stbName, pSma->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);

View File

@ -769,7 +769,7 @@ compare_op(A) ::= CONTAINS.
in_op(A) ::= IN. { A = OP_TYPE_IN; }
in_op(A) ::= NOT IN. { A = OP_TYPE_NOT_IN; }
in_predicate_value(A) ::= NK_LP(C) expression_list(B) NK_RP(D). { A = createRawExprNodeExt(pCxt, &C, &D, createNodeListNode(pCxt, B)); }
in_predicate_value(A) ::= NK_LP(C) literal_list(B) NK_RP(D). { A = createRawExprNodeExt(pCxt, &C, &D, createNodeListNode(pCxt, B)); }
/************************************************ boolean_value_expression ********************************************/
boolean_value_expression(A) ::= boolean_primary(B). { A = B; }

View File

@ -195,8 +195,8 @@ static int32_t calcConstProject(SNode* pProject, SNode** pNew) {
return code;
}
static bool isUselessCol(bool hasSelectValFunc, SExprNode* pProj) {
if (hasSelectValFunc && QUERY_NODE_FUNCTION == nodeType(pProj) && fmIsSelectFunc(((SFunctionNode*)pProj)->funcId)) {
static bool isUselessCol(SExprNode* pProj) {
if (QUERY_NODE_FUNCTION == nodeType(pProj) && !fmIsScalarFunc(((SFunctionNode*)pProj)->funcId)) {
return false;
}
return NULL == ((SExprNode*)pProj)->pAssociation;
@ -218,7 +218,7 @@ static SNode* createConstantValue() {
static int32_t calcConstProjections(SCalcConstContext* pCxt, SSelectStmt* pSelect, bool subquery) {
SNode* pProj = NULL;
WHERE_EACH(pProj, pSelect->pProjectionList) {
if (subquery && isUselessCol(pSelect->hasSelectValFunc, (SExprNode*)pProj)) {
if (subquery && isUselessCol((SExprNode*)pProj)) {
ERASE_NODE(pSelect->pProjectionList);
continue;
}

View File

@ -977,131 +977,11 @@ static bool isMultiResFunc(SNode* pNode) {
return (QUERY_NODE_COLUMN == nodeType(pParam) ? 0 == strcmp(((SColumnNode*)pParam)->colName, "*") : false);
}
static int32_t rewriteNegativeOperator(SNode** pOp) {
SNode* pRes = NULL;
int32_t code = scalarCalculateConstants(*pOp, &pRes);
if (TSDB_CODE_SUCCESS == code) {
*pOp = pRes;
}
return code;
}
static EDealRes translateUnaryOperator(STranslateContext* pCxt, SOperatorNode** pOpRef) {
SOperatorNode* pOp = *pOpRef;
if (OP_TYPE_MINUS == pOp->opType) {
if (!IS_MATHABLE_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName);
}
pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
pCxt->errCode = rewriteNegativeOperator((SNode**)pOpRef);
} else {
pOp->node.resType.type = TSDB_DATA_TYPE_BOOL;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes;
}
return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
}
static EDealRes translateArithmeticOperator(STranslateContext* pCxt, SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_TIMESTAMP == rdt.type) ||
(TSDB_DATA_TYPE_TIMESTAMP == ldt.type && (IS_VAR_DATA_TYPE(rdt.type) || IS_FLOAT_TYPE(rdt.type))) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && (IS_VAR_DATA_TYPE(ldt.type) || IS_FLOAT_TYPE(ldt.type)))) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && IS_INTEGER_TYPE(rdt.type)) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && IS_INTEGER_TYPE(ldt.type)) ||
(TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_BOOL == rdt.type) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && TSDB_DATA_TYPE_BOOL == ldt.type)) {
pOp->node.resType.type = TSDB_DATA_TYPE_TIMESTAMP;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes;
} else {
pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
}
return DEAL_RES_CONTINUE;
}
static bool dataTypeEqual(const SDataType* l, const SDataType* r) {
return (l->type == r->type && l->bytes == r->bytes && l->precision == r->precision && l->scale == r->scale);
}
static EDealRes translateComparisonOperator(STranslateContext* pCxt, SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
if (OP_TYPE_IN == pOp->opType || OP_TYPE_NOT_IN == pOp->opType) {
SNodeListNode* pRight = (SNodeListNode*)pOp->pRight;
bool first = true;
SDataType targetDt = {0};
SNode* pNode = NULL;
FOREACH(pNode, pRight->pNodeList) {
SDataType dt = ((SExprNode*)pNode)->resType;
if (first) {
targetDt = dt;
if (targetDt.type != TSDB_DATA_TYPE_NULL) {
first = false;
}
} else if (dt.type != targetDt.type && dt.type != TSDB_DATA_TYPE_NULL) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)pNode)->aliasName);
} else if (dt.bytes > targetDt.bytes) {
targetDt.bytes = dt.bytes;
}
}
pRight->dataType = targetDt;
}
if (nodesIsRegularOp(pOp)) {
if (!IS_VAR_DATA_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName);
}
if (QUERY_NODE_VALUE != nodeType(pOp->pRight) ||
((!IS_STR_DATA_TYPE(((SExprNode*)(pOp->pRight))->resType.type)) &&
(((SExprNode*)(pOp->pRight))->resType.type != TSDB_DATA_TYPE_NULL))) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
}
pOp->node.resType.type = TSDB_DATA_TYPE_BOOL;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes;
return DEAL_RES_CONTINUE;
}
static EDealRes translateJsonOperator(STranslateContext* pCxt, SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (TSDB_DATA_TYPE_JSON != ldt.type || TSDB_DATA_TYPE_BINARY != rdt.type) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
if (pOp->opType == OP_TYPE_JSON_GET_VALUE) {
pOp->node.resType.type = TSDB_DATA_TYPE_JSON;
} else if (pOp->opType == OP_TYPE_JSON_CONTAINS) {
pOp->node.resType.type = TSDB_DATA_TYPE_BOOL;
}
pOp->node.resType.bytes = tDataTypes[pOp->node.resType.type].bytes;
return DEAL_RES_CONTINUE;
}
static EDealRes translateBitwiseOperator(STranslateContext* pCxt, SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
pOp->node.resType.type = TSDB_DATA_TYPE_BIGINT;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
return DEAL_RES_CONTINUE;
}
static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode** pOpRef) {
SOperatorNode* pOp = *pOpRef;
static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode* pOp) {
if (isMultiResFunc(pOp->pLeft)) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName);
}
@ -1109,17 +989,10 @@ static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode** pOpRe
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName);
}
if (nodesIsUnaryOp(pOp)) {
return translateUnaryOperator(pCxt, pOpRef);
} else if (nodesIsArithmeticOp(pOp)) {
return translateArithmeticOperator(pCxt, pOp);
} else if (nodesIsComparisonOp(pOp)) {
return translateComparisonOperator(pCxt, pOp);
} else if (nodesIsJsonOp(pOp)) {
return translateJsonOperator(pCxt, pOp);
} else if (nodesIsBitwiseOp(pOp)) {
return translateBitwiseOperator(pCxt, pOp);
if (TSDB_CODE_SUCCESS != scalarGetOperatorResultType(pOp)) {
return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pOp->node.aliasName);
}
return DEAL_RES_CONTINUE;
}
@ -1485,7 +1358,7 @@ static EDealRes doTranslateExpr(SNode** pNode, void* pContext) {
case QUERY_NODE_VALUE:
return translateValue(pCxt, (SValueNode*)*pNode);
case QUERY_NODE_OPERATOR:
return translateOperator(pCxt, (SOperatorNode**)pNode);
return translateOperator(pCxt, (SOperatorNode*)*pNode);
case QUERY_NODE_FUNCTION:
return translateFunction(pCxt, (SFunctionNode**)pNode);
case QUERY_NODE_LOGIC_CONDITION:
@ -3352,7 +3225,7 @@ static int32_t checkTableRollupOption(STranslateContext* pCxt, SNodeList* pFuncs
if (NULL == pFuncs) {
if (NULL != pDbCfg->pRetensions) {
return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TABLE_OPTION,
"To create a super table in a database with the retensions parameter configured, "
"To create a super table in databases configured with the 'RETENTIONS' option, "
"the 'ROLLUP' option must be present");
}
return TSDB_CODE_SUCCESS;
@ -3563,10 +3436,12 @@ static int32_t checkTableWatermarkOption(STranslateContext* pCxt, STableOptions*
}
static int32_t checkCreateTable(STranslateContext* pCxt, SCreateTableStmt* pStmt, bool createStable) {
int32_t code = TSDB_CODE_SUCCESS;
SDbCfgInfo dbCfg = {0};
if (createStable) {
code = getDBCfg(pCxt, pStmt->dbName, &dbCfg);
int32_t code = getDBCfg(pCxt, pStmt->dbName, &dbCfg);
if (TSDB_CODE_SUCCESS == code && !createStable && NULL != dbCfg.pRetensions) {
code = generateSyntaxErrMsgExt(
&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TABLE_OPTION,
"Only super table creation is supported in databases configured with the 'RETENTIONS' option");
}
if (TSDB_CODE_SUCCESS == code) {
code = checkTableMaxDelayOption(pCxt, pStmt->pOptions, createStable, &dbCfg);

View File

@ -216,244 +216,252 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (2360)
#define YY_ACTTAB_COUNT (2436)
static const YYACTIONTYPE yy_action[] = {
/* 0 */ 430, 1920, 431, 1491, 438, 71, 431, 1491, 514, 62,
/* 10 */ 1645, 1693, 40, 38, 1919, 550, 323, 325, 1917, 1690,
/* 20 */ 337, 86, 1254, 1457, 34, 33, 1643, 1589, 41, 39,
/* 30 */ 37, 36, 35, 1329, 119, 1252, 1777, 41, 39, 37,
/* 40 */ 36, 35, 1585, 122, 103, 1734, 550, 102, 101, 100,
/* 50 */ 99, 98, 97, 96, 95, 94, 1324, 526, 550, 23,
/* 10 */ 1645, 1693, 39, 37, 1919, 549, 323, 325, 1917, 1690,
/* 20 */ 337, 86, 1254, 1457, 33, 32, 1643, 1589, 40, 38,
/* 30 */ 36, 35, 34, 1329, 119, 1252, 1777, 40, 38, 36,
/* 40 */ 35, 34, 1585, 122, 103, 1734, 549, 102, 101, 100,
/* 50 */ 99, 98, 97, 96, 95, 94, 1324, 526, 549, 22,
/* 60 */ 14, 1016, 342, 1015, 1795, 1638, 1640, 1260, 113, 142,
/* 70 */ 1795, 1468, 578, 79, 122, 468, 466, 1747, 543, 577,
/* 80 */ 40, 38, 1392, 120, 1, 1593, 122, 61, 337, 61,
/* 90 */ 1254, 1017, 358, 555, 1586, 555, 379, 552, 155, 1862,
/* 70 */ 1795, 1468, 578, 79, 122, 468, 466, 1747, 542, 577,
/* 80 */ 39, 37, 1392, 120, 1, 1593, 122, 61, 337, 61,
/* 90 */ 1254, 1017, 358, 554, 1586, 554, 379, 551, 155, 1862,
/* 100 */ 1863, 1329, 1867, 1252, 1808, 1479, 659, 1521, 89, 1778,
/* 110 */ 580, 1780, 1781, 576, 120, 571, 542, 553, 1854, 553,
/* 110 */ 580, 1780, 1781, 576, 120, 571, 541, 552, 1854, 552,
/* 120 */ 1331, 1332, 304, 1850, 1324, 1478, 120, 526, 14, 249,
/* 130 */ 1862, 549, 1456, 548, 1920, 1260, 1920, 1920, 164, 31,
/* 130 */ 1862, 548, 1456, 547, 1920, 1260, 1920, 1920, 164, 30,
/* 140 */ 259, 156, 1862, 1863, 1777, 1867, 1747, 161, 447, 161,
/* 150 */ 159, 1917, 2, 1917, 1917, 1593, 112, 111, 110, 109,
/* 160 */ 108, 107, 106, 105, 104, 1255, 1747, 1253, 1279, 483,
/* 170 */ 482, 481, 1795, 1920, 659, 480, 220, 221, 118, 477,
/* 180 */ 578, 44, 476, 475, 474, 1747, 160, 577, 1331, 1332,
/* 180 */ 578, 43, 476, 475, 474, 1747, 160, 577, 1331, 1332,
/* 190 */ 1917, 429, 1258, 1259, 433, 1307, 1308, 1310, 1311, 1312,
/* 200 */ 1313, 1314, 573, 569, 1322, 1323, 1325, 1326, 1327, 1328,
/* 210 */ 1330, 1333, 1808, 1413, 1278, 539, 90, 1778, 580, 1780,
/* 220 */ 1781, 576, 1279, 571, 162, 1454, 1854, 162, 553, 162,
/* 230 */ 330, 1850, 1933, 1255, 314, 1253, 61, 303, 140, 143,
/* 240 */ 516, 1888, 999, 1549, 34, 33, 1645, 1596, 41, 39,
/* 250 */ 37, 36, 35, 341, 536, 1411, 1412, 1414, 1415, 1477,
/* 210 */ 1330, 1333, 1808, 1413, 1278, 538, 90, 1778, 580, 1780,
/* 220 */ 1781, 576, 1279, 571, 162, 1454, 1854, 162, 552, 162,
/* 230 */ 328, 1850, 1933, 1255, 314, 1253, 61, 303, 140, 143,
/* 240 */ 516, 1888, 999, 1549, 33, 32, 1645, 1596, 40, 38,
/* 250 */ 36, 35, 34, 341, 535, 1411, 1412, 1414, 1415, 1477,
/* 260 */ 1258, 1259, 1643, 1307, 1308, 1310, 1311, 1312, 1313, 1314,
/* 270 */ 573, 569, 1322, 1323, 1325, 1326, 1327, 1328, 1330, 1333,
/* 280 */ 40, 38, 1003, 1004, 315, 349, 313, 312, 337, 470,
/* 290 */ 1254, 1777, 43, 472, 545, 540, 305, 1353, 11, 10,
/* 280 */ 39, 37, 1003, 1004, 315, 349, 313, 312, 337, 470,
/* 290 */ 1254, 1777, 42, 472, 544, 539, 305, 1353, 11, 10,
/* 300 */ 1747, 1329, 103, 1252, 153, 102, 101, 100, 99, 98,
/* 310 */ 97, 96, 95, 94, 385, 471, 378, 1632, 377, 1795,
/* 320 */ 1358, 1292, 1151, 1152, 1324, 1278, 1920, 554, 14, 1351,
/* 330 */ 1639, 1640, 1747, 437, 577, 1260, 433, 40, 38, 159,
/* 320 */ 1358, 1292, 1151, 1152, 1324, 1278, 1920, 553, 14, 1351,
/* 330 */ 1639, 1640, 1747, 437, 577, 1260, 433, 39, 37, 159,
/* 340 */ 483, 482, 481, 1917, 1920, 337, 480, 1254, 1518, 118,
/* 350 */ 477, 301, 2, 476, 475, 474, 605, 1918, 1329, 1808,
/* 360 */ 1252, 1917, 28, 90, 1778, 580, 1780, 1781, 576, 435,
/* 370 */ 571, 71, 370, 1854, 659, 1276, 162, 330, 1850, 154,
/* 360 */ 1252, 1917, 27, 90, 1778, 580, 1780, 1781, 576, 435,
/* 370 */ 571, 71, 370, 1854, 659, 1276, 162, 328, 1850, 154,
/* 380 */ 1396, 1324, 1365, 1352, 117, 1016, 1278, 1015, 1331, 1332,
/* 390 */ 1309, 158, 1260, 1588, 372, 368, 544, 34, 33, 1880,
/* 400 */ 1571, 41, 39, 37, 36, 35, 1357, 479, 478, 8,
/* 390 */ 1309, 158, 1260, 1588, 372, 368, 543, 33, 32, 1880,
/* 400 */ 1571, 40, 38, 36, 35, 34, 1357, 479, 478, 8,
/* 410 */ 636, 635, 634, 633, 345, 1017, 632, 631, 630, 123,
/* 420 */ 625, 624, 623, 622, 621, 620, 619, 618, 133, 614,
/* 430 */ 324, 659, 162, 1255, 562, 1253, 34, 33, 140, 613,
/* 440 */ 41, 39, 37, 36, 35, 1331, 1332, 1595, 30, 335,
/* 430 */ 324, 659, 162, 1255, 561, 1253, 33, 32, 140, 613,
/* 440 */ 40, 38, 36, 35, 34, 1331, 1332, 1595, 29, 335,
/* 450 */ 1346, 1347, 1348, 1349, 1350, 1354, 1355, 1356, 1280, 447,
/* 460 */ 1258, 1259, 1476, 1307, 1308, 1310, 1311, 1312, 1313, 1314,
/* 470 */ 573, 569, 1322, 1323, 1325, 1326, 1327, 1328, 1330, 1333,
/* 480 */ 34, 33, 214, 526, 41, 39, 37, 36, 35, 170,
/* 490 */ 1255, 207, 1253, 219, 165, 1281, 340, 37, 36, 35,
/* 500 */ 59, 34, 33, 1747, 140, 41, 39, 37, 36, 35,
/* 480 */ 33, 32, 214, 526, 40, 38, 36, 35, 34, 170,
/* 490 */ 1255, 207, 1253, 219, 165, 1281, 340, 36, 35, 34,
/* 500 */ 59, 33, 32, 1747, 140, 40, 38, 36, 35, 34,
/* 510 */ 61, 1593, 75, 1595, 629, 627, 69, 1258, 1259, 68,
/* 520 */ 1307, 1308, 1310, 1311, 1312, 1313, 1314, 573, 569, 1322,
/* 530 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 40, 38, 1334,
/* 530 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 39, 37, 1334,
/* 540 */ 1689, 139, 298, 1475, 343, 337, 1777, 1254, 1277, 162,
/* 550 */ 73, 303, 140, 305, 516, 1234, 1235, 1423, 1329, 418,
/* 560 */ 1252, 1595, 1309, 1109, 602, 601, 600, 1113, 599, 1115,
/* 570 */ 1116, 598, 1118, 595, 1795, 1124, 592, 1126, 1127, 589,
/* 580 */ 586, 1324, 578, 488, 1747, 1449, 1351, 1747, 526, 577,
/* 590 */ 251, 472, 1260, 1474, 40, 38, 1683, 1254, 498, 383,
/* 600 */ 45, 4, 337, 555, 1254, 174, 173, 172, 1260, 9,
/* 590 */ 251, 472, 1260, 1474, 39, 37, 1683, 1254, 498, 383,
/* 600 */ 44, 4, 337, 554, 1254, 174, 173, 172, 1260, 9,
/* 610 */ 1252, 1071, 206, 471, 1808, 1329, 1593, 1252, 89, 1778,
/* 620 */ 580, 1780, 1781, 576, 497, 571, 491, 231, 1854, 1473,
/* 630 */ 485, 659, 304, 1850, 1747, 205, 563, 495, 1324, 493,
/* 640 */ 1352, 27, 1260, 1073, 1920, 1331, 1332, 34, 33, 1260,
/* 650 */ 162, 41, 39, 37, 36, 35, 1569, 159, 1869, 1472,
/* 660 */ 1471, 1917, 56, 1357, 611, 55, 9, 1869, 559, 526,
/* 670 */ 1747, 34, 33, 1645, 1448, 41, 39, 37, 36, 35,
/* 630 */ 485, 659, 304, 1850, 1747, 205, 562, 495, 1324, 493,
/* 640 */ 1352, 26, 1260, 1073, 1920, 1331, 1332, 33, 32, 1260,
/* 650 */ 162, 40, 38, 36, 35, 34, 1569, 159, 1869, 1472,
/* 660 */ 1471, 1917, 56, 1357, 611, 55, 9, 1869, 558, 526,
/* 670 */ 1747, 33, 32, 1645, 1448, 40, 38, 36, 35, 34,
/* 680 */ 384, 659, 1866, 131, 130, 608, 607, 606, 659, 1644,
/* 690 */ 1255, 1865, 1253, 1003, 1004, 1869, 513, 1593, 1470, 7,
/* 700 */ 1747, 1747, 1331, 1332, 1570, 30, 335, 1346, 1347, 1348,
/* 700 */ 1747, 1747, 1331, 1332, 1570, 29, 335, 1346, 1347, 1348,
/* 710 */ 1349, 1350, 1354, 1355, 1356, 613, 1582, 1258, 1259, 1864,
/* 720 */ 1307, 1308, 1310, 1311, 1312, 1313, 1314, 573, 569, 1322,
/* 730 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 1920, 557, 1747,
/* 740 */ 1255, 1688, 1253, 298, 617, 29, 1565, 1255, 1403, 1253,
/* 750 */ 159, 34, 33, 514, 1917, 41, 39, 37, 36, 35,
/* 760 */ 347, 1874, 1385, 1263, 1691, 34, 33, 1258, 1259, 41,
/* 770 */ 39, 37, 36, 35, 1258, 1259, 213, 1307, 1308, 1310,
/* 730 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 1920, 556, 1747,
/* 740 */ 1255, 1688, 1253, 298, 617, 28, 1565, 1255, 1403, 1253,
/* 750 */ 159, 33, 32, 514, 1917, 40, 38, 36, 35, 34,
/* 760 */ 347, 1874, 1385, 616, 1691, 33, 32, 1258, 1259, 40,
/* 770 */ 38, 36, 35, 34, 1258, 1259, 213, 1307, 1308, 1310,
/* 780 */ 1311, 1312, 1313, 1314, 573, 569, 1322, 1323, 1325, 1326,
/* 790 */ 1327, 1328, 1330, 1333, 40, 38, 300, 1578, 1276, 1467,
/* 790 */ 1327, 1328, 1330, 1333, 39, 37, 300, 1578, 1276, 1467,
/* 800 */ 611, 1920, 337, 1777, 1254, 411, 74, 609, 423, 1466,
/* 810 */ 1636, 1508, 1389, 526, 159, 1329, 499, 1252, 1917, 131,
/* 820 */ 130, 608, 607, 606, 388, 396, 1465, 424, 1464, 398,
/* 830 */ 1339, 1795, 610, 484, 271, 1636, 1278, 1623, 1324, 578,
/* 840 */ 1747, 1593, 1292, 1568, 1747, 526, 577, 34, 33, 1260,
/* 850 */ 1747, 41, 39, 37, 36, 35, 113, 1920, 550, 52,
/* 860 */ 510, 389, 198, 473, 1262, 196, 2, 1747, 560, 1747,
/* 870 */ 159, 1808, 616, 1593, 1917, 90, 1778, 580, 1780, 1781,
/* 880 */ 576, 1463, 571, 1385, 1462, 1854, 122, 1461, 659, 330,
/* 890 */ 1850, 1933, 1460, 1459, 200, 1266, 1497, 199, 567, 1580,
/* 840 */ 1747, 1593, 1292, 1568, 1747, 526, 577, 33, 32, 1260,
/* 850 */ 1747, 40, 38, 36, 35, 34, 113, 1920, 549, 52,
/* 860 */ 510, 389, 198, 473, 1263, 196, 2, 1747, 559, 1747,
/* 870 */ 159, 1808, 1580, 1593, 1917, 90, 1778, 580, 1780, 1781,
/* 880 */ 576, 1463, 571, 1385, 1462, 1854, 122, 1461, 659, 328,
/* 890 */ 1850, 1933, 1460, 1459, 200, 11, 10, 199, 1262, 1576,
/* 900 */ 1911, 422, 1331, 1332, 417, 416, 415, 414, 413, 410,
/* 910 */ 409, 408, 407, 406, 402, 401, 400, 399, 393, 392,
/* 920 */ 391, 390, 1747, 387, 386, 1747, 120, 526, 1747, 526,
/* 930 */ 628, 141, 1576, 1747, 1747, 526, 277, 526, 403, 611,
/* 940 */ 404, 157, 1862, 1863, 654, 1867, 446, 1255, 1590, 1253,
/* 950 */ 275, 58, 11, 10, 57, 1593, 506, 1593, 131, 130,
/* 960 */ 608, 607, 606, 1593, 210, 1593, 1777, 1451, 1452, 572,
/* 970 */ 176, 426, 373, 42, 1258, 1259, 550, 1307, 1308, 1310,
/* 930 */ 628, 141, 1042, 1747, 1747, 526, 277, 526, 403, 611,
/* 940 */ 404, 157, 1862, 1863, 567, 1867, 446, 1255, 1590, 1253,
/* 950 */ 275, 58, 1451, 1452, 57, 1593, 506, 1593, 131, 130,
/* 960 */ 608, 607, 606, 1593, 1043, 1593, 1777, 210, 572, 604,
/* 970 */ 176, 426, 373, 41, 1258, 1259, 549, 1307, 1308, 1310,
/* 980 */ 1311, 1312, 1313, 1314, 573, 569, 1322, 1323, 1325, 1326,
/* 990 */ 1327, 1328, 1330, 1333, 1795, 526, 1265, 61, 202, 526,
/* 1000 */ 526, 201, 554, 526, 122, 204, 1722, 1747, 203, 577,
/* 1010 */ 507, 511, 1309, 1584, 524, 1202, 218, 1469, 1764, 604,
/* 1020 */ 1550, 526, 254, 1593, 1761, 555, 465, 1593, 1593, 1761,
/* 1030 */ 1343, 1593, 525, 1388, 1808, 88, 526, 1777, 90, 1778,
/* 990 */ 1327, 1328, 1330, 1333, 1795, 526, 1266, 61, 202, 526,
/* 1000 */ 526, 201, 553, 526, 122, 204, 1722, 1747, 203, 577,
/* 1010 */ 507, 511, 1309, 1584, 524, 1202, 218, 1469, 1764, 1550,
/* 1020 */ 254, 526, 500, 1593, 1761, 554, 465, 1593, 1593, 1761,
/* 1030 */ 1265, 1593, 525, 1388, 1808, 88, 526, 1777, 90, 1778,
/* 1040 */ 580, 1780, 1781, 576, 120, 571, 1503, 260, 1854, 1593,
/* 1050 */ 1757, 1763, 330, 1850, 154, 1757, 1763, 326, 222, 249,
/* 1060 */ 1862, 549, 571, 548, 1593, 1795, 1920, 571, 486, 1501,
/* 1070 */ 66, 65, 382, 578, 1881, 169, 537, 243, 1747, 159,
/* 1080 */ 577, 376, 1767, 1917, 125, 328, 327, 526, 128, 1042,
/* 1090 */ 129, 489, 1796, 50, 299, 1268, 235, 366, 344, 364,
/* 1100 */ 360, 356, 166, 351, 348, 1808, 1329, 1765, 1261, 90,
/* 1110 */ 1778, 580, 1780, 1781, 576, 1593, 571, 42, 1761, 1854,
/* 1120 */ 1769, 1043, 42, 330, 1850, 1933, 519, 346, 42, 1324,
/* 1130 */ 228, 584, 1102, 1777, 1873, 1410, 85, 162, 238, 128,
/* 1140 */ 1260, 129, 114, 128, 1757, 1763, 82, 500, 1492, 1633,
/* 1150 */ 551, 1884, 253, 256, 258, 248, 571, 3, 53, 1359,
/* 1160 */ 80, 1795, 5, 350, 1315, 1276, 353, 357, 310, 578,
/* 1170 */ 270, 1071, 1218, 1130, 1747, 311, 577, 405, 267, 535,
/* 1180 */ 1685, 1134, 171, 1141, 1139, 132, 412, 420, 419, 421,
/* 1190 */ 555, 425, 427, 1282, 1777, 1285, 1284, 428, 436, 439,
/* 1200 */ 179, 1808, 440, 181, 441, 284, 1778, 580, 1780, 1781,
/* 1210 */ 576, 1286, 571, 442, 184, 186, 444, 1283, 188, 70,
/* 1220 */ 445, 448, 1795, 191, 467, 469, 1583, 195, 1579, 197,
/* 1230 */ 578, 1920, 134, 135, 93, 1747, 302, 577, 1269, 268,
/* 1240 */ 1264, 208, 1581, 1577, 161, 136, 137, 1777, 1917, 211,
/* 1250 */ 1727, 555, 502, 501, 508, 505, 512, 534, 1281, 215,
/* 1260 */ 515, 1726, 1808, 520, 1695, 1272, 284, 1778, 580, 1780,
/* 1270 */ 1781, 576, 320, 571, 517, 1795, 569, 1322, 1323, 1325,
/* 1280 */ 1326, 1327, 1328, 578, 126, 322, 521, 127, 1747, 224,
/* 1290 */ 577, 522, 1920, 269, 226, 78, 1594, 530, 1885, 1777,
/* 1300 */ 538, 6, 233, 532, 533, 159, 237, 547, 329, 1917,
/* 1310 */ 531, 541, 1385, 528, 1895, 1808, 529, 247, 121, 91,
/* 1320 */ 1778, 580, 1780, 1781, 576, 1894, 571, 1795, 244, 1854,
/* 1330 */ 246, 1876, 148, 1853, 1850, 578, 1280, 564, 1870, 561,
/* 1340 */ 1747, 331, 577, 242, 19, 245, 1835, 582, 272, 1637,
/* 1350 */ 1566, 252, 1777, 655, 1916, 51, 147, 263, 1741, 558,
/* 1360 */ 1936, 656, 658, 285, 63, 255, 1777, 1808, 276, 565,
/* 1370 */ 257, 91, 1778, 580, 1780, 1781, 576, 1740, 571, 274,
/* 1380 */ 1795, 1854, 1739, 295, 294, 566, 1850, 64, 575, 1738,
/* 1390 */ 352, 1735, 354, 1747, 1795, 577, 355, 1246, 1247, 167,
/* 1400 */ 359, 1733, 578, 361, 362, 363, 1732, 1747, 365, 577,
/* 1410 */ 1731, 1730, 369, 367, 1729, 371, 1712, 168, 374, 1777,
/* 1420 */ 1808, 375, 1221, 1220, 292, 1778, 580, 1780, 1781, 576,
/* 1430 */ 574, 571, 568, 1826, 1808, 1706, 1705, 1777, 144, 1778,
/* 1440 */ 580, 1780, 1781, 576, 380, 571, 381, 1795, 1704, 1703,
/* 1450 */ 1190, 1678, 1677, 1676, 67, 578, 1675, 1674, 1673, 1672,
/* 1460 */ 1747, 1671, 577, 394, 395, 1795, 1670, 397, 1669, 1668,
/* 1470 */ 321, 1667, 1666, 578, 1665, 1664, 1663, 1662, 1747, 1661,
/* 1480 */ 577, 1660, 556, 1934, 1659, 1658, 1657, 1808, 1656, 1777,
/* 1490 */ 1655, 91, 1778, 580, 1780, 1781, 576, 124, 571, 1654,
/* 1500 */ 1653, 1854, 1652, 1651, 1650, 1808, 1851, 1649, 1648, 293,
/* 1510 */ 1778, 580, 1780, 1781, 576, 1192, 571, 1795, 1647, 1646,
/* 1520 */ 1522, 175, 527, 1520, 1488, 578, 152, 1006, 115, 177,
/* 1530 */ 1747, 1777, 577, 1487, 178, 1005, 116, 432, 434, 1720,
/* 1540 */ 1714, 1777, 1702, 185, 183, 1701, 1687, 1572, 1519, 1517,
/* 1550 */ 449, 451, 1515, 455, 1513, 459, 1035, 1808, 450, 1795,
/* 1560 */ 453, 293, 1778, 580, 1780, 1781, 576, 578, 571, 1795,
/* 1570 */ 457, 1511, 1747, 454, 577, 458, 461, 578, 462, 1500,
/* 1580 */ 1499, 1484, 1747, 463, 577, 1574, 1145, 1144, 1573, 194,
/* 1590 */ 1070, 1777, 1069, 1068, 49, 1067, 626, 1509, 1064, 1808,
/* 1600 */ 316, 1063, 628, 288, 1778, 580, 1780, 1781, 576, 1808,
/* 1610 */ 571, 662, 1062, 144, 1778, 580, 1780, 1781, 576, 1795,
/* 1620 */ 571, 1061, 1504, 317, 334, 266, 490, 578, 1502, 318,
/* 1630 */ 1483, 487, 1747, 1777, 577, 492, 1482, 494, 1481, 151,
/* 1640 */ 496, 546, 1719, 92, 652, 648, 644, 640, 264, 1713,
/* 1650 */ 1228, 1777, 1700, 138, 503, 1698, 1699, 1697, 1935, 1808,
/* 1660 */ 1696, 1795, 54, 293, 1778, 580, 1780, 1781, 576, 575,
/* 1670 */ 571, 212, 217, 15, 1747, 87, 577, 1694, 229, 1795,
/* 1680 */ 223, 504, 319, 76, 336, 225, 509, 578, 518, 1238,
/* 1690 */ 1686, 227, 1747, 77, 577, 16, 230, 82, 1425, 1437,
/* 1700 */ 24, 1808, 42, 1777, 232, 292, 1778, 580, 1780, 1781,
/* 1710 */ 576, 523, 571, 236, 1827, 1270, 234, 48, 1407, 1808,
/* 1720 */ 1409, 145, 240, 293, 1778, 580, 1780, 1781, 576, 239,
/* 1730 */ 571, 1795, 25, 241, 1767, 193, 338, 26, 1402, 578,
/* 1740 */ 47, 250, 81, 216, 1747, 17, 577, 1382, 1381, 146,
/* 1750 */ 1766, 149, 1442, 1777, 464, 460, 456, 452, 192, 46,
/* 1760 */ 18, 1431, 13, 1777, 1226, 1436, 209, 332, 1441, 1440,
/* 1770 */ 333, 1808, 10, 1811, 20, 293, 1778, 580, 1780, 1781,
/* 1780 */ 576, 1795, 571, 1319, 570, 72, 1344, 32, 190, 578,
/* 1790 */ 150, 1795, 1317, 1316, 1747, 12, 577, 21, 163, 578,
/* 1800 */ 1300, 581, 579, 22, 1747, 1131, 577, 583, 339, 585,
/* 1810 */ 587, 1128, 588, 1108, 1125, 590, 593, 596, 1123, 1777,
/* 1820 */ 591, 1808, 1122, 1119, 594, 278, 1778, 580, 1780, 1781,
/* 1830 */ 576, 1808, 571, 1117, 597, 279, 1778, 580, 1780, 1781,
/* 1840 */ 576, 603, 571, 83, 84, 1140, 60, 1795, 261, 1121,
/* 1850 */ 189, 182, 1136, 187, 1120, 578, 1033, 443, 612, 1058,
/* 1860 */ 1747, 1777, 577, 1077, 262, 615, 1051, 1056, 1055, 1054,
/* 1870 */ 1053, 1777, 1052, 1050, 1049, 1074, 180, 1072, 1046, 1516,
/* 1880 */ 1045, 1044, 1041, 1777, 1040, 1039, 1038, 1808, 637, 1795,
/* 1890 */ 1514, 280, 1778, 580, 1780, 1781, 576, 578, 571, 1795,
/* 1900 */ 639, 638, 1747, 641, 577, 642, 643, 578, 1512, 645,
/* 1910 */ 646, 1795, 1747, 1510, 577, 647, 649, 650, 1498, 578,
/* 1920 */ 653, 651, 996, 1480, 1747, 1777, 577, 265, 657, 1808,
/* 1930 */ 1455, 1256, 273, 287, 1778, 580, 1780, 1781, 576, 1808,
/* 1940 */ 571, 660, 1777, 289, 1778, 580, 1780, 1781, 576, 661,
/* 1950 */ 571, 1808, 1455, 1795, 1455, 281, 1778, 580, 1780, 1781,
/* 1960 */ 576, 578, 571, 1455, 1455, 1455, 1747, 1455, 577, 1455,
/* 1970 */ 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455,
/* 1980 */ 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455, 1455, 1455,
/* 1990 */ 1455, 1455, 1455, 1808, 1777, 1455, 1455, 290, 1778, 580,
/* 2000 */ 1780, 1781, 576, 1455, 571, 1455, 1455, 1455, 1455, 1455,
/* 2010 */ 1808, 1455, 1795, 1455, 282, 1778, 580, 1780, 1781, 576,
/* 2020 */ 578, 571, 1795, 1455, 1455, 1747, 1455, 577, 1455, 1455,
/* 2030 */ 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455,
/* 2040 */ 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455, 1455, 1455,
/* 2050 */ 1455, 1455, 1808, 1455, 1455, 1455, 291, 1778, 580, 1780,
/* 2060 */ 1781, 576, 1808, 571, 1795, 1455, 283, 1778, 580, 1780,
/* 2070 */ 1781, 576, 578, 571, 1795, 1455, 1455, 1747, 1455, 577,
/* 2080 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1777, 577,
/* 2090 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455,
/* 2100 */ 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 296, 1778,
/* 2110 */ 580, 1780, 1781, 576, 1808, 571, 1795, 1455, 297, 1778,
/* 2120 */ 580, 1780, 1781, 576, 578, 571, 1795, 1455, 1455, 1747,
/* 2130 */ 1455, 577, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747,
/* 2140 */ 1455, 577, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2150 */ 1777, 1455, 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455,
/* 2160 */ 1789, 1778, 580, 1780, 1781, 576, 1808, 571, 1455, 1777,
/* 2170 */ 1788, 1778, 580, 1780, 1781, 576, 1455, 571, 1795, 1455,
/* 2180 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455,
/* 2190 */ 1455, 1747, 1777, 577, 1455, 1455, 1455, 1795, 1455, 1455,
/* 2200 */ 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455,
/* 2210 */ 1747, 1777, 577, 1455, 1455, 1455, 1455, 1455, 1808, 1455,
/* 2220 */ 1795, 1455, 1787, 1778, 580, 1780, 1781, 576, 578, 571,
/* 2230 */ 1455, 1455, 1455, 1747, 1455, 577, 1455, 1808, 1455, 1795,
/* 2240 */ 1455, 308, 1778, 580, 1780, 1781, 576, 578, 571, 1455,
/* 2250 */ 1455, 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455, 1455,
/* 2260 */ 1808, 1455, 1455, 1455, 307, 1778, 580, 1780, 1781, 576,
/* 2270 */ 1777, 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808,
/* 2280 */ 1777, 1455, 1455, 309, 1778, 580, 1780, 1781, 576, 1455,
/* 2290 */ 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1795, 1455,
/* 2300 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1795, 1455,
/* 2310 */ 1455, 1747, 1455, 577, 1455, 1455, 578, 1455, 1455, 1455,
/* 2320 */ 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2330 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1455,
/* 2340 */ 1455, 1455, 306, 1778, 580, 1780, 1781, 576, 1808, 571,
/* 2350 */ 1455, 1455, 286, 1778, 580, 1780, 1781, 576, 1455, 571,
/* 1050 */ 1757, 1763, 328, 1850, 154, 1757, 1763, 326, 222, 249,
/* 1060 */ 1862, 548, 571, 547, 1593, 1795, 1920, 571, 486, 1501,
/* 1070 */ 66, 65, 382, 578, 1881, 169, 1343, 85, 1747, 159,
/* 1080 */ 577, 376, 536, 1917, 1767, 334, 333, 82, 125, 243,
/* 1090 */ 128, 489, 1796, 129, 299, 1268, 50, 366, 1492, 364,
/* 1100 */ 360, 356, 166, 351, 348, 1808, 1329, 1764, 1261, 90,
/* 1110 */ 1778, 580, 1780, 1781, 576, 1765, 571, 235, 1761, 1854,
/* 1120 */ 526, 1633, 1769, 328, 1850, 1933, 1761, 1497, 41, 1324,
/* 1130 */ 519, 344, 228, 1777, 1873, 1102, 346, 162, 1410, 50,
/* 1140 */ 1260, 41, 1884, 584, 1757, 1763, 332, 128, 1593, 129,
/* 1150 */ 114, 128, 1757, 1763, 550, 248, 571, 253, 256, 238,
/* 1160 */ 258, 1795, 80, 53, 571, 5, 3, 350, 1276, 578,
/* 1170 */ 270, 353, 357, 310, 1747, 654, 577, 1071, 311, 566,
/* 1180 */ 1218, 1359, 267, 1315, 405, 1130, 1685, 171, 412, 1134,
/* 1190 */ 554, 1141, 1139, 132, 1777, 420, 419, 425, 421, 427,
/* 1200 */ 428, 1808, 1282, 436, 1285, 284, 1778, 580, 1780, 1781,
/* 1210 */ 576, 439, 571, 1284, 179, 440, 181, 441, 1286, 184,
/* 1220 */ 442, 444, 1795, 186, 1283, 188, 445, 70, 448, 191,
/* 1230 */ 578, 1920, 268, 467, 469, 1747, 1583, 577, 1269, 302,
/* 1240 */ 1264, 93, 195, 501, 161, 208, 1579, 1777, 1917, 197,
/* 1250 */ 134, 554, 135, 1581, 1577, 136, 137, 1727, 211, 502,
/* 1260 */ 508, 512, 1808, 534, 215, 1272, 284, 1778, 580, 1780,
/* 1270 */ 1781, 576, 505, 571, 226, 1795, 569, 1322, 1323, 1325,
/* 1280 */ 1326, 1327, 1328, 578, 126, 515, 1726, 1695, 1747, 520,
/* 1290 */ 577, 127, 1920, 521, 320, 224, 517, 322, 522, 1777,
/* 1300 */ 269, 78, 1594, 1281, 530, 159, 532, 1885, 537, 1917,
/* 1310 */ 233, 533, 237, 1895, 1894, 1808, 327, 6, 540, 91,
/* 1320 */ 1778, 580, 1780, 1781, 576, 546, 571, 1795, 531, 1854,
/* 1330 */ 1876, 529, 528, 1853, 1850, 578, 1385, 247, 148, 1280,
/* 1340 */ 1747, 563, 577, 246, 244, 121, 242, 48, 1870, 329,
/* 1350 */ 582, 272, 1777, 245, 560, 1637, 1566, 263, 655, 656,
/* 1360 */ 658, 51, 285, 147, 1741, 1835, 1777, 1808, 295, 276,
/* 1370 */ 252, 91, 1778, 580, 1780, 1781, 576, 63, 571, 274,
/* 1380 */ 1795, 1854, 1916, 557, 1740, 565, 1850, 564, 575, 294,
/* 1390 */ 1739, 1936, 255, 1747, 1795, 577, 257, 64, 1738, 352,
/* 1400 */ 1735, 354, 578, 355, 1246, 1247, 167, 1747, 359, 577,
/* 1410 */ 1733, 361, 362, 363, 1732, 365, 1731, 367, 1730, 1777,
/* 1420 */ 1808, 369, 1729, 371, 292, 1778, 580, 1780, 1781, 576,
/* 1430 */ 574, 571, 568, 1826, 1808, 1712, 168, 1777, 144, 1778,
/* 1440 */ 580, 1780, 1781, 576, 375, 571, 374, 1795, 1221, 1706,
/* 1450 */ 1220, 1705, 380, 381, 1704, 578, 1703, 1190, 1678, 1677,
/* 1460 */ 1747, 1676, 577, 1675, 67, 1795, 1674, 1673, 1672, 1671,
/* 1470 */ 321, 394, 395, 578, 1670, 397, 1669, 1668, 1747, 1667,
/* 1480 */ 577, 1666, 555, 1934, 1665, 1664, 1663, 1808, 1662, 1777,
/* 1490 */ 1661, 91, 1778, 580, 1780, 1781, 576, 1660, 571, 1659,
/* 1500 */ 1658, 1854, 1657, 1656, 124, 1808, 1851, 1655, 1654, 293,
/* 1510 */ 1778, 580, 1780, 1781, 576, 1653, 571, 1795, 1192, 1649,
/* 1520 */ 1648, 1647, 527, 1652, 1651, 578, 1650, 1646, 1522, 175,
/* 1530 */ 1747, 1777, 577, 1520, 1488, 177, 1006, 115, 152, 1005,
/* 1540 */ 1487, 1777, 1720, 1714, 1702, 178, 1701, 432, 116, 183,
/* 1550 */ 434, 185, 1687, 1572, 1519, 1517, 451, 1808, 450, 1795,
/* 1560 */ 1515, 293, 1778, 580, 1780, 1781, 576, 578, 571, 1795,
/* 1570 */ 449, 453, 1747, 1035, 577, 1513, 454, 578, 455, 458,
/* 1580 */ 457, 1511, 1747, 461, 577, 462, 459, 1500, 463, 1499,
/* 1590 */ 1484, 1777, 1574, 1145, 1144, 1573, 1070, 1069, 1068, 1808,
/* 1600 */ 1067, 1064, 626, 288, 1778, 580, 1780, 1781, 576, 1808,
/* 1610 */ 571, 628, 1063, 144, 1778, 580, 1780, 1781, 576, 1795,
/* 1620 */ 571, 1062, 194, 49, 1509, 316, 1061, 575, 1504, 317,
/* 1630 */ 1502, 487, 1747, 318, 577, 1483, 490, 492, 1482, 494,
/* 1640 */ 1481, 545, 496, 1777, 1719, 92, 1713, 1228, 503, 138,
/* 1650 */ 1700, 1698, 1699, 1697, 1696, 15, 1694, 223, 1935, 1808,
/* 1660 */ 1777, 217, 212, 292, 1778, 580, 1780, 1781, 576, 1238,
/* 1670 */ 571, 1795, 1827, 1686, 82, 225, 336, 76, 77, 578,
/* 1680 */ 230, 16, 41, 23, 1747, 47, 577, 241, 1795, 54,
/* 1690 */ 1425, 234, 232, 338, 1407, 509, 578, 236, 240, 227,
/* 1700 */ 1409, 1747, 504, 577, 1402, 145, 239, 518, 319, 1767,
/* 1710 */ 25, 1808, 1382, 662, 1381, 293, 1778, 580, 1780, 1781,
/* 1720 */ 576, 24, 571, 250, 46, 1766, 18, 266, 1808, 81,
/* 1730 */ 149, 1437, 293, 1778, 580, 1780, 1781, 576, 45, 571,
/* 1740 */ 1436, 151, 17, 1442, 1431, 193, 652, 648, 644, 640,
/* 1750 */ 264, 1777, 330, 1441, 1440, 331, 10, 1270, 19, 146,
/* 1760 */ 1811, 1300, 1344, 1777, 464, 460, 456, 452, 192, 150,
/* 1770 */ 1319, 570, 163, 1317, 31, 1777, 1316, 87, 579, 1795,
/* 1780 */ 229, 12, 20, 21, 581, 1131, 583, 578, 339, 1128,
/* 1790 */ 585, 1795, 1747, 587, 577, 72, 1125, 13, 190, 578,
/* 1800 */ 588, 590, 593, 1795, 1747, 591, 577, 1119, 594, 596,
/* 1810 */ 1117, 578, 597, 523, 1108, 1123, 1747, 1122, 577, 1808,
/* 1820 */ 1140, 1121, 1120, 278, 1778, 580, 1780, 1781, 576, 83,
/* 1830 */ 571, 1808, 603, 84, 60, 279, 1778, 580, 1780, 1781,
/* 1840 */ 576, 261, 571, 1808, 1136, 216, 612, 280, 1778, 580,
/* 1850 */ 1780, 1781, 576, 1058, 571, 1033, 1077, 1777, 615, 262,
/* 1860 */ 189, 182, 1056, 187, 1055, 1054, 1226, 443, 209, 1053,
/* 1870 */ 1052, 1777, 1051, 1050, 1049, 1074, 1516, 1072, 1046, 1045,
/* 1880 */ 1044, 1041, 1040, 1039, 1038, 1795, 180, 637, 1514, 1512,
/* 1890 */ 639, 641, 643, 578, 645, 1510, 649, 647, 1747, 1795,
/* 1900 */ 577, 638, 642, 651, 646, 1498, 653, 578, 996, 650,
/* 1910 */ 1480, 657, 1747, 265, 577, 1256, 273, 660, 661, 1455,
/* 1920 */ 1455, 1777, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 287,
/* 1930 */ 1778, 580, 1780, 1781, 576, 1455, 571, 1777, 1455, 1808,
/* 1940 */ 1455, 1455, 1455, 289, 1778, 580, 1780, 1781, 576, 1795,
/* 1950 */ 571, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455,
/* 1960 */ 1455, 1455, 1747, 1455, 577, 1795, 1455, 1455, 1455, 1455,
/* 1970 */ 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1455,
/* 1980 */ 577, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808,
/* 1990 */ 1777, 1455, 1455, 281, 1778, 580, 1780, 1781, 576, 1455,
/* 2000 */ 571, 1455, 1455, 1455, 1777, 1808, 1455, 1455, 1455, 290,
/* 2010 */ 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1795, 1455,
/* 2020 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455,
/* 2030 */ 1455, 1747, 1795, 577, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2040 */ 578, 1455, 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455,
/* 2050 */ 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455, 1808, 1455,
/* 2060 */ 1455, 1455, 282, 1778, 580, 1780, 1781, 576, 1455, 571,
/* 2070 */ 1455, 1455, 1808, 1455, 1777, 1455, 291, 1778, 580, 1780,
/* 2080 */ 1781, 576, 1455, 571, 1795, 1455, 1455, 1455, 1455, 1455,
/* 2090 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1777, 577,
/* 2100 */ 1455, 1455, 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2110 */ 578, 1455, 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455,
/* 2120 */ 1455, 1455, 1455, 1455, 1808, 1455, 1795, 1455, 283, 1778,
/* 2130 */ 580, 1780, 1781, 576, 578, 571, 1455, 1455, 1455, 1747,
/* 2140 */ 1455, 577, 1808, 1455, 1455, 1455, 296, 1778, 580, 1780,
/* 2150 */ 1781, 576, 1455, 571, 1455, 1455, 1777, 1455, 1455, 1455,
/* 2160 */ 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455,
/* 2170 */ 297, 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1777,
/* 2180 */ 1455, 1455, 1455, 1455, 1795, 1455, 1455, 1455, 1455, 1455,
/* 2190 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1455, 577,
/* 2200 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1795, 1455, 1455,
/* 2210 */ 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455,
/* 2220 */ 1747, 1455, 577, 1455, 1808, 1455, 1455, 1455, 1789, 1778,
/* 2230 */ 580, 1780, 1781, 576, 1455, 571, 1777, 1455, 1455, 1455,
/* 2240 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1777, 1455,
/* 2250 */ 1455, 1788, 1778, 580, 1780, 1781, 576, 1455, 571, 1455,
/* 2260 */ 1455, 1455, 1777, 1455, 1795, 1455, 1455, 1455, 1455, 1455,
/* 2270 */ 1455, 1455, 578, 1455, 1455, 1455, 1795, 1747, 1455, 577,
/* 2280 */ 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747,
/* 2290 */ 1795, 577, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455,
/* 2300 */ 1455, 1455, 1455, 1747, 1808, 577, 1455, 1455, 1787, 1778,
/* 2310 */ 580, 1780, 1781, 576, 1777, 571, 1808, 1455, 1455, 1455,
/* 2320 */ 308, 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1455,
/* 2330 */ 1808, 1455, 1777, 1455, 307, 1778, 580, 1780, 1781, 576,
/* 2340 */ 1455, 571, 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2350 */ 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455,
/* 2360 */ 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455,
/* 2370 */ 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455,
/* 2380 */ 1455, 1455, 1808, 1455, 1795, 1455, 309, 1778, 580, 1780,
/* 2390 */ 1781, 576, 578, 571, 1455, 1455, 1455, 1747, 1455, 577,
/* 2400 */ 1808, 1455, 1455, 1455, 306, 1778, 580, 1780, 1781, 576,
/* 2410 */ 1455, 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455,
/* 2420 */ 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 286, 1778,
/* 2430 */ 580, 1780, 1781, 576, 1455, 571,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 261, 355, 263, 264, 261, 269, 263, 264, 300, 4,
@ -532,7 +540,7 @@ static const YYCODETYPE yy_lookahead[] = {
/* 730 */ 205, 206, 207, 208, 209, 210, 211, 355, 241, 298,
/* 740 */ 165, 310, 167, 312, 273, 2, 275, 165, 85, 167,
/* 750 */ 368, 8, 9, 300, 372, 12, 13, 14, 15, 16,
/* 760 */ 314, 222, 223, 35, 311, 8, 9, 192, 193, 12,
/* 760 */ 314, 222, 223, 67, 311, 8, 9, 192, 193, 12,
/* 770 */ 13, 14, 15, 16, 192, 193, 56, 195, 196, 197,
/* 780 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
/* 790 */ 208, 209, 210, 211, 12, 13, 18, 286, 20, 257,
@ -543,165 +551,173 @@ static const YYCODETYPE yy_lookahead[] = {
/* 840 */ 298, 293, 85, 0, 298, 265, 300, 8, 9, 67,
/* 850 */ 298, 12, 13, 14, 15, 16, 276, 355, 265, 152,
/* 860 */ 153, 83, 88, 283, 35, 91, 84, 298, 243, 298,
/* 870 */ 368, 325, 67, 293, 372, 329, 330, 331, 332, 333,
/* 870 */ 368, 325, 286, 293, 372, 329, 330, 331, 332, 333,
/* 880 */ 334, 257, 336, 223, 257, 339, 293, 257, 106, 343,
/* 890 */ 344, 345, 257, 257, 88, 167, 0, 91, 60, 286,
/* 890 */ 344, 345, 257, 257, 88, 1, 2, 91, 35, 286,
/* 900 */ 354, 123, 120, 121, 126, 127, 128, 129, 130, 131,
/* 910 */ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
/* 920 */ 142, 143, 298, 145, 146, 298, 333, 265, 298, 265,
/* 930 */ 43, 18, 286, 298, 298, 265, 23, 265, 276, 96,
/* 940 */ 276, 348, 349, 350, 48, 352, 276, 165, 276, 167,
/* 950 */ 37, 38, 1, 2, 41, 293, 318, 293, 115, 116,
/* 960 */ 117, 118, 119, 293, 286, 293, 257, 120, 121, 286,
/* 930 */ 43, 18, 35, 298, 298, 265, 23, 265, 276, 96,
/* 940 */ 276, 348, 349, 350, 60, 352, 276, 165, 276, 167,
/* 950 */ 37, 38, 120, 121, 41, 293, 318, 293, 115, 116,
/* 960 */ 117, 118, 119, 293, 67, 293, 257, 286, 286, 286,
/* 970 */ 57, 58, 85, 43, 192, 193, 265, 195, 196, 197,
/* 980 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
/* 990 */ 208, 209, 210, 211, 285, 265, 167, 84, 88, 265,
/* 1000 */ 265, 91, 293, 265, 293, 88, 276, 298, 91, 300,
/* 1010 */ 276, 276, 196, 287, 276, 85, 43, 258, 287, 286,
/* 1020 */ 274, 265, 375, 293, 298, 314, 266, 293, 293, 298,
/* 1030 */ 192, 293, 276, 225, 325, 122, 265, 257, 329, 330,
/* 1010 */ 276, 276, 196, 287, 276, 85, 43, 258, 287, 274,
/* 1020 */ 375, 265, 321, 293, 298, 314, 266, 293, 293, 298,
/* 1030 */ 167, 293, 276, 225, 325, 122, 265, 257, 329, 330,
/* 1040 */ 331, 332, 333, 334, 333, 336, 0, 276, 339, 293,
/* 1050 */ 324, 325, 343, 344, 345, 324, 325, 326, 85, 348,
/* 1060 */ 349, 350, 336, 352, 293, 285, 355, 336, 22, 0,
/* 1070 */ 157, 158, 159, 293, 365, 162, 366, 362, 298, 368,
/* 1080 */ 300, 168, 46, 372, 43, 12, 13, 265, 43, 35,
/* 1090 */ 43, 22, 285, 43, 181, 22, 43, 184, 276, 186,
/* 1070 */ 157, 158, 159, 293, 365, 162, 192, 84, 298, 368,
/* 1080 */ 300, 168, 366, 372, 46, 12, 13, 94, 43, 362,
/* 1090 */ 43, 22, 285, 43, 181, 22, 43, 184, 264, 186,
/* 1100 */ 187, 188, 189, 190, 191, 325, 33, 287, 35, 329,
/* 1110 */ 330, 331, 332, 333, 334, 293, 336, 43, 298, 339,
/* 1120 */ 84, 67, 43, 343, 344, 345, 85, 266, 43, 56,
/* 1130 */ 85, 43, 85, 257, 354, 85, 84, 224, 85, 43,
/* 1140 */ 67, 43, 43, 43, 324, 325, 94, 321, 264, 297,
/* 1150 */ 353, 328, 369, 369, 369, 346, 336, 356, 289, 85,
/* 1160 */ 84, 285, 226, 323, 85, 20, 265, 47, 322, 293,
/* 1170 */ 85, 35, 163, 85, 298, 271, 300, 265, 316, 106,
/* 1180 */ 265, 85, 42, 85, 85, 85, 305, 147, 303, 303,
/* 1190 */ 314, 265, 265, 20, 257, 20, 20, 259, 259, 320,
/* 1200 */ 269, 325, 300, 269, 313, 329, 330, 331, 332, 333,
/* 1210 */ 334, 20, 336, 315, 269, 269, 313, 20, 269, 269,
/* 1220 */ 306, 265, 285, 269, 259, 285, 285, 285, 285, 285,
/* 1230 */ 293, 355, 285, 285, 265, 298, 259, 300, 165, 320,
/* 1240 */ 167, 267, 285, 285, 368, 285, 285, 257, 372, 267,
/* 1250 */ 298, 314, 319, 173, 265, 300, 265, 231, 20, 267,
/* 1260 */ 298, 298, 325, 149, 298, 192, 329, 330, 331, 332,
/* 1270 */ 333, 334, 313, 336, 298, 285, 203, 204, 205, 206,
/* 1280 */ 207, 208, 209, 293, 309, 298, 307, 309, 298, 293,
/* 1290 */ 300, 306, 355, 281, 267, 267, 293, 298, 328, 257,
/* 1300 */ 232, 238, 309, 298, 298, 368, 309, 156, 298, 372,
/* 1310 */ 240, 298, 223, 227, 361, 325, 239, 323, 293, 329,
/* 1320 */ 330, 331, 332, 333, 334, 361, 336, 285, 360, 339,
/* 1330 */ 358, 364, 361, 343, 344, 293, 20, 244, 327, 242,
/* 1340 */ 298, 247, 300, 363, 84, 359, 342, 289, 265, 298,
/* 1350 */ 275, 370, 257, 36, 371, 317, 312, 267, 0, 371,
/* 1360 */ 376, 260, 259, 279, 175, 370, 257, 325, 255, 371,
/* 1370 */ 370, 329, 330, 331, 332, 333, 334, 0, 336, 268,
/* 1380 */ 285, 339, 0, 279, 279, 343, 344, 42, 293, 0,
/* 1390 */ 75, 0, 35, 298, 285, 300, 185, 35, 35, 35,
/* 1400 */ 185, 0, 293, 35, 35, 185, 0, 298, 185, 300,
/* 1410 */ 0, 0, 22, 35, 0, 35, 0, 84, 170, 257,
/* 1420 */ 325, 169, 167, 165, 329, 330, 331, 332, 333, 334,
/* 1430 */ 335, 336, 337, 338, 325, 0, 0, 257, 329, 330,
/* 1440 */ 331, 332, 333, 334, 161, 336, 160, 285, 0, 0,
/* 1450 */ 46, 0, 0, 0, 144, 293, 0, 0, 0, 0,
/* 1460 */ 298, 0, 300, 139, 35, 285, 0, 139, 0, 0,
/* 1470 */ 290, 0, 0, 293, 0, 0, 0, 0, 298, 0,
/* 1110 */ 330, 331, 332, 333, 334, 287, 336, 43, 298, 339,
/* 1120 */ 265, 297, 84, 343, 344, 345, 298, 0, 43, 56,
/* 1130 */ 85, 276, 85, 257, 354, 85, 266, 224, 85, 43,
/* 1140 */ 67, 43, 328, 43, 324, 325, 326, 43, 293, 43,
/* 1150 */ 43, 43, 324, 325, 353, 346, 336, 369, 369, 85,
/* 1160 */ 369, 285, 84, 289, 336, 226, 356, 323, 20, 293,
/* 1170 */ 85, 265, 47, 322, 298, 48, 300, 35, 271, 106,
/* 1180 */ 163, 85, 316, 85, 265, 85, 265, 42, 305, 85,
/* 1190 */ 314, 85, 85, 85, 257, 147, 303, 265, 303, 265,
/* 1200 */ 259, 325, 20, 259, 20, 329, 330, 331, 332, 333,
/* 1210 */ 334, 320, 336, 20, 269, 300, 269, 313, 20, 269,
/* 1220 */ 315, 313, 285, 269, 20, 269, 306, 269, 265, 269,
/* 1230 */ 293, 355, 320, 259, 285, 298, 285, 300, 165, 259,
/* 1240 */ 167, 265, 285, 173, 368, 267, 285, 257, 372, 285,
/* 1250 */ 285, 314, 285, 285, 285, 285, 285, 298, 267, 319,
/* 1260 */ 265, 265, 325, 231, 267, 192, 329, 330, 331, 332,
/* 1270 */ 333, 334, 300, 336, 267, 285, 203, 204, 205, 206,
/* 1280 */ 207, 208, 209, 293, 309, 298, 298, 298, 298, 149,
/* 1290 */ 300, 309, 355, 307, 313, 293, 298, 298, 306, 257,
/* 1300 */ 281, 267, 293, 20, 298, 368, 298, 328, 232, 372,
/* 1310 */ 309, 298, 309, 361, 361, 325, 298, 238, 298, 329,
/* 1320 */ 330, 331, 332, 333, 334, 156, 336, 285, 240, 339,
/* 1330 */ 364, 239, 227, 343, 344, 293, 223, 323, 361, 20,
/* 1340 */ 298, 244, 300, 358, 360, 293, 363, 84, 327, 247,
/* 1350 */ 289, 265, 257, 359, 242, 298, 275, 267, 36, 260,
/* 1360 */ 259, 317, 279, 312, 0, 342, 257, 325, 279, 255,
/* 1370 */ 370, 329, 330, 331, 332, 333, 334, 175, 336, 268,
/* 1380 */ 285, 339, 371, 371, 0, 343, 344, 371, 293, 279,
/* 1390 */ 0, 376, 370, 298, 285, 300, 370, 42, 0, 75,
/* 1400 */ 0, 35, 293, 185, 35, 35, 35, 298, 185, 300,
/* 1410 */ 0, 35, 35, 185, 0, 185, 0, 35, 0, 257,
/* 1420 */ 325, 22, 0, 35, 329, 330, 331, 332, 333, 334,
/* 1430 */ 335, 336, 337, 338, 325, 0, 84, 257, 329, 330,
/* 1440 */ 331, 332, 333, 334, 169, 336, 170, 285, 167, 0,
/* 1450 */ 165, 0, 161, 160, 0, 293, 0, 46, 0, 0,
/* 1460 */ 298, 0, 300, 0, 144, 285, 0, 0, 0, 0,
/* 1470 */ 290, 139, 35, 293, 0, 139, 0, 0, 298, 0,
/* 1480 */ 300, 0, 373, 374, 0, 0, 0, 325, 0, 257,
/* 1490 */ 0, 329, 330, 331, 332, 333, 334, 42, 336, 0,
/* 1500 */ 0, 339, 0, 0, 0, 325, 344, 0, 0, 329,
/* 1510 */ 330, 331, 332, 333, 334, 22, 336, 285, 0, 0,
/* 1520 */ 0, 56, 290, 0, 0, 293, 43, 14, 39, 42,
/* 1530 */ 298, 257, 300, 0, 40, 14, 39, 46, 46, 0,
/* 1540 */ 0, 257, 0, 156, 39, 0, 0, 0, 0, 0,
/* 1550 */ 35, 39, 0, 39, 0, 39, 61, 325, 47, 285,
/* 1560 */ 35, 329, 330, 331, 332, 333, 334, 293, 336, 285,
/* 1570 */ 35, 0, 298, 47, 300, 47, 35, 293, 47, 0,
/* 1580 */ 0, 0, 298, 39, 300, 0, 35, 22, 0, 91,
/* 1590 */ 35, 257, 35, 35, 93, 35, 43, 0, 35, 325,
/* 1600 */ 22, 35, 43, 329, 330, 331, 332, 333, 334, 325,
/* 1610 */ 336, 19, 35, 329, 330, 331, 332, 333, 334, 285,
/* 1620 */ 336, 35, 0, 22, 290, 33, 35, 293, 0, 22,
/* 1630 */ 0, 49, 298, 257, 300, 35, 0, 35, 0, 47,
/* 1640 */ 22, 367, 0, 20, 52, 53, 54, 55, 56, 0,
/* 1650 */ 35, 257, 0, 171, 22, 0, 0, 0, 374, 325,
/* 1660 */ 0, 285, 152, 329, 330, 331, 332, 333, 334, 293,
/* 1670 */ 336, 149, 85, 84, 298, 83, 300, 0, 86, 285,
/* 1680 */ 84, 152, 152, 84, 290, 39, 154, 293, 150, 180,
/* 1690 */ 0, 148, 298, 84, 300, 228, 46, 94, 85, 35,
/* 1700 */ 84, 325, 43, 257, 84, 329, 330, 331, 332, 333,
/* 1710 */ 334, 119, 336, 84, 338, 22, 85, 43, 85, 325,
/* 1720 */ 85, 84, 43, 329, 330, 331, 332, 333, 334, 84,
/* 1730 */ 336, 285, 84, 46, 46, 33, 290, 43, 85, 293,
/* 1740 */ 43, 46, 84, 151, 298, 228, 300, 85, 85, 47,
/* 1750 */ 46, 46, 85, 257, 52, 53, 54, 55, 56, 222,
/* 1760 */ 43, 85, 228, 257, 172, 35, 174, 35, 35, 35,
/* 1770 */ 35, 325, 2, 84, 43, 329, 330, 331, 332, 333,
/* 1780 */ 334, 285, 336, 85, 84, 83, 192, 84, 86, 293,
/* 1790 */ 46, 285, 85, 85, 298, 84, 300, 84, 46, 293,
/* 1800 */ 22, 95, 194, 84, 298, 85, 300, 35, 35, 84,
/* 1810 */ 35, 85, 84, 22, 85, 35, 35, 35, 108, 257,
/* 1820 */ 84, 325, 108, 85, 84, 329, 330, 331, 332, 333,
/* 1830 */ 334, 325, 336, 85, 84, 329, 330, 331, 332, 333,
/* 1840 */ 334, 96, 336, 84, 84, 35, 84, 285, 43, 108,
/* 1850 */ 148, 149, 22, 151, 108, 293, 61, 155, 60, 35,
/* 1860 */ 298, 257, 300, 67, 43, 82, 22, 35, 35, 35,
/* 1870 */ 35, 257, 35, 35, 35, 67, 174, 35, 35, 0,
/* 1880 */ 35, 35, 35, 257, 35, 35, 35, 325, 35, 285,
/* 1890 */ 0, 329, 330, 331, 332, 333, 334, 293, 336, 285,
/* 1900 */ 39, 47, 298, 35, 300, 47, 39, 293, 0, 35,
/* 1910 */ 47, 285, 298, 0, 300, 39, 35, 47, 0, 293,
/* 1920 */ 35, 39, 35, 0, 298, 257, 300, 22, 21, 325,
/* 1930 */ 377, 22, 22, 329, 330, 331, 332, 333, 334, 325,
/* 1940 */ 336, 21, 257, 329, 330, 331, 332, 333, 334, 20,
/* 1950 */ 336, 325, 377, 285, 377, 329, 330, 331, 332, 333,
/* 1960 */ 334, 293, 336, 377, 377, 377, 298, 377, 300, 377,
/* 1970 */ 285, 377, 377, 377, 377, 377, 377, 377, 293, 377,
/* 1980 */ 377, 377, 377, 298, 257, 300, 377, 377, 377, 377,
/* 1990 */ 377, 377, 377, 325, 257, 377, 377, 329, 330, 331,
/* 2000 */ 332, 333, 334, 377, 336, 377, 377, 377, 377, 377,
/* 2010 */ 325, 377, 285, 377, 329, 330, 331, 332, 333, 334,
/* 2020 */ 293, 336, 285, 377, 377, 298, 377, 300, 377, 377,
/* 2030 */ 293, 377, 377, 377, 377, 298, 257, 300, 377, 377,
/* 2040 */ 377, 377, 377, 377, 377, 377, 257, 377, 377, 377,
/* 2050 */ 377, 377, 325, 377, 377, 377, 329, 330, 331, 332,
/* 2060 */ 333, 334, 325, 336, 285, 377, 329, 330, 331, 332,
/* 2070 */ 333, 334, 293, 336, 285, 377, 377, 298, 377, 300,
/* 2080 */ 377, 377, 293, 377, 377, 377, 377, 298, 257, 300,
/* 2090 */ 377, 377, 377, 377, 377, 377, 377, 377, 257, 377,
/* 2100 */ 377, 377, 377, 377, 325, 377, 377, 377, 329, 330,
/* 2110 */ 331, 332, 333, 334, 325, 336, 285, 377, 329, 330,
/* 2120 */ 331, 332, 333, 334, 293, 336, 285, 377, 377, 298,
/* 2130 */ 377, 300, 377, 377, 293, 377, 377, 377, 377, 298,
/* 2140 */ 377, 300, 377, 377, 377, 377, 377, 377, 377, 377,
/* 2150 */ 257, 377, 377, 377, 377, 377, 325, 377, 377, 377,
/* 2160 */ 329, 330, 331, 332, 333, 334, 325, 336, 377, 257,
/* 2170 */ 329, 330, 331, 332, 333, 334, 377, 336, 285, 377,
/* 2180 */ 377, 377, 377, 377, 377, 377, 293, 377, 377, 377,
/* 2190 */ 377, 298, 257, 300, 377, 377, 377, 285, 377, 377,
/* 2200 */ 377, 377, 377, 377, 377, 293, 377, 377, 377, 377,
/* 2210 */ 298, 257, 300, 377, 377, 377, 377, 377, 325, 377,
/* 2220 */ 285, 377, 329, 330, 331, 332, 333, 334, 293, 336,
/* 2230 */ 377, 377, 377, 298, 377, 300, 377, 325, 377, 285,
/* 2240 */ 377, 329, 330, 331, 332, 333, 334, 293, 336, 377,
/* 2250 */ 377, 377, 298, 377, 300, 377, 377, 377, 377, 377,
/* 2260 */ 325, 377, 377, 377, 329, 330, 331, 332, 333, 334,
/* 2270 */ 257, 336, 377, 377, 377, 377, 377, 377, 377, 325,
/* 2280 */ 257, 377, 377, 329, 330, 331, 332, 333, 334, 377,
/* 2290 */ 336, 377, 377, 377, 377, 377, 377, 377, 285, 377,
/* 2300 */ 377, 377, 377, 377, 377, 377, 293, 377, 285, 377,
/* 2310 */ 377, 298, 377, 300, 377, 377, 293, 377, 377, 377,
/* 2320 */ 377, 298, 377, 300, 377, 377, 377, 377, 377, 377,
/* 2330 */ 377, 377, 377, 377, 377, 377, 377, 377, 325, 377,
/* 2340 */ 377, 377, 329, 330, 331, 332, 333, 334, 325, 336,
/* 2350 */ 377, 377, 329, 330, 331, 332, 333, 334, 377, 336,
/* 1490 */ 0, 329, 330, 331, 332, 333, 334, 0, 336, 0,
/* 1500 */ 0, 339, 0, 0, 42, 325, 344, 0, 0, 329,
/* 1510 */ 330, 331, 332, 333, 334, 0, 336, 285, 22, 0,
/* 1520 */ 0, 0, 290, 0, 0, 293, 0, 0, 0, 56,
/* 1530 */ 298, 257, 300, 0, 0, 42, 14, 39, 43, 14,
/* 1540 */ 0, 257, 0, 0, 0, 40, 0, 46, 39, 39,
/* 1550 */ 46, 156, 0, 0, 0, 0, 39, 325, 47, 285,
/* 1560 */ 0, 329, 330, 331, 332, 333, 334, 293, 336, 285,
/* 1570 */ 35, 35, 298, 61, 300, 0, 47, 293, 39, 47,
/* 1580 */ 35, 0, 298, 35, 300, 47, 39, 0, 39, 0,
/* 1590 */ 0, 257, 0, 35, 22, 0, 35, 35, 35, 325,
/* 1600 */ 35, 35, 43, 329, 330, 331, 332, 333, 334, 325,
/* 1610 */ 336, 43, 35, 329, 330, 331, 332, 333, 334, 285,
/* 1620 */ 336, 35, 91, 93, 0, 22, 35, 293, 0, 22,
/* 1630 */ 0, 49, 298, 22, 300, 0, 35, 35, 0, 35,
/* 1640 */ 0, 367, 22, 257, 0, 20, 0, 35, 22, 171,
/* 1650 */ 0, 0, 0, 0, 0, 84, 0, 84, 374, 325,
/* 1660 */ 257, 85, 149, 329, 330, 331, 332, 333, 334, 180,
/* 1670 */ 336, 285, 338, 0, 94, 39, 290, 84, 84, 293,
/* 1680 */ 46, 228, 43, 84, 298, 43, 300, 46, 285, 152,
/* 1690 */ 85, 85, 84, 290, 85, 154, 293, 84, 43, 148,
/* 1700 */ 85, 298, 152, 300, 85, 84, 84, 150, 152, 46,
/* 1710 */ 43, 325, 85, 19, 85, 329, 330, 331, 332, 333,
/* 1720 */ 334, 84, 336, 46, 43, 46, 43, 33, 325, 84,
/* 1730 */ 46, 35, 329, 330, 331, 332, 333, 334, 222, 336,
/* 1740 */ 35, 47, 228, 85, 85, 33, 52, 53, 54, 55,
/* 1750 */ 56, 257, 35, 35, 35, 35, 2, 22, 43, 47,
/* 1760 */ 84, 22, 192, 257, 52, 53, 54, 55, 56, 46,
/* 1770 */ 85, 84, 46, 85, 84, 257, 85, 83, 194, 285,
/* 1780 */ 86, 84, 84, 84, 95, 85, 35, 293, 35, 85,
/* 1790 */ 84, 285, 298, 35, 300, 83, 85, 228, 86, 293,
/* 1800 */ 84, 35, 35, 285, 298, 84, 300, 85, 84, 35,
/* 1810 */ 85, 293, 84, 119, 22, 108, 298, 108, 300, 325,
/* 1820 */ 35, 108, 108, 329, 330, 331, 332, 333, 334, 84,
/* 1830 */ 336, 325, 96, 84, 84, 329, 330, 331, 332, 333,
/* 1840 */ 334, 43, 336, 325, 22, 151, 60, 329, 330, 331,
/* 1850 */ 332, 333, 334, 35, 336, 61, 67, 257, 82, 43,
/* 1860 */ 148, 149, 35, 151, 35, 35, 172, 155, 174, 35,
/* 1870 */ 35, 257, 22, 35, 35, 67, 0, 35, 35, 35,
/* 1880 */ 35, 35, 35, 35, 35, 285, 174, 35, 0, 0,
/* 1890 */ 39, 35, 39, 293, 35, 0, 35, 39, 298, 285,
/* 1900 */ 300, 47, 47, 39, 47, 0, 35, 293, 35, 47,
/* 1910 */ 0, 21, 298, 22, 300, 22, 22, 21, 20, 377,
/* 1920 */ 377, 257, 377, 377, 377, 325, 377, 377, 377, 329,
/* 1930 */ 330, 331, 332, 333, 334, 377, 336, 257, 377, 325,
/* 1940 */ 377, 377, 377, 329, 330, 331, 332, 333, 334, 285,
/* 1950 */ 336, 377, 377, 377, 377, 377, 377, 293, 377, 377,
/* 1960 */ 377, 377, 298, 377, 300, 285, 377, 377, 377, 377,
/* 1970 */ 377, 377, 377, 293, 377, 377, 377, 377, 298, 377,
/* 1980 */ 300, 377, 377, 377, 377, 377, 377, 377, 377, 325,
/* 1990 */ 257, 377, 377, 329, 330, 331, 332, 333, 334, 377,
/* 2000 */ 336, 377, 377, 377, 257, 325, 377, 377, 377, 329,
/* 2010 */ 330, 331, 332, 333, 334, 377, 336, 377, 285, 377,
/* 2020 */ 377, 377, 377, 377, 377, 377, 293, 377, 377, 377,
/* 2030 */ 377, 298, 285, 300, 377, 377, 377, 377, 377, 377,
/* 2040 */ 293, 377, 377, 377, 377, 298, 377, 300, 377, 377,
/* 2050 */ 377, 377, 377, 377, 377, 377, 257, 377, 325, 377,
/* 2060 */ 377, 377, 329, 330, 331, 332, 333, 334, 377, 336,
/* 2070 */ 377, 377, 325, 377, 257, 377, 329, 330, 331, 332,
/* 2080 */ 333, 334, 377, 336, 285, 377, 377, 377, 377, 377,
/* 2090 */ 377, 377, 293, 377, 377, 377, 377, 298, 257, 300,
/* 2100 */ 377, 377, 285, 377, 377, 377, 377, 377, 377, 377,
/* 2110 */ 293, 377, 377, 377, 377, 298, 377, 300, 377, 377,
/* 2120 */ 377, 377, 377, 377, 325, 377, 285, 377, 329, 330,
/* 2130 */ 331, 332, 333, 334, 293, 336, 377, 377, 377, 298,
/* 2140 */ 377, 300, 325, 377, 377, 377, 329, 330, 331, 332,
/* 2150 */ 333, 334, 377, 336, 377, 377, 257, 377, 377, 377,
/* 2160 */ 377, 377, 377, 377, 377, 377, 325, 377, 377, 377,
/* 2170 */ 329, 330, 331, 332, 333, 334, 377, 336, 377, 257,
/* 2180 */ 377, 377, 377, 377, 285, 377, 377, 377, 377, 377,
/* 2190 */ 377, 377, 293, 377, 377, 377, 377, 298, 377, 300,
/* 2200 */ 377, 377, 377, 377, 377, 377, 377, 285, 377, 377,
/* 2210 */ 377, 377, 377, 377, 377, 293, 377, 377, 377, 377,
/* 2220 */ 298, 377, 300, 377, 325, 377, 377, 377, 329, 330,
/* 2230 */ 331, 332, 333, 334, 377, 336, 257, 377, 377, 377,
/* 2240 */ 377, 377, 377, 377, 377, 377, 377, 325, 257, 377,
/* 2250 */ 377, 329, 330, 331, 332, 333, 334, 377, 336, 377,
/* 2260 */ 377, 377, 257, 377, 285, 377, 377, 377, 377, 377,
/* 2270 */ 377, 377, 293, 377, 377, 377, 285, 298, 377, 300,
/* 2280 */ 377, 377, 377, 377, 293, 377, 377, 377, 377, 298,
/* 2290 */ 285, 300, 377, 377, 377, 377, 377, 377, 293, 377,
/* 2300 */ 377, 377, 377, 298, 325, 300, 377, 377, 329, 330,
/* 2310 */ 331, 332, 333, 334, 257, 336, 325, 377, 377, 377,
/* 2320 */ 329, 330, 331, 332, 333, 334, 377, 336, 377, 377,
/* 2330 */ 325, 377, 257, 377, 329, 330, 331, 332, 333, 334,
/* 2340 */ 377, 336, 285, 377, 377, 377, 377, 377, 377, 377,
/* 2350 */ 293, 377, 377, 377, 377, 298, 257, 300, 377, 377,
/* 2360 */ 285, 377, 377, 377, 377, 377, 377, 377, 293, 377,
/* 2370 */ 377, 377, 377, 298, 377, 300, 377, 377, 377, 377,
/* 2380 */ 377, 377, 325, 377, 285, 377, 329, 330, 331, 332,
/* 2390 */ 333, 334, 293, 336, 377, 377, 377, 298, 377, 300,
/* 2400 */ 325, 377, 377, 377, 329, 330, 331, 332, 333, 334,
/* 2410 */ 377, 336, 377, 377, 377, 377, 377, 377, 377, 377,
/* 2420 */ 377, 377, 377, 377, 325, 377, 377, 377, 329, 330,
/* 2430 */ 331, 332, 333, 334, 377, 336,
};
#define YY_SHIFT_COUNT (662)
#define YY_SHIFT_MIN (0)
#define YY_SHIFT_MAX (1929)
#define YY_SHIFT_MAX (1910)
static const unsigned short int yy_shift_ofst[] = {
/* 0 */ 913, 0, 0, 68, 68, 268, 268, 268, 325, 325,
/* 10 */ 268, 268, 525, 582, 782, 582, 582, 582, 582, 582,
/* 20 */ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
/* 30 */ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
/* 40 */ 582, 582, 582, 208, 208, 97, 97, 97, 1073, 1073,
/* 40 */ 582, 582, 208, 208, 97, 97, 97, 1073, 1073, 1073,
/* 50 */ 1073, 152, 426, 3, 3, 99, 99, 238, 238, 5,
/* 60 */ 202, 3, 3, 99, 99, 99, 99, 99, 99, 99,
/* 70 */ 99, 99, 89, 99, 99, 99, 148, 305, 99, 99,
@ -710,93 +726,93 @@ static const unsigned short int yy_shift_ofst[] = {
/* 100 */ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
/* 110 */ 575, 575, 575, 197, 202, 355, 355, 400, 576, 656,
/* 120 */ 438, 438, 438, 576, 528, 148, 11, 11, 305, 305,
/* 130 */ 541, 541, 261, 805, 466, 466, 466, 466, 466, 466,
/* 140 */ 466, 1592, 23, 107, 428, 21, 41, 375, 65, 366,
/* 130 */ 541, 541, 261, 696, 466, 466, 466, 466, 466, 466,
/* 140 */ 466, 1694, 23, 107, 428, 21, 41, 375, 65, 366,
/* 150 */ 816, 365, 649, 495, 475, 539, 660, 539, 558, 497,
/* 160 */ 497, 497, 808, 194, 1076, 936, 1145, 1120, 1136, 1009,
/* 170 */ 1145, 1145, 1140, 1040, 1040, 1145, 1145, 1173, 1173, 1175,
/* 180 */ 89, 148, 89, 1176, 1191, 89, 1176, 89, 1197, 89,
/* 190 */ 89, 1145, 89, 1173, 305, 305, 305, 305, 305, 305,
/* 200 */ 305, 305, 305, 305, 305, 1145, 1173, 541, 1175, 380,
/* 210 */ 1080, 148, 380, 1145, 1145, 1176, 380, 1026, 541, 541,
/* 220 */ 541, 541, 1026, 541, 1114, 528, 1197, 380, 261, 380,
/* 230 */ 528, 1238, 541, 1068, 1026, 541, 541, 1068, 1026, 541,
/* 240 */ 541, 305, 1063, 1151, 1068, 1070, 1077, 1086, 936, 1089,
/* 250 */ 528, 1316, 1093, 1097, 1094, 1093, 1097, 1093, 1097, 1260,
/* 260 */ 1076, 541, 805, 1145, 380, 1317, 1173, 2360, 2360, 2360,
/* 270 */ 2360, 2360, 2360, 2360, 348, 1702, 132, 579, 472, 16,
/* 160 */ 497, 497, 808, 194, 1078, 939, 1148, 1125, 1142, 1017,
/* 170 */ 1148, 1148, 1145, 1048, 1048, 1148, 1148, 1182, 1182, 1184,
/* 180 */ 89, 148, 89, 1193, 1198, 89, 1193, 89, 1204, 89,
/* 190 */ 89, 1148, 89, 1182, 305, 305, 305, 305, 305, 305,
/* 200 */ 305, 305, 305, 305, 305, 1148, 1182, 541, 1184, 380,
/* 210 */ 1070, 148, 380, 1148, 1148, 1193, 380, 1032, 541, 541,
/* 220 */ 541, 541, 1032, 541, 1140, 528, 1204, 380, 261, 380,
/* 230 */ 528, 1283, 541, 1076, 1032, 541, 541, 1076, 1032, 541,
/* 240 */ 541, 305, 1079, 1169, 1076, 1088, 1092, 1105, 939, 1113,
/* 250 */ 528, 1319, 1097, 1112, 1102, 1097, 1112, 1097, 1112, 1263,
/* 260 */ 1078, 541, 696, 1148, 380, 1322, 1182, 2436, 2436, 2436,
/* 270 */ 2436, 2436, 2436, 2436, 348, 1712, 132, 579, 472, 16,
/* 280 */ 663, 639, 743, 389, 757, 704, 839, 839, 839, 839,
/* 290 */ 839, 839, 839, 839, 843, 568, 25, 25, 61, 212,
/* 300 */ 433, 481, 603, 378, 297, 150, 483, 483, 483, 483,
/* 310 */ 45, 887, 774, 806, 910, 917, 811, 1046, 1069, 720,
/* 320 */ 707, 930, 973, 1041, 1045, 1047, 1050, 728, 829, 1053,
/* 330 */ 951, 847, 625, 391, 1074, 838, 1079, 1036, 1085, 1088,
/* 340 */ 1096, 1098, 1099, 1100, 1052, 1054, 896, 1358, 1189, 1377,
/* 350 */ 1382, 1345, 1389, 1315, 1391, 1357, 1211, 1362, 1363, 1364,
/* 360 */ 1215, 1401, 1368, 1369, 1220, 1406, 1223, 1410, 1378, 1411,
/* 370 */ 1390, 1414, 1380, 1416, 1333, 1248, 1252, 1255, 1258, 1435,
/* 380 */ 1436, 1283, 1286, 1448, 1449, 1404, 1451, 1452, 1453, 1310,
/* 390 */ 1456, 1457, 1458, 1459, 1461, 1324, 1429, 1466, 1328, 1468,
/* 400 */ 1469, 1471, 1472, 1474, 1475, 1476, 1477, 1479, 1481, 1484,
/* 410 */ 1485, 1486, 1488, 1455, 1490, 1499, 1500, 1502, 1503, 1504,
/* 420 */ 1493, 1507, 1508, 1518, 1519, 1520, 1465, 1523, 1524, 1487,
/* 430 */ 1489, 1483, 1513, 1491, 1521, 1492, 1533, 1494, 1497, 1539,
/* 440 */ 1540, 1542, 1505, 1387, 1545, 1546, 1547, 1495, 1548, 1549,
/* 450 */ 1515, 1511, 1512, 1552, 1525, 1526, 1514, 1554, 1535, 1528,
/* 460 */ 1516, 1571, 1541, 1531, 1544, 1579, 1580, 1581, 1585, 1501,
/* 470 */ 1498, 1551, 1565, 1588, 1555, 1557, 1558, 1560, 1553, 1559,
/* 480 */ 1563, 1566, 1577, 1586, 1597, 1578, 1622, 1601, 1582, 1628,
/* 490 */ 1607, 1591, 1630, 1600, 1636, 1602, 1638, 1618, 1623, 1642,
/* 500 */ 1510, 1615, 1649, 1482, 1632, 1529, 1522, 1652, 1655, 1530,
/* 510 */ 1532, 1656, 1657, 1660, 1589, 1587, 1509, 1677, 1596, 1538,
/* 520 */ 1599, 1690, 1646, 1543, 1609, 1603, 1650, 1659, 1467, 1616,
/* 530 */ 1613, 1620, 1631, 1633, 1629, 1693, 1674, 1635, 1637, 1645,
/* 540 */ 1648, 1653, 1679, 1687, 1688, 1658, 1694, 1517, 1662, 1663,
/* 550 */ 1695, 1537, 1697, 1704, 1705, 1667, 1717, 1534, 1676, 1664,
/* 560 */ 1730, 1732, 1733, 1734, 1735, 1676, 1770, 1594, 1731, 1689,
/* 570 */ 1698, 1700, 1707, 1703, 1708, 1744, 1711, 1713, 1752, 1778,
/* 580 */ 1608, 1719, 1706, 1720, 1772, 1773, 1725, 1726, 1775, 1728,
/* 590 */ 1729, 1780, 1736, 1738, 1781, 1740, 1748, 1782, 1750, 1710,
/* 600 */ 1714, 1741, 1746, 1791, 1745, 1759, 1760, 1810, 1762, 1805,
/* 610 */ 1805, 1830, 1795, 1798, 1824, 1796, 1783, 1821, 1832, 1833,
/* 620 */ 1834, 1835, 1837, 1844, 1838, 1839, 1808, 1553, 1842, 1559,
/* 630 */ 1843, 1845, 1846, 1847, 1849, 1850, 1851, 1879, 1853, 1854,
/* 640 */ 1861, 1890, 1868, 1858, 1867, 1908, 1874, 1863, 1876, 1913,
/* 650 */ 1881, 1870, 1882, 1918, 1885, 1887, 1923, 1905, 1907, 1909,
/* 660 */ 1910, 1920, 1929,
/* 320 */ 707, 930, 973, 1045, 1047, 1050, 1053, 1074, 894, 832,
/* 330 */ 625, 391, 1096, 829, 863, 884, 1098, 1038, 1085, 1100,
/* 340 */ 1104, 1106, 1107, 1108, 993, 897, 1127, 1364, 1202, 1384,
/* 350 */ 1390, 1355, 1398, 1324, 1400, 1366, 1218, 1369, 1370, 1371,
/* 360 */ 1223, 1410, 1376, 1377, 1228, 1414, 1230, 1416, 1382, 1418,
/* 370 */ 1399, 1422, 1388, 1435, 1352, 1276, 1275, 1281, 1285, 1449,
/* 380 */ 1451, 1291, 1293, 1454, 1456, 1411, 1458, 1459, 1461, 1320,
/* 390 */ 1463, 1466, 1467, 1468, 1469, 1332, 1437, 1474, 1336, 1476,
/* 400 */ 1477, 1479, 1481, 1484, 1485, 1486, 1488, 1490, 1497, 1499,
/* 410 */ 1500, 1502, 1503, 1462, 1507, 1508, 1515, 1523, 1524, 1526,
/* 420 */ 1496, 1519, 1520, 1521, 1527, 1528, 1473, 1533, 1534, 1493,
/* 430 */ 1498, 1495, 1522, 1501, 1525, 1504, 1540, 1505, 1509, 1542,
/* 440 */ 1543, 1544, 1510, 1395, 1546, 1552, 1553, 1512, 1554, 1555,
/* 450 */ 1535, 1511, 1517, 1560, 1536, 1529, 1539, 1575, 1545, 1532,
/* 460 */ 1547, 1581, 1548, 1538, 1549, 1587, 1589, 1590, 1592, 1530,
/* 470 */ 1531, 1558, 1572, 1595, 1561, 1562, 1563, 1565, 1559, 1568,
/* 480 */ 1566, 1577, 1586, 1591, 1624, 1603, 1628, 1607, 1582, 1630,
/* 490 */ 1611, 1601, 1635, 1602, 1638, 1604, 1640, 1620, 1625, 1644,
/* 500 */ 1537, 1612, 1646, 1478, 1626, 1550, 1513, 1650, 1651, 1556,
/* 510 */ 1541, 1652, 1653, 1654, 1571, 1576, 1489, 1656, 1573, 1557,
/* 520 */ 1593, 1673, 1636, 1551, 1594, 1580, 1634, 1639, 1453, 1599,
/* 530 */ 1605, 1608, 1606, 1609, 1613, 1642, 1615, 1621, 1622, 1637,
/* 540 */ 1619, 1655, 1641, 1663, 1645, 1667, 1514, 1627, 1629, 1677,
/* 550 */ 1516, 1681, 1679, 1684, 1658, 1683, 1569, 1659, 1696, 1705,
/* 560 */ 1717, 1718, 1719, 1720, 1659, 1754, 1735, 1570, 1715, 1676,
/* 570 */ 1685, 1687, 1688, 1690, 1691, 1723, 1697, 1698, 1726, 1739,
/* 580 */ 1584, 1699, 1689, 1700, 1751, 1753, 1706, 1704, 1758, 1716,
/* 590 */ 1711, 1766, 1721, 1722, 1767, 1724, 1725, 1774, 1728, 1707,
/* 600 */ 1709, 1713, 1714, 1792, 1736, 1745, 1749, 1785, 1750, 1798,
/* 610 */ 1798, 1822, 1794, 1786, 1818, 1789, 1776, 1816, 1827, 1829,
/* 620 */ 1830, 1834, 1835, 1850, 1838, 1839, 1808, 1559, 1842, 1568,
/* 630 */ 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1876, 1852, 1854,
/* 640 */ 1851, 1888, 1856, 1855, 1853, 1889, 1859, 1857, 1858, 1895,
/* 650 */ 1861, 1862, 1864, 1905, 1871, 1873, 1910, 1891, 1890, 1893,
/* 660 */ 1894, 1896, 1898,
};
#define YY_REDUCE_COUNT (273)
#define YY_REDUCE_MIN (-354)
#define YY_REDUCE_MAX (2023)
#define YY_REDUCE_MAX (2099)
static const short yy_reduce_ofst[] = {
/* 0 */ -29, -221, 289, 34, 709, -113, 546, 780, 876, 937,
/* 10 */ 990, 1042, 1095, 1109, 1162, 1180, 1232, 1274, 1284, 1334,
/* 20 */ 1376, 1394, 1446, 1496, 1506, 1562, 1604, 1614, 1626, 1668,
/* 30 */ 1685, 1727, 1737, 1779, 1789, 1831, 1841, 1893, 1912, 1935,
/* 40 */ 1954, 2013, 2023, -219, 711, -250, -207, 593, 731, 726,
/* 50 */ 820, -218, 382, 446, 502, -208, 580, -261, -257, -354,
/* 20 */ 1386, 1403, 1494, 1506, 1518, 1600, 1614, 1664, 1680, 1733,
/* 30 */ 1747, 1799, 1817, 1841, 1899, 1922, 1979, 1991, 2005, 2057,
/* 40 */ 2075, 2099, -219, 711, -250, -207, 593, 731, 820, 726,
/* 50 */ 828, -218, 382, 446, 502, -208, 580, -261, -257, -354,
/* 60 */ -234, -182, -11, -138, 218, 323, 404, 548, 662, 664,
/* 70 */ 670, 672, 102, 730, 734, 735, -292, 153, 738, 756,
/* 80 */ -275, -215, 771, 219, -39, 267, 822, -246, 49, -201,
/* 80 */ -275, -215, 771, 219, -39, 267, 855, -246, 49, -201,
/* 90 */ -201, -201, -187, -31, -152, -132, 2, 205, 286, 336,
/* 100 */ 372, 402, 403, 441, 542, 552, 569, 571, 624, 627,
/* 110 */ 630, 635, 636, 20, 31, -71, 71, -264, 136, -194,
/* 120 */ 331, 340, 368, 243, 303, 453, 230, 431, -47, 388,
/* 130 */ 512, 537, 556, 471, 430, 511, 613, 646, 678, 683,
/* 140 */ 733, 638, 759, 746, 647, 710, 760, 826, 715, 807,
/* 150 */ 807, 861, 884, 852, 823, 797, 797, 797, 809, 783,
/* 160 */ 784, 785, 801, 807, 869, 840, 901, 846, 904, 862,
/* 170 */ 912, 915, 881, 885, 886, 926, 927, 938, 939, 879,
/* 180 */ 931, 902, 934, 891, 898, 945, 903, 946, 914, 949,
/* 190 */ 950, 956, 954, 965, 940, 941, 942, 943, 944, 947,
/* 200 */ 948, 957, 958, 960, 961, 969, 977, 952, 919, 974,
/* 210 */ 933, 955, 982, 989, 991, 959, 992, 975, 962, 963,
/* 220 */ 966, 976, 978, 987, 979, 996, 985, 1027, 1012, 1028,
/* 230 */ 1003, 970, 999, 953, 993, 1005, 1006, 964, 997, 1010,
/* 240 */ 1013, 807, 967, 980, 971, 968, 986, 972, 994, 797,
/* 250 */ 1025, 1011, 983, 981, 984, 988, 995, 998, 1000, 1004,
/* 260 */ 1058, 1051, 1075, 1083, 1090, 1101, 1103, 1038, 1044, 1084,
/* 270 */ 1104, 1105, 1111, 1113,
/* 130 */ 512, 537, 556, 471, 430, 511, 586, 613, 681, 682,
/* 140 */ 683, 638, 759, 745, 645, 716, 760, 701, 727, 807,
/* 150 */ 807, 870, 834, 824, 814, 801, 801, 801, 809, 788,
/* 160 */ 789, 791, 810, 807, 874, 844, 906, 851, 907, 866,
/* 170 */ 919, 921, 883, 893, 895, 932, 934, 941, 944, 891,
/* 180 */ 945, 915, 947, 904, 905, 950, 908, 954, 920, 956,
/* 190 */ 958, 963, 960, 974, 949, 951, 957, 961, 964, 965,
/* 200 */ 967, 968, 969, 970, 971, 976, 980, 959, 912, 978,
/* 210 */ 940, 972, 991, 995, 996, 981, 997, 975, 987, 988,
/* 220 */ 989, 998, 982, 999, 986, 1002, 992, 1007, 1019, 1034,
/* 230 */ 1009, 979, 1006, 952, 1001, 1008, 1013, 953, 1003, 1018,
/* 240 */ 1020, 807, 966, 983, 977, 984, 994, 985, 1014, 801,
/* 250 */ 1052, 1021, 1011, 1000, 1015, 1012, 1022, 1016, 1026, 1023,
/* 260 */ 1061, 1057, 1081, 1086, 1090, 1099, 1101, 1044, 1051, 1083,
/* 270 */ 1089, 1110, 1111, 1114,
};
static const YYACTIONTYPE yy_default[] = {
/* 0 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
@ -831,8 +847,8 @@ static const YYACTIONTYPE yy_default[] = {
/* 290 */ 1831, 1830, 1828, 1793, 1453, 1587, 1792, 1791, 1453, 1453,
/* 300 */ 1453, 1453, 1453, 1453, 1453, 1453, 1785, 1786, 1784, 1783,
/* 310 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 320 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 330 */ 1857, 1453, 1925, 1929, 1453, 1453, 1453, 1768, 1453, 1453,
/* 320 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1857, 1453,
/* 330 */ 1925, 1929, 1453, 1453, 1453, 1453, 1453, 1768, 1453, 1453,
/* 340 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 350 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 360 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
@ -853,9 +869,9 @@ static const YYACTIONTYPE yy_default[] = {
/* 510 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1727, 1453, 1453,
/* 520 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1890, 1453, 1453,
/* 530 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 540 */ 1453, 1453, 1453, 1453, 1768, 1453, 1907, 1453, 1867, 1863,
/* 550 */ 1453, 1453, 1859, 1767, 1453, 1453, 1923, 1453, 1453, 1453,
/* 560 */ 1453, 1453, 1453, 1453, 1453, 1453, 1852, 1453, 1825, 1810,
/* 540 */ 1453, 1453, 1453, 1768, 1453, 1907, 1453, 1867, 1863, 1453,
/* 550 */ 1453, 1859, 1767, 1453, 1453, 1923, 1453, 1453, 1453, 1453,
/* 560 */ 1453, 1453, 1453, 1453, 1453, 1852, 1453, 1453, 1825, 1810,
/* 570 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453,
/* 580 */ 1779, 1453, 1453, 1453, 1453, 1453, 1619, 1453, 1453, 1453,
/* 590 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1604,
@ -2003,7 +2019,7 @@ static const char *const yyRuleName[] = {
/* 390 */ "compare_op ::= CONTAINS",
/* 391 */ "in_op ::= IN",
/* 392 */ "in_op ::= NOT IN",
/* 393 */ "in_predicate_value ::= NK_LP expression_list NK_RP",
/* 393 */ "in_predicate_value ::= NK_LP literal_list NK_RP",
/* 394 */ "boolean_value_expression ::= boolean_primary",
/* 395 */ "boolean_value_expression ::= NOT boolean_primary",
/* 396 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression",
@ -3089,7 +3105,7 @@ static const struct {
{ 340, -1 }, /* (390) compare_op ::= CONTAINS */
{ 341, -1 }, /* (391) in_op ::= IN */
{ 341, -2 }, /* (392) in_op ::= NOT IN */
{ 342, -3 }, /* (393) in_predicate_value ::= NK_LP expression_list NK_RP */
{ 342, -3 }, /* (393) in_predicate_value ::= NK_LP literal_list NK_RP */
{ 343, -1 }, /* (394) boolean_value_expression ::= boolean_primary */
{ 343, -2 }, /* (395) boolean_value_expression ::= NOT boolean_primary */
{ 343, -3 }, /* (396) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */
@ -4477,7 +4493,7 @@ static YYACTIONTYPE yy_reduce(
case 392: /* in_op ::= NOT IN */
{ yymsp[-1].minor.yy428 = OP_TYPE_NOT_IN; }
break;
case 393: /* in_predicate_value ::= NK_LP expression_list NK_RP */
case 393: /* in_predicate_value ::= NK_LP literal_list NK_RP */
{ yylhsminor.yy652 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy210)); }
yymsp[-2].minor.yy652 = yylhsminor.yy652;
break;

View File

@ -896,7 +896,7 @@ static int32_t pushDownCondOptTrivialPushDown(SOptimizeContext* pCxt, SLogicNode
return TSDB_CODE_SUCCESS;
}
SLogicNode* pChild = (SLogicNode*)nodesListGetNode(pLogicNode->pChildren, 0);
int32_t code = pushDownCondOptPushCondToChild(pCxt, pChild, &pLogicNode->pConditions);
int32_t code = pushDownCondOptPushCondToChild(pCxt, pChild, &pLogicNode->pConditions);
if (TSDB_CODE_SUCCESS == code) {
OPTIMIZE_FLAG_SET_MASK(pLogicNode->optimizedFlag, OPTIMIZE_FLAG_PUSH_DOWN_CONDE);
pCxt->optimized = true;
@ -1183,7 +1183,7 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo
if (smaFuncIndex < 0) {
break;
} else {
code = nodesListMakeStrictAppend(&pCols, smaIndexOptCreateSmaCol(pFunc, tableId, smaFuncIndex + 2));
code = nodesListMakeStrictAppend(&pCols, smaIndexOptCreateSmaCol(pFunc, tableId, smaFuncIndex + 1));
if (TSDB_CODE_SUCCESS != code) {
break;
}

View File

@ -1036,71 +1036,124 @@ _return:
return code;
}
int32_t scalarGetOperatorResultType(SDataType left, SDataType right, EOperatorType op, SDataType* pRes) {
switch (op) {
static int32_t getMinusOperatorResultType(SOperatorNode* pOp) {
if (!IS_MATHABLE_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
return TSDB_CODE_SUCCESS;
}
static int32_t getArithmeticOperatorResultType(SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_TIMESTAMP == rdt.type) ||
(TSDB_DATA_TYPE_TIMESTAMP == ldt.type && (IS_VAR_DATA_TYPE(rdt.type) || IS_FLOAT_TYPE(rdt.type))) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && (IS_VAR_DATA_TYPE(ldt.type) || IS_FLOAT_TYPE(ldt.type)))) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && IS_INTEGER_TYPE(rdt.type)) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && IS_INTEGER_TYPE(ldt.type)) ||
(TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_BOOL == rdt.type) ||
(TSDB_DATA_TYPE_TIMESTAMP == rdt.type && TSDB_DATA_TYPE_BOOL == ldt.type)) {
pOp->node.resType.type = TSDB_DATA_TYPE_TIMESTAMP;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes;
} else {
pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes;
}
return TSDB_CODE_SUCCESS;
}
static int32_t getComparisonOperatorResultType(SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
if (NULL != pOp->pRight) {
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (OP_TYPE_IN == pOp->opType || OP_TYPE_NOT_IN == pOp->opType) {
rdt = ldt;
} else if (nodesIsRegularOp(pOp)) {
if (!IS_VAR_DATA_TYPE(ldt.type) || QUERY_NODE_VALUE != nodeType(pOp->pRight) ||
(!IS_STR_DATA_TYPE(rdt.type) && (rdt.type != TSDB_DATA_TYPE_NULL))) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
}
}
pOp->node.resType.type = TSDB_DATA_TYPE_BOOL;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes;
return TSDB_CODE_SUCCESS;
}
static int32_t getJsonOperatorResultType(SOperatorNode* pOp) {
SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType;
SDataType rdt = ((SExprNode*)(pOp->pRight))->resType;
if (TSDB_DATA_TYPE_JSON != ldt.type || !IS_STR_DATA_TYPE(rdt.type)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if (pOp->opType == OP_TYPE_JSON_GET_VALUE) {
pOp->node.resType.type = TSDB_DATA_TYPE_JSON;
} else if (pOp->opType == OP_TYPE_JSON_CONTAINS) {
pOp->node.resType.type = TSDB_DATA_TYPE_BOOL;
}
pOp->node.resType.bytes = tDataTypes[pOp->node.resType.type].bytes;
return TSDB_CODE_SUCCESS;
}
static int32_t getBitwiseOperatorResultType(SOperatorNode* pOp) {
pOp->node.resType.type = TSDB_DATA_TYPE_BIGINT;
pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes;
return TSDB_CODE_SUCCESS;
}
int32_t scalarGetOperatorResultType(SOperatorNode* pOp) {
if (TSDB_DATA_TYPE_BLOB == ((SExprNode*)(pOp->pLeft))->resType.type ||
(NULL != pOp->pRight && TSDB_DATA_TYPE_BLOB == ((SExprNode*)(pOp->pRight))->resType.type)) {
return TSDB_CODE_TSC_INVALID_OPERATION;
}
switch (pOp->opType) {
case OP_TYPE_ADD:
if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) {
qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type);
return TSDB_CODE_TSC_INVALID_OPERATION;
}
if ((left.type == TSDB_DATA_TYPE_TIMESTAMP && (IS_INTEGER_TYPE(right.type) || right.type == TSDB_DATA_TYPE_BOOL)) ||
(right.type == TSDB_DATA_TYPE_TIMESTAMP && (IS_INTEGER_TYPE(left.type) || left.type == TSDB_DATA_TYPE_BOOL))) {
pRes->type = TSDB_DATA_TYPE_TIMESTAMP;
return TSDB_CODE_SUCCESS;
}
pRes->type = TSDB_DATA_TYPE_DOUBLE;
return TSDB_CODE_SUCCESS;
case OP_TYPE_SUB:
if ((left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_BIGINT) ||
(right.type == TSDB_DATA_TYPE_TIMESTAMP && left.type == TSDB_DATA_TYPE_BIGINT)) {
pRes->type = TSDB_DATA_TYPE_TIMESTAMP;
return TSDB_CODE_SUCCESS;
}
pRes->type = TSDB_DATA_TYPE_DOUBLE;
return TSDB_CODE_SUCCESS;
case OP_TYPE_MULTI:
if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) {
qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type);
return TSDB_CODE_TSC_INVALID_OPERATION;
}
case OP_TYPE_DIV:
if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) {
qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type);
return TSDB_CODE_TSC_INVALID_OPERATION;
}
case OP_TYPE_REM:
return getArithmeticOperatorResultType(pOp);
case OP_TYPE_MINUS:
pRes->type = TSDB_DATA_TYPE_DOUBLE;
return TSDB_CODE_SUCCESS;
return getMinusOperatorResultType(pOp);
case OP_TYPE_ASSIGN:
pOp->node.resType = ((SExprNode*)(pOp->pLeft))->resType;
break;
case OP_TYPE_BIT_AND:
case OP_TYPE_BIT_OR:
return getBitwiseOperatorResultType(pOp);
case OP_TYPE_GREATER_THAN:
case OP_TYPE_GREATER_EQUAL:
case OP_TYPE_LOWER_THAN:
case OP_TYPE_LOWER_EQUAL:
case OP_TYPE_EQUAL:
case OP_TYPE_NOT_EQUAL:
case OP_TYPE_IN:
case OP_TYPE_NOT_IN:
case OP_TYPE_IS_NULL:
case OP_TYPE_IS_NOT_NULL:
case OP_TYPE_IS_TRUE:
case OP_TYPE_IS_FALSE:
case OP_TYPE_IS_UNKNOWN:
case OP_TYPE_IS_NOT_TRUE:
case OP_TYPE_IS_NOT_FALSE:
case OP_TYPE_IS_NOT_UNKNOWN:
case OP_TYPE_LIKE:
case OP_TYPE_NOT_LIKE:
case OP_TYPE_MATCH:
case OP_TYPE_NMATCH:
case OP_TYPE_IS_NULL:
case OP_TYPE_IS_NOT_NULL:
case OP_TYPE_IS_TRUE:
case OP_TYPE_JSON_CONTAINS:
pRes->type = TSDB_DATA_TYPE_BOOL;
return TSDB_CODE_SUCCESS;
case OP_TYPE_BIT_AND:
case OP_TYPE_BIT_OR:
pRes->type = TSDB_DATA_TYPE_BIGINT;
return TSDB_CODE_SUCCESS;
case OP_TYPE_IN:
case OP_TYPE_NOT_IN:
return getComparisonOperatorResultType(pOp);
case OP_TYPE_JSON_GET_VALUE:
pRes->type = TSDB_DATA_TYPE_JSON;
return TSDB_CODE_SUCCESS;
case OP_TYPE_JSON_CONTAINS:
return getJsonOperatorResultType(pOp);
default:
ASSERT(0);
return TSDB_CODE_APP_ERROR;
break;
}
return TSDB_CODE_SUCCESS;
}