LexerAnalyzer.java

// DO NOT EDIT
// Generated by JFlex 1.8.2 http://jflex.de/
// source: /home/runner/work/DupDetector/DupDetector/src/main/jflex/DupDetector.jflex

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright (C) 1998-2015  Gerwin Klein <lsf@jflex.de>                    *
 * All rights reserved.                                                    *
 *                                                                         *
 * License: BSD                                                            *
 *                                                                         *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

package edu.odu.cs.cs350;
//@SuppressWarnings("unused")


// See https://github.com/jflex-de/jflex/issues/222
@SuppressWarnings("FallThrough")
public class LexerAnalyzer {

  /** This character denotes the end of file. */
  public static final int YYEOF = -1;

  /** Initial size of the lookahead buffer. */
  private static final int ZZ_BUFFERSIZE = 16384;

  // Lexical states.
  public static final int YYINITIAL = 0;
  public static final int STRING = 2;

  /**
   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
   *                  at the beginning of a line
   * l is of the form l = 2*k, k a non negative integer
   */
  private static final int ZZ_LEXSTATE[] = {
     0,  0,  1, 1
  };

  /**
   * Top-level table for translating characters to character classes
   */
  private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();

  private static final String ZZ_CMAP_TOP_PACKED_0 =
    "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700"+
    "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00"+
    "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+
    "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+
    "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+
    "\1\u2400\2\u1f00\31\u0100\1\u2500\121\u0100\1\u2600\4\u0100\1\u2700"+
    "\1\u0100\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00\53\u0100"+
    "\1\u2e00\10\u2f00\31\u1f00\1\u0100\1\u3000\1\u3100\1\u0100\1\u3200"+
    "\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\1\u3a00"+
    "\1\u0100\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000\3\u1f00"+
    "\1\u4100\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800"+
    "\1\u4900\1\u1f00\1\u4a00\1\u1f00\1\u4b00\1\u4c00\2\u1f00\3\u0100"+
    "\1\u4d00\1\u4e00\1\u4f00\12\u1f00\4\u0100\1\u5000\17\u1f00\2\u0100"+
    "\1\u5100\41\u1f00\2\u0100\1\u5200\1\u5300\3\u1f00\1\u5400\27\u0100"+
    "\1\u5500\2\u0100\1\u5600\45\u1f00\1\u0100\1\u5700\1\u5800\11\u1f00"+
    "\1\u5900\24\u1f00\1\u5a00\1\u5b00\1\u1f00\1\u5c00\1\u5d00\1\u5e00"+
    "\1\u5f00\2\u1f00\1\u6000\5\u1f00\1\u6100\7\u1f00\1\u6200\1\u6300"+
    "\4\u1f00\1\u6400\21\u1f00\246\u0100\1\u6500\20\u0100\1\u6600\1\u6700"+
    "\25\u0100\1\u6800\34\u0100\1\u6900\14\u1f00\2\u0100\1\u6a00\u0b05\u1f00"+
    "\1\u6b00\1\u6c00\u02fe\u1f00";

  private static int [] zzUnpackcmap_top() {
    int [] result = new int[4352];
    int offset = 0;
    offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /**
   * Second-level tables for translating characters to character classes
   */
  private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();

  private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
    "\11\0\1\1\1\2\1\3\1\4\1\5\16\0\4\6"+
    "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
    "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+
    "\12\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+
    "\32\13\1\37\1\40\1\41\1\6\1\42\1\6\1\43"+
    "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\1\53"+
    "\1\13\1\54\1\55\1\56\1\57\1\60\1\61\1\13"+
    "\1\62\1\63\1\64\1\65\1\66\1\67\2\13\1\70"+
    "\1\71\1\72\1\73\1\74\6\0\1\75\32\0\2\6"+
    "\4\13\4\6\1\13\2\6\1\0\7\6\1\13\4\6"+
    "\1\13\5\6\27\13\1\6\37\13\1\6\u01ca\13\4\6"+
    "\14\13\16\6\5\13\7\6\1\13\1\6\1\13\21\6"+
    "\160\0\5\13\1\6\2\13\2\6\4\13\1\6\1\13"+
    "\6\6\1\13\1\6\3\13\1\6\1\13\1\6\24\13"+
    "\1\6\123\13\1\6\213\13\1\6\5\0\2\6\246\13"+
    "\1\6\46\13\2\6\1\13\7\6\47\13\7\6\1\13"+
    "\1\6\55\0\1\6\1\0\1\6\2\0\1\6\2\0"+
    "\1\6\1\0\10\6\33\13\5\6\3\13\15\6\6\0"+
    "\5\6\1\13\4\6\13\0\1\6\1\0\3\6\53\13"+
    "\37\0\4\6\2\13\1\0\143\13\1\6\1\13\10\0"+
    "\1\6\6\0\2\13\2\0\1\6\4\0\2\13\12\0"+
    "\3\13\2\6\1\13\17\6\1\0\1\13\1\0\36\13"+
    "\33\0\2\6\131\13\13\0\1\13\16\6\12\0\41\13"+
    "\11\0\2\13\4\6\1\13\5\6\26\13\4\0\1\13"+
    "\11\0\1\13\3\0\1\13\5\0\22\6\31\13\3\0"+
    "\4\6\13\13\65\6\25\13\1\6\10\13\26\6\60\0"+
    "\66\13\3\0\1\13\22\0\1\13\7\0\12\13\2\0"+
    "\2\6\12\0\1\6\20\13\3\0\1\6\10\13\2\6"+
    "\2\13\2\6\26\13\1\6\7\13\1\6\1\13\3\6"+
    "\4\13\2\6\1\0\1\13\7\0\2\6\2\0\2\6"+
    "\3\0\1\13\10\6\1\0\4\6\2\13\1\6\3\13"+
    "\2\0\2\6\12\0\4\13\7\6\2\13\4\6\3\0"+
    "\1\6\6\13\4\6\2\13\2\6\26\13\1\6\7\13"+
    "\1\6\2\13\1\6\2\13\1\6\2\13\2\6\1\0"+
    "\1\6\5\0\4\6\2\0\2\6\3\0\3\6\1\0"+
    "\7\6\4\13\1\6\1\13\7\6\14\0\3\13\1\0"+
    "\13\6\3\0\1\6\11\13\1\6\3\13\1\6\26\13"+
    "\1\6\7\13\1\6\2\13\1\6\5\13\2\6\1\0"+
    "\1\13\10\0\1\6\3\0\1\6\3\0\2\6\1\13"+
    "\17\6\2\13\2\0\2\6\12\0\1\6\1\13\7\6"+
    "\1\13\6\0\1\6\3\0\1\6\10\13\2\6\2\13"+
    "\2\6\26\13\1\6\7\13\1\6\2\13\1\6\5\13"+
    "\2\6\1\0\1\13\7\0\2\6\2\0\2\6\3\0"+
    "\10\6\2\0\4\6\2\13\1\6\3\13\2\0\2\6"+
    "\12\0\1\6\1\13\20\6\1\0\1\13\1\6\6\13"+
    "\3\6\3\13\1\6\4\13\3\6\2\13\1\6\1\13"+
    "\1\6\2\13\3\6\2\13\3\6\3\13\3\6\14\13"+
    "\4\6\5\0\3\6\3\0\1\6\4\0\2\6\1\13"+
    "\6\6\1\0\16\6\12\0\11\6\1\13\6\6\4\0"+
    "\1\6\10\13\1\6\3\13\1\6\27\13\1\6\20\13"+
    "\3\6\1\13\7\0\1\6\3\0\1\6\4\0\7\6"+
    "\2\0\1\6\3\13\5\6\2\13\2\0\2\6\12\0"+
    "\20\6\1\13\3\0\1\6\10\13\1\6\3\13\1\6"+
    "\27\13\1\6\12\13\1\6\5\13\2\6\1\0\1\13"+
    "\7\0\1\6\3\0\1\6\4\0\7\6\2\0\7\6"+
    "\1\13\1\6\2\13\2\0\2\6\12\0\1\6\2\13"+
    "\15\6\4\0\1\6\10\13\1\6\3\13\1\6\51\13"+
    "\2\0\1\13\7\0\1\6\3\0\1\6\4\0\1\13"+
    "\5\6\3\13\1\0\7\6\3\13\2\0\2\6\12\0"+
    "\12\6\6\13\2\6\2\0\1\6\22\13\3\6\30\13"+
    "\1\6\11\13\1\6\1\13\2\6\7\13\3\6\1\0"+
    "\4\6\6\0\1\6\1\0\1\6\10\0\6\6\12\0"+
    "\2\6\2\0\15\6\60\13\1\0\2\13\7\0\4\6"+
    "\10\13\10\0\1\6\12\0\47\6\2\13\1\6\1\13"+
    "\2\6\2\13\1\6\1\13\2\6\1\13\6\6\4\13"+
    "\1\6\7\13\1\6\3\13\1\6\1\13\1\6\1\13"+
    "\2\6\2\13\1\6\4\13\1\0\2\13\6\0\1\6"+
    "\2\0\1\13\2\6\5\13\1\6\1\13\1\6\6\0"+
    "\2\6\12\0\2\6\4\13\40\6\1\13\27\6\2\0"+
    "\6\6\12\0\13\6\1\0\1\6\1\0\1\6\1\0"+
    "\4\6\2\0\10\13\1\6\44\13\4\6\24\0\1\6"+
    "\2\0\5\13\13\0\1\6\44\0\11\6\1\0\71\6"+
    "\53\13\24\0\1\13\12\0\6\6\6\13\4\0\4\13"+
    "\3\0\1\13\3\0\2\13\7\0\3\13\4\0\15\13"+
    "\14\0\1\13\17\0\2\6\46\13\1\6\1\13\5\6"+
    "\1\13\2\6\53\13\1\6\115\13\1\6\4\13\2\6"+
    "\7\13\1\6\1\13\1\6\4\13\2\6\51\13\1\6"+
    "\4\13\2\6\41\13\1\6\4\13\2\6\7\13\1\6"+
    "\1\13\1\6\4\13\2\6\17\13\1\6\71\13\1\6"+
    "\4\13\2\6\103\13\2\6\3\0\40\6\20\13\20\6"+
    "\126\13\2\6\6\13\3\6\u016c\13\2\6\21\13\1\6"+
    "\32\13\5\6\113\13\3\6\13\13\7\6\15\13\1\6"+
    "\4\13\3\0\13\6\22\13\3\0\13\6\22\13\2\0"+
    "\14\6\15\13\1\6\3\13\1\6\2\0\14\6\64\13"+
    "\40\0\3\6\1\13\3\6\2\13\1\0\2\6\12\0"+
    "\41\6\4\0\1\6\12\0\6\6\130\13\10\6\5\13"+
    "\2\0\42\13\1\0\1\13\5\6\106\13\12\6\37\13"+
    "\1\6\14\0\4\6\14\0\12\6\12\0\36\13\2\6"+
    "\5\13\13\6\54\13\4\6\32\13\6\6\12\0\46\6"+
    "\27\13\5\0\4\6\65\13\12\0\1\6\35\0\2\6"+
    "\13\0\6\6\12\0\15\6\1\13\10\6\16\0\102\6"+
    "\5\0\57\13\21\0\7\13\4\6\12\0\21\6\11\0"+
    "\14\6\3\0\36\13\15\0\2\13\12\0\54\13\16\0"+
    "\14\6\44\13\24\0\10\6\12\0\3\6\3\13\12\0"+
    "\44\13\2\6\11\13\107\6\3\0\1\6\25\0\4\13"+
    "\1\0\4\13\3\0\2\13\3\0\6\6\300\13\72\0"+
    "\1\6\5\0\26\13\2\6\6\13\2\6\46\13\2\6"+
    "\6\13\2\6\10\13\1\6\1\13\1\6\1\13\1\6"+
    "\1\13\1\6\37\13\2\6\65\13\1\6\7\13\1\6"+
    "\1\13\3\6\3\13\1\6\7\13\3\6\4\13\2\6"+
    "\6\13\4\6\15\13\5\6\3\13\1\6\7\13\16\6"+
    "\5\0\30\6\2\3\5\0\20\6\2\13\23\6\1\13"+
    "\13\6\5\0\1\6\12\0\1\6\1\13\15\6\1\13"+
    "\20\6\15\13\3\6\40\13\20\6\15\0\4\6\1\0"+
    "\3\6\14\0\21\6\1\13\4\6\1\13\2\6\12\13"+
    "\1\6\1\13\3\6\5\13\6\6\1\13\1\6\1\13"+
    "\1\6\1\13\1\6\4\13\1\6\13\13\2\6\4\13"+
    "\5\6\5\13\4\6\1\13\21\6\51\13\u0177\6\57\13"+
    "\1\6\57\13\1\6\205\13\6\6\4\13\3\0\2\13"+
    "\14\6\46\13\1\6\1\13\5\6\1\13\2\6\70\13"+
    "\7\6\1\13\17\6\1\0\27\13\11\6\7\13\1\6"+
    "\7\13\1\6\7\13\1\6\7\13\1\6\7\13\1\6"+
    "\7\13\1\6\7\13\1\6\7\13\1\6\40\0\57\6"+
    "\1\13\325\6\3\13\31\6\11\13\6\0\1\6\5\13"+
    "\2\6\5\13\4\6\126\13\2\6\2\0\2\6\3\13"+
    "\1\6\132\13\1\6\4\13\5\6\52\13\2\6\136\13"+
    "\21\6\33\13\65\6\306\13\112\6\353\13\25\6\215\13"+
    "\103\6\56\13\2\6\15\13\3\6\20\13\12\0\2\13"+
    "\24\6\57\13\1\0\4\6\12\0\1\6\37\13\2\0"+
    "\120\13\2\0\45\6\11\13\2\6\147\13\2\6\44\13"+
    "\1\6\10\13\77\6\13\13\1\0\3\13\1\0\4\13"+
    "\1\0\27\13\5\0\20\6\1\13\7\6\64\13\14\6"+
    "\2\0\62\13\22\0\12\6\12\0\6\6\22\0\6\13"+
    "\3\6\1\13\1\6\1\13\2\6\12\0\34\13\10\0"+
    "\2\6\27\13\15\0\14\6\35\13\3\6\4\0\57\13"+
    "\16\0\16\6\1\13\12\0\6\6\5\13\1\0\12\13"+
    "\12\0\5\13\1\6\51\13\16\0\11\6\3\13\1\0"+
    "\10\13\2\0\2\6\12\0\6\6\27\13\3\6\1\13"+
    "\3\0\62\13\1\0\1\13\3\0\2\13\2\0\5\13"+
    "\2\0\1\13\1\0\1\13\30\6\3\13\2\6\13\13"+
    "\5\0\2\6\3\13\2\0\12\6\6\13\2\6\6\13"+
    "\2\6\6\13\11\6\7\13\1\6\7\13\1\6\53\13"+
    "\1\6\12\13\12\6\163\13\10\0\1\6\2\0\2\6"+
    "\12\0\6\6\244\13\14\6\27\13\4\6\61\13\4\6"+
    "\u0100\3\156\13\2\6\152\13\46\6\7\13\14\6\5\13"+
    "\5\6\1\13\1\0\12\13\1\6\15\13\1\6\5\13"+
    "\1\6\1\13\1\6\2\13\1\6\2\13\1\6\154\13"+
    "\41\6\153\13\22\6\100\13\2\6\66\13\50\6\15\13"+
    "\3\6\20\0\20\6\20\0\3\6\2\13\30\6\3\13"+
    "\31\6\1\13\6\6\5\13\1\6\207\13\2\6\1\0"+
    "\4\6\1\13\13\6\12\0\7\6\32\13\4\6\1\13"+
    "\1\6\32\13\13\6\131\13\3\6\6\13\2\6\6\13"+
    "\2\6\6\13\2\6\3\13\3\6\2\13\3\6\2\13"+
    "\22\6\3\0\4\6\14\13\1\6\32\13\1\6\23\13"+
    "\1\6\2\13\1\6\17\13\2\6\16\13\42\6\173\13"+
    "\105\6\65\13\210\6\1\0\202\6\35\13\3\6\61\13"+
    "\17\6\1\0\37\6\40\13\15\6\36\13\5\6\46\13"+
    "\5\0\5\6\36\13\2\6\44\13\4\6\10\13\1\6"+
    "\5\13\52\6\236\13\2\6\12\0\6\6\44\13\4\6"+
    "\44\13\4\6\50\13\10\6\64\13\234\6\67\13\11\6"+
    "\26\13\12\6\10\13\230\6\6\13\2\6\1\13\1\6"+
    "\54\13\1\6\2\13\3\6\1\13\2\6\27\13\12\6"+
    "\27\13\11\6\37\13\101\6\23\13\1\6\2\13\12\6"+
    "\26\13\12\6\32\13\106\6\70\13\6\6\2\13\100\6"+
    "\1\13\3\0\1\6\2\0\5\6\4\0\4\13\1\6"+
    "\3\13\1\6\33\13\4\6\3\0\4\6\1\0\40\6"+
    "\35\13\3\6\35\13\43\6\10\13\1\6\34\13\2\0"+
    "\31\6\66\13\12\6\26\13\12\6\23\13\15\6\22\13"+
    "\156\6\111\13\67\6\63\13\15\6\63\13\15\6\3\0"+
    "\65\13\17\0\37\6\12\0\17\6\4\0\55\13\13\0"+
    "\2\6\1\0\22\6\31\13\7\6\12\0\6\6\3\0"+
    "\44\13\16\0\1\6\12\0\20\6\43\13\1\0\2\6"+
    "\1\13\11\6\3\0\60\13\16\0\4\13\5\6\3\0"+
    "\3\6\12\0\1\13\1\6\1\13\43\6\22\13\1\6"+
    "\31\13\14\0\6\6\1\0\101\6\7\13\1\6\1\13"+
    "\1\6\4\13\1\6\17\13\1\6\12\13\7\6\57\13"+
    "\14\0\5\6\12\0\6\6\4\0\1\6\10\13\2\6"+
    "\2\13\2\6\26\13\1\6\7\13\1\6\2\13\1\6"+
    "\5\13\2\6\1\0\1\13\7\0\2\6\2\0\2\6"+
    "\3\0\2\6\1\13\6\6\1\0\5\6\5\13\2\0"+
    "\2\6\7\0\3\6\5\0\213\6\65\13\22\0\4\13"+
    "\5\6\12\0\46\6\60\13\24\0\2\13\1\6\1\13"+
    "\10\6\12\0\246\6\57\13\7\0\2\6\11\0\27\6"+
    "\4\13\2\0\42\6\60\13\21\0\3\6\1\13\13\6"+
    "\12\0\46\6\53\13\15\0\10\6\12\0\66\6\32\13"+
    "\3\6\17\0\4\6\12\0\u0166\6\100\13\12\0\25\6"+
    "\2\13\12\0\50\13\7\0\1\13\4\0\10\6\1\0"+
    "\10\6\1\13\13\0\50\13\2\6\4\13\20\0\46\6"+
    "\71\13\7\6\11\13\1\6\45\13\10\0\1\6\10\0"+
    "\1\13\17\6\12\0\30\6\36\13\2\6\26\0\1\6"+
    "\16\0\111\6\7\13\1\6\2\13\1\6\46\13\6\0"+
    "\3\6\1\0\1\6\2\0\1\6\7\0\1\13\1\0"+
    "\10\6\12\0\246\6\232\13\146\6\157\13\21\6\304\13"+
    "\274\6\57\13\321\6\107\13\271\6\71\13\7\6\37\13"+
    "\1\6\12\0\146\6\36\13\2\6\5\0\13\6\60\13"+
    "\7\0\11\6\4\13\14\6\12\0\11\6\25\13\5\6"+
    "\23\13\160\6\105\13\13\6\1\13\56\0\20\6\4\0"+
    "\15\13\100\6\2\13\36\6\355\13\23\6\363\13\15\6"+
    "\37\13\121\6\u018c\13\4\6\153\13\5\6\15\13\3\6"+
    "\11\13\7\6\12\13\3\6\2\0\1\6\4\0\301\6"+
    "\5\0\3\6\26\0\2\6\7\0\36\6\4\0\224\6"+
    "\3\0\273\6\125\13\1\6\107\13\1\6\2\13\2\6"+
    "\1\13\2\6\2\13\2\6\4\13\1\6\14\13\1\6"+
    "\1\13\1\6\7\13\1\6\101\13\1\6\4\13\2\6"+
    "\10\13\1\6\7\13\1\6\34\13\1\6\4\13\1\6"+
    "\5\13\1\6\1\13\3\6\7\13\1\6\u0154\13\2\6"+
    "\31\13\1\6\31\13\1\6\37\13\1\6\31\13\1\6"+
    "\37\13\1\6\31\13\1\6\37\13\1\6\31\13\1\6"+
    "\37\13\1\6\31\13\1\6\10\13\2\6\151\0\4\6"+
    "\62\0\10\6\1\0\16\6\1\0\26\6\5\0\1\6"+
    "\17\0\120\6\7\0\1\6\21\0\2\6\7\0\1\6"+
    "\2\0\1\6\5\0\325\6\305\13\13\6\7\0\51\6"+
    "\104\13\7\0\5\6\12\0\246\6\4\13\1\6\33\13"+
    "\1\6\2\13\1\6\1\13\2\6\1\13\1\6\12\13"+
    "\1\6\4\13\1\6\1\13\1\6\1\13\6\6\1\13"+
    "\4\6\1\13\1\6\1\13\1\6\1\13\1\6\3\13"+
    "\1\6\2\13\1\6\1\13\2\6\1\13\1\6\1\13"+
    "\1\6\1\13\1\6\1\13\1\6\1\13\1\6\2\13"+
    "\1\6\1\13\2\6\4\13\1\6\7\13\1\6\4\13"+
    "\1\6\4\13\1\6\1\13\1\6\12\13\1\6\21\13"+
    "\5\6\3\13\1\6\5\13\1\6\21\13\104\6\327\13"+
    "\51\6\65\13\13\6\336\13\2\6\u0182\13\16\6\u0131\13"+
    "\37\6\36\13\343\6\1\0\36\6\140\0\200\6\360\0"+
    "\20\6";

  private static int [] zzUnpackcmap_blocks() {
    int [] result = new int[27904];
    int offset = 0;
    offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }

  /**
   * Translates DFA states to action switch labels.
   */
  private static final int [] ZZ_ACTION = zzUnpackAction();

  private static final String ZZ_ACTION_PACKED_0 =
    "\2\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+
    "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+
    "\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+
    "\1\30\1\31\1\32\20\6\1\33\1\1\1\34\1\35"+
    "\1\36\2\37\1\40\1\1\1\41\1\42\1\43\1\44"+
    "\1\0\1\2\1\0\1\45\1\46\1\47\1\50\1\51"+
    "\1\52\7\6\1\53\6\6\1\54\20\6\1\55\1\56"+
    "\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66"+
    "\2\0\3\6\1\67\14\6\1\70\3\6\1\71\3\6"+
    "\1\72\4\6\1\73\7\6\1\0\1\2\1\74\1\6"+
    "\1\75\3\6\1\76\3\6\1\77\1\100\1\101\7\6"+
    "\1\102\7\6\1\103\2\6\1\104\1\6\1\105\1\106"+
    "\1\107\4\6\1\0\1\110\1\111\1\112\13\6\1\113"+
    "\1\6\1\114\2\6\1\115\1\116\1\0\2\6\1\117"+
    "\3\6\1\120\1\121\1\122\1\123\1\124\2\6\1\125"+
    "\1\126\1\127\4\6\1\130\1\131\1\132\1\133\1\6"+
    "\1\134\1\135";

  private static int [] zzUnpackAction() {
    int [] result = new int[239];
    int offset = 0;
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAction(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /**
   * Translates a state to a row index in the transition table
   */
  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();

  private static final String ZZ_ROWMAP_PACKED_0 =
    "\0\0\0\76\0\174\0\174\0\272\0\370\0\174\0\174"+
    "\0\u0136\0\174\0\u0174\0\174\0\174\0\174\0\u01b2\0\174"+
    "\0\u01f0\0\174\0\u022e\0\u026c\0\u02aa\0\174\0\u02e8\0\u0326"+
    "\0\u0364\0\174\0\174\0\174\0\174\0\u03a2\0\u03e0\0\u041e"+
    "\0\u045c\0\u049a\0\u04d8\0\u0516\0\u0554\0\u0592\0\u05d0\0\u060e"+
    "\0\u064c\0\u068a\0\u06c8\0\u0706\0\u0744\0\174\0\u0782\0\174"+
    "\0\174\0\u07c0\0\174\0\u07fe\0\174\0\u083c\0\174\0\174"+
    "\0\174\0\174\0\u087a\0\u08b8\0\u026c\0\174\0\174\0\174"+
    "\0\174\0\174\0\174\0\u08f6\0\u0934\0\u0972\0\u09b0\0\u09ee"+
    "\0\u0a2c\0\u0a6a\0\u0aa8\0\u0ae6\0\u0b24\0\u0b62\0\u0ba0\0\u0bde"+
    "\0\u0c1c\0\u0136\0\u0c5a\0\u0c98\0\u0cd6\0\u0d14\0\u0d52\0\u0d90"+
    "\0\u0dce\0\u0e0c\0\u0e4a\0\u0e88\0\u0ec6\0\u0f04\0\u0f42\0\u0f80"+
    "\0\u0fbe\0\u0ffc\0\174\0\174\0\174\0\174\0\174\0\174"+
    "\0\174\0\174\0\174\0\174\0\u103a\0\u1078\0\u10b6\0\u10f4"+
    "\0\u1132\0\u0136\0\u1170\0\u11ae\0\u11ec\0\u122a\0\u1268\0\u12a6"+
    "\0\u12e4\0\u1322\0\u1360\0\u139e\0\u13dc\0\u141a\0\u0136\0\u1458"+
    "\0\u1496\0\u14d4\0\u0136\0\u1512\0\u1550\0\u158e\0\u0136\0\u15cc"+
    "\0\u160a\0\u1648\0\u1686\0\u0136\0\u16c4\0\u1702\0\u1740\0\u177e"+
    "\0\u17bc\0\u17fa\0\u1838\0\u1876\0\u103a\0\u0136\0\u18b4\0\u0136"+
    "\0\u18f2\0\u1930\0\u196e\0\u0136\0\u19ac\0\u19ea\0\u1a28\0\u1a66"+
    "\0\u0136\0\u0136\0\u1aa4\0\u1ae2\0\u1b20\0\u1b5e\0\u1b9c\0\u1bda"+
    "\0\u1c18\0\u0136\0\u1c56\0\u1c94\0\u1cd2\0\u1d10\0\u1d4e\0\u1d8c"+
    "\0\u1dca\0\u0136\0\u1e08\0\u1e46\0\u0136\0\u1e84\0\u0136\0\u0136"+
    "\0\u0136\0\u1ec2\0\u1f00\0\u1f3e\0\u1f7c\0\u1fba\0\u0136\0\u0136"+
    "\0\u0136\0\u1ff8\0\u2036\0\u2074\0\u20b2\0\u20f0\0\u212e\0\u216c"+
    "\0\u21aa\0\u21e8\0\u2226\0\u2264\0\u0136\0\u22a2\0\u0136\0\u22e0"+
    "\0\u231e\0\u0136\0\u0136\0\u235c\0\u239a\0\u23d8\0\u0136\0\u2416"+
    "\0\u2454\0\u2492\0\u0136\0\u0136\0\u0136\0\u0136\0\u0136\0\u24d0"+
    "\0\u250e\0\u0136\0\174\0\u0136\0\u254c\0\u258a\0\u25c8\0\u2606"+
    "\0\u0136\0\u0136\0\u0136\0\u0136\0\u2644\0\u0136\0\u0136";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[239];
    int offset = 0;
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
    int i = 0;  /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int high = packed.charAt(i++) << 16;
      result[j++] = high | packed.charAt(i++);
    }
    return j;
  }

  /**
   * The transition table of the DFA
   */
  private static final int [] ZZ_TRANS = zzUnpackTrans();

  private static final String ZZ_TRANS_PACKED_0 =
    "\1\3\2\4\1\3\1\4\1\5\1\3\1\4\1\6"+
    "\1\7\1\10\1\11\1\12\1\13\1\3\1\14\1\15"+
    "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+
    "\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\3"+
    "\1\35\2\11\1\36\1\37\1\40\1\41\1\42\2\11"+
    "\1\43\1\11\1\44\1\11\1\45\1\46\1\47\1\50"+
    "\1\51\1\52\1\53\1\54\1\55\1\11\1\56\1\57"+
    "\1\60\1\61\1\3\2\62\1\63\2\62\1\64\3\62"+
    "\1\65\26\62\1\66\35\62\100\0\1\4\126\0\1\67"+
    "\42\0\1\11\12\0\1\11\13\0\1\11\12\0\27\11"+
    "\4\0\1\11\15\0\1\70\102\0\1\71\77\0\1\72"+
    "\72\0\1\73\4\0\1\74\76\0\1\24\12\0\1\75"+
    "\63\0\1\76\77\0\1\77\1\100\75\0\1\101\75\0"+
    "\1\102\1\103\41\0\1\11\12\0\1\11\13\0\1\11"+
    "\12\0\16\11\1\104\1\11\1\105\6\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\5\11\1\106\3\11"+
    "\1\107\1\11\1\110\2\11\1\111\10\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\5\11\1\112\10\11"+
    "\1\113\10\11\4\0\2\11\12\0\1\11\13\0\1\11"+
    "\12\0\13\11\1\114\1\11\1\115\11\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\1\11\1\116\7\11"+
    "\1\117\1\11\1\120\2\11\1\121\10\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\6\11\1\122\6\11"+
    "\1\123\1\124\10\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\16\11\1\125\10\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\1\11\1\126\3\11\1\127"+
    "\21\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\24\11\1\130\2\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\23\11\1\131\3\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\132\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\11\11\1\133"+
    "\10\11\1\134\2\11\1\135\1\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\20\11\1\136\6\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\21\11\1\137"+
    "\5\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\11\11\1\140\4\11\1\141\10\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\10\11\1\142\16\11\4\0"+
    "\1\11\72\0\1\143\3\0\2\62\1\0\2\62\1\0"+
    "\3\62\1\0\26\62\1\0\35\62\2\0\1\63\73\0"+
    "\2\144\4\0\3\144\1\145\4\144\1\146\21\144\1\147"+
    "\3\144\1\150\3\144\1\151\6\144\1\152\2\144\1\153"+
    "\1\144\1\154\10\144\1\0\21\155\1\156\54\155\2\74"+
    "\1\4\2\74\1\5\70\74\1\11\12\0\1\11\13\0"+
    "\1\11\12\0\16\11\1\157\10\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\160\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\20\11\1\161"+
    "\6\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\15\11\1\162\11\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\1\11\1\163\25\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\15\11\1\164\5\11\1\165"+
    "\3\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\6\11\1\166\4\11\1\167\13\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\23\11\1\170\3\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\21\11\1\171"+
    "\5\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\4\11\1\172\16\11\1\173\3\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\13\11\1\174\13\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\15\11\1\175"+
    "\11\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\16\11\1\176\10\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\20\11\1\177\6\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\3\11\1\200\4\11\1\201"+
    "\2\11\1\202\6\11\1\203\4\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\21\11\1\204\5\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\15\11\1\205"+
    "\11\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\14\11\1\206\12\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\25\11\1\207\1\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\210\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\2\11\1\211"+
    "\24\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\22\11\1\212\4\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\26\11\1\213\4\0\2\11\12\0\1\11"+
    "\13\0\1\11\12\0\4\11\1\214\13\11\1\215\6\11"+
    "\4\0\2\11\12\0\1\11\13\0\1\11\12\0\11\11"+
    "\1\216\15\11\4\0\2\11\12\0\1\11\13\0\1\11"+
    "\12\0\23\11\1\217\3\11\4\0\2\11\12\0\1\11"+
    "\13\0\1\11\12\0\11\11\1\220\15\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\20\11\1\221\6\11"+
    "\4\0\2\11\12\0\1\11\13\0\1\11\12\0\11\11"+
    "\1\222\15\11\4\0\2\11\12\0\1\11\13\0\1\11"+
    "\12\0\11\11\1\223\15\11\4\0\1\11\21\155\1\224"+
    "\75\155\1\224\4\155\1\225\47\155\1\11\12\0\1\11"+
    "\13\0\1\11\12\0\13\11\1\226\13\11\4\0\2\11"+
    "\12\0\1\11\13\0\1\11\12\0\1\11\1\227\25\11"+
    "\4\0\2\11\12\0\1\11\13\0\1\11\12\0\20\11"+
    "\1\230\6\11\4\0\2\11\12\0\1\11\13\0\1\11"+
    "\12\0\21\11\1\231\5\11\4\0\2\11\12\0\1\11"+
    "\13\0\1\11\12\0\21\11\1\232\1\233\4\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\22\11\1\234"+
    "\4\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\1\11\1\235\25\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\236\21\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\2\11\1\237\24\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\5\11\1\240"+
    "\21\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\13\11\1\241\13\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\14\11\1\242\12\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\21\11\1\243\5\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\1\11\1\244"+
    "\25\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\1\11\1\245\25\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\13\11\1\246\13\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\247\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\11\11\1\250"+
    "\15\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\22\11\1\251\4\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\7\11\1\252\17\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\253\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\20\11\1\254"+
    "\6\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\13\11\1\255\13\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\23\11\1\256\3\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\257\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\11\11\1\260"+
    "\15\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\22\11\1\261\4\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\262\21\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\15\11\1\263\11\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\22\11\1\264"+
    "\4\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\4\11\1\265\22\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\13\11\1\266\13\11\4\0\1\11\21\155"+
    "\1\224\4\155\1\4\47\155\1\11\12\0\1\11\13\0"+
    "\1\11\12\0\12\11\1\267\14\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\21\11\1\270\5\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\22\11\1\271"+
    "\4\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\11\11\1\272\15\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\23\11\1\273\3\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\22\11\1\274\4\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\13\11\1\275"+
    "\13\11\4\0\2\11\6\0\1\276\3\0\1\11\13\0"+
    "\1\11\12\0\27\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\277\21\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\13\11\1\300\13\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\22\11\1\301"+
    "\4\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\23\11\1\302\3\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\20\11\1\303\6\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\15\11\1\304\11\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\20\11\1\305"+
    "\6\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\21\11\1\306\5\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\20\11\1\307\6\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\11\11\1\310\15\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\20\11\1\311"+
    "\6\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\16\11\1\312\10\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\15\11\1\313\11\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\3\11\1\314\23\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\7\11\1\315"+
    "\17\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\23\11\1\316\3\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\317\21\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\15\11\1\320\11\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\13\11\1\321"+
    "\13\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\5\11\1\322\21\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\323\21\11\4\0\1\11\53\0"+
    "\1\324\22\0\1\11\12\0\1\11\13\0\1\11\12\0"+
    "\4\11\1\325\22\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\5\11\1\326\21\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\327\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\5\11\1\330"+
    "\21\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\17\11\1\331\7\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\11\11\1\332\15\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\3\11\1\333\23\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\15\11\1\334"+
    "\11\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\6\11\1\335\20\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\7\11\1\336\17\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\10\11\1\337\16\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\1\11\1\340"+
    "\25\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\23\11\1\341\3\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\22\11\1\342\4\11\4\0\1\11\50\0"+
    "\1\343\25\0\1\11\12\0\1\11\13\0\1\11\12\0"+
    "\5\11\1\344\21\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\22\11\1\345\4\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\1\11\1\346\25\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\1\11\1\347"+
    "\25\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\4\11\1\350\22\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\13\11\1\351\13\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\352\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\21\11\1\353"+
    "\5\11\4\0\2\11\12\0\1\11\13\0\1\11\12\0"+
    "\14\11\1\354\12\11\4\0\2\11\12\0\1\11\13\0"+
    "\1\11\12\0\3\11\1\355\23\11\4\0\2\11\12\0"+
    "\1\11\13\0\1\11\12\0\5\11\1\356\21\11\4\0"+
    "\2\11\12\0\1\11\13\0\1\11\12\0\5\11\1\357"+
    "\21\11\4\0\1\11";

  private static int [] zzUnpackTrans() {
    int [] result = new int[9858];
    int offset = 0;
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackTrans(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      value--;
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /** Error code for "Unknown internal scanner error". */
  private static final int ZZ_UNKNOWN_ERROR = 0;
  /** Error code for "could not match input". */
  private static final int ZZ_NO_MATCH = 1;
  /** Error code for "pushback value was too large". */
  private static final int ZZ_PUSHBACK_2BIG = 2;

  /**
   * Error messages for {@link #ZZ_UNKNOWN_ERROR}, {@link #ZZ_NO_MATCH}, and
   * {@link #ZZ_PUSHBACK_2BIG} respectively.
   */
  private static final String ZZ_ERROR_MSG[] = {
    "Unknown internal scanner error",
    "Error: could not match input",
    "Error: pushback value was too large"
  };

  /**
   * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}
   */
  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();

  private static final String ZZ_ATTRIBUTE_PACKED_0 =
    "\2\0\2\11\2\1\2\11\1\1\1\11\1\1\3\11"+
    "\1\1\1\11\1\1\1\11\3\1\1\11\3\1\4\11"+
    "\20\1\1\11\1\1\2\11\1\1\1\11\1\1\1\11"+
    "\1\1\4\11\1\0\1\1\1\0\6\11\37\1\12\11"+
    "\2\0\45\1\1\0\51\1\1\0\25\1\1\0\16\1"+
    "\1\11\14\1";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[239];
    int offset = 0;
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }

  /** Input device. */
  private java.io.Reader zzReader;

  /** Current state of the DFA. */
  private int zzState;

  /** Current lexical state. */
  private int zzLexicalState = YYINITIAL;

  /**
   * This buffer contains the current text to be matched and is the source of the {@link #yytext()}
   * string.
   */
  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];

  /** Text position at the last accepting state. */
  private int zzMarkedPos;

  /** Current text position in the buffer. */
  private int zzCurrentPos;

  /** Marks the beginning of the {@link #yytext()} string in the buffer. */
  private int zzStartRead;

  /** Marks the last character in the buffer, that has been read from input. */
  private int zzEndRead;

  /**
   * Whether the scanner is at the end of file.
   * @see #yyatEOF
   */
  private boolean zzAtEOF;

  /**
   * The number of occupied positions in {@link #zzBuffer} beyond {@link #zzEndRead}.
   *
   * <p>When a lead/high surrogate has been read from the input stream into the final
   * {@link #zzBuffer} position, this will have a value of 1; otherwise, it will have a value of 0.
   */
  private int zzFinalHighSurrogate = 0;

  /** Number of newlines encountered up to the start of the matched text. */
  private int yyline;

  /** Number of characters from the last newline up to the start of the matched text. */
  private int yycolumn;

  /** Number of characters up to the start of the matched text. */
  @SuppressWarnings("unused")
  private long yychar;

  /** Whether the scanner is currently at the beginning of a line. */
  @SuppressWarnings("unused")
  private boolean zzAtBOL = true;

  /** Whether the user-EOF-code has already been executed. */
  @SuppressWarnings("unused")
  private boolean zzEOFDone;

  /* user code: */
  StringBuffer string = new StringBuffer();
  
  private Token symbol(TokenType type) {
    return new Token(type, yyline+1, yycolumn+1);
  }

  private Token symbol(TokenType type, String value) {
    return new Token(type, yyline+1, yycolumn+1, value);
  }
  


  /**
   * Creates a new scanner
   *
   * @param   in  the java.io.Reader to read input from.
   */
  public LexerAnalyzer(java.io.Reader in) {
    this.zzReader = in;
  }

  /**
   * Translates raw input code points to DFA table row
   */
  private static int zzCMap(int input) {
    int offset = input & 255;
    return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];
  }

  /**
   * Refills the input buffer.
   *
   * @return {@code false} iff there was new input.
   * @exception java.io.IOException  if any I/O-Error occurs
   */
  private boolean zzRefill() throws java.io.IOException {

    /* first: make room (if you can) */
    if (zzStartRead > 0) {
      zzEndRead += zzFinalHighSurrogate;
      zzFinalHighSurrogate = 0;
      System.arraycopy(zzBuffer, zzStartRead,
                       zzBuffer, 0,
                       zzEndRead - zzStartRead);

      /* translate stored positions */
      zzEndRead -= zzStartRead;
      zzCurrentPos -= zzStartRead;
      zzMarkedPos -= zzStartRead;
      zzStartRead = 0;
    }

    /* is the buffer big enough? */
    if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
      /* if not: blow it up */
      char newBuffer[] = new char[zzBuffer.length * 2];
      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
      zzBuffer = newBuffer;
      zzEndRead += zzFinalHighSurrogate;
      zzFinalHighSurrogate = 0;
    }

    /* fill the buffer with new input */
    int requested = zzBuffer.length - zzEndRead;
    int numRead = zzReader.read(zzBuffer, zzEndRead, requested);

    /* not supposed to occur according to specification of java.io.Reader */
    if (numRead == 0) {
      throw new java.io.IOException(
          "Reader returned 0 characters. See JFlex examples/zero-reader for a workaround.");
    }
    if (numRead > 0) {
      zzEndRead += numRead;
      if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
        if (numRead == requested) { // We requested too few chars to encode a full Unicode character
          --zzEndRead;
          zzFinalHighSurrogate = 1;
        } else {                    // There is room in the buffer for at least one more char
          int c = zzReader.read();  // Expecting to read a paired low surrogate char
          if (c == -1) {
            return true;
          } else {
            zzBuffer[zzEndRead++] = (char)c;
          }
        }
      }
      /* potentially more input available */
      return false;
    }

    /* numRead < 0 ==> end of stream */
    return true;
  }


  /**
   * Closes the input reader.
   *
   * @throws java.io.IOException if the reader could not be closed.
   */
  public final void yyclose() throws java.io.IOException {
    zzAtEOF = true; // indicate end of file
    zzEndRead = zzStartRead; // invalidate buffer

    if (zzReader != null) {
      zzReader.close();
    }
  }


  /**
   * Resets the scanner to read from a new input stream.
   *
   * <p>Does not close the old reader.
   *
   * <p>All internal variables are reset, the old input stream <b>cannot</b> be reused (internal
   * buffer is discarded and lost). Lexical state is set to {@code ZZ_INITIAL}.
   *
   * <p>Internal scan buffer is resized down to its initial length, if it has grown.
   *
   * @param reader The new input stream.
   */
  public final void yyreset(java.io.Reader reader) {
    zzReader = reader;
    zzEOFDone = false;
    yyResetPosition();
    zzLexicalState = YYINITIAL;
    if (zzBuffer.length > ZZ_BUFFERSIZE) {
      zzBuffer = new char[ZZ_BUFFERSIZE];
    }
  }

  /**
   * Resets the input position.
   */
  private final void yyResetPosition() {
      zzAtBOL  = true;
      zzAtEOF  = false;
      zzCurrentPos = 0;
      zzMarkedPos = 0;
      zzStartRead = 0;
      zzEndRead = 0;
      zzFinalHighSurrogate = 0;
      yyline = 0;
      yycolumn = 0;
      yychar = 0L;
  }


  /**
   * Returns whether the scanner has reached the end of the reader it reads from.
   *
   * @return whether the scanner has reached EOF.
   */
  public final boolean yyatEOF() {
    return zzAtEOF;
  }


  /**
   * Returns the current lexical state.
   *
   * @return the current lexical state.
   */
  public final int yystate() {
    return zzLexicalState;
  }


  /**
   * Enters a new lexical state.
   *
   * @param newState the new lexical state
   */
  public final void yybegin(int newState) {
    zzLexicalState = newState;
  }


  /**
   * Returns the text matched by the current regular expression.
   *
   * @return the matched text.
   */
  public final String yytext() {
    return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead);
  }


  /**
   * Returns the character at the given position from the matched text.
   *
   * <p>It is equivalent to {@code yytext().charAt(pos)}, but faster.
   *
   * @param position the position of the character to fetch. A value from 0 to {@code yylength()-1}.
   *
   * @return the character at {@code position}.
   */
  public final char yycharat(int position) {
    return zzBuffer[zzStartRead + position];
  }


  /**
   * How many characters were matched.
   *
   * @return the length of the matched text region.
   */
  public final int yylength() {
    return zzMarkedPos-zzStartRead;
  }


  /**
   * Reports an error that occurred while scanning.
   *
   * <p>In a well-formed scanner (no or only correct usage of {@code yypushback(int)} and a
   * match-all fallback rule) this method will only be called with things that
   * "Can't Possibly Happen".
   *
   * <p>If this method is called, something is seriously wrong (e.g. a JFlex bug producing a faulty
   * scanner etc.).
   *
   * <p>Usual syntax/scanner level error handling should be done in error fallback rules.
   *
   * @param errorCode the code of the error message to display.
   */
  private static void zzScanError(int errorCode) {
    String message;
    try {
      message = ZZ_ERROR_MSG[errorCode];
    } catch (ArrayIndexOutOfBoundsException e) {
      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
    }

    throw new Error(message);
  }


  /**
   * Pushes the specified amount of characters back into the input stream.
   *
   * <p>They will be read again by then next call of the scanning method.
   *
   * @param number the number of characters to be read again. This number must not be greater than
   *     {@link #yylength()}.
   */
  public void yypushback(int number)  {
    if ( number > yylength() )
      zzScanError(ZZ_PUSHBACK_2BIG);

    zzMarkedPos -= number;
  }




  /**
   * Resumes scanning until the next regular expression is matched, the end of input is encountered
   * or an I/O-Error occurs.
   *
   * @return the next token.
   * @exception java.io.IOException if any I/O-Error occurs.
   */
  public Token yylex() throws java.io.IOException {
    int zzInput;
    int zzAction;

    // cached fields:
    int zzCurrentPosL;
    int zzMarkedPosL;
    int zzEndReadL = zzEndRead;
    char[] zzBufferL = zzBuffer;

    int [] zzTransL = ZZ_TRANS;
    int [] zzRowMapL = ZZ_ROWMAP;
    int [] zzAttrL = ZZ_ATTRIBUTE;

    while (true) {
      zzMarkedPosL = zzMarkedPos;

      boolean zzR = false;
      int zzCh;
      int zzCharCount;
      for (zzCurrentPosL = zzStartRead  ;
           zzCurrentPosL < zzMarkedPosL ;
           zzCurrentPosL += zzCharCount ) {
        zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL);
        zzCharCount = Character.charCount(zzCh);
        switch (zzCh) {
        case '\u000B':  // fall through
        case '\u000C':  // fall through
        case '\u0085':  // fall through
        case '\u2028':  // fall through
        case '\u2029':
          yyline++;
          yycolumn = 0;
          zzR = false;
          break;
        case '\r':
          yyline++;
          yycolumn = 0;
          zzR = true;
          break;
        case '\n':
          if (zzR)
            zzR = false;
          else {
            yyline++;
            yycolumn = 0;
          }
          break;
        default:
          zzR = false;
          yycolumn += zzCharCount;
        }
      }

      if (zzR) {
        // peek one character ahead if it is
        // (if we have counted one line too much)
        boolean zzPeek;
        if (zzMarkedPosL < zzEndReadL)
          zzPeek = zzBufferL[zzMarkedPosL] == '\n';
        else if (zzAtEOF)
          zzPeek = false;
        else {
          boolean eof = zzRefill();
          zzEndReadL = zzEndRead;
          zzMarkedPosL = zzMarkedPos;
          zzBufferL = zzBuffer;
          if (eof)
            zzPeek = false;
          else
            zzPeek = zzBufferL[zzMarkedPosL] == '\n';
        }
        if (zzPeek) yyline--;
      }
      zzAction = -1;

      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;

      zzState = ZZ_LEXSTATE[zzLexicalState];

      // set up zzAction for empty match case:
      int zzAttributes = zzAttrL[zzState];
      if ( (zzAttributes & 1) == 1 ) {
        zzAction = zzState;
      }


      zzForAction: {
        while (true) {

          if (zzCurrentPosL < zzEndReadL) {
            zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
            zzCurrentPosL += Character.charCount(zzInput);
          }
          else if (zzAtEOF) {
            zzInput = YYEOF;
            break zzForAction;
          }
          else {
            // store back cached positions
            zzCurrentPos  = zzCurrentPosL;
            zzMarkedPos   = zzMarkedPosL;
            boolean eof = zzRefill();
            // get translated positions and possibly new buffer
            zzCurrentPosL  = zzCurrentPos;
            zzMarkedPosL   = zzMarkedPos;
            zzBufferL      = zzBuffer;
            zzEndReadL     = zzEndRead;
            if (eof) {
              zzInput = YYEOF;
              break zzForAction;
            }
            else {
              zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
              zzCurrentPosL += Character.charCount(zzInput);
            }
          }
          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ];
          if (zzNext == -1) break zzForAction;
          zzState = zzNext;

          zzAttributes = zzAttrL[zzState];
          if ( (zzAttributes & 1) == 1 ) {
            zzAction = zzState;
            zzMarkedPosL = zzCurrentPosL;
            if ( (zzAttributes & 8) == 8 ) break zzForAction;
          }

        }
      }

      // store back cached position
      zzMarkedPos = zzMarkedPosL;

      if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
        zzAtEOF = true;
              {
                return symbol(TokenType.EOF);
              }
      }
      else {
        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
          case 1:
            { throw new RuntimeException("Illegal character \""+yytext()+
                                                              "\" at line "+yyline+", column "+yycolumn);
            }
            // fall through
          case 94: break;
          case 2:
            { /* Ignore */
            }
            // fall through
          case 95: break;
          case 3:
            { return symbol(TokenType.NOT_SYMBOL);
            }
            // fall through
          case 96: break;
          case 4:
            { yybegin(STRING); string.setLength(0);
            }
            // fall through
          case 97: break;
          case 5:
            { return symbol(TokenType.HASH_SYMBOL);
            }
            // fall through
          case 98: break;
          case 6:
            { return symbol(TokenType.IDENTIFIER, yytext());
            }
            // fall through
          case 99: break;
          case 7:
            { return symbol(TokenType.MODULO);
            }
            // fall through
          case 100: break;
          case 8:
            { return symbol(TokenType.REFERENCE_SYM);
            }
            // fall through
          case 101: break;
          case 9:
            { return symbol(TokenType.LEFT_PAREN);
            }
            // fall through
          case 102: break;
          case 10:
            { return symbol(TokenType.RIGHT_PAREN);
            }
            // fall through
          case 103: break;
          case 11:
            { return symbol(TokenType.MULTIPLY);
            }
            // fall through
          case 104: break;
          case 12:
            { return symbol(TokenType.ADD);
            }
            // fall through
          case 105: break;
          case 13:
            { return symbol(TokenType.COMMA);
            }
            // fall through
          case 106: break;
          case 14:
            { return symbol(TokenType.SUBTRACT);
            }
            // fall through
          case 107: break;
          case 15:
            { return symbol(TokenType.PERIOD);
            }
            // fall through
          case 108: break;
          case 16:
            { return symbol(TokenType.DIVIDE);
            }
            // fall through
          case 109: break;
          case 17:
            { return symbol(TokenType.CONSTANT_NUMBERS, yytext());
            }
            // fall through
          case 110: break;
          case 18:
            { return symbol(TokenType.COLON);
            }
            // fall through
          case 111: break;
          case 19:
            { return symbol(TokenType.SEMI_COLON);
            }
            // fall through
          case 112: break;
          case 20:
            { return symbol(TokenType.LT);
            }
            // fall through
          case 113: break;
          case 21:
            { return symbol(TokenType.ASSIGN_OP);
            }
            // fall through
          case 114: break;
          case 22:
            { return symbol(TokenType.GT);
            }
            // fall through
          case 115: break;
          case 23:
            { return symbol(TokenType.QUESTION_MARK);
            }
            // fall through
          case 116: break;
          case 24:
            { return symbol(TokenType.AT_SYMBOL);
            }
            // fall through
          case 117: break;
          case 25:
            { return symbol(TokenType.LEFT_BRACKET);
            }
            // fall through
          case 118: break;
          case 26:
            { return symbol(TokenType.RIGHT_BRACKET);
            }
            // fall through
          case 119: break;
          case 27:
            { return symbol(TokenType.LEFT_BRACE);
            }
            // fall through
          case 120: break;
          case 28:
            { return symbol(TokenType.RIGHT_BRACE);
            }
            // fall through
          case 121: break;
          case 29:
            { return symbol(TokenType.TILDA);
            }
            // fall through
          case 122: break;
          case 30:
            { string.append( yytext() );
            }
            // fall through
          case 123: break;
          case 31:
            { throw new RuntimeException("Unterminated string at end of line");
            }
            // fall through
          case 124: break;
          case 32:
            { yybegin(YYINITIAL); return symbol(TokenType.STRING_LITERAL, string.toString());
            }
            // fall through
          case 125: break;
          case 33:
            { return symbol(TokenType.NOT_EQUAL);
            }
            // fall through
          case 126: break;
          case 34:
            { return symbol(TokenType.AND_SYMBOL);
            }
            // fall through
          case 127: break;
          case 35:
            { return symbol(TokenType.INCREMENT);
            }
            // fall through
          case 128: break;
          case 36:
            { return symbol(TokenType.DECREMENT);
            }
            // fall through
          case 129: break;
          case 37:
            { return symbol(TokenType.SCOPE_OP);
            }
            // fall through
          case 130: break;
          case 38:
            { return symbol(TokenType.OSTREAM);
            }
            // fall through
          case 131: break;
          case 39:
            { return symbol(TokenType.LEQ);
            }
            // fall through
          case 132: break;
          case 40:
            { return symbol(TokenType.EQ_EQ);
            }
            // fall through
          case 133: break;
          case 41:
            { return symbol(TokenType.GEQ);
            }
            // fall through
          case 134: break;
          case 42:
            { return symbol(TokenType.ISTREAM);
            }
            // fall through
          case 135: break;
          case 43:
            { return symbol(TokenType.DO);
            }
            // fall through
          case 136: break;
          case 44:
            { return symbol(TokenType.IF);
            }
            // fall through
          case 137: break;
          case 45:
            { return symbol(TokenType.OR_SYMBOL);
            }
            // fall through
          case 138: break;
          case 46:
            { throw new RuntimeException("Illegal escape sequence \""+yytext()+"\"");
            }
            // fall through
          case 139: break;
          case 47:
            { string.append( '\"' );
            }
            // fall through
          case 140: break;
          case 48:
            { string.append( '\'' );
            }
            // fall through
          case 141: break;
          case 49:
            { string.append( '\\' );
            }
            // fall through
          case 142: break;
          case 50:
            { string.append( '\b' );
            }
            // fall through
          case 143: break;
          case 51:
            { string.append( '\f' );
            }
            // fall through
          case 144: break;
          case 52:
            { string.append( '\n' );
            }
            // fall through
          case 145: break;
          case 53:
            { string.append( '\r' );
            }
            // fall through
          case 146: break;
          case 54:
            { string.append( '\t' );
            }
            // fall through
          case 147: break;
          case 55:
            { return symbol(TokenType.CIN);
            }
            // fall through
          case 148: break;
          case 56:
            { return symbol(TokenType.FOR);
            }
            // fall through
          case 149: break;
          case 57:
            { return symbol(TokenType.INT);
            }
            // fall through
          case 150: break;
          case 58:
            { return symbol(TokenType.NEW);
            }
            // fall through
          case 151: break;
          case 59:
            { return symbol(TokenType.STD);
            }
            // fall through
          case 152: break;
          case 60:
            { return symbol(TokenType.BOOL);
            }
            // fall through
          case 153: break;
          case 61:
            { return symbol(TokenType.CERR);
            }
            // fall through
          case 154: break;
          case 62:
            { return symbol(TokenType.COUT);
            }
            // fall through
          case 155: break;
          case 63:
            { return symbol(TokenType.ELSE);
            }
            // fall through
          case 156: break;
          case 64:
            { return symbol(TokenType.ENDL);
            }
            // fall through
          case 157: break;
          case 65:
            { return symbol(TokenType.ENUM);
            }
            // fall through
          case 158: break;
          case 66:
            { return symbol(TokenType.LONG);
            }
            // fall through
          case 159: break;
          case 67:
            { return symbol(TokenType.TRUE);
            }
            // fall through
          case 160: break;
          case 68:
            { return symbol(TokenType.VOID);
            }
            // fall through
          case 161: break;
          case 69:
            { return symbol(TokenType.BREAK);
            }
            // fall through
          case 162: break;
          case 70:
            { return symbol(TokenType.CLASS);
            }
            // fall through
          case 163: break;
          case 71:
            { return symbol(TokenType.CONST);
            }
            // fall through
          case 164: break;
          case 72:
            { return symbol(TokenType.FALSE);
            }
            // fall through
          case 165: break;
          case 73:
            { return symbol(TokenType.FINAL);
            }
            // fall through
          case 166: break;
          case 74:
            { return symbol(TokenType.FLOAT);
            }
            // fall through
          case 167: break;
          case 75:
            { return symbol(TokenType.USING);
            }
            // fall through
          case 168: break;
          case 76:
            { return symbol(TokenType.WHILE);
            }
            // fall through
          case 169: break;
          case 77:
            { return symbol(TokenType.DELETE);
            }
            // fall through
          case 170: break;
          case 78:
            { return symbol(TokenType.DOUBLE);
            }
            // fall through
          case 171: break;
          case 79:
            { return symbol(TokenType.INLINE);
            }
            // fall through
          case 172: break;
          case 80:
            { return symbol(TokenType.PUBLIC);
            }
            // fall through
          case 173: break;
          case 81:
            { return symbol(TokenType.RETURN);
            }
            // fall through
          case 174: break;
          case 82:
            { return symbol(TokenType.SIZEOF);
            }
            // fall through
          case 175: break;
          case 83:
            { return symbol(TokenType.STRING);
            }
            // fall through
          case 176: break;
          case 84:
            { return symbol(TokenType.SWITCH);
            }
            // fall through
          case 177: break;
          case 85:
            { return symbol(TokenType.DEFAULT);
            }
            // fall through
          case 178: break;
          case 86:
            { return symbol(TokenType.ELSE_IF);
            }
            // fall through
          case 179: break;
          case 87:
            { return symbol(TokenType.INCLUDE);
            }
            // fall through
          case 180: break;
          case 88:
            { return symbol(TokenType.VIRTUAL);
            }
            // fall through
          case 181: break;
          case 89:
            { return symbol(TokenType.CONTINUE);
            }
            // fall through
          case 182: break;
          case 90:
            { return symbol(TokenType.INHERETS);
            }
            // fall through
          case 183: break;
          case 91:
            { return symbol(TokenType.IOSTREAM);
            }
            // fall through
          case 184: break;
          case 92:
            { return symbol(TokenType.OVERRIDE);
            }
            // fall through
          case 185: break;
          case 93:
            { return symbol(TokenType.NAMESPACE);
            }
            // fall through
          case 186: break;
          default:
            zzScanError(ZZ_NO_MATCH);
        }
      }
    }
  }


}