/* ANSI-C code produced by gperf version 2.7.1 (19981006 egcs) */
/* Command-line: gperf -a -L ANSI-C -E -C -c -o -t -k * -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 cssproperties.gperf  */
/* This file is automatically generated from cssproperties.in by makeprop, do not edit */
/* Copyright 1999 W. Bastian */
#include "cssproperties.h"
struct props {
    const char *name;
    int id;
};
/* maximum key range = 619, duplicates = 0 */

#ifdef __GNUC__
__inline
#endif
static unsigned int
hash_prop (register const char *str, register unsigned int len)
{
  static const unsigned short asso_values[] =
    {
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622,   0, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622,   0, 622,   5,  15,   0,
        0,   0, 185,  80,  25,   0,  10,  90, 140,  60,
        0,   0,   0,   5,   0,   0,   0, 150,  10,  60,
       45,  35,  25, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
      622, 622, 622, 622, 622, 622
    };
  register int hval = len;

  switch (hval)
    {
      default:
      case 21:
        hval += asso_values[(unsigned char)str[20]];
      case 20:
        hval += asso_values[(unsigned char)str[19]];
      case 19:
        hval += asso_values[(unsigned char)str[18]];
      case 18:
        hval += asso_values[(unsigned char)str[17]];
      case 17:
        hval += asso_values[(unsigned char)str[16]];
      case 16:
        hval += asso_values[(unsigned char)str[15]];
      case 15:
        hval += asso_values[(unsigned char)str[14]];
      case 14:
        hval += asso_values[(unsigned char)str[13]];
      case 13:
        hval += asso_values[(unsigned char)str[12]];
      case 12:
        hval += asso_values[(unsigned char)str[11]];
      case 11:
        hval += asso_values[(unsigned char)str[10]];
      case 10:
        hval += asso_values[(unsigned char)str[9]];
      case 9:
        hval += asso_values[(unsigned char)str[8]];
      case 8:
        hval += asso_values[(unsigned char)str[7]];
      case 7:
        hval += asso_values[(unsigned char)str[6]];
      case 6:
        hval += asso_values[(unsigned char)str[5]];
      case 5:
        hval += asso_values[(unsigned char)str[4]];
      case 4:
        hval += asso_values[(unsigned char)str[3]];
      case 3:
        hval += asso_values[(unsigned char)str[2]];
      case 2:
        hval += asso_values[(unsigned char)str[1]];
      case 1:
        hval += asso_values[(unsigned char)str[0]];
        break;
    }
  return hval;
}

#ifdef __GNUC__
__inline
#endif
const struct props *
findProp (register const char *str, register unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 124,
      MIN_WORD_LENGTH = 3,
      MAX_WORD_LENGTH = 21,
      MIN_HASH_VALUE = 3,
      MAX_HASH_VALUE = 621
    };

  static const struct props wordlist_prop[] =
    {
      {"top", CSS_PROP_TOP},
      {"stress", CSS_PROP_STRESS},
      {"content", CSS_PROP_CONTENT},
      {"position", CSS_PROP_POSITION},
      {"direction", CSS_PROP_DIRECTION},
      {"caption-side", CSS_PROP_CAPTION_SIDE},
      {"border", CSS_PROP_BORDER},
      {"border-top", CSS_PROP_BORDER_TOP},
      {"size", CSS_PROP_SIZE},
      {"pitch", CSS_PROP_PITCH},
      {"richness", CSS_PROP_RICHNESS},
      {"orphans", CSS_PROP_ORPHANS},
      {"speech-rate", CSS_PROP_SPEECH_RATE},
      {"text-indent", CSS_PROP_TEXT_INDENT},
      {"text-decoration", CSS_PROP_TEXT_DECORATION},
      {"z-index", CSS_PROP_Z_INDEX},
      {"bottom", CSS_PROP_BOTTOM},
      {"page", CSS_PROP_PAGE},
      {"width", CSS_PROP_WIDTH},
      {"padding", CSS_PROP_PADDING},
      {"padding-top", CSS_PROP_PADDING_TOP},
      {"speak", CSS_PROP_SPEAK},
      {"white-space", CSS_PROP_WHITE_SPACE},
      {"border-bottom", CSS_PROP_BORDER_BOTTOM},
      {"right", CSS_PROP_RIGHT},
      {"border-width", CSS_PROP_BORDER_WIDTH},
      {"border-spacing", CSS_PROP_BORDER_SPACING},
      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
      {"pitch-range", CSS_PROP_PITCH_RANGE},
      {"widows", CSS_PROP_WIDOWS},
      {"border-right", CSS_PROP_BORDER_RIGHT},
      {"height", CSS_PROP_HEIGHT},
      {"speak-header", CSS_PROP_SPEAK_HEADER},
      {"clip", CSS_PROP_CLIP},
      {"color", CSS_PROP_COLOR},
      {"text-shadow", CSS_PROP_TEXT_SHADOW},
      {"clear", CSS_PROP_CLEAR},
      {"margin", CSS_PROP_MARGIN},
      {"cue", CSS_PROP_CUE},
      {"min-width", CSS_PROP_MIN_WIDTH},
      {"margin-top", CSS_PROP_MARGIN_TOP},
      {"cursor", CSS_PROP_CURSOR},
      {"word-spacing", CSS_PROP_WORD_SPACING},
      {"pause", CSS_PROP_PAUSE},
      {"quotes", CSS_PROP_QUOTES},
      {"counter-reset", CSS_PROP_COUNTER_RESET},
      {"elevation", CSS_PROP_ELEVATION},
      {"border-color", CSS_PROP_BORDER_COLOR},
      {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
      {"display", CSS_PROP_DISPLAY},
      {"font", CSS_PROP_FONT},
      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
      {"min-height", CSS_PROP_MIN_HEIGHT},
      {"border-style", CSS_PROP_BORDER_STYLE},
      {"padding-right", CSS_PROP_PADDING_RIGHT},
      {"max-width", CSS_PROP_MAX_WIDTH},
      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
      {"visibility", CSS_PROP_VISIBILITY},
      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
      {"font-variant", CSS_PROP_FONT_VARIANT},
      {"font-size", CSS_PROP_FONT_SIZE},
      {"font-stretch", CSS_PROP_FONT_STRETCH},
      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
      {"konq_bgpos_y", CSS_PROP_KONQ_BGPOS_Y},
      {"letter-spacing", CSS_PROP_LETTER_SPACING},
      {"konq_bgpos_x", CSS_PROP_KONQ_BGPOS_X},
      {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
      {"max-height", CSS_PROP_MAX_HEIGHT},
      {"margin-right", CSS_PROP_MARGIN_RIGHT},
      {"azimuth", CSS_PROP_AZIMUTH},
      {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
      {"text-align", CSS_PROP_TEXT_ALIGN},
      {"line-height", CSS_PROP_LINE_HEIGHT},
      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
      {"outline", CSS_PROP_OUTLINE},
      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
      {"list-style", CSS_PROP_LIST_STYLE},
      {"left", CSS_PROP_LEFT},
      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
      {"float", CSS_PROP_FLOAT},
      {"cue-after", CSS_PROP_CUE_AFTER},
      {"background", CSS_PROP_BACKGROUND},
      {"border-left", CSS_PROP_BORDER_LEFT},
      {"pause-after", CSS_PROP_PAUSE_AFTER},
      {"background-position", CSS_PROP_BACKGROUND_POSITION},
      {"cue-before", CSS_PROP_CUE_BEFORE},
      {"font-weight", CSS_PROP_FONT_WEIGHT},
      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
      {"volume", CSS_PROP_VOLUME},
      {"pause-before", CSS_PROP_PAUSE_BEFORE},
      {"font-style", CSS_PROP_FONT_STYLE},
      {"empty-cells", CSS_PROP_EMPTY_CELLS},
      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
      {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
      {"overflow", CSS_PROP_OVERFLOW},
      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
      {"speak-punctuation", CSS_PROP_SPEAK_PUNCTUATION},
      {"play-during", CSS_PROP_PLAY_DURING},
      {"padding-left", CSS_PROP_PADDING_LEFT},
      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
      {"outline-color", CSS_PROP_OUTLINE_COLOR},
      {"voice-family", CSS_PROP_VOICE_FAMILY},
      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
      {"speak-numeral", CSS_PROP_SPEAK_NUMERAL},
      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
      {"outline-style", CSS_PROP_OUTLINE_STYLE},
      {"margin-left", CSS_PROP_MARGIN_LEFT},
      {"background-color", CSS_PROP_BACKGROUND_COLOR},
      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
      {"table-layout", CSS_PROP_TABLE_LAYOUT},
      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
      {"marker-offset", CSS_PROP_MARKER_OFFSET},
      {"font-family", CSS_PROP_FONT_FAMILY}
    };

  static const signed char lookup[] =
    {
       -1,  -1,  -1,   0,  -1,  -1,   1,   2,   3,   4,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,   5,  -1,  -1,
       -1,   6,  -1,  -1,  -1,   7,  -1,  -1,  -1,   8,
        9,  -1,  -1,  10,  -1,  -1,  -1,  11,  -1,  -1,
       -1,  12,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  13,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  14,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  15,  -1,  -1,
       -1,  16,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  17,
       18,  -1,  19,  -1,  -1,  -1,  20,  -1,  -1,  -1,
       21,  22,  -1,  23,  -1,  -1,  -1,  -1,  -1,  -1,
       24,  -1,  25,  -1,  26,  -1,  27,  -1,  -1,  -1,
       -1,  28,  -1,  -1,  -1,  -1,  29,  -1,  -1,  -1,
       -1,  -1,  30,  -1,  -1,  -1,  31,  32,  -1,  -1,
       -1,  -1,  -1,  -1,  33,  34,  35,  -1,  -1,  -1,
       36,  37,  -1,  38,  39,  40,  41,  42,  -1,  -1,
       43,  44,  -1,  45,  46,  -1,  -1,  47,  -1,  -1,
       -1,  48,  -1,  -1,  49,  -1,  -1,  50,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  51,  -1,  52,
       -1,  -1,  -1,  -1,  53,  -1,  -1,  -1,  -1,  -1,
       54,  -1,  55,  56,  57,  -1,  58,  -1,  -1,  -1,
       59,  60,  61,  -1,  -1,  -1,  -1,  62,  -1,  63,
       -1,  -1,  64,  65,  -1,  -1,  -1,  66,  -1,  -1,
       -1,  -1,  -1,  67,  -1,  -1,  -1,  68,  -1,  69,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  70,  -1,  71,
       72,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  73,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  74,  -1,  -1,  -1,  -1,  -1,  75,  -1,
       76,  77,  -1,  -1,  78,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  79,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  80,
       -1,  -1,  -1,  81,  -1,  82,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  83,  -1,  -1,  -1,  84,
       -1,  -1,  -1,  -1,  85,  86,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  87,
       88,  89,  -1,  -1,  -1,  -1,  90,  -1,  -1,  91,
       92,  93,  94,  -1,  -1,  95,  96,  97,  -1,  -1,
       98,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  99,  -1, 100,  -1,
       -1, 101,  -1,  -1, 102,  -1,  -1,  -1,  -1,  -1,
       -1, 103,  -1, 104,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1, 105,  -1,  -1,  -1,  -1, 106,  -1,  -1,
       -1, 107, 108,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1, 109, 110,  -1,  -1,  -1, 111,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1, 112,  -1,  -1,  -1,
       -1,  -1,  -1, 113,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1, 114,  -1, 115,  -1,
       -1, 116,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1, 117, 118,  -1,  -1,
       -1, 119, 120,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1, 121,  -1,  -1,  -1,  -1,  -1, 122,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1, 123
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash_prop (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register int index = lookup[key];

          if (index >= 0)
            {
              register const char *s = wordlist_prop[index].name;

              if (*str == *s && !strncmp (str + 1, s + 1, len - 1))
                return &wordlist_prop[index];
            }
          else if (index < -TOTAL_KEYWORDS)
            {
              register int offset = - 1 - TOTAL_KEYWORDS - index;
              register const struct props *wordptr = &wordlist_prop[TOTAL_KEYWORDS + lookup[offset]];
              register const struct props *wordendptr = wordptr + -lookup[offset + 1];

              while (wordptr < wordendptr)
                {
                  register const char *s = wordptr->name;

                  if (*str == *s && !strncmp (str + 1, s + 1, len - 1))
                    return wordptr;
                  wordptr++;
                }
            }
        }
    }
  return 0;
}
