Merge branch 'devel' into leaflistdefaults
diff --git a/src/parser_yang.c b/src/parser_yang.c
index 1aa4d1e..672d597 100644
--- a/src/parser_yang.c
+++ b/src/parser_yang.c
@@ -1638,6 +1638,12 @@
deviation->deviation = dev;
deviation->target = dev_target;
+ deviation->dflt_check = ly_set_new();
+ if (!deviation->dflt_check) {
+ LOGMEM;
+ goto error;
+ }
+
return deviation;
error:
@@ -1863,105 +1869,73 @@
}
int
-yang_read_deviate_default(struct ly_ctx *ctx, struct type_deviation *dev, char *value)
+yang_read_deviate_default(struct lys_module *module, struct type_deviation *dev, uint8_t c_dflt)
{
- int rc;
- struct lys_node_choice *choice;
- struct lys_node_leaf *leaf;
- struct lys_node *node;
+ int i;
+ struct lys_node_leaflist *llist;
- if (dev->deviate->dflt) {
- LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "deviate");
- free(value);
+ /* check target node type */
+ if (module->version < 2 && dev->target->nodetype == LYS_LEAFLIST) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"default\" property.");
+ goto error;
+ } else if (c_dflt > 1 && dev->target->nodetype != LYS_LEAFLIST) { /* from YANG 1.1 */
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow multiple \"default\" properties.");
+ goto error;
+ } else if (!(dev->target->nodetype & (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE))) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"default\" property.");
goto error;
}
- dev->deviate->dflt = lydict_insert_zc(ctx, value);
-
- if (dev->target->nodetype == LYS_CHOICE) {
- choice = (struct lys_node_choice *)dev->target;
-
- rc = resolve_choice_default_schema_nodeid(dev->deviate->dflt, choice->child, (const struct lys_node **)&node);
- if (rc || !node) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, dev->deviate->dflt, "default");
+ if (dev->deviate->mod == LY_DEVIATE_ADD) {
+ /* check that there is no current value */
+ if ((dev->target->nodetype == LYS_LEAF && ((struct lys_node_leaf *)dev->target)->dflt) ||
+ (dev->target->nodetype == LYS_CHOICE && ((struct lys_node_choice *)dev->target)->dflt)) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
goto error;
}
- if (dev->deviate->mod == LY_DEVIATE_DEL) {
- if (!choice->dflt || (choice->dflt != node)) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, dev->deviate->dflt, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
- goto error;
- }
- choice->dflt = NULL;
- } else {
- if (dev->deviate->mod == LY_DEVIATE_ADD) {
- /* check that there is no current value */
- if (choice->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
- goto error;
- } else if (choice->flags & LYS_MAND_TRUE) {
- LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "default", "choice");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The \"default\" statement is forbidden on choices with \"mandatory\".");
- goto error;
- }
- } else { /* replace*/
- if (!choice->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Replacing a property that does not exist.");
- goto error;
- }
- }
- choice->dflt = node;
- if (!choice->dflt) {
- /* default branch not found */
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, dev->deviate->dflt, "default");
- goto error;
- }
+ /* check collision with mandatory/min-elements */
+ if ((dev->target->flags & LYS_MAND_TRUE) ||
+ (dev->target->nodetype == LYS_LEAFLIST && ((struct lys_node_leaflist *)dev->target)->min)) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "default", "deviation");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "Adding the \"default\" statement is forbidden on %s statement.",
+ (dev->target->flags & LYS_MAND_TRUE) ? "nodes with the \"mandatory\"" : "leaflists with non-zero \"min-elements\"");
+ goto error;
}
- } else if (dev->target->nodetype == LYS_LEAF) {
- leaf = (struct lys_node_leaf *)dev->target;
-
- if (dev->deviate->mod == LY_DEVIATE_DEL) {
- if (!leaf->dflt || !ly_strequal(leaf->dflt, dev->deviate->dflt, 1)) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, dev->deviate->dflt, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
- goto error;
- }
- /* remove value */
- lydict_remove(ctx, leaf->dflt);
- leaf->dflt = NULL;
- } else {
- if (dev->deviate->mod == LY_DEVIATE_ADD) {
- /* check that there is no current value */
- if (leaf->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
- goto error;
- } else if (leaf->flags & LYS_MAND_TRUE) {
- /* RFC 6020, 7.6.4 - default statement must not with mandatory true */
- LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "default", "leaf");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The \"default\" statement is forbidden on leaf with \"mandatory\".");
- goto error;
- }
- } else { /* replace*/
- if (!leaf->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Replacing a property that does not exist.");
- goto error;
- }
- }
- /* remove value */
- lydict_remove(ctx, leaf->dflt);
-
- /* set new value */
- leaf->dflt = lydict_insert(ctx, dev->deviate->dflt, 0);
+ } else if (dev->deviate->mod == LY_DEVIATE_RPL) {
+ /* check that there was a value before */
+ if (((dev->target->nodetype & (LYS_LEAF | LYS_LEAFLIST)) && !((struct lys_node_leaf *)dev->target)->dflt) ||
+ (dev->target->nodetype == LYS_CHOICE && !((struct lys_node_choice *)dev->target)->dflt)) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Replacing a property that does not exist.");
+ goto error;
}
- } else {
- /* invalid target for default value */
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"default\" property.");
+ }
+
+ if (dev->target->nodetype == LYS_LEAFLIST) {
+ /* reallocate default list in the target */
+ llist = (struct lys_node_leaflist *)dev->target;
+ if (dev->deviate->mod == LY_DEVIATE_ADD) {
+ /* reallocate (enlarge) the unique array of the target */
+ llist->dflt = ly_realloc(llist->dflt, (c_dflt + llist->dflt_size) * sizeof *dev->deviate->dflt);
+ } else if (dev->deviate->mod == LY_DEVIATE_RPL) {
+ /* reallocate (replace) the unique array of the target */
+ for (i = 0; i < llist->dflt_size; i++) {
+ lydict_remove(llist->module->ctx, llist->dflt[i]);
+ }
+ llist->dflt = ly_realloc(llist->dflt, c_dflt * sizeof *dev->deviate->dflt);
+ llist->dflt_size = 0;
+ }
+ }
+
+ dev->deviate->dflt = calloc(c_dflt, sizeof *dev->deviate->dflt);
+ if (!dev->deviate->dflt) {
+ LOGMEM;
goto error;
}
@@ -1972,6 +1946,105 @@
}
int
+yang_fill_deviate_default(struct ly_ctx *ctx, struct type_deviation *dev, char *exp)
+{
+ struct lys_node *node;
+ struct lys_node_choice *choice;
+ struct lys_node_leaf *leaf;
+ struct lys_node_leaflist *llist;
+ int rc, i;
+ unsigned int u;
+ const char *value;
+
+ value = lydict_insert_zc(ctx, exp);
+ u = strlen(value);
+ dev->deviate->dflt[dev->deviate->dflt_size++] = value;
+
+ if (dev->target->nodetype == LYS_CHOICE) {
+ choice = (struct lys_node_choice *)dev->target;
+ rc = resolve_choice_default_schema_nodeid(value, choice->child, (const struct lys_node **)&node);
+ if (rc || !node) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ goto error;
+ }
+ if (dev->deviate->mod == LY_DEVIATE_DEL) {
+ if (!choice->dflt || (choice->dflt != node)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
+ goto error;
+ }
+ } else { /* add or replace */
+ choice->dflt = node;
+ if (!choice->dflt) {
+ /* default branch not found */
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ goto error;
+ }
+ }
+ } else if (dev->target->nodetype == LYS_LEAF) {
+ leaf = (struct lys_node_leaf *)dev->target;
+ if (dev->deviate->mod == LY_DEVIATE_DEL) {
+ if (!leaf->dflt || !ly_strequal(leaf->dflt, value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
+ goto error;
+ }
+ /* remove value */
+ lydict_remove(ctx, leaf->dflt);
+ leaf->dflt = NULL;
+ } else { /* add (already checked) and replace */
+ /* remove value */
+ lydict_remove(ctx, leaf->dflt);
+
+ /* set new value */
+ leaf->dflt = lydict_insert(ctx, value, u);
+
+ /* remember to check it later (it may not fit now, but the type can be deviated too) */
+ ly_set_add(dev->dflt_check, dev->target, 0);
+ }
+ } else { /* LYS_LEAFLIST */
+ llist = (struct lys_node_leaflist *)dev->target;
+ if (dev->deviate->mod == LY_DEVIATE_DEL) {
+ /* find and remove the value in target list */
+ for (i = 0; i < llist->dflt_size; i++) {
+ if (llist->dflt[i] && ly_strequal(llist->dflt[i], value, 1)) {
+ /* match, remove the value */
+ lydict_remove(llist->module->ctx, llist->dflt[i]);
+ llist->dflt[i] = NULL;
+ break;
+ }
+ }
+ if (i == llist->dflt_size) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The default value to delete not found in the target node.");
+ goto error;
+ }
+ } else {
+ /* add or replace, anyway we place items into the deviate's list
+ which propagates to the target */
+ /* we just want to check that the value isn't already in the list */
+ for (i = 0; i < llist->dflt_size; i++) {
+ if (ly_strequal(llist->dflt[i], value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", value);
+ goto error;
+ }
+ }
+ /* store it in target node */
+ llist->dflt[llist->dflt_size++] = lydict_insert(ctx, value, u);
+
+ /* remember to check it later (it may not fit now, but the type can be deviated too) */
+ ly_set_add(dev->dflt_check, dev->target, 0);
+ }
+ }
+
+ return EXIT_SUCCESS;
+error:
+ return EXIT_FAILURE;
+}
+
+
+int
yang_read_deviate_config(struct type_deviation *dev, uint8_t value)
{
if (dev->deviate->flags & LYS_CONFIG_MASK) {
@@ -2237,25 +2310,43 @@
}
int
-yang_check_deviation(struct lys_module *module, struct type_deviation *dev, struct unres_schema *unres)
+yang_check_deviation(struct lys_module *module, struct ly_set *dflt_check, struct unres_schema *unres)
{
int i, rc;
+ unsigned int u;
+ const char *value, *target_name;
+ struct lys_node_leaflist *llist;
+ struct lys_node_leaf *leaf;
- if (dev->target->nodetype == LYS_LEAF) {
- for(i = 0; i < dev->deviation->deviate_size; ++i) {
- if (dev->deviation->deviate[i].mod != LY_DEVIATE_DEL) {
- if (dev->deviation->deviate[i].dflt || dev->deviation->deviate[i].type) {
- rc = unres_schema_add_str(module, unres, &((struct lys_node_leaf *)dev->target)->type, UNRES_TYPE_DFLT, ((struct lys_node_leaf *)dev->target)->dflt);
- if (rc == -1) {
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Leaf \"%s\" default value no longer matches its type.", dev->deviation->target_name);
- return EXIT_FAILURE;
- }
+ /* now check whether default value, if any, matches the type */
+ for (u = 0; u < dflt_check->number; ++u) {
+ value = NULL;
+ rc = EXIT_SUCCESS;
+ if (dflt_check->set.s[u]->nodetype == LYS_LEAF) {
+ leaf = (struct lys_node_leaf *)dflt_check->set.s[u];
+ target_name = leaf->name;
+ rc = unres_schema_add_str(module, unres, &leaf->type, UNRES_TYPE_DFLT, value = leaf->dflt);
+ } else { /* LYS_LEAFLIST */
+ llist = (struct lys_node_leaflist *)dflt_check->set.s[u];
+ target_name = llist->name;
+ for (i = 0; i < llist->dflt_size; i++) {
+ rc = unres_schema_add_str(module, unres, &llist->type, UNRES_TYPE_DFLT, value = llist->dflt[i]);
+ if (rc == -1) {
break;
}
}
}
+ if (rc == -1) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The default value \"%s\" of the deviated node \"%s\"no longer matches its type.",
+ target_name);
+ return EXIT_FAILURE;
+ }
}
+
return EXIT_SUCCESS;
+
}
int
diff --git a/src/parser_yang.h b/src/parser_yang.h
index 13054b7..66b1e3a 100644
--- a/src/parser_yang.h
+++ b/src/parser_yang.h
@@ -39,8 +39,11 @@
struct lys_node_array{
uint8_t if_features;
uint8_t must;
+ union {
+ uint8_t tpdf;
+ uint8_t dflt;
+ };
uint8_t unique;
- uint8_t tpdf;
union {
uint uni;
uint16_t flags;
@@ -97,6 +100,7 @@
struct lys_deviate *deviate;
struct lys_restr **trg_must;
uint8_t *trg_must_size;
+ struct ly_set *dflt_check;
};
struct type_uses {
@@ -222,7 +226,9 @@
int yang_read_deviate_unique(struct type_deviation *dev, uint8_t c_uniq);
-int yang_read_deviate_default(struct ly_ctx *ctx, struct type_deviation *dev, char *value);
+int yang_read_deviate_default(struct lys_module *module, struct type_deviation *dev, uint8_t c_dflt);
+
+int yang_fill_deviate_default(struct ly_ctx *ctx, struct type_deviation *dev, char *exp);
int yang_read_deviate_config(struct type_deviation *dev, uint8_t value);
@@ -237,7 +243,7 @@
int yang_check_deviate_unique(struct lys_module *module, struct type_deviation *dev, char *value);
-int yang_check_deviation(struct lys_module *module, struct type_deviation *dev, struct unres_schema *unres);
+int yang_check_deviation(struct lys_module *module, struct ly_set *dflt_check, struct unres_schema *unres);
int yang_fill_include(struct lys_module *module, struct lys_submodule *submodule, char *value,
struct lys_include *inc, struct unres_schema *unres);
diff --git a/src/parser_yang_bis.c b/src/parser_yang_bis.c
index 0b0c397..79dd119 100644
--- a/src/parser_yang_bis.c
+++ b/src/parser_yang_bis.c
@@ -523,16 +523,16 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 5
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 3471
+#define YYLAST 3251
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 109
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 344
/* YYNRULES -- Number of rules. */
-#define YYNRULES 763
+#define YYNRULES 764
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 1228
+#define YYNSTATES 1229
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -588,83 +588,83 @@
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 254, 254, 255, 276, 276, 295, 297, 296, 328,
- 341, 328, 350, 351, 359, 360, 363, 376, 363, 387,
- 388, 394, 394, 403, 405, 407, 430, 431, 434, 434,
- 454, 455, 461, 472, 483, 492, 494, 494, 517, 518,
- 522, 523, 534, 545, 554, 566, 577, 566, 586, 588,
- 589, 590, 591, 596, 602, 604, 606, 608, 610, 618,
- 621, 621, 630, 631, 631, 636, 637, 642, 649, 649,
- 658, 664, 705, 708, 709, 710, 711, 712, 713, 714,
- 720, 721, 722, 724, 724, 743, 744, 748, 749, 756,
- 763, 774, 786, 786, 788, 789, 793, 795, 796, 797,
- 808, 810, 811, 810, 814, 815, 816, 817, 834, 834,
- 843, 844, 849, 868, 881, 887, 892, 898, 900, 900,
- 909, 910, 915, 955, 964, 973, 979, 984, 990, 994,
- 992, 1009, 1019, 1019, 1026, 1029, 1029, 1044, 1045, 1051,
- 1057, 1062, 1068, 1069, 1075, 1080, 1081, 1082, 1089, 1097,
- 1102, 1106, 1136, 1137, 1141, 1142, 1143, 1151, 1164, 1170,
- 1171, 1189, 1193, 1203, 1204, 1209, 1221, 1226, 1231, 1236,
- 1242, 1251, 1264, 1265, 1269, 1270, 1282, 1287, 1292, 1297,
- 1303, 1316, 1316, 1335, 1336, 1339, 1351, 1361, 1362, 1367,
- 1391, 1400, 1409, 1415, 1420, 1426, 1438, 1439, 1457, 1462,
- 1463, 1468, 1470, 1472, 1476, 1480, 1495, 1495, 1514, 1515,
- 1517, 1528, 1538, 1539, 1544, 1568, 1577, 1586, 1592, 1597,
- 1603, 1615, 1616, 1631, 1633, 1635, 1637, 1639, 1639, 1646,
- 1647, 1652, 1672, 1678, 1683, 1688, 1689, 1696, 1697, 1700,
- 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1710, 1710, 1718,
- 1719, 1724, 1758, 1758, 1760, 1767, 1767, 1775, 1776, 1782,
- 1788, 1793, 1798, 1798, 1803, 1803, 1808, 1808, 1816, 1816,
- 1823, 1830, 1823, 1848, 1876, 1876, 1878, 1885, 1890, 1885,
- 1900, 1901, 1901, 1909, 1912, 1918, 1924, 1930, 1935, 1941,
- 1948, 1941, 1967, 1995, 1995, 1997, 2004, 2009, 2004, 2019,
- 2020, 2020, 2028, 2034, 2048, 2062, 2074, 2080, 2085, 2091,
- 2098, 2091, 2123, 2166, 2166, 2168, 2175, 2175, 2183, 2196,
- 2204, 2210, 2224, 2238, 2250, 2256, 2261, 2266, 2266, 2274,
- 2274, 2279, 2279, 2284, 2284, 2292, 2292, 2303, 2305, 2304,
- 2322, 2343, 2343, 2345, 2358, 2370, 2378, 2386, 2394, 2403,
- 2412, 2412, 2422, 2423, 2426, 2427, 2428, 2429, 2430, 2431,
- 2434, 2434, 2442, 2443, 2447, 2467, 2467, 2469, 2476, 2482,
- 2487, 2492, 2492, 2499, 2499, 2511, 2511, 2523, 2524, 2528,
- 2555, 2555, 2557, 2564, 2564, 2572, 2579, 2586, 2593, 2598,
- 2604, 2604, 2620, 2621, 2625, 2660, 2660, 2662, 2669, 2675,
- 2680, 2685, 2685, 2693, 2693, 2708, 2708, 2717, 2718, 2723,
- 2724, 2727, 2747, 2754, 2778, 2802, 2821, 2840, 2863, 2886,
- 2891, 2897, 2906, 2897, 2913, 2914, 2917, 2926, 2917, 2938,
- 2959, 2959, 2961, 2968, 2977, 2982, 2987, 2987, 2995, 2995,
- 3003, 3003, 3013, 3014, 3017, 3017, 3028, 3028, 3039, 3040,
- 3045, 3073, 3080, 3086, 3091, 3096, 3096, 3104, 3104, 3109,
- 3109, 3121, 3121, 3134, 3148, 3134, 3155, 3186, 3186, 3194,
- 3194, 3202, 3202, 3207, 3207, 3217, 3231, 3217, 3238, 3238,
- 3248, 3252, 3257, 3295, 3295, 3303, 3310, 3316, 3321, 3326,
- 3326, 3334, 3334, 3339, 3339, 3346, 3355, 3346, 3368, 3387,
- 3394, 3401, 3411, 3412, 3414, 3419, 3421, 3422, 3423, 3426,
- 3428, 3428, 3434, 3435, 3439, 3461, 3469, 3477, 3493, 3501,
- 3508, 3515, 3526, 3538, 3538, 3544, 3545, 3549, 3571, 3579,
- 3590, 3600, 3609, 3609, 3615, 3616, 3620, 3625, 3631, 3639,
- 3647, 3654, 3661, 3672, 3684, 3684, 3687, 3688, 3692, 3693,
- 3698, 3704, 3706, 3707, 3706, 3710, 3711, 3712, 3727, 3729,
- 3730, 3729, 3733, 3734, 3735, 3750, 3752, 3754, 3755, 3776,
- 3778, 3779, 3780, 3801, 3803, 3804, 3805, 3817, 3817, 3825,
- 3826, 3831, 3833, 3834, 3836, 3837, 3839, 3841, 3841, 3850,
- 3853, 3853, 3864, 3867, 3877, 3898, 3900, 3901, 3904, 3904,
- 3923, 3923, 3932, 3932, 3941, 3944, 3946, 3948, 3949, 3951,
- 3953, 3955, 3956, 3958, 3960, 3961, 3963, 3964, 3966, 3968,
- 3971, 3975, 3977, 3978, 3980, 3981, 3983, 3985, 3996, 3997,
- 4000, 4001, 4013, 4014, 4016, 4017, 4019, 4020, 4026, 4027,
- 4030, 4031, 4032, 4058, 4059, 4062, 4063, 4064, 4067, 4067,
- 4075, 4077, 4078, 4080, 4081, 4082, 4084, 4085, 4087, 4088,
- 4090, 4091, 4093, 4094, 4096, 4097, 4100, 4101, 4104, 4106,
- 4107, 4110, 4110, 4119, 4121, 4122, 4123, 4124, 4125, 4126,
- 4127, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137,
- 4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145, 4146, 4147,
- 4148, 4149, 4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157,
- 4158, 4159, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167,
- 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, 4177,
- 4178, 4179, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4187,
- 4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, 4196, 4197,
- 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207,
- 4208, 4209, 4212, 4221
+ 0, 255, 255, 256, 277, 277, 296, 298, 297, 329,
+ 342, 329, 351, 352, 360, 361, 364, 377, 364, 388,
+ 389, 395, 395, 404, 406, 408, 431, 432, 435, 435,
+ 455, 456, 462, 473, 484, 493, 495, 495, 518, 519,
+ 523, 524, 535, 546, 555, 567, 578, 567, 587, 589,
+ 590, 591, 592, 597, 603, 605, 607, 609, 611, 619,
+ 622, 622, 631, 632, 632, 637, 638, 643, 650, 650,
+ 659, 665, 706, 709, 710, 711, 712, 713, 714, 715,
+ 721, 722, 723, 725, 725, 744, 745, 749, 750, 757,
+ 764, 775, 787, 787, 789, 790, 794, 796, 797, 798,
+ 809, 811, 812, 811, 815, 816, 817, 818, 835, 835,
+ 844, 845, 850, 869, 882, 888, 893, 899, 901, 901,
+ 910, 911, 916, 956, 965, 974, 980, 985, 991, 995,
+ 993, 1010, 1020, 1020, 1027, 1030, 1030, 1045, 1046, 1052,
+ 1058, 1063, 1069, 1070, 1076, 1081, 1082, 1083, 1090, 1098,
+ 1103, 1107, 1137, 1138, 1142, 1143, 1144, 1152, 1165, 1171,
+ 1172, 1190, 1194, 1204, 1205, 1210, 1222, 1227, 1232, 1237,
+ 1243, 1252, 1265, 1266, 1270, 1271, 1283, 1288, 1293, 1298,
+ 1304, 1317, 1317, 1336, 1337, 1340, 1352, 1362, 1363, 1368,
+ 1392, 1401, 1410, 1416, 1421, 1427, 1439, 1440, 1458, 1463,
+ 1464, 1469, 1471, 1473, 1477, 1481, 1496, 1496, 1515, 1516,
+ 1518, 1529, 1539, 1540, 1545, 1569, 1578, 1587, 1593, 1598,
+ 1604, 1616, 1617, 1632, 1634, 1636, 1638, 1640, 1640, 1647,
+ 1648, 1653, 1673, 1679, 1684, 1689, 1690, 1697, 1698, 1701,
+ 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1711, 1711, 1719,
+ 1720, 1725, 1759, 1759, 1761, 1768, 1768, 1776, 1777, 1783,
+ 1789, 1794, 1799, 1799, 1804, 1804, 1809, 1809, 1817, 1817,
+ 1824, 1831, 1824, 1849, 1877, 1877, 1879, 1886, 1891, 1886,
+ 1901, 1902, 1902, 1910, 1913, 1919, 1925, 1931, 1936, 1942,
+ 1949, 1942, 1984, 2023, 2023, 2025, 2032, 2037, 2032, 2047,
+ 2064, 2065, 2065, 2073, 2079, 2093, 2107, 2119, 2125, 2130,
+ 2136, 2143, 2136, 2168, 2211, 2211, 2213, 2220, 2220, 2228,
+ 2241, 2249, 2255, 2269, 2283, 2295, 2301, 2306, 2311, 2311,
+ 2319, 2319, 2324, 2324, 2329, 2329, 2337, 2337, 2348, 2350,
+ 2349, 2367, 2388, 2388, 2390, 2403, 2415, 2423, 2431, 2439,
+ 2448, 2457, 2457, 2467, 2468, 2471, 2472, 2473, 2474, 2475,
+ 2476, 2479, 2479, 2487, 2488, 2492, 2512, 2512, 2514, 2521,
+ 2527, 2532, 2537, 2537, 2544, 2544, 2556, 2556, 2568, 2569,
+ 2573, 2600, 2600, 2602, 2609, 2609, 2617, 2624, 2631, 2638,
+ 2643, 2649, 2649, 2665, 2666, 2670, 2705, 2705, 2707, 2714,
+ 2720, 2725, 2730, 2730, 2738, 2738, 2753, 2753, 2762, 2763,
+ 2768, 2769, 2772, 2822, 2829, 2853, 2873, 2892, 2911, 2934,
+ 2957, 2962, 2968, 2977, 2968, 2984, 2985, 2988, 2997, 2988,
+ 3009, 3030, 3030, 3032, 3039, 3048, 3053, 3058, 3058, 3066,
+ 3066, 3074, 3074, 3084, 3085, 3088, 3088, 3099, 3099, 3110,
+ 3111, 3116, 3144, 3151, 3157, 3162, 3167, 3167, 3175, 3175,
+ 3180, 3180, 3192, 3192, 3205, 3219, 3205, 3226, 3257, 3257,
+ 3265, 3265, 3273, 3273, 3278, 3278, 3288, 3302, 3288, 3309,
+ 3309, 3319, 3323, 3328, 3366, 3366, 3374, 3381, 3387, 3392,
+ 3397, 3397, 3405, 3405, 3410, 3410, 3417, 3426, 3417, 3440,
+ 3460, 3468, 3476, 3486, 3487, 3489, 3494, 3496, 3497, 3498,
+ 3501, 3503, 3503, 3509, 3510, 3514, 3541, 3549, 3557, 3573,
+ 3583, 3590, 3597, 3608, 3620, 3620, 3626, 3627, 3647, 3674,
+ 3682, 3693, 3703, 3714, 3714, 3720, 3721, 3725, 3742, 3749,
+ 3757, 3767, 3774, 3781, 3792, 3804, 3804, 3807, 3808, 3812,
+ 3813, 3818, 3824, 3826, 3827, 3826, 3830, 3831, 3832, 3847,
+ 3849, 3850, 3849, 3853, 3854, 3855, 3870, 3872, 3874, 3875,
+ 3896, 3898, 3899, 3900, 3921, 3923, 3924, 3925, 3937, 3937,
+ 3945, 3946, 3951, 3953, 3954, 3956, 3957, 3959, 3961, 3961,
+ 3970, 3973, 3973, 3984, 3987, 3997, 4018, 4020, 4021, 4024,
+ 4024, 4043, 4043, 4052, 4052, 4061, 4064, 4066, 4068, 4069,
+ 4071, 4073, 4075, 4076, 4078, 4080, 4081, 4083, 4084, 4086,
+ 4088, 4091, 4095, 4097, 4098, 4100, 4101, 4103, 4105, 4116,
+ 4117, 4120, 4121, 4133, 4134, 4136, 4137, 4139, 4140, 4146,
+ 4147, 4150, 4151, 4152, 4178, 4179, 4182, 4183, 4184, 4187,
+ 4187, 4195, 4197, 4198, 4200, 4201, 4202, 4204, 4205, 4207,
+ 4208, 4210, 4211, 4213, 4214, 4216, 4217, 4220, 4221, 4224,
+ 4226, 4227, 4230, 4230, 4239, 4241, 4242, 4243, 4244, 4245,
+ 4246, 4247, 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256,
+ 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266,
+ 4267, 4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275, 4276,
+ 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286,
+ 4287, 4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295, 4296,
+ 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305, 4306,
+ 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316,
+ 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326,
+ 4327, 4328, 4329, 4332, 4341
};
#endif
@@ -802,12 +802,12 @@
};
# endif
-#define YYPACT_NINF -1027
+#define YYPACT_NINF -946
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-1027)))
+ (!!((Yystate) == (-946)))
-#define YYTABLE_NINF -617
+#define YYTABLE_NINF -618
#define yytable_value_is_error(Yytable_value) \
0
@@ -816,129 +816,129 @@
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -1027, 61, -1027, -1027, 193, -1027, -1027, -1027, 43, 43,
- -1027, -1027, 3278, 3278, 43, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -68, 43, -63, 43, -1027, -1027, 6,
- 194, 194, -1027, -1027, 181, -1027, -1027, 15, 312, 43,
- 43, 43, 43, -1027, -1027, -1027, -1027, -1027, 120, -1027,
- -1027, 24, 2245, -1027, 2613, 3278, 2613, 37, 37, 43,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, 34, -1027, -1027, 34,
- -1027, 34, 43, 43, -1027, -1027, 179, 179, 3278, 43,
- 2708, 43, -1027, -1027, -1027, -1027, -1027, 43, -1027, 3278,
- 3278, 43, 43, 43, 43, -1027, -1027, -1027, -1027, 91,
- 91, -1027, -1027, 43, 63, -1027, 109, 47, 194, 43,
- -1027, -1027, -1027, 2613, 2613, 2613, 2613, 43, -1027, 343,
- 1255, 90, 69, -1027, -1027, -1027, 116, 86, 34, 34,
- 34, 34, 70, 194, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
- 43, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, 325, 194, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 3278,
- 7, 3278, 3278, 3278, 7, 3278, 3278, 3278, 3278, 3278,
- 3278, 3278, 3278, 3278, 2803, 3278, 43, 194, 43, 180,
- 2708, 43, -1027, 194, 194, 194, -1027, 154, -1027, 3373,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 158, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 174, 43, 285,
- 525, 43, -1027, -1027, -1027, 170, -1027, 191, 195, 43,
- 239, 273, 297, 215, 43, 301, 302, 318, 222, 225,
- 236, 324, 327, -1027, 335, 43, 43, 170, 178, -1027,
- 43, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 194, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, 194, -1027, -1027, -1027, -1027, -1027,
- 43, 70, 194, -1027, 194, 194, 194, 194, 194, 194,
- 194, 194, 194, 194, 194, 194, 194, 194, 564, 194,
- 194, 34, 0, 287, 383, 1358, 1172, 101, 175, 365,
- 744, 108, 936, 1524, 1494, 1278, 774, 43, 43, 43,
- -1027, -1027, -1027, 242, 288, -1027, -1027, 720, -1027, -1027,
- -1027, -1027, 43, 43, 43, 43, 43, 43, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 43, 43, -1027,
- -1027, -1027, -1027, -1027, -1027, 269, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 284, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, 43, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 43, -1027, -1027, -1027, -1027, -1027, 43, -1027, -1027, 291,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, 43, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, 305, 288, -1027, -1027,
- -1027, -1027, 43, 43, 43, -1027, -1027, -1027, -1027, -1027,
- 310, 288, -1027, -1027, -1027, -1027, -1027, -1027, 43, 43,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 316, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 2613, 66, 2613,
- -1027, 43, -1027, 43, 43, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, 2613, -1027, 2613, -1027, 2613, -1027,
- -1027, 3278, 3278, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, 2613, -1027, -1027, -1027, -1027, -1027, -1027, 3278, 182,
- -1027, 194, 194, 194, 194, 2803, -1027, -1027, -1027, -1027,
- 17, 196, 14, -1027, -1027, -1027, -1027, 2898, 2898, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 43, 43, -1027, -1027, -1027, -1027, 34, -1027, -1027, -1027,
- -1027, 34, 34, 2803, 194, 2898, 2898, -1027, -1027, -1027,
- 32, 34, 45, -1027, 66, -1027, 194, 194, -1027, -1027,
- 194, 194, 194, 194, 194, 194, 34, 194, 194, 194,
- 194, 194, 194, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, 34, -1027, 194, 194, -1027, -1027,
- -1027, 34, -1027, -1027, -1027, 34, -1027, -1027, -1027, -1027,
- -1027, 34, -1027, 194, 194, 34, -1027, -1027, 34, -1027,
- 42, -1027, 194, 194, 194, 194, 194, 194, 194, 194,
- 194, 194, 274, 323, 194, 194, 194, 194, -1027, 43,
- 43, 43, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, 194, 194, 194, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, 345, -1027, 346, 349, 327, -1027, 361,
- 43, 43, 42, 43, 43, -1027, 194, 43, -1027, 43,
- -1027, 43, 43, 43, -1027, 194, -1027, 42, -1027, -1027,
- -1027, 3373, -1027, -1027, -1027, 378, 334, 43, 386, 43,
- 43, 43, 34, 43, 43, 34, -1027, -1027, -1027, 34,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 411, 434, -1027, 452, -1027, -1027, 3373, 42, 195, 194,
- 194, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 194, -1027, 194, 194, 165, 194, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, 585, 585, 630,
- 194, 194, 194, 409, 82, 1182, 43, 338, 194, 194,
- 194, 42, -1027, -1027, -1027, 351, -1027, 357, 43, 43,
- -1027, 364, 282, -1027, 443, -1027, -1027, -1027, 458, 383,
- 188, 43, 43, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 64, -1027,
- 747, 21, 447, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 203, 67, -1027, 43, 43, 43, 43, 288, -1027, -1027,
- -1027, -1027, 43, -1027, 43, -1027, 384, 43, 43, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 2613,
- 2613, -1027, -1027, -1027, -1027, -1027, 34, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 194,
- 194, 194, 194, -1027, 34, 394, 487, -1027, -1027, -1027,
- 34, 51, 2613, 2613, 2613, -1027, 194, 2613, 194, 3278,
- 458, -1027, 32, 45, 194, 34, 34, 194, 194, 43,
- 43, -1027, 194, 194, 194, -1027, 3373, -1027, -1027, 404,
- -1027, -1027, 43, 43, -1027, -1027, 34, -1027, 460, -1027,
- 461, -1027, 476, -1027, 194, 477, -1027, 443, 521, -1027,
- -1027, 34, 34, -1027, -1027, -1027, 394, -1027, 2993, -1027,
- 43, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, 449,
- -1027, -1027, -1027, 255, 194, 194, 194, 194, 194, 194,
- 194, 194, 194, 533, -1027, 388, 426, 226, 456, 309,
- 304, -1027, 3373, -1027, -1027, 43, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, 43, -1027, -1027, -1027, -1027, -1027, -1027,
- 43, -1027, -1027, -1027, -1027, -1027, -1027, 533, 533, 2613,
- 176, 196, 442, 474, 34, -1027, -1027, -1027, -1027, 34,
- -1027, -1027, -1027, 34, -1027, -1027, 533, -1027, -1027, 43,
- -1027, 43, 479, 533, -1027, 533, 481, 464, 533, 533,
- 475, 579, -1027, 533, -1027, -1027, 494, 3088, 533, -1027,
- -1027, -1027, 3183, -1027, 495, 533, 3373, -1027
+ -946, 21, -946, -946, 247, -946, -946, -946, 124, 124,
+ -946, -946, 3058, 3058, 124, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -76, 124, -71, 124, -946, -946, -37,
+ 115, 115, -946, -946, 392, -946, -946, -10, 306, 124,
+ 124, 124, 124, -946, -946, -946, -946, -946, 60, -946,
+ -946, 112, 2025, -946, 2393, 3058, 2393, 118, 118, 124,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, 165, -946, -946, 165,
+ -946, 165, 124, 124, -946, -946, 421, 421, 3058, 124,
+ 2488, 124, -946, -946, -946, -946, -946, 124, -946, 3058,
+ 3058, 124, 124, 124, 124, -946, -946, -946, -946, 43,
+ 43, -946, -946, 124, 69, -946, 106, 37, 115, 124,
+ -946, -946, -946, 2393, 2393, 2393, 2393, 124, -946, 363,
+ 577, 116, 269, -946, -946, -946, 138, 272, 165, 165,
+ 165, 165, 141, 115, 124, 124, 124, 124, 124, 124,
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ 124, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, 323, 115, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, 3058,
+ 3, 3058, 3058, 3058, 3, 3058, 3058, 3058, 3058, 3058,
+ 3058, 3058, 3058, 3058, 2583, 3058, 124, 115, 124, 59,
+ 2488, 124, -946, 115, 115, 115, -946, 281, -946, 3153,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, 142, -946,
+ -946, -946, -946, -946, -946, -946, -946, 147, 124, 219,
+ 232, 124, -946, -946, -946, 305, -946, 151, 155, 124,
+ 365, 375, 385, 164, 124, 425, 428, 434, 185, 195,
+ 200, 452, 455, -946, 461, 124, 124, 305, 207, -946,
+ 124, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 115, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, 115, -946, -946, -946, -946, -946,
+ 124, 141, 115, -946, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 133, 115,
+ 115, 165, 54, 669, 1379, 1074, 262, 140, 287, 333,
+ 1322, 108, 1108, 1545, 1670, 871, 634, 124, 124, 124,
+ -946, -946, -946, 215, 244, -946, -946, 284, -946, -946,
+ -946, -946, 124, 124, 124, 124, 124, 124, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, 124, 124, -946,
+ -946, -946, -946, -946, -946, 222, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, 235, -946, -946,
+ -946, -946, -946, -946, -946, -946, 124, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 124, -946, -946, -946, -946, -946, 124, -946, -946, 238,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, 124, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, 241, 244, -946, -946,
+ -946, -946, 124, 124, 124, -946, -946, -946, -946, -946,
+ -946, 252, 244, -946, -946, -946, -946, -946, -946, 124,
+ 124, -946, -946, -946, -946, -946, -946, -946, 255, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, 2393, 111,
+ 2393, -946, 124, -946, 124, 124, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, 2393, -946, 2393, -946, 2393,
+ -946, -946, 3058, 3058, -946, -946, -946, -946, -946, -946,
+ -946, -946, 2393, -946, -946, -946, -946, -946, -946, 3058,
+ 113, -946, 115, 115, 115, 115, 2583, -946, -946, -946,
+ -946, 42, 61, 12, -946, -946, -946, -946, 2678, 2678,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, 124, 124, -946, -946, -946, -946, 165, -946, -946,
+ -946, -946, 165, 165, 2583, 115, 2678, 2678, -946, -946,
+ -946, 49, 165, 52, -946, 111, -946, 115, 115, -946,
+ -946, 115, 115, 115, 115, 115, 115, 165, 115, 115,
+ 115, 115, 115, 115, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, 165, -946, 115, 115, -946,
+ -946, -946, 165, -946, -946, -946, 165, -946, -946, -946,
+ -946, -946, 165, -946, 115, 115, 165, -946, -946, 165,
+ -946, 25, -946, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 277, 282, 115, 115, 115, 115, -946,
+ 124, 124, 124, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, 115, 115, 115, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, 499, -946, 500, 505, 455, -946,
+ 520, 124, 124, 25, 124, 124, -946, 115, 124, -946,
+ 124, -946, 124, 124, 124, -946, 115, -946, 25, -946,
+ -946, -946, 3153, -946, -946, -946, 533, 294, 124, 544,
+ 124, 124, 124, 165, 124, 124, 165, -946, -946, -946,
+ 165, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, 552, 559, -946, 562, -946, -946, 3153, 25, 155,
+ 115, 115, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, 115, -946, 115, 115, 177, 115, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, 383, 383,
+ 237, 115, 115, 115, 206, 301, 590, 124, 314, 115,
+ 115, 115, 25, -946, -946, -946, 336, -946, 340, 124,
+ 124, -946, 356, 611, -946, 431, -946, -946, -946, 436,
+ 1379, 1079, 124, 124, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, 53,
+ -946, 748, 114, 295, -946, -946, -946, -946, -946, -946,
+ -946, 179, 55, -946, 124, 124, 124, 124, 244, -946,
+ -946, -946, -946, 124, -946, 124, -946, 381, 124, 124,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 2393, 2393, -946, -946, -946, -946, -946, 165, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 115, 115, 115, 115, -946, 165, 373, 472, -946, -946,
+ -946, 165, 95, 2393, 2393, 2393, -946, 115, 2393, 115,
+ 3058, 436, -946, 49, 52, 115, 165, 165, 115, 115,
+ 124, 124, -946, 115, 115, 115, -946, 3153, -946, -946,
+ 388, -946, -946, 124, 124, -946, -946, 165, -946, 580,
+ -946, 581, -946, 593, -946, 115, 612, -946, 431, 625,
+ -946, -946, 165, 165, -946, -946, -946, 373, -946, 2773,
+ -946, 124, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 362, -946, -946, -946, -5, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 509, -946, 48, 391, 152, 412,
+ 313, 377, -946, 3153, -946, -946, 124, -946, -946, -946,
+ -946, -946, -946, -946, 124, -946, -946, -946, -946, -946,
+ -946, 124, -946, -946, -946, -946, -946, -946, 509, 509,
+ 2393, 239, 61, 414, 423, 165, -946, -946, -946, -946,
+ 165, -946, -946, -946, 165, -946, -946, 509, -946, -946,
+ 124, -946, 124, 435, 509, -946, 509, 449, 459, 509,
+ 509, 430, 551, -946, 509, -946, -946, 473, 2868, 509,
+ -946, -946, -946, 2963, -946, 476, 509, 3153, -946
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -946,169 +946,169 @@
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 666, 0, 2, 3, 0, 1, 664, 665, 0, 0,
- 667, 666, 0, 0, 668, 682, 4, 681, 683, 684,
- 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
- 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722, 723, 724,
- 725, 726, 727, 728, 729, 730, 731, 732, 733, 734,
- 735, 736, 737, 738, 739, 740, 741, 742, 743, 744,
- 745, 746, 747, 748, 749, 750, 751, 752, 753, 754,
- 755, 756, 757, 758, 759, 760, 761, 637, 9, 762,
- 666, 16, 666, 0, 636, 0, 6, 645, 645, 5,
- 12, 19, 666, 648, 10, 647, 646, 17, 0, 651,
+ 667, 0, 2, 3, 0, 1, 665, 666, 0, 0,
+ 668, 667, 0, 0, 669, 683, 4, 682, 684, 685,
+ 686, 687, 688, 689, 690, 691, 692, 693, 694, 695,
+ 696, 697, 698, 699, 700, 701, 702, 703, 704, 705,
+ 706, 707, 708, 709, 710, 711, 712, 713, 714, 715,
+ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725,
+ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
+ 756, 757, 758, 759, 760, 761, 762, 638, 9, 763,
+ 667, 16, 667, 0, 637, 0, 6, 646, 646, 5,
+ 12, 19, 667, 649, 10, 648, 647, 17, 0, 652,
0, 0, 0, 25, 13, 14, 15, 25, 0, 20,
- 7, 0, 653, 652, 0, 0, 0, 49, 49, 0,
- 22, 666, 666, 658, 649, 666, 674, 677, 675, 679,
- 680, 678, 650, 654, 676, 673, 0, 671, 634, 0,
- 666, 0, 0, 0, 26, 27, 58, 58, 0, 8,
- 660, 656, 645, 645, 24, 666, 48, 635, 23, 0,
+ 7, 0, 654, 653, 0, 0, 0, 49, 49, 0,
+ 22, 667, 667, 659, 650, 667, 675, 678, 676, 680,
+ 681, 679, 651, 655, 677, 674, 0, 672, 635, 0,
+ 667, 0, 0, 0, 26, 27, 58, 58, 0, 8,
+ 661, 657, 646, 646, 24, 667, 48, 636, 23, 0,
0, 0, 0, 0, 0, 50, 51, 52, 53, 71,
- 71, 45, 639, 651, 0, 638, 655, 0, 643, 672,
- 28, 35, 36, 0, 0, 0, 0, 0, 645, 0,
- 0, 0, 0, 659, 666, 645, 0, 0, 0, 0,
+ 71, 45, 640, 652, 0, 639, 656, 0, 644, 673,
+ 28, 35, 36, 0, 0, 0, 0, 0, 646, 0,
+ 0, 0, 0, 660, 667, 646, 0, 0, 0, 0,
0, 0, 0, 59, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 666, 645, 73, 74, 75, 76, 77, 78, 239,
+ 0, 667, 646, 73, 74, 75, 76, 77, 78, 239,
240, 241, 242, 243, 244, 245, 246, 79, 80, 81,
- 82, 666, 645, 666, 666, 661, 0, 644, 645, 645,
- 38, 645, 55, 56, 54, 57, 68, 70, 60, 0,
+ 82, 667, 646, 667, 667, 662, 0, 645, 646, 646,
+ 38, 646, 55, 56, 54, 57, 68, 70, 60, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 11, 72, 18, 0,
- 660, 662, 666, 30, 40, 37, 666, 0, 373, 0,
- 443, 426, 596, 666, 335, 247, 83, 503, 495, 666,
- 108, 227, 118, 270, 289, 309, 478, 446, 0, 131,
- 763, 642, 390, 666, 666, 375, 46, 0, 657, 0,
- 0, 69, 645, 62, 61, 0, 594, 0, 595, 442,
- 0, 0, 0, 0, 502, 0, 0, 0, 0, 0,
- 0, 0, 0, 645, 0, 640, 641, 0, 0, 666,
- 0, 645, 34, 31, 32, 33, 39, 43, 41, 42,
- 63, 645, 377, 374, 645, 597, 645, 337, 336, 645,
- 249, 248, 645, 85, 84, 645, 645, 110, 109, 645,
- 229, 228, 645, 120, 119, 645, 645, 645, 645, 480,
- 479, 645, 448, 447, 134, 645, 392, 391, 376, 645,
- 663, 0, 29, 65, 379, 429, 340, 251, 87, 498,
- 112, 231, 122, 273, 292, 312, 482, 450, 129, 394,
- 47, 0, 0, 0, 427, 338, 0, 0, 496, 0,
- 0, 0, 271, 290, 310, 0, 0, 0, 0, 0,
+ 661, 663, 667, 30, 40, 37, 667, 0, 374, 0,
+ 444, 427, 597, 667, 336, 247, 83, 504, 496, 667,
+ 108, 227, 118, 270, 289, 310, 479, 447, 0, 131,
+ 764, 643, 391, 667, 667, 376, 46, 0, 658, 0,
+ 0, 69, 646, 62, 61, 0, 595, 0, 596, 443,
+ 0, 0, 0, 0, 503, 0, 0, 0, 0, 0,
+ 0, 0, 0, 646, 0, 641, 642, 0, 0, 667,
+ 0, 646, 34, 31, 32, 33, 39, 43, 41, 42,
+ 63, 646, 378, 375, 646, 598, 646, 338, 337, 646,
+ 249, 248, 646, 85, 84, 646, 646, 110, 109, 646,
+ 229, 228, 646, 120, 119, 646, 646, 646, 646, 481,
+ 480, 646, 449, 448, 134, 646, 393, 392, 377, 646,
+ 664, 0, 29, 65, 380, 430, 341, 251, 87, 499,
+ 112, 231, 122, 273, 292, 313, 483, 451, 129, 395,
+ 47, 0, 0, 0, 428, 339, 0, 0, 497, 0,
+ 0, 0, 271, 290, 311, 0, 0, 0, 0, 0,
140, 141, 139, 0, 0, 137, 138, 0, 44, 64,
- 66, 67, 0, 0, 0, 0, 0, 0, 378, 388,
- 389, 387, 382, 380, 385, 386, 383, 0, 0, 434,
- 435, 433, 432, 436, 440, 0, 438, 430, 348, 349,
- 347, 343, 344, 354, 355, 356, 357, 0, 350, 352,
- 353, 358, 359, 341, 345, 346, 0, 250, 260, 261,
+ 66, 67, 0, 0, 0, 0, 0, 0, 379, 389,
+ 390, 388, 383, 381, 386, 387, 384, 0, 0, 435,
+ 436, 434, 433, 437, 441, 0, 439, 431, 349, 350,
+ 348, 344, 345, 355, 356, 357, 358, 0, 351, 353,
+ 354, 359, 360, 342, 346, 347, 0, 250, 260, 261,
259, 254, 266, 262, 268, 264, 252, 258, 257, 255,
- 0, 86, 90, 91, 88, 89, 0, 499, 500, 0,
- 111, 115, 116, 114, 113, 230, 233, 234, 232, 645,
- 645, 645, 645, 0, 121, 126, 127, 125, 124, 123,
+ 0, 86, 90, 91, 88, 89, 0, 500, 501, 0,
+ 111, 115, 116, 114, 113, 230, 233, 234, 232, 646,
+ 646, 646, 646, 0, 121, 126, 127, 125, 124, 123,
287, 288, 286, 276, 280, 283, 0, 0, 274, 284,
- 285, 281, 0, 0, 0, 307, 308, 306, 295, 299,
- 0, 0, 293, 302, 303, 304, 305, 300, 0, 0,
- 325, 326, 324, 315, 327, 329, 333, 0, 331, 313,
- 320, 321, 322, 323, 316, 319, 318, 481, 487, 488,
- 486, 485, 489, 491, 493, 483, 666, 666, 449, 453,
- 454, 452, 451, 455, 457, 459, 461, 0, 0, 0,
- 130, 0, 645, 0, 0, 393, 399, 400, 398, 397,
- 401, 403, 395, 552, 0, 559, 0, 101, 0, 645,
- 645, 0, 0, 645, 645, 428, 645, 645, 339, 645,
- 645, 0, 645, 645, 645, 645, 645, 645, 0, 0,
- 497, 236, 235, 237, 238, 0, 272, 278, 645, 645,
- 0, 0, 0, 291, 297, 645, 645, 0, 0, 645,
- 645, 645, 311, 645, 645, 645, 645, 645, 645, 645,
- 463, 475, 645, 645, 645, 645, 0, 666, 666, 666,
- 107, 0, 0, 0, 136, 0, 0, 645, 645, 645,
- 0, 0, 0, 577, 0, 544, 381, 384, 360, 444,
- 437, 441, 439, 431, 351, 342, 0, 267, 263, 269,
- 265, 253, 256, 92, 666, 666, 666, 666, 501, 666,
- 504, 506, 508, 507, 0, 645, 275, 282, 627, 666,
- 572, 0, 666, 628, 568, 0, 629, 666, 666, 666,
- 576, 0, 645, 294, 301, 0, 586, 587, 0, 581,
- 0, 598, 328, 330, 334, 332, 314, 317, 490, 492,
- 494, 484, 0, 0, 456, 458, 460, 462, 226, 104,
- 106, 105, 100, 225, 132, 425, 421, 666, 410, 405,
- 666, 402, 404, 396, 666, 666, 557, 553, 117, 666,
- 666, 564, 560, 0, 102, 0, 0, 0, 565, 0,
- 510, 523, 0, 532, 505, 128, 279, 570, 569, 571,
- 566, 567, 575, 574, 573, 298, 589, 0, 583, 582,
- 585, 0, 596, 645, 645, 0, 0, 424, 0, 409,
- 556, 555, 0, 563, 562, 0, 645, 579, 578, 0,
- 645, 546, 545, 645, 362, 361, 445, 645, 94, 645,
- 0, 0, 509, 0, 588, 592, 0, 0, 599, 466,
- 466, 645, 142, 133, 645, 645, 407, 406, 554, 561,
- 165, 103, 548, 364, 0, 93, 645, 512, 511, 645,
- 525, 524, 645, 534, 533, 590, 584, 464, 476, 151,
- 144, 429, 411, 0, 0, 0, 0, 0, 514, 527,
- 536, 0, 469, 471, 473, 0, 467, 0, 0, 0,
- 148, 0, 145, 146, 0, 147, 149, 150, 0, 422,
- 0, 0, 0, 580, 168, 169, 166, 167, 547, 549,
- 550, 363, 369, 370, 368, 367, 371, 365, 0, 95,
- 0, 0, 0, 591, 645, 645, 645, 465, 645, 477,
- 600, 0, 143, 0, 0, 0, 0, 0, 154, 152,
- 153, 645, 0, 645, 0, 208, 0, 0, 0, 408,
- 419, 420, 414, 415, 416, 413, 417, 418, 645, 0,
- 0, 645, 645, 666, 666, 99, 0, 513, 515, 518,
- 519, 520, 521, 522, 645, 517, 526, 528, 531, 645,
- 530, 535, 645, 538, 539, 540, 541, 542, 543, 470,
- 472, 474, 468, 604, 0, 0, 0, 666, 666, 205,
- 0, 0, 0, 0, 0, 645, 155, 0, 183, 0,
- 207, 423, 0, 0, 412, 0, 0, 372, 366, 98,
- 97, 96, 516, 529, 537, 201, 0, 607, 601, 0,
- 603, 611, 204, 203, 202, 160, 0, 666, 0, 162,
- 0, 171, 0, 593, 156, 0, 186, 182, 0, 211,
- 209, 0, 0, 224, 223, 616, 606, 610, 0, 158,
- 159, 645, 163, 645, 645, 172, 645, 645, 199, 198,
- 645, 187, 185, 645, 645, 212, 645, 551, 558, 605,
- 608, 612, 609, 614, 165, 161, 174, 170, 165, 189,
- 184, 214, 210, 669, 613, 0, 0, 0, 0, 0,
- 0, 670, 0, 615, 164, 0, 173, 178, 179, 175,
- 176, 177, 200, 0, 188, 193, 194, 192, 190, 191,
- 0, 213, 218, 219, 217, 215, 216, 669, 669, 0,
- 0, 0, 0, 0, 0, 632, 633, 630, 197, 0,
- 666, 631, 222, 0, 666, 617, 669, 180, 195, 196,
- 220, 221, 0, 669, 618, 669, 0, 0, 669, 669,
- 0, 0, 626, 669, 619, 622, 0, 0, 669, 623,
- 624, 621, 669, 620, 0, 669, 0, 625
+ 285, 281, 0, 0, 0, 308, 309, 307, 295, 300,
+ 299, 0, 0, 293, 303, 304, 305, 306, 301, 0,
+ 0, 326, 327, 325, 316, 328, 330, 334, 0, 332,
+ 314, 321, 322, 323, 324, 317, 320, 319, 482, 488,
+ 489, 487, 486, 490, 492, 494, 484, 667, 667, 450,
+ 454, 455, 453, 452, 456, 458, 460, 462, 0, 0,
+ 0, 130, 0, 646, 0, 0, 394, 400, 401, 399,
+ 398, 402, 404, 396, 553, 0, 560, 0, 101, 0,
+ 646, 646, 0, 0, 646, 646, 429, 646, 646, 340,
+ 646, 646, 0, 646, 646, 646, 646, 646, 646, 0,
+ 0, 498, 236, 235, 237, 238, 0, 272, 278, 646,
+ 646, 0, 0, 0, 291, 297, 646, 646, 0, 0,
+ 646, 646, 646, 312, 646, 646, 646, 646, 646, 646,
+ 646, 464, 476, 646, 646, 646, 646, 0, 667, 667,
+ 667, 107, 0, 0, 0, 136, 0, 0, 646, 646,
+ 646, 0, 0, 0, 578, 0, 545, 382, 385, 361,
+ 445, 438, 442, 440, 432, 352, 343, 0, 267, 263,
+ 269, 265, 253, 256, 92, 667, 667, 667, 667, 502,
+ 667, 505, 507, 509, 508, 0, 646, 275, 282, 628,
+ 667, 573, 0, 667, 629, 569, 0, 630, 667, 667,
+ 667, 577, 0, 646, 294, 302, 0, 587, 588, 0,
+ 582, 0, 599, 329, 331, 335, 333, 315, 318, 491,
+ 493, 495, 485, 0, 0, 457, 459, 461, 463, 226,
+ 104, 106, 105, 100, 225, 132, 426, 422, 667, 411,
+ 406, 667, 403, 405, 397, 667, 667, 558, 554, 117,
+ 667, 667, 565, 561, 0, 102, 0, 0, 0, 566,
+ 0, 511, 524, 0, 533, 506, 128, 279, 571, 570,
+ 572, 567, 568, 576, 575, 574, 298, 590, 0, 584,
+ 583, 586, 0, 597, 646, 646, 0, 0, 425, 0,
+ 410, 557, 556, 0, 564, 563, 0, 646, 580, 579,
+ 0, 646, 547, 546, 646, 363, 362, 446, 646, 94,
+ 646, 0, 0, 510, 0, 589, 593, 0, 0, 600,
+ 467, 467, 646, 142, 133, 646, 646, 408, 407, 555,
+ 562, 165, 103, 549, 365, 0, 93, 646, 513, 512,
+ 646, 526, 525, 646, 535, 534, 591, 585, 465, 477,
+ 151, 144, 430, 412, 0, 0, 0, 0, 0, 515,
+ 528, 537, 0, 470, 472, 474, 0, 468, 0, 0,
+ 0, 148, 0, 145, 146, 0, 147, 149, 150, 0,
+ 423, 0, 0, 0, 581, 168, 169, 166, 167, 548,
+ 550, 551, 364, 370, 371, 369, 368, 372, 366, 0,
+ 95, 0, 0, 0, 592, 646, 646, 646, 466, 646,
+ 478, 601, 0, 143, 0, 0, 0, 0, 0, 154,
+ 152, 153, 646, 0, 646, 0, 208, 0, 0, 0,
+ 409, 420, 421, 415, 416, 417, 414, 418, 419, 646,
+ 0, 0, 646, 646, 667, 667, 99, 0, 514, 516,
+ 519, 520, 521, 522, 523, 646, 518, 527, 529, 532,
+ 646, 531, 536, 646, 539, 540, 541, 542, 543, 544,
+ 471, 473, 475, 469, 605, 0, 0, 0, 667, 667,
+ 205, 0, 0, 0, 0, 0, 646, 155, 0, 183,
+ 0, 207, 424, 0, 0, 413, 0, 0, 373, 367,
+ 98, 97, 96, 517, 530, 538, 201, 0, 608, 602,
+ 0, 604, 612, 204, 203, 202, 160, 0, 667, 0,
+ 162, 0, 171, 0, 594, 156, 0, 186, 182, 0,
+ 211, 209, 0, 0, 224, 223, 617, 607, 611, 0,
+ 158, 159, 646, 163, 646, 646, 172, 646, 646, 199,
+ 198, 646, 187, 185, 646, 646, 212, 646, 552, 559,
+ 606, 609, 613, 610, 615, 165, 161, 174, 170, 165,
+ 189, 184, 214, 210, 670, 614, 0, 0, 0, 0,
+ 0, 0, 671, 0, 616, 164, 0, 173, 178, 179,
+ 175, 176, 177, 200, 0, 188, 193, 194, 192, 190,
+ 191, 0, 213, 218, 219, 217, 215, 216, 670, 670,
+ 0, 0, 0, 0, 0, 0, 633, 634, 631, 197,
+ 0, 667, 632, 222, 0, 667, 618, 670, 180, 195,
+ 196, 220, 221, 0, 670, 619, 670, 0, 0, 670,
+ 670, 0, 0, 627, 670, 620, 623, 0, 0, 670,
+ 624, 625, 622, 670, 621, 0, 670, 0, 626
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -1027, -1027, 465, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, 485, -1027, 483, -1027, -1027,
- -1027, 423, -1027, -1027, -1027, -1027, 275, -1027, -1027, -1027,
- -235, 478, -1027, -1027, -143, 446, 453, -1027, -1027, -1027,
- -1027, -1027, 207, -1027, 444, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -436, -360, -1027, -1027, -100,
- -1027, -1027, -1027, -1027, -410, -1027, -1027, -1027, -1027, -281,
- -327, -1027, -1027, -551, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1026, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -453, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -415, -1027, -1027, -1027, -1027, -1027, -499, -498, -397, -431,
- -309, -1027, -1027, -1027, -367, 205, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, 206, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, 208, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, 210, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- 211, -1027, -1027, -1027, -1027, -1027, 212, -1027, 213, -1027,
- 298, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -255, -1027, -1027, -1027, -1027, -1027, -185,
- -1027, -1027, -1027, -160, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -218, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027,
- -1027, -1027, -1027, -1027, -1027, -1027, -1027, -1027, -383, -1027,
- -1027, -1027, -644, 50, -1027, -1027, -388, -329, -379, -1027,
- -1027, -387, -273, -442, -1027, -441, -1027, 228, -1027, -426,
- -1027, -1027, -450, -1027, -203, -1027, -1027, -1027, -246, -1027,
- -1027, -342, 402, -164, -697, -1027, -1027, -1027, -1027, -417,
- -452, -1027, -1027, -413, -1027, -1027, -1027, -435, -1027, -1027,
- -1027, -517, -1027, -1027, -1027, -671, -479, -1027, -1027, -1027,
- -5, -169, -610, 951, 1492, -1027, -1027, 510, -1027, -1027,
- -1027, -1027, 405, -1027, -4, 253, 497, -272, 46, -1027,
- 574, 401, -132, -1027
+ -946, -946, 583, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, 458, -946, 453, -946, -946,
+ -946, 403, -946, -946, -946, -946, 250, -946, -946, -946,
+ -283, 446, -946, -946, 51, 867, 420, -946, -946, -946,
+ -946, -946, 170, -946, 418, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -435, -359, -946, -946, -121,
+ -946, -946, -946, -946, -418, -946, -946, -946, -946, -309,
+ -345, -946, -946, -541, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -945, -946, -946,
+ -946, -946, -946, -946, -946, -946, -484, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -438, -946, -946, -946, -946, -946, -522, -519, -413, -430,
+ -322, -946, -946, -946, -373, 191, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, 194, -946, -946, -946, -946,
+ -946, -946, -946, 198, -946, -946, -946, -946, -946, -946,
+ -946, 202, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ 203, -946, -946, -946, -946, -946, 210, -946, 221, -946,
+ 300, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -271, -946, -946, -946, -946, -946, -366,
+ -946, -946, -946, -156, -946, -946, -946, -946, -946, -946,
+ -946, -946, -207, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -946, -946,
+ -946, -946, -946, -946, -946, -946, -946, -946, -378, -946,
+ -946, -946, -576, 70, -946, -946, -364, -281, -394, -946,
+ -946, -361, -243, -440, -946, -407, -946, 259, -946, -400,
+ -946, -946, -462, -946, -179, -946, -946, -946, -211, -946,
+ -946, -342, 438, -127, -698, -946, -946, -946, -946, -377,
+ -415, -946, -946, -372, -946, -946, -946, -396, -946, -946,
+ -946, -479, -946, -946, -946, -673, -442, -946, -946, -946,
+ -11, -153, -669, 687, 1271, -946, -946, 548, -946, -946,
+ -946, -946, 443, -946, -4, 276, 584, 283, 223, -946,
+ 613, 40, -126, -946
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -1117,37 +1117,37 @@
-1, 1, 97, 102, 109, 141, 2, 103, 123, 114,
3, 105, 127, 117, 128, 124, 125, 137, 164, 216,
339, 200, 165, 217, 271, 340, 372, 140, 211, 368,
- 126, 166, 185, 186, 954, 955, 189, 208, 307, 344,
+ 126, 166, 185, 186, 955, 956, 189, 208, 307, 344,
423, 442, 278, 306, 209, 242, 243, 352, 394, 447,
- 534, 829, 879, 927, 1016, 491, 481, 724, 869, 711,
+ 534, 830, 880, 928, 1017, 491, 481, 725, 870, 712,
244, 355, 398, 449, 492, 245, 357, 404, 451, 559,
- 246, 463, 328, 632, 855, 438, 464, 893, 919, 941,
- 942, 987, 988, 1086, 989, 1088, 1113, 923, 990, 1090,
- 1116, 1147, 1159, 943, 944, 1097, 993, 1095, 1122, 1149,
- 1169, 1189, 991, 1119, 945, 946, 1050, 947, 948, 1060,
- 995, 1098, 1126, 1150, 1176, 1193, 956, 957, 465, 466,
- 247, 356, 401, 450, 248, 249, 351, 391, 446, 666,
- 667, 663, 665, 662, 664, 250, 358, 566, 452, 678,
- 567, 755, 679, 251, 359, 580, 453, 685, 581, 772,
- 686, 252, 360, 597, 454, 694, 695, 689, 690, 693,
- 691, 253, 350, 388, 507, 445, 660, 659, 508, 509,
- 494, 826, 875, 925, 1012, 1011, 254, 345, 255, 367,
- 383, 443, 649, 650, 256, 364, 417, 467, 719, 717,
- 718, 640, 858, 897, 809, 950, 641, 856, 996, 806,
- 257, 347, 495, 444, 657, 653, 656, 654, 311, 496,
- 827, 258, 362, 413, 456, 702, 703, 704, 705, 625,
- 792, 935, 917, 978, 974, 975, 976, 626, 793, 937,
- 259, 361, 410, 455, 699, 696, 697, 698, 260, 353,
- 539, 448, 318, 748, 749, 750, 751, 880, 908, 970,
- 752, 881, 911, 971, 753, 883, 914, 972, 497, 825,
- 872, 924, 1003, 484, 720, 862, 817, 1004, 485, 722,
- 865, 822, 528, 584, 765, 585, 761, 586, 771, 936,
- 823, 868, 605, 779, 849, 606, 776, 847, 884, 931,
- 1092, 312, 313, 348, 780, 852, 1044, 1045, 1046, 1077,
- 1078, 1106, 1080, 1081, 1108, 1132, 1144, 1129, 1177, 1204,
- 1214, 1215, 1217, 1222, 1205, 766, 767, 1190, 1191, 159,
- 201, 781, 332, 850, 110, 115, 119, 131, 132, 152,
- 196, 144, 194, 265, 116, 4, 133, 1152, 156, 175,
+ 246, 463, 328, 633, 856, 438, 464, 894, 920, 942,
+ 943, 988, 989, 1087, 990, 1089, 1114, 924, 991, 1091,
+ 1117, 1148, 1160, 944, 945, 1098, 994, 1096, 1123, 1150,
+ 1170, 1190, 992, 1120, 946, 947, 1051, 948, 949, 1061,
+ 996, 1099, 1127, 1151, 1177, 1194, 957, 958, 465, 466,
+ 247, 356, 401, 450, 248, 249, 351, 391, 446, 667,
+ 668, 664, 666, 663, 665, 250, 358, 566, 452, 679,
+ 567, 756, 680, 251, 359, 581, 453, 686, 582, 773,
+ 687, 252, 360, 598, 454, 695, 696, 690, 691, 694,
+ 692, 253, 350, 388, 507, 445, 661, 660, 508, 509,
+ 494, 827, 876, 926, 1013, 1012, 254, 345, 255, 367,
+ 383, 443, 650, 651, 256, 364, 417, 467, 720, 718,
+ 719, 641, 859, 898, 810, 951, 642, 857, 997, 807,
+ 257, 347, 495, 444, 658, 654, 657, 655, 311, 496,
+ 828, 258, 362, 413, 456, 703, 704, 705, 706, 626,
+ 793, 936, 918, 979, 975, 976, 977, 627, 794, 938,
+ 259, 361, 410, 455, 700, 697, 698, 699, 260, 353,
+ 539, 448, 318, 749, 750, 751, 752, 881, 909, 971,
+ 753, 882, 912, 972, 754, 884, 915, 973, 497, 826,
+ 873, 925, 1004, 484, 721, 863, 818, 1005, 485, 723,
+ 866, 823, 528, 585, 766, 586, 762, 587, 772, 937,
+ 824, 869, 606, 780, 850, 607, 777, 848, 885, 932,
+ 1093, 312, 313, 348, 781, 853, 1045, 1046, 1047, 1078,
+ 1079, 1107, 1081, 1082, 1109, 1133, 1145, 1130, 1178, 1205,
+ 1215, 1216, 1218, 1223, 1206, 767, 768, 1191, 1192, 159,
+ 201, 782, 332, 851, 110, 115, 119, 131, 132, 152,
+ 196, 144, 194, 265, 116, 4, 133, 1153, 156, 175,
157, 99, 100, 334
};
@@ -1156,233 +1156,211 @@
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 10, 193, 462, 160, 11, 11, 385, 98, 101, 762,
- 10, 535, 601, 602, 502, 16, 677, 486, 807, 810,
- 529, 565, 16, 187, 187, 16, 571, 587, 604, 615,
- 684, 182, 107, 482, 758, 501, 521, 108, -21, 544,
- 16, 558, 563, 578, 593, 611, 622, 6, 6, 7,
- 7, 457, 6, 16, 7, 564, 579, 639, 113, 16,
- 483, 5, 513, 526, 336, 754, 515, 184, 758, 568,
- 582, 599, 16, 570, 16, 16, 475, 493, 16, 524,
- 162, 163, 276, 551, 642, 500, 520, 596, 614, 543,
- 548, 557, 562, 577, 592, 610, 621, 122, 589, 459,
- 10, 469, 10, 804, 373, 112, 768, 638, 1146, 769,
- 309, 759, 1148, 182, 10, 11, 11, 11, 11, 522,
- 814, 530, 1026, 549, 142, 815, 143, 594, 612, 623,
- 553, 193, 182, 819, 172, 11, 173, 523, 820, 182,
- 346, 550, 172, 139, 173, 595, 613, 624, 215, 184,
- 473, 707, 1013, 708, 887, 1047, 709, 1014, 11, 11,
- 1048, 207, 333, 191, 213, 10, 10, 10, 184, 263,
- 6, 264, 7, 10, 458, 184, 113, 11, 11, 11,
- 11, 476, 161, 958, 16, 6, 269, 7, 270, 11,
- 262, 113, 1185, 1186, 1187, 10, 374, 378, 6, 6,
- 7, 7, 531, 11, 16, 113, 182, 181, 214, 554,
- 182, 16, 536, 758, 763, 997, 268, -602, 457, 182,
+ 10, 98, 101, 462, 11, 11, 385, 755, 763, 160,
+ 10, 16, 535, -21, 602, 502, 336, 193, 808, 811,
+ 16, 5, 565, 580, 107, 482, 678, 501, 521, 108,
+ 6, 544, 7, 558, 563, 578, 594, 612, 623, 564,
+ 579, 685, 6, 486, 7, 805, 529, 603, 113, 640,
+ 16, 515, 571, 588, 605, 616, 373, 16, 570, 759,
+ 16, 16, 112, 16, 6, 483, 7, 513, 526, 16,
+ 113, 493, 122, 524, 568, 583, 600, 551, 759, 764,
+ 525, 597, 615, 139, 552, 182, 500, 520, 599, 643,
+ 543, 548, 557, 562, 577, 593, 611, 622, -617, -617,
+ 10, 522, 10, 16, 769, 549, 309, 770, 639, 595,
+ 613, 624, 759, 207, 10, 11, 11, 11, 11, 16,
+ 6, 184, 7, 121, 523, 172, 113, 173, 550, 6,
+ 553, 7, 596, 614, 625, 11, 760, 815, 215, 182,
+ 820, 1014, 816, 1048, 457, 821, 1015, 193, 1049, 16,
+ 473, 1077, 1144, 276, 888, 469, 346, 191, 11, 11,
+ 530, 162, 163, 457, 182, 10, 10, 10, 333, 475,
+ 213, 182, 154, 10, 154, 184, 154, 11, 11, 11,
+ 11, 476, 6, 182, 7, 952, 953, 16, 113, 11,
+ 1147, 590, 459, -603, 1149, 10, 708, 745, 709, 746,
+ 184, 710, 747, 11, 748, 214, 458, 184, -135, 554,
+ 195, 459, 142, 458, 143, 1027, 262, 187, 187, 184,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 120, 183, 998,
- 572, 573, 184, 475, 121, 121, 184, 8, 926, 218,
- 219, 220, 221, 516, 342, 184, 343, 182, 363, 951,
- 952, 525, 10, 122, 14, 552, 744, 9, 745, 598,
- 381, 746, 382, 747, 308, 369, 314, 315, 316, 419,
- 320, 321, 322, 323, 324, 325, 326, 327, 329, 999,
- 335, 384, 10, 184, 10, 460, 10, 10, 309, 470,
- 479, 489, 498, 518, 532, 537, 541, 546, 555, 560,
- 575, 590, 608, 619, 472, 395, 182, 6, 182, 7,
- 130, 983, 405, 1155, 636, 406, 1020, 1156, 1035, 473,
- 6, 984, 7, 302, 10, 182, 407, 10, 474, 386,
- 182, 387, 475, 630, 985, 10, 473, 224, 986, 121,
- 10, 473, 184, 104, 184, 106, 370, -157, -616, -616,
- 476, 10, 10, 631, 225, 118, 11, 1170, 477, 226,
- 655, 184, 227, 389, 853, 390, 184, 458, 228, 229,
- 1087, 230, 458, 231, 232, 658, 371, 224, 478, 1163,
- 233, 234, 670, 235, 169, 170, 182, 392, 171, 393,
- 236, 396, 399, 397, 400, 1171, 676, 473, 487, 226,
- 1164, 683, 227, 177, 182, 237, 10, 692, 402, 238,
- 403, 1032, 239, 854, 408, 473, 409, 411, 199, 412,
- 233, 234, 184, 235, 894, 415, 1055, 416, 476, 969,
- 182, 240, 951, 952, 241, 866, 870, 867, 871, 873,
- 184, 874, 977, 11, 11, 11, 458, 182, 979, 951,
- 952, 877, 239, 878, 477, 982, 540, 266, 11, 11,
- 11, 11, 11, 11, 997, 992, 184, 457, 891, 488,
- 892, 240, 994, 11, 11, 1061, 895, 182, 896, 951,
- 952, 1076, 1143, 184, 296, 514, 527, 1076, 998, 572,
- 573, 1079, 569, 583, 600, 12, 13, 1107, 1006, 1007,
- 953, 906, 11, 907, 298, 965, 300, 301, 777, 1002,
- 1025, 1030, 631, 184, 1008, 459, 11, 1154, 1022, 1023,
- 1037, 1038, 11, 154, 909, 154, 910, 154, 1151, 1019,
- 1028, 1034, 967, 333, 1024, 1029, 385, 1195, 1031, 11,
- 934, 934, 912, 1143, 913, 338, 182, 1162, 966, 341,
- 1111, 1114, 1112, 1115, 1203, 964, 349, 1209, 11, 11,
- 11, 195, 354, 1018, 1027, 1033, 1117, 1120, 1118, 1121,
- 1196, 333, 493, 1212, 11, 11, 365, 366, 1208, 224,
- 932, 932, 184, 1213, 457, 182, 370, 1218, 1225, 155,
- 158, 155, 129, 202, 154, 154, 154, 154, 933, 933,
- 138, 226, 188, 188, 227, 377, 167, 134, 135, 136,
- 190, 1124, 420, 1125, 824, 231, 376, 11, 441, 11,
- 11, 184, 233, 234, 210, 235, 168, 458, 940, -135,
- 475, 1021, 459, 1036, 1123, 1100, 728, 729, 1160, 1161,
- 503, 504, 553, 505, -206, 506, 510, 511, 512, 179,
- 180, 238, -181, 743, 239, 418, 949, 876, 155, 155,
- 155, 155, 918, 706, 1101, 712, 1102, 1005, 203, 204,
- 205, 206, 603, 240, 916, 973, 319, 277, 888, 1130,
- 721, 938, 723, 1153, 725, 1131, 10, 10, 1145, 939,
- 1219, 195, 1194, 212, 222, 337, 153, 736, 0, 0,
- 195, 0, 0, 1167, 1174, 0, 0, 915, 0, 0,
- 0, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 0, 1168,
- 1175, 633, 0, 0, 0, 310, 0, 0, 224, 317,
- 0, 182, 0, 0, 0, 0, 0, 0, 0, 331,
- 0, 0, 473, 0, 0, 0, 0, 0, 0, 0,
- 226, 0, 0, 227, 997, 182, 11, 457, 0, 0,
- 0, 959, 962, 0, 231, 375, 379, 184, 634, 0,
- 0, 233, 234, 476, 235, 10, 10, 10, 998, 572,
- 573, 477, 475, 0, 0, 182, 489, 1000, 0, 0,
- 0, 184, 0, 0, 231, 0, 473, 476, 0, 616,
- 238, 635, 0, 239, 589, 459, 10, 10, 10, 10,
- 10, 0, 0, 10, 617, 10, 0, 10, 10, 10,
- 488, 184, 240, 11, 0, 545, 0, 476, 1017, 0,
- 238, 0, 0, 10, 0, 10, 10, 10, 0, 10,
- 10, 0, 0, 0, 0, 0, 0, 421, 0, 700,
- 701, 0, 0, 0, 0, 618, 0, 0, 0, 0,
- 0, 0, 0, 11, 461, 0, 277, 0, 471, 480,
- 490, 499, 519, 533, 538, 542, 547, 556, 561, 576,
- 591, 609, 620, 0, 0, 1182, 1183, 1105, 0, 0,
- 0, 0, 0, 637, 0, 0, 0, 0, 0, 0,
- 0, 0, 11, 0, 1202, 0, 0, 11, 0, 0,
- 0, 1206, 0, 1207, 11, 11, 1210, 1211, 0, 1133,
- 0, 1216, 0, 0, 0, 0, 1221, 11, 11, 0,
- 1224, 0, 0, 1226, 627, 628, 629, 0, 0, 0,
- 799, 800, 801, 472, 0, 0, 457, 182, 0, 643,
- 644, 645, 646, 647, 648, 0, 0, 0, 473, 11,
- 11, 11, 11, 1178, 651, 652, 0, 474, 11, 0,
- 11, 475, 0, 11, 11, 0, 0, 830, 831, 832,
- 833, 0, 834, 184, 1157, 0, 1165, 1172, 0, 476,
- 0, -277, 837, 661, 459, 839, 0, 477, 0, 0,
- 841, 842, 843, 0, 0, 0, 0, 668, 154, 0,
- 154, 0, 0, 669, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 154, 0, 154, 1220, 154,
- 675, 0, 0, 1223, 1099, 1065, 1066, 1227, 0, 0,
- 857, 0, 154, 859, 0, 10, 10, 860, 861, 680,
- 681, 682, 863, 864, 0, 0, 0, 0, 10, 10,
- 0, 0, 0, 0, 0, 687, 688, 0, 195, 195,
- 0, 0, 155, 710, 155, 0, 0, 0, 1089, 1091,
- 1093, 0, 0, 1096, 0, 0, 10, 174, 0, 155,
- 176, 155, 178, 155, 0, 0, 195, 195, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 713, 0,
- 715, 716, 0, 0, 0, 0, 0, 0, 0, 0,
- 331, 0, 0, 0, 0, 760, 764, 770, 0, 0,
- 0, 11, 775, 778, 0, 0, 0, 0, 0, 11,
- 0, 0, 0, 0, 0, 0, 11, 0, 0, 272,
- 273, 274, 275, 0, 0, 0, 224, 0, 331, 0,
- 805, 808, 0, 0, 0, 816, 224, 821, 0, 710,
- 0, 0, 0, 0, 0, 10, 0, 10, 226, 472,
- 0, 227, 0, 182, 0, 0, 0, 0, 226, 0,
- 0, 227, 231, 182, 473, 0, 0, 0, 0, 233,
- 234, 0, 235, 0, 473, 1184, 0, 475, 0, 233,
- 234, 0, 235, 0, 0, 0, 0, 516, 0, 184,
- 0, 0, 0, 0, 0, 476, 0, 0, 238, 184,
- 0, 239, 195, 477, 0, 476, 0, 0, 0, 224,
- 0, 239, 0, 477, 0, 0, 1069, 1070, 488, 0,
- 240, 0, 0, 517, 0, 0, 225, 851, 0, 0,
- 240, 226, 224, 961, 227, 0, 0, 195, 0, 0,
- 228, 229, 0, 230, 0, 231, 232, 0, 0, 0,
- 1082, 1083, 233, 234, 226, 235, 0, 227, 0, 182,
- 0, 0, 236, 0, 0, 0, 0, 0, 231, 0,
- 473, 0, 0, 0, 0, 233, 234, 237, 235, 0,
- 0, 238, 0, 475, 239, 0, 0, 0, 0, 0,
- 1110, 0, 0, 0, 886, 184, 0, 0, 0, 0,
- 0, 476, 0, 240, 238, 0, 261, 239, 0, 0,
- 0, 0, 224, 0, 0, 0, 0, 0, 0, 0,
- 960, 963, 0, 0, 0, 0, 240, 0, 0, 607,
- 0, 0, 0, 487, 851, 472, 0, 227, 457, 182,
- 0, 0, 468, 0, 0, 490, 1001, 0, 0, 0,
- 473, 0, 0, 0, 0, 233, 234, 0, 235, 474,
- 154, 154, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 968, 0, 184, 0, 0, 886, 0,
- 0, 476, 0, 1015, 0, 980, 981, 0, 0, 477,
- 0, 0, 0, 1199, 0, 1043, 1049, 1201, 1009, 1010,
- 0, 0, 0, 154, 154, 154, 240, 0, 154, 0,
+ 11, 11, 11, 11, 11, 11, 11, 182, 268, 952,
+ 953, 531, 363, 154, 154, 154, 154, 16, 369, 1156,
+ 182, 384, 6, 1157, 7, 1186, 1187, 1188, 309, 553,
+ 927, -206, 10, 182, 395, 172, 224, 173, 308, -181,
+ 314, 315, 316, 184, 320, 321, 322, 323, 324, 325,
+ 326, 327, 329, 121, 335, 405, 184, 14, 226, 472,
+ 370, 227, 10, 182, 10, 406, 10, 10, 939, 184,
+ 407, 8, 231, 370, 473, 634, 940, 954, 419, 233,
+ 234, 6, 235, 7, 130, 182, 631, 475, 182, 632,
+ 371, 9, 998, 656, 536, 457, 473, 516, 6, 184,
+ 7, 302, 182, 376, 10, 476, 659, 10, 238, 671,
+ 195, 239, 677, 477, 182, 10, 999, 572, 573, 195,
+ 10, 184, 635, 684, 184, 473, 693, 476, 488, 161,
+ 240, 10, 10, 517, 182, 477, 11, 224, 184, 263,
+ 632, 264, 269, 459, 270, 473, 104, 854, 106, 1088,
+ 184, 342, 855, 343, 225, 636, 458, 224, 118, 226,
+ 374, 378, 227, 1164, 895, 1021, 1032, 1036, 228, 229,
+ 184, 230, 959, 231, 232, 381, 476, 382, 182, 226,
+ 233, 234, 227, 235, 1165, 970, 10, 169, 170, 473,
+ 236, 171, 182, 231, 952, 953, 218, 219, 220, 221,
+ 233, 234, 1033, 235, 540, 237, 177, 978, 475, 238,
+ 1171, 980, 239, 182, 184, 952, 953, 1056, 120, 181,
+ 458, 199, 182, 11, 11, 11, 121, 983, 184, 238,
+ 995, 240, 239, 993, 241, 386, 1144, 387, 11, 11,
+ 11, 11, 11, 11, 122, 389, 1077, 390, 1172, 184,
+ 183, 240, 1062, 11, 11, 392, 1080, 393, 184, 460,
+ 266, 1108, 1155, 470, 479, 489, 498, 518, 532, 537,
+ 541, 546, 555, 560, 575, 591, 609, 620, 966, 1026,
+ 1031, 1007, 11, 1163, 1152, 514, 527, 296, 637, 1196,
+ 1204, 1003, 569, 584, 601, 396, 11, 397, 399, 1197,
+ 400, 1023, 11, 1038, 402, 778, 403, 298, 1213, 300,
+ 301, 1020, 1029, 1035, 1008, 935, 935, 385, 968, 11,
+ 333, 1009, 408, 967, 409, 411, 1209, 412, 1019, 1028,
+ 1034, 415, 1210, 416, 1024, 1214, 1039, 965, 11, 11,
+ 11, 1025, 1030, 933, 933, 129, 1219, 493, 338, 1226,
+ 138, 224, 341, 202, 167, 11, 11, 190, 333, 349,
+ 377, 441, 12, 13, 224, 354, 934, 934, 225, 867,
+ 871, 868, 872, 226, 825, 874, 227, 875, 210, 365,
+ 366, 941, 228, 229, 1124, 230, 226, 231, 232, 227,
+ 878, 182, 879, 1101, 233, 234, 1161, 235, 11, 1162,
+ 11, 11, 473, 892, 236, 893, 503, 233, 234, 504,
+ 235, 729, 730, 505, 896, 420, 897, 506, 510, 237,
+ 984, 950, 907, 238, 908, 511, 239, 184, 744, 910,
+ 985, 911, 913, 476, 914, 182, 512, 418, 154, 239,
+ 154, 477, 877, 986, 231, 240, 473, 987, 261, 617,
+ 1112, 1115, 1113, 1116, 919, 154, -157, 154, 240, 154,
+ 1022, 962, 1037, 1118, 618, 1119, 472, 10, 10, 1102,
+ 182, 184, 154, 1103, 134, 135, 136, 476, 1006, 917,
+ 238, 473, 1121, 604, 1122, 1168, 1175, 155, 158, 155,
+ 474, 974, 319, 168, 475, 1125, 889, 1126, 195, 195,
+ 1131, 1154, 1169, 1176, 916, 619, 184, 1132, 1146, 1220,
+ 1195, 212, 476, 337, 0, 153, 179, 180, 0, 0,
+ 477, 0, 0, 0, 0, 0, 195, 195, 0, 0,
+ 0, 0, 0, 0, 0, 203, 204, 205, 206, 0,
+ 478, 0, 0, 0, 0, 998, 0, 11, 457, 0,
+ 0, 0, 0, 0, 0, 0, 155, 155, 155, 155,
+ 0, 222, 0, 0, 0, 0, 10, 10, 10, 999,
+ 572, 573, 0, 475, 0, 277, 0, 0, 279, 280,
+ 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 294, 295, 590, 459, 10, 10, 10,
+ 10, 10, 0, 0, 10, 0, 10, 0, 10, 10,
+ 10, 0, 0, 174, 11, 0, 176, 0, 178, 1018,
+ 0, 707, 0, 713, 10, 0, 10, 10, 10, 0,
+ 10, 10, 0, 310, 0, 0, 0, 317, 722, 0,
+ 724, 0, 726, 0, 0, 224, 0, 331, 0, 0,
+ 0, 0, 0, 0, 11, 737, 0, 0, 0, 0,
+ 0, 0, 195, 701, 702, 0, 0, 226, 0, 0,
+ 227, 0, 182, 0, 0, 272, 273, 274, 275, 0,
+ 0, 231, 0, 473, 0, 0, 0, 0, 233, 234,
+ 0, 235, 0, 11, 1106, 0, 475, 195, 11, 0,
+ 0, 0, 0, 0, 0, 11, 11, 0, 184, 0,
+ 0, 0, 0, 0, 476, 0, 0, 238, 11, 11,
+ 239, 0, 0, 0, 421, 0, 1134, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 240,
+ 0, 0, 608, 0, 0, 0, 960, 963, 0, 0,
+ 11, 11, 11, 11, 800, 801, 802, 0, 0, 11,
+ 0, 11, 0, 0, 11, 11, 0, 0, 0, 0,
+ 1179, 489, 1001, 0, 277, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 155, 155, 0, 195, 0, 0,
- 1051, 1052, 1053, 1054, 0, 0, 0, 0, 0, 1057,
- 0, 1059, 0, 0, 1062, 1063, 0, 0, 224, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 195,
- 0, 0, 0, 0, 0, 0, 1085, 155, 155, 155,
- 226, 472, 155, 227, 0, 182, 0, 816, 821, 0,
- 0, 0, 0, 0, 231, 0, 473, 0, 0, 0,
- 588, 233, 234, 0, 235, 0, 572, 573, 0, 475,
- 0, 472, 574, 195, 0, 182, 0, 0, 0, 0,
- 0, 184, 0, 0, 0, 0, 473, 476, 0, 0,
- 238, 589, 0, 239, 0, 477, 572, 573, 0, 475,
- 154, 0, 574, 0, 0, 0, 0, 0, 0, 0,
- 488, 184, 240, 1158, 0, 1166, 1173, 476, 0, -296,
- 111, 0, 459, 0, 0, 477, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 195, 0,
- 0, 0, 0, 195, 0, 0, 0, 195, 0, 0,
+ 0, 831, 832, 833, 834, 0, 835, 0, 0, 0,
+ 0, 0, 0, 188, 188, 0, 838, 0, 0, 840,
+ 0, 628, 629, 630, 842, 843, 844, 0, 0, 1100,
+ 154, 154, 0, 0, 0, 0, 644, 645, 646, 647,
+ 648, 649, 0, 0, 0, 1221, 10, 10, 0, 0,
+ 1224, 652, 653, 0, 1228, 0, 0, 0, 224, 10,
+ 10, 0, 0, 0, 858, 0, 0, 860, 0, 0,
+ 0, 861, 862, 154, 154, 154, 864, 865, 154, 487,
+ 662, 472, 0, 227, 457, 182, 998, 10, 0, 457,
+ 182, 0, 0, 0, 669, 0, 473, 195, 0, 0,
+ 670, 233, 234, 0, 235, 474, 0, 0, 468, 0,
+ 999, 572, 573, 0, 475, 472, 0, 676, 457, 182,
+ 0, 184, 0, 0, 516, 0, 184, 476, 0, 195,
+ 473, 0, 11, 0, 0, 477, 681, 682, 683, 474,
+ 11, 0, 0, 475, 0, 0, 0, 11, 0, 0,
+ 0, 0, 240, 688, 689, 184, 0, 0, 0, 0,
+ 1000, 476, 0, -277, 0, 0, 459, 0, 0, 477,
+ 0, 0, 0, 195, 0, 0, 10, 0, 10, 1158,
+ 0, 1166, 1173, 0, 0, 0, 375, 379, 0, 0,
+ 0, 155, 711, 155, 0, 0, 714, 0, 716, 717,
+ 154, 0, 0, 0, 0, 0, 0, 0, 155, 0,
+ 155, 0, 155, 1066, 1067, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 155, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 195, 331,
+ 0, 0, 0, 195, 761, 765, 771, 195, 0, 0,
+ 0, 776, 779, 0, 0, 0, 1090, 1092, 1094, 0,
+ 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1070, 1071, 0, 0, 0, 0, 0, 331, 0, 806,
+ 809, 0, 0, 0, 817, 461, 822, 0, 711, 471,
+ 480, 490, 499, 519, 533, 538, 542, 547, 556, 561,
+ 576, 592, 610, 621, 1083, 1084, 224, 0, 0, 0,
+ 0, 0, 0, 0, 638, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 226, 0,
+ 0, 227, 0, 182, 0, 0, 0, 0, 0, 0,
+ 0, 0, 231, 0, 1111, 852, 0, 0, 0, 233,
+ 234, 0, 235, 0, 0, 0, 0, 0, 0, 111,
+ 0, 0, 0, 224, 0, 0, 0, 0, 0, 184,
+ 0, 0, 0, 0, 799, 476, 0, 0, 238, 803,
+ 804, 239, 0, 1185, 487, 226, 0, 0, 227, 819,
+ 182, 0, 0, 0, 0, 0, 0, 0, 488, 0,
+ 240, 473, 0, 545, 829, 0, 233, 234, 0, 235,
+ 0, 0, 887, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 836, 197, 198, 0, 184, 0, 0, 839,
+ 0, 0, 458, 841, 0, 0, 0, 0, 239, 845,
+ 477, 1183, 1184, 847, 0, 0, 849, 1200, 0, 0,
+ 0, 1202, 852, 0, 0, 488, 0, 240, 0, 223,
+ 1203, 0, 0, 0, 0, 0, 267, 1207, 0, 1208,
+ 0, 0, 1211, 1212, 0, 0, 0, 1217, 0, 0,
+ 0, 0, 1222, 0, 0, 0, 1225, 0, 0, 1227,
+ 0, 969, 0, 297, 0, 0, 887, 0, 0, 0,
+ 883, 0, 0, 981, 982, 0, 0, 0, 0, 0,
+ 0, 0, 0, 299, 0, 886, 1010, 1011, 0, 303,
+ 304, 0, 305, 0, 0, 0, 0, 0, 0, 0,
+ 899, 0, 1016, 900, 0, 0, 0, 902, 0, 0,
+ 0, 0, 0, 0, 1044, 1050, 0, 0, 1052, 1053,
+ 1054, 1055, 472, 0, 0, 457, 182, 1058, 0, 1060,
+ 0, 0, 1063, 1064, 0, 0, 0, 473, 0, 0,
+ 0, 0, 0, 155, 155, 0, 0, 572, 573, 0,
+ 475, 0, 0, 574, 0, 0, 0, 0, 0, 0,
+ 0, 0, 184, 380, 0, 0, 0, 0, 476, 886,
+ -296, 0, 0, 459, 0, 0, 477, 0, 0, 0,
+ 0, 0, 0, 0, 414, 1086, 155, 155, 155, 0,
+ 0, 155, 422, 0, 0, 0, 817, 822, 0, 0,
+ 0, 0, 424, 0, 0, 425, 0, 426, 0, 0,
+ 427, 0, 0, 428, 0, 0, 429, 430, 0, 0,
+ 431, 0, 0, 432, 224, 0, 433, 434, 435, 436,
+ 0, 0, 437, 0, 0, 0, 439, 0, 0, 0,
+ 440, 0, 0, 0, 0, 0, 226, 472, 0, 227,
+ 0, 182, 0, 0, 1072, 0, 0, 0, 0, 0,
+ 231, 0, 473, 0, 0, 0, 589, 233, 234, 0,
+ 235, 0, 572, 573, 0, 475, 0, 0, 574, 0,
+ 0, 0, 1076, 0, 0, 0, 0, 184, 1085, 0,
+ 1180, 0, 0, 476, 0, 0, 238, 590, 1181, 239,
+ 0, 477, 0, 1104, 1105, 1182, 0, 0, 0, 0,
+ 0, 0, 0, 155, 1189, 1193, 488, 0, 240, 0,
+ 0, 0, 0, 0, 1110, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1128,
+ 1129, 0, 961, 964, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 155, 1188, 1192, 0, 0, 0,
- 0, 0, 1179, 0, 0, 0, 0, 798, 0, 0,
- 1180, 0, 802, 803, 197, 198, 0, 1181, 0, 0,
- 0, 0, 818, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 828, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 223, 0, 0, 0, 0, 835, 0, 267, 0, 0,
- 0, 0, 838, 0, 0, 0, 840, 0, 0, 0,
- 0, 0, 844, 0, 0, 0, 846, 0, 0, 848,
- 0, 0, 0, 0, 297, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 299, 0, 0, 0, 0, 0,
- 303, 304, 0, 305, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 882, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 885, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 898, 0, 0, 899, 0, 0, 0,
- 901, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 380, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 414, 0, 0, 0, 0,
- 0, 0, 0, 422, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 424, 0, 0, 425, 0, 426, 0,
- 0, 427, 885, 0, 428, 0, 0, 429, 430, 0,
- 0, 431, 0, 0, 432, 0, 0, 433, 434, 435,
- 436, 0, 0, 437, 0, 0, 0, 439, 0, 0,
- 0, 440, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 490, 1002, 0,
+ 672, 673, 674, 675, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0,
+ 0, 0, 1198, 0, 0, 0, 0, 1199, 0, 0,
+ 0, 1201, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 715, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1075, 0, 0, 0, 0,
- 0, 1084, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1103, 1104, 0, 0,
+ 0, 727, 728, 0, 0, 731, 732, 0, 733, 734,
+ 0, 735, 736, 0, 738, 739, 740, 741, 742, 743,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1109, 0, 0,
- 0, 671, 672, 673, 674, 0, 0, 0, 0, 0,
- 0, 0, 1127, 1128, 0, 0, 0, 0, 0, 0,
+ 757, 758, 0, 0, 0, 0, 0, 774, 775, 0,
+ 0, 783, 784, 785, 0, 786, 787, 788, 789, 790,
+ 791, 792, 0, 0, 795, 796, 797, 798, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 812,
+ 813, 814, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 714, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1197, 0, 0, 0, 0,
- 1198, 726, 727, 0, 1200, 730, 731, 0, 732, 733,
- 0, 734, 735, 0, 737, 738, 739, 740, 741, 742,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 756, 757, 0, 0, 0, 0, 0, 773, 774, 0,
- 0, 782, 783, 784, 0, 785, 786, 787, 788, 789,
- 790, 791, 0, 0, 794, 795, 796, 797, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 811,
- 812, 813, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 836, 0, 15,
+ 0, 0, 0, 0, 0, 1159, 0, 1167, 1174, 0,
+ 0, 0, 0, 0, 0, 0, 0, 837, 0, 15,
0, 0, 0, 145, 146, 17, 147, 148, 0, 0,
- 0, 149, 150, 151, 845, 18, 19, 20, 21, 22,
+ 0, 149, 150, 151, 846, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
@@ -1390,34 +1368,34 @@
63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 889, 890, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 900, 0,
- 0, 0, 902, 0, 0, 903, 0, 0, 0, 904,
- 0, 905, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 920, 0, 0, 921, 922, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 928, 0,
- 0, 929, 0, 0, 930, 0, 0, 0, 0, 0,
+ 93, 94, 95, 96, 0, 890, 891, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 901, 0,
+ 0, 0, 903, 0, 0, 904, 0, 0, 0, 905,
+ 0, 906, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 921, 0, 0, 922, 923, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 929, 0,
+ 0, 930, 0, 0, 931, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1039, 1040, 1041, 0,
- 1042, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1056, 0, 1058, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1040, 1041, 1042, 0,
+ 1043, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1057, 0, 1059, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1064, 0, 0, 1067, 1068, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1072, 0, 0, 0,
- 0, 1073, 0, 0, 1074, 0, 0, 0, 0, 0,
+ 1065, 0, 0, 1068, 1069, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1073, 0, 0, 0,
+ 0, 1074, 0, 0, 1075, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1094, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1095, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1134, 0, 1135, 1136, 0, 1137, 1138,
- 0, 0, 1139, 0, 0, 1140, 1141, 15, 1142, 0,
+ 0, 0, 0, 1135, 0, 1136, 1137, 0, 1138, 1139,
+ 0, 0, 1140, 0, 0, 1141, 1142, 15, 1143, 0,
0, 16, 146, 17, 147, 148, 0, 0, 0, 149,
150, 151, 0, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
@@ -1456,7 +1434,7 @@
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 15, 0, 0,
- 0, 0, 0, 17, 192, 0, 0, 1079, 0, 0,
+ 0, 0, 0, 17, 192, 0, 0, 1080, 0, 0,
0, 0, 0, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
@@ -1466,7 +1444,7 @@
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 15, 0, 0, 0, 0, 0, 17, 192,
- 0, 0, 1213, 0, 0, 0, 0, 0, 18, 19,
+ 0, 0, 1214, 0, 0, 0, 0, 0, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
@@ -1474,7 +1452,7 @@
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 15, 1151, 0,
+ 90, 91, 92, 93, 94, 95, 96, 15, 1152, 0,
0, 0, 0, 17, 192, 0, 0, 0, 0, 0,
0, 0, 0, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
@@ -1508,233 +1486,211 @@
static const yytype_int16 yycheck[] =
{
- 4, 170, 438, 135, 8, 9, 348, 12, 13, 680,
- 14, 447, 454, 454, 445, 8, 567, 443, 715, 716,
- 446, 452, 8, 166, 167, 8, 452, 453, 454, 455,
- 581, 31, 100, 443, 17, 445, 446, 100, 23, 449,
- 8, 451, 452, 453, 454, 455, 456, 5, 5, 7,
- 7, 30, 5, 8, 7, 452, 453, 467, 11, 8,
- 443, 0, 445, 446, 299, 675, 445, 67, 17, 452,
- 453, 454, 8, 452, 8, 8, 55, 444, 8, 446,
- 43, 44, 12, 450, 467, 445, 446, 454, 455, 449,
- 450, 451, 452, 453, 454, 455, 456, 82, 77, 78,
- 104, 101, 106, 713, 339, 99, 92, 467, 1134, 95,
- 103, 94, 1138, 31, 118, 119, 120, 121, 122, 446,
- 88, 20, 101, 450, 100, 93, 102, 454, 455, 456,
- 22, 300, 31, 88, 100, 139, 102, 446, 93, 31,
- 309, 450, 100, 23, 102, 454, 455, 456, 101, 67,
- 42, 85, 88, 87, 851, 88, 90, 93, 162, 163,
- 93, 70, 294, 168, 101, 169, 170, 171, 67, 100,
- 5, 102, 7, 177, 73, 67, 11, 181, 182, 183,
- 184, 73, 136, 101, 8, 5, 100, 7, 102, 193,
- 100, 11, 16, 17, 18, 199, 339, 340, 5, 5,
- 7, 7, 101, 207, 8, 11, 31, 28, 99, 101,
- 31, 8, 37, 17, 18, 27, 100, 14, 30, 31,
+ 4, 12, 13, 438, 8, 9, 348, 676, 681, 135,
+ 14, 8, 447, 23, 454, 445, 299, 170, 716, 717,
+ 8, 0, 452, 453, 100, 443, 567, 445, 446, 100,
+ 5, 449, 7, 451, 452, 453, 454, 455, 456, 452,
+ 453, 582, 5, 443, 7, 714, 446, 454, 11, 467,
+ 8, 445, 452, 453, 454, 455, 339, 8, 452, 17,
+ 8, 8, 99, 8, 5, 443, 7, 445, 446, 8,
+ 11, 444, 82, 446, 452, 453, 454, 450, 17, 18,
+ 446, 454, 455, 23, 450, 31, 445, 446, 454, 467,
+ 449, 450, 451, 452, 453, 454, 455, 456, 103, 104,
+ 104, 446, 106, 8, 92, 450, 103, 95, 467, 454,
+ 455, 456, 17, 70, 118, 119, 120, 121, 122, 8,
+ 5, 67, 7, 64, 446, 100, 11, 102, 450, 5,
+ 22, 7, 454, 455, 456, 139, 94, 88, 101, 31,
+ 88, 88, 93, 88, 30, 93, 93, 300, 93, 8,
+ 42, 103, 104, 12, 852, 101, 309, 168, 162, 163,
+ 20, 43, 44, 30, 31, 169, 170, 171, 294, 55,
+ 101, 31, 132, 177, 134, 67, 136, 181, 182, 183,
+ 184, 73, 5, 31, 7, 33, 34, 8, 11, 193,
+ 1135, 77, 78, 14, 1139, 199, 85, 84, 87, 86,
+ 67, 90, 89, 207, 91, 99, 73, 67, 75, 101,
+ 170, 78, 100, 73, 102, 101, 100, 166, 167, 67,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 56, 59, 51,
- 52, 53, 67, 55, 64, 64, 67, 54, 83, 203,
- 204, 205, 206, 65, 100, 67, 102, 31, 100, 33,
- 34, 446, 266, 82, 11, 450, 84, 74, 86, 454,
- 100, 89, 102, 91, 279, 101, 281, 282, 283, 101,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 101,
- 295, 100, 296, 67, 298, 438, 300, 301, 103, 442,
+ 234, 235, 236, 237, 238, 239, 240, 31, 100, 33,
+ 34, 101, 100, 203, 204, 205, 206, 8, 101, 97,
+ 31, 100, 5, 101, 7, 16, 17, 18, 103, 22,
+ 83, 24, 266, 31, 100, 100, 4, 102, 279, 32,
+ 281, 282, 283, 67, 285, 286, 287, 288, 289, 290,
+ 291, 292, 293, 64, 295, 100, 67, 11, 26, 27,
+ 71, 29, 296, 31, 298, 100, 300, 301, 61, 67,
+ 100, 54, 40, 71, 42, 21, 69, 101, 101, 47,
+ 48, 5, 50, 7, 8, 31, 101, 55, 31, 75,
+ 101, 74, 27, 101, 37, 30, 42, 65, 5, 67,
+ 7, 8, 31, 101, 338, 73, 101, 341, 76, 101,
+ 300, 79, 101, 81, 31, 349, 51, 52, 53, 309,
+ 354, 67, 68, 101, 67, 42, 101, 73, 96, 136,
+ 98, 365, 366, 101, 31, 81, 370, 4, 67, 100,
+ 75, 102, 100, 78, 102, 42, 100, 100, 102, 1052,
+ 67, 100, 100, 102, 21, 101, 73, 4, 112, 26,
+ 339, 340, 29, 80, 100, 971, 101, 973, 35, 36,
+ 67, 38, 101, 40, 41, 100, 73, 102, 31, 26,
+ 47, 48, 29, 50, 101, 101, 420, 141, 142, 42,
+ 57, 145, 31, 40, 33, 34, 203, 204, 205, 206,
+ 47, 48, 973, 50, 101, 72, 160, 101, 55, 76,
+ 63, 101, 79, 31, 67, 33, 34, 988, 56, 28,
+ 73, 175, 31, 457, 458, 459, 64, 101, 67, 76,
+ 24, 98, 79, 32, 101, 100, 104, 102, 472, 473,
+ 474, 475, 476, 477, 82, 100, 103, 102, 101, 67,
+ 59, 98, 101, 487, 488, 100, 14, 102, 67, 438,
+ 214, 103, 101, 442, 443, 444, 445, 446, 447, 448,
+ 449, 450, 451, 452, 453, 454, 455, 456, 926, 971,
+ 972, 951, 516, 101, 5, 445, 446, 241, 467, 105,
+ 85, 951, 452, 453, 454, 100, 530, 102, 100, 106,
+ 102, 971, 536, 973, 100, 688, 102, 261, 108, 263,
+ 264, 971, 972, 973, 951, 918, 919, 889, 926, 553,
+ 676, 951, 100, 926, 102, 100, 107, 102, 971, 972,
+ 973, 100, 103, 102, 971, 14, 973, 926, 572, 573,
+ 574, 971, 972, 918, 919, 117, 103, 950, 302, 103,
+ 127, 4, 306, 180, 138, 589, 590, 167, 714, 313,
+ 340, 421, 8, 9, 4, 319, 918, 919, 21, 100,
+ 100, 102, 102, 26, 725, 100, 29, 102, 190, 333,
+ 334, 920, 35, 36, 1098, 38, 26, 40, 41, 29,
+ 100, 31, 102, 1061, 47, 48, 1148, 50, 632, 1148,
+ 634, 635, 42, 100, 57, 102, 445, 47, 48, 445,
+ 50, 652, 653, 445, 100, 369, 102, 445, 445, 72,
+ 39, 922, 100, 76, 102, 445, 79, 67, 669, 100,
+ 49, 102, 100, 73, 102, 31, 445, 367, 628, 79,
+ 630, 81, 828, 62, 40, 98, 42, 66, 101, 45,
+ 100, 100, 102, 102, 891, 645, 75, 647, 98, 649,
+ 971, 101, 973, 100, 60, 102, 27, 701, 702, 1063,
+ 31, 67, 662, 1064, 120, 121, 122, 73, 951, 888,
+ 76, 42, 100, 454, 102, 1150, 1151, 134, 135, 136,
+ 51, 932, 284, 139, 55, 100, 853, 102, 688, 689,
+ 1107, 1146, 1150, 1151, 887, 101, 67, 1109, 1134, 1218,
+ 1182, 193, 73, 300, -1, 132, 162, 163, -1, -1,
+ 81, -1, -1, -1, -1, -1, 716, 717, -1, -1,
+ -1, -1, -1, -1, -1, 181, 182, 183, 184, -1,
+ 101, -1, -1, -1, -1, 27, -1, 781, 30, -1,
+ -1, -1, -1, -1, -1, -1, 203, 204, 205, 206,
+ -1, 207, -1, -1, -1, -1, 800, 801, 802, 51,
+ 52, 53, -1, 55, -1, 222, -1, -1, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 77, 78, 831, 832, 833,
+ 834, 835, -1, -1, 838, -1, 840, -1, 842, 843,
+ 844, -1, -1, 156, 848, -1, 159, -1, 161, 101,
+ -1, 628, -1, 630, 858, -1, 860, 861, 862, -1,
+ 864, 865, -1, 280, -1, -1, -1, 284, 645, -1,
+ 647, -1, 649, -1, -1, 4, -1, 294, -1, -1,
+ -1, -1, -1, -1, 888, 662, -1, -1, -1, -1,
+ -1, -1, 852, 617, 618, -1, -1, 26, -1, -1,
+ 29, -1, 31, -1, -1, 218, 219, 220, 221, -1,
+ -1, 40, -1, 42, -1, -1, -1, -1, 47, 48,
+ -1, 50, -1, 927, 1077, -1, 55, 887, 932, -1,
+ -1, -1, -1, -1, -1, 939, 940, -1, 67, -1,
+ -1, -1, -1, -1, 73, -1, -1, 76, 952, 953,
+ 79, -1, -1, -1, 370, -1, 1109, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
+ -1, -1, 101, -1, -1, -1, 925, 926, -1, -1,
+ 984, 985, 986, 987, 708, 709, 710, -1, -1, 993,
+ -1, 995, -1, -1, 998, 999, -1, -1, -1, -1,
+ 1153, 950, 951, -1, 421, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 745, 746, 747, 748, -1, 750, -1, -1, -1,
+ -1, -1, -1, 166, 167, -1, 760, -1, -1, 763,
+ -1, 457, 458, 459, 768, 769, 770, -1, -1, 1060,
+ 1010, 1011, -1, -1, -1, -1, 472, 473, 474, 475,
+ 476, 477, -1, -1, -1, 1218, 1070, 1071, -1, -1,
+ 1223, 487, 488, -1, 1227, -1, -1, -1, 4, 1083,
+ 1084, -1, -1, -1, 808, -1, -1, 811, -1, -1,
+ -1, 815, 816, 1053, 1054, 1055, 820, 821, 1058, 25,
+ 516, 27, -1, 29, 30, 31, 27, 1111, -1, 30,
+ 31, -1, -1, -1, 530, -1, 42, 1077, -1, -1,
+ 536, 47, 48, -1, 50, 51, -1, -1, 441, -1,
+ 51, 52, 53, -1, 55, 27, -1, 553, 30, 31,
+ -1, 67, -1, -1, 65, -1, 67, 73, -1, 1109,
+ 42, -1, 1156, -1, -1, 81, 572, 573, 574, 51,
+ 1164, -1, -1, 55, -1, -1, -1, 1171, -1, -1,
+ -1, -1, 98, 589, 590, 67, -1, -1, -1, -1,
+ 101, 73, -1, 75, -1, -1, 78, -1, -1, 81,
+ -1, -1, -1, 1153, -1, -1, 1200, -1, 1202, 1148,
+ -1, 1150, 1151, -1, -1, -1, 339, 340, -1, -1,
+ -1, 628, 629, 630, -1, -1, 632, -1, 634, 635,
+ 1180, -1, -1, -1, -1, -1, -1, -1, 645, -1,
+ 647, -1, 649, 1010, 1011, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 662, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 1218, 676,
+ -1, -1, -1, 1223, 681, 682, 683, 1227, -1, -1,
+ -1, 688, 689, -1, -1, -1, 1053, 1054, 1055, -1,
+ -1, 1058, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1014, 1015, -1, -1, -1, -1, -1, 714, -1, 716,
+ 717, -1, -1, -1, 721, 438, 723, -1, 725, 442,
443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 27, 100, 31, 5, 31, 7,
- 8, 39, 100, 97, 467, 100, 970, 101, 972, 42,
- 5, 49, 7, 8, 338, 31, 100, 341, 51, 100,
- 31, 102, 55, 101, 62, 349, 42, 4, 66, 64,
- 354, 42, 67, 100, 67, 102, 71, 75, 103, 104,
- 73, 365, 366, 75, 21, 112, 370, 63, 81, 26,
- 101, 67, 29, 100, 100, 102, 67, 73, 35, 36,
- 1051, 38, 73, 40, 41, 101, 101, 4, 101, 80,
- 47, 48, 101, 50, 141, 142, 31, 100, 145, 102,
- 57, 100, 100, 102, 102, 101, 101, 42, 25, 26,
- 101, 101, 29, 160, 31, 72, 420, 101, 100, 76,
- 102, 972, 79, 100, 100, 42, 102, 100, 175, 102,
- 47, 48, 67, 50, 100, 100, 987, 102, 73, 101,
- 31, 98, 33, 34, 101, 100, 100, 102, 102, 100,
- 67, 102, 101, 457, 458, 459, 73, 31, 101, 33,
- 34, 100, 79, 102, 81, 101, 101, 214, 472, 473,
- 474, 475, 476, 477, 27, 32, 67, 30, 100, 96,
- 102, 98, 24, 487, 488, 101, 100, 31, 102, 33,
- 34, 103, 104, 67, 241, 445, 446, 103, 51, 52,
- 53, 14, 452, 453, 454, 8, 9, 103, 950, 950,
- 101, 100, 516, 102, 261, 925, 263, 264, 687, 950,
- 970, 971, 75, 67, 950, 78, 530, 101, 970, 970,
- 972, 972, 536, 132, 100, 134, 102, 136, 5, 970,
- 971, 972, 925, 675, 970, 971, 888, 105, 101, 553,
- 917, 918, 100, 104, 102, 302, 31, 101, 925, 306,
- 100, 100, 102, 102, 85, 925, 313, 103, 572, 573,
- 574, 170, 319, 970, 971, 972, 100, 100, 102, 102,
- 106, 713, 949, 108, 588, 589, 333, 334, 107, 4,
- 917, 918, 67, 14, 30, 31, 71, 103, 103, 134,
- 135, 136, 117, 180, 203, 204, 205, 206, 917, 918,
- 127, 26, 166, 167, 29, 340, 138, 120, 121, 122,
- 167, 100, 369, 102, 724, 40, 101, 631, 421, 633,
- 634, 67, 47, 48, 190, 50, 139, 73, 919, 75,
- 55, 970, 78, 972, 1097, 1060, 651, 652, 1147, 1147,
- 445, 445, 22, 445, 24, 445, 445, 445, 445, 162,
- 163, 76, 32, 668, 79, 367, 921, 827, 203, 204,
- 205, 206, 890, 627, 1062, 629, 1063, 950, 181, 182,
- 183, 184, 454, 98, 887, 931, 284, 222, 852, 1106,
- 644, 61, 646, 1145, 648, 1108, 700, 701, 1133, 69,
- 1217, 300, 1181, 193, 207, 300, 132, 661, -1, -1,
- 309, -1, -1, 1149, 1150, -1, -1, 886, -1, -1,
- -1, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, -1, 1149,
- 1150, 21, -1, -1, -1, 280, -1, -1, 4, 284,
- -1, 31, -1, -1, -1, -1, -1, -1, -1, 294,
- -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
- 26, -1, -1, 29, 27, 31, 780, 30, -1, -1,
- -1, 924, 925, -1, 40, 339, 340, 67, 68, -1,
- -1, 47, 48, 73, 50, 799, 800, 801, 51, 52,
- 53, 81, 55, -1, -1, 31, 949, 950, -1, -1,
- -1, 67, -1, -1, 40, -1, 42, 73, -1, 45,
- 76, 101, -1, 79, 77, 78, 830, 831, 832, 833,
- 834, -1, -1, 837, 60, 839, -1, 841, 842, 843,
- 96, 67, 98, 847, -1, 101, -1, 73, 101, -1,
- 76, -1, -1, 857, -1, 859, 860, 861, -1, 863,
- 864, -1, -1, -1, -1, -1, -1, 370, -1, 616,
- 617, -1, -1, -1, -1, 101, -1, -1, -1, -1,
- -1, -1, -1, 887, 438, -1, 421, -1, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
- 454, 455, 456, -1, -1, 1177, 1178, 1076, -1, -1,
- -1, -1, -1, 467, -1, -1, -1, -1, -1, -1,
- -1, -1, 926, -1, 1196, -1, -1, 931, -1, -1,
- -1, 1203, -1, 1205, 938, 939, 1208, 1209, -1, 1108,
- -1, 1213, -1, -1, -1, -1, 1218, 951, 952, -1,
- 1222, -1, -1, 1225, 457, 458, 459, -1, -1, -1,
- 707, 708, 709, 27, -1, -1, 30, 31, -1, 472,
- 473, 474, 475, 476, 477, -1, -1, -1, 42, 983,
- 984, 985, 986, 1152, 487, 488, -1, 51, 992, -1,
- 994, 55, -1, 997, 998, -1, -1, 744, 745, 746,
- 747, -1, 749, 67, 1147, -1, 1149, 1150, -1, 73,
- -1, 75, 759, 516, 78, 762, -1, 81, -1, -1,
- 767, 768, 769, -1, -1, -1, -1, 530, 627, -1,
- 629, -1, -1, 536, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 644, -1, 646, 1217, 648,
- 553, -1, -1, 1222, 1059, 1009, 1010, 1226, -1, -1,
- 807, -1, 661, 810, -1, 1069, 1070, 814, 815, 572,
- 573, 574, 819, 820, -1, -1, -1, -1, 1082, 1083,
- -1, -1, -1, -1, -1, 588, 589, -1, 687, 688,
- -1, -1, 627, 628, 629, -1, -1, -1, 1052, 1053,
- 1054, -1, -1, 1057, -1, -1, 1110, 156, -1, 644,
- 159, 646, 161, 648, -1, -1, 715, 716, -1, -1,
- -1, -1, -1, -1, -1, -1, 661, -1, 631, -1,
- 633, 634, -1, -1, -1, -1, -1, -1, -1, -1,
- 675, -1, -1, -1, -1, 680, 681, 682, -1, -1,
- -1, 1155, 687, 688, -1, -1, -1, -1, -1, 1163,
- -1, -1, -1, -1, -1, -1, 1170, -1, -1, 218,
- 219, 220, 221, -1, -1, -1, 4, -1, 713, -1,
- 715, 716, -1, -1, -1, 720, 4, 722, -1, 724,
- -1, -1, -1, -1, -1, 1199, -1, 1201, 26, 27,
- -1, 29, -1, 31, -1, -1, -1, -1, 26, -1,
- -1, 29, 40, 31, 42, -1, -1, -1, -1, 47,
- 48, -1, 50, -1, 42, 1179, -1, 55, -1, 47,
- 48, -1, 50, -1, -1, -1, -1, 65, -1, 67,
- -1, -1, -1, -1, -1, 73, -1, -1, 76, 67,
- -1, 79, 851, 81, -1, 73, -1, -1, -1, 4,
- -1, 79, -1, 81, -1, -1, 1013, 1014, 96, -1,
- 98, -1, -1, 101, -1, -1, 21, 780, -1, -1,
- 98, 26, 4, 101, 29, -1, -1, 886, -1, -1,
- 35, 36, -1, 38, -1, 40, 41, -1, -1, -1,
- 1047, 1048, 47, 48, 26, 50, -1, 29, -1, 31,
- -1, -1, 57, -1, -1, -1, -1, -1, 40, -1,
- 42, -1, -1, -1, -1, 47, 48, 72, 50, -1,
- -1, 76, -1, 55, 79, -1, -1, -1, -1, -1,
- 1087, -1, -1, -1, 847, 67, -1, -1, -1, -1,
- -1, 73, -1, 98, 76, -1, 101, 79, -1, -1,
- -1, -1, 4, -1, -1, -1, -1, -1, -1, -1,
- 924, 925, -1, -1, -1, -1, 98, -1, -1, 101,
- -1, -1, -1, 25, 887, 27, -1, 29, 30, 31,
- -1, -1, 441, -1, -1, 949, 950, -1, -1, -1,
- 42, -1, -1, -1, -1, 47, 48, -1, 50, 51,
- 1009, 1010, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 926, -1, 67, -1, -1, 931, -1,
- -1, 73, -1, 968, -1, 938, 939, -1, -1, 81,
- -1, -1, -1, 1190, -1, 980, 981, 1194, 951, 952,
- -1, -1, -1, 1052, 1053, 1054, 98, -1, 1057, -1,
+ 453, 454, 455, 456, 1048, 1049, 4, -1, -1, -1,
+ -1, -1, -1, -1, 467, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 26, -1,
+ -1, 29, -1, 31, -1, -1, -1, -1, -1, -1,
+ -1, -1, 40, -1, 1088, 781, -1, -1, -1, 47,
+ 48, -1, 50, -1, -1, -1, -1, -1, -1, 108,
+ -1, -1, -1, 4, -1, -1, -1, -1, -1, 67,
+ -1, -1, -1, -1, 707, 73, -1, -1, 76, 712,
+ 713, 79, -1, 1180, 25, 26, -1, -1, 29, 722,
+ 31, -1, -1, -1, -1, -1, -1, -1, 96, -1,
+ 98, 42, -1, 101, 737, -1, 47, 48, -1, 50,
+ -1, -1, 848, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 755, 172, 173, -1, 67, -1, -1, 762,
+ -1, -1, 73, 766, -1, -1, -1, -1, 79, 772,
+ 81, 1178, 1179, 776, -1, -1, 779, 1191, -1, -1,
+ -1, 1195, 888, -1, -1, 96, -1, 98, -1, 208,
+ 1197, -1, -1, -1, -1, -1, 215, 1204, -1, 1206,
+ -1, -1, 1209, 1210, -1, -1, -1, 1214, -1, -1,
+ -1, -1, 1219, -1, -1, -1, 1223, -1, -1, 1226,
+ -1, 927, -1, 242, -1, -1, 932, -1, -1, -1,
+ 833, -1, -1, 939, 940, -1, -1, -1, -1, -1,
+ -1, -1, -1, 262, -1, 848, 952, 953, -1, 268,
+ 269, -1, 271, -1, -1, -1, -1, -1, -1, -1,
+ 863, -1, 969, 866, -1, -1, -1, 870, -1, -1,
+ -1, -1, -1, -1, 981, 982, -1, -1, 984, 985,
+ 986, 987, 27, -1, -1, 30, 31, 993, -1, 995,
+ -1, -1, 998, 999, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, 1010, 1011, -1, -1, 52, 53, -1,
+ 55, -1, -1, 58, -1, -1, -1, -1, -1, -1,
+ -1, -1, 67, 342, -1, -1, -1, -1, 73, 932,
+ 75, -1, -1, 78, -1, -1, 81, -1, -1, -1,
+ -1, -1, -1, -1, 363, 1052, 1053, 1054, 1055, -1,
+ -1, 1058, 371, -1, -1, -1, 1063, 1064, -1, -1,
+ -1, -1, 381, -1, -1, 384, -1, 386, -1, -1,
+ 389, -1, -1, 392, -1, -1, 395, 396, -1, -1,
+ 399, -1, -1, 402, 4, -1, 405, 406, 407, 408,
+ -1, -1, 411, -1, -1, -1, 415, -1, -1, -1,
+ 419, -1, -1, -1, -1, -1, 26, 27, -1, 29,
+ -1, 31, -1, -1, 1017, -1, -1, -1, -1, -1,
+ 40, -1, 42, -1, -1, -1, 46, 47, 48, -1,
+ 50, -1, 52, 53, -1, 55, -1, -1, 58, -1,
+ -1, -1, 1045, -1, -1, -1, -1, 67, 1051, -1,
+ 1156, -1, -1, 73, -1, -1, 76, 77, 1164, 79,
+ -1, 81, -1, 1066, 1067, 1171, -1, -1, -1, -1,
+ -1, -1, -1, 1180, 1181, 1182, 96, -1, 98, -1,
+ -1, -1, -1, -1, 1087, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 1102,
+ 1103, -1, 925, 926, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1009, 1010, -1, 1076, -1, -1,
- 983, 984, 985, 986, -1, -1, -1, -1, -1, 992,
- -1, 994, -1, -1, 997, 998, -1, -1, 4, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 1108,
- -1, -1, -1, -1, -1, -1, 1051, 1052, 1053, 1054,
- 26, 27, 1057, 29, -1, 31, -1, 1062, 1063, -1,
- -1, -1, -1, -1, 40, -1, 42, -1, -1, -1,
- 46, 47, 48, -1, 50, -1, 52, 53, -1, 55,
- -1, 27, 58, 1152, -1, 31, -1, -1, -1, -1,
- -1, 67, -1, -1, -1, -1, 42, 73, -1, -1,
- 76, 77, -1, 79, -1, 81, 52, 53, -1, 55,
- 1179, -1, 58, -1, -1, -1, -1, -1, -1, -1,
- 96, 67, 98, 1147, -1, 1149, 1150, 73, -1, 75,
- 108, -1, 78, -1, -1, 81, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 1217, -1,
- -1, -1, -1, 1222, -1, -1, -1, 1226, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1179, 1180, 1181, -1, -1, -1,
- -1, -1, 1155, -1, -1, -1, -1, 706, -1, -1,
- 1163, -1, 711, 712, 172, 173, -1, 1170, -1, -1,
- -1, -1, 721, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 736, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 208, -1, -1, -1, -1, 754, -1, 215, -1, -1,
- -1, -1, 761, -1, -1, -1, 765, -1, -1, -1,
- -1, -1, 771, -1, -1, -1, 775, -1, -1, 778,
- -1, -1, -1, -1, 242, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 262, -1, -1, -1, -1, -1,
- 268, 269, -1, 271, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 832, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 847, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 862, -1, -1, 865, -1, -1, -1,
- 869, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 342, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 363, -1, -1, -1, -1,
- -1, -1, -1, 371, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 381, -1, -1, 384, -1, 386, -1,
- -1, 389, 931, -1, 392, -1, -1, 395, 396, -1,
- -1, 399, -1, -1, 402, -1, -1, 405, 406, 407,
- 408, -1, -1, 411, -1, -1, -1, 415, -1, -1,
- -1, 419, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 950, 951, -1,
+ 549, 550, 551, 552, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 1016, -1, -1,
+ -1, -1, 1185, -1, -1, -1, -1, 1190, -1, -1,
+ -1, 1194, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 633, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 1044, -1, -1, -1, -1,
- -1, 1050, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1065, 1066, -1, -1,
+ -1, 650, 651, -1, -1, 654, 655, -1, 657, 658,
+ -1, 660, 661, -1, 663, 664, 665, 666, 667, 668,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 1086, -1, -1,
- -1, 549, 550, 551, 552, -1, -1, -1, -1, -1,
- -1, -1, 1101, 1102, -1, -1, -1, -1, -1, -1,
+ 679, 680, -1, -1, -1, -1, -1, 686, 687, -1,
+ -1, 690, 691, 692, -1, 694, 695, 696, 697, 698,
+ 699, 700, -1, -1, 703, 704, 705, 706, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 718,
+ 719, 720, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 632, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 1184, -1, -1, -1, -1,
- 1189, 649, 650, -1, 1193, 653, 654, -1, 656, 657,
- -1, 659, 660, -1, 662, 663, 664, 665, 666, 667,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 678, 679, -1, -1, -1, -1, -1, 685, 686, -1,
- -1, 689, 690, 691, -1, 693, 694, 695, 696, 697,
- 698, 699, -1, -1, 702, 703, 704, 705, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 717,
- 718, 719, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 755, -1, 4,
+ -1, -1, -1, -1, -1, 1148, -1, 1150, 1151, -1,
+ -1, -1, -1, -1, -1, -1, -1, 756, -1, 4,
-1, -1, -1, 8, 9, 10, 11, 12, -1, -1,
- -1, 16, 17, 18, 772, 20, 21, 22, 23, 24,
+ -1, 16, 17, 18, 773, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
@@ -1742,34 +1698,34 @@
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, -1, 853, 854, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 866, -1,
- -1, -1, 870, -1, -1, 873, -1, -1, -1, 877,
- -1, 879, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 891, -1, -1, 894, 895, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 906, -1,
- -1, 909, -1, -1, 912, -1, -1, -1, -1, -1,
+ 95, 96, 97, 98, -1, 854, 855, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 867, -1,
+ -1, -1, 871, -1, -1, 874, -1, -1, -1, 878,
+ -1, 880, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 892, -1, -1, 895, 896, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 907, -1,
+ -1, 910, -1, -1, 913, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 974, 975, 976, -1,
- 978, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 991, -1, 993, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 975, 976, 977, -1,
+ 979, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 992, -1, 994, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 1008, -1, -1, 1011, 1012, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 1024, -1, -1, -1,
- -1, 1029, -1, -1, 1032, -1, -1, -1, -1, -1,
+ 1009, -1, -1, 1012, 1013, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1025, -1, -1, -1,
+ -1, 1030, -1, -1, 1033, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 1055, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1056, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 1111, -1, 1113, 1114, -1, 1116, 1117,
- -1, -1, 1120, -1, -1, 1123, 1124, 4, 1126, -1,
+ -1, -1, -1, 1112, -1, 1114, 1115, -1, 1117, 1118,
+ -1, -1, 1121, -1, -1, 1124, 1125, 4, 1127, -1,
-1, 8, 9, 10, 11, 12, -1, -1, -1, 16,
17, 18, -1, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
@@ -1920,71 +1876,71 @@
229, 233, 318, 22, 101, 143, 144, 165, 173, 178,
143, 144, 165, 173, 227, 228, 246, 249, 367, 372,
377, 388, 52, 53, 58, 143, 144, 165, 173, 227,
- 254, 257, 367, 372, 382, 384, 386, 388, 46, 77,
- 143, 144, 165, 173, 179, 229, 233, 262, 318, 367,
- 372, 382, 384, 386, 388, 391, 394, 101, 143, 144,
- 165, 173, 179, 229, 233, 388, 45, 60, 101, 143,
- 144, 165, 173, 179, 229, 328, 336, 445, 445, 445,
- 101, 75, 182, 21, 68, 101, 143, 144, 165, 173,
- 300, 305, 367, 445, 445, 445, 445, 445, 445, 291,
- 292, 445, 445, 314, 316, 101, 315, 313, 101, 276,
- 275, 445, 242, 240, 243, 241, 238, 239, 445, 445,
- 101, 433, 433, 433, 433, 445, 101, 182, 248, 251,
- 445, 445, 445, 101, 182, 256, 259, 445, 445, 266,
- 267, 269, 101, 268, 264, 265, 344, 345, 346, 343,
- 444, 444, 324, 325, 326, 327, 447, 85, 87, 90,
- 111, 168, 447, 445, 433, 445, 445, 298, 299, 297,
- 373, 447, 378, 447, 166, 447, 433, 433, 429, 429,
- 433, 433, 433, 433, 433, 433, 447, 433, 433, 433,
- 433, 433, 433, 429, 84, 86, 89, 91, 352, 353,
- 354, 355, 359, 363, 431, 250, 433, 433, 17, 94,
- 111, 385, 424, 18, 111, 383, 424, 425, 92, 95,
- 111, 387, 258, 433, 433, 111, 395, 430, 111, 392,
- 403, 430, 433, 433, 433, 433, 433, 433, 433, 433,
- 433, 433, 329, 337, 433, 433, 433, 433, 432, 444,
- 444, 444, 432, 432, 431, 111, 308, 403, 111, 303,
- 403, 433, 433, 433, 88, 93, 111, 375, 432, 88,
- 93, 111, 380, 389, 168, 368, 280, 319, 432, 160,
- 444, 444, 444, 444, 444, 432, 433, 444, 432, 444,
- 432, 444, 444, 444, 432, 433, 432, 396, 432, 393,
- 432, 445, 404, 100, 100, 183, 306, 444, 301, 444,
- 444, 444, 374, 444, 444, 379, 100, 102, 390, 167,
- 100, 102, 369, 100, 102, 281, 322, 100, 102, 161,
- 356, 360, 432, 364, 397, 432, 445, 403, 402, 433,
- 433, 100, 102, 186, 100, 100, 102, 302, 432, 432,
- 433, 432, 433, 433, 433, 433, 100, 102, 357, 100,
- 102, 361, 100, 102, 365, 430, 393, 331, 331, 187,
- 433, 433, 433, 196, 370, 282, 83, 162, 433, 433,
- 433, 398, 179, 229, 233, 330, 388, 338, 61, 69,
- 178, 188, 189, 202, 203, 213, 214, 216, 217, 312,
- 304, 33, 34, 101, 143, 144, 225, 226, 101, 143,
- 144, 101, 143, 144, 165, 173, 233, 367, 445, 101,
- 358, 362, 366, 397, 333, 334, 335, 101, 332, 101,
- 445, 445, 101, 39, 49, 62, 66, 190, 191, 193,
- 197, 211, 32, 205, 24, 219, 307, 27, 51, 101,
- 143, 144, 228, 371, 376, 381, 382, 384, 388, 445,
- 445, 284, 283, 88, 93, 111, 163, 101, 227, 228,
- 371, 376, 382, 384, 388, 391, 101, 227, 228, 388,
- 391, 101, 182, 227, 228, 371, 376, 382, 384, 433,
- 433, 433, 433, 111, 405, 406, 407, 88, 93, 111,
- 215, 445, 445, 445, 445, 182, 433, 445, 433, 445,
- 218, 101, 445, 445, 433, 447, 447, 433, 433, 444,
- 444, 432, 433, 433, 433, 432, 103, 408, 409, 14,
- 411, 412, 444, 444, 432, 111, 192, 424, 194, 447,
- 198, 447, 399, 447, 433, 206, 447, 204, 220, 429,
- 219, 375, 380, 432, 432, 430, 410, 103, 413, 432,
- 444, 100, 102, 195, 100, 102, 199, 100, 102, 212,
- 100, 102, 207, 205, 100, 102, 221, 432, 432, 416,
- 408, 412, 414, 430, 433, 433, 433, 433, 433, 433,
- 433, 433, 433, 104, 415, 416, 196, 200, 196, 208,
- 222, 5, 446, 409, 101, 97, 101, 143, 144, 201,
- 225, 226, 101, 80, 101, 143, 144, 164, 173, 209,
- 63, 101, 143, 144, 164, 173, 223, 417, 430, 445,
- 445, 445, 446, 446, 447, 16, 17, 18, 111, 210,
- 426, 427, 111, 224, 425, 105, 106, 432, 432, 444,
- 432, 444, 446, 85, 418, 423, 446, 446, 107, 103,
- 446, 446, 108, 14, 419, 420, 446, 421, 103, 420,
- 430, 446, 422, 430, 446, 103, 446, 430
+ 228, 254, 257, 367, 372, 382, 384, 386, 388, 46,
+ 77, 143, 144, 165, 173, 179, 229, 233, 262, 318,
+ 367, 372, 382, 384, 386, 388, 391, 394, 101, 143,
+ 144, 165, 173, 179, 229, 233, 388, 45, 60, 101,
+ 143, 144, 165, 173, 179, 229, 328, 336, 445, 445,
+ 445, 101, 75, 182, 21, 68, 101, 143, 144, 165,
+ 173, 300, 305, 367, 445, 445, 445, 445, 445, 445,
+ 291, 292, 445, 445, 314, 316, 101, 315, 313, 101,
+ 276, 275, 445, 242, 240, 243, 241, 238, 239, 445,
+ 445, 101, 433, 433, 433, 433, 445, 101, 182, 248,
+ 251, 445, 445, 445, 101, 182, 256, 259, 445, 445,
+ 266, 267, 269, 101, 268, 264, 265, 344, 345, 346,
+ 343, 444, 444, 324, 325, 326, 327, 447, 85, 87,
+ 90, 111, 168, 447, 445, 433, 445, 445, 298, 299,
+ 297, 373, 447, 378, 447, 166, 447, 433, 433, 429,
+ 429, 433, 433, 433, 433, 433, 433, 447, 433, 433,
+ 433, 433, 433, 433, 429, 84, 86, 89, 91, 352,
+ 353, 354, 355, 359, 363, 431, 250, 433, 433, 17,
+ 94, 111, 385, 424, 18, 111, 383, 424, 425, 92,
+ 95, 111, 387, 258, 433, 433, 111, 395, 430, 111,
+ 392, 403, 430, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 329, 337, 433, 433, 433, 433, 432,
+ 444, 444, 444, 432, 432, 431, 111, 308, 403, 111,
+ 303, 403, 433, 433, 433, 88, 93, 111, 375, 432,
+ 88, 93, 111, 380, 389, 168, 368, 280, 319, 432,
+ 160, 444, 444, 444, 444, 444, 432, 433, 444, 432,
+ 444, 432, 444, 444, 444, 432, 433, 432, 396, 432,
+ 393, 432, 445, 404, 100, 100, 183, 306, 444, 301,
+ 444, 444, 444, 374, 444, 444, 379, 100, 102, 390,
+ 167, 100, 102, 369, 100, 102, 281, 322, 100, 102,
+ 161, 356, 360, 432, 364, 397, 432, 445, 403, 402,
+ 433, 433, 100, 102, 186, 100, 100, 102, 302, 432,
+ 432, 433, 432, 433, 433, 433, 433, 100, 102, 357,
+ 100, 102, 361, 100, 102, 365, 430, 393, 331, 331,
+ 187, 433, 433, 433, 196, 370, 282, 83, 162, 433,
+ 433, 433, 398, 179, 229, 233, 330, 388, 338, 61,
+ 69, 178, 188, 189, 202, 203, 213, 214, 216, 217,
+ 312, 304, 33, 34, 101, 143, 144, 225, 226, 101,
+ 143, 144, 101, 143, 144, 165, 173, 233, 367, 445,
+ 101, 358, 362, 366, 397, 333, 334, 335, 101, 332,
+ 101, 445, 445, 101, 39, 49, 62, 66, 190, 191,
+ 193, 197, 211, 32, 205, 24, 219, 307, 27, 51,
+ 101, 143, 144, 228, 371, 376, 381, 382, 384, 388,
+ 445, 445, 284, 283, 88, 93, 111, 163, 101, 227,
+ 228, 371, 376, 382, 384, 388, 391, 101, 227, 228,
+ 388, 391, 101, 182, 227, 228, 371, 376, 382, 384,
+ 433, 433, 433, 433, 111, 405, 406, 407, 88, 93,
+ 111, 215, 445, 445, 445, 445, 182, 433, 445, 433,
+ 445, 218, 101, 445, 445, 433, 447, 447, 433, 433,
+ 444, 444, 432, 433, 433, 433, 432, 103, 408, 409,
+ 14, 411, 412, 444, 444, 432, 111, 192, 424, 194,
+ 447, 198, 447, 399, 447, 433, 206, 447, 204, 220,
+ 429, 219, 375, 380, 432, 432, 430, 410, 103, 413,
+ 432, 444, 100, 102, 195, 100, 102, 199, 100, 102,
+ 212, 100, 102, 207, 205, 100, 102, 221, 432, 432,
+ 416, 408, 412, 414, 430, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 104, 415, 416, 196, 200, 196,
+ 208, 222, 5, 446, 409, 101, 97, 101, 143, 144,
+ 201, 225, 226, 101, 80, 101, 143, 144, 164, 173,
+ 209, 63, 101, 143, 144, 164, 173, 223, 417, 430,
+ 445, 445, 445, 446, 446, 447, 16, 17, 18, 111,
+ 210, 426, 427, 111, 224, 425, 105, 106, 432, 432,
+ 444, 432, 444, 446, 85, 418, 423, 446, 446, 107,
+ 103, 446, 446, 108, 14, 419, 420, 446, 421, 103,
+ 420, 430, 446, 422, 430, 446, 103, 446, 430
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -2020,45 +1976,45 @@
245, 246, 244, 247, 248, 247, 247, 249, 250, 247,
247, 251, 247, 247, 247, 247, 247, 247, 247, 253,
254, 252, 255, 256, 255, 255, 257, 258, 255, 255,
- 259, 255, 255, 255, 255, 255, 255, 255, 255, 261,
- 262, 260, 263, 264, 263, 263, 265, 263, 263, 263,
- 263, 263, 263, 263, 263, 263, 263, 266, 263, 267,
- 263, 268, 263, 269, 263, 271, 270, 272, 273, 272,
- 274, 275, 274, 274, 274, 274, 274, 274, 274, 274,
- 276, 274, 277, 277, 278, 278, 278, 278, 278, 278,
- 280, 279, 281, 281, 282, 283, 282, 282, 282, 282,
- 282, 284, 282, 286, 285, 288, 287, 289, 289, 290,
- 291, 290, 290, 292, 290, 290, 290, 290, 290, 290,
- 294, 293, 295, 295, 296, 297, 296, 296, 296, 296,
- 296, 298, 296, 299, 296, 301, 300, 302, 302, 303,
- 303, 304, 304, 304, 304, 304, 304, 304, 304, 304,
- 304, 306, 307, 305, 308, 308, 310, 311, 309, 312,
- 313, 312, 312, 312, 312, 312, 314, 312, 315, 312,
- 316, 312, 317, 317, 319, 318, 321, 320, 322, 322,
- 323, 323, 323, 323, 323, 324, 323, 325, 323, 326,
- 323, 327, 323, 329, 330, 328, 331, 332, 331, 333,
- 331, 334, 331, 335, 331, 337, 338, 336, 340, 339,
- 341, 341, 342, 343, 342, 342, 342, 342, 342, 344,
- 342, 345, 342, 346, 342, 348, 349, 347, 350, 350,
- 350, 350, 351, 351, 352, 352, 353, 353, 353, 354,
- 356, 355, 357, 357, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 360, 359, 361, 361, 362, 362, 362,
- 362, 362, 364, 363, 365, 365, 366, 366, 366, 366,
- 366, 366, 366, 366, 368, 367, 369, 369, 370, 370,
- 370, 371, 373, 374, 372, 375, 375, 375, 376, 378,
- 379, 377, 380, 380, 380, 381, 382, 383, 383, 384,
- 385, 385, 385, 386, 387, 387, 387, 389, 388, 390,
- 390, 391, 392, 392, 393, 393, 394, 396, 395, 395,
- 398, 397, 397, 399, 400, 401, 402, 402, 404, 403,
- 406, 405, 407, 405, 405, 408, 409, 410, 410, 411,
- 412, 413, 413, 414, 415, 415, 416, 416, 417, 418,
- 419, 420, 421, 421, 422, 422, 423, 424, 425, 425,
- 426, 426, 427, 427, 428, 428, 429, 429, 430, 430,
- 431, 431, 431, 432, 432, 433, 433, 433, 435, 434,
- 436, 437, 437, 438, 438, 438, 439, 439, 440, 440,
- 441, 441, 442, 442, 443, 443, 444, 444, 445, 446,
- 446, 448, 447, 447, 449, 449, 449, 449, 449, 449,
- 449, 450, 450, 450, 450, 450, 450, 450, 450, 450,
+ 255, 259, 255, 255, 255, 255, 255, 255, 255, 255,
+ 261, 262, 260, 263, 264, 263, 263, 265, 263, 263,
+ 263, 263, 263, 263, 263, 263, 263, 263, 266, 263,
+ 267, 263, 268, 263, 269, 263, 271, 270, 272, 273,
+ 272, 274, 275, 274, 274, 274, 274, 274, 274, 274,
+ 274, 276, 274, 277, 277, 278, 278, 278, 278, 278,
+ 278, 280, 279, 281, 281, 282, 283, 282, 282, 282,
+ 282, 282, 284, 282, 286, 285, 288, 287, 289, 289,
+ 290, 291, 290, 290, 292, 290, 290, 290, 290, 290,
+ 290, 294, 293, 295, 295, 296, 297, 296, 296, 296,
+ 296, 296, 298, 296, 299, 296, 301, 300, 302, 302,
+ 303, 303, 304, 304, 304, 304, 304, 304, 304, 304,
+ 304, 304, 306, 307, 305, 308, 308, 310, 311, 309,
+ 312, 313, 312, 312, 312, 312, 312, 314, 312, 315,
+ 312, 316, 312, 317, 317, 319, 318, 321, 320, 322,
+ 322, 323, 323, 323, 323, 323, 324, 323, 325, 323,
+ 326, 323, 327, 323, 329, 330, 328, 331, 332, 331,
+ 333, 331, 334, 331, 335, 331, 337, 338, 336, 340,
+ 339, 341, 341, 342, 343, 342, 342, 342, 342, 342,
+ 344, 342, 345, 342, 346, 342, 348, 349, 347, 350,
+ 350, 350, 350, 351, 351, 352, 352, 353, 353, 353,
+ 354, 356, 355, 357, 357, 358, 358, 358, 358, 358,
+ 358, 358, 358, 358, 360, 359, 361, 361, 362, 362,
+ 362, 362, 362, 364, 363, 365, 365, 366, 366, 366,
+ 366, 366, 366, 366, 366, 368, 367, 369, 369, 370,
+ 370, 370, 371, 373, 374, 372, 375, 375, 375, 376,
+ 378, 379, 377, 380, 380, 380, 381, 382, 383, 383,
+ 384, 385, 385, 385, 386, 387, 387, 387, 389, 388,
+ 390, 390, 391, 392, 392, 393, 393, 394, 396, 395,
+ 395, 398, 397, 397, 399, 400, 401, 402, 402, 404,
+ 403, 406, 405, 407, 405, 405, 408, 409, 410, 410,
+ 411, 412, 413, 413, 414, 415, 415, 416, 416, 417,
+ 418, 419, 420, 421, 421, 422, 422, 423, 424, 425,
+ 425, 426, 426, 427, 427, 428, 428, 429, 429, 430,
+ 430, 431, 431, 431, 432, 432, 433, 433, 433, 435,
+ 434, 436, 437, 437, 438, 438, 438, 439, 439, 440,
+ 440, 441, 441, 442, 442, 443, 443, 444, 444, 445,
+ 446, 446, 448, 447, 447, 449, 449, 449, 449, 449,
+ 449, 449, 450, 450, 450, 450, 450, 450, 450, 450,
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
@@ -2066,7 +2022,7 @@
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
- 450, 450, 451, 452
+ 450, 450, 450, 451, 452
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -2102,44 +2058,44 @@
0, 0, 9, 0, 0, 4, 2, 0, 0, 5,
2, 0, 4, 2, 2, 2, 2, 2, 2, 0,
0, 9, 0, 0, 4, 2, 0, 0, 5, 2,
- 0, 4, 2, 2, 2, 2, 2, 2, 2, 0,
- 0, 9, 0, 0, 4, 2, 0, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 0, 4, 0,
- 4, 0, 4, 0, 4, 0, 5, 1, 0, 5,
- 0, 0, 4, 2, 2, 2, 2, 2, 2, 2,
- 0, 4, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 5, 1, 4, 0, 0, 4, 2, 2, 2,
- 2, 0, 4, 0, 5, 0, 5, 1, 4, 0,
- 0, 4, 2, 0, 4, 2, 2, 2, 2, 2,
- 0, 5, 1, 4, 0, 0, 4, 2, 2, 2,
- 2, 0, 4, 0, 4, 0, 5, 1, 4, 2,
- 1, 0, 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 0, 0, 9, 2, 1, 0, 0, 9, 0,
- 0, 4, 2, 2, 2, 2, 0, 4, 0, 4,
- 0, 4, 2, 1, 0, 5, 0, 5, 1, 4,
- 0, 2, 2, 2, 2, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 0, 8, 0, 0, 4, 0,
- 4, 0, 4, 0, 4, 0, 0, 8, 0, 5,
- 1, 4, 0, 0, 4, 2, 2, 2, 2, 0,
- 4, 0, 4, 0, 4, 0, 0, 9, 0, 2,
- 2, 4, 2, 1, 1, 2, 1, 1, 1, 3,
- 0, 4, 1, 4, 0, 2, 3, 2, 2, 2,
- 2, 2, 2, 0, 4, 1, 4, 0, 2, 3,
- 2, 2, 0, 4, 1, 4, 0, 3, 2, 2,
- 2, 2, 2, 2, 0, 5, 1, 4, 0, 2,
- 2, 4, 0, 0, 6, 2, 2, 1, 4, 0,
- 0, 6, 2, 2, 1, 4, 4, 2, 1, 4,
- 2, 2, 1, 4, 2, 2, 1, 0, 5, 1,
- 4, 3, 2, 2, 3, 1, 3, 0, 3, 2,
- 0, 4, 1, 1, 2, 2, 0, 2, 0, 3,
- 0, 2, 0, 2, 1, 3, 2, 0, 2, 3,
- 2, 0, 2, 2, 0, 2, 0, 6, 5, 5,
- 5, 4, 0, 2, 0, 5, 5, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
- 2, 2, 1, 2, 4, 0, 2, 2, 0, 4,
- 2, 0, 1, 0, 1, 3, 0, 5, 1, 4,
- 0, 3, 2, 5, 1, 1, 0, 2, 2, 0,
- 1, 0, 3, 1, 1, 1, 1, 1, 1, 1,
+ 2, 0, 4, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 9, 0, 0, 4, 2, 0, 4, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 0, 4,
+ 0, 4, 0, 4, 0, 4, 0, 5, 1, 0,
+ 5, 0, 0, 4, 2, 2, 2, 2, 2, 2,
+ 2, 0, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 5, 1, 4, 0, 0, 4, 2, 2,
+ 2, 2, 0, 4, 0, 5, 0, 5, 1, 4,
+ 0, 0, 4, 2, 0, 4, 2, 2, 2, 2,
+ 2, 0, 5, 1, 4, 0, 0, 4, 2, 2,
+ 2, 2, 0, 4, 0, 4, 0, 5, 1, 4,
+ 2, 1, 0, 3, 2, 2, 2, 2, 2, 2,
+ 2, 2, 0, 0, 9, 2, 1, 0, 0, 9,
+ 0, 0, 4, 2, 2, 2, 2, 0, 4, 0,
+ 4, 0, 4, 2, 1, 0, 5, 0, 5, 1,
+ 4, 0, 2, 2, 2, 2, 0, 4, 0, 4,
+ 0, 4, 0, 4, 0, 0, 8, 0, 0, 4,
+ 0, 4, 0, 4, 0, 4, 0, 0, 8, 0,
+ 5, 1, 4, 0, 0, 4, 2, 2, 2, 2,
+ 0, 4, 0, 4, 0, 4, 0, 0, 9, 0,
+ 2, 2, 4, 2, 1, 1, 2, 1, 1, 1,
+ 3, 0, 4, 1, 4, 0, 2, 3, 2, 2,
+ 2, 2, 2, 2, 0, 4, 1, 4, 0, 2,
+ 3, 2, 2, 0, 4, 1, 4, 0, 3, 2,
+ 2, 2, 2, 2, 2, 0, 5, 1, 4, 0,
+ 2, 2, 4, 0, 0, 6, 2, 2, 1, 4,
+ 0, 0, 6, 2, 2, 1, 4, 4, 2, 1,
+ 4, 2, 2, 1, 4, 2, 2, 1, 0, 5,
+ 1, 4, 3, 2, 2, 3, 1, 3, 0, 3,
+ 2, 0, 4, 1, 1, 2, 2, 0, 2, 0,
+ 3, 0, 2, 0, 2, 1, 3, 2, 0, 2,
+ 3, 2, 0, 2, 2, 0, 2, 0, 6, 5,
+ 5, 5, 4, 0, 2, 0, 5, 5, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 2, 1, 1,
+ 1, 2, 2, 1, 2, 4, 0, 2, 2, 0,
+ 4, 2, 0, 1, 0, 1, 3, 0, 5, 1,
+ 4, 0, 3, 2, 5, 1, 1, 0, 2, 2,
+ 0, 1, 0, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -2148,7 +2104,7 @@
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1
+ 1, 1, 1, 1, 1
};
@@ -2682,6 +2638,7 @@
case 350: /* deviation_opt_stmt */
{ if (read_all) {
+ ly_set_free(((*yyvaluep).nodes).deviation->dflt_check);
free(((*yyvaluep).nodes).deviation);
}
}
@@ -5329,22 +5286,38 @@
case 290:
{ if (read_all) {
+ int i;
+
if ((yyvsp[0].nodes).node.ptr_leaflist->flags & LYS_CONFIG_R) {
/* RFC 6020, 7.7.5 - ignore ordering when the list represents state data
* ignore oredering MASK - 0x7F
*/
- (yyvsp[0].nodes).node.ptr_leaflist->flags &= 0x7F;
- }
+ (yyvsp[0].nodes).node.ptr_leaflist->flags &= 0x7F;
+ }
if ((yyvsp[0].nodes).node.ptr_leaflist->max && (yyvsp[0].nodes).node.ptr_leaflist->min > (yyvsp[0].nodes).node.ptr_leaflist->max) {
LOGVAL(LYE_SPEC, LY_VLOG_LYS, (yyvsp[0].nodes).node.ptr_leaflist, "\"min-elements\" is bigger than \"max-elements\".");
YYABORT;
}
- if (!((yyvsp[0].nodes).node.flag & LYS_TYPE_DEF)) {
- LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[0].nodes).node.ptr_leaflist, "type", "leaf-list");
- YYABORT;
+ if (!((yyvsp[0].nodes).node.flag & LYS_TYPE_DEF)) {
+ LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, (yyvsp[0].nodes).node.ptr_leaflist, "type", "leaf-list");
+ YYABORT;
+ }
+ if ((yyvsp[0].nodes).node.ptr_leaflist->dflt_size && (yyvsp[0].nodes).node.ptr_leaflist->min) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "min-elements", "leaf-list");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement.");
+ YYABORT;
+ }
+
+ /* check default value (if not defined, there still could be some restrictions
+ * that need to be checked against a default value from a derived type) */
+ for (i = 0; i < (yyvsp[0].nodes).node.ptr_leaflist->dflt_size; i++) {
+ if (unres_schema_add_str(module, unres, &(yyvsp[0].nodes).node.ptr_leaflist->type, UNRES_TYPE_DFLT, (yyvsp[0].nodes).node.ptr_leaflist->dflt[i]) == -1) {
+ YYABORT;
+ }
+ }
}
}
- }
break;
@@ -5368,6 +5341,17 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (trg->version < 2) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ YYABORT;
+ }
+ (yyval.nodes).node.ptr_leaflist->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *(yyval.nodes).node.ptr_leaflist->dflt);
+ if (!(yyval.nodes).node.ptr_leaflist->dflt) {
+ LOGMEM;
+ YYABORT;
+ }
+ }
store_flags((struct lys_node *)(yyval.nodes).node.ptr_leaflist, size_arrays->node[size_arrays->next].flags, config_inherit);
size_arrays->next++;
} else {
@@ -5431,12 +5415,34 @@
case 299:
- { if (read_all && yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {YYABORT;} s = NULL; }
+ { if (read_all) {
+ int i;
+
+ /* check for duplicity */
+ for (i = 0; i < (yyvsp[-1].nodes).node.ptr_leaflist->dflt_size; i++) {
+ if (ly_strequal((yyvsp[-1].nodes).node.ptr_leaflist->dflt[i], s, 0)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", s);
+ free(s);
+ YYABORT;
+ }
+ }
+ (yyvsp[-1].nodes).node.ptr_leaflist->dflt[(yyvsp[-1].nodes).node.ptr_leaflist->dflt_size++] = lydict_insert_zc(module->ctx, s);
+ } else {
+ size_arrays->node[(yyvsp[-1].nodes).index].dflt++;
+ }
+ }
break;
case 300:
+ { if (read_all && yang_read_units(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {YYABORT;} s = NULL; }
+
+ break;
+
+ case 301:
+
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_leaflist;
actual_type = LEAF_LIST_KEYWORD;
@@ -5447,7 +5453,7 @@
break;
- case 302:
+ case 303:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "leaf-list", (yyvsp[0].i), 0)) {
@@ -5458,7 +5464,7 @@
break;
- case 303:
+ case 304:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_MIN_ELEMENTS) {
@@ -5477,7 +5483,7 @@
break;
- case 304:
+ case 305:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_MAX_ELEMENTS) {
@@ -5496,7 +5502,7 @@
break;
- case 305:
+ case 306:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_ORDERED_MASK) {
@@ -5513,7 +5519,7 @@
break;
- case 306:
+ case 307:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "leaf-list", (yyvsp[0].i), 0)) {
@@ -5524,7 +5530,7 @@
break;
- case 307:
+ case 308:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list")) {
YYABORT;
@@ -5534,7 +5540,7 @@
break;
- case 308:
+ case 309:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_leaflist, s, "leaf-list")) {
YYABORT;
@@ -5544,7 +5550,7 @@
break;
- case 309:
+ case 310:
{ if (read_all) {
if (!(actual = yang_read_node(trg,actual,s,LYS_LIST,sizeof(struct lys_node_list)))) {YYABORT;}
@@ -5555,7 +5561,7 @@
break;
- case 310:
+ case 311:
{ if (read_all) {
if ((yyvsp[0].nodes).node.ptr_list->flags & LYS_CONFIG_R) {
@@ -5583,7 +5589,7 @@
break;
- case 312:
+ case 313:
{ if (read_all) {
(yyval.nodes).node.ptr_list = actual;
@@ -5631,13 +5637,13 @@
break;
- case 313:
+ case 314:
{ actual = (yyvsp[-1].nodes).node.ptr_list; actual_type = LIST_KEYWORD; }
break;
- case 315:
+ case 316:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_list, s, unres, LIST_KEYWORD)) {YYABORT;}
@@ -5649,7 +5655,7 @@
break;
- case 316:
+ case 317:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_list;
@@ -5661,7 +5667,7 @@
break;
- case 318:
+ case 319:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.ptr_list->keys) {
@@ -5679,7 +5685,7 @@
break;
- case 319:
+ case 320:
{ if (read_all) {
(yyvsp[-1].nodes).node.ptr_list->unique[(yyvsp[-1].nodes).node.ptr_list->unique_size++].expr = (const char **)s;
@@ -5692,7 +5698,7 @@
break;
- case 320:
+ case 321:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "list", (yyvsp[0].i), 0)) {
@@ -5703,7 +5709,7 @@
break;
- case 321:
+ case 322:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_MIN_ELEMENTS) {
@@ -5722,7 +5728,7 @@
break;
- case 322:
+ case 323:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_MAX_ELEMENTS) {
@@ -5741,7 +5747,7 @@
break;
- case 323:
+ case 324:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_ORDERED_MASK) {
@@ -5758,7 +5764,7 @@
break;
- case 324:
+ case 325:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "list", (yyvsp[0].i), 0)) {
@@ -5769,7 +5775,7 @@
break;
- case 325:
+ case 326:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list")) {
YYABORT;
@@ -5779,7 +5785,7 @@
break;
- case 326:
+ case 327:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_list, s, "list")) {
YYABORT;
@@ -5789,7 +5795,7 @@
break;
- case 327:
+ case 328:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_list;
@@ -5801,7 +5807,7 @@
break;
- case 329:
+ case 330:
{ actual = (yyvsp[-1].nodes).node.ptr_list;
actual_type = LIST_KEYWORD;
@@ -5810,7 +5816,7 @@
break;
- case 331:
+ case 332:
{ actual = (yyvsp[-1].nodes).node.ptr_list;
actual_type = LIST_KEYWORD;
@@ -5819,7 +5825,7 @@
break;
- case 333:
+ case 334:
{ actual = (yyvsp[-1].nodes).node.ptr_list;
actual_type = LIST_KEYWORD;
@@ -5829,13 +5835,13 @@
break;
- case 334:
+ case 335:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 335:
+ case 336:
{ if (read_all) {
if (!(actual = yang_read_node(trg,actual,s,LYS_CHOICE,sizeof(struct lys_node_choice)))) {YYABORT;}
@@ -5849,7 +5855,7 @@
break;
- case 338:
+ case 339:
{ if (read_all) {
if ((yyvsp[0].nodes).choice.s && ((yyvsp[0].nodes).choice.ptr_choice->flags & LYS_MAND_TRUE)) {
@@ -5869,7 +5875,7 @@
break;
- case 340:
+ case 341:
{ if (read_all) {
(yyval.nodes).choice.ptr_choice = actual;
@@ -5895,19 +5901,19 @@
break;
- case 341:
+ case 342:
{ actual = (yyvsp[-1].nodes).choice.ptr_choice; actual_type = CHOICE_KEYWORD; }
break;
- case 342:
+ case 343:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 343:
+ case 344:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).choice.ptr_choice,s, unres, CHOICE_KEYWORD)) {
@@ -5925,7 +5931,7 @@
break;
- case 344:
+ case 345:
{ if (read_all) {
if ((yyvsp[-1].nodes).choice.s) {
@@ -5942,7 +5948,7 @@
break;
- case 345:
+ case 346:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config", "choice", (yyvsp[0].i), 0)) {
@@ -5955,7 +5961,7 @@
break;
- case 346:
+ case 347:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_MAND_MASK, "mandatory", "choice", (yyvsp[0].i), 0)) {
@@ -5968,7 +5974,7 @@
break;
- case 347:
+ case 348:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "choice", (yyvsp[0].i), 0)) {
@@ -5981,7 +5987,7 @@
break;
- case 348:
+ case 349:
{ if (read_all) {
if (yang_read_description(trg, (yyvsp[-1].nodes).choice.ptr_choice, s, "choice")) {
@@ -5995,7 +6001,7 @@
break;
- case 349:
+ case 350:
{ if (read_all) {
if (yang_read_reference(trg, (yyvsp[-1].nodes).choice.ptr_choice, s, "choice")) {
@@ -6009,7 +6015,7 @@
break;
- case 350:
+ case 351:
{ actual = (yyvsp[-1].nodes).choice.ptr_choice;
actual_type = CHOICE_KEYWORD;
@@ -6021,13 +6027,13 @@
break;
- case 351:
+ case 352:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 360:
+ case 361:
{ if (read_all) {
if (!(actual = yang_read_node(trg,actual,s,LYS_CASE,sizeof(struct lys_node_case)))) {YYABORT;}
@@ -6038,7 +6044,7 @@
break;
- case 364:
+ case 365:
{ if (read_all) {
(yyval.nodes).cs = actual;
@@ -6063,13 +6069,13 @@
break;
- case 365:
+ case 366:
{ actual = (yyvsp[-1].nodes).cs; actual_type = CASE_KEYWORD; }
break;
- case 367:
+ case 368:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).cs, s, unres, CASE_KEYWORD)) {YYABORT;}
@@ -6081,7 +6087,7 @@
break;
- case 368:
+ case 369:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "case", (yyvsp[0].i), 0)) {
@@ -6092,7 +6098,7 @@
break;
- case 369:
+ case 370:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).cs, s, "case")) {
YYABORT;
@@ -6102,7 +6108,7 @@
break;
- case 370:
+ case 371:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).cs, s, "case")) {
YYABORT;
@@ -6112,7 +6118,7 @@
break;
- case 371:
+ case 372:
{ actual = (yyvsp[-1].nodes).cs;
actual_type = CASE_KEYWORD;
@@ -6121,7 +6127,7 @@
break;
- case 373:
+ case 374:
{ if (read_all) {
if (!(actual = yang_read_node(trg,actual,s,LYS_ANYXML,sizeof(struct lys_node_anydata)))) {YYABORT;}
@@ -6136,7 +6142,7 @@
break;
- case 375:
+ case 376:
{ if (read_all) {
if (!(actual = yang_read_node(trg, actual, s, LYS_ANYDATA, sizeof(struct lys_node_anydata)))) {YYABORT;}
@@ -6151,7 +6157,7 @@
break;
- case 379:
+ case 380:
{ if (read_all) {
(yyval.nodes).node.ptr_anydata = actual;
@@ -6183,13 +6189,13 @@
break;
- case 380:
+ case 381:
{ actual = (yyvsp[-1].nodes).node.ptr_anydata; actual_type = (yyvsp[-1].nodes).node.flag; }
break;
- case 382:
+ case 383:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, unres, (yyvsp[-1].nodes).node.flag)) {YYABORT;}
@@ -6201,7 +6207,7 @@
break;
- case 383:
+ case 384:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_anydata;
@@ -6213,7 +6219,7 @@
break;
- case 385:
+ case 386:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_CONFIG_MASK, "config",
@@ -6225,7 +6231,7 @@
break;
- case 386:
+ case 387:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_MAND_MASK, "mandatory",
@@ -6237,7 +6243,7 @@
break;
- case 387:
+ case 388:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status",
@@ -6249,7 +6255,7 @@
break;
- case 388:
+ case 389:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata")) {
YYABORT;
@@ -6259,7 +6265,7 @@
break;
- case 389:
+ case 390:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_anydata, s, ((yyvsp[-1].nodes).node.flag == ANYXML_KEYWORD) ? "anyxml" : "anydata")) {
YYABORT;
@@ -6269,7 +6275,7 @@
break;
- case 390:
+ case 391:
{ if (read_all) {
if (!(actual = yang_read_node(trg,actual,s,LYS_USES,sizeof(struct lys_node_uses)))) {YYABORT;}
@@ -6283,7 +6289,7 @@
break;
- case 391:
+ case 392:
{ if (read_all) {
if (unres_schema_add_node(trg, unres, actual, UNRES_USES, NULL) == -1) {
@@ -6294,7 +6300,7 @@
break;
- case 394:
+ case 395:
{ if (read_all) {
(yyval.nodes).uses.ptr_uses = actual;
@@ -6334,13 +6340,13 @@
break;
- case 395:
+ case 396:
{ actual = (yyvsp[-1].nodes).uses.ptr_uses; actual_type = USES_KEYWORD; }
break;
- case 397:
+ case 398:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).uses.ptr_uses, s, unres, USES_KEYWORD)) {YYABORT;}
@@ -6352,7 +6358,7 @@
break;
- case 398:
+ case 399:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "uses", (yyvsp[0].i), 0)) {
@@ -6363,7 +6369,7 @@
break;
- case 399:
+ case 400:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).uses.ptr_uses, s, "uses")) {
YYABORT;
@@ -6373,7 +6379,7 @@
break;
- case 400:
+ case 401:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).uses.ptr_uses, s, "uses")) {
YYABORT;
@@ -6383,7 +6389,7 @@
break;
- case 401:
+ case 402:
{ if (read_all) {
actual = (yyvsp[-1].nodes).uses.ptr_uses;
@@ -6395,7 +6401,7 @@
break;
- case 403:
+ case 404:
{ if (read_all) {
actual = (yyvsp[-1].nodes).uses.ptr_uses;
@@ -6412,7 +6418,7 @@
break;
- case 405:
+ case 406:
{ if (read_all) {
if (!(actual = yang_read_refine(trg, actual, s))) {
@@ -6424,7 +6430,7 @@
break;
- case 411:
+ case 412:
{ if (read_all) {
(yyval.nodes).refine = actual;
@@ -6437,6 +6443,36 @@
}
(yyval.nodes).refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML;
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ (yyval.nodes).refine->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *(yyval.nodes).refine->dflt);
+ if (!(yyval.nodes).refine->dflt) {
+ LOGMEM;
+ YYABORT;
+ }
+ if (size_arrays->node[size_arrays->next].dflt > 1) {
+ if (trg->version < 2) {
+ LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine");
+ YYABORT;
+ }
+ (yyval.nodes).refine->target_type = LYS_LEAFLIST;
+ } else {
+ if ((yyval.nodes).refine->target_type) {
+ if (trg->version < 2) {
+ (yyval.nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE);
+ } else {
+ /* YANG 1.1 */
+ (yyval.nodes).refine->target_type &= (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE);
+ }
+ } else {
+ if (trg->version < 2) {
+ (yyval.nodes).refine->target_type = LYS_LEAF | LYS_CHOICE;
+ } else {
+ /* YANG 1.1 */
+ (yyval.nodes).refine->target_type = LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE;
+ }
+ }
+ }
+ }
size_arrays->next++;
} else {
(yyval.nodes).index = size_arrays->size;
@@ -6449,7 +6485,7 @@
break;
- case 412:
+ case 413:
{ if (read_all) {
actual = (yyvsp[-2].nodes).refine;
@@ -6461,7 +6497,7 @@
break;
- case 413:
+ case 414:
{ if (read_all) {
if ((yyvsp[-1].nodes).refine->target_type) {
@@ -6490,36 +6526,32 @@
break;
- case 414:
+ case 415:
{ if (read_all) {
- if ((yyvsp[-1].nodes).refine->target_type) {
- if ((yyvsp[-1].nodes).refine->target_type & (LYS_LEAF | LYS_CHOICE)) {
- (yyvsp[-1].nodes).refine->target_type &= (LYS_LEAF | LYS_CHOICE);
- if ((yyvsp[-1].nodes).refine->mod.dflt) {
- LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine");
- free(s);
- YYABORT;
+ int i;
+
+ (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size] = lydict_insert_zc(trg->ctx, s);
+ /* check for duplicity */
+ for (i = 0; i < (yyvsp[-1].nodes).refine->dflt_size; ++i) {
+ if (ly_strequal((yyvsp[-1].nodes).refine->dflt[i], (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size], 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size], "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", (yyvsp[-1].nodes).refine->dflt[(yyvsp[-1].nodes).refine->dflt_size]);
+ (yyvsp[-1].nodes).refine->dflt_size++;
+ YYABORT;
}
- (yyvsp[-1].nodes).refine->mod.dflt = lydict_insert_zc(trg->ctx, s);
- } else {
- free(s);
- LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "default", "refine");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements.");
- YYABORT;
- }
- } else {
- (yyvsp[-1].nodes).refine->target_type = LYS_LEAF | LYS_CHOICE;
- (yyvsp[-1].nodes).refine->mod.dflt = lydict_insert_zc(trg->ctx, s);
}
+ (yyvsp[-1].nodes).refine->dflt_size++;
s = NULL;
(yyval.nodes) = (yyvsp[-1].nodes);
+ } else {
+ size_arrays->node[(yyvsp[-1].nodes).index].dflt++;
}
}
break;
- case 415:
+ case 416:
{ if (read_all) {
if ((yyvsp[-1].nodes).refine->target_type) {
@@ -6543,7 +6575,7 @@
break;
- case 416:
+ case 417:
{ if (read_all) {
if ((yyvsp[-1].nodes).refine->target_type) {
@@ -6567,7 +6599,7 @@
break;
- case 417:
+ case 418:
{ if (read_all) {
if ((yyvsp[-1].nodes).refine->target_type) {
@@ -6595,7 +6627,7 @@
break;
- case 418:
+ case 419:
{ if (read_all) {
if ((yyvsp[-1].nodes).refine->target_type) {
@@ -6623,7 +6655,7 @@
break;
- case 419:
+ case 420:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).refine, s, "refine")) {
YYABORT;
@@ -6633,7 +6665,7 @@
break;
- case 420:
+ case 421:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).refine, s, "refine")) {
YYABORT;
@@ -6643,7 +6675,7 @@
break;
- case 421:
+ case 422:
{ if (read_all) {
if (!(actual = yang_read_augment(trg, actual, s))) {
@@ -6656,7 +6688,7 @@
break;
- case 422:
+ case 423:
{ if (read_all && !((yyvsp[0].nodes).node.flag & LYS_DATADEF)){
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "data-def or case", "uses/augment");
@@ -6666,7 +6698,7 @@
break;
- case 426:
+ case 427:
{ if (read_all) {
if (!(actual = yang_read_augment(trg, NULL, s))) {
@@ -6679,7 +6711,7 @@
break;
- case 427:
+ case 428:
{ if (read_all) {
if (!((yyvsp[0].nodes).node.flag & LYS_DATADEF)){
@@ -6694,7 +6726,7 @@
break;
- case 429:
+ case 430:
{ if (read_all) {
(yyval.nodes).node.ptr_augment = actual;
@@ -6720,13 +6752,13 @@
break;
- case 430:
+ case 431:
{ actual = (yyvsp[-1].nodes).node.ptr_augment; actual_type = AUGMENT_KEYWORD; }
break;
- case 432:
+ case 433:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_augment, s, unres, AUGMENT_KEYWORD)) {YYABORT;}
@@ -6738,7 +6770,7 @@
break;
- case 433:
+ case 434:
{ if (read_all) {
/* hack - flags is bit field, so its address is taken as a member after
@@ -6752,7 +6784,7 @@
break;
- case 434:
+ case 435:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_augment, s, "augment")) {
YYABORT;
@@ -6762,7 +6794,7 @@
break;
- case 435:
+ case 436:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_augment, s, "augment")) {
YYABORT;
@@ -6772,7 +6804,7 @@
break;
- case 436:
+ case 437:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_augment;
@@ -6784,13 +6816,13 @@
break;
- case 437:
+ case 438:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 438:
+ case 439:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_augment;
@@ -6802,13 +6834,13 @@
break;
- case 439:
+ case 440:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 440:
+ case 441:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_augment;
@@ -6820,13 +6852,13 @@
break;
- case 441:
+ case 442:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 444:
+ case 445:
{ if (read_all) {
if (!(actual = yang_read_action(trg, actual, s))) {
@@ -6840,13 +6872,13 @@
break;
- case 445:
+ case 446:
{ config_inherit = ENABLE_INHERIT; }
break;
- case 446:
+ case 447:
{ if (read_all) {
if (!(actual = yang_read_node(trg, NULL, s, LYS_RPC, sizeof(struct lys_node_rpc_action)))) {
@@ -6860,13 +6892,13 @@
break;
- case 447:
+ case 448:
{ config_inherit = ENABLE_INHERIT; }
break;
- case 450:
+ case 451:
{ if (read_all) {
(yyval.nodes).node.ptr_rpc = actual;
@@ -6899,7 +6931,7 @@
break;
- case 451:
+ case 452:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, unres, RPC_KEYWORD)) {YYABORT;}
@@ -6911,7 +6943,7 @@
break;
- case 452:
+ case 453:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "rpc", (yyvsp[0].i), 0)) {
@@ -6922,7 +6954,7 @@
break;
- case 453:
+ case 454:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc")) {
YYABORT;
@@ -6932,7 +6964,7 @@
break;
- case 454:
+ case 455:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).node.ptr_rpc, s, "rpc")) {
YYABORT;
@@ -6942,7 +6974,7 @@
break;
- case 455:
+ case 456:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_rpc;
@@ -6954,7 +6986,7 @@
break;
- case 457:
+ case 458:
{ actual = (yyvsp[-1].nodes).node.ptr_rpc;
actual_type = RPC_KEYWORD;
@@ -6963,7 +6995,7 @@
break;
- case 459:
+ case 460:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_RPC_INPUT) {
@@ -6979,13 +7011,13 @@
break;
- case 460:
+ case 461:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 461:
+ case 462:
{ if (read_all) {
if ((yyvsp[-1].nodes).node.flag & LYS_RPC_OUTPUT) {
@@ -7001,13 +7033,13 @@
break;
- case 462:
+ case 463:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 463:
+ case 464:
{ if (read_all) {
s = strdup("input");
@@ -7025,7 +7057,7 @@
break;
- case 464:
+ case 465:
{ if (read_all && !((yyvsp[0].nodes).node.flag & LYS_DATADEF)) {
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, "data-def", "input");
@@ -7035,7 +7067,7 @@
break;
- case 466:
+ case 467:
{ if (read_all) {
(yyval.nodes).node.ptr_inout = actual;
@@ -7071,7 +7103,7 @@
break;
- case 467:
+ case 468:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_inout;
@@ -7083,7 +7115,7 @@
break;
- case 469:
+ case 470:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_inout;
@@ -7095,7 +7127,7 @@
break;
- case 471:
+ case 472:
{ actual = (yyvsp[-1].nodes).node.ptr_inout;
actual_type = INPUT_KEYWORD;
@@ -7104,7 +7136,7 @@
break;
- case 473:
+ case 474:
{ if (read_all) {
actual = (yyvsp[-1].nodes).node.ptr_inout;
@@ -7116,13 +7148,13 @@
break;
- case 474:
+ case 475:
{ (yyval.nodes) = (yyvsp[-3].nodes); }
break;
- case 475:
+ case 476:
{ if (read_all) {
s = strdup("output");
@@ -7140,7 +7172,7 @@
break;
- case 476:
+ case 477:
{ if (read_all && !((yyvsp[0].nodes).node.flag & LYS_DATADEF)) {
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, "data-def", "output");
@@ -7150,7 +7182,7 @@
break;
- case 478:
+ case 479:
{ if (read_all) {
if (!(actual = yang_read_node(trg, NULL, s, LYS_NOTIF, sizeof(struct lys_node_notif)))) {
@@ -7163,13 +7195,13 @@
break;
- case 479:
+ case 480:
{ config_inherit = ENABLE_INHERIT; }
break;
- case 480:
+ case 481:
{ if (read_all) {
size_arrays->next++;
@@ -7178,7 +7210,7 @@
break;
- case 482:
+ case 483:
{ if (read_all) {
(yyval.nodes).notif = actual;
@@ -7221,7 +7253,7 @@
break;
- case 483:
+ case 484:
{ if (read_all) {
actual = (yyvsp[-1].nodes).notif;
@@ -7233,7 +7265,7 @@
break;
- case 485:
+ case 486:
{ if (read_all) {
if (yang_read_if_feature(trg, (yyvsp[-1].nodes).notif, s, unres, NOTIFICATION_KEYWORD)) {YYABORT;}
@@ -7245,7 +7277,7 @@
break;
- case 486:
+ case 487:
{ if (!read_all) {
if (yang_check_flags(&size_arrays->node[(yyvsp[-1].nodes).index].flags, LYS_STATUS_MASK, "status", "notification", (yyvsp[0].i), 0)) {
@@ -7256,7 +7288,7 @@
break;
- case 487:
+ case 488:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).notif, s, "notification")) {
YYABORT;
@@ -7266,7 +7298,7 @@
break;
- case 488:
+ case 489:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).notif, s, "notification")) {
YYABORT;
@@ -7276,7 +7308,7 @@
break;
- case 489:
+ case 490:
{ if (read_all) {
actual = (yyvsp[-1].nodes).notif;
@@ -7288,7 +7320,7 @@
break;
- case 491:
+ case 492:
{ actual = (yyvsp[-1].nodes).notif;
actual_type = NOTIFICATION_KEYWORD;
@@ -7297,7 +7329,7 @@
break;
- case 493:
+ case 494:
{ actual = (yyvsp[-1].nodes).notif;
actual_type = NOTIFICATION_KEYWORD;
@@ -7306,7 +7338,7 @@
break;
- case 495:
+ case 496:
{ if (read_all) {
if (!(actual = yang_read_deviation(trg, s))) {
@@ -7319,23 +7351,24 @@
break;
- case 496:
+ case 497:
{ if (read_all) {
if (actual_type == DEVIATION_KEYWORD) {
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "deviate", "deviation");
YYABORT;
}
- if (yang_check_deviation(trg, actual, unres)) {
+ if (yang_check_deviation(trg, (yyvsp[0].nodes).deviation->dflt_check, unres)) {
YYABORT;
}
+ ly_set_free((yyvsp[0].nodes).deviation->dflt_check);
free((yyvsp[0].nodes).deviation);
}
}
break;
- case 498:
+ case 499:
{ if (read_all) {
(yyval.nodes).deviation = actual;
@@ -7344,6 +7377,7 @@
(yyval.nodes).deviation->deviation->deviate = calloc(size_arrays->node[size_arrays->next].deviate, sizeof *(yyval.nodes).deviation->deviation->deviate);
if (!(yyval.nodes).deviation->deviation->deviate) {
LOGMEM;
+ ly_set_free((yyval.nodes).deviation->dflt_check);
YYABORT;
}
}
@@ -7359,9 +7393,10 @@
break;
- case 499:
+ case 500:
{ if (read_all && yang_read_description(trg, (yyvsp[-1].nodes).deviation->deviation, s, "deviation")) {
+ ly_set_free((yyvsp[-1].nodes).deviation->dflt_check);
free((yyvsp[-1].nodes).deviation);
YYABORT;
}
@@ -7371,9 +7406,10 @@
break;
- case 500:
+ case 501:
{ if (read_all && yang_read_reference(trg, (yyvsp[-1].nodes).deviation->deviation, s, "deviation")) {
+ ly_set_free((yyvsp[-1].nodes).deviation->dflt_check);
free((yyvsp[-1].nodes).deviation);
YYABORT;
}
@@ -7383,7 +7419,7 @@
break;
- case 501:
+ case 502:
{ if (read_all) {
actual = (yyvsp[-3].nodes).deviation;
@@ -7397,7 +7433,7 @@
break;
- case 504:
+ case 505:
{ if (read_all && yang_read_deviate_unsupported(actual)) {
YYABORT;
@@ -7406,7 +7442,7 @@
break;
- case 510:
+ case 511:
{ if (read_all && yang_read_deviate(actual, LY_DEVIATE_ADD)) {
YYABORT;
@@ -7415,7 +7451,7 @@
break;
- case 514:
+ case 515:
{ if (read_all) {
(yyval.nodes).deviation = actual;
@@ -7430,6 +7466,11 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
size_arrays->next++;
} else {
(yyval.nodes).index = size_arrays->size;
@@ -7442,7 +7483,7 @@
break;
- case 515:
+ case 516:
{ if (read_all) {
if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
@@ -7455,7 +7496,7 @@
break;
- case 516:
+ case 517:
{ if (read_all) {
actual = (yyvsp[-2].nodes).deviation;
@@ -7468,7 +7509,7 @@
break;
- case 517:
+ case 518:
{ if (read_all) {
struct lys_node_list *list;
@@ -7489,20 +7530,22 @@
break;
- case 518:
+ case 519:
{ if (read_all) {
- if (yang_read_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
YYABORT;
}
s = NULL;
(yyval.nodes) = (yyvsp[-1].nodes);
+ } else {
+ size_arrays->node[(yyvsp[-1].nodes).index].dflt++;
}
}
break;
- case 519:
+ case 520:
{ if (read_all) {
if (yang_read_deviate_config((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) {
@@ -7514,7 +7557,7 @@
break;
- case 520:
+ case 521:
{ if (read_all) {
if (yang_read_deviate_mandatory((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) {
@@ -7526,7 +7569,7 @@
break;
- case 521:
+ case 522:
{ if (read_all) {
if ((yyvsp[-1].nodes).deviation->deviate->min_set) {
@@ -7542,7 +7585,7 @@
break;
- case 522:
+ case 523:
{ if (read_all) {
if ((yyvsp[-1].nodes).deviation->deviate->max_set) {
@@ -7558,7 +7601,7 @@
break;
- case 523:
+ case 524:
{ if (read_all && yang_read_deviate(actual, LY_DEVIATE_DEL)) {
YYABORT;
@@ -7570,6 +7613,28 @@
case 527:
{ if (read_all) {
+ struct lys_node_leaflist *llist;
+ int i,j;
+
+ if ((yyvsp[-1].nodes).deviation->deviate->dflt_size && (yyvsp[-1].nodes).deviation->target->nodetype == LYS_LEAFLIST) {
+ /* consolidate the final list in the target after removing items from it */
+ llist = (struct lys_node_leaflist *)(yyvsp[-1].nodes).deviation->target;
+ for (i = j = 0; j < llist->dflt_size; j++) {
+ llist->dflt[i] = llist->dflt[j];
+ if (llist->dflt[i]) {
+ i++;
+ }
+ }
+ llist->dflt_size = i + 1;
+ }
+ }
+ }
+
+ break;
+
+ case 528:
+
+ { if (read_all) {
(yyval.nodes).deviation = actual;
actual_type = DELETE_KEYWORD;
if (size_arrays->node[size_arrays->next].must) {
@@ -7582,6 +7647,11 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
size_arrays->next++;
} else {
(yyval.nodes).index = size_arrays->size;
@@ -7594,7 +7664,7 @@
break;
- case 528:
+ case 529:
{ if (read_all) {
if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
@@ -7607,7 +7677,7 @@
break;
- case 529:
+ case 530:
{ if (read_all) {
if (yang_check_deviate_must(trg->ctx, (yyvsp[-2].nodes).deviation)) {
@@ -7623,7 +7693,7 @@
break;
- case 530:
+ case 531:
{ if (read_all) {
if (yang_check_deviate_unique(trg, (yyvsp[-1].nodes).deviation, s)) {
@@ -7638,20 +7708,22 @@
break;
- case 531:
+ case 532:
{ if (read_all) {
- if (yang_read_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
YYABORT;
}
s = NULL;
(yyval.nodes) = (yyvsp[-1].nodes);
+ } else {
+ size_arrays->node[(yyvsp[-1].nodes).index].dflt++;
}
}
break;
- case 532:
+ case 533:
{ if (read_all && yang_read_deviate(actual, LY_DEVIATE_RPL)) {
YYABORT;
@@ -7660,28 +7732,41 @@
break;
- case 536:
+ case 537:
{ if (read_all) {
- (yyval.nodes).deviation = actual;
- actual_type = REPLACE_KEYWORD;
- }
- }
+ (yyval.nodes).deviation = actual;
+ actual_type = REPLACE_KEYWORD;
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
+ size_arrays->next++;
+ } else {
+ (yyval.nodes).index = size_arrays->size;
+ if (yang_add_elem(&size_arrays->node, &size_arrays->size)) {
+ LOGMEM;
+ YYABORT;
+ }
+ }
+ }
break;
- case 537:
+ case 538:
{ if (read_all) {
if (unres_schema_add_node(trg, unres, (yyvsp[-2].nodes).deviation->deviate->type, UNRES_TYPE_DER, (yyvsp[-2].nodes).deviation->target) == -1) {
YYABORT;
}
+ ly_set_add((yyvsp[-2].nodes).deviation->dflt_check, (yyvsp[-2].nodes).deviation->target, 0);
}
}
break;
- case 538:
+ case 539:
{ if (read_all) {
if (yang_read_deviate_units(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
@@ -7694,20 +7779,22 @@
break;
- case 539:
+ case 540:
{ if (read_all) {
- if (yang_read_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, (yyvsp[-1].nodes).deviation, s)) {
YYABORT;
}
s = NULL;
(yyval.nodes) = (yyvsp[-1].nodes);
+ } else {
+ size_arrays->node[(yyvsp[-1].nodes).index].dflt++;
}
}
break;
- case 540:
+ case 541:
{ if (read_all) {
if (yang_read_deviate_config((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) {
@@ -7719,7 +7806,7 @@
break;
- case 541:
+ case 542:
{ if (read_all) {
if (yang_read_deviate_mandatory((yyvsp[-1].nodes).deviation, (yyvsp[0].i))) {
@@ -7731,7 +7818,7 @@
break;
- case 542:
+ case 543:
{ if (read_all) {
if ((yyvsp[-1].nodes).deviation->deviate->min_set) {
@@ -7747,7 +7834,7 @@
break;
- case 543:
+ case 544:
{ if (read_all) {
if ((yyvsp[-1].nodes).deviation->deviate->max_set) {
@@ -7763,13 +7850,13 @@
break;
- case 544:
+ case 545:
{ if (read_all && !(actual=yang_read_when(trg, actual, actual_type, s))) {YYABORT;} s=NULL; actual_type=WHEN_KEYWORD;}
break;
- case 549:
+ case 550:
{ if (read_all && yang_read_description(trg, actual, s, "when")) {
YYABORT;
@@ -7779,7 +7866,7 @@
break;
- case 550:
+ case 551:
{ if (read_all && yang_read_reference(trg, actual, s, "when")) {
YYABORT;
@@ -7789,15 +7876,9 @@
break;
- case 551:
-
- { (yyval.i) = (yyvsp[-1].i); }
-
- break;
-
case 552:
- { read_all = (read_all) ? LY_READ_ONLY_SIZE : LY_READ_ALL; }
+ { (yyval.i) = (yyvsp[-1].i); }
break;
@@ -7809,24 +7890,30 @@
case 554:
- { (yyval.i) = (yyvsp[-2].i); }
+ { read_all = (read_all) ? LY_READ_ONLY_SIZE : LY_READ_ALL; }
break;
case 555:
- { (yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET; }
+ { (yyval.i) = (yyvsp[-2].i); }
break;
case 556:
- { (yyval.i) = LYS_CONFIG_R | LYS_CONFIG_SET; }
+ { (yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET; }
break;
case 557:
+ { (yyval.i) = LYS_CONFIG_R | LYS_CONFIG_SET; }
+
+ break;
+
+ case 558:
+
{ if (read_all) {
if (!strcmp(s, "true")) {
(yyval.i) = LYS_CONFIG_W | LYS_CONFIG_SET;
@@ -7844,15 +7931,9 @@
break;
- case 558:
-
- { (yyval.i) = (yyvsp[-1].i); }
-
- break;
-
case 559:
- { read_all = (read_all) ? LY_READ_ONLY_SIZE : LY_READ_ALL; }
+ { (yyval.i) = (yyvsp[-1].i); }
break;
@@ -7864,24 +7945,30 @@
case 561:
- { (yyval.i) = (yyvsp[-2].i); }
+ { read_all = (read_all) ? LY_READ_ONLY_SIZE : LY_READ_ALL; }
break;
case 562:
- { (yyval.i) = LYS_MAND_TRUE; }
+ { (yyval.i) = (yyvsp[-2].i); }
break;
case 563:
- { (yyval.i) = LYS_MAND_FALSE; }
+ { (yyval.i) = LYS_MAND_TRUE; }
break;
case 564:
+ { (yyval.i) = LYS_MAND_FALSE; }
+
+ break;
+
+ case 565:
+
{ if (read_all) {
if (!strcmp(s, "true")) {
(yyval.i) = LYS_MAND_TRUE;
@@ -7899,12 +7986,6 @@
break;
- case 566:
-
- { (yyval.uint) = (yyvsp[-1].uint); }
-
- break;
-
case 567:
{ (yyval.uint) = (yyvsp[-1].uint); }
@@ -7913,6 +7994,12 @@
case 568:
+ { (yyval.uint) = (yyvsp[-1].uint); }
+
+ break;
+
+ case 569:
+
{ if (read_all) {
if (strlen(s) == 1 && s[0] == '0') {
(yyval.uint) = 0;
@@ -7936,26 +8023,26 @@
break;
- case 569:
-
- { (yyval.uint) = (yyvsp[-1].uint); }
-
- break;
-
case 570:
- { (yyval.uint) = 0; }
+ { (yyval.uint) = (yyvsp[-1].uint); }
break;
case 571:
- { (yyval.uint) = (yyvsp[-1].uint); }
+ { (yyval.uint) = 0; }
break;
case 572:
+ { (yyval.uint) = (yyvsp[-1].uint); }
+
+ break;
+
+ case 573:
+
{ if (read_all) {
if (!strcmp(s, "unbounded")) {
(yyval.uint) = 0;
@@ -7979,25 +8066,25 @@
break;
- case 573:
+ case 574:
{ (yyval.i) = (yyvsp[-1].i); }
break;
- case 574:
+ case 575:
{ (yyval.i) = LYS_USERORDERED; }
break;
- case 575:
+ case 576:
{ (yyval.i) = LYS_SYSTEMORDERED; }
break;
- case 576:
+ case 577:
{ if (!strcmp(s, "user")) {
(yyval.i) = LYS_USERORDERED;
@@ -8013,7 +8100,7 @@
break;
- case 577:
+ case 578:
{ if (read_all) {
if (!(actual=yang_read_must(trg, actual, s, actual_type))) {YYABORT;}
@@ -8024,7 +8111,7 @@
break;
- case 587:
+ case 588:
{ if (read_all){
s = strdup(yyget_text(scanner));
@@ -8037,7 +8124,7 @@
break;
- case 590:
+ case 591:
{ if (read_all) {
s = ly_realloc(s,strlen(s) + yyget_leng(scanner) + 2);
@@ -8052,7 +8139,7 @@
break;
- case 593:
+ case 594:
{ if (read_all) {
(yyval.v) = actual;
@@ -8066,7 +8153,7 @@
break;
- case 594:
+ case 595:
{ if (read_all) {
if (s) {
@@ -8091,7 +8178,7 @@
break;
- case 598:
+ case 599:
{ if (read_all) {
if (s) {
@@ -8113,13 +8200,13 @@
break;
- case 600:
+ case 601:
{ tmp_s = yyget_text(scanner); }
break;
- case 601:
+ case 602:
{ if (read_all) {
s = strdup(tmp_s);
@@ -8133,13 +8220,13 @@
break;
- case 602:
+ case 603:
{ tmp_s = yyget_text(scanner); }
break;
- case 603:
+ case 604:
{ if (read_all) {
s = strdup(tmp_s);
@@ -8153,7 +8240,7 @@
break;
- case 627:
+ case 628:
{ /* convert it to uint32_t */
unsigned long val;
@@ -8168,25 +8255,25 @@
break;
- case 628:
+ case 629:
{ (yyval.uint) = 0; }
break;
- case 629:
+ case 630:
{ (yyval.uint) = (yyvsp[0].uint); }
break;
- case 630:
+ case 631:
{ (yyval.i) = 0; }
break;
- case 631:
+ case 632:
{ /* convert it to int32_t */
int64_t val;
@@ -8201,7 +8288,7 @@
break;
- case 637:
+ case 638:
{ if (read_all && lyp_check_identifier(s, LY_IDENT_SIMPLE, trg, NULL)) {
free(s);
@@ -8211,7 +8298,7 @@
break;
- case 642:
+ case 643:
{ if (read_all) {
char *tmp;
@@ -8241,7 +8328,7 @@
break;
- case 648:
+ case 649:
{ if (read_all ) {
if (yang_use_extension(trg, data_node, actual, yyget_text(scanner))) {
@@ -8252,7 +8339,7 @@
break;
- case 671:
+ case 672:
{ if (read_all){
s = strdup(yyget_text(scanner));
@@ -8265,7 +8352,7 @@
break;
- case 762:
+ case 763:
{ if (read_all) {
s = strdup(yyget_text(scanner));
@@ -8278,7 +8365,7 @@
break;
- case 763:
+ case 764:
{ if (read_all) {
s = strdup(yyget_text(scanner));
diff --git a/src/parser_yin.c b/src/parser_yin.c
index 9b7d1c1..8da8846 100644
--- a/src/parser_yin.c
+++ b/src/parser_yin.c
@@ -1543,17 +1543,20 @@
{
const char *value, **stritem;
struct lyxml_elem *next, *child, *develem;
- int c_dev = 0, c_must, c_uniq;
+ int c_dev = 0, c_must, c_uniq, c_dflt;
int f_min = 0, f_max = 0; /* flags */
int i, j, rc;
+ unsigned int u;
struct ly_ctx *ctx;
struct lys_deviate *d = NULL;
struct lys_node *node = NULL, *parent, *dev_target = NULL;
struct lys_node_choice *choice = NULL;
- struct lys_node_leaf *leaf = NULL, **leaf_dflt_check = NULL;
+ struct lys_node_leaf *leaf = NULL;
+ struct ly_set *dflt_check = ly_set_new();
struct lys_node_list *list = NULL;
+ struct lys_node_leaflist *llist = NULL;
struct lys_type *t = NULL;
- uint8_t *trg_must_size = NULL, leaf_dflt_check_count = 0;
+ uint8_t *trg_must_size = NULL;
struct lys_restr **trg_must = NULL;
struct unres_schema tmp_unres;
@@ -1633,6 +1636,7 @@
f_max = 0;
c_must = 0;
c_uniq = 0;
+ c_dflt = 0;
/* get deviation type */
GETVAL(value, develem, "value");
@@ -1669,6 +1673,7 @@
dev->orig_node = dev_target;
dev->deviate_size = 1;
+ ly_set_free(dflt_check);
return EXIT_SUCCESS;
} else if (!strcmp(value, "add")) {
dev->deviate[dev->deviate_size].mod = LY_DEVIATE_ADD;
@@ -1735,107 +1740,26 @@
dev_target->flags |= d->flags & LYS_CONFIG_MASK;
}
} else if (!strcmp(child->name, "default")) {
- if (d->dflt) {
- LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, child->name, yin->name);
+ c_dflt++;
+
+ /* check target node type */
+ if (module->version < 2 && dev_target->nodetype == LYS_LEAFLIST) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"default\" property.");
+ goto error;
+ } else if (c_dflt > 1 && dev_target->nodetype != LYS_LEAFLIST) { /* from YANG 1.1 */
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow multiple \"default\" properties.");
+ goto error;
+ } else if (c_dflt == 1 && (!(dev_target->nodetype & (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE)))) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"default\" property.");
goto error;
}
- GETVAL(value, child, "value");
- d->dflt = lydict_insert(ctx, value, 0);
- if (dev_target->nodetype == LYS_CHOICE) {
- choice = (struct lys_node_choice *)dev_target;
+ /* skip lyxml_free() at the end of the loop, this node will be processed later */
+ continue;
- if (d->mod == LY_DEVIATE_ADD) {
- /* check that there is no current value */
- if (choice->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
- goto error;
- }
- /* check collision with mandatory */
- if (choice->flags & LYS_MAND_TRUE) {
- LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, child->name, child->parent->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
- "Adding the \"default\" statement is forbidden on choice with the \"mandatory\" statement.");
- goto error;
- }
- } else if (d->mod == LY_DEVIATE_RPL) {
- /* check that there was a value before */
- if (!choice->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Replacing a property that does not exist.");
- goto error;
- }
- }
-
- rc = resolve_choice_default_schema_nodeid(d->dflt, choice->child, (const struct lys_node **)&node);
- if (rc || !node) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, child->name);
- goto error;
- }
- if (d->mod == LY_DEVIATE_DEL) {
- if (!choice->dflt || (choice->dflt != node)) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
- goto error;
- }
- } else { /* add (already checked) and replace */
- choice->dflt = node;
- if (!choice->dflt) {
- /* default branch not found */
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
- goto error;
- }
- }
- } else if (dev_target->nodetype == LYS_LEAF) {
- leaf = (struct lys_node_leaf *)dev_target;
-
- if (d->mod == LY_DEVIATE_ADD) {
- /* check that there is no current value */
- if (leaf->dflt) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
- goto error;
- }
- /* check collision with mandatory */
- if (leaf->flags & LYS_MAND_TRUE) {
- LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, child->name, child->parent->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
- "Adding the \"default\" statement is forbidden on leaf with the \"mandatory\" statement.");
- goto error;
- }
- }
-
- if (d->mod == LY_DEVIATE_DEL) {
- if (!leaf->dflt || !ly_strequal(leaf->dflt, d->dflt, 1)) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
- goto error;
- }
- /* remove value */
- lydict_remove(ctx, leaf->dflt);
- leaf->dflt = NULL;
- } else { /* add (already checked) and replace */
- /* remove value */
- lydict_remove(ctx, leaf->dflt);
-
- /* set new value */
- leaf->dflt = lydict_insert(ctx, d->dflt, 0);
-
- /* remember to check it later (it may not fit now, but the type can be deviated too) */
- leaf_dflt_check = ly_realloc(leaf_dflt_check, ++leaf_dflt_check_count * sizeof *leaf_dflt_check);
- if (!leaf_dflt_check) {
- LOGMEM;
- goto error;
- }
- leaf_dflt_check[leaf_dflt_check_count - 1] = leaf;
- }
- } else {
- /* invalid target for default value */
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"%s\" property.", child->name);
- goto error;
- }
} else if (!strcmp(child->name, "mandatory")) {
if (d->flags & LYS_MAND_MASK) {
LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, child->name, yin->name);
@@ -1978,13 +1902,8 @@
d->type = t;
/* check leaf default later (type may not fit now, but default can be deviated later too) */
- if (dev_target->nodetype == LYS_LEAF) {
- leaf_dflt_check = ly_realloc(leaf_dflt_check, ++leaf_dflt_check_count * sizeof *leaf_dflt_check);
- if (!leaf_dflt_check) {
- LOGMEM;
- goto error;
- }
- leaf_dflt_check[leaf_dflt_check_count - 1] = (struct lys_node_leaf *)dev_target;
+ if (dev_target->nodetype & (LYS_LEAF | LYS_LEAFLIST)) {
+ ly_set_add(dflt_check, dev_target, 0);
}
} else if (!strcmp(child->name, "unique")) {
c_uniq++;
@@ -2074,8 +1993,8 @@
trg_must_size = &((struct lys_node_anydata *)dev_target)->must_size;
break;
default:
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"%s\" property.", child->name);
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "must");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"must\" property.");
goto error;
}
@@ -2110,8 +2029,8 @@
/* check target node type */
if (dev_target->nodetype != LYS_LIST) {
- LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"%s\" property.", child->name);
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "unique");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Target node does not allow \"unique\" property.");
goto error;
}
@@ -2130,6 +2049,56 @@
goto error;
}
}
+ if (c_dflt) {
+ if (d->mod == LY_DEVIATE_ADD) {
+ /* check that there is no current value */
+ if ((dev_target->nodetype == LYS_LEAF && ((struct lys_node_leaf *)dev_target)->dflt) ||
+ (dev_target->nodetype == LYS_CHOICE && ((struct lys_node_choice *)dev_target)->dflt)) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Adding property that already exists.");
+ goto error;
+ }
+
+ /* check collision with mandatory/min-elements */
+ if ((dev_target->flags & LYS_MAND_TRUE) ||
+ (dev_target->nodetype == LYS_LEAFLIST && ((struct lys_node_leaflist *)dev_target)->min)) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, child->name, child->parent->name);
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "Adding the \"default\" statement is forbidden on %s statement.",
+ (dev_target->flags & LYS_MAND_TRUE) ? "nodes with the \"mandatory\"" : "leaflists with non-zero \"min-elements\"");
+ goto error;
+ }
+ } else if (d->mod == LY_DEVIATE_RPL) {
+ /* check that there was a value before */
+ if (((dev_target->nodetype & (LYS_LEAF | LYS_LEAFLIST)) && !((struct lys_node_leaf *)dev_target)->dflt) ||
+ (dev_target->nodetype == LYS_CHOICE && !((struct lys_node_choice *)dev_target)->dflt)) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, child->name);
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Replacing a property that does not exist.");
+ goto error;
+ }
+ }
+
+ if (dev_target->nodetype == LYS_LEAFLIST) {
+ /* reallocate default list in the target */
+ llist = (struct lys_node_leaflist *)dev_target;
+ if (d->mod == LY_DEVIATE_ADD) {
+ /* reallocate (enlarge) the unique array of the target */
+ llist->dflt = ly_realloc(llist->dflt, (c_dflt + llist->dflt_size) * sizeof *d->dflt);
+ } else if (d->mod == LY_DEVIATE_RPL) {
+ /* reallocate (replace) the unique array of the target */
+ for (i = 0; i < llist->dflt_size; i++) {
+ lydict_remove(llist->module->ctx, llist->dflt[i]);
+ }
+ llist->dflt = ly_realloc(llist->dflt, c_dflt * sizeof *d->dflt);
+ llist->dflt_size = 0;
+ }
+ }
+ d->dflt = calloc(c_dflt, sizeof *d->dflt);
+ if (!d->dflt) {
+ LOGMEM;
+ goto error;
+ }
+ }
/* process deviation properties with 0..n cardinality */
LY_TREE_FOR(develem->child, child) {
@@ -2244,27 +2213,135 @@
goto error;
}
}
+ } else if (!strcmp(child->name, "default")) {
+ GETVAL(value, child, "value");
+ u = strlen(value);
+ d->dflt[d->dflt_size++] = lydict_insert(module->ctx, value, u);
+
+ if (dev_target->nodetype == LYS_CHOICE) {
+ choice = (struct lys_node_choice *)dev_target;
+ rc = resolve_choice_default_schema_nodeid(value, choice->child, (const struct lys_node **)&node);
+ if (rc || !node) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ goto error;
+ }
+ if (d->mod == LY_DEVIATE_DEL) {
+ if (!choice->dflt || (choice->dflt != node)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
+ goto error;
+ }
+ } else { /* add or replace */
+ choice->dflt = node;
+ if (!choice->dflt) {
+ /* default branch not found */
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ goto error;
+ }
+ }
+ } else if (dev_target->nodetype == LYS_LEAF) {
+ leaf = (struct lys_node_leaf *)dev_target;
+ if (d->mod == LY_DEVIATE_DEL) {
+ if (!leaf->dflt || !ly_strequal(leaf->dflt, value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Value differs from the target being deleted.");
+ goto error;
+ }
+ /* remove value */
+ lydict_remove(ctx, leaf->dflt);
+ leaf->dflt = NULL;
+ } else { /* add (already checked) and replace */
+ /* remove value */
+ lydict_remove(ctx, leaf->dflt);
+
+ /* set new value */
+ leaf->dflt = lydict_insert(ctx, value, u);
+
+ /* remember to check it later (it may not fit now, but the type can be deviated too) */
+ ly_set_add(dflt_check, dev_target, 0);
+ }
+ } else { /* LYS_LEAFLIST */
+ llist = (struct lys_node_leaflist *)dev_target;
+ if (d->mod == LY_DEVIATE_DEL) {
+ /* find and remove the value in target list */
+ for (i = 0; i < llist->dflt_size; i++) {
+ if (llist->dflt[i] && ly_strequal(llist->dflt[i], value, 1)) {
+ /* match, remove the value */
+ lydict_remove(llist->module->ctx, llist->dflt[i]);
+ llist->dflt[i] = NULL;
+ break;
+ }
+ }
+ if (i == llist->dflt_size) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "The default value to delete not found in the target node.");
+ goto error;
+ }
+ } else {
+ /* add or replace, anyway we place items into the deviate's list
+ which propagates to the target */
+ /* we just want to check that the value isn't already in the list */
+ for (i = 0; i < llist->dflt_size; i++) {
+ if (ly_strequal(llist->dflt[i], value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", value);
+ goto error;
+ }
+ }
+ /* store it in target node */
+ llist->dflt[llist->dflt_size++] = lydict_insert(module->ctx, value, u);
+
+ /* remember to check it later (it may not fit now, but the type can be deviated too) */
+ ly_set_add(dflt_check, dev_target, 0);
+ }
+ }
}
}
+
+ if (c_dflt && dev_target->nodetype == LYS_LEAFLIST && d->mod == LY_DEVIATE_DEL) {
+ /* consolidate the final list in the target after removing items from it */
+ llist = (struct lys_node_leaflist *)dev_target;
+ for (i = j = 0; j < llist->dflt_size; j++) {
+ llist->dflt[i] = llist->dflt[j];
+ if (llist->dflt[i]) {
+ i++;
+ }
+ }
+ llist->dflt_size = i + 1;
+ }
}
/* now check whether default value, if any, matches the type */
- for (i = 0; i < leaf_dflt_check_count; ++i) {
- if (leaf_dflt_check[i]->dflt) {
- rc = unres_schema_add_str(module, unres, &leaf_dflt_check[i]->type, UNRES_TYPE_DFLT, leaf_dflt_check[i]->dflt);
- if (rc == -1) {
- LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, leaf_dflt_check[i]->dflt, "default");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Leaf \"%s\" default value no longer matches its type.", dev->target_name);
- goto error;
+ for (u = 0; u < dflt_check->number; ++u) {
+ value = NULL;
+ rc = EXIT_SUCCESS;
+ if (dflt_check->set.s[u]->nodetype == LYS_LEAF) {
+ leaf = (struct lys_node_leaf *)dflt_check->set.s[u];
+ rc = unres_schema_add_str(module, unres, &leaf->type, UNRES_TYPE_DFLT, value = leaf->dflt);
+ } else { /* LYS_LEAFLIST */
+ llist = (struct lys_node_leaflist *)dflt_check->set.s[u];
+ for (j = 0; j < llist->dflt_size; j++) {
+ rc = unres_schema_add_str(module, unres, &llist->type, UNRES_TYPE_DFLT, value = llist->dflt[j]);
+ if (rc == -1) {
+ break;
+ }
}
+
+ }
+ if (rc == -1) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The default value \"%s\" of the deviated node \"%s\"no longer matches its type.",
+ dev->target_name);
+ goto error;
}
}
- free(leaf_dflt_check);
+ ly_set_free(dflt_check);
return EXIT_SUCCESS;
error:
- free(leaf_dflt_check);
+ ly_set_free(dflt_check);
return EXIT_FAILURE;
}
@@ -2395,7 +2472,7 @@
const char *value;
char *endptr;
int f_mand = 0, f_min = 0, f_max = 0;
- int c_must = 0, c_ftrs = 0;
+ int c_must = 0, c_ftrs = 0, c_dflt = 0;
int r;
unsigned long int val;
@@ -2421,26 +2498,41 @@
/* limited applicability */
if (!strcmp(sub->name, "default")) {
- /* leaf or choice */
- if (rfn->mod.dflt) {
- LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, sub->name, yin->name);
- goto error;
- }
+ /* leaf, leaf-list or choice */
/* check possibility of statements combination */
if (rfn->target_type) {
- rfn->target_type &= (LYS_LEAF | LYS_CHOICE);
+ if (c_dflt) {
+ /* multiple defaults are allowed only in leaf-list */
+ if (module->version < 2) {
+ LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, sub->name, yin->name);
+ goto error;
+ }
+ rfn->target_type &= LYS_LEAFLIST;
+ } else {
+ if (module->version < 2) {
+ rfn->target_type &= (LYS_LEAF | LYS_CHOICE);
+ } else {
+ /* YANG 1.1 */
+ rfn->target_type &= (LYS_LEAFLIST | LYS_LEAF | LYS_CHOICE);
+ }
+ }
if (!rfn->target_type) {
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, sub->name, yin->name);
LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements.");
goto error;
}
} else {
- rfn->target_type = LYS_LEAF | LYS_CHOICE;
+ if (module->version < 2) {
+ rfn->target_type = LYS_LEAF | LYS_CHOICE;
+ } else {
+ /* YANG 1.1 */
+ rfn->target_type = LYS_LEAFLIST | LYS_LEAF | LYS_CHOICE;
+ }
}
- GETVAL(value, sub, "value");
- rfn->mod.dflt = lydict_insert(module->ctx, value, strlen(value));
+ c_dflt++;
+ continue;
} else if (!strcmp(sub->name, "mandatory")) {
/* leaf, choice or anyxml */
if (f_mand) {
@@ -2624,6 +2716,13 @@
goto error;
}
}
+ if (c_dflt) {
+ rfn->dflt = calloc(c_dflt, sizeof *rfn->dflt);
+ if (!rfn->dflt) {
+ LOGMEM;
+ goto error;
+ }
+ }
LY_TREE_FOR(yin->child, sub) {
if (!strcmp(sub->name, "if-feature")) {
@@ -2632,12 +2731,24 @@
if (r) {
goto error;
}
- } else {
+ } else if (!strcmp(sub->name, "must")) {
r = fill_yin_must(module, sub, &rfn->must[rfn->must_size]);
rfn->must_size++;
if (r) {
goto error;
}
+ } else { /* default */
+ GETVAL(value, sub, "value");
+
+ /* check for duplicity */
+ for (r = 0; r < rfn->dflt_size; r++) {
+ if (ly_strequal(rfn->dflt[r], value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", value);
+ goto error;
+ }
+ }
+ rfn->dflt[rfn->dflt_size++] = lydict_insert(module->ctx, value, strlen(value));
}
}
@@ -3566,7 +3677,7 @@
char *endptr;
unsigned long val;
int r, has_type = 0;
- int c_must = 0, c_ftrs = 0;
+ int c_must = 0, c_ftrs = 0, c_dflt = 0;
int f_ordr = 0, f_min = 0, f_max = 0;
llist = calloc(1, sizeof *llist);
@@ -3649,6 +3760,9 @@
} else if (!strcmp(sub->name, "if-feature")) {
c_ftrs++;
continue;
+ } else if ((module->version >= 2) && !strcmp(sub->name, "default")) {
+ c_dflt++;
+ continue;
} else if (!strcmp(sub->name, "min-elements")) {
if (f_min) {
@@ -3745,6 +3859,13 @@
goto error;
}
}
+ if (c_dflt) {
+ llist->dflt = calloc(c_dflt, sizeof *llist->dflt);
+ if (!llist->dflt) {
+ LOGMEM;
+ goto error;
+ }
+ }
LY_TREE_FOR(yin->child, sub) {
if (!strcmp(sub->name, "must")) {
@@ -3759,6 +3880,33 @@
if (r) {
goto error;
}
+ } else if (!strcmp(sub->name, "default")) {
+ GETVAL(value, sub, "value");
+
+ /* check for duplicity */
+ for (r = 0; r < llist->dflt_size; r++) {
+ if (ly_strequal(llist->dflt[r], value, 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, value, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", value);
+ goto error;
+ }
+ }
+ llist->dflt[llist->dflt_size++] = lydict_insert(module->ctx, value, strlen(value));
+ }
+ }
+
+ if (llist->dflt_size && llist->min) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "min-elements", "leaf-list");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement.");
+ goto error;
+ }
+
+ /* check default value (if not defined, there still could be some restrictions
+ * that need to be checked against a default value from a derived type) */
+ for (r = 0; r < llist->dflt_size; r++) {
+ if (unres_schema_add_str(module, unres, &llist->type, UNRES_TYPE_DFLT, llist->dflt[r]) == -1) {
+ goto error;
}
}
diff --git a/src/printer_yang.c b/src/printer_yang.c
index 5fa5c40..28dac18 100644
--- a/src/printer_yang.c
+++ b/src/printer_yang.c
@@ -531,12 +531,11 @@
for (i = 0; i < refine->iffeature_size; i++) {
yang_print_iffeature(out, level, module, &refine->iffeature[i]);
}
+ for (i = 0; i < refine->dflt_size; ++i) {
+ ly_print(out, "%*sdefault \"%s\";\n", LEVEL, INDENT, refine->dflt[i]);
+ }
- if (refine->target_type & (LYS_LEAF | LYS_CHOICE)) {
- if (refine->mod.dflt != NULL) {
- ly_print(out, "%*sdefault \"%s\";\n", LEVEL, INDENT, refine->mod.dflt);
- }
- } else if (refine->target_type == LYS_CONTAINER) {
+ if (refine->target_type == LYS_CONTAINER) {
if (refine->mod.presence != NULL) {
yang_print_text(out, level, "presence", refine->mod.presence, 1);
}
@@ -561,7 +560,7 @@
yang_print_deviation(struct lyout *out, int level, const struct lys_module *module,
const struct lys_deviation *deviation)
{
- int i, j;
+ int i, j, k;
const char *str;
str = transform_json2schema(module, deviation->target_name);
@@ -602,8 +601,8 @@
ly_print(out, "%*smandatory false;\n", LEVEL, INDENT);
}
- if (deviation->deviate[i].dflt) {
- ly_print(out, "%*sdefault \"%s\";\n", LEVEL, INDENT, deviation->deviate[i].dflt);
+ for (k = 0; k < deviation->deviate[i].dflt_size; ++k) {
+ ly_print(out, "%*sdefault \"%s\";\n", LEVEL, INDENT, deviation->deviate[i].dflt[k]);
}
if (deviation->deviate[i].min_set) {
@@ -927,6 +926,9 @@
}
yang_print_snode_common2(out, level, node, NULL);
yang_print_type(out, level, node->module, &llist->type);
+ for (i = 0; i < llist->dflt_size; ++i) {
+ ly_print(out, "%*sdefault \"%s\";\n", LEVEL, INDENT, llist->dflt[i]);
+ }
if (llist->units != NULL) {
ly_print(out, "%*sunits \"%s\";\n", LEVEL, INDENT, llist->units);
}
diff --git a/src/printer_yin.c b/src/printer_yin.c
index 344a912..098fae3 100644
--- a/src/printer_yin.c
+++ b/src/printer_yin.c
@@ -551,12 +551,11 @@
for (i = 0; i < refine->iffeature_size; i++) {
yin_print_iffeature(out, level, module, &refine->iffeature[i]);
}
+ for (i = 0; i < refine->dflt_size; ++i) {
+ yin_print_open(out, level, "default", "value", refine->dflt[i], 1);
+ }
- if (refine->target_type & (LYS_LEAF | LYS_CHOICE)) {
- if (refine->mod.dflt) {
- yin_print_open(out, level, "default", "value", refine->mod.dflt, 1);
- }
- } else if (refine->target_type == LYS_CONTAINER) {
+ if (refine->target_type == LYS_CONTAINER) {
if (refine->mod.presence) {
yin_print_open(out, level, "presence", "value", refine->mod.presence, 1);
}
@@ -622,8 +621,8 @@
yin_print_open(out, level, "mandatory", "value", "false", 1);
}
- if (deviation->deviate[i].dflt) {
- yin_print_open(out, level, "default", "value", deviation->deviate[i].dflt, 1);
+ for (j = 0; j < deviation->deviate[i].dflt_size; j++) {
+ yin_print_open(out, level, "default", "value", deviation->deviate[i].dflt[j], 1);
}
if (deviation->deviate[i].min_set) {
@@ -953,6 +952,9 @@
if (llist->units) {
yin_print_open(out, level, "units", "name", llist->units, 1);
}
+ for (i = 0; i < llist->dflt_size; i++) {
+ yin_print_open(out, level, "default", "value", llist->dflt[i], 1);
+ }
if (llist->min > 0) {
yin_print_unsigned(out, level, "min-elements", "value", llist->min);
}
diff --git a/src/resolve.c b/src/resolve.c
index 99e27a4..e913ab9 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -4024,6 +4024,8 @@
struct ly_ctx *ctx;
struct lys_node *node = NULL, *next, *iter;
struct lys_node *node_aux, *parent, *tmp;
+ struct lys_node_leaflist *llist;
+ struct lys_node_leaf *leaf;
struct lys_refine *rfn;
struct lys_restr *must, **old_must;
struct lys_iffeature *iff, **old_iff;
@@ -4171,19 +4173,49 @@
}
/* default value ... */
- if (rfn->mod.dflt) {
+ if (rfn->dflt_size) {
if (node->nodetype == LYS_LEAF) {
/* leaf */
- lydict_remove(ctx, ((struct lys_node_leaf *)node)->dflt);
- ((struct lys_node_leaf *)node)->dflt = lydict_insert(ctx, rfn->mod.dflt, 0);
+ leaf = (struct lys_node_leaf *)node;
+
+ lydict_remove(ctx, leaf->dflt);
+ leaf->dflt = lydict_insert(ctx, rfn->dflt[0], 0);
+
+ /* check the default value */
+ if (unres_schema_add_str(leaf->module, unres, &leaf->type, UNRES_TYPE_DFLT, leaf->dflt) == -1) {
+ return -1;
+ }
} else if (node->nodetype == LYS_CHOICE) {
/* choice */
- rc = resolve_choice_default_schema_nodeid(rfn->mod.dflt, node->child,
+ rc = resolve_choice_default_schema_nodeid(rfn->dflt[0], node->child,
(const struct lys_node **)&((struct lys_node_choice *)node)->dflt);
if (rc || !((struct lys_node_choice *)node)->dflt) {
- LOGVAL(LYE_INARG, LY_VLOG_LYS, uses, rfn->mod.dflt, "default");
+ LOGVAL(LYE_INARG, LY_VLOG_LYS, uses, rfn->dflt[0], "default");
return -1;
}
+ } else if (node->nodetype == LYS_LEAFLIST) {
+ /* leaf-list */
+ llist = (struct lys_node_leaflist *)node;
+
+ /* remove complete set of defaults in target */
+ for (i = 0; i < llist->dflt_size; i++) {
+ lydict_remove(ctx, llist->dflt[i]);
+ }
+ free(llist->dflt);
+
+ /* copy the default set from refine */
+ llist->dflt_size = rfn->dflt_size;
+ llist->dflt = malloc(llist->dflt_size * sizeof *llist->dflt);
+ for (i = 0; i < llist->dflt_size; i++) {
+ llist->dflt[i] = lydict_insert(ctx, rfn->dflt[i], 0);
+ }
+
+ /* check default value */
+ for (i = 0; i < llist->dflt_size; i++) {
+ if (unres_schema_add_str(llist->module, unres, &llist->type, UNRES_TYPE_DFLT, llist->dflt[i]) == -1) {
+ return -1;
+ }
+ }
}
}
@@ -4297,6 +4329,17 @@
*old_iff = iff;
*old_size = size;
}
+
+ /* additional checks */
+ if (node->nodetype == LYS_LEAFLIST) {
+ llist = (struct lys_node_leaflist *)node;
+ if (llist->dflt_size && llist->min) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, rfn->dflt_size ? "default" : "min-elements", "refine");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement.");
+ return -1;
+ }
+ }
}
/* apply augments */
diff --git a/src/tree_data.c b/src/tree_data.c
index ddfcc91..d4c8ece 100644
--- a/src/tree_data.c
+++ b/src/tree_data.c
@@ -3374,7 +3374,7 @@
* pointer to the default value
*/
const char *
-lyd_get_default(const char* unique_expr, struct lyd_node *list)
+lyd_get_unique_default(const char* unique_expr, struct lyd_node *list)
{
const struct lys_node *parent;
const struct lys_node_leaf *sleaf = NULL;
@@ -3620,7 +3620,7 @@
val1 = ((struct lyd_node_leaf_list *)diter)->value_str;
} else {
/* use default value */
- val1 = lyd_get_default(slist->unique[i].expr[j], first);
+ val1 = lyd_get_unique_default(slist->unique[i].expr[j], first);
if (ly_errno) {
return -1;
}
@@ -3632,7 +3632,7 @@
val2 = ((struct lyd_node_leaf_list *)diter)->value_str;
} else {
/* use default value */
- val2 = lyd_get_default(slist->unique[i].expr[j], second);
+ val2 = lyd_get_unique_default(slist->unique[i].expr[j], second);
if (ly_errno) {
return -1;
}
@@ -4220,6 +4220,99 @@
}
static struct lyd_node *
+lyd_wd_add_leaflist(struct ly_ctx *ctx, struct lyd_node *parent, struct lys_node_leaflist *llist,
+ const char *path, struct unres_data *unres, int options, int check_existence)
+{
+ struct lyd_node *ret = NULL, *iter, *last;
+ struct lys_tpdf *tpdf;
+ const char **dflt;
+ uint8_t dflt_size, i;
+ struct ly_set *nodeset;
+
+ if (llist->module->version < 2) {
+ /* default values on leaf-lists are allowed from YANG 1.1 */
+ return NULL;
+ } else if ((options & LYD_WD_MASK) == LYD_WD_EXPLICIT && (llist->flags & LYS_CONFIG_W)) {
+ /* do not process config data in explicit mode */
+ return NULL;
+ } else if (lys_is_disabled((struct lys_node *)llist, 0)) {
+ /* ignore disabled data */
+ return NULL;
+ }
+
+ if (llist->dflt_size) {
+ /* there are default values */
+ dflt_size = llist->dflt_size;
+ dflt = llist->dflt;
+ } else if (!llist->min) {
+ /* get the default value from the type */
+ for (tpdf = llist->type.der; tpdf && !dflt; tpdf = tpdf->type.der) {
+ dflt = &tpdf->dflt;
+ dflt_size = 1;
+ }
+ }
+
+ if (!dflt_size) {
+ /* no default values to use */
+ return NULL;
+ }
+
+ if (check_existence && parent) {
+ /* check presence of any instance of the leaf-list */
+ nodeset = lyd_get_node(parent, path);
+ if (nodeset && nodeset->number) {
+ ly_set_free(nodeset);
+ return NULL;
+ }
+ ly_set_free(nodeset);
+ }
+
+ for (i = 0; i < dflt_size; i++) {
+ last = lyd_new_path(parent, ctx, path, (void*)dflt[i], 0, options & LYD_OPT_RPCREPLY ? LYD_PATH_OPT_OUTPUT : 0);
+ if ((options & (LYD_WD_ALL_TAG | LYD_WD_IMPL_TAG)) && last) {
+ /* remember the created nodes (if necessary) in unres */
+ for (iter = last; ; iter = iter->child) {
+ if ((!(options & LYD_OPT_TYPEMASK) || (options & LYD_OPT_CONFIG)) && (iter->when_status & LYD_WHEN)) {
+ if (unres_data_add(unres, (struct lyd_node *)iter, UNRES_WHEN)) {
+ goto error;
+ }
+ }
+ if (resolve_applies_must(iter) && unres_data_add(unres, iter, UNRES_MUST) == -1) {
+ goto error;
+ }
+
+ if (iter->schema->nodetype == LYS_LEAFLIST) {
+ break;
+ }
+ }
+ /* we are in the added leaf-list instance */
+ if (((struct lyd_node_leaf_list *)iter)->value_type == LY_TYPE_LEAFREF) {
+ if (unres_data_add(unres, (struct lyd_node *)iter, UNRES_LEAFREF)) {
+ goto error;
+ }
+ } else if (((struct lyd_node_leaf_list *)iter)->value_type == LY_TYPE_INST) {
+ if (unres_data_add(unres, (struct lyd_node *)iter, UNRES_INSTID)) {
+ goto error;
+ }
+ }
+
+ /* add tag */
+ iter->dflt = 1;
+ }
+
+ if (!ret) {
+ ret = last;
+ }
+ }
+
+ return ret;
+
+error:
+ lyd_free_withsiblings(ret);
+ return NULL;
+}
+
+static struct lyd_node *
lyd_wd_add_leaf(struct ly_ctx *ctx, struct lyd_node *parent, struct lys_node_leaf *leaf,
const char *path, struct unres_data *unres, int options, int check_existence)
{
@@ -4347,6 +4440,22 @@
parent = ret = iter;
} /* else already connected in parent */
break;
+ case LYS_LEAFLIST:
+ iter = lyd_wd_add_leaflist(siter->module->ctx, parent, (struct lys_node_leaflist *)siter, path, unres,
+ options, parent ? 1 : 0);
+ if (ly_errno != LY_SUCCESS) {
+ if (!parent) {
+ lyd_free_withsiblings(ret);
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Creating default leaf-list elements \"%s\" failed.", path);
+ } else {
+ LOGVAL(LYE_SPEC, LY_VLOG_LYD, parent, "Creating default leaf-list elements \"%s\" failed.", path);
+ }
+ path[0] = '\0';
+ return NULL;
+ } else if (iter && !parent) {
+ parent = ret = iter;
+ } /* else already connected in parent */
+ break;
case LYS_CONTAINER:
if (((struct lys_node_container *)siter)->presence) {
/* don't go into presence containers */
@@ -4536,6 +4645,16 @@
} /* else if default, it was already connected into parent */
path[0] = '\0';
break;
+ case LYS_LEAFLIST:
+ sprintf(path, "%s:%s", lys_node_module(siter)->name, siter->name);
+ lyd_wd_add_leaflist(siter->module->ctx, subroot, (struct lys_node_leaflist *)siter, path, unres, options, 1);
+ if (ly_errno != LY_SUCCESS) {
+ LOGVAL(LYE_SPEC, LY_VLOG_LYD, subroot, "Creating default leaf-list elements \"%s\" failed.", path);
+ path[0] = '\0';
+ goto error;
+ } /* else if default, it was already connected into parent */
+ path[0] = '\0';
+ break;
case LYS_CHOICE:
/* check that no case is instantiated */
sch = lyd_wd_get_inst_case(caseset, siter);
@@ -4743,6 +4862,25 @@
iter = NULL;
}
break;
+ case LYS_LEAFLIST:
+ sprintf(path, "/%s:%s", lys_node_module(siter)->name, siter->name);
+ iter = lyd_wd_add_leaflist(siter->module->ctx, *root, (struct lys_node_leaflist *)siter, path, unres,
+ options, 1);
+ if (ly_errno != LY_SUCCESS) {
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Creating default leaf-list elements \"%s\" failed.", path);
+ path[0] = '\0';
+ goto cleanup;
+ }
+ path[0] = '\0';
+
+ if (iter) {
+ if (!(*root)) {
+ *root = iter;
+ }
+ /* avoid lyd_insert_after() after the switch since leaf-list instance is already added into the tree */
+ iter = NULL;
+ }
+ break;
case LYS_CHOICE:
/* check that no case is instantiated */
sch = lyd_wd_get_inst_case(caseset, siter);
diff --git a/src/tree_internal.h b/src/tree_internal.h
index 93d10a7..ae20dc3 100644
--- a/src/tree_internal.h
+++ b/src/tree_internal.h
@@ -390,7 +390,7 @@
*/
int lyd_list_equal(struct lyd_node *first, struct lyd_node *second, int action, int printval);
-const char *lyd_get_default(const char* unique_expr, struct lyd_node *list);
+const char *lyd_get_unique_default(const char* unique_expr, struct lyd_node *list);
/**
* @brief Check for (validate) top-level mandatory nodes of a data tree.
diff --git a/src/tree_schema.c b/src/tree_schema.c
index 312c1d2..a8c4de2 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -1779,6 +1779,28 @@
return new;
}
+static const char **
+lys_dflt_dup(struct ly_ctx *ctx, const char **old, int size)
+{
+ int i;
+ const char **result;
+
+ if (!size) {
+ return NULL;
+ }
+
+ result = calloc(size, sizeof *result);
+ if (!result) {
+ LOGMEM;
+ return NULL;
+ }
+
+ for (i = 0; i < size; i++) {
+ result[i] = lydict_insert(ctx, old[i], 0);
+ }
+ return result;
+}
+
static struct lys_refine *
lys_refine_dup(struct lys_module *mod, struct lys_refine *old, int size)
{
@@ -1804,9 +1826,10 @@
result[i].must_size = old[i].must_size;
result[i].must = lys_restr_dup(mod->ctx, old[i].must, old[i].must_size);
- if (result[i].target_type & (LYS_LEAF | LYS_CHOICE)) {
- result[i].mod.dflt = lydict_insert(mod->ctx, old[i].mod.dflt, 0);
- } else if (result[i].target_type == LYS_CONTAINER) {
+ result[i].dflt_size = old[i].dflt_size;
+ result[i].dflt = lys_dflt_dup(mod->ctx, old[i].dflt, old[i].dflt_size);
+
+ if (result[i].target_type == LYS_CONTAINER) {
result[i].mod.presence = lydict_insert(mod->ctx, old[i].mod.presence, 0);
} else if (result[i].target_type & (LYS_LIST | LYS_LEAFLIST)) {
result[i].mod.list = old[i].mod.list;
@@ -1927,6 +1950,11 @@
}
free(llist->must);
+ for (i = 0; i < llist->dflt_size; i++) {
+ lydict_remove(ctx, llist->dflt[i]);
+ }
+ free(llist->dflt);
+
lys_when_free(ctx, llist->when);
lys_type_free(ctx, &llist->type);
@@ -2021,7 +2049,11 @@
}
for (i = 0; i < dev->deviate_size; i++) {
- lydict_remove(ctx, dev->deviate[i].dflt);
+ for (j = 0; j < dev->deviate[i].dflt_size; j++) {
+ lydict_remove(ctx, dev->deviate[i].dflt[j]);
+ }
+ free(dev->deviate[i].dflt);
+
lydict_remove(ctx, dev->deviate[i].units);
if (dev->deviate[i].mod == LY_DEVIATE_DEL) {
@@ -2057,9 +2089,12 @@
}
free(uses->refine[i].must);
- if (uses->refine[i].target_type & (LYS_LEAF | LYS_CHOICE)) {
- lydict_remove(ctx, uses->refine[i].mod.dflt);
- } else if (uses->refine[i].target_type & LYS_CONTAINER) {
+ for (j = 0; j < uses->refine[i].dflt_size; j++) {
+ lydict_remove(ctx, uses->refine[i].dflt[i]);
+ }
+ free(uses->refine[i].dflt);
+
+ if (uses->refine[i].target_type & LYS_CONTAINER) {
lydict_remove(ctx, uses->refine[i].mod.presence);
}
}
diff --git a/src/tree_schema.h b/src/tree_schema.h
index 0a92a72..e740b73 100644
--- a/src/tree_schema.h
+++ b/src/tree_schema.h
@@ -818,7 +818,7 @@
struct lys_restr *must; /**< array of must constraints */
/* to this point, struct lys_node_leaf is compatible with struct lys_node_leaflist */
- const char *dflt; /**< default value of the type */
+ const char *dflt; /**< default value of the leaf */
};
/**
@@ -857,7 +857,8 @@
uint8_t iffeature_size; /**< number of elements in the #iffeature array */
/* specific leaf-list's data */
- uint8_t padding[2]; /**< padding for 32b alignment */
+ uint8_t padding[1]; /**< padding for 32b alignment */
+ uint8_t dflt_size; /**< number of elements in the #dflt array */
uint8_t must_size; /**< number of elements in the #must array */
struct lys_when *when; /**< when statement (optional) */
@@ -867,6 +868,7 @@
struct lys_restr *must; /**< array of must constraints */
/* to this point, struct lys_node_leaflist is compatible with struct lys_node_leaf */
+ const char **dflt; /**< array of default value(s) of the leaflist */
uint32_t min; /**< min-elements constraint (optional) */
uint32_t max; /**< max-elements constraint, 0 means unbounded (optional) */
};
@@ -1235,8 +1237,6 @@
* @brief Union to hold target modification in ::lys_refine.
*/
union lys_refine_mod {
- const char *dflt; /**< new default value. Applicable to #LYS_LEAF and #LYS_CHOICE target nodes. In case of
- #LYS_CHOICE, it must be possible to resolve the value to the default branch node */
const char *presence; /**< presence description. Applicable to #LYS_CONTAINER target node */
struct lys_refine_mod_list list; /**< container for list's attributes,
applicable to #LYS_LIST and #LYS_LEAFLIST target nodes */
@@ -1257,8 +1257,12 @@
uint8_t must_size; /**< number of elements in the #must array */
uint8_t iffeature_size; /**< number of elements in the #iffeature array */
+ uint8_t dflt_size; /**< number of elements in the #dflt array */
struct lys_restr *must; /**< array of additional must restrictions to be added to the target */
struct lys_iffeature *iffeature; /**< array of if-feature expressions */
+ const char **dflt; /**< array of new default values. Applicable to #LYS_LEAF, #LYS_LEAFLIST and
+ #LYS_CHOICE target nodes, but multiple defaults are valid only in case of
+ #LYS_LEAFLIST.*/
union lys_refine_mod mod; /**< mutually exclusive target modifications according to the possible target_type */
};
@@ -1281,7 +1285,9 @@
LYS_DEVIATE_TYPE mod; /**< type of deviation modification */
uint8_t flags; /**< Properties: config, mandatory */
- const char *dflt; /**< Properties: default (both type and choice represented as string value */
+ uint8_t dflt_size; /**< Properties: default - number of elements in the #dflt array */
+ const char **dflt; /**< Properties: default (both type and choice represented as string value;
+ for deviating leaf-list we need it as an array */
uint32_t min; /**< Properties: min-elements */
uint32_t max; /**< Properties: max-elements */
uint8_t min_set; /**< Since min can be 0, this flag says if it is default value or 0 was set */
diff --git a/src/validation.c b/src/validation.c
index e89f906..e346edb 100644
--- a/src/validation.c
+++ b/src/validation.c
@@ -281,7 +281,7 @@
id = ((struct lyd_node_leaf_list *)diter)->value_str;
} else {
/* use default value */
- id = lyd_get_default(slist->unique[j].expr[i], set->set.d[u]);
+ id = lyd_get_unique_default(slist->unique[j].expr[i], set->set.d[u]);
if (ly_errno) {
ret = EXIT_FAILURE;
goto unique_cleanup;
diff --git a/src/yang.y.in b/src/yang.y.in
index 6265c78..f78bf24 100644
--- a/src/yang.y.in
+++ b/src/yang.y.in
@@ -237,6 +237,7 @@
%destructor { free($$); } pattern_arg_str
%destructor { if (read_all && $$.choice.s) { free($$.choice.s); } } choice_opt_stmt
%destructor { if (read_all) {
+ ly_set_free($$.deviation->dflt_check);
free($$.deviation);
}
} deviation_opt_stmt
@@ -1946,22 +1947,38 @@
}
'{' stmtsep
leaf_list_opt_stmt { if (read_all) {
+ int i;
+
if ($7.node.ptr_leaflist->flags & LYS_CONFIG_R) {
/* RFC 6020, 7.7.5 - ignore ordering when the list represents state data
* ignore oredering MASK - 0x7F
*/
- $7.node.ptr_leaflist->flags &= 0x7F;
- }
+ $7.node.ptr_leaflist->flags &= 0x7F;
+ }
if ($7.node.ptr_leaflist->max && $7.node.ptr_leaflist->min > $7.node.ptr_leaflist->max) {
LOGVAL(LYE_SPEC, LY_VLOG_LYS, $7.node.ptr_leaflist, "\"min-elements\" is bigger than \"max-elements\".");
YYABORT;
}
- if (!($7.node.flag & LYS_TYPE_DEF)) {
- LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, $7.node.ptr_leaflist, "type", "leaf-list");
- YYABORT;
+ if (!($7.node.flag & LYS_TYPE_DEF)) {
+ LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_LYS, $7.node.ptr_leaflist, "type", "leaf-list");
+ YYABORT;
+ }
+ if ($7.node.ptr_leaflist->dflt_size && $7.node.ptr_leaflist->min) {
+ LOGVAL(LYE_INCHILDSTMT, LY_VLOG_NONE, NULL, "min-elements", "leaf-list");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL,
+ "The \"min-elements\" statement with non-zero value is forbidden on leaf-lists with the \"default\" statement.");
+ YYABORT;
+ }
+
+ /* check default value (if not defined, there still could be some restrictions
+ * that need to be checked against a default value from a derived type) */
+ for (i = 0; i < $7.node.ptr_leaflist->dflt_size; i++) {
+ if (unres_schema_add_str(module, unres, &$7.node.ptr_leaflist->type, UNRES_TYPE_DFLT, $7.node.ptr_leaflist->dflt[i]) == -1) {
+ YYABORT;
+ }
+ }
}
}
- }
'}' ;
leaf_list_opt_stmt: @EMPTYDIR@ { if (read_all) {
@@ -1982,6 +1999,17 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (trg->version < 2) {
+ LOGVAL(LYE_INSTMT, LY_VLOG_NONE, NULL, "default");
+ YYABORT;
+ }
+ $$.node.ptr_leaflist->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *$$.node.ptr_leaflist->dflt);
+ if (!$$.node.ptr_leaflist->dflt) {
+ LOGMEM;
+ YYABORT;
+ }
+ }
store_flags((struct lys_node *)$$.node.ptr_leaflist, size_arrays->node[size_arrays->next].flags, config_inherit);
size_arrays->next++;
} else {
@@ -2016,6 +2044,23 @@
}
}
stmtsep { $$ = $1; }
+ | leaf_list_opt_stmt default_stmt { if (read_all) {
+ int i;
+
+ /* check for duplicity */
+ for (i = 0; i < $1.node.ptr_leaflist->dflt_size; i++) {
+ if (ly_strequal($1.node.ptr_leaflist->dflt[i], s, 0)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, s, "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", s);
+ free(s);
+ YYABORT;
+ }
+ }
+ $1.node.ptr_leaflist->dflt[$1.node.ptr_leaflist->dflt_size++] = lydict_insert_zc(module->ctx, s);
+ } else {
+ size_arrays->node[$1.index].dflt++;
+ }
+ }
| leaf_list_opt_stmt units_stmt { if (read_all && yang_read_units(trg, $1.node.ptr_leaflist, s, LEAF_LIST_KEYWORD)) {YYABORT;} s = NULL; }
| leaf_list_opt_stmt must_stmt { if (read_all) {
actual = $1.node.ptr_leaflist;
@@ -2735,6 +2780,36 @@
}
$$.refine->target_type = LYS_LEAF | LYS_LIST | LYS_LEAFLIST | LYS_CONTAINER | LYS_ANYXML;
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ $$.refine->dflt = calloc(size_arrays->node[size_arrays->next].dflt, sizeof *$$.refine->dflt);
+ if (!$$.refine->dflt) {
+ LOGMEM;
+ YYABORT;
+ }
+ if (size_arrays->node[size_arrays->next].dflt > 1) {
+ if (trg->version < 2) {
+ LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine");
+ YYABORT;
+ }
+ $$.refine->target_type = LYS_LEAFLIST;
+ } else {
+ if ($$.refine->target_type) {
+ if (trg->version < 2) {
+ $$.refine->target_type &= (LYS_LEAF | LYS_CHOICE);
+ } else {
+ /* YANG 1.1 */
+ $$.refine->target_type &= (LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE);
+ }
+ } else {
+ if (trg->version < 2) {
+ $$.refine->target_type = LYS_LEAF | LYS_CHOICE;
+ } else {
+ /* YANG 1.1 */
+ $$.refine->target_type = LYS_LEAF | LYS_LEAFLIST | LYS_CHOICE;
+ }
+ }
+ }
+ }
size_arrays->next++;
} else {
$$.index = size_arrays->size;
@@ -2776,27 +2851,23 @@
}
}
| refine_body_opt_stmts default_stmt { if (read_all) {
- if ($1.refine->target_type) {
- if ($1.refine->target_type & (LYS_LEAF | LYS_CHOICE)) {
- $1.refine->target_type &= (LYS_LEAF | LYS_CHOICE);
- if ($1.refine->mod.dflt) {
- LOGVAL(LYE_TOOMANY, LY_VLOG_NONE, NULL, "default", "refine");
- free(s);
- YYABORT;
+ int i;
+
+ $1.refine->dflt[$1.refine->dflt_size] = lydict_insert_zc(trg->ctx, s);
+ /* check for duplicity */
+ for (i = 0; i < $1.refine->dflt_size; ++i) {
+ if (ly_strequal($1.refine->dflt[i], $1.refine->dflt[$1.refine->dflt_size], 1)) {
+ LOGVAL(LYE_INARG, LY_VLOG_NONE, NULL, $1.refine->dflt[$1.refine->dflt_size], "default");
+ LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Duplicated default value \"%s\".", $1.refine->dflt[$1.refine->dflt_size]);
+ $1.refine->dflt_size++;
+ YYABORT;
}
- $1.refine->mod.dflt = lydict_insert_zc(trg->ctx, s);
- } else {
- free(s);
- LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "default", "refine");
- LOGVAL(LYE_SPEC, LY_VLOG_NONE, NULL, "Invalid refine target nodetype for the substatements.");
- YYABORT;
- }
- } else {
- $1.refine->target_type = LYS_LEAF | LYS_CHOICE;
- $1.refine->mod.dflt = lydict_insert_zc(trg->ctx, s);
}
+ $1.refine->dflt_size++;
s = NULL;
$$ = $1;
+ } else {
+ size_arrays->node[$1.index].dflt++;
}
}
| refine_body_opt_stmts config_stmt { if (read_all) {
@@ -3357,9 +3428,10 @@
LOGVAL(LYE_MISSCHILDSTMT, LY_VLOG_NONE, NULL, "deviate", "deviation");
YYABORT;
}
- if (yang_check_deviation(trg, actual, unres)) {
+ if (yang_check_deviation(trg, $7.deviation->dflt_check, unres)) {
YYABORT;
}
+ ly_set_free($7.deviation->dflt_check);
free($7.deviation);
}
}
@@ -3372,6 +3444,7 @@
$$.deviation->deviation->deviate = calloc(size_arrays->node[size_arrays->next].deviate, sizeof *$$.deviation->deviation->deviate);
if (!$$.deviation->deviation->deviate) {
LOGMEM;
+ ly_set_free($$.deviation->dflt_check);
YYABORT;
}
}
@@ -3385,6 +3458,7 @@
}
}
| deviation_opt_stmt description_stmt { if (read_all && yang_read_description(trg, $1.deviation->deviation, s, "deviation")) {
+ ly_set_free($1.deviation->dflt_check);
free($1.deviation);
YYABORT;
}
@@ -3392,6 +3466,7 @@
$$ = $1;
}
| deviation_opt_stmt reference_stmt { if (read_all && yang_read_reference(trg, $1.deviation->deviation, s, "deviation")) {
+ ly_set_free($1.deviation->dflt_check);
free($1.deviation);
YYABORT;
}
@@ -3449,6 +3524,11 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
size_arrays->next++;
} else {
$$.index = size_arrays->size;
@@ -3491,11 +3571,13 @@
}
}
| deviate_add_opt_stmt default_stmt { if (read_all) {
- if (yang_read_deviate_default(trg->ctx, $1.deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, $1.deviation, s)) {
YYABORT;
}
s = NULL;
$$ = $1;
+ } else {
+ size_arrays->node[$1.index].dflt++;
}
}
| deviate_add_opt_stmt config_stmt { if (read_all) {
@@ -3544,7 +3626,23 @@
deviate_delete_end: ';'
| '{' stmtsep
deviate_delete_opt_stmt
- '}' ;
+ '}' { if (read_all) {
+ struct lys_node_leaflist *llist;
+ int i,j;
+
+ if ($3.deviation->deviate->dflt_size && $3.deviation->target->nodetype == LYS_LEAFLIST) {
+ /* consolidate the final list in the target after removing items from it */
+ llist = (struct lys_node_leaflist *)$3.deviation->target;
+ for (i = j = 0; j < llist->dflt_size; j++) {
+ llist->dflt[i] = llist->dflt[j];
+ if (llist->dflt[i]) {
+ i++;
+ }
+ }
+ llist->dflt_size = i + 1;
+ }
+ }
+ }
deviate_delete_opt_stmt: @EMPTYDIR@ { if (read_all) {
$$.deviation = actual;
@@ -3559,6 +3657,11 @@
YYABORT;
}
}
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
size_arrays->next++;
} else {
$$.index = size_arrays->size;
@@ -3598,11 +3701,13 @@
}
}
| deviate_delete_opt_stmt default_stmt { if (read_all) {
- if (yang_read_deviate_default(trg->ctx, $1.deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, $1.deviation, s)) {
YYABORT;
}
s = NULL;
$$ = $1;
+ } else {
+ size_arrays->node[$1.index].dflt++;
}
}
@@ -3618,14 +3723,27 @@
'}' ;
deviate_replace_opt_stmt: @EMPTYDIR@ { if (read_all) {
- $$.deviation = actual;
- actual_type = REPLACE_KEYWORD;
- }
- }
+ $$.deviation = actual;
+ actual_type = REPLACE_KEYWORD;
+ if (size_arrays->node[size_arrays->next].dflt) {
+ if (yang_read_deviate_default(trg, actual, size_arrays->node[size_arrays->next].dflt)) {
+ YYABORT;
+ }
+ }
+ size_arrays->next++;
+ } else {
+ $$.index = size_arrays->size;
+ if (yang_add_elem(&size_arrays->node, &size_arrays->size)) {
+ LOGMEM;
+ YYABORT;
+ }
+ }
+ }
| deviate_replace_opt_stmt type_stmt stmtsep { if (read_all) {
if (unres_schema_add_node(trg, unres, $1.deviation->deviate->type, UNRES_TYPE_DER, $1.deviation->target) == -1) {
YYABORT;
}
+ ly_set_add($1.deviation->dflt_check, $1.deviation->target, 0);
}
}
| deviate_replace_opt_stmt units_stmt { if (read_all) {
@@ -3637,11 +3755,13 @@
}
}
| deviate_replace_opt_stmt default_stmt { if (read_all) {
- if (yang_read_deviate_default(trg->ctx, $1.deviation, s)) {
+ if (yang_fill_deviate_default(trg->ctx, $1.deviation, s)) {
YYABORT;
}
s = NULL;
$$ = $1;
+ } else {
+ size_arrays->node[$1.index].dflt++;
}
}
| deviate_replace_opt_stmt config_stmt { if (read_all) {
diff --git a/tests/data/test_defaults.c b/tests/data/test_defaults.c
index 7abeaf2..ea4ff5a 100644
--- a/tests/data/test_defaults.c
+++ b/tests/data/test_defaults.c
@@ -71,6 +71,42 @@
}
static int
+setup_clean_f(void **state)
+{
+ struct state *st;
+ const char *ncwdfile = TESTS_DIR"/schema/yin/ietf/ietf-netconf-with-defaults.yin";
+ const char *ietfdir = TESTS_DIR"/schema/yin/ietf/";
+
+ (*state) = st = calloc(1, sizeof *st);
+ if (!st) {
+ fprintf(stderr, "Memory allocation error");
+ return -1;
+ }
+
+ /* libyang context */
+ st->ctx = ly_ctx_new(ietfdir);
+ if (!st->ctx) {
+ fprintf(stderr, "Failed to create context.\n");
+ goto error;
+ }
+
+ /* schemas */
+ if (!lys_parse_path(st->ctx, ncwdfile, LYS_IN_YIN)) {
+ fprintf(stderr, "Failed to load data model \"%s\".\n", ncwdfile);
+ goto error;
+ }
+
+ return 0;
+
+error:
+ ly_ctx_destroy(st->ctx, NULL);
+ free(st);
+ (*state) = NULL;
+
+ return -1;
+}
+
+static int
teardown_f(void **state)
{
struct state *st = (*state);
@@ -474,6 +510,141 @@
assert_string_equal(st->xml, xml);
}
+static void
+test_leaflist_in10(void **state)
+{
+ struct state *st = (*state);
+ const struct lys_module *mod;
+ const char *yang = "module x {"
+" namespace \"urn:x\";"
+" prefix x;"
+" leaf-list ll {"
+" type string;"
+" default \"one\";"
+" }}";
+
+ const char *yin = "<module name=\"x\" xmlns=\"urn:ietf:params:xml:ns:yang:yin:1\">"
+" <namespace uri=\"urn:x\"/>"
+" <prefix value=\"x\"/>"
+" <leaf-list name=\"ll\">"
+" <type name=\"string\"/>"
+" <default value=\"one\"/>"
+" </leaf-list></module>";
+
+ mod = lys_parse_mem(st->ctx, yang, LYS_IN_YANG);
+ assert_ptr_equal(mod, NULL);
+ assert_int_equal(ly_vecode, LYVE_INSTMT);
+
+ mod = lys_parse_mem(st->ctx, yin, LYS_IN_YIN);
+ assert_ptr_equal(mod, NULL);
+ assert_int_equal(ly_vecode, LYVE_INSTMT);
+}
+
+static void
+test_leaflist_yin(void **state)
+{
+ struct state *st = (*state);
+ const struct lys_module *mod;
+ const char *yin = "<module name=\"x\" xmlns=\"urn:ietf:params:xml:ns:yang:yin:1\">"
+" <yang-version value=\"1.1\"/>"
+" <namespace uri=\"urn:x\"/>"
+" <prefix value=\"x\"/>"
+" <leaf-list name=\"ll\">"
+" <type name=\"string\"/>"
+" <default value=\"one\"/>"
+" <default value=\"two\"/>"
+" </leaf-list></module>";
+
+ const char *xml_empty = "<nacm xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-acm\">"
+"<enable-nacm>true</enable-nacm>"
+"<read-default>permit</read-default>"
+"<write-default>deny</write-default>"
+"<exec-default>permit</exec-default>"
+"<enable-external-groups>true</enable-external-groups>"
+"</nacm><ll xmlns=\"urn:x\">one</ll><ll xmlns=\"urn:x\">two</ll>";
+
+ const char *xml_one = "<ll xmlns=\"urn:x\">one</ll>"
+"<nacm xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-acm\">"
+"<enable-nacm>true</enable-nacm>"
+"<read-default>permit</read-default>"
+"<write-default>deny</write-default>"
+"<exec-default>permit</exec-default>"
+"<enable-external-groups>true</enable-external-groups>"
+"</nacm>";
+
+ mod = lys_parse_mem(st->ctx, yin, LYS_IN_YIN);
+ assert_ptr_not_equal(mod, NULL);
+
+ st->dt = NULL;
+ assert_int_equal(lyd_validate(&(st->dt), LYD_OPT_CONFIG | LYD_WD_ALL, st->ctx), 0);
+ assert_ptr_not_equal(st->dt, NULL);
+ assert_int_equal(lyd_print_mem(&(st->xml), st->dt, LYD_XML, LYP_WITHSIBLINGS), 0);
+ assert_ptr_not_equal(st->xml, NULL);
+ assert_string_equal(st->xml, xml_empty);
+
+ free(st->xml);
+ lyd_free_withsiblings(st->dt);
+
+ assert_ptr_not_equal(st->dt = lyd_new_path(NULL, st->ctx, "/x:ll", "one", 0, 0), NULL);
+ assert_int_equal(lyd_validate(&(st->dt), LYD_OPT_CONFIG | LYD_WD_ALL, st->ctx), 0);
+ assert_ptr_not_equal(st->dt, NULL);
+ assert_int_equal(lyd_print_mem(&(st->xml), st->dt, LYD_XML, LYP_WITHSIBLINGS), 0);
+ assert_ptr_not_equal(st->xml, NULL);
+ assert_string_equal(st->xml, xml_one);
+}
+
+static void
+test_leaflist_yang(void **state)
+{
+ struct state *st = (*state);
+ const struct lys_module *mod;
+ const char *yang = "module x {"
+" yang-version 1.1;"
+" namespace \"urn:x\";"
+" prefix x;"
+" leaf-list ll {"
+" type string;"
+" default \"one\";"
+" default \"two\";"
+" }}";
+ const char *xml_empty = "<nacm xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-acm\">"
+"<enable-nacm>true</enable-nacm>"
+"<read-default>permit</read-default>"
+"<write-default>deny</write-default>"
+"<exec-default>permit</exec-default>"
+"<enable-external-groups>true</enable-external-groups>"
+"</nacm><ll xmlns=\"urn:x\">one</ll><ll xmlns=\"urn:x\">two</ll>";
+
+ const char *xml_three = "<ll xmlns=\"urn:x\">three</ll>"
+"<nacm xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-acm\">"
+"<enable-nacm>true</enable-nacm>"
+"<read-default>permit</read-default>"
+"<write-default>deny</write-default>"
+"<exec-default>permit</exec-default>"
+"<enable-external-groups>true</enable-external-groups>"
+"</nacm>";
+
+ mod = lys_parse_mem(st->ctx, yang, LYS_IN_YANG);
+ assert_ptr_not_equal(mod, NULL);
+
+ st->dt = NULL;
+ assert_int_equal(lyd_validate(&(st->dt), LYD_OPT_CONFIG | LYD_WD_ALL, st->ctx), 0);
+ assert_ptr_not_equal(st->dt, NULL);
+ assert_int_equal(lyd_print_mem(&(st->xml), st->dt, LYD_XML, LYP_WITHSIBLINGS), 0);
+ assert_ptr_not_equal(st->xml, NULL);
+ assert_string_equal(st->xml, xml_empty);
+
+ free(st->xml);
+ lyd_free_withsiblings(st->dt);
+
+ assert_ptr_not_equal(st->dt = lyd_new_path(NULL, st->ctx, "/x:ll", "three", 0, 0), NULL);
+ assert_int_equal(lyd_validate(&(st->dt), LYD_OPT_CONFIG | LYD_WD_ALL, st->ctx), 0);
+ assert_ptr_not_equal(st->dt, NULL);
+ assert_int_equal(lyd_print_mem(&(st->xml), st->dt, LYD_XML, LYP_WITHSIBLINGS), 0);
+ assert_ptr_not_equal(st->xml, NULL);
+ assert_string_equal(st->xml, xml_three);
+}
+
int main(void)
{
const struct CMUnitTest tests[] = {
@@ -487,7 +658,10 @@
cmocka_unit_test_setup_teardown(test_rpc_input_default, setup_f, teardown_f),
cmocka_unit_test_setup_teardown(test_rpc_output_default, setup_f, teardown_f),
cmocka_unit_test_setup_teardown(test_notif_default, setup_f, teardown_f),
- cmocka_unit_test_setup_teardown(test_feature, setup_f, teardown_f), };
+ cmocka_unit_test_setup_teardown(test_feature, setup_f, teardown_f),
+ cmocka_unit_test_setup_teardown(test_leaflist_in10, setup_clean_f, teardown_f),
+ cmocka_unit_test_setup_teardown(test_leaflist_yang, setup_clean_f, teardown_f),
+ cmocka_unit_test_setup_teardown(test_leaflist_yin, setup_clean_f, teardown_f), };
return cmocka_run_group_tests(tests, NULL, NULL);
}