From 0fef6992120ae85043de17a881720515191c5ba6 Mon Sep 17 00:00:00 2001 From: Andrea Iacovitti Date: Sat, 22 Nov 2014 18:01:17 +0100 Subject: [PATCH] Support 'ch' font-relative length unit type. --- khtml/css/css_valueimpl.cpp | 20 +- khtml/css/cssparser.cpp | 2 + khtml/css/cssstyleselector.cpp | 18 +- khtml/css/parser.cpp | 827 ++++++++--------- khtml/css/parser.h | 47 +- khtml/css/parser.y | 4 +- khtml/css/tokenizer.cpp | 1559 ++++++++++++++++---------------- khtml/css/tokenizer.flex | 1 + khtml/dom/css_value.h | 47 +- khtml/ecma/kjs_css.cpp | 1 + khtml/rendering/font.cpp | 14 + khtml/rendering/font.h | 4 + 12 files changed, 1298 insertions(+), 1246 deletions(-) diff --git a/khtml/css/css_valueimpl.cpp b/khtml/css/css_valueimpl.cpp index 2c40f70977..98cb9004b3 100644 --- a/khtml/css/css_valueimpl.cpp +++ b/khtml/css/css_valueimpl.cpp @@ -1089,12 +1089,21 @@ double CSSPrimitiveValueImpl::computeLengthFloat( khtml::RenderStyle *style, int case CSSPrimitiveValue::CSS_EMS: factor = style->font().pixelSize(); break; - case CSSPrimitiveValue::CSS_EXS: - { - QFontMetrics fm = style->fontMetrics(); + case CSSPrimitiveValue::CSS_EXS: { + const QFontMetrics fm = style->fontMetrics(); factor = fm.xHeight(); break; - } + } + case CSSPrimitiveValue::CSS_CHS: { + const int zw = style->htmlFont().zeroCharWidth(); + if (zw != -1) { + factor = zw; + } else { + // assume 0.5em + return ((double)0.5 * style->font().pixelSize()); + } + break; + } case CSSPrimitiveValue::CSS_PX: break; case CSSPrimitiveValue::CSS_CM: @@ -1214,6 +1223,9 @@ DOM::DOMString CSSPrimitiveValueImpl::cssText() const case CSSPrimitiveValue::CSS_EXS: text = DOMString(QString::number( m_value.num ) + "ex"); break; + case CSSPrimitiveValue::CSS_CHS: + text = DOMString(QString::number( m_value.num ) + "ch"); + break; case CSSPrimitiveValue::CSS_PX: text = DOMString(QString::number( m_value.num ) + "px"); break; diff --git a/khtml/css/cssparser.cpp b/khtml/css/cssparser.cpp index 67e371559c..5045627252 100644 --- a/khtml/css/cssparser.cpp +++ b/khtml/css/cssparser.cpp @@ -449,6 +449,7 @@ bool CSSParser::validUnit( Value *value, int unitflags, bool strict ) case Value::Q_EMS: case CSSPrimitiveValue::CSS_EMS: case CSSPrimitiveValue::CSS_EXS: + case CSSPrimitiveValue::CSS_CHS: case CSSPrimitiveValue::CSS_PX: case CSSPrimitiveValue::CSS_CM: case CSSPrimitiveValue::CSS_MM: @@ -2928,6 +2929,7 @@ int DOM::CSSParser::lex( void *_yylval ) case HERZ: case EMS: case EXS: + case CHS: case PXS: case CMS: case MMS: diff --git a/khtml/css/cssstyleselector.cpp b/khtml/css/cssstyleselector.cpp index 0183573975..ade6419002 100644 --- a/khtml/css/cssstyleselector.cpp +++ b/khtml/css/cssstyleselector.cpp @@ -3475,8 +3475,9 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value ) } else { int type = primitiveValue->primitiveType(); if (type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) { - if (!khtml::printpainter && type != CSSPrimitiveValue::CSS_EMS && type != CSSPrimitiveValue::CSS_EXS && - view && view->part()) { + // Scale for the font zoom factor only for types other than "em", "ex", "ch", since those are + // already based on the font size. + if (!khtml::printpainter && !(type >= CSSPrimitiveValue::CSS_EMS && type <= CSSPrimitiveValue::CSS_CHS) && view && view->part()) { size = qRound(primitiveValue->computeLengthFloat(parentStyle, logicalDpiY) * view->part()->fontScaleFactor() / 100.0); } else { size = qRound(primitiveValue->computeLengthFloat(parentStyle, logicalDpiY)); @@ -3561,14 +3562,13 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value ) if (primitiveValue->getIdent() == CSS_VAL_NORMAL) lineHeight = Length( -100.0, Percent ); else if (type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) { - // Scale for the font zoom factor only for types other than "em" and "ex", since those are + // Scale for the font zoom factor only for types other than "em", "ex", "ch", since those are // already based on the font size. - if ( !khtml::printpainter && type != CSSPrimitiveValue::CSS_EMS && type != CSSPrimitiveValue::CSS_EXS && - view && view->part()) - lineHeight = Length(primitiveValue->computeLength(style, logicalDpiY) * - view->part()->fontScaleFactor()/100, Fixed ); - else - lineHeight = Length(primitiveValue->computeLength(style, logicalDpiY), Fixed ); + if (!khtml::printpainter && !(type >= CSSPrimitiveValue::CSS_EMS && type <= CSSPrimitiveValue::CSS_CHS) && view && view->part()) { + lineHeight = Length(primitiveValue->computeLength(style, logicalDpiY) * view->part()->fontScaleFactor() / 100, Fixed); + } else { + lineHeight = Length(primitiveValue->computeLength(style, logicalDpiY), Fixed); + } } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE) lineHeight = Length( ( style->font().pixelSize() * int(primitiveValue->floatValue(CSSPrimitiveValue::CSS_PERCENTAGE)) ) / 100, Fixed ); else if (type == CSSPrimitiveValue::CSS_NUMBER) diff --git a/khtml/css/parser.cpp b/khtml/css/parser.cpp index 92b83f1cce..62bd0b1e91 100644 --- a/khtml/css/parser.cpp +++ b/khtml/css/parser.cpp @@ -248,29 +248,30 @@ int DOM::getValueID(const char *tagStr, int len) QEMS = 286, EMS = 287, EXS = 288, - PXS = 289, - CMS = 290, - MMS = 291, - INS = 292, - PTS = 293, - PCS = 294, - DEGS = 295, - RADS = 296, - GRADS = 297, - MSECS = 298, - SECS = 299, - HERZ = 300, - KHERZ = 301, - DPI = 302, - DPCM = 303, - DIMEN = 304, - PERCENTAGE = 305, - FLOAT = 306, - INTEGER = 307, - URI = 308, - FUNCTION = 309, - NOTFUNCTION = 310, - UNICODERANGE = 311 + CHS = 289, + PXS = 290, + CMS = 291, + MMS = 292, + INS = 293, + PTS = 294, + PCS = 295, + DEGS = 296, + RADS = 297, + GRADS = 298, + MSECS = 299, + SECS = 300, + HERZ = 301, + KHERZ = 302, + DPI = 303, + DPCM = 304, + DIMEN = 305, + PERCENTAGE = 306, + FLOAT = 307, + INTEGER = 308, + URI = 309, + FUNCTION = 310, + NOTFUNCTION = 311, + UNICODERANGE = 312 }; #endif @@ -555,20 +556,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 19 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 619 +#define YYLAST 607 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 76 +#define YYNTOKENS 77 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 69 /* YYNRULES -- Number of rules. */ -#define YYNRULES 199 +#define YYNRULES 200 /* YYNRULES -- Number of states. */ -#define YYNSTATES 378 +#define YYNSTATES 380 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 311 +#define YYMAXUTOK 312 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -580,15 +581,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 66, 67, 19, 64, 68, 71, 17, 74, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 16, 65, - 2, 73, 70, 2, 75, 2, 2, 2, 2, 2, + 67, 68, 19, 65, 69, 72, 17, 75, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 16, 66, + 2, 74, 71, 2, 76, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 18, 2, 72, 2, 2, 2, 2, 2, 2, + 2, 18, 2, 73, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 62, 20, 63, 69, 2, 2, 2, + 2, 2, 2, 63, 20, 64, 70, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -607,7 +608,7 @@ static const yytype_uint8 yytranslate[] = 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, 55, 56, 57, 58, 59, - 60, 61 + 60, 61, 62 }; #if YYDEBUG @@ -634,103 +635,106 @@ static const yytype_uint16 yyprhs[] = 533, 535, 538, 541, 544, 547, 550, 553, 555, 557, 560, 563, 566, 569, 572, 575, 578, 581, 584, 587, 590, 593, 596, 599, 602, 605, 608, 611, 614, 617, - 620, 626, 630, 633, 637, 641, 644, 650, 654, 656 + 620, 623, 629, 633, 636, 640, 644, 647, 653, 657, + 659 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 77, 0, -1, 85, 87, 86, 89, 91, 95, -1, - 79, 85, -1, 80, 85, -1, 81, 85, -1, 83, - 85, -1, 82, 85, -1, 115, -1, 90, -1, 92, - -1, 27, 62, 85, 78, 85, 63, -1, 28, 130, - -1, 29, 62, 85, 135, 63, -1, 31, 62, 85, - 116, 63, -1, 30, 4, 85, 105, 63, -1, -1, - 64, -1, -1, 85, 4, -1, -1, 86, 5, -1, - 86, 4, -1, -1, 88, -1, 25, 85, 11, 85, - 65, -1, 25, 1, 143, -1, 25, 1, 65, -1, - -1, 89, 90, 86, -1, 21, 85, 98, 85, 106, - 65, -1, 21, 1, 143, -1, 21, 1, 65, -1, - -1, 91, 93, 86, -1, 26, 85, 94, 98, -1, - 92, 85, 65, -1, 26, 1, 143, -1, 26, 1, - 65, -1, -1, 12, 4, -1, -1, 95, 96, 86, - -1, 115, -1, 108, -1, 111, -1, 112, -1, 142, - -1, 141, -1, 90, 1, -1, 115, -1, 142, -1, - 141, -1, 90, 1, -1, 11, -1, 58, -1, 12, - 85, -1, -1, 16, 85, 135, 85, -1, 66, 85, - 99, 85, 100, 67, 85, -1, 101, -1, 102, 85, - 35, 85, 101, -1, -1, 35, 85, 102, -1, -1, - 33, -1, 34, -1, 102, -1, 104, 85, 110, 103, - -1, -1, 107, -1, 105, -1, 107, 68, 85, 105, - -1, 107, 1, -1, 23, 85, 107, 62, 85, 109, - 63, -1, 23, 85, 62, 85, 109, 63, -1, -1, - 109, 97, 85, -1, 12, 85, -1, 22, 1, 143, - -1, 22, 1, 65, -1, 24, 85, 130, -1, 24, - 1, 143, -1, 24, 1, 65, -1, 64, 85, -1, - 69, 85, -1, 70, 85, -1, 71, -1, 64, -1, - 116, 130, -1, 117, -1, 116, 68, 85, 117, -1, - 116, 1, -1, 119, -1, 117, 4, -1, 117, 4, - 119, -1, 117, 113, 119, -1, 117, 1, -1, 20, - -1, 19, 20, -1, 12, 20, -1, 121, -1, 121, - 122, -1, 122, -1, 118, 121, -1, 118, 121, 122, - -1, 118, 122, -1, 121, -1, 123, -1, 118, 121, - -1, 118, 123, -1, 12, -1, 19, -1, 123, -1, - 122, 123, -1, 122, 1, -1, 14, -1, 124, -1, - 126, -1, 129, -1, 17, 12, -1, 12, 85, -1, - 18, 85, 125, 72, -1, 18, 85, 125, 127, 85, - 128, 85, 72, -1, 18, 85, 118, 125, 72, -1, - 18, 85, 118, 125, 127, 85, 128, 85, 72, -1, - 73, -1, 6, -1, 7, -1, 8, -1, 9, -1, + 78, 0, -1, 86, 88, 87, 90, 92, 96, -1, + 80, 86, -1, 81, 86, -1, 82, 86, -1, 84, + 86, -1, 83, 86, -1, 116, -1, 91, -1, 93, + -1, 27, 63, 86, 79, 86, 64, -1, 28, 131, + -1, 29, 63, 86, 136, 64, -1, 31, 63, 86, + 117, 64, -1, 30, 4, 86, 106, 64, -1, -1, + 65, -1, -1, 86, 4, -1, -1, 87, 5, -1, + 87, 4, -1, -1, 89, -1, 25, 86, 11, 86, + 66, -1, 25, 1, 144, -1, 25, 1, 66, -1, + -1, 90, 91, 87, -1, 21, 86, 99, 86, 107, + 66, -1, 21, 1, 144, -1, 21, 1, 66, -1, + -1, 92, 94, 87, -1, 26, 86, 95, 99, -1, + 93, 86, 66, -1, 26, 1, 144, -1, 26, 1, + 66, -1, -1, 12, 4, -1, -1, 96, 97, 87, + -1, 116, -1, 109, -1, 112, -1, 113, -1, 143, + -1, 142, -1, 91, 1, -1, 116, -1, 143, -1, + 142, -1, 91, 1, -1, 11, -1, 59, -1, 12, + 86, -1, -1, 16, 86, 136, 86, -1, 67, 86, + 100, 86, 101, 68, 86, -1, 102, -1, 103, 86, + 35, 86, 102, -1, -1, 35, 86, 103, -1, -1, + 33, -1, 34, -1, 103, -1, 105, 86, 111, 104, + -1, -1, 108, -1, 106, -1, 108, 69, 86, 106, + -1, 108, 1, -1, 23, 86, 108, 63, 86, 110, + 64, -1, 23, 86, 63, 86, 110, 64, -1, -1, + 110, 98, 86, -1, 12, 86, -1, 22, 1, 144, + -1, 22, 1, 66, -1, 24, 86, 131, -1, 24, + 1, 144, -1, 24, 1, 66, -1, 65, 86, -1, + 70, 86, -1, 71, 86, -1, 72, -1, 65, -1, + 117, 131, -1, 118, -1, 117, 69, 86, 118, -1, + 117, 1, -1, 120, -1, 118, 4, -1, 118, 4, + 120, -1, 118, 114, 120, -1, 118, 1, -1, 20, + -1, 19, 20, -1, 12, 20, -1, 122, -1, 122, + 123, -1, 123, -1, 119, 122, -1, 119, 122, 123, + -1, 119, 123, -1, 122, -1, 124, -1, 119, 122, + -1, 119, 124, -1, 12, -1, 19, -1, 124, -1, + 123, 124, -1, 123, 1, -1, 14, -1, 125, -1, + 127, -1, 130, -1, 17, 12, -1, 12, 86, -1, + 18, 86, 126, 73, -1, 18, 86, 126, 128, 86, + 129, 86, 73, -1, 18, 86, 119, 126, 73, -1, + 18, 86, 119, 126, 128, 86, 129, 86, 73, -1, + 74, -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, -1, 12, -1, 11, -1, 16, 12, -1, 16, - 16, 12, -1, 16, 59, 85, 13, 85, 67, -1, - 16, 59, 85, 84, 57, 85, 67, -1, 16, 59, - 85, 12, 85, 67, -1, 16, 59, 85, 11, 85, - 67, -1, 16, 60, 85, 120, 85, 67, -1, 62, - 85, 132, 63, -1, 62, 85, 1, 63, -1, 62, - 85, 131, 63, -1, 62, 85, 131, 132, 63, -1, - 62, 85, 131, 1, 63, -1, 132, 65, 85, -1, - 1, 65, 85, -1, 131, 132, 65, 85, -1, 131, - 1, 65, 85, -1, 133, 16, 85, 135, 134, -1, - 1, 143, -1, 12, 85, -1, 32, 85, -1, -1, - 137, -1, 135, 136, 137, -1, 74, 85, -1, 68, - 85, -1, -1, 138, -1, 114, 138, -1, 54, 85, - -1, 11, 85, -1, 12, 85, -1, 58, 85, -1, - 61, 85, -1, 140, -1, 139, -1, 57, 85, -1, - 56, 85, -1, 55, 85, -1, 39, 85, -1, 40, - 85, -1, 41, 85, -1, 42, 85, -1, 43, 85, - -1, 44, 85, -1, 45, 85, -1, 46, 85, -1, - 47, 85, -1, 48, 85, -1, 49, 85, -1, 50, - 85, -1, 51, 85, -1, 37, 85, -1, 36, 85, - -1, 38, 85, -1, 52, 85, -1, 53, 85, -1, - 59, 85, 135, 67, 85, -1, 59, 85, 1, -1, - 15, 85, -1, 75, 1, 143, -1, 75, 1, 65, - -1, 1, 143, -1, 62, 1, 144, 1, 63, -1, - 62, 1, 63, -1, 143, -1, 144, 1, 143, -1 + 16, 12, -1, 16, 60, 86, 13, 86, 68, -1, + 16, 60, 86, 85, 58, 86, 68, -1, 16, 60, + 86, 12, 86, 68, -1, 16, 60, 86, 11, 86, + 68, -1, 16, 61, 86, 121, 86, 68, -1, 63, + 86, 133, 64, -1, 63, 86, 1, 64, -1, 63, + 86, 132, 64, -1, 63, 86, 132, 133, 64, -1, + 63, 86, 132, 1, 64, -1, 133, 66, 86, -1, + 1, 66, 86, -1, 132, 133, 66, 86, -1, 132, + 1, 66, 86, -1, 134, 16, 86, 136, 135, -1, + 1, 144, -1, 12, 86, -1, 32, 86, -1, -1, + 138, -1, 136, 137, 138, -1, 75, 86, -1, 69, + 86, -1, -1, 139, -1, 115, 139, -1, 55, 86, + -1, 11, 86, -1, 12, 86, -1, 59, 86, -1, + 62, 86, -1, 141, -1, 140, -1, 58, 86, -1, + 57, 86, -1, 56, 86, -1, 40, 86, -1, 41, + 86, -1, 42, 86, -1, 43, 86, -1, 44, 86, + -1, 45, 86, -1, 46, 86, -1, 47, 86, -1, + 48, 86, -1, 49, 86, -1, 50, 86, -1, 51, + 86, -1, 52, 86, -1, 37, 86, -1, 36, 86, + -1, 38, 86, -1, 39, 86, -1, 53, 86, -1, + 54, 86, -1, 60, 86, 136, 68, 86, -1, 60, + 86, 1, -1, 15, 86, -1, 76, 1, 144, -1, + 76, 1, 66, -1, 1, 144, -1, 63, 1, 145, + 1, 64, -1, 63, 1, 64, -1, 144, -1, 145, + 1, 144, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 312, 312, 313, 314, 315, 316, 317, 321, 322, - 323, 327, 334, 340, 365, 377, 383, 385, 389, 390, - 393, 395, 396, 399, 401, 404, 413, 415, 419, 421, - 432, 442, 445, 451, 452, 456, 466, 474, 475, 479, - 480, 483, 485, 496, 497, 498, 499, 500, 501, 502, - 506, 507, 508, 509, 513, 514, 518, 524, 527, 533, - 539, 543, 550, 553, 559, 562, 565, 571, 574, 580, - 583, 588, 592, 597, 604, 615, 627, 628, 638, 656, - 659, 665, 672, 675, 681, 682, 683, 687, 688, 692, - 714, 727, 745, 755, 758, 761, 775, 789, 796, 797, - 798, 802, 807, 814, 821, 829, 839, 852, 857, 864, - 872, 885, 889, 895, 898, 908, 915, 929, 930, 931, - 935, 952, 959, 965, 972, 981, 994, 997, 1000, 1003, - 1006, 1009, 1015, 1016, 1020, 1026, 1032, 1039, 1046, 1053, - 1060, 1069, 1072, 1075, 1078, 1083, 1089, 1093, 1096, 1101, - 1107, 1129, 1135, 1157, 1158, 1162, 1166, 1182, 1185, 1188, - 1194, 1195, 1197, 1198, 1199, 1205, 1206, 1207, 1209, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, - 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, - 1240, 1248, 1264, 1271, 1277, 1286, 1312, 1313, 1317, 1318 + 0, 313, 313, 314, 315, 316, 317, 318, 322, 323, + 324, 328, 335, 341, 366, 378, 384, 386, 390, 391, + 394, 396, 397, 400, 402, 405, 414, 416, 420, 422, + 433, 443, 446, 452, 453, 457, 467, 475, 476, 480, + 481, 484, 486, 497, 498, 499, 500, 501, 502, 503, + 507, 508, 509, 510, 514, 515, 519, 525, 528, 534, + 540, 544, 551, 554, 560, 563, 566, 572, 575, 581, + 584, 589, 593, 598, 605, 616, 628, 629, 639, 657, + 660, 666, 673, 676, 682, 683, 684, 688, 689, 693, + 715, 728, 746, 756, 759, 762, 776, 790, 797, 798, + 799, 803, 808, 815, 822, 830, 840, 853, 858, 865, + 873, 886, 890, 896, 899, 909, 916, 930, 931, 932, + 936, 953, 960, 966, 973, 982, 995, 998, 1001, 1004, + 1007, 1010, 1016, 1017, 1021, 1027, 1033, 1040, 1047, 1054, + 1061, 1070, 1073, 1076, 1079, 1084, 1090, 1094, 1097, 1102, + 1108, 1130, 1136, 1158, 1159, 1163, 1167, 1183, 1186, 1189, + 1195, 1196, 1198, 1199, 1200, 1206, 1207, 1208, 1210, 1216, + 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, + 1237, 1242, 1250, 1266, 1273, 1279, 1288, 1314, 1315, 1319, + 1320 }; #endif @@ -745,12 +749,12 @@ static const char *const yytname[] = "IMPORT_SYM", "PAGE_SYM", "MEDIA_SYM", "FONT_FACE_SYM", "CHARSET_SYM", "NAMESPACE_SYM", "KHTML_RULE_SYM", "KHTML_DECLS_SYM", "KHTML_VALUE_SYM", "KHTML_MEDIAQUERY_SYM", "KHTML_SELECTORS_SYM", "IMPORTANT_SYM", - "MEDIA_ONLY", "MEDIA_NOT", "MEDIA_AND", "QEMS", "EMS", "EXS", "PXS", - "CMS", "MMS", "INS", "PTS", "PCS", "DEGS", "RADS", "GRADS", "MSECS", - "SECS", "HERZ", "KHERZ", "DPI", "DPCM", "DIMEN", "PERCENTAGE", "FLOAT", - "INTEGER", "URI", "FUNCTION", "NOTFUNCTION", "UNICODERANGE", "'{'", - "'}'", "'+'", "';'", "'('", "')'", "','", "'~'", "'>'", "'-'", "']'", - "'='", "'/'", "'@'", "$accept", "stylesheet", + "MEDIA_ONLY", "MEDIA_NOT", "MEDIA_AND", "QEMS", "EMS", "EXS", "CHS", + "PXS", "CMS", "MMS", "INS", "PTS", "PCS", "DEGS", "RADS", "GRADS", + "MSECS", "SECS", "HERZ", "KHERZ", "DPI", "DPCM", "DIMEN", "PERCENTAGE", + "FLOAT", "INTEGER", "URI", "FUNCTION", "NOTFUNCTION", "UNICODERANGE", + "'{'", "'}'", "'+'", "';'", "'('", "')'", "','", "'~'", "'>'", "'-'", + "']'", "'='", "'/'", "'@'", "$accept", "stylesheet", "ruleset_or_import_or_namespace", "khtml_rule", "khtml_decls", "khtml_value", "khtml_selectors", "khtml_mediaquery", "maybe_plus", "maybe_space", "maybe_sgml", "maybe_charset", "charset", "import_list", @@ -781,34 +785,35 @@ static const yytype_uint16 yytoknum[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 123, 125, 43, 59, 40, 41, 44, 126, - 62, 45, 93, 61, 47, 64 + 310, 311, 312, 123, 125, 43, 59, 40, 41, 44, + 126, 62, 45, 93, 61, 47, 64 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 76, 77, 77, 77, 77, 77, 77, 78, 78, - 78, 79, 80, 81, 82, 83, 84, 84, 85, 85, - 86, 86, 86, 87, 87, 88, 88, 88, 89, 89, - 90, 90, 90, 91, 91, 92, 93, 93, 93, 94, - 94, 95, 95, 96, 96, 96, 96, 96, 96, 96, - 97, 97, 97, 97, 98, 98, 99, 100, 100, 101, - 102, 102, 103, 103, 104, 104, 104, 105, 105, 106, - 106, 107, 107, 107, 108, 108, 109, 109, 110, 111, - 111, 112, 112, 112, 113, 113, 113, 114, 114, 115, - 116, 116, 116, 117, 117, 117, 117, 117, 118, 118, - 118, 119, 119, 119, 119, 119, 119, 120, 120, 120, - 120, 121, 121, 122, 122, 122, 123, 123, 123, 123, - 124, 125, 126, 126, 126, 126, 127, 127, 127, 127, - 127, 127, 128, 128, 129, 129, 129, 129, 129, 129, - 129, 130, 130, 130, 130, 130, 131, 131, 131, 131, - 132, 132, 133, 134, 134, 135, 135, 136, 136, 136, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 139, 139, 140, 141, 141, 142, 143, 143, 144, 144 + 0, 77, 78, 78, 78, 78, 78, 78, 79, 79, + 79, 80, 81, 82, 83, 84, 85, 85, 86, 86, + 87, 87, 87, 88, 88, 89, 89, 89, 90, 90, + 91, 91, 91, 92, 92, 93, 94, 94, 94, 95, + 95, 96, 96, 97, 97, 97, 97, 97, 97, 97, + 98, 98, 98, 98, 99, 99, 100, 101, 101, 102, + 103, 103, 104, 104, 105, 105, 105, 106, 106, 107, + 107, 108, 108, 108, 109, 109, 110, 110, 111, 112, + 112, 113, 113, 113, 114, 114, 114, 115, 115, 116, + 117, 117, 117, 118, 118, 118, 118, 118, 119, 119, + 119, 120, 120, 120, 120, 120, 120, 121, 121, 121, + 121, 122, 122, 123, 123, 123, 124, 124, 124, 124, + 125, 126, 127, 127, 127, 127, 128, 128, 128, 128, + 128, 128, 129, 129, 130, 130, 130, 130, 130, 130, + 130, 131, 131, 131, 131, 131, 132, 132, 132, 132, + 133, 133, 134, 135, 135, 136, 136, 137, 137, 137, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 140, 140, 141, 142, 142, 143, 144, 144, 145, + 145 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -833,7 +838,8 @@ static const yytype_uint8 yyr2[] = 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 5, 3, 2, 3, 3, 2, 5, 3, 1, 3 + 2, 5, 3, 2, 3, 3, 2, 5, 3, 1, + 3 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -850,104 +856,104 @@ static const yytype_uint8 yydefact[] = 0, 18, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 88, 87, 0, 159, 155, 160, 168, - 167, 65, 66, 18, 60, 67, 18, 0, 0, 0, - 27, 26, 18, 22, 21, 33, 100, 134, 0, 18, - 18, 120, 0, 99, 0, 0, 39, 0, 92, 18, - 89, 97, 94, 18, 18, 18, 0, 111, 112, 104, - 0, 0, 115, 114, 142, 18, 151, 152, 0, 143, - 0, 141, 18, 18, 163, 164, 192, 186, 185, 187, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 188, 189, 162, 171, 170, 169, 165, - 0, 166, 161, 13, 18, 18, 0, 0, 0, 0, - 15, 14, 0, 0, 20, 41, 135, 16, 0, 18, - 0, 0, 0, 32, 31, 54, 55, 18, 0, 0, - 11, 0, 95, 84, 85, 86, 96, 0, 147, 145, - 18, 144, 18, 146, 0, 191, 159, 158, 157, 156, - 18, 18, 18, 18, 62, 197, 198, 0, 25, 29, - 0, 18, 20, 0, 18, 18, 18, 17, 0, 0, - 18, 107, 108, 121, 18, 0, 127, 128, 129, 130, - 131, 122, 126, 18, 64, 40, 35, 0, 149, 148, - 159, 18, 56, 57, 0, 78, 18, 68, 0, 0, - 0, 34, 0, 0, 18, 0, 0, 0, 20, 44, - 45, 46, 43, 48, 47, 0, 0, 0, 18, 109, - 110, 0, 124, 18, 0, 71, 0, 0, 18, 150, - 190, 18, 0, 61, 0, 196, 199, 38, 37, 36, - 195, 0, 64, 0, 0, 0, 49, 42, 139, 138, - 136, 0, 140, 0, 133, 132, 18, 30, 73, 18, - 153, 0, 18, 63, 80, 79, 18, 0, 83, 82, - 81, 194, 193, 137, 18, 0, 64, 159, 59, 76, - 18, 0, 123, 72, 58, 0, 76, 125, 75, 0, - 18, 50, 52, 51, 0, 53, 77, 74 + 18, 18, 18, 18, 88, 87, 0, 159, 155, 160, + 168, 167, 65, 66, 18, 60, 67, 18, 0, 0, + 0, 27, 26, 18, 22, 21, 33, 100, 134, 0, + 18, 18, 120, 0, 99, 0, 0, 39, 0, 92, + 18, 89, 97, 94, 18, 18, 18, 0, 111, 112, + 104, 0, 0, 115, 114, 142, 18, 151, 152, 0, + 143, 0, 141, 18, 18, 163, 164, 193, 186, 185, + 187, 188, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 189, 190, 162, 171, 170, + 169, 165, 0, 166, 161, 13, 18, 18, 0, 0, + 0, 0, 15, 14, 0, 0, 20, 41, 135, 16, + 0, 18, 0, 0, 0, 32, 31, 54, 55, 18, + 0, 0, 11, 0, 95, 84, 85, 86, 96, 0, + 147, 145, 18, 144, 18, 146, 0, 192, 159, 158, + 157, 156, 18, 18, 18, 18, 62, 198, 199, 0, + 25, 29, 0, 18, 20, 0, 18, 18, 18, 17, + 0, 0, 18, 107, 108, 121, 18, 0, 127, 128, + 129, 130, 131, 122, 126, 18, 64, 40, 35, 0, + 149, 148, 159, 18, 56, 57, 0, 78, 18, 68, + 0, 0, 0, 34, 0, 0, 18, 0, 0, 0, + 20, 44, 45, 46, 43, 48, 47, 0, 0, 0, + 18, 109, 110, 0, 124, 18, 0, 71, 0, 0, + 18, 150, 191, 18, 0, 61, 0, 197, 200, 38, + 37, 36, 196, 0, 64, 0, 0, 0, 49, 42, + 139, 138, 136, 0, 140, 0, 133, 132, 18, 30, + 73, 18, 153, 0, 18, 63, 80, 79, 18, 0, + 83, 82, 81, 195, 194, 137, 18, 0, 64, 159, + 59, 76, 18, 0, 123, 72, 58, 0, 76, 125, + 75, 0, 18, 50, 52, 51, 0, 53, 77, 74 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 6, 46, 7, 8, 9, 10, 11, 248, 126, - 36, 27, 28, 115, 369, 195, 48, 242, 209, 243, - 288, 370, 207, 231, 312, 104, 105, 277, 106, 305, - 306, 307, 289, 365, 234, 290, 291, 136, 95, 371, - 50, 51, 52, 53, 250, 54, 55, 56, 57, 202, - 58, 263, 336, 59, 15, 62, 63, 64, 309, 96, - 186, 97, 98, 99, 100, 372, 373, 146, 237 + -1, 6, 46, 7, 8, 9, 10, 11, 250, 127, + 36, 27, 28, 116, 371, 197, 48, 244, 211, 245, + 290, 372, 209, 233, 314, 105, 106, 279, 107, 307, + 308, 309, 291, 367, 236, 292, 293, 137, 96, 373, + 50, 51, 52, 53, 252, 54, 55, 56, 57, 204, + 58, 265, 338, 59, 15, 62, 63, 64, 311, 97, + 188, 98, 99, 100, 101, 374, 375, 147, 239 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -189 +#define YYPACT_NINF -191 static const yytype_int16 yypact[] = { - 469, -29, -11, 1, 182, 95, 201, -189, -189, -189, - -189, -189, 20, -189, -189, -189, -189, -189, -189, -189, - 211, 211, 211, 211, 211, -189, 26, -189, -189, 522, - 52, 466, 209, 444, -5, 290, 326, 216, -189, 343, - 212, -189, 227, -189, 263, -189, -189, -189, -189, -189, - 42, 54, 533, -189, 436, 264, -189, -189, -189, -189, - 135, -189, 124, 100, 245, -189, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, -189, -189, 553, 255, -189, -189, -189, - -189, -189, -189, -189, -189, 17, -189, 229, 58, 271, - -189, -189, -189, -189, -189, 269, -189, -189, 288, -189, - -189, -189, 285, -189, 257, 262, 30, 151, -189, -189, - -189, -189, 599, -189, -189, -189, 599, -189, -189, 436, - 348, 405, -189, -189, -189, -189, -189, 211, 306, -189, - 223, -189, -189, -189, 211, 211, 211, 211, 211, 211, + 537, -12, 113, 126, 59, 173, 36, -191, -191, -191, + -191, -191, 20, -191, -191, -191, -191, -191, -191, -191, + 211, 211, 211, 211, 211, -191, 26, -191, -191, 507, + 52, 443, 287, 414, -6, 227, 155, 206, -191, 265, + 237, -191, 252, -191, 212, -191, -191, -191, -191, -191, + 42, 54, 434, -191, 589, 266, -191, -191, -191, -191, + 341, -191, 157, 106, 250, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, + -191, -191, -191, -191, -191, -191, 535, 283, -191, -191, + -191, -191, -191, -191, -191, -191, 17, -191, 230, 58, + 275, -191, -191, -191, -191, -191, 278, -191, -191, 294, + -191, -191, -191, 425, -191, 246, 281, 30, 153, -191, + -191, -191, -191, 582, -191, -191, -191, 582, -191, -191, + 589, 300, 398, -191, -191, -191, -191, -191, 211, 356, + -191, 138, -191, -191, -191, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 336, 211, -189, -189, -189, -189, 517, 213, 27, 275, - -189, -189, 352, 164, -189, 289, -189, 198, 444, 216, - 227, 305, 131, -189, -189, -189, -189, -189, 320, 181, - -189, 444, -189, 211, 211, 211, -189, 423, 211, -189, - -189, -189, -189, 211, 466, -189, 242, 211, 211, -189, - -189, -189, -189, -189, 309, -189, -189, 349, -189, 326, - 295, -189, -189, 159, -189, -189, -189, -189, 299, 533, - -189, -189, -189, 211, -189, 422, -189, -189, -189, -189, - -189, -189, -189, -189, 204, -189, -189, 126, 211, 211, - 381, -189, 211, 19, 43, 211, -189, -189, 363, 273, - 170, 326, 301, 366, -189, 166, 397, 404, -189, -189, - -189, -189, -189, -189, -189, 32, 44, 46, -189, -189, - -189, 139, -189, -189, 28, -189, 355, 153, -189, -189, - 211, -189, 341, -189, 43, -189, -189, -189, -189, -189, - -189, 296, 279, 334, 165, 339, -189, 326, -189, -189, - -189, 152, -189, 28, -189, -189, -189, -189, -189, -189, - 211, 466, -189, 17, -189, -189, -189, 96, -189, -189, - -189, -189, -189, -189, -189, 21, 209, 34, 211, 211, - -189, 24, -189, -189, 211, 130, 211, -189, -189, 432, - -189, -189, -189, -189, 239, -189, 211, -189 + 211, 211, 338, 211, -191, -191, -191, -191, 498, 241, + 27, 299, -191, -191, 269, 133, -191, 282, -191, 453, + 414, 206, 252, 303, 132, -191, -191, -191, -191, -191, + 318, 229, -191, 414, -191, 211, 211, 211, -191, 407, + 211, -191, -191, -191, -191, 211, 443, -191, 221, 211, + 211, -191, -191, -191, -191, -191, 289, -191, -191, 327, + -191, 155, 199, -191, -191, 161, -191, -191, -191, -191, + 276, 434, -191, -191, -191, 211, -191, 433, -191, -191, + -191, -191, -191, -191, -191, -191, 208, -191, -191, 127, + 211, 211, 291, -191, 211, 19, 43, 211, -191, -191, + 304, 280, 163, 155, 288, 360, -191, 164, 400, 412, + -191, -191, -191, -191, -191, -191, -191, 44, 46, 140, + -191, -191, -191, 151, -191, -191, 28, -191, 307, 32, + -191, -191, 211, -191, 349, -191, 43, -191, -191, -191, + -191, -191, -191, 343, 235, 372, 167, 393, -191, 155, + -191, -191, -191, 152, -191, 28, -191, -191, -191, -191, + -191, -191, 211, 443, -191, 17, -191, -191, -191, 125, + -191, -191, -191, -191, -191, -191, -191, 21, 287, 34, + 211, 211, -191, 24, -191, -191, 211, 131, 211, -191, + -191, 426, -191, -191, -191, -191, 243, -191, 211, -191 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -189, -189, -189, -189, -189, -189, -189, -189, -189, 0, - -188, -189, -189, -189, -17, -189, 240, -189, -189, -189, - -189, -189, 225, -189, -189, 162, 128, -189, -189, -31, - -189, 116, -189, 77, -189, -189, -189, -189, -189, -27, - 412, 236, -103, -4, -189, -37, -32, -26, -189, 250, - -189, 202, 132, -189, -47, -189, 409, -189, -189, -175, - -189, 280, 364, -189, -189, 233, 237, -30, -189 + -191, -191, -191, -191, -191, -191, -191, -191, -191, 0, + -190, -191, -191, -191, -17, -191, 239, -191, -191, -191, + -191, -191, 238, -191, -191, 184, 158, -191, -191, -31, + -191, 149, -191, 107, -191, -191, -191, -191, -191, -27, + 471, 301, -104, -4, -191, -37, -32, -26, -191, 309, + -191, 259, 182, -191, -47, -191, 458, -191, -191, -177, + -191, 334, 435, -191, -191, 284, 285, -30, -191 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -956,184 +962,182 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -155 static const yytype_int16 yytable[] = { - 12, 107, 49, 130, 111, 226, 239, 20, 21, 22, - 23, 24, 47, 29, 30, 139, 31, 32, 33, 201, - 140, -18, 141, 25, 25, 25, 35, 34, 25, 143, - -18, 25, 25, 13, 25, 311, 25, -18, -18, 334, - 335, 122, 208, 128, 125, 26, 127, 25, 25, 270, - 25, 14, -18, 60, 281, 131, 25, 109, 132, 128, - 110, 147, 232, 16, 61, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 362, 204, 249, 367, 338, 194, 328, - 327, -18, 184, 187, 14, 188, 189, 217, 185, 103, - 129, 329, 193, 330, 143, 143, -90, -90, 133, 197, - 198, 191, -90, 134, 135, 148, 129, 131, 212, 211, - 132, 282, 216, 213, 214, 215, 61, 256, 257, 258, - 259, 260, 37, 25, 38, 218, 39, 40, 41, 42, - 43, 44, 223, 224, 338, 25, 25, 18, 360, -2, - 282, 251, 236, 151, 339, 152, 357, 323, 25, 25, - -18, 37, 252, 38, 25, 39, 40, 41, 42, 43, - 44, 283, 284, 285, 227, 228, 17, 149, -91, -91, - 133, 143, 205, 368, -91, 134, 135, 109, 144, 253, - 145, 19, 25, 261, 262, 286, 332, 264, 25, 244, - 245, 246, 299, 25, 210, 25, 292, 25, -70, 353, - 268, 339, 269, 300, 121, 230, 287, 14, -18, 238, - 272, 273, 274, 275, 286, 319, 116, 101, 102, 206, - 282, 280, 101, 102, 295, 296, 297, 123, 316, 318, - 301, 37, 320, 38, 253, 39, 40, 41, 42, 43, - 44, 153, 247, 304, 124, 142, 25, -18, -103, -69, - 103, 310, 192, 205, -18, 103, 314, 350, 38, 25, - 39, 40, 41, 25, 322, 324, 221, 233, 222, 25, - 44, 345, 190, 349, 25, 352, 279, 199, 331, -18, - 196, 112, 377, 333, 200, 43, -18, -18, 340, 271, - 184, 341, 101, 102, 286, 240, 185, 254, 183, 109, - 206, -18, 203, 184, 265, 363, -103, -103, -103, 185, - 113, 114, -103, -103, -103, 109, 355, 225, 317, 356, - 25, 346, 358, 188, 276, 103, 359, 65, 66, 142, - 278, 67, -106, -18, 361, 117, 298, 364, 109, 118, - 366, 344, 38, 109, 39, 40, 41, 321, 109, 219, - 376, 220, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 109, 92, 325, 348, - 93, 109, 119, 120, 351, 326, 142, 94, 342, -102, - -106, -106, -106, 308, 109, 235, -106, -106, -106, 38, - 337, 39, 40, 41, 142, 109, 315, -105, 256, 257, - 258, 259, 260, 375, 266, 241, 313, 38, 347, 39, - 40, 41, 343, 374, -154, 108, -154, 267, 25, 184, - 38, 255, 39, 40, 41, 185, 37, 303, 38, 182, - 39, 40, 41, 42, 43, 354, 229, -102, -102, -102, - 25, 150, 0, -102, -102, -102, 293, 65, 66, 0, - 294, 67, 0, 0, 0, -105, -105, -105, 0, 0, - 0, -105, -105, -105, 302, 262, 1, 2, 3, 4, - 5, 0, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 25, 92, 65, 66, - 93, 0, 67, 0, 37, 0, 38, 94, 39, 40, - 41, 42, 43, 44, 0, 137, 0, 38, 45, 39, - 40, 41, 138, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 0, 92, 0, - 0, 93, 0, 0, 0, 0, 0, 0, 94, 68, + 12, 108, 49, 131, 112, 228, 241, 20, 21, 22, + 23, 24, 47, 29, 30, 140, 31, 32, 33, 203, + 141, -18, 142, 25, 25, 25, 35, 34, 25, 144, + -18, 25, 25, 340, 25, 313, 19, -18, -18, 336, + 337, 123, 210, 129, 126, 26, 128, 25, 25, 272, + 25, 13, -18, 60, 283, 132, 25, 110, 133, 129, + 111, 148, 234, 17, 61, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 364, 206, 251, 369, -70, 196, + 329, 341, -18, 186, 189, 14, 190, 191, 219, 187, + 104, 130, 330, 195, 331, 144, 144, -90, -90, 134, + 199, 200, 193, -90, 135, 136, 340, 130, 132, 214, + 213, 133, 284, 218, 215, 216, 217, 25, 258, 259, + 260, 261, 262, 37, 25, 38, 220, 39, 40, 41, + 42, 43, 44, 225, 226, 25, 25, 25, 149, 114, + 115, -2, 284, 253, 238, 325, 359, 25, -18, 61, + 152, 25, 153, 37, 254, 38, 14, 39, 40, 41, + 42, 43, 44, 285, 286, 287, 229, 230, 362, 16, + -91, -91, 134, 144, 341, 370, -91, 135, 136, 240, + 281, 255, 223, -18, 224, 263, 264, 288, 332, 266, + -18, -18, 25, 125, 301, 25, -18, 212, 294, 334, + 355, 150, 270, -18, 271, 302, 117, -18, 289, 321, + 14, 25, 274, 275, 276, 277, 18, 288, 113, 25, + 207, 102, 103, 282, 284, 25, 297, 298, 299, 122, + 318, 320, 303, 232, 322, 37, 255, 38, -18, 39, + 40, 41, 42, 43, 44, 306, 154, 143, 102, 103, + -103, -18, 124, 312, -69, 104, 194, 118, 316, 352, + 38, 119, 39, 40, 41, 25, 324, 326, 208, 273, + 186, 25, 207, 347, 192, 351, 187, 354, 348, 44, + 333, 143, 104, 25, -106, 335, 198, 379, 242, 110, + 342, 235, 205, 343, 38, 256, 39, 40, 41, 288, + 102, 103, 267, 310, 278, 120, 121, 365, 280, -103, + -103, -103, 110, 237, 300, -103, -103, -103, 357, 227, + 208, 358, 25, 110, 360, 190, 319, 185, 361, 65, + 66, 110, 186, 67, 104, -154, 363, -154, 187, 366, + 186, 323, 368, -106, -106, -106, 187, 110, 317, -106, + -106, -106, 378, 339, 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, 143, + 93, 327, -102, 94, 110, 145, 110, 146, 143, 346, + 95, -105, 38, 328, 39, 40, 41, 344, 25, 110, + 221, 38, 222, 39, 40, 41, 37, 377, 38, 25, + 39, 40, 41, 42, 43, 110, 243, 201, 350, 258, + 259, 260, 261, 262, 202, 43, 138, 25, 38, 268, + 39, 40, 41, 139, 65, 66, 110, 25, 67, 353, + 315, -102, -102, -102, 246, 247, 248, -102, -102, -102, + -105, -105, -105, 349, 345, 376, -105, -105, -105, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 0, 87, 88, - 89, 37, 0, 38, 0, 39, 40, 41, 42, 43 + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 109, 93, 304, 264, 94, 65, + 66, 25, 257, 67, 269, 95, 305, 356, 249, 37, + 151, 38, 231, 39, 40, 41, 42, 43, 44, 295, + 296, 184, 0, 45, 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, 0, + 93, 0, 0, 94, 1, 2, 3, 4, 5, 0, + 95, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 0, 88, 89, 90, 37, 0, 38, 0, 39, 40, + 41, 42, 43, 38, 0, 39, 40, 41 }; #define yypact_value_is_default(yystate) \ - ((yystate) == (-189)) + ((yystate) == (-191)) #define yytable_value_is_error(yytable_value) \ YYID (0) static const yytype_int16 yycheck[] = { - 0, 32, 29, 50, 34, 180, 194, 7, 8, 9, - 10, 11, 29, 13, 14, 52, 16, 17, 18, 122, + 0, 32, 29, 50, 34, 182, 196, 7, 8, 9, + 10, 11, 29, 13, 14, 52, 16, 17, 18, 123, 52, 4, 54, 4, 4, 4, 26, 1, 4, 55, - 4, 4, 4, 62, 4, 16, 4, 11, 4, 11, - 12, 41, 12, 1, 44, 25, 46, 4, 4, 224, - 4, 62, 35, 1, 242, 1, 4, 62, 4, 1, - 65, 61, 35, 62, 12, 65, 66, 67, 68, 69, + 4, 4, 4, 1, 4, 16, 0, 11, 4, 11, + 12, 41, 12, 1, 44, 25, 46, 4, 4, 226, + 4, 63, 35, 1, 244, 1, 4, 63, 4, 1, + 66, 61, 35, 4, 12, 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, 72, 124, 198, 72, 1, 115, 67, - 288, 67, 68, 103, 62, 105, 106, 139, 74, 66, - 68, 67, 112, 67, 140, 141, 62, 63, 64, 119, - 120, 63, 68, 69, 70, 1, 68, 1, 132, 129, - 4, 1, 136, 133, 134, 135, 12, 6, 7, 8, - 9, 10, 12, 4, 14, 145, 16, 17, 18, 19, - 20, 21, 152, 153, 1, 4, 4, 62, 62, 0, - 1, 198, 192, 63, 68, 65, 341, 1, 4, 4, - 4, 12, 198, 14, 4, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 184, 185, 4, 63, 62, 63, - 64, 217, 11, 63, 68, 69, 70, 62, 63, 199, - 65, 0, 4, 72, 73, 75, 67, 207, 4, 11, - 12, 13, 249, 4, 63, 4, 243, 4, 65, 67, - 220, 68, 222, 249, 12, 12, 243, 62, 62, 65, - 230, 231, 232, 233, 75, 65, 20, 33, 34, 58, - 1, 241, 33, 34, 244, 245, 246, 20, 278, 279, - 250, 12, 282, 14, 254, 16, 17, 18, 19, 20, - 21, 16, 64, 263, 1, 1, 4, 4, 4, 65, - 66, 271, 1, 11, 11, 66, 276, 324, 14, 4, - 16, 17, 18, 4, 284, 285, 63, 12, 65, 4, - 21, 321, 63, 323, 4, 325, 1, 12, 298, 4, - 12, 11, 63, 303, 19, 20, 11, 12, 308, 67, - 68, 311, 33, 34, 75, 26, 74, 12, 63, 62, - 58, 58, 65, 68, 4, 356, 62, 63, 64, 74, - 4, 5, 68, 69, 70, 62, 336, 1, 65, 339, - 4, 62, 342, 343, 35, 66, 346, 11, 12, 1, - 1, 15, 4, 58, 354, 12, 57, 357, 62, 16, - 360, 65, 14, 62, 16, 17, 18, 1, 62, 63, - 370, 65, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 62, 61, 1, 65, - 64, 62, 59, 60, 65, 1, 1, 71, 67, 4, - 62, 63, 64, 32, 62, 63, 68, 69, 70, 14, - 65, 16, 17, 18, 1, 62, 63, 4, 6, 7, - 8, 9, 10, 1, 209, 195, 274, 14, 322, 16, - 17, 18, 314, 366, 63, 33, 65, 211, 4, 68, - 14, 201, 16, 17, 18, 74, 12, 255, 14, 95, - 16, 17, 18, 19, 20, 333, 186, 62, 63, 64, - 4, 62, -1, 68, 69, 70, 243, 11, 12, -1, - 243, 15, -1, -1, -1, 62, 63, 64, -1, -1, - -1, 68, 69, 70, 72, 73, 27, 28, 29, 30, - 31, -1, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 4, 61, 11, 12, - 64, -1, 15, -1, 12, -1, 14, 71, 16, 17, - 18, 19, 20, 21, -1, 12, -1, 14, 26, 16, - 17, 18, 19, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, -1, 61, -1, - -1, 64, -1, -1, -1, -1, -1, -1, 71, 36, + 90, 91, 92, 93, 73, 125, 200, 73, 66, 116, + 290, 69, 68, 69, 104, 63, 106, 107, 140, 75, + 67, 69, 68, 113, 68, 141, 142, 63, 64, 65, + 120, 121, 64, 69, 70, 71, 1, 69, 1, 133, + 130, 4, 1, 137, 134, 135, 136, 4, 6, 7, + 8, 9, 10, 12, 4, 14, 146, 16, 17, 18, + 19, 20, 21, 153, 154, 4, 4, 4, 1, 4, + 5, 0, 1, 200, 194, 1, 343, 4, 4, 12, + 64, 4, 66, 12, 200, 14, 63, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 186, 187, 63, 63, + 63, 64, 65, 219, 69, 64, 69, 70, 71, 66, + 1, 201, 64, 4, 66, 73, 74, 76, 68, 209, + 11, 12, 4, 1, 251, 4, 4, 64, 245, 68, + 68, 64, 222, 11, 224, 251, 20, 63, 245, 66, + 63, 4, 232, 233, 234, 235, 63, 76, 11, 4, + 11, 33, 34, 243, 1, 4, 246, 247, 248, 12, + 280, 281, 252, 12, 284, 12, 256, 14, 59, 16, + 17, 18, 19, 20, 21, 265, 16, 1, 33, 34, + 4, 59, 20, 273, 66, 67, 1, 12, 278, 326, + 14, 16, 16, 17, 18, 4, 286, 287, 59, 68, + 69, 4, 11, 323, 64, 325, 75, 327, 63, 21, + 300, 1, 67, 4, 4, 305, 12, 64, 26, 63, + 310, 12, 66, 313, 14, 12, 16, 17, 18, 76, + 33, 34, 4, 32, 35, 60, 61, 358, 1, 63, + 64, 65, 63, 64, 58, 69, 70, 71, 338, 1, + 59, 341, 4, 63, 344, 345, 66, 64, 348, 11, + 12, 63, 69, 15, 67, 64, 356, 66, 75, 359, + 69, 1, 362, 63, 64, 65, 75, 63, 64, 69, + 70, 71, 372, 66, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 1, + 62, 1, 4, 65, 63, 64, 63, 66, 1, 66, + 72, 4, 14, 1, 16, 17, 18, 68, 4, 63, + 64, 14, 66, 16, 17, 18, 12, 1, 14, 4, + 16, 17, 18, 19, 20, 63, 197, 12, 66, 6, + 7, 8, 9, 10, 19, 20, 12, 4, 14, 211, + 16, 17, 18, 19, 11, 12, 63, 4, 15, 66, + 276, 63, 64, 65, 11, 12, 13, 69, 70, 71, + 63, 64, 65, 324, 316, 368, 69, 70, 71, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, -1, 55, 56, - 57, 12, -1, 14, -1, 16, 17, 18, 19, 20 + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 33, 62, 73, 74, 65, 11, + 12, 4, 203, 15, 213, 72, 257, 335, 65, 12, + 62, 14, 188, 16, 17, 18, 19, 20, 21, 245, + 245, 96, -1, 26, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + 62, -1, -1, 65, 27, 28, 29, 30, 31, -1, + 72, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, 12, -1, 14, -1, 16, 17, + 18, 19, 20, 14, -1, 16, 17, 18 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 27, 28, 29, 30, 31, 77, 79, 80, 81, - 82, 83, 85, 62, 62, 130, 62, 4, 62, 0, - 85, 85, 85, 85, 85, 4, 25, 87, 88, 85, - 85, 85, 85, 85, 1, 85, 86, 12, 14, 16, - 17, 18, 19, 20, 21, 26, 78, 90, 92, 115, - 116, 117, 118, 119, 121, 122, 123, 124, 126, 129, - 1, 12, 131, 132, 133, 11, 12, 15, 36, 37, + 0, 27, 28, 29, 30, 31, 78, 80, 81, 82, + 83, 84, 86, 63, 63, 131, 63, 4, 63, 0, + 86, 86, 86, 86, 86, 4, 25, 88, 89, 86, + 86, 86, 86, 86, 1, 86, 87, 12, 14, 16, + 17, 18, 19, 20, 21, 26, 79, 91, 93, 116, + 117, 118, 119, 120, 122, 123, 124, 125, 127, 130, + 1, 12, 132, 133, 134, 11, 12, 15, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 61, 64, 71, 114, 135, 137, 138, 139, - 140, 33, 34, 66, 101, 102, 104, 105, 116, 62, - 65, 143, 11, 4, 5, 89, 20, 12, 16, 59, - 60, 12, 85, 20, 1, 85, 85, 85, 1, 68, - 130, 1, 4, 64, 69, 70, 113, 12, 19, 121, - 122, 122, 1, 123, 63, 65, 143, 85, 1, 63, - 132, 63, 65, 16, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 138, 63, 68, 74, 136, 85, 85, 85, - 63, 63, 1, 85, 90, 91, 12, 85, 85, 12, - 19, 118, 125, 65, 143, 11, 58, 98, 12, 94, - 63, 85, 119, 85, 85, 85, 119, 122, 85, 63, - 65, 63, 65, 85, 85, 1, 135, 85, 85, 137, - 12, 99, 35, 12, 110, 63, 143, 144, 65, 86, - 26, 92, 93, 95, 11, 12, 13, 64, 84, 118, - 120, 121, 123, 85, 12, 125, 6, 7, 8, 9, - 10, 72, 73, 127, 85, 4, 98, 117, 85, 85, - 135, 67, 85, 85, 85, 85, 35, 103, 1, 1, - 85, 86, 1, 22, 23, 24, 75, 90, 96, 108, - 111, 112, 115, 141, 142, 85, 85, 85, 57, 121, - 123, 85, 72, 127, 85, 105, 106, 107, 32, 134, - 85, 16, 100, 101, 85, 63, 143, 65, 143, 65, - 143, 1, 85, 1, 85, 1, 1, 86, 67, 67, - 67, 85, 67, 85, 11, 12, 128, 65, 1, 68, - 85, 85, 67, 102, 65, 143, 62, 107, 65, 143, - 130, 65, 143, 67, 128, 85, 85, 135, 85, 85, - 62, 85, 72, 105, 85, 109, 85, 72, 63, 90, - 97, 115, 141, 142, 109, 1, 85, 63 + 58, 59, 60, 62, 65, 72, 115, 136, 138, 139, + 140, 141, 33, 34, 67, 102, 103, 105, 106, 117, + 63, 66, 144, 11, 4, 5, 90, 20, 12, 16, + 60, 61, 12, 86, 20, 1, 86, 86, 86, 1, + 69, 131, 1, 4, 65, 70, 71, 114, 12, 19, + 122, 123, 123, 1, 124, 64, 66, 144, 86, 1, + 64, 133, 64, 66, 16, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 139, 64, 69, 75, 137, 86, + 86, 86, 64, 64, 1, 86, 91, 92, 12, 86, + 86, 12, 19, 119, 126, 66, 144, 11, 59, 99, + 12, 95, 64, 86, 120, 86, 86, 86, 120, 123, + 86, 64, 66, 64, 66, 86, 86, 1, 136, 86, + 86, 138, 12, 100, 35, 12, 111, 64, 144, 145, + 66, 87, 26, 93, 94, 96, 11, 12, 13, 65, + 85, 119, 121, 122, 124, 86, 12, 126, 6, 7, + 8, 9, 10, 73, 74, 128, 86, 4, 99, 118, + 86, 86, 136, 68, 86, 86, 86, 86, 35, 104, + 1, 1, 86, 87, 1, 22, 23, 24, 76, 91, + 97, 109, 112, 113, 116, 142, 143, 86, 86, 86, + 58, 122, 124, 86, 73, 128, 86, 106, 107, 108, + 32, 135, 86, 16, 101, 102, 86, 64, 144, 66, + 144, 66, 144, 1, 86, 1, 86, 1, 1, 87, + 68, 68, 68, 86, 68, 86, 11, 12, 129, 66, + 1, 69, 86, 86, 68, 103, 66, 144, 63, 108, + 66, 144, 131, 66, 144, 68, 129, 86, 86, 136, + 86, 86, 63, 86, 73, 106, 86, 110, 86, 73, + 64, 91, 98, 116, 142, 143, 110, 1, 86, 64 }; #define yyerrok (yyerrstatus = 0) @@ -1672,87 +1676,87 @@ yydestruct (yymsg, yytype, yyvaluep) switch (yytype) { - case 100: /* "maybe_media_value" */ + case 101: /* "maybe_media_value" */ { delete (yyvaluep->valueList); (yyvaluep->valueList) = 0; }; break; - case 102: /* "media_query_exp_list" */ + case 103: /* "media_query_exp_list" */ { delete (yyvaluep->mediaQueryExpList); (yyvaluep->mediaQueryExpList) = 0; }; break; - case 103: /* "maybe_and_media_query_exp_list" */ + case 104: /* "maybe_and_media_query_exp_list" */ { delete (yyvaluep->mediaQueryExpList); (yyvaluep->mediaQueryExpList) = 0; }; break; - case 106: /* "maybe_media_list" */ + case 107: /* "maybe_media_list" */ { delete (yyvaluep->mediaList); (yyvaluep->mediaList) = 0; }; break; - case 107: /* "media_list" */ + case 108: /* "media_list" */ { delete (yyvaluep->mediaList); (yyvaluep->mediaList) = 0; }; break; - case 109: /* "ruleset_list" */ + case 110: /* "ruleset_list" */ { delete (yyvaluep->ruleList); (yyvaluep->ruleList) = 0; }; break; - case 116: /* "selector_list" */ + case 117: /* "selector_list" */ { if ((yyvaluep->selectorList)) qDeleteAll(*(yyvaluep->selectorList)); delete (yyvaluep->selectorList); (yyvaluep->selectorList) = 0; }; break; - case 117: /* "selector" */ + case 118: /* "selector" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 119: /* "simple_selector" */ + case 120: /* "simple_selector" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 120: /* "simple_css3_selector" */ + case 121: /* "simple_css3_selector" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 122: /* "specifier_list" */ + case 123: /* "specifier_list" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 123: /* "specifier" */ + case 124: /* "specifier" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 124: /* "class" */ + case 125: /* "class" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 126: /* "attrib" */ + case 127: /* "attrib" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 129: /* "pseudo" */ + case 130: /* "pseudo" */ { delete (yyvaluep->selector); (yyvaluep->selector) = 0; }; break; - case 135: /* "expr" */ + case 136: /* "expr" */ { delete (yyvaluep->valueList); (yyvaluep->valueList) = 0; }; break; - case 139: /* "function" */ + case 140: /* "function" */ { if ((yyvaluep->value).function) delete (yyvaluep->value).function->args; delete (yyvaluep->value).function; (yyvaluep->value).function = 0; }; @@ -3312,16 +3316,21 @@ yyreduce: case 188: - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].val); (yyval.value).unit = CSSPrimitiveValue::CSS_DPI; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].val); (yyval.value).unit = CSSPrimitiveValue::CSS_CHS; } break; case 189: - { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].val); (yyval.value).unit = CSSPrimitiveValue::CSS_DPCM; } + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].val); (yyval.value).unit = CSSPrimitiveValue::CSS_DPI; } break; case 190: + { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].val); (yyval.value).unit = CSSPrimitiveValue::CSS_DPCM; } + break; + + case 191: + { Function *f = new Function; f->name = (yyvsp[(1) - (5)].string); @@ -3332,7 +3341,7 @@ yyreduce: } break; - case 191: + case 192: { Function *f = new Function; @@ -3344,12 +3353,12 @@ yyreduce: } break; - case 192: + case 193: { (yyval.string) = (yyvsp[(1) - (2)].string); } break; - case 193: + case 194: { (yyval.rule) = 0; @@ -3359,7 +3368,7 @@ yyreduce: } break; - case 194: + case 195: { (yyval.rule) = 0; @@ -3369,7 +3378,7 @@ yyreduce: } break; - case 195: + case 196: { (yyval.rule) = 0; diff --git a/khtml/css/parser.h b/khtml/css/parser.h index 3e4a4d7d01..4bf59bd286 100644 --- a/khtml/css/parser.h +++ b/khtml/css/parser.h @@ -68,29 +68,30 @@ QEMS = 286, EMS = 287, EXS = 288, - PXS = 289, - CMS = 290, - MMS = 291, - INS = 292, - PTS = 293, - PCS = 294, - DEGS = 295, - RADS = 296, - GRADS = 297, - MSECS = 298, - SECS = 299, - HERZ = 300, - KHERZ = 301, - DPI = 302, - DPCM = 303, - DIMEN = 304, - PERCENTAGE = 305, - FLOAT = 306, - INTEGER = 307, - URI = 308, - FUNCTION = 309, - NOTFUNCTION = 310, - UNICODERANGE = 311 + CHS = 289, + PXS = 290, + CMS = 291, + MMS = 292, + INS = 293, + PTS = 294, + PCS = 295, + DEGS = 296, + RADS = 297, + GRADS = 298, + MSECS = 299, + SECS = 300, + HERZ = 301, + KHERZ = 302, + DPI = 303, + DPCM = 304, + DIMEN = 305, + PERCENTAGE = 306, + FLOAT = 307, + INTEGER = 308, + URI = 309, + FUNCTION = 310, + NOTFUNCTION = 311, + UNICODERANGE = 312 }; #endif diff --git a/khtml/css/parser.y b/khtml/css/parser.y index bad62bbd8f..3094d2c495 100644 --- a/khtml/css/parser.y +++ b/khtml/css/parser.y @@ -108,7 +108,7 @@ int DOM::getValueID(const char *tagStr, int len) #define YYLTYPE_IS_TRIVIAL 1 %} -%expect 39 +%expect 40 %pure_parser @@ -214,6 +214,7 @@ static int cssyylex( YYSTYPE *yylval ) { %token QEMS %token EMS %token EXS +%token CHS %token PXS %token CMS %token MMS @@ -1231,6 +1232,7 @@ unary_term: | EMS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_EMS; } | QEMS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = Value::Q_EMS; } | EXS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_EXS; } + | CHS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_CHS; } | DPI maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_DPI; } | DPCM maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_DPCM; } ; diff --git a/khtml/css/tokenizer.cpp b/khtml/css/tokenizer.cpp index 311e65a9fe..e4aae9c725 100644 --- a/khtml/css/tokenizer.cpp +++ b/khtml/css/tokenizer.cpp @@ -65,8 +65,8 @@ typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ -#define YY_NUM_RULES 65 -#define YY_END_OF_BUFFER 66 +#define YY_NUM_RULES 66 +#define YY_END_OF_BUFFER 67 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -74,53 +74,53 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[408] = +static yyconst flex_int16_t yy_accept[409] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 64, - 2, 2, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 50, 64, 64, 14, 14, 14, 64, 64, - 58, 64, 64, 64, 50, 63, 14, 14, 14, 62, - 60, 59, 64, 61, 2, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, + 2, 2, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 51, 65, 65, 14, 14, 14, 65, 65, + 59, 65, 65, 65, 51, 64, 14, 14, 14, 63, + 61, 60, 65, 62, 2, 0, 0, 0, 13, 0, 0, 17, 0, 8, 0, 0, 9, 0, 15, 0, - 14, 14, 0, 51, 0, 49, 0, 0, 50, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 15, 48, - 48, 43, 0, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 14, 0, 0, 0, 14, 14, 0, + 14, 14, 0, 52, 0, 50, 0, 0, 51, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 15, 49, + 49, 44, 0, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 14, 0, 0, 0, 14, 14, 0, - 14, 14, 14, 7, 6, 5, 51, 0, 50, 48, + 14, 14, 14, 7, 6, 5, 52, 0, 51, 49, 14, 14, 14, 0, 17, 0, 0, 0, 13, 0, 0, 17, 0, 17, 17, 0, 0, 13, 0, 0, - 4, 0, 0, 48, 0, 34, 48, 30, 32, 48, - 44, 36, 48, 35, 42, 48, 38, 37, 33, 48, - 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 14, 0, 15, 14, 14, 56, 56, 14, - 14, 48, 12, 10, 14, 0, 17, 0, 0, 0, - 17, 17, 17, 0, 0, 0, 1, 48, 48, 39, - 48, 47, 15, 40, 48, 48, 3, 0, 0, 0, - - 0, 0, 0, 0, 14, 52, 0, 56, 56, 56, - 55, 14, 48, 45, 11, 16, 16, 0, 0, 17, - 17, 0, 0, 0, 48, 41, 48, 48, 0, 0, - 0, 0, 0, 0, 19, 14, 57, 56, 56, 56, - 56, 0, 0, 0, 0, 54, 0, 14, 46, 0, - 17, 0, 0, 17, 17, 0, 48, 48, 31, 0, - 0, 0, 0, 20, 0, 14, 57, 56, 56, 56, - 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 14, 0, 17, 0, 0, 17, - 17, 0, 48, 48, 0, 0, 0, 18, 0, 14, - - 57, 56, 56, 56, 56, 56, 56, 0, 53, 0, + 4, 0, 0, 49, 0, 33, 35, 49, 30, 32, + 49, 45, 37, 49, 36, 43, 49, 39, 38, 34, + 49, 49, 49, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 14, 0, 15, 14, 14, 57, 57, + 14, 14, 49, 12, 10, 14, 0, 17, 0, 0, + 0, 17, 17, 17, 0, 0, 0, 1, 49, 49, + 40, 49, 48, 15, 41, 49, 49, 3, 0, 0, + + 0, 0, 0, 0, 0, 14, 53, 0, 57, 57, + 57, 56, 14, 49, 46, 11, 16, 16, 0, 0, + 17, 17, 0, 0, 0, 49, 42, 49, 49, 0, + 0, 0, 0, 0, 0, 19, 14, 58, 57, 57, + 57, 57, 0, 0, 0, 0, 55, 0, 14, 47, + 0, 17, 0, 0, 17, 17, 0, 49, 49, 31, + 0, 0, 0, 0, 20, 0, 14, 58, 57, 57, + 57, 57, 57, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 14, 0, 17, 0, 0, + 17, 17, 0, 49, 49, 0, 0, 0, 18, 0, + + 14, 58, 57, 57, 57, 57, 57, 57, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 16, 16, 0, 0, 17, 17, 0, 48, 48, - 0, 22, 0, 0, 14, 57, 56, 56, 56, 56, - 56, 56, 56, 0, 53, 0, 0, 0, 53, 0, - 0, 0, 0, 17, 48, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 29, 0, 0, 0, - 0, 0, 21, 23, 57, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 0, 0, 0, 25, 0, 0, 26, 0, 0, 0, - - 0, 0, 0, 0, 27, 28, 0 + 0, 14, 16, 16, 0, 0, 17, 17, 0, 49, + 49, 0, 22, 0, 0, 14, 58, 57, 57, 57, + 57, 57, 57, 57, 0, 54, 0, 0, 0, 54, + 0, 0, 0, 0, 17, 49, 0, 0, 0, 0, + 0, 0, 0, 58, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 21, 23, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 0, 25, 0, 0, 26, 0, 0, + + 0, 0, 0, 0, 0, 27, 28, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -168,111 +168,113 @@ static yyconst flex_int32_t yy_meta[84] = 4, 4, 10 } ; -static yyconst flex_int16_t yy_base[441] = +static yyconst flex_int16_t yy_base[442] = { 0, - 0, 0, 65, 69, 63, 67, 83, 86, 1201, 2820, - 96, 110, 124, 86, 78, 1176, 90, 1145, 83, 99, - 1134, 1138, 177, 1146, 243, 94, 260, 254, 259, 1115, - 2820, 1096, 1095, 1097, 132, 2820, 104, 318, 108, 2820, - 2820, 2820, 369, 2820, 174, 291, 69, 115, 2820, 428, - 101, 1056, 309, 2820, 121, 487, 2820, 117, 341, 1083, - 141, 371, 351, 329, 1062, 2820, 955, 986, 0, 936, - 116, 138, 232, 128, 300, 350, 359, 397, 449, 448, - 203, 866, 501, 130, 900, 237, 124, 263, 289, 302, - 144, 336, 2820, 342, 520, 508, 533, 560, 391, 882, - - 409, 392, 612, 2820, 2820, 2820, 552, 885, 449, 440, - 541, 554, 556, 618, 658, 350, 412, 261, 273, 717, - 776, 819, 671, 817, 835, 572, 298, 422, 894, 953, - 2820, 844, 173, 806, 677, 805, 443, 804, 802, 386, - 750, 714, 534, 700, 691, 632, 690, 659, 643, 538, - 642, 1012, 453, 665, 378, 390, 406, 513, 445, 557, - 550, 514, 1071, 652, 661, 608, 575, 331, 655, 578, - 730, 762, 606, 610, 718, 821, 854, 562, 426, 911, - 611, 1130, 966, 671, 972, 646, 2820, 607, 1189, 555, - 741, 552, 579, 550, 1025, 732, 2820, 620, 668, 679, - - 698, 705, 723, 724, 1031, 2820, 1065, 572, 562, 516, - 808, 1084, 777, 441, 740, 1117, 1175, 751, 1195, 1208, - 1229, 1242, 455, 586, 1248, 388, 1262, 778, 760, 755, - 398, 757, 624, 774, 2820, 1282, 1295, 739, 378, 337, - 336, 1354, 1368, 474, 835, 2820, 1420, 1356, 280, 1426, - 1439, 798, 1460, 1473, 1479, 1493, 1513, 1526, 251, 808, - 830, 841, 829, 2820, 847, 1546, 1559, 891, 244, 241, - 232, 231, 931, 689, 957, 1618, 892, 1677, 1389, 1630, - 1650, 1689, 1741, 1800, 1760, 1806, 1819, 638, 1840, 1853, - 1859, 1873, 1893, 1906, 186, 856, 892, 2820, 893, 1926, - - 1939, 912, 177, 176, 175, 166, 115, 973, 2820, 1103, - 816, 1329, 1998, 2057, 1365, 967, 1710, 2116, 2175, 2234, - 1984, 2820, 2017, 923, 2074, 2133, 1032, 2194, 2240, 2253, - 2274, 2820, 874, 935, 1045, 2296, 87, 2820, 2820, 2820, - 2820, 2820, 2820, 1972, 920, 1013, 2329, 2361, 1014, 1026, - 2349, 2362, 1079, 1162, 1176, 1048, 1078, 1109, 1138, 963, - 1139, 1140, 2395, 2408, 2414, 2428, 2820, 1154, 1154, 1191, - 1278, 1310, 2820, 2820, 2820, 2448, 2461, 2481, 1325, 1179, - 1250, 1304, 1331, 2494, 2514, 2527, 1334, 1371, 2820, 1373, - 1377, 1558, 1715, 2820, 1367, 1370, 2820, 1371, 1378, 1406, - - 1395, 1416, 1522, 1530, 2820, 2820, 2820, 2586, 2591, 2600, - 2605, 2611, 2618, 2627, 2632, 2639, 2648, 2658, 2660, 2665, - 2672, 2679, 2683, 2689, 2699, 2706, 2711, 2720, 2725, 2733, - 2743, 2748, 2756, 2765, 2774, 2779, 2787, 2796, 2801, 2809 + 0, 0, 65, 69, 63, 67, 83, 86, 1236, 2814, + 96, 110, 124, 86, 78, 1191, 90, 1183, 83, 99, + 1185, 1189, 177, 1184, 243, 94, 260, 254, 259, 1166, + 2814, 1152, 1151, 1140, 132, 2814, 104, 318, 108, 2814, + 2814, 2814, 369, 2814, 174, 291, 69, 115, 2814, 428, + 101, 1107, 309, 2814, 121, 487, 2814, 117, 341, 1120, + 141, 371, 351, 329, 1127, 2814, 1073, 1103, 0, 1033, + 381, 138, 232, 128, 300, 350, 384, 398, 507, 422, + 203, 1003, 473, 130, 1037, 118, 124, 233, 265, 297, + 113, 144, 2814, 341, 506, 550, 567, 572, 392, 1000, + + 401, 400, 624, 2814, 2814, 2814, 564, 1004, 560, 555, + 468, 537, 409, 611, 664, 349, 470, 261, 273, 723, + 782, 961, 630, 920, 841, 546, 298, 351, 900, 959, + 2814, 938, 173, 884, 677, 883, 881, 359, 871, 870, + 427, 867, 834, 389, 797, 795, 697, 784, 766, 765, + 549, 748, 1018, 550, 778, 299, 407, 409, 428, 483, + 456, 548, 454, 1077, 644, 742, 536, 544, 331, 721, + 547, 683, 735, 582, 619, 716, 795, 801, 569, 611, + 835, 626, 1136, 886, 621, 919, 662, 2814, 623, 1195, + 620, 715, 613, 342, 564, 972, 713, 2814, 685, 693, + + 701, 707, 726, 738, 745, 978, 2814, 1031, 387, 580, + 578, 873, 1037, 754, 548, 622, 1071, 1090, 746, 1123, + 1181, 1201, 1214, 576, 596, 1235, 495, 1248, 755, 842, + 837, 524, 839, 663, 839, 2814, 1254, 1268, 595, 502, + 467, 451, 1327, 1341, 749, 746, 2814, 1393, 1329, 309, + 1399, 1412, 849, 1433, 1446, 1452, 1466, 1486, 1499, 280, + 873, 746, 776, 892, 2814, 898, 1519, 1532, 597, 278, + 244, 241, 232, 979, 753, 1038, 1591, 747, 1650, 1362, + 1603, 1623, 1662, 1714, 1773, 1733, 1779, 1792, 899, 1813, + 1826, 1832, 1846, 1866, 1879, 239, 922, 940, 2814, 942, + + 1899, 1912, 948, 178, 177, 176, 175, 166, 1110, 2814, + 1155, 872, 1683, 1971, 2030, 1338, 836, 1983, 2089, 2148, + 2207, 1984, 2814, 1990, 930, 2047, 2106, 1168, 2167, 2213, + 2226, 2247, 2814, 956, 997, 1182, 2269, 87, 2814, 2814, + 2814, 2814, 2814, 2814, 2306, 882, 1064, 2309, 2330, 1020, + 1032, 2342, 2356, 1130, 1215, 1313, 1025, 1100, 1130, 1130, + 1234, 1277, 1289, 2375, 2389, 2408, 2422, 2814, 1322, 1324, + 1298, 1335, 1337, 2814, 2814, 2814, 2441, 2455, 2474, 1339, + 1347, 1352, 1358, 1344, 2488, 2507, 2521, 1347, 1325, 2814, + 1379, 1380, 1531, 1746, 2814, 1390, 1494, 2814, 1506, 1529, + + 1454, 1527, 1529, 1541, 1553, 2814, 2814, 2814, 2580, 2585, + 2594, 2599, 2605, 2612, 2621, 2626, 2633, 2642, 2652, 2654, + 2659, 2666, 2673, 2677, 2683, 2693, 2700, 2705, 2714, 2719, + 2727, 2737, 2742, 2750, 2759, 2768, 2773, 2781, 2790, 2795, + 2803 } ; -static yyconst flex_int16_t yy_def[441] = +static yyconst flex_int16_t yy_def[442] = { 0, - 407, 1, 1, 1, 1, 1, 1, 1, 407, 407, - 407, 407, 407, 408, 409, 407, 410, 407, 407, 411, - 407, 407, 407, 407, 407, 412, 412, 412, 413, 407, - 407, 407, 407, 407, 23, 407, 412, 412, 412, 407, - 407, 407, 409, 407, 407, 407, 407, 408, 407, 414, - 409, 415, 416, 407, 410, 417, 407, 407, 407, 407, - 412, 412, 413, 23, 418, 407, 419, 407, 23, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 421, 420, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 412, 422, 407, 407, 412, 412, 423, - - 412, 412, 412, 407, 407, 407, 23, 407, 23, 420, - 412, 412, 412, 407, 415, 407, 408, 408, 408, 408, - 414, 415, 424, 415, 115, 410, 410, 410, 410, 417, - 407, 418, 425, 420, 426, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 407, 407, 407, 407, 407, 407, 407, - 407, 412, 103, 407, 407, 412, 412, 427, 407, 412, - 103, 420, 412, 412, 412, 407, 115, 407, 408, 120, - 415, 115, 125, 410, 129, 428, 407, 420, 152, 420, - 420, 420, 420, 420, 152, 420, 407, 407, 407, 407, - - 407, 407, 407, 407, 163, 407, 407, 429, 407, 407, - 430, 103, 420, 420, 412, 407, 115, 407, 120, 182, - 125, 129, 428, 431, 189, 420, 152, 420, 407, 407, - 407, 407, 407, 407, 407, 163, 407, 432, 407, 407, - 407, 430, 430, 433, 434, 407, 435, 103, 420, 407, - 115, 407, 120, 182, 125, 129, 189, 152, 420, 407, - 407, 407, 407, 407, 407, 163, 407, 436, 407, 407, - 407, 407, 407, 433, 407, 437, 434, 438, 430, 430, - 430, 430, 430, 435, 248, 407, 115, 407, 120, 182, - 125, 129, 189, 152, 407, 407, 407, 407, 407, 163, - - 407, 439, 407, 407, 407, 407, 407, 407, 407, 433, - 433, 433, 433, 437, 434, 434, 434, 434, 440, 430, - 285, 407, 115, 407, 120, 182, 323, 129, 189, 152, - 407, 407, 407, 407, 321, 407, 407, 407, 407, 407, - 407, 407, 407, 433, 433, 433, 313, 434, 434, 434, - 318, 320, 407, 323, 330, 407, 407, 407, 407, 407, - 407, 407, 407, 313, 318, 320, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 313, 318, 320, 407, 407, - 407, 407, 407, 313, 318, 320, 407, 407, 407, 407, - 407, 433, 434, 407, 407, 407, 407, 407, 407, 407, - - 407, 407, 407, 407, 407, 407, 0, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407 + 408, 1, 1, 1, 1, 1, 1, 1, 408, 408, + 408, 408, 408, 409, 410, 408, 411, 408, 408, 412, + 408, 408, 408, 408, 408, 413, 413, 413, 414, 408, + 408, 408, 408, 408, 23, 408, 413, 413, 413, 408, + 408, 408, 410, 408, 408, 408, 408, 409, 408, 415, + 410, 416, 417, 408, 411, 418, 408, 408, 408, 408, + 413, 413, 414, 23, 419, 408, 420, 408, 23, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 422, 421, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 413, 423, 408, 408, 413, 413, 424, + + 413, 413, 413, 408, 408, 408, 23, 408, 23, 421, + 413, 413, 413, 408, 416, 408, 409, 409, 409, 409, + 415, 416, 425, 416, 115, 411, 411, 411, 411, 418, + 408, 419, 426, 421, 427, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 408, 408, 408, 408, 408, 408, + 408, 408, 413, 103, 408, 408, 413, 413, 428, 408, + 413, 103, 421, 413, 413, 413, 408, 115, 408, 409, + 120, 416, 115, 125, 411, 129, 429, 408, 421, 153, + 421, 421, 421, 421, 421, 153, 421, 408, 408, 408, + + 408, 408, 408, 408, 408, 164, 408, 408, 430, 408, + 408, 431, 103, 421, 421, 413, 408, 115, 408, 120, + 183, 125, 129, 429, 432, 190, 421, 153, 421, 408, + 408, 408, 408, 408, 408, 408, 164, 408, 433, 408, + 408, 408, 431, 431, 434, 435, 408, 436, 103, 421, + 408, 115, 408, 120, 183, 125, 129, 190, 153, 421, + 408, 408, 408, 408, 408, 408, 164, 408, 437, 408, + 408, 408, 408, 408, 434, 408, 438, 435, 439, 431, + 431, 431, 431, 431, 436, 249, 408, 115, 408, 120, + 183, 125, 129, 190, 153, 408, 408, 408, 408, 408, + + 164, 408, 440, 408, 408, 408, 408, 408, 408, 408, + 434, 434, 434, 434, 438, 435, 435, 435, 435, 441, + 431, 286, 408, 115, 408, 120, 183, 324, 129, 190, + 153, 408, 408, 408, 408, 322, 408, 408, 408, 408, + 408, 408, 408, 408, 434, 434, 434, 314, 435, 435, + 435, 319, 321, 408, 324, 331, 408, 408, 408, 408, + 408, 408, 408, 408, 314, 319, 321, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 314, 319, 321, 408, + 408, 408, 408, 408, 314, 319, 321, 408, 408, 408, + 408, 408, 434, 435, 408, 408, 408, 408, 408, 408, + + 408, 408, 408, 408, 408, 408, 408, 0, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408 } ; -static yyconst flex_int16_t yy_nxt[2904] = +static yyconst flex_int16_t yy_nxt[2898] = { 0, 10, 11, 12, 11, 11, 11, 13, 14, 15, 16, 10, 10, 17, 10, 10, 18, 19, 20, 21, 22, @@ -285,318 +287,317 @@ static yyconst flex_int16_t yy_nxt[2904] = 10, 33, 26, 34, 41, 35, 36, 34, 41, 35, 36, 43, 37, 49, 43, 51, 37, 45, 45, 45, - 45, 45, 49, 58, 207, 38, 39, 93, 116, 38, - 39, 45, 45, 45, 45, 45, 60, 93, 407, 58, + 45, 45, 49, 58, 208, 38, 39, 93, 116, 38, + 39, 45, 45, 45, 45, 45, 60, 93, 408, 58, 37, 93, 49, 59, 37, 46, 46, 46, 46, 46, 53, 38, 39, 49, 116, 38, 39, 58, 50, 62, - 343, 42, 56, 40, 111, 42, 95, 40, 113, 59, - 108, 63, 109, 53, 93, 136, 95, 59, 156, 47, - 95, 10, 110, 44, 10, 62, 44, 50, 135, 137, - 111, 160, 140, 56, 113, 45, 45, 45, 45, 45, - 135, 136, 135, 59, 153, 156, 47, 66, 133, 110, - 135, 342, 187, 95, 67, 68, 137, 69, 140, 160, - - 341, 340, 339, 331, 70, 70, 71, 72, 73, 70, + 161, 42, 56, 40, 111, 42, 95, 40, 113, 59, + 108, 63, 109, 53, 93, 156, 95, 59, 157, 47, + 95, 10, 110, 44, 10, 62, 44, 50, 161, 138, + 111, 162, 141, 56, 113, 45, 45, 45, 45, 45, + 135, 156, 135, 59, 154, 157, 47, 66, 133, 110, + 135, 344, 188, 95, 67, 68, 138, 69, 141, 162, + + 343, 342, 341, 340, 70, 70, 71, 72, 73, 70, 74, 75, 76, 70, 77, 70, 78, 79, 70, 80, 70, 81, 82, 70, 70, 70, 70, 70, 70, 83, - 150, 84, 70, 71, 72, 73, 70, 74, 75, 76, + 151, 84, 70, 71, 72, 73, 70, 74, 75, 76, 77, 70, 78, 79, 70, 80, 70, 81, 82, 70, - 70, 70, 70, 70, 70, 135, 307, 306, 150, 70, - 86, 96, 96, 96, 96, 96, 305, 93, 49, 304, - 100, 138, 87, 93, 155, 88, 97, 98, 89, 103, - 49, 139, 90, 91, 135, 92, 103, 103, 103, 103, - 103, 103, 46, 46, 46, 46, 46, 138, 101, 87, + 70, 70, 70, 70, 70, 135, 332, 308, 151, 70, + 86, 96, 96, 96, 96, 96, 307, 93, 49, 306, + 100, 139, 87, 93, 158, 88, 97, 98, 89, 103, + 49, 140, 90, 91, 135, 92, 103, 103, 103, 103, + 103, 103, 46, 46, 46, 46, 46, 139, 101, 87, - 155, 99, 88, 135, 157, 89, 95, 139, 90, 91, + 158, 99, 88, 305, 159, 89, 95, 140, 90, 91, 49, 92, 95, 50, 103, 103, 103, 103, 103, 96, - 96, 96, 96, 96, 101, 50, 47, 99, 158, 125, - 157, 93, 135, 159, 97, 98, 125, 125, 125, 125, - 125, 125, 96, 96, 96, 96, 96, 407, 207, 64, - 56, 141, 135, 47, 158, 93, 209, 97, 97, 112, - 159, 272, 271, 161, 125, 125, 125, 125, 125, 70, - 95, 103, 96, 96, 96, 96, 96, 141, 103, 103, + 96, 96, 96, 96, 101, 50, 47, 99, 160, 125, + 159, 93, 135, 199, 97, 98, 125, 125, 125, 125, + 125, 125, 96, 96, 96, 96, 96, 408, 208, 64, + 56, 142, 135, 47, 93, 160, 210, 97, 97, 112, + 199, 135, 194, 49, 125, 125, 125, 125, 125, 70, + 95, 103, 96, 96, 96, 96, 96, 142, 103, 103, 103, 103, 103, 103, 93, 112, 51, 97, 98, 114, - 142, 161, 178, 143, 95, 70, 115, 115, 115, 115, - - 115, 115, 135, 270, 93, 93, 103, 103, 103, 103, - 103, 135, 198, 191, 48, 262, 142, 199, 178, 49, - 143, 53, 93, 95, 115, 115, 115, 115, 115, 48, - 48, 48, 117, 49, 49, 119, 144, 167, 135, 198, - 135, 191, 145, 95, 95, 199, 200, 170, 120, 135, - 96, 96, 96, 96, 96, 120, 120, 120, 120, 120, - 120, 95, 144, 167, 50, 97, 146, 108, 145, 109, - 224, 137, 200, 170, 56, 202, 190, 147, 50, 110, - 121, 275, 172, 120, 120, 120, 120, 120, 55, 55, - 55, 126, 135, 135, 148, 135, 196, 149, 137, 128, - - 135, 135, 202, 190, 147, 135, 110, 129, 172, 96, - 96, 96, 96, 96, 129, 129, 129, 129, 129, 129, - 148, 152, 196, 149, 97, 97, 276, 93, 152, 152, - 152, 152, 152, 152, 164, 164, 164, 164, 164, 130, - 163, 241, 129, 129, 129, 129, 129, 163, 163, 163, - 163, 163, 163, 165, 93, 201, 152, 152, 152, 152, - 152, 164, 164, 164, 164, 164, 95, 93, 194, 93, - 407, 173, 107, 93, 55, 163, 163, 163, 163, 163, - 166, 201, 110, 204, 49, 192, 135, 240, 206, 207, - 135, 211, 70, 95, 175, 194, 203, 239, 173, 193, - - 174, 224, 135, 218, 135, 187, 95, 135, 95, 110, - 204, 192, 95, 102, 102, 102, 102, 102, 70, 93, - 175, 93, 203, 206, 56, 93, 174, 95, 166, 218, - 95, 135, 171, 164, 164, 164, 164, 164, 176, 171, - 171, 171, 171, 171, 171, 176, 176, 176, 176, 176, - 176, 264, 193, 164, 164, 164, 164, 164, 95, 135, - 95, 224, 95, 123, 95, 324, 229, 171, 171, 171, - 171, 171, 165, 176, 176, 176, 176, 176, 177, 264, - 210, 165, 197, 49, 135, 177, 177, 177, 177, 177, - 177, 182, 229, 324, 135, 135, 275, 189, 182, 182, - - 182, 182, 182, 182, 189, 189, 189, 189, 189, 189, - 123, 135, 230, 177, 177, 177, 177, 177, 118, 179, - 179, 179, 118, 56, 49, 231, 182, 182, 182, 182, - 182, 93, 189, 189, 189, 189, 189, 180, 230, 232, - 233, 276, 135, 135, 180, 180, 180, 180, 180, 180, - 212, 231, 135, 93, 234, 235, 207, 212, 212, 212, - 212, 212, 212, 228, 269, 232, 135, 233, 215, 50, - 95, 226, 180, 180, 180, 180, 180, 48, 48, 48, - 117, 234, 235, 119, 135, 212, 212, 212, 212, 212, - 228, 213, 95, 135, 215, 252, 120, 214, 226, 260, - - 261, 263, 135, 120, 120, 120, 120, 120, 120, 242, - 242, 242, 242, 242, 135, 244, 249, 259, 213, 265, - 245, 252, 246, 275, 214, 260, 261, 263, 121, 135, - 135, 120, 120, 120, 120, 120, 124, 124, 124, 124, - 124, 216, 249, 259, 288, 265, 295, 275, 216, 216, - 216, 216, 216, 216, 135, 183, 135, 135, 135, 133, - 247, 296, 183, 183, 183, 183, 183, 183, 276, 123, - 288, 123, 295, 297, 217, 298, 216, 216, 216, 216, - 216, 217, 217, 217, 217, 217, 217, 278, 296, 299, - 183, 183, 183, 183, 183, 127, 184, 184, 184, 127, - - 297, 298, 332, 361, 275, 107, 49, 169, 207, 217, - 217, 217, 217, 217, 185, 299, 303, 154, 135, 333, - 334, 185, 185, 185, 185, 185, 185, 275, 332, 207, - 361, 219, 273, 273, 273, 273, 273, 338, 219, 219, - 219, 219, 219, 219, 278, 246, 56, 333, 334, 185, - 185, 185, 185, 185, 55, 55, 55, 126, 308, 308, - 308, 308, 308, 353, 362, 128, 219, 219, 219, 219, - 219, 309, 276, 129, 308, 308, 308, 308, 308, 275, - 129, 129, 129, 129, 129, 129, 221, 309, 135, 353, - 372, 362, 222, 221, 221, 221, 221, 221, 221, 222, - - 222, 222, 222, 222, 222, 130, 64, 83, 129, 129, - 129, 129, 129, 151, 151, 151, 151, 151, 372, 278, - 275, 221, 221, 221, 221, 221, 275, 222, 222, 222, - 222, 222, 195, 124, 124, 124, 124, 124, 275, 195, - 195, 195, 195, 195, 195, 227, 162, 162, 162, 162, - 162, 236, 227, 227, 227, 227, 227, 227, 236, 236, - 236, 236, 236, 236, 135, 276, 278, 195, 195, 195, - 195, 195, 162, 162, 162, 162, 162, 133, 278, 368, - 227, 227, 227, 227, 227, 237, 236, 236, 236, 236, - 236, 205, 237, 237, 237, 237, 237, 237, 205, 205, - - 205, 205, 205, 205, 248, 274, 368, 131, 123, 369, - 275, 248, 248, 248, 248, 248, 248, 107, 106, 105, - 237, 237, 237, 237, 237, 367, 205, 205, 205, 205, - 205, 181, 181, 181, 181, 181, 369, 250, 104, 248, - 248, 248, 248, 248, 250, 250, 250, 250, 250, 250, - 220, 367, 85, 65, 64, 276, 370, 220, 220, 220, - 220, 220, 220, 181, 181, 181, 181, 181, 57, 371, - 373, 374, 250, 250, 250, 250, 250, 188, 188, 188, - 188, 188, 370, 379, 380, 220, 220, 220, 220, 220, - 188, 188, 188, 188, 188, 251, 371, 373, 374, 54, - - 407, 407, 251, 251, 251, 251, 251, 251, 407, 225, - 379, 380, 407, 407, 388, 253, 225, 225, 225, 225, - 225, 225, 253, 253, 253, 253, 253, 253, 254, 381, - 251, 251, 251, 251, 251, 254, 254, 254, 254, 254, - 254, 388, 407, 407, 225, 225, 225, 225, 225, 255, - 253, 253, 253, 253, 253, 381, 255, 255, 255, 255, - 255, 255, 256, 254, 254, 254, 254, 254, 257, 256, - 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, - 257, 389, 258, 407, 255, 255, 255, 255, 255, 258, - 258, 258, 258, 258, 258, 407, 407, 256, 256, 256, - - 256, 256, 266, 257, 257, 257, 257, 257, 389, 266, - 266, 266, 266, 266, 266, 267, 382, 258, 258, 258, - 258, 258, 267, 267, 267, 267, 267, 267, 407, 407, - 344, 308, 308, 308, 344, 390, 275, 266, 266, 266, - 266, 266, 382, 345, 407, 407, 407, 407, 383, 407, - 267, 267, 267, 267, 267, 242, 242, 242, 242, 242, - 407, 244, 390, 387, 407, 407, 245, 277, 246, 273, - 273, 273, 273, 273, 383, 407, 285, 275, 391, 394, - 407, 276, 246, 285, 285, 285, 285, 285, 285, 387, - 273, 273, 273, 273, 273, 407, 407, 407, 395, 407, - - 407, 407, 396, 246, 391, 394, 247, 407, 397, 407, - 398, 285, 285, 285, 285, 285, 399, 278, 400, 401, - 247, 273, 273, 273, 273, 279, 395, 281, 407, 396, - 407, 407, 281, 281, 282, 397, 398, 402, 407, 403, - 283, 247, 399, 407, 400, 401, 286, 283, 283, 283, - 283, 283, 283, 286, 286, 286, 286, 286, 286, 287, - 404, 407, 407, 407, 402, 403, 287, 287, 287, 287, - 287, 287, 284, 407, 407, 283, 283, 283, 283, 283, - 289, 286, 286, 286, 286, 286, 404, 289, 289, 289, - 289, 289, 289, 290, 287, 287, 287, 287, 287, 291, - - 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, - 291, 291, 407, 292, 407, 289, 289, 289, 289, 289, - 292, 292, 292, 292, 292, 292, 407, 407, 290, 290, - 290, 290, 290, 293, 291, 291, 291, 291, 291, 407, - 293, 293, 293, 293, 293, 293, 294, 407, 292, 292, - 292, 292, 292, 294, 294, 294, 294, 294, 294, 311, - 346, 346, 346, 311, 407, 275, 300, 405, 293, 293, - 293, 293, 293, 300, 300, 300, 300, 300, 300, 301, - 406, 294, 294, 294, 294, 294, 301, 301, 301, 301, - 301, 301, 407, 405, 407, 407, 407, 407, 407, 407, - - 407, 300, 300, 300, 300, 300, 406, 407, 407, 407, - 276, 407, 407, 407, 301, 301, 301, 301, 301, 274, - 274, 274, 310, 407, 407, 312, 407, 407, 407, 407, - 407, 273, 273, 273, 273, 273, 407, 407, 313, 407, - 407, 407, 407, 407, 246, 313, 313, 313, 313, 313, - 313, 273, 273, 273, 273, 273, 407, 407, 407, 407, - 407, 407, 407, 407, 246, 407, 407, 407, 407, 407, - 314, 407, 407, 313, 313, 313, 313, 313, 277, 277, - 277, 315, 247, 407, 407, 407, 407, 407, 407, 317, - 273, 273, 273, 273, 273, 407, 407, 318, 407, 407, - - 407, 407, 247, 246, 318, 318, 318, 318, 318, 318, - 407, 348, 308, 308, 308, 348, 316, 350, 350, 350, - 316, 407, 275, 407, 349, 407, 407, 275, 407, 319, - 407, 407, 318, 318, 318, 318, 318, 407, 407, 407, - 407, 247, 279, 279, 279, 279, 279, 407, 407, 407, - 407, 407, 407, 407, 407, 246, 407, 407, 407, 407, - 407, 320, 278, 407, 407, 407, 407, 278, 320, 320, - 320, 320, 320, 320, 407, 407, 407, 407, 407, 407, - 321, 407, 407, 407, 407, 407, 407, 321, 321, 321, - 321, 321, 321, 247, 407, 407, 320, 320, 320, 320, - - 320, 273, 273, 273, 273, 279, 407, 281, 407, 407, - 407, 407, 281, 281, 282, 321, 321, 321, 321, 321, - 283, 407, 407, 407, 407, 407, 322, 283, 283, 283, - 283, 283, 283, 322, 322, 322, 322, 322, 322, 323, - 407, 407, 407, 407, 407, 407, 323, 323, 323, 323, - 323, 323, 284, 407, 407, 283, 283, 283, 283, 283, - 325, 322, 322, 322, 322, 322, 407, 325, 325, 325, - 325, 325, 325, 326, 323, 323, 323, 323, 323, 327, - 326, 326, 326, 326, 326, 326, 327, 327, 327, 327, - 327, 327, 407, 328, 407, 325, 325, 325, 325, 325, - - 328, 328, 328, 328, 328, 328, 407, 407, 326, 326, - 326, 326, 326, 329, 327, 327, 327, 327, 327, 407, - 329, 329, 329, 329, 329, 329, 330, 407, 328, 328, - 328, 328, 328, 330, 330, 330, 330, 330, 330, 407, - 407, 407, 407, 407, 407, 407, 335, 407, 329, 329, - 329, 329, 329, 335, 335, 335, 335, 335, 335, 336, - 407, 330, 330, 330, 330, 330, 336, 336, 336, 336, - 336, 336, 407, 344, 308, 308, 308, 344, 407, 275, - 407, 335, 335, 335, 335, 335, 345, 407, 407, 407, - 407, 407, 407, 407, 336, 336, 336, 336, 336, 311, - - 346, 346, 346, 311, 94, 275, 407, 407, 407, 407, - 407, 94, 94, 94, 94, 94, 94, 407, 347, 407, - 407, 407, 407, 407, 276, 347, 347, 347, 347, 347, - 347, 407, 407, 407, 407, 407, 407, 122, 407, 94, - 94, 94, 94, 94, 122, 122, 122, 122, 122, 122, - 276, 407, 407, 347, 347, 347, 347, 347, 274, 274, - 274, 310, 407, 407, 312, 407, 407, 407, 407, 407, - 407, 407, 122, 122, 122, 122, 122, 313, 407, 407, - 407, 407, 407, 407, 313, 313, 313, 313, 313, 313, - 407, 407, 407, 407, 48, 407, 407, 407, 407, 407, - - 407, 48, 48, 48, 48, 48, 48, 407, 407, 314, - 407, 407, 313, 313, 313, 313, 313, 316, 350, 350, - 350, 316, 407, 407, 407, 407, 407, 407, 275, 48, - 48, 48, 48, 48, 407, 407, 351, 407, 407, 407, - 407, 407, 407, 351, 351, 351, 351, 351, 351, 407, - 407, 407, 407, 354, 407, 407, 407, 407, 407, 407, - 354, 354, 354, 354, 354, 354, 407, 407, 278, 407, - 407, 351, 351, 351, 351, 351, 277, 277, 277, 315, - 407, 407, 407, 407, 407, 407, 407, 317, 354, 354, - 354, 354, 354, 407, 407, 318, 407, 407, 407, 407, - - 407, 407, 318, 318, 318, 318, 318, 318, 407, 407, - 407, 407, 407, 407, 55, 407, 407, 407, 407, 407, - 407, 55, 55, 55, 55, 55, 55, 319, 407, 407, - 318, 318, 318, 318, 318, 279, 279, 279, 279, 279, - 407, 407, 407, 407, 407, 407, 407, 407, 246, 55, - 55, 55, 55, 55, 352, 407, 407, 407, 407, 407, - 355, 352, 352, 352, 352, 352, 352, 355, 355, 355, - 355, 355, 355, 134, 407, 407, 407, 407, 407, 407, - 134, 134, 134, 134, 134, 134, 247, 407, 407, 352, - 352, 352, 352, 352, 407, 355, 355, 355, 355, 355, - - 407, 407, 407, 407, 356, 407, 407, 407, 134, 134, - 134, 134, 134, 357, 407, 407, 363, 407, 358, 359, - 407, 407, 360, 363, 363, 363, 363, 363, 363, 407, - 407, 356, 407, 407, 407, 407, 407, 407, 407, 357, - 407, 407, 407, 407, 358, 359, 407, 407, 360, 364, - 407, 363, 363, 363, 363, 363, 364, 364, 364, 364, - 364, 364, 348, 308, 308, 308, 348, 407, 407, 365, - 407, 407, 407, 275, 407, 349, 365, 365, 365, 365, - 365, 365, 366, 407, 364, 364, 364, 364, 364, 366, - 366, 366, 366, 366, 366, 407, 407, 407, 407, 407, - - 407, 407, 407, 407, 365, 365, 365, 365, 365, 407, - 407, 407, 407, 278, 407, 375, 407, 366, 366, 366, - 366, 366, 375, 375, 375, 375, 375, 375, 376, 407, - 407, 407, 407, 407, 377, 376, 376, 376, 376, 376, - 376, 377, 377, 377, 377, 377, 377, 407, 378, 407, - 375, 375, 375, 375, 375, 378, 378, 378, 378, 378, - 378, 407, 407, 376, 376, 376, 376, 376, 384, 377, - 377, 377, 377, 377, 407, 384, 384, 384, 384, 384, - 384, 385, 407, 378, 378, 378, 378, 378, 385, 385, - 385, 385, 385, 385, 407, 407, 407, 407, 407, 407, - - 407, 386, 407, 384, 384, 384, 384, 384, 386, 386, - 386, 386, 386, 386, 392, 407, 385, 385, 385, 385, - 385, 392, 392, 392, 392, 392, 392, 407, 407, 407, - 407, 407, 407, 407, 393, 407, 386, 386, 386, 386, - 386, 393, 393, 393, 393, 393, 393, 243, 407, 392, - 392, 392, 392, 392, 243, 243, 243, 243, 243, 243, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 393, - 393, 393, 393, 393, 407, 407, 407, 407, 407, 407, - 407, 407, 243, 243, 243, 243, 243, 48, 407, 48, - 48, 48, 48, 48, 48, 48, 52, 407, 407, 52, - - 52, 55, 407, 55, 55, 55, 55, 55, 55, 55, - 61, 61, 407, 61, 61, 94, 94, 94, 407, 94, - 94, 102, 102, 102, 102, 102, 102, 102, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 122, 122, 407, - 122, 122, 124, 124, 124, 124, 124, 124, 124, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 70, 70, - 134, 134, 407, 134, 134, 151, 151, 151, 151, 151, - 151, 151, 162, 162, 162, 162, 162, 162, 162, 168, - 168, 168, 181, 181, 181, 181, 181, 181, 181, 186, - - 186, 186, 186, 186, 186, 186, 186, 186, 186, 188, - 188, 188, 188, 188, 188, 188, 208, 208, 208, 208, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 238, 238, 238, 238, 243, 243, 243, 407, 243, 243, - 243, 243, 243, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 268, 268, 268, 268, 274, 407, 274, - 274, 274, 274, 274, 274, 274, 277, 407, 277, 277, - 277, 277, 277, 277, 277, 280, 280, 280, 280, 280, - 280, 280, 280, 280, 302, 302, 302, 302, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 316, 316, 316, - - 316, 316, 316, 316, 316, 316, 337, 337, 337, 337, - 316, 316, 316, 316, 316, 316, 316, 316, 316, 9, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - - 407, 407, 407 + 143, 179, 191, 95, 135, 70, 115, 115, 115, 115, + + 115, 115, 135, 56, 208, 93, 103, 103, 103, 103, + 103, 135, 240, 93, 93, 136, 143, 179, 144, 191, + 137, 53, 93, 95, 115, 115, 115, 115, 115, 48, + 48, 48, 117, 135, 200, 119, 135, 145, 168, 171, + 193, 135, 136, 146, 95, 144, 137, 176, 120, 201, + 135, 148, 95, 95, 192, 120, 120, 120, 120, 120, + 120, 95, 200, 145, 168, 171, 193, 93, 149, 146, + 202, 150, 48, 176, 135, 201, 273, 49, 148, 135, + 121, 93, 192, 120, 120, 120, 120, 120, 55, 55, + 55, 126, 272, 153, 149, 204, 202, 150, 174, 128, + + 153, 153, 153, 153, 153, 153, 95, 129, 96, 96, + 96, 96, 96, 203, 129, 129, 129, 129, 129, 129, + 95, 204, 50, 97, 147, 174, 164, 271, 153, 153, + 153, 153, 153, 164, 164, 164, 164, 164, 164, 130, + 203, 263, 129, 129, 129, 129, 129, 135, 55, 93, + 93, 96, 96, 96, 96, 96, 167, 207, 49, 135, + 212, 164, 164, 164, 164, 164, 97, 97, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 108, 195, + 109, 205, 408, 175, 107, 93, 138, 166, 95, 95, + 110, 225, 167, 197, 110, 93, 95, 173, 56, 95, + + 135, 135, 135, 242, 70, 241, 195, 135, 205, 175, + 219, 225, 208, 138, 208, 188, 135, 110, 49, 197, + 270, 110, 304, 173, 95, 102, 102, 102, 102, 102, + 70, 177, 207, 49, 95, 93, 219, 93, 177, 177, + 177, 177, 177, 177, 172, 165, 165, 165, 165, 165, + 183, 172, 172, 172, 172, 172, 172, 183, 183, 183, + 183, 183, 183, 50, 166, 135, 177, 177, 177, 177, + 177, 95, 135, 56, 95, 135, 95, 225, 123, 172, + 172, 172, 172, 172, 178, 183, 183, 183, 183, 183, + 265, 178, 178, 178, 178, 178, 178, 190, 165, 165, + + 165, 165, 165, 213, 190, 190, 190, 190, 190, 190, + 213, 213, 213, 213, 213, 213, 123, 194, 265, 178, + 178, 178, 178, 178, 118, 180, 180, 180, 118, 93, + 49, 230, 190, 190, 190, 190, 190, 231, 213, 213, + 213, 213, 213, 181, 229, 227, 211, 232, 233, 135, + 181, 181, 181, 181, 181, 181, 276, 230, 276, 276, + 276, 234, 166, 231, 214, 135, 216, 135, 95, 235, + 215, 229, 227, 232, 233, 50, 236, 297, 181, 181, + 181, 181, 181, 48, 48, 48, 117, 135, 234, 119, + 253, 214, 216, 250, 260, 198, 235, 215, 279, 279, + + 135, 277, 120, 236, 297, 277, 135, 135, 298, 120, + 120, 120, 120, 120, 120, 217, 253, 135, 135, 250, + 260, 218, 217, 217, 217, 217, 217, 217, 218, 218, + 218, 218, 218, 218, 121, 298, 135, 120, 120, 120, + 120, 120, 124, 124, 124, 124, 124, 135, 276, 135, + 217, 217, 217, 217, 217, 220, 218, 218, 218, 218, + 218, 184, 220, 220, 220, 220, 220, 220, 184, 184, + 184, 184, 184, 184, 243, 243, 243, 243, 243, 276, + 245, 261, 262, 264, 266, 246, 135, 247, 279, 276, + 220, 220, 220, 220, 220, 289, 184, 184, 184, 184, + + 184, 127, 185, 185, 185, 127, 222, 261, 262, 264, + 266, 296, 49, 222, 222, 222, 222, 222, 222, 135, + 186, 289, 135, 135, 277, 248, 325, 186, 186, 186, + 186, 186, 186, 135, 277, 135, 135, 296, 299, 223, + 300, 222, 222, 222, 222, 222, 223, 223, 223, 223, + 223, 223, 56, 133, 325, 186, 186, 186, 186, 186, + 55, 55, 55, 126, 299, 208, 300, 334, 333, 335, + 354, 128, 123, 339, 223, 223, 223, 223, 223, 129, + 274, 274, 274, 274, 274, 362, 129, 129, 129, 129, + 129, 129, 228, 247, 333, 334, 354, 335, 237, 228, + + 228, 228, 228, 228, 228, 237, 237, 237, 237, 237, + 237, 130, 362, 123, 129, 129, 129, 129, 129, 152, + 152, 152, 152, 152, 107, 170, 363, 228, 228, 228, + 228, 228, 276, 237, 237, 237, 237, 237, 196, 309, + 309, 309, 309, 309, 276, 196, 196, 196, 196, 196, + 196, 238, 310, 363, 155, 135, 369, 249, 238, 238, + 238, 238, 238, 238, 249, 249, 249, 249, 249, 249, + 135, 276, 279, 196, 196, 196, 196, 196, 163, 163, + 163, 163, 163, 369, 279, 135, 238, 238, 238, 238, + 238, 251, 249, 249, 249, 249, 249, 206, 251, 251, + + 251, 251, 251, 251, 206, 206, 206, 206, 206, 206, + 252, 309, 309, 309, 309, 309, 277, 252, 252, 252, + 252, 252, 252, 64, 310, 83, 251, 251, 251, 251, + 251, 370, 206, 206, 206, 206, 206, 182, 182, 182, + 182, 182, 133, 254, 131, 252, 252, 252, 252, 252, + 254, 254, 254, 254, 254, 254, 221, 275, 370, 123, + 107, 372, 276, 221, 221, 221, 221, 221, 221, 124, + 124, 124, 124, 124, 106, 105, 368, 371, 254, 254, + 254, 254, 254, 163, 163, 163, 163, 163, 372, 104, + 85, 221, 221, 221, 221, 221, 189, 189, 189, 189, + + 189, 255, 368, 371, 65, 64, 57, 277, 255, 255, + 255, 255, 255, 255, 54, 226, 182, 182, 182, 182, + 182, 256, 226, 226, 226, 226, 226, 226, 256, 256, + 256, 256, 256, 256, 257, 408, 255, 255, 255, 255, + 255, 257, 257, 257, 257, 257, 257, 408, 408, 408, + 226, 226, 226, 226, 226, 258, 256, 256, 256, 256, + 256, 373, 258, 258, 258, 258, 258, 258, 259, 257, + 257, 257, 257, 257, 267, 259, 259, 259, 259, 259, + 259, 267, 267, 267, 267, 267, 267, 408, 268, 373, + 258, 258, 258, 258, 258, 268, 268, 268, 268, 268, + + 268, 408, 408, 259, 259, 259, 259, 259, 374, 267, + 267, 267, 267, 267, 189, 189, 189, 189, 189, 408, + 375, 408, 408, 268, 268, 268, 268, 268, 243, 243, + 243, 243, 243, 408, 245, 374, 382, 408, 408, 246, + 278, 247, 274, 274, 274, 274, 274, 375, 408, 286, + 276, 380, 396, 408, 381, 247, 286, 286, 286, 286, + 286, 286, 382, 274, 274, 274, 274, 274, 408, 408, + 408, 408, 408, 383, 408, 384, 247, 388, 380, 248, + 396, 381, 389, 390, 286, 286, 286, 286, 286, 391, + 279, 392, 395, 248, 274, 274, 274, 274, 280, 383, + + 282, 384, 408, 388, 408, 282, 282, 283, 397, 389, + 390, 398, 408, 284, 248, 408, 391, 392, 395, 287, + 284, 284, 284, 284, 284, 284, 287, 287, 287, 287, + 287, 287, 288, 399, 408, 397, 408, 408, 398, 288, + 288, 288, 288, 288, 288, 285, 408, 408, 284, 284, + 284, 284, 284, 290, 287, 287, 287, 287, 287, 399, + 290, 290, 290, 290, 290, 290, 291, 288, 288, 288, + 288, 288, 292, 291, 291, 291, 291, 291, 291, 292, + 292, 292, 292, 292, 292, 403, 293, 408, 290, 290, + 290, 290, 290, 293, 293, 293, 293, 293, 293, 408, + + 408, 291, 291, 291, 291, 291, 294, 292, 292, 292, + 292, 292, 403, 294, 294, 294, 294, 294, 294, 295, + 408, 293, 293, 293, 293, 293, 295, 295, 295, 295, + 295, 295, 312, 347, 347, 347, 312, 408, 276, 301, + 400, 294, 294, 294, 294, 294, 301, 301, 301, 301, + 301, 301, 302, 401, 295, 295, 295, 295, 295, 302, + 302, 302, 302, 302, 302, 408, 400, 408, 408, 408, + 402, 404, 408, 405, 301, 301, 301, 301, 301, 401, + 408, 408, 408, 277, 408, 408, 406, 302, 302, 302, + 302, 302, 275, 275, 275, 311, 402, 404, 313, 405, + + 408, 408, 408, 407, 274, 274, 274, 274, 274, 408, + 408, 314, 406, 408, 408, 408, 408, 247, 314, 314, + 314, 314, 314, 314, 274, 274, 274, 274, 274, 407, + 408, 408, 408, 408, 408, 408, 408, 247, 408, 408, + 408, 408, 408, 315, 408, 408, 314, 314, 314, 314, + 314, 278, 278, 278, 316, 248, 408, 408, 408, 408, + 408, 408, 318, 274, 274, 274, 274, 274, 408, 408, + 319, 408, 408, 408, 408, 248, 247, 319, 319, 319, + 319, 319, 319, 408, 345, 309, 309, 309, 345, 408, + 276, 408, 408, 408, 408, 408, 408, 346, 408, 408, + + 408, 408, 320, 408, 408, 319, 319, 319, 319, 319, + 408, 408, 408, 408, 248, 280, 280, 280, 280, 280, + 408, 408, 408, 408, 408, 408, 408, 408, 247, 408, + 408, 408, 408, 408, 321, 277, 408, 408, 408, 408, + 408, 321, 321, 321, 321, 321, 321, 317, 351, 351, + 351, 317, 408, 322, 408, 408, 408, 408, 276, 408, + 322, 322, 322, 322, 322, 322, 248, 408, 408, 321, + 321, 321, 321, 321, 274, 274, 274, 274, 280, 408, + 282, 408, 408, 408, 408, 282, 282, 283, 322, 322, + 322, 322, 322, 284, 408, 408, 408, 408, 279, 323, + + 284, 284, 284, 284, 284, 284, 323, 323, 323, 323, + 323, 323, 324, 408, 408, 408, 408, 408, 408, 324, + 324, 324, 324, 324, 324, 285, 408, 408, 284, 284, + 284, 284, 284, 326, 323, 323, 323, 323, 323, 408, + 326, 326, 326, 326, 326, 326, 327, 324, 324, 324, + 324, 324, 328, 327, 327, 327, 327, 327, 327, 328, + 328, 328, 328, 328, 328, 408, 329, 408, 326, 326, + 326, 326, 326, 329, 329, 329, 329, 329, 329, 408, + 408, 327, 327, 327, 327, 327, 330, 328, 328, 328, + 328, 328, 408, 330, 330, 330, 330, 330, 330, 331, + + 408, 329, 329, 329, 329, 329, 331, 331, 331, 331, + 331, 331, 408, 408, 408, 408, 408, 408, 408, 336, + 408, 330, 330, 330, 330, 330, 336, 336, 336, 336, + 336, 336, 337, 408, 331, 331, 331, 331, 331, 337, + 337, 337, 337, 337, 337, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 336, 336, 336, 336, 336, 408, + 408, 408, 408, 408, 408, 408, 408, 337, 337, 337, + 337, 337, 312, 347, 347, 347, 312, 408, 276, 408, + 408, 408, 408, 408, 349, 309, 309, 309, 349, 408, + 408, 348, 408, 408, 408, 276, 408, 350, 348, 348, + + 348, 348, 348, 348, 94, 408, 408, 408, 408, 408, + 122, 94, 94, 94, 94, 94, 94, 122, 122, 122, + 122, 122, 122, 277, 408, 408, 348, 348, 348, 348, + 348, 275, 275, 275, 311, 279, 408, 313, 408, 94, + 94, 94, 94, 94, 408, 122, 122, 122, 122, 122, + 314, 408, 408, 408, 408, 408, 408, 314, 314, 314, + 314, 314, 314, 408, 408, 408, 408, 48, 408, 408, + 408, 408, 408, 408, 48, 48, 48, 48, 48, 48, + 408, 408, 315, 408, 408, 314, 314, 314, 314, 314, + 317, 351, 351, 351, 317, 408, 408, 408, 408, 408, + + 408, 276, 48, 48, 48, 48, 48, 408, 408, 352, + 408, 408, 408, 408, 408, 408, 352, 352, 352, 352, + 352, 352, 408, 408, 408, 408, 355, 408, 408, 408, + 408, 408, 408, 355, 355, 355, 355, 355, 355, 408, + 408, 279, 408, 408, 352, 352, 352, 352, 352, 278, + 278, 278, 316, 408, 408, 408, 408, 408, 408, 408, + 318, 355, 355, 355, 355, 355, 408, 408, 319, 408, + 408, 408, 408, 408, 408, 319, 319, 319, 319, 319, + 319, 408, 408, 408, 408, 408, 408, 55, 408, 408, + 408, 408, 408, 408, 55, 55, 55, 55, 55, 55, + + 320, 408, 408, 319, 319, 319, 319, 319, 280, 280, + 280, 280, 280, 408, 408, 408, 408, 408, 408, 408, + 408, 247, 55, 55, 55, 55, 55, 353, 408, 408, + 408, 408, 408, 356, 353, 353, 353, 353, 353, 353, + 356, 356, 356, 356, 356, 356, 134, 408, 408, 408, + 408, 408, 408, 134, 134, 134, 134, 134, 134, 248, + 408, 408, 353, 353, 353, 353, 353, 408, 356, 356, + 356, 356, 356, 408, 408, 408, 408, 357, 408, 408, + 408, 134, 134, 134, 134, 134, 358, 408, 408, 364, + 408, 359, 360, 408, 408, 361, 364, 364, 364, 364, + + 364, 364, 408, 408, 357, 408, 408, 345, 309, 309, + 309, 345, 358, 276, 408, 408, 408, 359, 360, 408, + 346, 361, 408, 408, 364, 364, 364, 364, 364, 365, + 408, 349, 309, 309, 309, 349, 365, 365, 365, 365, + 365, 365, 276, 408, 350, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 277, 408, + 408, 408, 366, 408, 365, 365, 365, 365, 365, 366, + 366, 366, 366, 366, 366, 408, 367, 408, 408, 408, + 408, 408, 279, 367, 367, 367, 367, 367, 367, 408, + 408, 408, 408, 408, 408, 376, 408, 366, 366, 366, + + 366, 366, 376, 376, 376, 376, 376, 376, 408, 377, + 408, 367, 367, 367, 367, 367, 377, 377, 377, 377, + 377, 377, 408, 408, 408, 408, 408, 408, 378, 408, + 376, 376, 376, 376, 376, 378, 378, 378, 378, 378, + 378, 408, 379, 408, 377, 377, 377, 377, 377, 379, + 379, 379, 379, 379, 379, 408, 408, 408, 408, 408, + 408, 385, 408, 378, 378, 378, 378, 378, 385, 385, + 385, 385, 385, 385, 408, 386, 408, 379, 379, 379, + 379, 379, 386, 386, 386, 386, 386, 386, 408, 408, + 408, 408, 408, 408, 387, 408, 385, 385, 385, 385, + + 385, 387, 387, 387, 387, 387, 387, 408, 393, 408, + 386, 386, 386, 386, 386, 393, 393, 393, 393, 393, + 393, 408, 408, 408, 408, 408, 408, 394, 408, 387, + 387, 387, 387, 387, 394, 394, 394, 394, 394, 394, + 408, 244, 408, 393, 393, 393, 393, 393, 244, 244, + 244, 244, 244, 244, 408, 408, 408, 408, 408, 408, + 408, 408, 394, 394, 394, 394, 394, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 244, 244, 244, 244, + 244, 48, 408, 48, 48, 48, 48, 48, 48, 48, + 52, 408, 408, 52, 52, 55, 408, 55, 55, 55, + + 55, 55, 55, 55, 61, 61, 408, 61, 61, 94, + 94, 94, 408, 94, 94, 102, 102, 102, 102, 102, + 102, 102, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 122, 122, 408, 122, 122, 124, 124, 124, 124, + 124, 124, 124, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 70, 70, 134, 134, 408, 134, 134, 152, + 152, 152, 152, 152, 152, 152, 163, 163, 163, 163, + 163, 163, 163, 169, 169, 169, 182, 182, 182, 182, + 182, 182, 182, 187, 187, 187, 187, 187, 187, 187, + + 187, 187, 187, 189, 189, 189, 189, 189, 189, 189, + 209, 209, 209, 209, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 239, 239, 239, 239, 244, 244, + 244, 408, 244, 244, 244, 244, 244, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 269, 269, 269, + 269, 275, 408, 275, 275, 275, 275, 275, 275, 275, + 278, 408, 278, 278, 278, 278, 278, 278, 278, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 303, 303, + 303, 303, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 317, 317, 317, 317, 317, 317, 317, 317, 317, + + 338, 338, 338, 338, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 9, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408 + } ; -static yyconst flex_int16_t yy_chk[2904] = +static yyconst flex_int16_t yy_chk[2898] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -609,315 +610,314 @@ static yyconst flex_int16_t yy_chk[2904] = 1, 1, 1, 3, 5, 3, 3, 4, 6, 4, 4, 7, 3, 14, 8, 15, 4, 11, 11, 11, - 11, 11, 17, 19, 337, 3, 3, 26, 47, 4, + 11, 11, 17, 19, 338, 3, 3, 26, 47, 4, 4, 12, 12, 12, 12, 12, 20, 37, 51, 20, 3, 39, 48, 19, 4, 13, 13, 13, 13, 13, 15, 3, 3, 55, 47, 4, 4, 58, 14, 20, - 307, 5, 17, 3, 37, 6, 26, 4, 39, 19, - 35, 20, 35, 51, 61, 71, 37, 58, 87, 13, - 39, 7, 35, 7, 8, 20, 8, 48, 71, 72, - 37, 91, 74, 55, 39, 45, 45, 45, 45, 45, - 74, 71, 84, 58, 84, 87, 13, 23, 133, 35, - 72, 306, 133, 61, 23, 23, 72, 23, 74, 91, - - 305, 304, 303, 295, 23, 23, 23, 23, 23, 23, + 91, 5, 17, 3, 37, 6, 26, 4, 39, 19, + 35, 20, 35, 51, 61, 86, 37, 58, 87, 13, + 39, 7, 35, 7, 8, 20, 8, 48, 91, 72, + 37, 92, 74, 55, 39, 45, 45, 45, 45, 45, + 74, 86, 84, 58, 84, 87, 13, 23, 133, 35, + 72, 308, 133, 61, 23, 23, 72, 23, 74, 92, + + 307, 306, 305, 304, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 81, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 81, 272, 271, 81, 23, - 25, 27, 27, 27, 27, 27, 270, 28, 118, 269, - 28, 73, 25, 27, 86, 25, 27, 27, 25, 29, + 23, 23, 23, 23, 23, 81, 296, 273, 81, 23, + 25, 27, 27, 27, 27, 27, 272, 28, 118, 271, + 28, 73, 25, 27, 88, 25, 27, 27, 25, 29, 119, 73, 25, 25, 73, 25, 29, 29, 29, 29, 29, 29, 46, 46, 46, 46, 46, 73, 28, 25, - 86, 27, 25, 259, 88, 25, 28, 73, 25, 25, + 88, 27, 25, 270, 89, 25, 28, 73, 25, 25, 127, 25, 27, 118, 29, 29, 29, 29, 29, 38, - 38, 38, 38, 38, 28, 119, 46, 27, 89, 53, - 88, 38, 249, 90, 38, 38, 53, 53, 53, 53, - 53, 53, 59, 59, 59, 59, 59, 64, 168, 64, - 127, 75, 75, 46, 89, 94, 168, 59, 59, 38, - 90, 241, 240, 92, 53, 53, 53, 53, 53, 64, + 38, 38, 38, 38, 28, 119, 46, 27, 90, 53, + 89, 38, 260, 156, 38, 38, 53, 53, 53, 53, + 53, 53, 59, 59, 59, 59, 59, 64, 169, 64, + 127, 75, 75, 46, 94, 90, 169, 59, 59, 38, + 156, 250, 194, 128, 53, 53, 53, 53, 53, 64, 38, 63, 62, 62, 62, 62, 62, 75, 63, 63, 63, 63, 63, 63, 62, 38, 43, 62, 62, 43, - 76, 92, 116, 77, 94, 64, 43, 43, 43, 43, - - 43, 43, 76, 239, 99, 102, 63, 63, 63, 63, - 63, 77, 155, 140, 117, 231, 76, 156, 116, 117, - 77, 43, 101, 62, 43, 43, 43, 43, 43, 50, - 50, 50, 50, 179, 128, 50, 78, 99, 140, 155, - 226, 140, 78, 99, 102, 156, 157, 101, 50, 78, - 79, 79, 79, 79, 79, 50, 50, 50, 50, 50, - 50, 101, 78, 99, 117, 79, 79, 109, 78, 109, - 223, 110, 157, 101, 128, 159, 137, 80, 179, 109, - 50, 244, 110, 50, 50, 50, 50, 50, 56, 56, - 56, 56, 110, 214, 80, 137, 153, 80, 110, 56, - - 80, 79, 159, 137, 80, 153, 109, 56, 110, 96, - 96, 96, 96, 96, 56, 56, 56, 56, 56, 56, - 80, 83, 153, 80, 96, 96, 244, 162, 83, 83, - 83, 83, 83, 83, 97, 97, 97, 97, 97, 56, - 95, 210, 56, 56, 56, 56, 56, 95, 95, 95, - 95, 95, 95, 97, 111, 158, 83, 83, 83, 83, - 83, 98, 98, 98, 98, 98, 162, 112, 150, 113, - 107, 111, 107, 98, 126, 95, 95, 95, 95, 95, - 98, 158, 107, 161, 126, 143, 143, 209, 167, 208, - 150, 170, 107, 111, 113, 150, 160, 208, 111, 193, - - 112, 224, 194, 178, 192, 224, 112, 190, 113, 107, - 161, 143, 98, 103, 103, 103, 103, 103, 107, 173, - 113, 166, 160, 174, 126, 103, 112, 167, 166, 178, - 170, 193, 103, 146, 146, 146, 146, 146, 114, 103, - 103, 103, 103, 103, 103, 114, 114, 114, 114, 114, - 114, 233, 146, 164, 164, 164, 164, 164, 173, 188, - 166, 186, 174, 181, 103, 288, 198, 103, 103, 103, - 103, 103, 164, 114, 114, 114, 114, 114, 115, 233, - 169, 165, 154, 184, 146, 115, 115, 115, 115, 115, - 115, 123, 198, 288, 151, 149, 274, 135, 123, 123, - - 123, 123, 123, 123, 135, 135, 135, 135, 135, 135, - 115, 148, 199, 115, 115, 115, 115, 115, 120, 120, - 120, 120, 120, 184, 120, 200, 123, 123, 123, 123, - 123, 175, 135, 135, 135, 135, 135, 120, 199, 201, - 202, 274, 147, 145, 120, 120, 120, 120, 120, 120, - 171, 200, 144, 215, 203, 204, 238, 171, 171, 171, - 171, 171, 171, 196, 238, 201, 142, 202, 175, 120, - 175, 191, 120, 120, 120, 120, 120, 121, 121, 121, - 121, 203, 204, 121, 196, 171, 171, 171, 171, 171, - 196, 172, 215, 191, 175, 218, 121, 172, 191, 229, - - 230, 232, 141, 121, 121, 121, 121, 121, 121, 211, - 211, 211, 211, 211, 172, 211, 213, 228, 172, 234, - 211, 218, 211, 311, 172, 229, 230, 232, 121, 213, - 228, 121, 121, 121, 121, 121, 125, 125, 125, 125, - 125, 176, 213, 228, 252, 234, 260, 245, 176, 176, - 176, 176, 176, 176, 139, 125, 138, 136, 134, 132, - 211, 261, 125, 125, 125, 125, 125, 125, 311, 124, - 252, 122, 260, 262, 177, 263, 176, 176, 176, 176, - 176, 177, 177, 177, 177, 177, 177, 245, 261, 265, - 125, 125, 125, 125, 125, 129, 129, 129, 129, 129, - - 262, 263, 296, 333, 277, 108, 129, 100, 268, 177, - 177, 177, 177, 177, 129, 265, 268, 85, 82, 297, - 299, 129, 129, 129, 129, 129, 129, 345, 296, 302, - 333, 180, 273, 273, 273, 273, 273, 302, 180, 180, - 180, 180, 180, 180, 277, 273, 129, 297, 299, 129, - 129, 129, 129, 129, 130, 130, 130, 130, 275, 275, - 275, 275, 275, 324, 334, 130, 180, 180, 180, 180, - 180, 275, 345, 130, 308, 308, 308, 308, 308, 316, - 130, 130, 130, 130, 130, 130, 183, 308, 70, 324, - 360, 334, 185, 183, 183, 183, 183, 183, 183, 185, - - 185, 185, 185, 185, 185, 130, 68, 67, 130, 130, - 130, 130, 130, 152, 152, 152, 152, 152, 360, 316, - 346, 183, 183, 183, 183, 183, 349, 185, 185, 185, - 185, 185, 152, 327, 327, 327, 327, 327, 350, 152, - 152, 152, 152, 152, 152, 195, 335, 335, 335, 335, - 335, 205, 195, 195, 195, 195, 195, 195, 205, 205, - 205, 205, 205, 205, 152, 346, 349, 152, 152, 152, - 152, 152, 163, 163, 163, 163, 163, 65, 350, 356, - 195, 195, 195, 195, 195, 207, 205, 205, 205, 205, - 205, 163, 207, 207, 207, 207, 207, 207, 163, 163, - - 163, 163, 163, 163, 212, 310, 356, 60, 52, 357, - 310, 212, 212, 212, 212, 212, 212, 34, 33, 32, - 207, 207, 207, 207, 207, 353, 163, 163, 163, 163, - 163, 182, 182, 182, 182, 182, 357, 216, 30, 212, - 212, 212, 212, 212, 216, 216, 216, 216, 216, 216, - 182, 353, 24, 22, 21, 310, 358, 182, 182, 182, - 182, 182, 182, 354, 354, 354, 354, 354, 18, 359, - 361, 362, 216, 216, 216, 216, 216, 355, 355, 355, - 355, 355, 358, 368, 369, 182, 182, 182, 182, 182, - 189, 189, 189, 189, 189, 217, 359, 361, 362, 16, - - 9, 0, 217, 217, 217, 217, 217, 217, 0, 189, - 368, 369, 0, 0, 380, 219, 189, 189, 189, 189, - 189, 189, 219, 219, 219, 219, 219, 219, 220, 370, - 217, 217, 217, 217, 217, 220, 220, 220, 220, 220, - 220, 380, 0, 0, 189, 189, 189, 189, 189, 221, - 219, 219, 219, 219, 219, 370, 221, 221, 221, 221, - 221, 221, 222, 220, 220, 220, 220, 220, 225, 222, - 222, 222, 222, 222, 222, 225, 225, 225, 225, 225, - 225, 381, 227, 0, 221, 221, 221, 221, 221, 227, - 227, 227, 227, 227, 227, 0, 0, 222, 222, 222, - - 222, 222, 236, 225, 225, 225, 225, 225, 381, 236, - 236, 236, 236, 236, 236, 237, 371, 227, 227, 227, - 227, 227, 237, 237, 237, 237, 237, 237, 0, 0, - 312, 312, 312, 312, 312, 382, 312, 236, 236, 236, - 236, 236, 371, 312, 0, 0, 0, 0, 372, 0, - 237, 237, 237, 237, 237, 242, 242, 242, 242, 242, - 0, 242, 382, 379, 0, 0, 242, 315, 242, 243, - 243, 243, 243, 243, 372, 243, 248, 315, 383, 387, - 243, 312, 243, 248, 248, 248, 248, 248, 248, 379, - 279, 279, 279, 279, 279, 0, 279, 0, 388, 0, - - 0, 279, 390, 279, 383, 387, 242, 0, 391, 0, - 395, 248, 248, 248, 248, 248, 396, 315, 398, 399, - 243, 247, 247, 247, 247, 247, 388, 247, 0, 390, - 0, 0, 247, 247, 247, 391, 395, 400, 0, 401, - 247, 279, 396, 0, 398, 399, 250, 247, 247, 247, - 247, 247, 247, 250, 250, 250, 250, 250, 250, 251, - 402, 0, 0, 0, 400, 401, 251, 251, 251, 251, - 251, 251, 247, 0, 0, 247, 247, 247, 247, 247, - 253, 250, 250, 250, 250, 250, 402, 253, 253, 253, - 253, 253, 253, 254, 251, 251, 251, 251, 251, 255, - - 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, - 255, 255, 0, 256, 0, 253, 253, 253, 253, 253, - 256, 256, 256, 256, 256, 256, 0, 0, 254, 254, - 254, 254, 254, 257, 255, 255, 255, 255, 255, 0, - 257, 257, 257, 257, 257, 257, 258, 0, 256, 256, - 256, 256, 256, 258, 258, 258, 258, 258, 258, 392, - 392, 392, 392, 392, 0, 392, 266, 403, 257, 257, - 257, 257, 257, 266, 266, 266, 266, 266, 266, 267, - 404, 258, 258, 258, 258, 258, 267, 267, 267, 267, - 267, 267, 0, 403, 0, 0, 0, 0, 0, 0, - - 0, 266, 266, 266, 266, 266, 404, 0, 0, 0, - 392, 0, 0, 0, 267, 267, 267, 267, 267, 276, - 276, 276, 276, 0, 0, 276, 0, 0, 0, 0, - 0, 280, 280, 280, 280, 280, 0, 280, 276, 0, - 0, 0, 280, 0, 280, 276, 276, 276, 276, 276, - 276, 281, 281, 281, 281, 281, 0, 281, 0, 0, - 0, 0, 281, 0, 281, 0, 0, 0, 0, 0, - 276, 0, 0, 276, 276, 276, 276, 276, 278, 278, - 278, 278, 280, 0, 0, 0, 0, 0, 0, 278, - 282, 282, 282, 282, 282, 0, 282, 278, 0, 0, - - 0, 282, 281, 282, 278, 278, 278, 278, 278, 278, - 0, 317, 317, 317, 317, 317, 393, 393, 393, 393, - 393, 0, 317, 0, 317, 0, 0, 393, 0, 278, - 0, 0, 278, 278, 278, 278, 278, 0, 0, 0, - 0, 282, 283, 283, 283, 283, 283, 0, 283, 0, - 0, 0, 0, 283, 0, 283, 0, 0, 0, 0, - 0, 283, 317, 0, 0, 0, 0, 393, 283, 283, - 283, 283, 283, 283, 0, 0, 0, 0, 0, 0, - 285, 0, 0, 0, 0, 0, 0, 285, 285, 285, - 285, 285, 285, 283, 0, 0, 283, 283, 283, 283, - - 283, 284, 284, 284, 284, 284, 0, 284, 0, 0, - 0, 0, 284, 284, 284, 285, 285, 285, 285, 285, - 284, 0, 0, 0, 0, 0, 286, 284, 284, 284, - 284, 284, 284, 286, 286, 286, 286, 286, 286, 287, - 0, 0, 0, 0, 0, 0, 287, 287, 287, 287, - 287, 287, 284, 0, 0, 284, 284, 284, 284, 284, - 289, 286, 286, 286, 286, 286, 0, 289, 289, 289, - 289, 289, 289, 290, 287, 287, 287, 287, 287, 291, - 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, - 291, 291, 0, 292, 0, 289, 289, 289, 289, 289, - - 292, 292, 292, 292, 292, 292, 0, 0, 290, 290, - 290, 290, 290, 293, 291, 291, 291, 291, 291, 0, - 293, 293, 293, 293, 293, 293, 294, 0, 292, 292, - 292, 292, 292, 294, 294, 294, 294, 294, 294, 0, - 0, 0, 0, 0, 0, 0, 300, 0, 293, 293, - 293, 293, 293, 300, 300, 300, 300, 300, 300, 301, + 76, 116, 138, 94, 194, 64, 43, 43, 43, 43, + + 43, 43, 76, 128, 209, 99, 63, 63, 63, 63, + 63, 138, 209, 102, 101, 71, 76, 116, 77, 138, + 71, 43, 113, 62, 43, 43, 43, 43, 43, 50, + 50, 50, 50, 71, 157, 50, 77, 78, 99, 101, + 144, 144, 71, 78, 99, 77, 71, 113, 50, 158, + 78, 80, 102, 101, 141, 50, 50, 50, 50, 50, + 50, 113, 157, 78, 99, 101, 144, 163, 80, 78, + 159, 80, 117, 113, 80, 158, 242, 117, 80, 141, + 50, 111, 141, 50, 50, 50, 50, 50, 56, 56, + 56, 56, 241, 83, 80, 161, 159, 80, 111, 56, + + 83, 83, 83, 83, 83, 83, 163, 56, 79, 79, + 79, 79, 79, 160, 56, 56, 56, 56, 56, 56, + 111, 161, 117, 79, 79, 111, 95, 240, 83, 83, + 83, 83, 83, 95, 95, 95, 95, 95, 95, 56, + 160, 232, 56, 56, 56, 56, 56, 227, 126, 167, + 112, 96, 96, 96, 96, 96, 167, 168, 126, 79, + 171, 95, 95, 95, 95, 95, 96, 96, 97, 97, + 97, 97, 97, 98, 98, 98, 98, 98, 109, 151, + 109, 162, 107, 112, 107, 98, 110, 97, 167, 112, + 109, 224, 98, 154, 107, 174, 168, 110, 126, 171, + + 215, 151, 154, 211, 107, 210, 151, 110, 162, 112, + 179, 225, 239, 110, 269, 225, 195, 109, 180, 154, + 239, 107, 269, 110, 98, 103, 103, 103, 103, 103, + 107, 114, 175, 185, 174, 216, 179, 103, 114, 114, + 114, 114, 114, 114, 103, 165, 165, 165, 165, 165, + 123, 103, 103, 103, 103, 103, 103, 123, 123, 123, + 123, 123, 123, 180, 165, 193, 114, 114, 114, 114, + 114, 175, 191, 185, 216, 189, 103, 187, 182, 103, + 103, 103, 103, 103, 115, 123, 123, 123, 123, 123, + 234, 115, 115, 115, 115, 115, 115, 135, 147, 147, + + 147, 147, 147, 172, 135, 135, 135, 135, 135, 135, + 172, 172, 172, 172, 172, 172, 115, 147, 234, 115, + 115, 115, 115, 115, 120, 120, 120, 120, 120, 176, + 120, 199, 135, 135, 135, 135, 135, 200, 172, 172, + 172, 172, 172, 120, 197, 192, 170, 201, 202, 147, + 120, 120, 120, 120, 120, 120, 245, 199, 246, 278, + 275, 203, 166, 200, 173, 197, 176, 192, 176, 204, + 173, 197, 192, 201, 202, 120, 205, 262, 120, 120, + 120, 120, 120, 121, 121, 121, 121, 173, 203, 121, + 219, 173, 176, 214, 229, 155, 204, 173, 246, 278, + + 152, 245, 121, 205, 262, 275, 214, 229, 263, 121, + 121, 121, 121, 121, 121, 177, 219, 150, 149, 214, + 229, 178, 177, 177, 177, 177, 177, 177, 178, 178, + 178, 178, 178, 178, 121, 263, 148, 121, 121, 121, + 121, 121, 125, 125, 125, 125, 125, 146, 317, 145, + 177, 177, 177, 177, 177, 181, 178, 178, 178, 178, + 178, 125, 181, 181, 181, 181, 181, 181, 125, 125, + 125, 125, 125, 125, 212, 212, 212, 212, 212, 312, + 212, 230, 231, 233, 235, 212, 143, 212, 317, 346, + 181, 181, 181, 181, 181, 253, 125, 125, 125, 125, + + 125, 129, 129, 129, 129, 129, 184, 230, 231, 233, + 235, 261, 129, 184, 184, 184, 184, 184, 184, 142, + 129, 253, 140, 139, 312, 212, 289, 129, 129, 129, + 129, 129, 129, 137, 346, 136, 134, 261, 264, 186, + 266, 184, 184, 184, 184, 184, 186, 186, 186, 186, + 186, 186, 129, 132, 289, 129, 129, 129, 129, 129, + 130, 130, 130, 130, 264, 303, 266, 298, 297, 300, + 325, 130, 124, 303, 186, 186, 186, 186, 186, 130, + 274, 274, 274, 274, 274, 334, 130, 130, 130, 130, + 130, 130, 196, 274, 297, 298, 325, 300, 206, 196, + + 196, 196, 196, 196, 196, 206, 206, 206, 206, 206, + 206, 130, 334, 122, 130, 130, 130, 130, 130, 153, + 153, 153, 153, 153, 108, 100, 335, 196, 196, 196, + 196, 196, 350, 206, 206, 206, 206, 206, 153, 276, + 276, 276, 276, 276, 351, 153, 153, 153, 153, 153, + 153, 208, 276, 335, 85, 82, 357, 213, 208, 208, + 208, 208, 208, 208, 213, 213, 213, 213, 213, 213, + 153, 347, 350, 153, 153, 153, 153, 153, 164, 164, + 164, 164, 164, 357, 351, 70, 208, 208, 208, 208, + 208, 217, 213, 213, 213, 213, 213, 164, 217, 217, + + 217, 217, 217, 217, 164, 164, 164, 164, 164, 164, + 218, 309, 309, 309, 309, 309, 347, 218, 218, 218, + 218, 218, 218, 68, 309, 67, 217, 217, 217, 217, + 217, 358, 164, 164, 164, 164, 164, 183, 183, 183, + 183, 183, 65, 220, 60, 218, 218, 218, 218, 218, + 220, 220, 220, 220, 220, 220, 183, 311, 358, 52, + 34, 360, 311, 183, 183, 183, 183, 183, 183, 328, + 328, 328, 328, 328, 33, 32, 354, 359, 220, 220, + 220, 220, 220, 336, 336, 336, 336, 336, 360, 30, + 24, 183, 183, 183, 183, 183, 190, 190, 190, 190, + + 190, 221, 354, 359, 22, 21, 18, 311, 221, 221, + 221, 221, 221, 221, 16, 190, 355, 355, 355, 355, + 355, 222, 190, 190, 190, 190, 190, 190, 222, 222, + 222, 222, 222, 222, 223, 9, 221, 221, 221, 221, + 221, 223, 223, 223, 223, 223, 223, 0, 0, 0, + 190, 190, 190, 190, 190, 226, 222, 222, 222, 222, + 222, 361, 226, 226, 226, 226, 226, 226, 228, 223, + 223, 223, 223, 223, 237, 228, 228, 228, 228, 228, + 228, 237, 237, 237, 237, 237, 237, 0, 238, 361, + 226, 226, 226, 226, 226, 238, 238, 238, 238, 238, + + 238, 0, 0, 228, 228, 228, 228, 228, 362, 237, + 237, 237, 237, 237, 356, 356, 356, 356, 356, 0, + 363, 0, 0, 238, 238, 238, 238, 238, 243, 243, + 243, 243, 243, 0, 243, 362, 371, 0, 0, 243, + 316, 243, 244, 244, 244, 244, 244, 363, 244, 249, + 316, 369, 389, 244, 370, 244, 249, 249, 249, 249, + 249, 249, 371, 280, 280, 280, 280, 280, 0, 280, + 0, 0, 0, 372, 280, 373, 280, 380, 369, 243, + 389, 370, 381, 382, 249, 249, 249, 249, 249, 383, + 316, 384, 388, 244, 248, 248, 248, 248, 248, 372, + + 248, 373, 0, 380, 0, 248, 248, 248, 391, 381, + 382, 392, 0, 248, 280, 0, 383, 384, 388, 251, + 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, + 251, 251, 252, 396, 0, 391, 0, 0, 392, 252, + 252, 252, 252, 252, 252, 248, 0, 0, 248, 248, + 248, 248, 248, 254, 251, 251, 251, 251, 251, 396, + 254, 254, 254, 254, 254, 254, 255, 252, 252, 252, + 252, 252, 256, 255, 255, 255, 255, 255, 255, 256, + 256, 256, 256, 256, 256, 401, 257, 0, 254, 254, + 254, 254, 254, 257, 257, 257, 257, 257, 257, 0, + + 0, 255, 255, 255, 255, 255, 258, 256, 256, 256, + 256, 256, 401, 258, 258, 258, 258, 258, 258, 259, + 0, 257, 257, 257, 257, 257, 259, 259, 259, 259, + 259, 259, 393, 393, 393, 393, 393, 0, 393, 267, + 397, 258, 258, 258, 258, 258, 267, 267, 267, 267, + 267, 267, 268, 399, 259, 259, 259, 259, 259, 268, + 268, 268, 268, 268, 268, 0, 397, 0, 0, 0, + 400, 402, 0, 403, 267, 267, 267, 267, 267, 399, + 0, 0, 0, 393, 0, 0, 404, 268, 268, 268, + 268, 268, 277, 277, 277, 277, 400, 402, 277, 403, + + 0, 0, 0, 405, 281, 281, 281, 281, 281, 0, + 281, 277, 404, 0, 0, 281, 0, 281, 277, 277, + 277, 277, 277, 277, 282, 282, 282, 282, 282, 405, + 282, 0, 0, 0, 0, 282, 0, 282, 0, 0, + 0, 0, 0, 277, 0, 0, 277, 277, 277, 277, + 277, 279, 279, 279, 279, 281, 0, 0, 0, 0, + 0, 0, 279, 283, 283, 283, 283, 283, 0, 283, + 279, 0, 0, 0, 283, 282, 283, 279, 279, 279, + 279, 279, 279, 0, 313, 313, 313, 313, 313, 0, + 313, 0, 0, 0, 0, 0, 0, 313, 0, 0, + + 0, 0, 279, 0, 0, 279, 279, 279, 279, 279, + 0, 0, 0, 0, 283, 284, 284, 284, 284, 284, + 0, 284, 0, 0, 0, 0, 284, 0, 284, 0, + 0, 0, 0, 0, 284, 313, 0, 0, 0, 0, + 0, 284, 284, 284, 284, 284, 284, 394, 394, 394, + 394, 394, 0, 286, 0, 0, 0, 0, 394, 0, + 286, 286, 286, 286, 286, 286, 284, 0, 0, 284, + 284, 284, 284, 284, 285, 285, 285, 285, 285, 0, + 285, 0, 0, 0, 0, 285, 285, 285, 286, 286, + 286, 286, 286, 285, 0, 0, 0, 0, 394, 287, + + 285, 285, 285, 285, 285, 285, 287, 287, 287, 287, + 287, 287, 288, 0, 0, 0, 0, 0, 0, 288, + 288, 288, 288, 288, 288, 285, 0, 0, 285, 285, + 285, 285, 285, 290, 287, 287, 287, 287, 287, 0, + 290, 290, 290, 290, 290, 290, 291, 288, 288, 288, + 288, 288, 292, 291, 291, 291, 291, 291, 291, 292, + 292, 292, 292, 292, 292, 0, 293, 0, 290, 290, + 290, 290, 290, 293, 293, 293, 293, 293, 293, 0, + 0, 291, 291, 291, 291, 291, 294, 292, 292, 292, + 292, 292, 0, 294, 294, 294, 294, 294, 294, 295, + + 0, 293, 293, 293, 293, 293, 295, 295, 295, 295, + 295, 295, 0, 0, 0, 0, 0, 0, 0, 301, 0, 294, 294, 294, 294, 294, 301, 301, 301, 301, - 301, 301, 0, 344, 344, 344, 344, 344, 0, 344, - 0, 300, 300, 300, 300, 300, 344, 0, 0, 0, - 0, 0, 0, 0, 301, 301, 301, 301, 301, 313, - - 313, 313, 313, 313, 321, 313, 0, 0, 0, 0, - 0, 321, 321, 321, 321, 321, 321, 0, 313, 0, - 0, 0, 0, 0, 344, 313, 313, 313, 313, 313, - 313, 0, 0, 0, 0, 0, 0, 323, 0, 321, - 321, 321, 321, 321, 323, 323, 323, 323, 323, 323, - 313, 0, 0, 313, 313, 313, 313, 313, 314, 314, - 314, 314, 0, 0, 314, 0, 0, 0, 0, 0, - 0, 0, 323, 323, 323, 323, 323, 314, 0, 0, - 0, 0, 0, 0, 314, 314, 314, 314, 314, 314, - 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, - - 0, 325, 325, 325, 325, 325, 325, 0, 0, 314, - 0, 0, 314, 314, 314, 314, 314, 318, 318, 318, - 318, 318, 0, 0, 0, 0, 0, 0, 318, 325, - 325, 325, 325, 325, 0, 0, 318, 0, 0, 0, - 0, 0, 0, 318, 318, 318, 318, 318, 318, 0, - 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, - 326, 326, 326, 326, 326, 326, 0, 0, 318, 0, - 0, 318, 318, 318, 318, 318, 319, 319, 319, 319, - 0, 0, 0, 0, 0, 0, 0, 319, 326, 326, - 326, 326, 326, 0, 0, 319, 0, 0, 0, 0, - - 0, 0, 319, 319, 319, 319, 319, 319, 0, 0, - 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, - 0, 328, 328, 328, 328, 328, 328, 319, 0, 0, - 319, 319, 319, 319, 319, 320, 320, 320, 320, 320, - 0, 320, 0, 0, 0, 0, 320, 0, 320, 328, - 328, 328, 328, 328, 320, 0, 0, 0, 0, 0, - 329, 320, 320, 320, 320, 320, 320, 329, 329, 329, - 329, 329, 329, 330, 0, 0, 0, 0, 0, 0, - 330, 330, 330, 330, 330, 330, 320, 0, 0, 320, - 320, 320, 320, 320, 0, 329, 329, 329, 329, 329, - - 0, 0, 0, 0, 331, 0, 0, 0, 330, 330, - 330, 330, 330, 331, 0, 0, 336, 0, 331, 331, - 0, 0, 331, 336, 336, 336, 336, 336, 336, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 0, 0, 331, 331, 0, 0, 331, 347, - 0, 336, 336, 336, 336, 336, 347, 347, 347, 347, - 347, 347, 348, 348, 348, 348, 348, 0, 0, 351, - 0, 0, 0, 348, 0, 348, 351, 351, 351, 351, - 351, 351, 352, 0, 347, 347, 347, 347, 347, 352, - 352, 352, 352, 352, 352, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 351, 351, 351, 351, 351, 0, - 0, 0, 0, 348, 0, 363, 0, 352, 352, 352, - 352, 352, 363, 363, 363, 363, 363, 363, 364, 0, - 0, 0, 0, 0, 365, 364, 364, 364, 364, 364, - 364, 365, 365, 365, 365, 365, 365, 0, 366, 0, - 363, 363, 363, 363, 363, 366, 366, 366, 366, 366, - 366, 0, 0, 364, 364, 364, 364, 364, 376, 365, - 365, 365, 365, 365, 0, 376, 376, 376, 376, 376, - 376, 377, 0, 366, 366, 366, 366, 366, 377, 377, - 377, 377, 377, 377, 0, 0, 0, 0, 0, 0, - - 0, 378, 0, 376, 376, 376, 376, 376, 378, 378, - 378, 378, 378, 378, 384, 0, 377, 377, 377, 377, - 377, 384, 384, 384, 384, 384, 384, 0, 0, 0, - 0, 0, 0, 0, 385, 0, 378, 378, 378, 378, - 378, 385, 385, 385, 385, 385, 385, 386, 0, 384, - 384, 384, 384, 384, 386, 386, 386, 386, 386, 386, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, - 385, 385, 385, 385, 0, 0, 0, 0, 0, 0, - 0, 0, 386, 386, 386, 386, 386, 408, 0, 408, - 408, 408, 408, 408, 408, 408, 409, 0, 0, 409, - - 409, 410, 0, 410, 410, 410, 410, 410, 410, 410, - 411, 411, 0, 411, 411, 412, 412, 412, 0, 412, - 412, 413, 413, 413, 413, 413, 413, 413, 414, 414, - 414, 414, 414, 414, 414, 414, 414, 415, 415, 0, - 415, 415, 416, 416, 416, 416, 416, 416, 416, 417, - 417, 417, 417, 417, 417, 417, 417, 417, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 419, 419, - 420, 420, 0, 420, 420, 421, 421, 421, 421, 421, - 421, 421, 422, 422, 422, 422, 422, 422, 422, 423, - 423, 423, 424, 424, 424, 424, 424, 424, 424, 425, - - 425, 425, 425, 425, 425, 425, 425, 425, 425, 426, - 426, 426, 426, 426, 426, 426, 427, 427, 427, 427, - 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, - 429, 429, 429, 429, 430, 430, 430, 0, 430, 430, - 430, 430, 430, 431, 431, 431, 431, 431, 431, 431, - 431, 431, 431, 432, 432, 432, 432, 433, 0, 433, - 433, 433, 433, 433, 433, 433, 434, 0, 434, 434, - 434, 434, 434, 434, 434, 435, 435, 435, 435, 435, - 435, 435, 435, 435, 436, 436, 436, 436, 437, 437, - 437, 437, 437, 437, 437, 437, 437, 438, 438, 438, - - 438, 438, 438, 438, 438, 438, 439, 439, 439, 439, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - - 407, 407, 407 + 301, 301, 302, 0, 295, 295, 295, 295, 295, 302, + 302, 302, 302, 302, 302, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 301, 301, 301, 301, 301, 0, + 0, 0, 0, 0, 0, 0, 0, 302, 302, 302, + 302, 302, 314, 314, 314, 314, 314, 0, 314, 0, + 0, 0, 0, 0, 318, 318, 318, 318, 318, 0, + 0, 314, 0, 0, 0, 318, 0, 318, 314, 314, + + 314, 314, 314, 314, 322, 0, 0, 0, 0, 0, + 324, 322, 322, 322, 322, 322, 322, 324, 324, 324, + 324, 324, 324, 314, 0, 0, 314, 314, 314, 314, + 314, 315, 315, 315, 315, 318, 0, 315, 0, 322, + 322, 322, 322, 322, 0, 324, 324, 324, 324, 324, + 315, 0, 0, 0, 0, 0, 0, 315, 315, 315, + 315, 315, 315, 0, 0, 0, 0, 326, 0, 0, + 0, 0, 0, 0, 326, 326, 326, 326, 326, 326, + 0, 0, 315, 0, 0, 315, 315, 315, 315, 315, + 319, 319, 319, 319, 319, 0, 0, 0, 0, 0, + + 0, 319, 326, 326, 326, 326, 326, 0, 0, 319, + 0, 0, 0, 0, 0, 0, 319, 319, 319, 319, + 319, 319, 0, 0, 0, 0, 327, 0, 0, 0, + 0, 0, 0, 327, 327, 327, 327, 327, 327, 0, + 0, 319, 0, 0, 319, 319, 319, 319, 319, 320, + 320, 320, 320, 0, 0, 0, 0, 0, 0, 0, + 320, 327, 327, 327, 327, 327, 0, 0, 320, 0, + 0, 0, 0, 0, 0, 320, 320, 320, 320, 320, + 320, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 329, 329, 329, 329, 329, 329, + + 320, 0, 0, 320, 320, 320, 320, 320, 321, 321, + 321, 321, 321, 0, 321, 0, 0, 0, 0, 321, + 0, 321, 329, 329, 329, 329, 329, 321, 0, 0, + 0, 0, 0, 330, 321, 321, 321, 321, 321, 321, + 330, 330, 330, 330, 330, 330, 331, 0, 0, 0, + 0, 0, 0, 331, 331, 331, 331, 331, 331, 321, + 0, 0, 321, 321, 321, 321, 321, 0, 330, 330, + 330, 330, 330, 0, 0, 0, 0, 332, 0, 0, + 0, 331, 331, 331, 331, 331, 332, 0, 0, 337, + 0, 332, 332, 0, 0, 332, 337, 337, 337, 337, + + 337, 337, 0, 0, 332, 0, 0, 345, 345, 345, + 345, 345, 332, 345, 0, 0, 0, 332, 332, 0, + 345, 332, 0, 0, 337, 337, 337, 337, 337, 348, + 0, 349, 349, 349, 349, 349, 348, 348, 348, 348, + 348, 348, 349, 0, 349, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, + 0, 0, 352, 0, 348, 348, 348, 348, 348, 352, + 352, 352, 352, 352, 352, 0, 353, 0, 0, 0, + 0, 0, 349, 353, 353, 353, 353, 353, 353, 0, + 0, 0, 0, 0, 0, 364, 0, 352, 352, 352, + + 352, 352, 364, 364, 364, 364, 364, 364, 0, 365, + 0, 353, 353, 353, 353, 353, 365, 365, 365, 365, + 365, 365, 0, 0, 0, 0, 0, 0, 366, 0, + 364, 364, 364, 364, 364, 366, 366, 366, 366, 366, + 366, 0, 367, 0, 365, 365, 365, 365, 365, 367, + 367, 367, 367, 367, 367, 0, 0, 0, 0, 0, + 0, 377, 0, 366, 366, 366, 366, 366, 377, 377, + 377, 377, 377, 377, 0, 378, 0, 367, 367, 367, + 367, 367, 378, 378, 378, 378, 378, 378, 0, 0, + 0, 0, 0, 0, 379, 0, 377, 377, 377, 377, + + 377, 379, 379, 379, 379, 379, 379, 0, 385, 0, + 378, 378, 378, 378, 378, 385, 385, 385, 385, 385, + 385, 0, 0, 0, 0, 0, 0, 386, 0, 379, + 379, 379, 379, 379, 386, 386, 386, 386, 386, 386, + 0, 387, 0, 385, 385, 385, 385, 385, 387, 387, + 387, 387, 387, 387, 0, 0, 0, 0, 0, 0, + 0, 0, 386, 386, 386, 386, 386, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 387, 387, 387, 387, + 387, 409, 0, 409, 409, 409, 409, 409, 409, 409, + 410, 0, 0, 410, 410, 411, 0, 411, 411, 411, + + 411, 411, 411, 411, 412, 412, 0, 412, 412, 413, + 413, 413, 0, 413, 413, 414, 414, 414, 414, 414, + 414, 414, 415, 415, 415, 415, 415, 415, 415, 415, + 415, 416, 416, 0, 416, 416, 417, 417, 417, 417, + 417, 417, 417, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 419, 419, 419, 419, 419, 419, 419, 419, + 419, 419, 420, 420, 421, 421, 0, 421, 421, 422, + 422, 422, 422, 422, 422, 422, 423, 423, 423, 423, + 423, 423, 423, 424, 424, 424, 425, 425, 425, 425, + 425, 425, 425, 426, 426, 426, 426, 426, 426, 426, + + 426, 426, 426, 427, 427, 427, 427, 427, 427, 427, + 428, 428, 428, 428, 429, 429, 429, 429, 429, 429, + 429, 429, 429, 429, 430, 430, 430, 430, 431, 431, + 431, 0, 431, 431, 431, 431, 431, 432, 432, 432, + 432, 432, 432, 432, 432, 432, 432, 433, 433, 433, + 433, 434, 0, 434, 434, 434, 434, 434, 434, 434, + 435, 0, 435, 435, 435, 435, 435, 435, 435, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 437, 437, + 437, 437, 438, 438, 438, 438, 438, 438, 438, 438, + 438, 439, 439, 439, 439, 439, 439, 439, 439, 439, + + 440, 440, 440, 440, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 408 + } ; YY_DECL @@ -949,13 +949,13 @@ YY_DECL while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 408 ) + if ( yy_current_state >= 409 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2820 ); + while ( yy_base[yy_current_state] != 2814 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1149,109 +1149,108 @@ YY_RULE_SETUP case 33: YY_RULE_SETUP #line 70 "tokenizer.flex" -{yyTok = PXS; return yyTok;} +{yyTok = CHS; return yyTok;} YY_BREAK case 34: YY_RULE_SETUP #line 71 "tokenizer.flex" -{yyTok = CMS; return yyTok;} +{yyTok = PXS; return yyTok;} YY_BREAK case 35: YY_RULE_SETUP #line 72 "tokenizer.flex" -{yyTok = MMS; return yyTok;} +{yyTok = CMS; return yyTok;} YY_BREAK case 36: YY_RULE_SETUP #line 73 "tokenizer.flex" -{yyTok = INS; return yyTok;} +{yyTok = MMS; return yyTok;} YY_BREAK case 37: YY_RULE_SETUP #line 74 "tokenizer.flex" -{yyTok = PTS; return yyTok;} +{yyTok = INS; return yyTok;} YY_BREAK case 38: YY_RULE_SETUP #line 75 "tokenizer.flex" -{yyTok = PCS; return yyTok;} +{yyTok = PTS; return yyTok;} YY_BREAK case 39: YY_RULE_SETUP #line 76 "tokenizer.flex" -{yyTok = DEGS; return yyTok;} +{yyTok = PCS; return yyTok;} YY_BREAK case 40: YY_RULE_SETUP #line 77 "tokenizer.flex" -{yyTok = RADS; return yyTok;} +{yyTok = DEGS; return yyTok;} YY_BREAK case 41: YY_RULE_SETUP #line 78 "tokenizer.flex" -{yyTok = GRADS; return yyTok;} +{yyTok = RADS; return yyTok;} YY_BREAK case 42: YY_RULE_SETUP #line 79 "tokenizer.flex" -{yyTok = MSECS; return yyTok;} +{yyTok = GRADS; return yyTok;} YY_BREAK case 43: YY_RULE_SETUP #line 80 "tokenizer.flex" -{yyTok = SECS; return yyTok;} +{yyTok = MSECS; return yyTok;} YY_BREAK case 44: YY_RULE_SETUP #line 81 "tokenizer.flex" -{yyTok = HERZ; return yyTok;} +{yyTok = SECS; return yyTok;} YY_BREAK case 45: YY_RULE_SETUP #line 82 "tokenizer.flex" -{yyTok = DPI; return yyTok;} +{yyTok = HERZ; return yyTok;} YY_BREAK case 46: YY_RULE_SETUP #line 83 "tokenizer.flex" -{yyTok = DPCM; return yyTok;} +{yyTok = DPI; return yyTok;} YY_BREAK case 47: YY_RULE_SETUP #line 84 "tokenizer.flex" -{yyTok = KHERZ; return yyTok;} +{yyTok = DPCM; return yyTok;} YY_BREAK case 48: -/* rule 48 can match eol */ YY_RULE_SETUP #line 85 "tokenizer.flex" -{yyTok = DIMEN; return yyTok;} +{yyTok = KHERZ; return yyTok;} YY_BREAK case 49: +/* rule 49 can match eol */ YY_RULE_SETUP #line 86 "tokenizer.flex" -{yyTok = PERCENTAGE; return yyTok;} +{yyTok = DIMEN; return yyTok;} YY_BREAK case 50: YY_RULE_SETUP #line 87 "tokenizer.flex" -{yyTok = INTEGER; return yyTok;} +{yyTok = PERCENTAGE; return yyTok;} YY_BREAK case 51: YY_RULE_SETUP #line 88 "tokenizer.flex" -{yyTok = FLOAT; return yyTok;} +{yyTok = INTEGER; return yyTok;} YY_BREAK case 52: YY_RULE_SETUP -#line 91 "tokenizer.flex" -{yyTok = NOTFUNCTION; return yyTok;} +#line 89 "tokenizer.flex" +{yyTok = FLOAT; return yyTok;} YY_BREAK case 53: -/* rule 53 can match eol */ YY_RULE_SETUP #line 92 "tokenizer.flex" -{yyTok = URI; return yyTok;} +{yyTok = NOTFUNCTION; return yyTok;} YY_BREAK case 54: /* rule 54 can match eol */ @@ -1263,12 +1262,13 @@ case 55: /* rule 55 can match eol */ YY_RULE_SETUP #line 94 "tokenizer.flex" -{yyTok = FUNCTION; return yyTok;} +{yyTok = URI; return yyTok;} YY_BREAK case 56: +/* rule 56 can match eol */ YY_RULE_SETUP -#line 96 "tokenizer.flex" -{yyTok = UNICODERANGE; return yyTok;} +#line 95 "tokenizer.flex" +{yyTok = FUNCTION; return yyTok;} YY_BREAK case 57: YY_RULE_SETUP @@ -1277,11 +1277,14 @@ YY_RULE_SETUP YY_BREAK case 58: YY_RULE_SETUP -#line 99 "tokenizer.flex" -{BEGIN(block); yyTok = *yytext; return yyTok;} +#line 98 "tokenizer.flex" +{yyTok = UNICODERANGE; return yyTok;} YY_BREAK case 59: -#line 101 "tokenizer.flex" +YY_RULE_SETUP +#line 100 "tokenizer.flex" +{BEGIN(block); yyTok = *yytext; return yyTok;} + YY_BREAK case 60: #line 102 "tokenizer.flex" case 61: @@ -1289,21 +1292,23 @@ case 61: case 62: #line 104 "tokenizer.flex" case 63: +#line 105 "tokenizer.flex" +case 64: YY_RULE_SETUP -#line 104 "tokenizer.flex" +#line 105 "tokenizer.flex" {BEGIN(INITIAL); yyTok = *yytext; return yyTok; } YY_BREAK -case 64: +case 65: YY_RULE_SETUP -#line 105 "tokenizer.flex" +#line 106 "tokenizer.flex" {yyTok = *yytext; return yyTok;} YY_BREAK -case 65: +case 66: YY_RULE_SETUP -#line 107 "tokenizer.flex" +#line 108 "tokenizer.flex" ECHO; YY_BREAK -#line 1843 "" +#line 1862 "" case YY_STATE_EOF(INITIAL): case YY_END_OF_BUFFER: case YY_STATE_EOF(mediaquery): diff --git a/khtml/css/tokenizer.flex b/khtml/css/tokenizer.flex index 36d1daa9de..50ffa77dc4 100644 --- a/khtml/css/tokenizer.flex +++ b/khtml/css/tokenizer.flex @@ -67,6 +67,7 @@ nth ([\+-]?[0-9]*n[ \t\r\n\f]*[\+-][ \t\r\n\f]*[0-9]+)|([\+-]?[0-9]* {num}em {yyTok = EMS; return yyTok;} {num}__qem {yyTok = QEMS; return yyTok;} /* quirky ems */ {num}ex {yyTok = EXS; return yyTok;} +{num}ch {yyTok = CHS; return yyTok;} {num}px {yyTok = PXS; return yyTok;} {num}cm {yyTok = CMS; return yyTok;} {num}mm {yyTok = MMS; return yyTok;} diff --git a/khtml/dom/css_value.h b/khtml/dom/css_value.h index 13da3bbb6b..8e89899e01 100644 --- a/khtml/dom/css_value.h +++ b/khtml/dom/css_value.h @@ -392,29 +392,30 @@ public: CSS_PERCENTAGE = 2, CSS_EMS = 3, CSS_EXS = 4, - CSS_PX = 5, - CSS_CM = 6, - CSS_MM = 7, - CSS_IN = 8, - CSS_PT = 9, - CSS_PC = 10, - CSS_DEG = 11, - CSS_RAD = 12, - CSS_GRAD = 13, - CSS_MS = 14, - CSS_S = 15, - CSS_HZ = 16, - CSS_KHZ = 17, - CSS_DIMENSION = 18, - CSS_STRING = 19, - CSS_URI = 20, - CSS_IDENT = 21, - CSS_ATTR = 22, - CSS_COUNTER = 23, - CSS_RECT = 24, - CSS_RGBCOLOR = 25, - CSS_DPI = 26, - CSS_DPCM = 27, + CSS_CHS = 5, + CSS_PX = 6, + CSS_CM = 7, + CSS_MM = 8, + CSS_IN = 9, + CSS_PT = 10, + CSS_PC = 11, + CSS_DEG = 12, + CSS_RAD = 13, + CSS_GRAD = 14, + CSS_MS = 15, + CSS_S = 16, + CSS_HZ = 17, + CSS_KHZ = 18, + CSS_DIMENSION = 19, + CSS_STRING = 20, + CSS_URI = 21, + CSS_IDENT = 22, + CSS_ATTR = 23, + CSS_COUNTER = 24, + CSS_RECT = 25, + CSS_RGBCOLOR = 26, + CSS_DPI = 27, + CSS_DPCM = 28, CSS_PAIR = 100, // We envision this being exposed as a means of getting computed style values for pairs CSS_HTML_RELATIVE = 255 }; diff --git a/khtml/ecma/kjs_css.cpp b/khtml/ecma/kjs_css.cpp index 3ad3e2a562..7551c0df59 100644 --- a/khtml/ecma/kjs_css.cpp +++ b/khtml/ecma/kjs_css.cpp @@ -1212,6 +1212,7 @@ const ClassInfo CSSPrimitiveValueConstructor::info = { "CSSPrimitiveValueConstru CSS_PERCENTAGE DOM::CSSPrimitiveValue::CSS_PERCENTAGE DontDelete|ReadOnly CSS_EMS DOM::CSSPrimitiveValue::CSS_EMS DontDelete|ReadOnly CSS_EXS DOM::CSSPrimitiveValue::CSS_EXS DontDelete|ReadOnly + CSS_CHS DOM::CSSPrimitiveValue::CSS_CHS DontDelete|ReadOnly CSS_PX DOM::CSSPrimitiveValue::CSS_PX DontDelete|ReadOnly CSS_CM DOM::CSSPrimitiveValue::CSS_CM DontDelete|ReadOnly CSS_MM DOM::CSSPrimitiveValue::CSS_MM DontDelete|ReadOnly diff --git a/khtml/rendering/font.cpp b/khtml/rendering/font.cpp index 4efdce368c..067e6718b4 100644 --- a/khtml/rendering/font.cpp +++ b/khtml/rendering/font.cpp @@ -580,6 +580,13 @@ CachedFontInstance::CachedFontInstance(CachedFontFamily* p, int sz): descent = fm.descent(); height = fm.height(); lineSpacing = fm.lineSpacing(); + + const QChar zeroChar((ushort)48); + if (!fm.inFont(zeroChar)) { + m_zeroCharWidth = -1; + } else { + m_zeroCharWidth = (int)cachedCharWidth(zeroChar); + } } void CachedFontInstance::invalidate() @@ -602,6 +609,13 @@ void CachedFontInstance::invalidate() descent = fm.descent(); height = fm.height(); lineSpacing = fm.lineSpacing(); + + const QChar zeroChar((ushort)48); + if (!fm.inFont(zeroChar)) { + m_zeroCharWidth = -1; + } else { + m_zeroCharWidth = (int)cachedCharWidth(zeroChar); + } } CachedFontInstance::~CachedFontInstance() diff --git a/khtml/rendering/font.h b/khtml/rendering/font.h index afb00b3c8b..4af23307bd 100644 --- a/khtml/rendering/font.h +++ b/khtml/rendering/font.h @@ -82,6 +82,7 @@ public: int descent; int height; int lineSpacing; + int m_zeroCharWidth; mutable bool invalidated; ~CachedFontInstance(); @@ -241,6 +242,9 @@ public: int height() const { return cfi->height; } int lineSpacing() const { return cfi->lineSpacing; } float xHeight() const { return cfi->fm.xHeight(); } + + // return -1 if '0' char glyph not in font + int zeroCharWidth() const { return cfi->m_zeroCharWidth; } //FIXME: IMPLEMENT ME unsigned unitsPerEm() const { return 0; } int spaceWidth() const { return 0; } -- GitLab