home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / order / compord.src < prev    next >
Encoding:
Text File  |  1988-05-03  |  284.4 KB  |  6,235 lines

  1.  
  2. -------- SIMTEL20 Ada Software Repository Prologue ------------
  3. --                                                           -*
  4. -- Unit name    : Compilation Order Requirements Report
  5. -- Version      : 1.0
  6. -- Contact      : Lt. Colonel Falgiano
  7. --              : ESD/SCW
  8. --              : Hanscom AFB, MA  01731
  9. -- Author       : Bill Toscano, Michael Gordon
  10. --              : Intermetrics, Inc, 
  11. --              : 733 Concord Ave, 
  12. --              : Cambridge, MA 02138 
  13. -- DDN Address  :
  14. -- Copyright    : (c) 1985 Intermetrics, Inc. 
  15. -- Date created : 15 October 1985 
  16. -- Release date : 18 March 1985 
  17. -- Last update  : 17 March 1985   
  18. --                                                           -*
  19. ---------------------------------------------------------------
  20. --                                                           -*
  21. -- Keywords     : 
  22. ----------------:
  23. --
  24. -- Abstract     : The Compilation Order Requirements Report computes a     
  25. ----------------: proper compilation order for given Ada source files.  It     
  26. ----------------: then generates a report showing the computed compilation     
  27. ----------------: order and outputs it to the default output file.              
  28. ----------------: 
  29. ----------------: This tool was developed as a precursor for 
  30. ----------------: the WMCCS Information System (WIS).  An
  31. ----------------: executable version of the tool has been 
  32. ----------------: demonstrated.  This source code has sub-
  33. ----------------: sequently been recompiled but has not under-
  34. ----------------: gone extensive testing.
  35. ----------------:
  36. --                                                           -*
  37. ------------------ Revision history ---------------------------
  38. --                                                           -*
  39. -- DATE         VERSION AUTHOR                  HISTORY 
  40. -- 03/85        1.0  Bill Toscano               Initial Release 
  41. --                                                           -* 
  42. ------------------ Distribution and Copyright -----------------
  43. --                                                           -*
  44. -- This prologue must be included in all copies of this software.
  45. -- 
  46. -- This software is copyright by the author.
  47. -- 
  48. -- This software is released to the Ada community.
  49. -- This software is released to the Public Domain (note:
  50. --   software released to the Public Domain is not subject
  51. --   to copyright protection).
  52. -- Restrictions on use or distribution:  NONE
  53. --                                                           -*
  54. ----------------- Disclaimer ----------------------------------
  55. --                                                           -*
  56. -- This software and its documentation are provided "AS IS" and
  57. -- without any expressed or implied warranties whatsoever.
  58. --
  59. -- No warranties as to performance, merchantability, or fitness
  60. -- for a particular purpose exist.
  61. --
  62. -- Because of the diversity of conditions and hardware under
  63. -- which this software may be used, no warranty of fitness for
  64. -- a particular purpose is offered.  The user is advised to 
  65. -- test the software thoroughly before relying on it.  The user
  66. -- must assume the entire risk and liability of using this 
  67. -- software.
  68. --
  69. -- In no event shall any person or organization of people be
  70. -- held responsible for any direct, indirect, consequential
  71. -- or inconsequential damages or lost profits.
  72. --                                                          -*
  73. ----------------- END-PROLOGUE -------------------------------
  74. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  75. --UNITDAG.SPC
  76. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  77. with string_pkg;
  78. package nodes is
  79.  
  80. type dag_node is record
  81.    name : string_pkg.string_type;
  82.    file : string_pkg.string_type;
  83.    trouble_node : boolean;
  84.    end record;
  85.  
  86. subtype empty_node is boolean;
  87.  
  88. end nodes;
  89.  
  90. with string_pkg;
  91. package hash is
  92.  
  93.     subtype hash_range is integer range 1..199;
  94.     function hasher(n:string_pkg.string_type) return hash_range;
  95.  
  96. end hash;
  97.  
  98. with hashing_functions_pkg;
  99. package body hash is
  100.  
  101. function plain_hash is new hashing_functions_pkg.hash_string (hash_range'last);
  102.  
  103. function hasher(n:string_pkg.string_type) return hash_range is
  104. begin 
  105.     return plain_hash (string_pkg.value (n)) + 1;
  106. end hasher;
  107.  
  108. end hash;
  109.  
  110.  
  111. with string_pkg;
  112. with dag_pkg;
  113. with nodes; use nodes;
  114. with hash; use hash;
  115. package units_dag_pkg is new dag_pkg (string_pkg.string_type, 
  116.                       string_pkg.equal,
  117.                       dag_node,
  118.                       hash_range,
  119.                       hasher
  120.                       );
  121. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  122. --MINIDAG.SPC
  123. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  124. with nodes; use nodes;
  125. with hash; use hash;
  126. with dag_pkg;
  127. with string_pkg;
  128. package mini_dag_pkg is new dag_pkg (string_pkg.string_type, 
  129.                      string_pkg.equal,
  130.                      empty_node,
  131.                      hash_range,
  132.                      hasher);
  133. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  134. --COPKG.DAT
  135. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  136.  
  137. with string_pkg;
  138. with string_lists;
  139. with set_pkg;
  140. with Paginated_Output;
  141. with ParserDeclarations;
  142. with units_dag_pkg; use units_dag_pkg;
  143. with mini_dag_pkg; use mini_dag_pkg;
  144. with nodes; use nodes;
  145.  
  146. package compile_order_declarations is
  147. --| Declarations of objects global to compilation order.  Also types
  148. --| global to compilation order.
  149.  
  150. --| N/A: Effects, Raises, Requires, Modifies
  151.  
  152.  
  153.                    -- package Renames --
  154.  
  155. package SP renames string_pkg;
  156. package PD renames ParserDeclarations;
  157. package id_list_pkg renames string_lists;
  158.  
  159.             -- Exceptions --
  160.  
  161.     duplicate_name : exception;        -- raised when there are two lib units
  162.                     -- with the same name
  163.  
  164.                -- Types --
  165.  
  166. type mode_type is (nothing, subp, pkg);
  167. type prog_type is (spec, bdy, separate_body);
  168.  
  169. default_empty_node : empty_node := false;
  170.  
  171. default_node : dag_node := (name => string_pkg.create(""),
  172.                 file => string_pkg.create(""),
  173.                             trouble_node => false);
  174.  
  175. subtype units_dag is units_dag_pkg.dag;
  176. subtype info_dag is mini_dag_pkg.dag;
  177.  
  178.  
  179.  
  180.  
  181. package id_set_pkg is new set_pkg (string_pkg.string_type,string_pkg.equal);
  182. subtype id_set is id_set_pkg.set;
  183.  
  184.  
  185.  
  186.             -- Variables --
  187.  
  188.  
  189. withs_dag        : units_dag := units_dag_pkg.create;
  190. files_dag        : info_dag := mini_dag_pkg.create;
  191. cycle_dag        : info_dag := mini_dag_pkg.create;
  192. withs_list       : id_list_pkg.list := id_list_pkg.create;
  193. unit_list        : id_list_pkg.list := id_list_pkg.create;
  194. name_stack       : id_list_pkg.list := id_list_pkg.create;
  195. prev_token       : PD.ParseStackElement;
  196. unit_name        : SP.string_type;
  197. cu_name          : SP.string_type;
  198. parent_body_name : SP.string_type;
  199. generic_name     : SP.string_type;
  200. mode             : mode_type := nothing;
  201. unit_type        : prog_type;
  202. current_file     : SP.string_type;
  203. report_file      : Paginated_Output.Paginated_File_Handle;
  204. inline_set       : id_set := id_set_pkg.create;
  205. inline_flag      : boolean := false;
  206. dup_string       : SP.string_type;
  207. dup_file         : SP.string_type;
  208. dummy            : SP.string_type;        -- dummy for apply actions
  209.  
  210.  
  211. -- the following is a flag which indicates whether generic instantiations
  212. -- will produce additional dependencies.  The LRM leaves it up to the 
  213. -- implementation to decide how they do generics.  In some compilers an
  214. -- instantiation will create a dependency on the generic's body as well
  215. -- as its spec.  However, some compilers do not create this dependency.
  216. -- While it would not be wrong to always include this dependency it
  217. -- would be creating more dependencies and larger graphs and making a
  218. -- more strict order than absolutely necessary in some cases.  So
  219. -- instead this variable will flag whether to do the dependencies or not.
  220.  
  221. do_generics : boolean := true;
  222.  
  223.             -- Operations --
  224. -- debugging procedures
  225. -- procedure put_dag is new units_dag_pkg.put_image (string_pkg.value);
  226. -- procedure put_info_dag is new mini_dag_pkg.put_image (string_pkg.value);
  227.  
  228. end  compile_order_declarations;
  229. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  230. --COMPORD.SPC
  231. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  232. with string_pkg;
  233. with compile_order_declarations;
  234.  
  235.  
  236. package Comp_Order is
  237.  
  238.  
  239.  
  240.  
  241. type report_type is (full, raw, dependency, raw_dependency, compilation,
  242.                      raw_compilation, units_order, file_order);
  243. package COD renames compile_order_declarations;
  244. package SP renames string_pkg;
  245.  
  246. internal_error : exception;        -- raised when something not normally
  247.                     -- caught is raised.
  248.  
  249. procedure Compilation_Order (       --| Produces a report showing dependencies
  250.                     --| and a compilation order for the files input
  251.     Source_List: in             --| list of filenames for input
  252.     COD.id_list_pkg.list;
  253.     Output : SP.string_type         --| Output file name
  254.     := SP.create(""); 
  255.     Units_file : SP.string_type     --| File containing pairs of file name,
  256.      := SP.create("");        --| unit name for adding to report.
  257.     Which_Report: in            --| Indicates whether to write both
  258.     report_type:= full          --| tables or just one of them
  259.     );
  260.     --| Raises: FILE_NOT_FOUND
  261.  
  262. --| Effects:
  263. --| This tool produces a report showing both withs and withed-by
  264. --| dependencies between library units for the files in the file_list.
  265. --| The table names each unit directly withed  or withed by the 
  266. --| modules in the input files and also shows a list of everything
  267. --| indirectly withed or withed by the unit.
  268. --| The report will also list the library units in their
  269. --| compilation order.  In the compilation list units will be alpha-
  270. --| betized when order is unimportant, and the dependency report will
  271. --| show the library units in alphabetical order.
  272. --| If both tables are to be computed the output will be in a paginated
  273. --| form for reports.  If just one or the other table is asked
  274. --| for, then the output will be in raw mode which looks basically
  275. --| the same in format, but the headings will not be present.
  276. --| If a file in the file list cannot be found FILE_NOT_FOUND is 
  277. --| raised.
  278.  
  279. --| Modifies: default output
  280.  
  281. --| N/A: Errors, Requires,
  282.  
  283.             ----------------
  284.  
  285. end Comp_Order;
  286. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  287. --CDRIVER.ADA
  288. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  289. with compile_order_declarations;
  290. with comp_order; use comp_order;
  291. with command_line_interface; 
  292. with string_pkg;  use string_pkg;  -- for = 
  293. with file_manager;
  294. with Text_io;
  295. with VMS_lib;
  296.  
  297. procedure compile_order is
  298.  
  299. package CLI renames command_line_interface;
  300. package COD renames compile_order_declarations;
  301. package SP  renames string_pkg;
  302. package FM  renames file_manager;
  303.  
  304.         -- Variable Declarations --
  305.  
  306. output_file : SP.string_type;
  307. unit_file   : SP.string_type;
  308. source_list : COD.id_list_pkg.list;
  309. source_files : SP.string_type;
  310. report_kind : report_type;
  311. named : CLI.argument_count;
  312. debug_string : SP.string_type;
  313. posit : CLI.argument_count;
  314. arg_array : array (1..4) of sp.string_type :=
  315.     (SP.create (""), SP.create (""), SP.create (""), SP.create ("full"));
  316. named_array : constant array (1..4) of sp.string_type :=
  317.     (SP.create("Source_List"), 
  318.      SP.create ("Output"), 
  319.      SP.create ("Units_file"),
  320.      SP.create ("Which_Report"));
  321. report_string : SP.string_type;
  322. index : positive;
  323. max_parm : constant := 4;
  324.  
  325.     procedure parse_sources (input : in out SP.string_type;
  326.                  list  : in out COD.id_list_pkg.list) is
  327.  
  328.  
  329.     position : natural := 1;
  330.     prev_pos : natural := 1;
  331.         temp_pos : natural := 1;
  332.     output   : SP.string_type;
  333.     name     : SP.string_type;
  334.     length   : natural;
  335.     file_names : COD.id_list_pkg.list;
  336.  
  337.     name_error : exception;        -- raised when a name is enclosed by
  338.                     -- only one quote
  339.  
  340.     begin
  341.         SP.mark;
  342.         loop
  343.         -- get each element of a comma separated list.
  344.         -- the list must not be empty to start with.
  345.             exit when position = 0;
  346.  
  347.                position := SP.match_c (input, ',', prev_pos);
  348.         -- match the next comma, 0 indicates there isn't one
  349.             if position = 0 then
  350.             name := SP.substr (input,
  351.                        prev_pos,
  352.                        (SP.length (input)- (prev_pos - 1) ));
  353.         else
  354.             name := SP.substr (input,
  355.                        prev_pos,
  356.                        position - prev_pos);
  357.         end if;
  358.         length :=  SP.length (name);
  359.         if SP.equal (SP.substr (name, 1, 1), """") and
  360.            SP.equal (SP.substr (name, length, 1), """") then
  361.             output := output & name & ", ";
  362.             name := SP.substr (name, 2, length-2);
  363.         elsif SP.equal (SP.substr (name, 1, 1), """") or
  364.               SP.equal (SP.substr (name, length, 1), """") then
  365.             raise name_error;
  366.         else
  367.             output := output & """" & name & """, ";
  368.         end if;
  369.         begin
  370.             file_names := FM.expand (name,
  371.                          FM.No_Version
  372.                         );
  373.             COD.id_list_pkg.Attach (list, 
  374.                         file_names);
  375.             exception
  376.             when FM.file_not_found =>
  377.                 Text_io.Put ("File ");
  378.                 Text_io.put (SP.value (name));
  379.                 TEXT_IO.PUT_LINE (" does not exist.");
  380.                 exit;
  381.             when FM.device_not_ready =>
  382.                 Text_io.put ("Device not ready: ");
  383.                 Text_io.put_line (SP.value (name));
  384.                 exit;
  385.             when FM.directory_not_found =>
  386.                 Text_io.put ("Directory not found: ");
  387.                 Text_io.put_line (SP.value (name));
  388.                 exit;
  389.             when FM.Expand_error | FM.parse_error =>
  390.                 Text_io.put ("File name error: ");
  391.                 Text_io.put_line (SP.value (name));
  392.                 exit;
  393.             end;
  394.         -- skip any spaces after the comma.
  395.         temp_pos := SP.match_not_c (input, ' ', position+1);
  396.             prev_pos := temp_pos;
  397.     end loop;
  398.     input := SP.make_persistent (SP.upper (SP.substr (
  399.                         output, 
  400.                              1, 
  401.                              SP.length (output)-2)));
  402.       -- substring because output will always have an extra ', ' on 
  403.       -- the end which we want to strip off.
  404.     
  405.     SP.release;
  406.  
  407.      end parse_sources;
  408.  
  409.     procedure put_help is
  410.  
  411.     begin
  412.  
  413.         TEXT_IO.PUT ("-- COMPILE ORDER: produces dependency tables and ");
  414.      Text_io.put_line ("compilation orders for Ada ");
  415.     Text_io.put_line ("-- source files. ");
  416.     Text_io.put_line (" ");    
  417.     Text_io.put ("type REPORT_TYPE is (FULL, RAW, DEPENDENCY, ");
  418.     Text_io.put_line ("COMPILATION, RAW_DEPENDENCY, ");
  419.     Text_io.put ("                     RAW_COMPILATION, UNITS_ORDER");
  420.     Text_io.put_line (", FILE_ORDER);");
  421.     Text_io.put ("type STRING_ARRAY is array (POSITIVE RANGE <>) of ");
  422.     Text_io.put_line ("STRING;");
  423.     Text_io.put_line ("");
  424.     TEXT_IO.PUT_LINE ("procedure COMPILE_ORDER (SOURCE_LIST  : in STRING_ARRAY;");
  425.     Text_io.put_line ("                         OUTPUT       : in STRING := """";");
  426.     Text_io.put_line ("                         UNITS_FILE   : in STRING := """";");
  427.     Text_io.put_line ("                         WHICH_REPORT : in REPORT_TYPE := FULL);");
  428.     Text_io.put_line (" ");
  429.     Text_io.put ("-- SOURCE_LIST specifies the Ada source files for ");
  430.      Text_io.put_line ("analysis.  There must be at ");
  431.     Text_io.put_line ("-- least one file. ");
  432.     Text_io.put ("-- OUTPUT specifies the report file (default is ");
  433.     Text_io.put_line ("standard output).");
  434.     Text_io.put ("-- UNITS_FILE specifies the file containing unit and ");
  435.     Text_io.put_line ("corresponding file");
  436.     Text_io.put_line ("-- information. ");
  437.     Text_io.put ("-- WHICH_REPORT indicates the type of report required.");
  438.     Text_io.put_line ("");
  439.     end put_help;
  440.  
  441.  
  442. begin  -- compile_order
  443.     SP.mark;
  444.  
  445.     VMS_lib.set_error;
  446.     CLI.initialize;
  447.  
  448.     named := CLI.Named_arg_count;
  449.     posit := CLI.positional_arg_count;
  450.  
  451.     if (posit > 4) or (posit = 0 and named = 0) or (named > 4)
  452.     or (named + posit > 4) or (named + posit < 1) then
  453.     if not (posit = 0 and named = 0) then 
  454.         Text_io.put_line ("Too many paramaters on command line: ");
  455.     end if;
  456.     put_help;
  457.     return;
  458.     else -- there is some combination of the right number of arguments
  459.     for index  in 1..posit loop
  460.         arg_array (index) := CLI.Positional_arg_value (index);
  461.     end loop;
  462.     for index in 1..max_parm loop
  463.         arg_array(index) := CLI.Named_arg_value 
  464.                     (SP.value (named_array(index)), 
  465.                      arg_array(index));
  466.     end loop;
  467.         CLI.finalize;
  468.     if SP.equal (arg_array(1), "") then
  469.         Text_io.put_line ("No input files: not generating a report");
  470.         return;
  471.     end if;
  472.  
  473.         parse_sources (arg_array (1), source_list);
  474.         output_file := SP.make_persistent (arg_array (2));
  475.     unit_file   := SP.make_persistent (arg_array (3));
  476.     report_kind := report_type'VALUE (SP.value (arg_array (4)));
  477.  
  478.     debug_string := arg_array (1);
  479.     
  480.         if not COD.id_list_pkg.IsEmpty (source_list) then    
  481.         Text_io.put ("    Compile_Order ( Source_List  => (");
  482.         Text_io.put_line (SP.value (arg_array(1)) & "),");
  483.         Text_io.put ("                    Output       => """);
  484.         Text_io.put_line (SP.value (output_file) & """,");
  485.         Text_io.put ("                    Units_File   => """);
  486.         Text_io.put_line (SP.value (unit_file) & """,");
  487.         Text_io.put ("                    Which_Report => ");
  488.         Text_io.put_line (report_type'IMAGE (report_kind) & ");");
  489.             Compilation_Order (Output => output_file,
  490.                          Source_list => source_list,
  491.                    Units_File => unit_file,
  492.                        Which_Report => report_kind);
  493.     else
  494.         Text_io.put_line ("No input files: not generating a report.");
  495.         end if;
  496.  
  497.     end if;
  498.  
  499.     SP.release;
  500.                    
  501.     exception
  502.     when CLI.invalid_parameter_order =>
  503.         Text_io.put ("Invalid command line: positional parameters are ");
  504.         Text_io.put_line ("not allowed after ");
  505.         Text_io.put_line ("                      named parameters");
  506.         put_help;
  507.     when CLI.invalid_named_association =>
  508.         Text_io.put ("Invalid command line: Named parameter is missing");
  509.         text_io.put_line (" a value or a name.");
  510.         put_help;
  511.     when CLI.unreferenced_named_arg =>
  512.         Text_io.put ("Invalid command line: Unknown named parameters ");
  513.         Text_io.put_line ("on command line. ");
  514.         put_help;
  515.     when CLI.missing_positional_arg =>
  516.         Text_io.put ("Invalid command line: Missing a positional");
  517.         Text_io.put_line (" argument on command line");
  518.         put_help;
  519.         when CONSTRAINT_ERROR =>  -- report_kind is not in report_type
  520.         Text_io.put_line ("Report_Type is unknown. " );
  521.         Text_io.put_line ("Possible values for Report_Type are: ");
  522.         Text_io.put ("FULL, RAW, DEPENDENCY, COMPILATION, RAW_DEPENDENCY");
  523.         Text_io.put_line (", RAW_COMPILATION, UNITS_ORDER, ");
  524.         Text_io.put_line ("FILE_ORDER ");
  525.         SP.release;
  526.     when internal_error =>
  527.         Text_io.put ("Compile_Order internal error");
  528.     when others =>
  529.         Text_io.put ("Compile_Order internal error");
  530.  
  531. end compile_order;
  532. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  533. --REPORT.SPC
  534. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  535. package report_pkg is
  536. --| Package containing the reporting routines for compile_order.
  537.  
  538. --| Overview:
  539.  
  540. --| The three routine are to report the dependencies, compilation lists,
  541. --| and cycles.  Dependencies and compilation lists both have full and raw
  542. --| forms, in addition compilation list has options to just give one of the
  543. --| lists in raw form.  Reporting cycles is always done in full form since
  544. --| anything following is incomplete and this has to be said up front.
  545. --| Dependency does both with and withed-by dependencies.  The two 
  546. --| compilation lists are: units_list and files_list.
  547.  
  548.     --- Type declarations ---
  549.  
  550. type form_type is (full, raw, units, files);
  551.  
  552.     --- Operations Global to report_pkg ---
  553.  
  554. procedure dependency_report(--| Using the information in the DAG
  555.                 --| form and output the dependency table
  556.     report: in form_type    --| output the report in full or raw form
  557.     );
  558. --| Effects: Produces the dependency table.  If the form type is raw no
  559. --| headers are written.  if it is full all the dependencies and headers
  560. --| are written.
  561.  
  562. --| N/A: Errors, Requires, Modifies
  563.  
  564.             ----------------
  565.  
  566.  
  567. procedure compilation_list( --| Using the DAG form and produce
  568.                   --| the compilation order list
  569.     report: in form_type    --| output the report in full or raw form
  570.     );
  571.     --| Raises: 
  572.  
  573. --| Effects: produces the compilation order list.  It is in full or raw
  574. --| form depending on report.
  575.  
  576. --| N/A: Errors, Requires, Modifies
  577.  
  578.             ----------------
  579.  
  580. procedure report_cycles;    --| Report any cycles found in the units given
  581.  
  582.  
  583. --| Effects: If there are any entries in the cycles dag it prints them out
  584. --| as the dependencies which cause cycles in the compilation order.  This
  585. --| is done before any of the other reports.
  586.  
  587. --| N/A: Errors, Requires, Modifies
  588.  
  589.             ----------------
  590. end report_pkg;
  591. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  592. --LOOKUP.SPC
  593. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  594. with Lists;
  595. with string_pkg;
  596. with text_io;
  597.  
  598. package lookup_lists is
  599.  
  600. ---- Package Renames:
  601. package SP renames string_pkg;
  602.  
  603. ---- Types
  604.  
  605. type lookup_record is
  606.     record
  607.     unit_name : SP.string_type;
  608.     file_name : SP.string_type;
  609.     end record;
  610.  
  611. package l_list_pkg is new lists(lookup_record);
  612. subtype l_list is l_list_pkg.list;
  613.  
  614. ---- Exceptions
  615.  
  616. wrong_format : exception;    -- raised when there are not two words on 
  617.                 -- a line 
  618. not_found    : exception;    -- raised when a unit is not found in a 
  619.                 -- list
  620.  
  621. ---- Variables
  622.  
  623. lookup_list : l_list := l_list_pkg.create;
  624.  
  625. ---- Operations global to lookup lists
  626.  
  627. procedure init_list (            --| initialize the list
  628.                     --| from the list in the file
  629.     file : TEXT_IO.file_type
  630.     );
  631.     --| Raises: wrong_format
  632.  
  633. function lookup (            --| lookup the file name for 
  634.                     --| the given unit name.
  635.     unit : in SP.string_type
  636.     ) return SP.string_type;
  637.     --| Raises: not_found 
  638.  
  639. end lookup_lists;
  640. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  641. --COMPORD.BDY
  642. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  643. with Parser;
  644. with ParserDeclarations;
  645. with Host_Dependencies;
  646. with nodes;
  647. with units_dag_pkg;
  648. with TEXT_IO;
  649. with report_pkg; use report_pkg;
  650. with lookup_lists;
  651. with Paginated_Output;
  652.  
  653. package body Comp_Order is
  654.  
  655. --| Overview
  656. --|  Expand any '*' notation in the list of files given as input.
  657. --|  Then scan each input file for withs clauses.  Build a DAG of
  658. --|  units with an edge representing a with.  Also add edges
  659. --|  for the implicit with of a spec by a body.  Add the unit
  660. --|  name into the table of unit names.
  661. --|
  662. --|  If the dependency report is to be printed, call dependency_report
  663. --|  in comp_utils with the apropriate argument (full, or raw).
  664. --|
  665. --|  If the compilation report is to be printed, call compilation_list
  666. --|  in comp_utils with the apropriate argument (full, raw, units or
  667. --|  files).
  668.  
  669. --| clean up.
  670.  
  671.  
  672. use string_pkg;   -- need use for "&"
  673.  
  674. ------  Package renames
  675.  
  676.     package PG renames Paginated_Output;
  677.     package PD renames ParserDeclarations;
  678.     package HD renames Host_Dependencies;
  679.     package WDAG renames units_dag_pkg;    
  680.  
  681.                -- Types --
  682.  
  683. token : PD.ParseStackElement;
  684.  
  685.               -- Local subprogram specifications --
  686.  
  687. procedure do_inline_dependencies; --| add dependencies to bodies of units
  688.                   --| with inlines.
  689.  
  690. --| Effects: For all of the units found to have inlines look at the
  691. --| predecessors of the spec and put in dependencies from these
  692. --| predecessors to the body.  If any cycles are created ignore them
  693. --| as the compiler would too.  
  694.  
  695. --| Modifies: COD.withs_dag 
  696.  
  697.             ----------------
  698.  
  699. procedure check_file_dependencies ( --| procedure which checks whether
  700.                                     --| the order of the units within the
  701.                                     --| the file would cause a compilaiton
  702.                                     --| problem.
  703.     unit_list :             --| list of the units in the file
  704.     in out COD.id_list_pkg.list
  705.     );
  706.  
  707. --| Effects: This checks that there are no problems for compilation
  708. --| in the order units appear in the file.  The unit_list is a list of
  709. --| unit name in the order in which they appear in the file.  Obviously
  710. --| if a unit at the end of the file is withed by one in the beginning
  711. --| they cannot be compiled in this order.  This will flag these cases.
  712. --| It checks their dependencies in the COD.withs_dag.  The unit list is
  713. --| emptied in this process ready for the next file.
  714.  
  715. --| Modifies: unit_list
  716.  
  717.             ------------------
  718.  
  719.  
  720.                   -- Operations global to comp_ord --
  721.  
  722.  
  723. procedure Compilation_Order (       --| Produces a report showing dependencies
  724.                     --| and a compilation order for the files input
  725.     Source_List: in                 --| list of filenames for input
  726.         COD.id_list_pkg.list;
  727.     Output : SP.string_type        --| Output file name
  728.     := SP.create ("");
  729.     Units_file : SP.string_type     --| File containing pairs of file name,
  730.      := SP.create("");        --| unit name for adding to report.
  731.     Which_Report: in            --| Indicates whether to write both
  732.     report_type:= full          --| tables or just one of them
  733.     ) is
  734.     --| Raises: FILE_NOT_FOUND
  735.  
  736. --| Algorithm:
  737. --| Using filemgr.expand expand any '*' notation in the file_list
  738. --| Use the routine gather to read the files for any withs and
  739. --| store the information in a DAG.
  740. --| Use dep_report to output the dependencies part of the report
  741. --| Use comp_list to output the compilation order list at the end
  742. --| of the report.
  743.  
  744.            ------ local declarations -----
  745.  
  746.     index : POSITIVE;
  747.     iter : COD.id_list_pkg.ListIter;
  748.     file : string_pkg.string_type;  
  749.     line : Host_Dependencies.Source_line;  
  750.     input_source : TEXT_IO.FILE_TYPE;
  751.     output_file : TEXT_IO.FILE_TYPE;
  752.     list_file : TEXT_IO.FILE_TYPE;
  753.  
  754.  
  755.     begin
  756. --  the file list should be expanded before this program is called.
  757. --  This is done by UTS on the IBM and the command line interface
  758. --  package on VMS.  If and when the preamble generator is working
  759. --  a filemanager expand may be needed, but it can't be done that
  760. --  way for now --cag
  761.  
  762.     if (Which_Report = full) or
  763.        (Which_Report = dependency) or
  764.        (Which_Report = compilation) then
  765.     PG.Create_Paginated_File (File_Name => SP.value (Output),
  766.                   File_Handle => COD.report_file,
  767.                   Page_Size => 60,
  768.                   Header_size => 4,
  769.                   Footer_Size => 0);
  770.     PG.Set_Header (File_Handle => COD.report_file,
  771.             Header_Line => 1,
  772.             Header_Text => 
  773.         "Compilation Report                                       ~c  page  ~p"
  774.               );
  775.     else
  776.     -- the report type is raw so we don't want any headers or footers
  777.     PG.Create_Paginated_File (File_Name => SP.value (Output),
  778.                  File_Handle => COD.report_file,
  779.                  Page_Size => 0,
  780.                  Header_size => 0,
  781.                  Footer_Size => 0);
  782.     end if;
  783.  
  784.     if not SP.equal (Units_file, "") then
  785.     begin
  786.             text_io.open (file => list_file,
  787.                     mode => text_io.in_file,
  788.                     name => SP.value (Units_file));
  789.         lookup_lists.init_list (list_file);
  790.             text_io.close (list_file);
  791.     exception
  792.         when others =>
  793.         Text_io.put_line ("Error opening the Units_File: " &
  794.                   SP.value (Units_File));
  795.         Text_io.put_line ("Input from Units_File ignored");
  796.     end;
  797.     end if;
  798.  
  799.     iter := COD.id_list_pkg.MakeListIter (Source_List);
  800.     while COD.id_list_pkg.more (iter) loop
  801.     begin
  802.  
  803.         COD.id_list_pkg.next (iter, file);
  804.         TEXT_IO.OPEN (
  805.              FILE => input_source,
  806.             MODE => TEXT_IO.IN_FILE,
  807.                 NAME => SP.value (file));
  808.         TEXT_IO.SET_INPUT (input_source);
  809.  
  810.             COD.current_file := file;
  811.         SP.mark;
  812.             token := Parser.Parse;
  813.         SP.release;
  814.         check_file_dependencies (COD.unit_list);
  815.             exception
  816.             when PD.Parser_Error =>
  817.                 TEXT_IO.NEW_LINE;
  818.                 TEXT_IO.PUT_LINE(ITEM => "Syntax Error in Source: Line: " &
  819.                     HD.Source_Line'Image(PD.CurToken.lexed_token.srcpos_line) &
  820.                     " Column: " & HD.Source_Column'Image(
  821.                     PD.CurToken.lexed_token.srcpos_column));
  822.                 TEXT_IO.put ("In file: ");
  823.                   TEXT_IO.put_line (SP.value (COD.current_file));
  824.             TEXT_IO.put_line ("Continuing with next file");
  825.         when COD.duplicate_name =>
  826.                 Text_IO.put ("Two library units both have the name ");
  827.                 Text_IO.put (SP.value (COD.dup_string));
  828.                 TEXT_IO.put (", one of them in the file: ");
  829.                     TEXT_IO.put_line (SP.value (COD.current_file));
  830.             TEXT_IO.put ("The other in ");
  831.             TEXT_IO.put_line (SP.value (COD.dup_file));
  832.             TEXT_IO.put_line ("Continuing with next file");
  833.         when text_io.status_error =>
  834.                 Text_io.put
  835.             ("Input file " &  SP.value (file));
  836.             Text_io.put_line
  837.             (" is already open ");
  838.             Text_io.put_line ("Continuing with next file");
  839.         when Text_io.name_error =>
  840.                 Text_io.put_line
  841.             ("Unknown input_file: " & SP.value (file));
  842.             Text_io.put_line ("Continuing with next file");
  843.         when Text_io.use_error =>
  844.             Text_io.put_line
  845.                ("Error opening input file: " & SP.value (file));
  846.             Text_io.put_line ("Continuing with next file");
  847.     end;
  848.     begin
  849.            TEXT_IO.CLOSE (input_source);
  850.     exception
  851.         when Text_io.status_error =>
  852.         -- raised when the input file couldn't be opened which has already
  853.         -- been reported so ignore this.
  854.         null;
  855.     end;
  856.     end loop;
  857.  
  858.     do_inline_dependencies;
  859.  
  860.     case Which_Report is
  861.         when full =>
  862.      report_cycles;
  863.             dependency_report (full);
  864.             compilation_list (full);
  865.         when raw =>
  866.      report_cycles;
  867.             dependency_report (raw);
  868.             compilation_list (raw);
  869.         when dependency =>
  870.      report_cycles;
  871.             dependency_report (full);
  872.         when raw_dependency =>
  873.      report_cycles;
  874.             dependency_report (raw);
  875.         when compilation =>
  876.      report_cycles;
  877.             compilation_list (full);
  878.         when raw_compilation =>
  879.      report_cycles;
  880.             compilation_list (raw);
  881.         when units_order =>
  882.      report_cycles;
  883.             compilation_list (units);
  884.         when file_order =>
  885.      report_cycles;
  886.             compilation_list (files);
  887.     end case;
  888.  
  889.     PG.Close_Paginated_File (File_Handle => COD.report_file);
  890.  
  891.     exception
  892.     when PG.file_error =>
  893.         Text_io.put_line 
  894.             ("Error opening report file : report not generated");
  895.     when PG.file_already_open =>
  896.         Text_io.put_line 
  897.             ("Report file already open : report not generated");
  898.     when others =>
  899.         raise internal_error;
  900.  
  901. end Compilation_Order;
  902.  
  903.  
  904.             ----------------
  905.  
  906. procedure do_inline_dependencies  --| add dependencies to bodies of units
  907.                   --| with inlines.
  908.     is
  909.  
  910.     i : COD.id_set_pkg.members_iter;
  911.     name : SP.string_type;
  912.     body_name : SP.string_type;
  913.     body_label : SP.string_type;
  914.     body_temp : SP.string_type;
  915.     spec_label : SP.string_type;
  916.     predecessor : SP.string_type;
  917.     preds : WDAG.preds_iter;    
  918.     value : nodes.dag_node;
  919.     
  920.     begin
  921.     SP.mark;
  922.  
  923.      i := COD.id_set_pkg.make_members_iter(COD.inline_set);
  924.     while COD.id_set_pkg.more (i) loop
  925.         COD.id_set_pkg.next (i, name);
  926.         body_name := name & " (body)";
  927.         body_temp := SP.make_persistent (SP.upper (body_name));
  928.         body_label := SP.upper (body_name);
  929.         spec_label := SP.upper (name & " (spec)");
  930.  
  931.         begin
  932.         value := COD.default_node;
  933.         value.name := SP.make_persistent (body_name);
  934.         WDAG.add_node (COD.withs_dag, 
  935.                    body_temp, 
  936.                    value);
  937.         WDAG.add_edge (COD.withs_dag, body_label, spec_label);
  938.         exception
  939.             when WDAG.illegal_node | WDAG.duplicate_edge=>
  940.             SP.flush (body_temp);
  941.             SP.flush (value.name);
  942.         end;
  943.         preds := WDAG.make_preds_iter (COD.withs_dag, spec_label);
  944.         while WDAG.more (preds) loop
  945.         WDAG.next (preds, predecessor);
  946.         begin
  947.             WDAG.add_edge (COD.withs_dag, predecessor, body_label);
  948.             exception
  949.             when WDAG.makes_cycle | WDAG.duplicate_edge =>
  950.             -- one of the specs predecessors is the body so this
  951.             -- will always happen just ignore it.
  952.             -- And there shouldn't be duplicate edges, but if
  953.             -- there are ignore them.
  954.                 null;  
  955.         end;
  956.         end loop;
  957.     end loop;
  958.     SP.release;
  959.  
  960.     end do_inline_dependencies;
  961.  
  962.             ----------------
  963.    
  964. procedure check_file_dependencies ( --| procedure which checks whether
  965.                                     --| the order of the units within the
  966.                                     --| the file would cause a compilaiton
  967.                                     --| problem.
  968.     unit_list : in out COD.id_list_pkg.list    
  969.                     --| list of the units in the file
  970.     ) is
  971.  
  972.     id_iter : COD.id_list_pkg.ListIter;
  973.     top : SP.string_type;
  974.     element : SP.string_type;
  975.     elt : SP.string_type;
  976.     top_value : nodes.dag_node;
  977.     elt_value : nodes.dag_node;
  978.     begin
  979.     SP.mark;
  980.  
  981.         while not COD.id_list_pkg.IsEmpty (unit_list) loop
  982.             top := SP.upper (COD.id_list_pkg.FirstValue (unit_list));
  983.             COD.id_list_pkg.DeleteHead (unit_list);
  984.             id_iter := COD.id_list_pkg.MakeListIter (unit_list);
  985.             while COD.id_list_pkg.More (id_iter) loop
  986.                 COD.id_list_pkg.Next (id_iter, element);
  987.         elt := SP.upper (element);
  988.                 if WDAG.is_descendent (COD.withs_dag, top, elt) then
  989.             begin
  990.                         top_value := WDAG.get_value (COD.withs_dag, top);
  991.                         elt_value := WDAG.get_value (COD.withs_dag, elt);
  992.                         top_value.trouble_node := true;
  993.                         elt_value.trouble_node := true;
  994.                  WDAG.set_value (COD.withs_dag, top, top_value);
  995.                  WDAG.set_value (COD.withs_dag, elt, elt_value);
  996.             exception
  997.                 when WDAG.illegal_node =>
  998.                 -- something's already wrong if one is in cycle dag
  999.                 -- instead of withs so ignore it.
  1000.                 null;
  1001.             end;
  1002.                 end if;
  1003.             end loop;
  1004.         end loop;
  1005.     SP.release;
  1006.     end check_file_dependencies;
  1007.  
  1008. end Comp_Order;
  1009. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1010. --GRMCONST.BDY
  1011. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1012.      
  1013. Package body Grammar_Constants is
  1014.      
  1015.     function setGrammarSymbolCount return ParserInteger is
  1016.     begin
  1017.         return    319  ;
  1018.     end setGrammarSymbolCount;
  1019.      
  1020.     function setActionCount return ParserInteger is
  1021.     begin
  1022.         return   1429  ;
  1023.     end setActionCount;
  1024.      
  1025.     function setStateCountPlusOne return ParserInteger is
  1026.     begin
  1027.         return    950  ;
  1028.     end setStateCountPlusOne;
  1029.      
  1030.     function setLeftHandSideCount return ParserInteger is
  1031.     begin
  1032.     return    477  ;
  1033.     end setLeftHandSideCount;
  1034.      
  1035.     function setRightHandSideCount return ParserInteger is
  1036.     begin
  1037.         return    477  ;
  1038.     end setRightHandSideCount;
  1039.      
  1040. end Grammar_Constants;
  1041.      
  1042.      
  1043. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1044. --PTBLS.BDY
  1045. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1046.      
  1047. package body ParseTables is
  1048. ----------------------------------------------------------------------
  1049. -- The rest of the constants used to  the Parse Tables
  1050. ----------------------------------------------------------------------
  1051.      
  1052.     DefaultValue : constant := 1 ; -- default for aggregates.
  1053.      
  1054.     ActionTableOneLength : constant GC.ParserInteger :=
  1055.           8225  ;
  1056.         --| Length (number of entries) in map ActionTableOne.
  1057.     subtype ActionTableOneRange is GC.ParserInteger
  1058.             range 1..ActionTableOneLength;
  1059.      
  1060.     ActionTableTwoLength : constant GC.ParserInteger :=
  1061.           8225  ;
  1062.         --| Length (number of entries) in map ActionTableTwo.
  1063.     subtype ActionTableTwoRange is GC.ParserInteger
  1064.             range 1..ActionTableTwoLength;
  1065.      
  1066.     DefaultMapLength : constant GC.ParserInteger :=
  1067.            949  ;
  1068.         --| Length (number of entries) in map Defaults.
  1069.     subtype DefaultMapRange is GC.ParserInteger range 1..DefaultMapLength;
  1070.      
  1071.     FollowMapLength : constant GC.ParserInteger :=
  1072.            223  ;
  1073.         --| Length (number of entries) in the FollowMap.
  1074.      
  1075.     GrammarSymbolCountPlusOne : constant GC.ParserInteger :=
  1076.            320  ;
  1077.         --| Number of symbols plus one in the parse tables.
  1078.         -- NYU Reference Name: NUM_INPUTS
  1079.      
  1080.     ActionTableSize : constant GC.ParserInteger :=
  1081.           5519  ;
  1082.         --| Maximum entry in Action Tables referenced by hash
  1083.         --| function. Entries above TableSize are collision chains.
  1084.         -- NYU Reference Name: TABLE_SIZE
  1085.      
  1086.     ------------------------------------------------------------------
  1087.     -- Tables generated by Parse Tables Generator
  1088.     ------------------------------------------------------------------
  1089.      
  1090.     subtype GrammarSymbolRepRangePlusZero is
  1091.         GrammarSymbolRepRangePlusZeroCommon;
  1092.      
  1093.     GrammarSymbolTableIndex : constant
  1094.         array (GrammarSymbolRange'first .. GrammarSymbolRange'last * 2)
  1095.         of GC.ParserInteger :=
  1096.          (    1,    0,    1,    5,    6,    8,    9,   14,   15,   20
  1097. ,   21,   23,   24,   26,   27,   31,   32,   33,   34,   38
  1098. ,   39,   42,   43,   46,   47,   54,   55,   61,   62,   66
  1099. ,   67,   71,   72,   77,   78,   79,   80,   83,   84,   88
  1100. ,   89,   91,   92,   96,   97,  105,  106,  109,  110,  112
  1101. ,  113,  120,  121,  127,  128,  131,  132,  133,  134,  135
  1102. ,  136,  137,  138,  144,  145,  148,  149,  151,  152,  154
  1103. ,  155,  157,  158,  161,  162,  163,  164,  165,  166,  171
  1104. ,  172,  174,  175,  181,  182,  187,  188,  194,  195,  203
  1105. ,  204,  208,  209,  213,  214,  219,  220,  222,  223,  229
  1106. ,  230,  235,  236,  242,  243,  248,  249,  256,  257,  263
  1107. ,  264,  267,  268,  276,  277,  280,  281,  284,  285,  287
  1108. ,  288,  291,  292,  296,  297,  300,  301,  303,  304,  313
  1109. ,  314,  328,  329,  342,  343,  359,  360,  360,  361,  361
  1110. ,  362,  362,  363,  363,  364,  364,  365,  365,  366,  366
  1111. ,  367,  367,  368,  368,  369,  369,  370,  370,  371,  371
  1112. ,  372,  372,  373,  373,  374,  374,  375,  377,  378,  379
  1113. ,  380,  381,  382,  383,  384,  385,  386,  387,  388,  389
  1114. ,  390,  391,  392,  393,  394,  395,  396,  397,  398,  412
  1115. ,  413,  416,  417,  420,  421,  431,  432,  440,  441,  470
  1116. ,  471,  476,  477,  494,  495,  511,  512,  529,  530,  545
  1117. ,  546,  564,  565,  586,  587,  605,  606,  621,  622,  640
  1118. ,  641,  661,  662,  682,  683,  702,  703,  717,  718,  735
  1119. ,  736,  749,  750,  777,  778,  787,  788,  800,  801,  821
  1120. ,  822,  848,  849,  872,  873,  887,  888,  913,  914,  942
  1121. ,  943,  969,  970,  992,  993, 1012, 1013, 1033, 1034, 1055
  1122. , 1056, 1077, 1078, 1100, 1101, 1109, 1110, 1119, 1120, 1141
  1123. , 1142, 1157, 1158, 1182, 1183, 1204, 1205, 1221, 1222, 1254
  1124. , 1255, 1290, 1291, 1309, 1310, 1337, 1338, 1355, 1356, 1380
  1125. , 1381, 1410, 1411, 1434, 1435, 1461, 1462, 1477, 1478, 1481
  1126. , 1482, 1495, 1496, 1512, 1513, 1517, 1518, 1531, 1532, 1544
  1127. , 1545, 1567, 1568, 1588, 1589, 1600, 1601, 1616, 1617, 1623
  1128. , 1624, 1632, 1633, 1638, 1639, 1647, 1648, 1671, 1672, 1687
  1129. , 1688, 1691, 1692, 1715, 1716, 1737, 1738, 1758, 1759, 1768
  1130. , 1769, 1790, 1791, 1801, 1802, 1810, 1811, 1825, 1826, 1837
  1131. , 1838, 1846, 1847, 1863, 1864, 1881, 1882, 1890, 1891, 1898
  1132. , 1899, 1918, 1919, 1940, 1941, 1949, 1950, 1983, 1984, 2004
  1133. , 2005, 2031, 2032, 2061, 2062, 2079, 2080, 2108, 2109, 2143
  1134. , 2144, 2181, 2182, 2189, 2190, 2212, 2213, 2234, 2235, 2257
  1135. , 2258, 2286, 2287, 2314, 2315, 2354, 2355, 2361, 2362, 2418
  1136. , 2419, 2454, 2455, 2458, 2459, 2465, 2466, 2499, 2500, 2505
  1137. , 2506, 2535, 2536, 2559, 2560, 2568, 2569, 2588, 2589, 2607
  1138. , 2608, 2629, 2630, 2650, 2651, 2670, 2671, 2693, 2694, 2706
  1139. , 2707, 2718, 2719, 2727, 2728, 2738, 2739, 2760, 2761, 2776
  1140. , 2777, 2794, 2795, 2802, 2803, 2816, 2817, 2836, 2837, 2850
  1141. , 2851, 2866, 2867, 2880, 2881, 2895, 2896, 2910, 2911, 2925
  1142. , 2926, 2939, 2940, 2953, 2954, 2965, 2966, 2979, 2980, 2993
  1143. , 2994, 3008, 3009, 3024, 3025, 3040, 3041, 3045, 3046, 3083
  1144. , 3084, 3131, 3132, 3161, 3162, 3170, 3171, 3182, 3183, 3208
  1145. , 3209, 3236, 3237, 3254, 3255, 3266, 3267, 3280, 3281, 3295
  1146. , 3296, 3328, 3329, 3364, 3365, 3383, 3384, 3407, 3408, 3422
  1147. , 3423, 3445, 3446, 3471, 3472, 3481, 3482, 3485, 3486, 3507
  1148. , 3508, 3523, 3524, 3544, 3545, 3568, 3569, 3598, 3599, 3614
  1149. , 3615, 3632, 3633, 3651, 3652, 3674, 3675, 3705, 3706, 3722
  1150. , 3723, 3749, 3750, 3763, 3764, 3785, 3786, 3801, 3802, 3819
  1151. , 3820, 3843, 3844, 3869, 3870, 3887, 3888, 3904, 3905, 3925
  1152. , 3926, 3949, 3950, 3956, 3957, 3974, 3975, 3987, 3988, 4003
  1153. , 4004, 4017, 4018, 4042, 4043, 4049, 4050, 4074, 4075, 4081
  1154. , 4082, 4096, 4097, 4107, 4108, 4116, 4117, 4132, 4133, 4151
  1155. , 4152, 4168, 4169, 4189, 4190, 4208, 4209, 4239, 4240, 4268
  1156. , 4269, 4291, 4292, 4309, 4310, 4321, 4322, 4340, 4341, 4362
  1157. , 4363, 4414, 4415, 4438, 4439, 4462, 4463, 4475, 4476, 4508
  1158. , 4509, 4522, 4523, 4550, 4551, 4568, 4569, 4584, 4585, 4600
  1159. , 4601, 4613, 4614, 4626, 4627, 4648, 4649, 4663)  ;
  1160.      
  1161.     GrammarSymbolTable : constant String :=
  1162.          ('A','B','O','R','T','A','B','S','A','C'
  1163. ,'C','E','P','T','A','C','C','E','S','S'
  1164. ,'A','L','L','A','N','D','A','R','R','A'
  1165. ,'Y','A','T','B','E','G','I','N','B','O'
  1166. ,'D','Y','C','A','S','E','C','O','N','S'
  1167. ,'T','A','N','T','D','E','C','L','A','R'
  1168. ,'E','D','E','L','A','Y','D','E','L','T'
  1169. ,'A','D','I','G','I','T','S','D','O','E'
  1170. ,'L','S','E','E','L','S','I','F','E','N'
  1171. ,'D','E','N','T','R','Y','E','X','C','E'
  1172. ,'P','T','I','O','N','E','X','I','T','F'
  1173. ,'O','R','F','U','N','C','T','I','O','N'
  1174. ,'G','E','N','E','R','I','C','G','O','T'
  1175. ,'O','I','F','I','N','I','S','L','I','M'
  1176. ,'I','T','E','D','L','O','O','P','M','O'
  1177. ,'D','N','E','W','N','O','T','N','U','L'
  1178. ,'L','O','F','O','R','O','T','H','E','R'
  1179. ,'S','O','U','T','P','A','C','K','A','G'
  1180. ,'E','P','R','A','G','M','A','P','R','I'
  1181. ,'V','A','T','E','P','R','O','C','E','D'
  1182. ,'U','R','E','R','A','I','S','E','R','A'
  1183. ,'N','G','E','R','E','C','O','R','D','R'
  1184. ,'E','M','R','E','N','A','M','E','S','R'
  1185. ,'E','T','U','R','N','R','E','V','E','R'
  1186. ,'S','E','S','E','L','E','C','T','S','E'
  1187. ,'P','A','R','A','T','E','S','U','B','T'
  1188. ,'Y','P','E','T','A','S','K','T','E','R'
  1189. ,'M','I','N','A','T','E','T','H','E','N'
  1190. ,'T','Y','P','E','U','S','E','W','H','E'
  1191. ,'N','W','H','I','L','E','W','I','T','H'
  1192. ,'X','O','R','i','d','e','n','t','i','f'
  1193. ,'i','e','r','n','u','m','e','r','i','c'
  1194. ,'_','l','i','t','e','r','a','l','s','t'
  1195. ,'r','i','n','g','_','l','i','t','e','r'
  1196. ,'a','l','c','h','a','r','a','c','t','e'
  1197. ,'r','_','l','i','t','e','r','a','l','&'
  1198. ,''','(',')','*','+',',','-','.','/',':'
  1199. ,';','<','=','>',''','|',''','=','>','.'
  1200. ,'.','*','*',':','=','/','=','>','=','<'
  1201. ,'=','<','<','>','>','<','>','c','o','m'
  1202. ,'m','e','n','t','_','l','i','t','e','r'
  1203. ,'a','l','$','E','O','F','$','A','C','C'
  1204. ,'c','o','m','p','i','l','a','t','i','o'
  1205. ,'n','p','r','a','g','m','a','_','i','d'
  1206. ,'g','e','n','e','r','a','l','_','c','o'
  1207. ,'m','p','o','n','e','n','t','_','a','s'
  1208. ,'s','o','c','i','a','t','i','o','n','s'
  1209. ,'p','r','a','g','m','a','o','b','j','e'
  1210. ,'c','t','_','d','e','c','l','a','r','a'
  1211. ,'t','i','o','n','b','a','s','i','c','_'
  1212. ,'d','e','c','l','a','r','a','t','i','o'
  1213. ,'n','n','u','m','b','e','r','_','d','e'
  1214. ,'c','l','a','r','a','t','i','o','n','t'
  1215. ,'y','p','e','_','d','e','c','l','a','r'
  1216. ,'a','t','i','o','n','s','u','b','t','y'
  1217. ,'p','e','_','d','e','c','l','a','r','a'
  1218. ,'t','i','o','n','s','u','b','p','r','o'
  1219. ,'g','r','a','m','_','d','e','c','l','a'
  1220. ,'r','a','t','i','o','n','p','a','c','k'
  1221. ,'a','g','e','_','d','e','c','l','a','r'
  1222. ,'a','t','i','o','n','t','a','s','k','_'
  1223. ,'d','e','c','l','a','r','a','t','i','o'
  1224. ,'n','g','e','n','e','r','i','c','_','d'
  1225. ,'e','c','l','a','r','a','t','i','o','n'
  1226. ,'e','x','c','e','p','t','i','o','n','_'
  1227. ,'d','e','c','l','a','r','a','t','i','o'
  1228. ,'n','g','e','n','e','r','i','c','_','i'
  1229. ,'n','s','t','a','n','t','i','a','t','i'
  1230. ,'o','n','r','e','n','a','m','i','n','g'
  1231. ,'_','d','e','c','l','a','r','a','t','i'
  1232. ,'o','n','i','d','e','n','t','i','f','i'
  1233. ,'e','r','_','l','i','s','t','s','u','b'
  1234. ,'t','y','p','e','_','i','n','d','i','c'
  1235. ,'a','t','i','o','n','[',':','=','e','x'
  1236. ,'p','r','e','s','s','i','o','n',']','c'
  1237. ,'o','n','s','t','r','a','i','n','e','d'
  1238. ,'_','a','r','r','a','y','_','d','e','f'
  1239. ,'i','n','i','t','i','o','n','e','x','p'
  1240. ,'r','e','s','s','i','o','n','{',',','i'
  1241. ,'d','e','n','t','i','f','i','e','r','}'
  1242. ,'f','u','l','l','_','t','y','p','e','_'
  1243. ,'d','e','c','l','a','r','a','t','i','o'
  1244. ,'n','i','n','c','o','m','p','l','e','t'
  1245. ,'e','_','t','y','p','e','_','d','e','c'
  1246. ,'l','a','r','a','t','i','o','n','p','r'
  1247. ,'i','v','a','t','e','_','t','y','p','e'
  1248. ,'_','d','e','c','l','a','r','a','t','i'
  1249. ,'o','n','t','y','p','e','_','d','e','f'
  1250. ,'i','n','i','t','i','o','n','d','i','s'
  1251. ,'c','r','i','m','i','n','a','n','t','_'
  1252. ,'s','p','e','c','i','f','i','c','a','t'
  1253. ,'i','o','n','{',';','d','i','s','c','r'
  1254. ,'i','m','i','n','a','n','t','_','s','p'
  1255. ,'e','c','i','f','i','c','a','t','i','o'
  1256. ,'n','}','e','n','u','m','e','r','a','t'
  1257. ,'i','o','n','_','t','y','p','e','_','d'
  1258. ,'e','f','i','n','i','t','i','o','n','i'
  1259. ,'n','t','e','g','e','r','_','t','y','p'
  1260. ,'e','_','d','e','f','i','n','i','t','i'
  1261. ,'o','n','r','e','a','l','_','t','y','p'
  1262. ,'e','_','d','e','f','i','n','i','t','i'
  1263. ,'o','n','a','r','r','a','y','_','t','y'
  1264. ,'p','e','_','d','e','f','i','n','i','t'
  1265. ,'i','o','n','r','e','c','o','r','d','_'
  1266. ,'t','y','p','e','_','d','e','f','i','n'
  1267. ,'i','t','i','o','n','a','c','c','e','s'
  1268. ,'s','_','t','y','p','e','_','d','e','f'
  1269. ,'i','n','i','t','i','o','n','d','e','r'
  1270. ,'i','v','e','d','_','t','y','p','e','_'
  1271. ,'d','e','f','i','n','i','t','i','o','n'
  1272. ,'t','y','p','e','_','m','a','r','k','c'
  1273. ,'o','n','s','t','r','a','i','n','t','t'
  1274. ,'y','p','e','_','n','a','m','e','|','s'
  1275. ,'u','b','t','y','p','e','_','n','a','m'
  1276. ,'e','r','a','n','g','e','_','c','o','n'
  1277. ,'s','t','r','a','i','n','t','f','l','o'
  1278. ,'a','t','i','n','g','_','p','o','i','n'
  1279. ,'t','_','c','o','n','s','t','r','a','i'
  1280. ,'n','t','f','i','x','e','d','_','p','o'
  1281. ,'i','n','t','_','c','o','n','s','t','r'
  1282. ,'a','i','n','t','s','i','m','p','l','e'
  1283. ,'_','e','x','p','r','e','s','s','i','o'
  1284. ,'n','e','n','u','m','e','r','a','t','i'
  1285. ,'o','n','_','l','i','t','e','r','a','l'
  1286. ,'_','s','p','e','c','i','f','i','c','a'
  1287. ,'t','i','o','n','{',',','e','n','u','m'
  1288. ,'e','r','a','t','i','o','n','_','l','i'
  1289. ,'t','e','r','a','l','_','s','p','e','c'
  1290. ,'i','f','i','c','a','t','i','o','n','}'
  1291. ,'e','n','u','m','e','r','a','t','i','o'
  1292. ,'n','_','l','i','t','e','r','a','l','f'
  1293. ,'l','o','a','t','i','n','g','_','a','c'
  1294. ,'c','u','r','a','c','y','_','d','e','f'
  1295. ,'i','n','i','t','i','o','n','[','r','a'
  1296. ,'n','g','e','_','c','o','n','s','t','r'
  1297. ,'a','i','n','t',']','f','i','x','e','d'
  1298. ,'_','a','c','c','u','r','a','c','y','_'
  1299. ,'d','e','f','i','n','i','t','i','o','n'
  1300. ,'u','n','c','o','n','s','t','r','a','i'
  1301. ,'n','e','d','_','a','r','r','a','y','_'
  1302. ,'d','e','f','i','n','i','t','i','o','n'
  1303. ,'i','n','d','e','x','_','s','u','b','t'
  1304. ,'y','p','e','_','d','e','f','i','n','i'
  1305. ,'t','i','o','n','{',',','i','n','d','e'
  1306. ,'x','_','s','u','b','t','y','p','e','_'
  1307. ,'d','e','f','i','n','i','t','i','o','n'
  1308. ,'}','i','n','d','e','x','_','c','o','n'
  1309. ,'s','t','r','a','i','n','t','n','a','m'
  1310. ,'e','d','i','s','c','r','e','t','e','_'
  1311. ,'r','a','n','g','e','{',',','d','i','s'
  1312. ,'c','r','e','t','e','_','r','a','n','g'
  1313. ,'e','}','r','a','n','g','e','c','o','m'
  1314. ,'p','o','n','e','n','t','_','l','i','s'
  1315. ,'t','{','p','r','a','g','m','a','_','d'
  1316. ,'e','c','l','}','{','c','o','m','p','o'
  1317. ,'n','e','n','t','_','d','e','c','l','a'
  1318. ,'r','a','t','i','o','n','}','c','o','m'
  1319. ,'p','o','n','e','n','t','_','d','e','c'
  1320. ,'l','a','r','a','t','i','o','n','v','a'
  1321. ,'r','i','a','n','t','_','p','a','r','t'
  1322. ,'{','p','r','a','g','m','a','_','v','a'
  1323. ,'r','i','a','n','t','}','v','a','r','i'
  1324. ,'a','n','t','{','v','a','r','i','a','n'
  1325. ,'t','}','c','h','o','i','c','e','{','|'
  1326. ,'c','h','o','i','c','e','}','{','b','a'
  1327. ,'s','i','c','_','d','e','c','l','a','r'
  1328. ,'a','t','i','v','e','_','i','t','e','m'
  1329. ,'}','d','e','c','l','a','r','a','t','i'
  1330. ,'v','e','_','p','a','r','t','b','o','d'
  1331. ,'y','{','l','a','t','e','r','_','d','e'
  1332. ,'c','l','a','r','a','t','i','v','e','_'
  1333. ,'i','t','e','m','}','b','a','s','i','c'
  1334. ,'_','d','e','c','l','a','r','a','t','i'
  1335. ,'v','e','_','i','t','e','m','r','e','p'
  1336. ,'r','e','s','e','n','t','a','t','i','o'
  1337. ,'n','_','c','l','a','u','s','e','u','s'
  1338. ,'e','_','c','l','a','u','s','e','l','a'
  1339. ,'t','e','r','_','d','e','c','l','a','r'
  1340. ,'a','t','i','v','e','_','i','t','e','m'
  1341. ,'p','r','o','p','e','r','_','b','o','d'
  1342. ,'y','b','o','d','y','_','s','t','u','b'
  1343. ,'s','u','b','p','r','o','g','r','a','m'
  1344. ,'_','b','o','d','y','p','a','c','k','a'
  1345. ,'g','e','_','b','o','d','y','t','a','s'
  1346. ,'k','_','b','o','d','y','i','n','d','e'
  1347. ,'x','e','d','_','c','o','m','p','o','n'
  1348. ,'e','n','t','s','e','l','e','c','t','e'
  1349. ,'d','_','c','o','m','p','o','n','e','n'
  1350. ,'t','a','t','t','r','i','b','u','t','e'
  1351. ,'s','e','l','e','c','t','o','r','a','t'
  1352. ,'t','r','i','b','u','t','e','_','d','e'
  1353. ,'s','i','g','n','a','t','o','r','c','o'
  1354. ,'m','p','o','n','e','n','t','_','a','s'
  1355. ,'s','o','c','i','a','t','i','o','n','s'
  1356. ,'a','g','g','r','e','g','a','t','e','e'
  1357. ,'x','p','r','e','s','s','i','o','n',','
  1358. ,'e','x','p','r','e','s','s','i','o','n'
  1359. ,'{',',','e','x','p','r','e','s','s','i'
  1360. ,'o','n','}','[',',','o','t','h','e','r'
  1361. ,'s','=','>','e','x','p','r','e','s','s'
  1362. ,'i','o','n',']','c','h','o','i','c','e'
  1363. ,'{','|','c','h','o','i','c','e','}','='
  1364. ,'>','e','x','p','r','e','s','s','i','o'
  1365. ,'n','{',',','c','h','o','i','c','e','{'
  1366. ,'|','c','h','o','i','c','e','}','=','>'
  1367. ,'e','x','p','r','e','s','s','i','o','n'
  1368. ,'}','o','t','h','e','r','s','=','>','e'
  1369. ,'x','p','r','e','s','s','i','o','n','g'
  1370. ,'a','_','e','x','p','r','e','s','s','i'
  1371. ,'o','n','{',',','g','a','_','e','x','p'
  1372. ,'r','e','s','s','i','o','n','}','i','d'
  1373. ,'e','n','t','i','f','i','e','r','{','|'
  1374. ,'i','d','e','n','t','i','f','i','e','r'
  1375. ,'}','=','>','e','x','p','r','e','s','s'
  1376. ,'i','o','n','{',',','i','d','e','n','t'
  1377. ,'i','f','i','e','r','{','|','i','d','e'
  1378. ,'n','t','i','f','i','e','r','}','=','>'
  1379. ,'e','x','p','r','e','s','s','i','o','n'
  1380. ,'}','r','e','l','a','t','i','o','n','r'
  1381. ,'e','l','a','t','i','o','n','{','A','N'
  1382. ,'D','_','_','r','e','l','a','t','i','o'
  1383. ,'n','}','r','e','l','a','t','i','o','n'
  1384. ,'{','O','R','_','_','r','e','l','a','t'
  1385. ,'i','o','n','}','r','e','l','a','t','i'
  1386. ,'o','n','{','X','O','R','_','_','r','e'
  1387. ,'l','a','t','i','o','n','}','r','e','l'
  1388. ,'a','t','i','o','n','{','A','N','D','_'
  1389. ,'_','T','H','E','N','_','_','r','e','l'
  1390. ,'a','t','i','o','n','}','r','e','l','a'
  1391. ,'t','i','o','n','{','O','R','_','_','E'
  1392. ,'L','S','E','_','_','r','e','l','a','t'
  1393. ,'i','o','n','}','[','r','e','l','a','t'
  1394. ,'i','o','n','a','l','_','o','p','e','r'
  1395. ,'a','t','o','r','_','_','s','i','m','p'
  1396. ,'l','e','_','e','x','p','r','e','s','s'
  1397. ,'i','o','n',']','[','N','O','T',']','I'
  1398. ,'N','[','u','n','a','r','y','_','a','d'
  1399. ,'d','i','n','g','_','o','p','e','r','a'
  1400. ,'t','o','r',']','t','e','r','m','{','b'
  1401. ,'i','n','a','r','y','_','a','d','d','i'
  1402. ,'n','g','_','o','p','e','r','a','t','o'
  1403. ,'r','_','_','t','e','r','m','}','f','a'
  1404. ,'c','t','o','r','{','m','u','l','t','i'
  1405. ,'p','l','y','i','n','g','_','o','p','e'
  1406. ,'r','a','t','o','r','_','_','f','a','c'
  1407. ,'t','o','r','}','t','e','r','m','p','r'
  1408. ,'i','m','a','r','y','[','e','x','p','o'
  1409. ,'n','e','n','t','i','a','t','i','n','g'
  1410. ,'_','o','p','e','r','a','t','o','r','_'
  1411. ,'_','p','r','i','m','a','r','y',']','f'
  1412. ,'a','c','t','o','r','h','i','g','h','_'
  1413. ,'p','r','e','c','e','d','e','n','c','e'
  1414. ,'_','u','n','a','r','y','_','o','p','e'
  1415. ,'r','a','t','o','r','p','a','r','e','n'
  1416. ,'t','h','e','s','i','z','e','d','_','e'
  1417. ,'x','p','r','e','s','s','i','o','n','a'
  1418. ,'l','l','o','c','a','t','o','r','q','u'
  1419. ,'a','l','i','f','i','e','d','_','e','x'
  1420. ,'p','r','e','s','s','i','o','n','r','e'
  1421. ,'l','a','t','i','o','n','a','l','_','o'
  1422. ,'p','e','r','a','t','o','r','b','i','n'
  1423. ,'a','r','y','_','a','d','d','i','n','g'
  1424. ,'_','o','p','e','r','a','t','o','r','u'
  1425. ,'n','a','r','y','_','a','d','d','i','n'
  1426. ,'g','_','o','p','e','r','a','t','o','r'
  1427. ,'m','u','l','t','i','p','l','y','i','n'
  1428. ,'g','_','o','p','e','r','a','t','o','r'
  1429. ,'e','x','p','o','n','e','n','t','i','a'
  1430. ,'t','i','n','g','_','o','p','e','r','a'
  1431. ,'t','o','r','e','x','p','a','n','d','e'
  1432. ,'d','_','n','a','m','e','{','p','r','a'
  1433. ,'g','m','a','_','s','t','m','}','s','t'
  1434. ,'a','t','e','m','e','n','t','{','s','t'
  1435. ,'a','t','e','m','e','n','t','}','s','e'
  1436. ,'q','u','e','n','c','e','_','o','f','_'
  1437. ,'s','t','a','t','e','m','e','n','t','s'
  1438. ,'s','i','m','p','l','e','_','s','t','a'
  1439. ,'t','e','m','e','n','t','c','o','m','p'
  1440. ,'o','u','n','d','_','s','t','a','t','e'
  1441. ,'m','e','n','t','{','l','a','b','e','l'
  1442. ,'}','+','n','u','l','l','_','s','t','a'
  1443. ,'t','e','m','e','n','t','a','s','s','i'
  1444. ,'g','n','m','e','n','t','_','s','t','a'
  1445. ,'t','e','m','e','n','t','e','x','i','t'
  1446. ,'_','s','t','a','t','e','m','e','n','t'
  1447. ,'r','e','t','u','r','n','_','s','t','a'
  1448. ,'t','e','m','e','n','t','g','o','t','o'
  1449. ,'_','s','t','a','t','e','m','e','n','t'
  1450. ,'d','e','l','a','y','_','s','t','a','t'
  1451. ,'e','m','e','n','t','a','b','o','r','t'
  1452. ,'_','s','t','a','t','e','m','e','n','t'
  1453. ,'r','a','i','s','e','_','s','t','a','t'
  1454. ,'e','m','e','n','t','c','o','d','e','_'
  1455. ,'s','t','a','t','e','m','e','n','t','c'
  1456. ,'a','l','l','_','s','t','a','t','e','m'
  1457. ,'e','n','t','i','f','_','s','t','a','t'
  1458. ,'e','m','e','n','t','c','a','s','e','_'
  1459. ,'s','t','a','t','e','m','e','n','t','l'
  1460. ,'o','o','p','_','s','t','a','t','e','m'
  1461. ,'e','n','t','b','l','o','c','k','_','s'
  1462. ,'t','a','t','e','m','e','n','t','a','c'
  1463. ,'c','e','p','t','_','s','t','a','t','e'
  1464. ,'m','e','n','t','s','e','l','e','c','t'
  1465. ,'_','s','t','a','t','e','m','e','n','t'
  1466. ,'l','a','b','e','l','c','o','n','d','i'
  1467. ,'t','i','o','n','_','T','H','E','N','_'
  1468. ,'_','s','e','q','u','e','n','c','e','_'
  1469. ,'o','f','_','s','t','a','t','e','m','e'
  1470. ,'n','t','s','{','E','L','S','I','F','_'
  1471. ,'_','c','o','n','d','i','t','i','o','n'
  1472. ,'_','_','T','H','E','N','_','_','s','e'
  1473. ,'q','u','e','n','c','e','_','o','f','_'
  1474. ,'s','t','a','t','e','m','e','n','t','s'
  1475. ,'}','[','E','L','S','E','_','_','s','e'
  1476. ,'q','u','e','n','c','e','_','o','f','_'
  1477. ,'s','t','a','t','e','m','e','n','t','s'
  1478. ,']','c','o','n','d','i','t','i','o','n'
  1479. ,'{','p','r','a','g','m','a','_','a','l'
  1480. ,'t','}','c','a','s','e','_','s','t','a'
  1481. ,'t','e','m','e','n','t','_','a','l','t'
  1482. ,'e','r','n','a','t','i','v','e','{','c'
  1483. ,'a','s','e','_','s','t','a','t','e','m'
  1484. ,'e','n','t','_','a','l','t','e','r','n'
  1485. ,'a','t','i','v','e','}','[','l','o','o'
  1486. ,'p','_','i','d','e','n','t','i','f','i'
  1487. ,'e','r',':',']','[','i','d','e','n','t'
  1488. ,'i','f','i','e','r',']','i','t','e','r'
  1489. ,'a','t','i','o','n','_','r','u','l','e'
  1490. ,'b','e','g','i','n','_','e','n','d','_'
  1491. ,'b','l','o','c','k','d','e','c','l','a'
  1492. ,'r','a','t','i','v','e','_','p','a','r'
  1493. ,'t','_','_','b','e','g','i','n','_','e'
  1494. ,'n','d','_','b','l','o','c','k','{','p'
  1495. ,'r','a','g','m','a','_','a','l','t','}'
  1496. ,'_','_','e','x','c','e','p','t','i','o'
  1497. ,'n','_','h','a','n','d','l','e','r','_'
  1498. ,'l','i','s','t','[','b','l','o','c','k'
  1499. ,'_','i','d','e','n','t','i','f','i','e'
  1500. ,'r',':',']','s','u','b','p','r','o','g'
  1501. ,'r','a','m','_','s','p','e','c','i','f'
  1502. ,'i','c','a','t','i','o','n','u','n','i'
  1503. ,'t','_','i','d','e','n','t','i','f','i'
  1504. ,'e','r','p','a','r','a','m','e','t','e'
  1505. ,'r','_','s','p','e','c','i','f','i','c'
  1506. ,'a','t','i','o','n','{',';','p','a','r'
  1507. ,'a','m','e','t','e','r','_','s','p','e'
  1508. ,'c','i','f','i','c','a','t','i','o','n'
  1509. ,'}','d','e','s','i','g','n','a','t','o'
  1510. ,'r','m','o','d','e','g','e','n','e','r'
  1511. ,'i','c','_','p','a','r','a','m','e','t'
  1512. ,'e','r','_','m','o','d','e','[','e','n'
  1513. ,'d','_','d','e','s','i','g','n','a','t'
  1514. ,'o','r',']','p','a','c','k','a','g','e'
  1515. ,'_','s','p','e','c','i','f','i','c','a'
  1516. ,'t','i','o','n','p','a','c','k','a','g'
  1517. ,'e','_','_','u','n','i','t','_','i','d'
  1518. ,'e','n','t','i','f','i','e','r','p','a'
  1519. ,'c','k','a','g','e','_','_','b','o','d'
  1520. ,'y','_','_','u','n','i','t','_','i','d'
  1521. ,'e','n','t','i','f','i','e','r','{',','
  1522. ,'e','x','p','a','n','d','e','d','_','n'
  1523. ,'a','m','e','}','t','a','s','k','_','s'
  1524. ,'p','e','c','i','f','i','c','a','t','i'
  1525. ,'o','n','{','e','n','t','r','y','_','d'
  1526. ,'e','c','l','a','r','a','t','i','o','n'
  1527. ,'}','{','r','e','p','r','e','s','e','n'
  1528. ,'t','a','t','i','o','n','_','c','l','a'
  1529. ,'u','s','e','}','[','(','d','i','s','c'
  1530. ,'r','e','t','e','_','r','a','n','g','e'
  1531. ,')',']','[','f','o','r','m','a','l','_'
  1532. ,'p','a','r','t',']','e','n','t','r','y'
  1533. ,'_','d','e','c','l','a','r','a','t','i'
  1534. ,'o','n','[','(','e','x','p','r','e','s'
  1535. ,'s','i','o','n',')',']','[','f','o','r'
  1536. ,'m','a','l','_','p','a','r','t',']','s'
  1537. ,'e','l','e','c','t','i','v','e','_','w'
  1538. ,'a','i','t','c','o','n','d','i','t','i'
  1539. ,'o','n','a','l','_','e','n','t','r','y'
  1540. ,'_','c','a','l','l','t','i','m','e','d'
  1541. ,'_','e','n','t','r','y','_','c','a','l'
  1542. ,'l','s','e','l','e','c','t','_','a','l'
  1543. ,'t','e','r','n','a','t','i','v','e','{'
  1544. ,'O','R','_','_','s','e','l','e','c','t'
  1545. ,'_','a','l','t','e','r','n','a','t','i'
  1546. ,'v','e','}','s','e','l','e','c','t','i'
  1547. ,'v','e','_','w','a','i','t','_','a','l'
  1548. ,'t','e','r','n','a','t','i','v','e','a'
  1549. ,'c','c','e','p','t','_','a','l','t','e'
  1550. ,'r','n','a','t','i','v','e','d','e','l'
  1551. ,'a','y','_','a','l','t','e','r','n','a'
  1552. ,'t','i','v','e','t','e','r','m','i','n'
  1553. ,'a','t','e','_','a','l','t','e','r','n'
  1554. ,'a','t','i','v','e','[','s','e','q','u'
  1555. ,'e','n','c','e','_','o','f','_','s','t'
  1556. ,'a','t','e','m','e','n','t','s',']','{'
  1557. ,',','n','a','m','e','}','{','c','o','m'
  1558. ,'p','i','l','a','t','i','o','n','_','u'
  1559. ,'n','i','t','}','p','r','a','g','m','a'
  1560. ,'_','h','e','a','d','e','r','c','o','m'
  1561. ,'p','i','l','a','t','i','o','n','_','u'
  1562. ,'n','i','t','c','o','n','t','e','x','t'
  1563. ,'_','c','l','a','u','s','e','l','i','b'
  1564. ,'r','a','r','y','_','o','r','_','s','e'
  1565. ,'c','o','n','d','a','r','y','_','u','n'
  1566. ,'i','t','s','u','b','u','n','i','t','{'
  1567. ,'w','i','t','h','_','c','l','a','u','s'
  1568. ,'e','{','u','s','e','_','c','l','a','u'
  1569. ,'s','e','}','}','w','i','t','h','_','i'
  1570. ,'d','{',',','w','i','t','h','_','i','d'
  1571. ,'_','l','i','s','t','}','w','i','t','h'
  1572. ,'_','c','l','a','u','s','e','b','o','d'
  1573. ,'y','_','n','a','m','e','e','x','c','e'
  1574. ,'p','t','i','o','n','_','c','h','o','i'
  1575. ,'c','e','{','|','e','x','c','e','p','t'
  1576. ,'i','o','n','_','c','h','o','i','c','e'
  1577. ,'}','e','x','c','e','p','t','i','o','n'
  1578. ,'_','h','a','n','d','l','e','r','g','e'
  1579. ,'n','e','r','i','c','_','s','p','e','c'
  1580. ,'i','f','i','c','a','t','i','o','n','g'
  1581. ,'e','n','e','r','i','c','_','f','o','r'
  1582. ,'m','a','l','_','p','a','r','t','{','g'
  1583. ,'e','n','e','r','i','c','_','p','a','r'
  1584. ,'a','m','e','t','e','r','_','d','e','c'
  1585. ,'l','a','r','a','t','i','o','n','}','g'
  1586. ,'e','n','e','r','i','c','_','p','a','r'
  1587. ,'a','m','e','t','e','r','_','d','e','c'
  1588. ,'l','a','r','a','t','i','o','n','g','e'
  1589. ,'n','e','r','i','c','_','t','y','p','e'
  1590. ,'_','d','e','f','i','n','i','t','i','o'
  1591. ,'n','[','I','S','_','_','n','a','m','e'
  1592. ,'_','_','o','r','_','_','<','>',']','g'
  1593. ,'e','n','e','r','i','c','_','n','a','m'
  1594. ,'e','g','e','n','e','r','i','c','_','a'
  1595. ,'s','s','o','c','i','a','t','i','o','n'
  1596. ,'{',',','g','e','n','e','r','i','c','_'
  1597. ,'a','s','s','o','c','i','a','t','i','o'
  1598. ,'n','}','[','g','e','n','e','r','i','c'
  1599. ,'_','f','o','r','m','a','l','_','p','a'
  1600. ,'r','a','m','e','t','e','r','=','>',']'
  1601. ,'g','e','n','e','r','i','c','_','a','c'
  1602. ,'t','u','a','l','_','p','a','r','a','m'
  1603. ,'e','t','e','r','g','e','n','e','r','i'
  1604. ,'c','_','f','o','r','m','a','l','_','p'
  1605. ,'a','r','a','m','e','t','e','r','g','e'
  1606. ,'n','e','r','i','c','_','a','c','t','u'
  1607. ,'a','l','_','p','a','r','a','m','e','t'
  1608. ,'e','r','l','e','n','g','t','h','_','c'
  1609. ,'l','a','u','s','e','e','n','u','m','e'
  1610. ,'r','a','t','i','o','n','_','r','e','p'
  1611. ,'r','e','s','e','n','t','a','t','i','o'
  1612. ,'n','_','c','l','a','u','s','e','a','d'
  1613. ,'d','r','e','s','s','_','c','l','a','u'
  1614. ,'s','e','r','e','c','o','r','d','_','r'
  1615. ,'e','p','r','e','s','e','n','t','a','t'
  1616. ,'i','o','n','_','c','l','a','u','s','e'
  1617. ,'{','c','o','m','p','o','n','e','n','t'
  1618. ,'_','c','l','a','u','s','e','}','a','l'
  1619. ,'i','g','n','m','e','n','t','_','c','l'
  1620. ,'a','u','s','e','c','o','m','p','o','n'
  1621. ,'e','n','t','_','c','l','a','u','s','e'
  1622. ,'g','a','_','e','x','p','r','e','s','s'
  1623. ,'i','o','n','{','|','i','d','e','n','t'
  1624. ,'i','f','i','e','r','}','e','x','c','e'
  1625. ,'p','t','i','o','n','_','h','a','n','d'
  1626. ,'l','e','r','_','l','i','s','t','u','s'
  1627. ,'e','_','c','l','a','u','s','e','_','l'
  1628. ,'i','s','t')  ;
  1629.         --| Table of symbols used in the grammar.
  1630.         -- NYU Reference Name: NO_SYM
  1631.      
  1632.     LeftHandSide :
  1633.          constant array (LeftHandSideRange)
  1634.          of GrammarSymbolRange :=
  1635.           (  101,  101,   99,  103,  103,  103,  103,  103,  103,  103
  1636. ,  103,  103,  103,  103,  102,  102,  102,  102,  104,  114
  1637. ,  105,  105,  105,  120,  120,  123,  123,  123,  123,  123
  1638. ,  123,  123,  106,  115,  115,  133,  134,  134,  134,  134
  1639. ,  132,  136,  136,  126,  140,  142,  142,  127,  128,  128
  1640. ,  137,  143,  138,  145,  129,  129,  146,  117,  147,  149
  1641. ,  151,  151,  153,  153,  130,  154,  154,  154,  157,  124
  1642. ,  158,  160,  160,  162,  162,  162,  131,  121,  121,  165
  1643. ,  165,  168,  168,  168,  171,  171,  171,  171,  171,  171
  1644. ,  171,  166,  166,  172,  172,  172,  150,  150,  150,  150
  1645. ,  150,  150,  177,  178,  178,  180,  180,  180,  179,  181
  1646. ,  181,  181,  181,  183,  182,  182,  182,  182,  182,  182
  1647. ,  100,  100,  100,  118,  118,  118,  118,  118,  118,  192
  1648. ,  192,  139,  202,  205,  205,  207,  203,  203,  203,  203
  1649. ,  203,  203,  203,  210,  210,  210,  210,  210,  210,  211
  1650. ,  211,  211,  212,  212,  206,  206,  213,  213,  213,  213
  1651. ,  214,  209,  209,  208,  208,  208,  208,  219,  217,  217
  1652. ,  217,  217,  220,  220,  220,  220,  220,  220,  220,  220
  1653. ,  220,  220,  221,  221,  221,  221,  221,  221,  239,  223
  1654. ,  224,  233,  243,  234,  245,  245,  235,  235,  249,  249
  1655. ,  249,  251,  250,  250,  236,  236,  225,  225,  225,  225
  1656. ,  226,  226,  227,  107,  254,  254,  254,  254,  255,  258
  1657. ,  258,  256,  259,  259,  260,  260,  260,  174,  232,  108
  1658. ,  262,  262,  175,  175,  263,  264,  122,  122,  122,  122
  1659. ,  170,  113,  113,  113,  113,  109,  266,  266,  266,  266
  1660. ,  176,  270,  237,  237,  228,  238,  238,  238,  272,  275
  1661. ,  275,  277,  277,  277,  278,  279,  280,  273,  274,  229
  1662. ,   98,  284,  285,  285,  285,  287,  287,  287,  287,  287
  1663. ,  287,  287,  286,  292,  290,  291,  291,  173,  173,  173
  1664. ,  288,  111,  296,  294,  294,  230,  230,  110,  297,  297
  1665. ,  298,  300,  300,  300,  300,  301,  301,  301,  301,  301
  1666. ,  301,  301,  301,  112,  112,  112,  112,  112,  112,  304
  1667. ,  307,  307,  308,  169,  169,  169,  169,  309,  310,  312
  1668. ,  312,  315,  314,  311,  231,  155,  155,  159,  159,  216
  1669. ,  216,  244,  244,  116,  116,  119,  119,  135,  215,  215
  1670. ,  293,  293,  303,  303,  141,  141,  144,  144,  148,  148
  1671. ,  152,  152,  156,  156,  125,  125,  161,  161,  163,  163
  1672. ,  164,  164,  167,  167,  184,  184,  186,  187,  187,  185
  1673. ,  185,  188,  316,  316,  316,  189,  189,  190,  191,  191
  1674. ,  317,  317,  193,  193,  194,  194,  195,  195,  196,  196
  1675. ,  197,  197,  198,  198,  199,  199,  200,  200,  200,  201
  1676. ,  201,  204,  204,  218,  218,  222,  222,  240,  241,  241
  1677. ,  242,  242,  246,  246,  247,  247,  248,  248,  253,  253
  1678. ,  252,  318,  318,  257,  257,  261,  261,  261,  265,  265
  1679. ,  267,  267,  268,  268,  269,  269,  269,  269,  271,  271
  1680. ,  271,  271,  276,  276,  281,  281,  282,  282,  283,  283
  1681. ,  289,  289,  319,  319,  295,  295,  299,  299,  302,  302
  1682. ,  302,  305,  305,  306,  306,  313,  313)  ;
  1683.         --| Map of the grammar rule number (constant array ) to
  1684.         --| numeric value of left hand side symbol.
  1685.         -- NYU Reference Name: LHS
  1686.      
  1687.     RightHandSide :
  1688.          constant array (RightHandSideRange)
  1689.          of GC.ParserInteger :=
  1690.           (    6,    3,    1,    1,    1,    1,    1,    1,    1,    1
  1691. ,    1,    1,    1,    1,    5,    6,    5,    6,    6,    2
  1692. ,    1,    1,    1,    5,    9,    1,    1,    1,    1,    1
  1693. ,    1,    1,    5,    1,    2,    1,    1,    1,    1,    3
  1694. ,    2,    2,    4,    4,    1,    1,    1,    1,    1,    1
  1695. ,    2,    2,    2,    2,    1,    1,    7,    4,    3,    4
  1696. ,    2,    1,    1,    3,    4,    4,    4,    3,    5,    4
  1697. ,    9,    5,    4,    1,    3,    2,    2,    3,    7,    1
  1698. ,    3,    1,    1,    1,    1,    1,    1,    1,    1,    1
  1699. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  1700. ,    1,    1,    4,    3,    3,    1,    1,    1,    3,    1
  1701. ,    1,    1,    1,    3,    2,    5,    5,    3,    3,    1
  1702. ,    1,    4,    2,    1,    1,    1,    1,    1,    1,    2
  1703. ,    3,    1,    1,    2,    2,    3,    1,    1,    1,    1
  1704. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  1705. ,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1
  1706. ,    1,    3,    3,    2,    5,    4,    4,    3,    1,    1
  1707. ,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1
  1708. ,    1,    1,    1,    1,    1,    1,    1,    1,    3,    2
  1709. ,    4,    7,    1,    9,    5,    4,    7,    8,    2,    4
  1710. ,    5,    2,    3,    5,    5,    4,    2,    4,    3,    5
  1711. ,    2,    3,    3,    2,    2,    6,    4,    8,    1,    1
  1712. ,    1,    4,    1,    2,    1,    2,    3,    5,    2,    2
  1713. ,    5,    7,    6,    5,    2,    3,    6,   10,    5,    9
  1714. ,    4,    6,    6,    5,    4,    2,    2,    3,    7,    8
  1715. ,    7,    4,    4,    8,    3,    1,    1,    1,    7,    5
  1716. ,    2,    1,    1,    1,    2,    2,    3,    9,   10,    4
  1717. ,    1,    2,    5,    2,    2,    1,    1,    1,    1,    1
  1718. ,    1,    1,    1,    4,    1,    0,    3,    4,    4,    6
  1719. ,    5,    4,    5,    1,    1,    2,    3,    2,    2,    2
  1720. ,    2,    5,    5,    9,    4,    3,    2,    2,    2,    2
  1721. ,    1,    1,    1,    5,    9,    6,   10,    5,    9,    1
  1722. ,    1,    1,    1,    1,    1,    1,    1,    5,    5,    8
  1723. ,    9,    5,    4,    6,    4,    0,    2,    0,    2,    0
  1724. ,    2,    0,    2,    0,    2,    0,    3,    1,    1,    3
  1725. ,    1,    3,    1,    3,    0,    3,    0,    1,    0,    3
  1726. ,    0,    3,    0,    3,    0,    3,    0,    2,    0,    3
  1727. ,    1,    3,    1,    3,    3,    3,    4,    0,    3,    0
  1728. ,    2,    3,    1,    3,    2,    1,    3,    4,    0,    3
  1729. ,    0,    3,    3,    3,    3,    3,    3,    3,    4,    4
  1730. ,    4,    4,    0,    2,    1,    2,    1,    2,    3,    1
  1731. ,    3,    0,    2,    1,    3,    1,    2,    3,    0,    5
  1732. ,    0,    2,    0,    2,    0,    2,    0,    1,    0,    2
  1733. ,    2,    1,    2,    0,    3,    0,    1,    1,    0,    3
  1734. ,    1,    3,    0,    3,    0,    4,    3,    7,    0,    4
  1735. ,    3,    7,    0,    3,    1,    1,    0,    3,    1,    2
  1736. ,    0,    3,    1,    3,    0,    3,    0,    2,    0,    2
  1737. ,    2,    0,    3,    1,    3,    1,    3)  ;
  1738.         --| Map of the grammar rule number (constant array ) to
  1739.         --| size of right hand sides (number of symbols).
  1740.         -- NYU Reference Name: RHS
  1741.      
  1742.     ActionTableOne :
  1743.          constant array (ActionTableOneRange)
  1744.          of GC.ParserInteger :=
  1745.           (   41,   42, 6948,  627, 6951,   99,  441, 6954, 6957, 6960
  1746. ,   65, 6963, 6966,   67,   68,   69, 6969,    0, 6973, 6976
  1747. ,   41,   42,    0,    0,   43,    0,    0, 6979,    0,   45
  1748. , 6982,  273, 6985,   42, 6988,    0,    0,  733,    0,    0
  1749. ,    0,    0,    0,    0,    0,    0,    0,  746,    0,    0
  1750. ,    0,   35,    0,    0,    0,    0,    0, 6991,    0,    0
  1751. ,    0,  421,    0,  858,    0,    0, 6994,    0,    0,  662
  1752. ,    0, 6997,  222,    0,  927,    0,    0,    0,    0,    0
  1753. ,  168,    0,    0, 7000,   37, 7003,    0,  515,  871, 7006
  1754. , 7009,  433,  222,    0,   35,    0,    0,    0,    0,    0
  1755. ,    0,    0,    0,  152,  528,    0,    0,    0,    0,    0
  1756. , 7012,   51,   52,  103, 7015, 7018, 7021,    0,    0,   43
  1757. ,    0,    0,   44,    0, 7025, 7028,   36,   37, 7032, 1380
  1758. ,   50, 7035, 7038, 7041,   63,   64, 7044,    0,   66,   67
  1759. , 7047,   69, 7050, 7054, 7057, 7060, 7063, 7066, 7069,   60
  1760. ,   61,    0,    0, 7073,   63,   64, 7076,   40, 7081, 7084
  1761. , 7088, 7091, 7094,    0,    0, 7097,    0,   45,    0,    0
  1762. ,    0,  283, 7100, 7103, 7106,   42, 7110, 7114, 7117,   42
  1763. ,    0, 7120, 7123,   45,    0, 7126, 7130, 7133, 7139, 7142
  1764. , 7145, 7148,  487,  488,  489, 7152, 7155, 7158, 7161, 7165
  1765. ,  495,  496,  497, 7168,  499,    0,    0,  859,    0,  314
  1766. ,  872,    0, 7171,    0,  295,   17,    0,  167,  501,    0
  1767. ,    0,    0,    0,    0,    0, 7174, 7178,   52,    0, 7181
  1768. , 7184,   53,    0,    0,    0,  160,    0,  502, 7187,  504
  1769. ,    0, 7190,    0,    0,    0,    0,  222,    0,   62, 7193
  1770. , 7196,   65,    0, 7199,   67,   68,   69, 7203,    0,    0
  1771. ,   71,  152,    0,    0,    0,  684,    0,    0,   50,   51
  1772. ,   52,    0,  255,  256, 7206,  258,  259, 7211,  261, 7215
  1773. , 7219,  264,  265, 7222, 7226, 7230, 7233,   60, 7236,   51
  1774. , 7239, 7243, 7246,   64, 7250,    0,   66,   67,   68, 7253
  1775. , 7256,   58, 7259, 7262, 7266,   58,   59, 7269, 7272,   64
  1776. ,   65, 7275, 7278, 7283, 7287,   69, 7292,   67,   68, 7295
  1777. ,   70,    0,  359,   71,    0,    0,    0,    0,    0,    0
  1778. ,    0,    0,    0,    0,    0,    0,    0,    0,  272,  273
  1779. ,  274,    0,  427,   40,  428,   42,    0,  231,   43,    0
  1780. ,  535,   44,    0, 7298,    0,    0,    0,    0,    0,    0
  1781. ,    0, 7301,    0,    2,    0,    0,    0,    0,    0,    0
  1782. ,    0,    0,    0, 7304,  884,    0,    0,    0,    0,    0
  1783. ,    0,    0,  236,    0,   99,    0,    0,    0,    0,  676
  1784. ,    0,    0,    0,    0,    0,  429,    0,    0,    0,    0
  1785. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1786. ,    0,    0,    0,    0,   35,    0,  222,  665,    3,  640
  1787. ,  666,    0,    0,  529,  297,    0,    0,  152, 7307,  103
  1788. ,   35, 7310, 7313,   27,   35,    0,  282,    0,    0,    0
  1789. ,    0,    0,    0,    0,    0,    0,   36,   37,   38,    0
  1790. ,    0,    0,    0,    0,   50,   51, 7316,    0,    0,    0
  1791. ,   53,    0,   36,   37, 7319,  685,   36, 7323, 7326,   56
  1792. ,   57,   58,   59,   60,   61,    0,  103, 7330, 7333, 7336
  1793. , 7340,  285, 7343,   67,   68, 7347, 7350,   45,    0,   71
  1794. ,    0,    0, 7353, 7356, 7359,   42,  103,   40, 7362,   42
  1795. ,  287,   44,   43,   45,    0,   44,    0,   45,    0,  126
  1796. ,  127,  298,   79,    0,  824,    0, 7365,    0,    0,  619
  1797. ,    0,    0,  114,    0,  345, 7368,    0,    0,  707,    0
  1798. ,    0,  907,    0,    0,    0,    0,    0,    0,    0,    0
  1799. ,    0,   50,   51,   52,    0,  686,    0,   97,    0,    0
  1800. , 7371,    0,    0,    0,    0,    0,    0,   36, 7374,   38
  1801. ,    0, 7377,    0,    0,    0,    0,  589,  115,  116,  117
  1802. , 7380, 1024,  191,    0,    0, 7383,  120, 7386,    0,    0
  1803. ,    0, 7389,  509,  431,  432,  433,    0,  103, 7392, 7396
  1804. , 7399,  919,    0,   43, 7402,    0,   44,    0,   45,    0
  1805. ,    0,    0,    0,    4, 7405, 7408, 7411,    0,   50, 7414
  1806. , 7417,   62, 7420,   64, 7424,   98, 7428, 7431,   68,   69
  1807. ,   70,    0,  575,   71,    0,    0,    0,   62,   63,   64
  1808. , 7434,   62, 7437, 7441, 7444,   69, 7448,   67,   68, 7451
  1809. ,   70,    0,    0,   71,    0,    0,    0,   35,    0,    0
  1810. ,    0,    0,  444,    0,    0,    0,    0,    0,    0,    0
  1811. ,    0, 7454,    0,    0,    0,    0,    0,    0,    0,    0
  1812. ,    0,    0,  152,    0,   97,    0,    0,    0,    0,   36
  1813. ,   37, 7457,    0,  238,  122,  123,    0,    0,    0,    0
  1814. ,    0,    0,    0,    0,    0,    0,  124,  100,    0, 7461
  1815. , 7464,   52,    0,    0,    0, 7467,    0,    0,    0, 7470
  1816. ,   40,   41,   42,    0,    0,   43,    0,    0,    0,    0
  1817. ,    0,    0,   62,   63, 7473,   65,    0,   66,   67,   68
  1818. , 7476,   70, 7479,    0,   71,    0,  101,    0,    0,   10
  1819. , 7482,  379,  520,    0,   99,    0,    0,    0,    0,    0
  1820. ,    0,    0, 7485,  284,  285,  286,    0,    0,    0,    0
  1821. ,  642,    0,   36,   37,   38,    0,    0,    0,    0,    0
  1822. ,    0,  205,  206,    0,    0,    0,  318,  920,    0,    0
  1823. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,  530
  1824. ,    0,    0,  103,   40, 7488,   42,    0,    0, 7491,    0
  1825. ,    0,   44,  207,   45,    0,    0,    0,    0,  590,    0
  1826. ,  179,    0,   97,    0,    0,    0,    0,    0,    0,    0
  1827. ,  208,   50,   51, 7494,  237,  239,  538, 7497,    0,    0
  1828. ,    0,  422,    0,    0,  810,    0,  299,    0,    0,  754
  1829. ,    0,    0,  547,  548,    0,   63, 7500, 7503,    0,   66
  1830. ,   67,   68,   69, 7506,    0,    0,    0,    0,    0,  516
  1831. ,    0,    0,    0,    0,    0,    0,  201,    0,  180,    0
  1832. ,    0,    0,    0,  125,    0,  299, 7509, 7512,    0,   97
  1833. ,  202,    0,    0,  128,    0,    0,    0,    0,    0,    0
  1834. ,    0,    0,    0,    0,  893,    0,    0,  577,    0,    0
  1835. ,    0,  577,    0,    0,   50,   51, 7516,    0,    0,  446
  1836. ,   53,    0,    0,    0, 7519,    0,    0,    0,    0,    0
  1837. ,    0,    0,  772,    0,  448,    0,    0,   62,   63,   64
  1838. ,   65,    0,   66,   67, 7522,   69, 7525,    0,  708,   71
  1839. ,    0,    0,  192,    0,  836,    0,    0,  346,    0,   99
  1840. ,   78,    0,    0,    0,  240,    0,  362,    0,    0,    0
  1841. ,  578,    0, 7528,  580, 7532,    0, 7536,  580,  581,  565
  1842. ,    0,  566,    0,  565,    0,  566,    0,    0,   97,    0
  1843. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1844. ,    0,   77,    0,    0,    0,    0,    0,  735,    0,    0
  1845. ,    0,    0,    0,    0,    0,  930,    0,    0,    0,    0
  1846. ,    0, 1047,    0,  401,    0,    0,  449,    0,  450,  908
  1847. ,    0,    0,    0,    0,  921,    0,    0,    0,    0,  237
  1848. ,    0,    0,  811,    0, 7539,    0,   99,    0, 1047,    0
  1849. , 1047,    0,    0, 1047,    0,    0,    0,    0,    0,    0
  1850. ,   35, 1047,    0, 1047,    0,    0,  950,    0,  300,    0
  1851. ,    0,    0,    0,    0,  644,  645,    0,    0, 1047,    0
  1852. ,    0,    0,    0, 1047, 7542, 1047, 7545, 1047, 1047, 1296
  1853. , 1047, 1047, 7548, 7551,   38, 1047, 1047, 1047,    0,    0
  1854. , 1047, 1047,    0, 1047, 1047, 1047,    0,    0,    0,    0
  1855. ,    0,    0,    0,    0,    0,    0,   36,   37,   38,    0
  1856. ,    0,  102,  103,   40, 7554,   42,  237,    0,   43,    0
  1857. ,    0,   44,    0, 7557,    0,    0,    0,    0,  678,    0
  1858. ,  179,  791,   97,    0,    0,  318, 7560, 7563,   41,   42
  1859. ,   79,    0,   43,    0,    0,   44,    0,   45,  299,    0
  1860. ,    0,    0,    0,   35,    0,    0,   97,   35,    0,  755
  1861. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1862. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1863. ,    0,  156,    0,    0,    0,   36, 7566,   38,  180, 7569
  1864. ,   37,   38,    0,    0,    0,    0,    0,  152,    0,    0
  1865. ,    0,  157,    0,    0,  847,    0,    0,    0,    0,    0
  1866. ,  105,    0,    0,    0,    0,  103, 7572,   41,   42, 7575
  1867. ,   40, 7578,   42,    0, 7582, 7585, 7588,    0,   44,    0
  1868. , 7591,    0,    0,  107, 7594,   88,    0,  801,  748,    0
  1869. ,    0,    0,    0,    0,    0,    0,  940,   62, 7598, 7602
  1870. , 7605,    0,   66, 7609, 7612, 7617,   70,  110,    0, 7620
  1871. ,    0,    0,    0,   56, 7623,   58,   59, 7626,   61,    0
  1872. ,    0, 7629, 7633, 7636,   65,    0,   66,   67,   68,   69
  1873. ,   70,    0,  593,   71,    0,    0,    0,    0,    0, 7639
  1874. ,    0,    0,    0,  222,    0,    0, 7642, 7645,    0,    0
  1875. ,  629,  630,    0,  631,  152,    0, 7648, 1411,    0,    0
  1876. ,    0,  425,    0,    0,    0,    0,    0,    0,    0,  436
  1877. ,  127,    0, 7651,    2,    0, 1411,  128, 7654,   51,   52
  1878. ,    0, 7657,   51, 7660, 1411,    0,    0,   53,    0,    0
  1879. ,    0,    0,    0, 1411,    0,    0, 7663,   57,   58,   59
  1880. , 7666, 7669,   64,   65,   62, 7672, 7675, 7678,   69, 7681
  1881. ,   67,   68, 7684,   70,    0,    0,   71,    0,    0,    0
  1882. , 7687,    0,    0,    0,  436,  127, 7690,    0,    0,    0
  1883. ,    0,  128,    0,    0,    0,  909,  874,    0,    0,    0
  1884. ,   35,  347,    0,  185,    0,    0,  825,  688,   35,    0
  1885. ,    0,    0, 7693,   37,   38,    0,    0,    0,  539,    0
  1886. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1887. ,    0,    0,   36,   37,   38,    0,    0,  134,    0,    0
  1888. ,   36,   37, 7696,   40,   41,   42,    0,    0,   43,    0
  1889. ,    0,   44,    0,   45,    0,    0,    0,    0,  160, 1047
  1890. ,    0,    0,  103,   40,   41,   42,    0,    0,   43,    0
  1891. ,  103, 7699,   41, 7702,    0,    0,   43,    0,    0,   44
  1892. ,    0, 7706, 1047,    0,    0,    0, 1047,    0, 1047,  756
  1893. ,   88, 1047,    0,    0,    0,    0,    0,    0,    0, 1047
  1894. ,    0, 1047,    0,    0,    0,    0,  348,  238,    0,   17
  1895. ,    0,    0,    0,    0,    0,  594, 7709,    0,  632,    0
  1896. ,  349, 1047, 1047, 7712, 1047, 1047, 1047, 7715, 7718, 1047
  1897. , 1047,    0,    0, 1047, 1047, 1047, 7721, 1341, 1047, 1047
  1898. ,    0, 1047, 1047, 1047,  222,    0,    0,  152,    0,    0
  1899. ,    0,    0,    0,    0,   50, 7724,   52,    0,    0,    0
  1900. ,   53,  103,    0,   41,   42,    0,    0,    0,  813,    0
  1901. ,    0,  205,  206,    0, 7727, 7730, 7733, 7736, 7739, 7742
  1902. , 7745,    0, 7749, 7752, 7755,   69,   70,    0,   53, 7758
  1903. ,   57,   58, 7762, 7765,   61,    0,   17, 7768, 7771, 7774
  1904. , 7777,   60, 7780,   67,   68, 7784, 7787, 7790,   65,   71
  1905. , 7793, 7796, 7799,   69,   70,  168,    0,   71,    0,    0
  1906. ,  208,   35,    0,    0,  173,    0,    0,    0,    0,    0
  1907. ,    0,    0,    0,    0,    0,    0,  350, 7802,  277,  278
  1908. , 7805,    0,    0, 7809,    0,    0,  849,    0,    0,  518
  1909. ,    0,    0,    0,   36,   37, 7812,    0,  371, 7815,  453
  1910. ,  454,  455,    0,  456,    0,    0,    0,    0,  180,    0
  1911. ,    0,    0,    0,   50,   51,   52,    0,    0,    0,    0
  1912. ,    0,   12,    0,  103,   40,   41,   42,  875,    0,   43
  1913. ,   13,    0,    0,    0,  327,    0,    0,    0,    0,    0
  1914. ,  135,    0,    0,    0,   35,    0,    0,    0,    0,    0
  1915. ,    0,    0,    0,  205,  206,    0,    0,  457, 7818,    0
  1916. ,    0, 7821,  459,  275,  276,  277,  278,  279,   28,    0
  1917. ,    0,    0,    0,    0,    0,    0, 7824,   37,   38,    0
  1918. ,    0,  102,    0,    0,  207,    0,    0,    0,    0,    0
  1919. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1920. ,    0,    0,  208,    0,    0,    0,  103,   40, 7827, 7832
  1921. ,    0,    0,   43,    0,    0,   44,  179,   45,   97,    0
  1922. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1923. ,    0,  838,    0,    0,    0, 7835,   51, 7839,    0,    0
  1924. ,    0, 7842,  860,    0,    0,  460,  185,    0,    0,  757
  1925. ,    0,    0,    0,   26,   27,  281,    0,  282,    0, 7845
  1926. ,  232,   65,    0,   66,   67,   68, 7848, 7851, 7854,   38
  1927. ,    0,    0,    0,    0,  180,    0,    0,    0,    0,    0
  1928. ,  105,    0,    0,    0,    0,    0,  520,    0, 7857, 7860
  1929. ,  839, 7863,    0,    0,    0,  301,    0,   39,   40,   41
  1930. , 7866,    0,    0, 7869,    0,  689, 7872,    0,   45,    0
  1931. ,    0,    0,    0,    0,    0,    0,    0,    0, 7875,   51
  1932. , 7879,  185,    0,    0, 7882,  160,  177,  321,    0,  322
  1933. ,    0,    0,  510,   56,   57,   58,   59,   60, 7885,   37
  1934. ,   38,   62,   63,   64, 7888,    0,   66,   67, 7891,   69
  1935. , 7894, 7898,   38,   71,  179,    0,  840,    0,    0,    0
  1936. ,    0,    0,    0,    0,    0,    0,    0,    0, 7901,   40
  1937. ,   41, 7904,    0,    0, 7907,    0,    0,   44,  243,   45
  1938. ,  103,   40, 7910,   42,    0,    0,   43,    0,    0,   44
  1939. ,    0,   45,  103,    0,   41,   42,    0,    0,    0,    0
  1940. ,    0,  196,    0,  680,    0,  155,    0,    0,    0,   50
  1941. ,   51,   52,  180,    0,    0,   53,    0,    0,    0,    0
  1942. ,    0, 7913,   55,    0,   56, 7916,   58, 7919,   60,   61
  1943. ,    0,    0,   62,   63,   64,   65,    0,   66,   67,   68
  1944. ,   69,   70,  222,    0,   71,  157,    0,    0,    0,    0
  1945. ,    0,    0,    0,  152,  540,    0,    0,    0,    0,    0
  1946. ,   35,  179,    0,    0,    0,  152,  372,    0,    0,    0
  1947. ,    0,    0,    0,    0,    0,    0,    0,  738,    0,    0
  1948. ,   50,   51,   52,    0,    0,    0,   53,  464,    0,  465
  1949. ,  774,    0, 7922, 7926, 7929, 7932,    0,  466,   53, 1379
  1950. ,  467,    0,    0,   62, 7935, 7939, 7943,    0, 7947, 7950
  1951. , 7953,   69,   70,  469,  470, 7956, 7959,   64, 7962,  477
  1952. ,   66,   67, 7965, 7969, 7972,   42,    0,   71,   43,    0
  1953. ,    0, 7976,    0,   45,    0,    0,  473,    0,  474,    0
  1954. ,    0,    0,   97,    0,  521,    0, 1118, 1375,   72,    0
  1955. ,  475,    0,   41,   42,    0,    0,    0, 7979,  185, 7982
  1956. ,    0,  649,  931,  620,    0,    0,    0,    0,    0,    0
  1957. ,    0,  621,    0,    0,    0,   47,  861, 7985,    0,    0
  1958. ,  403,    0,    0,    0,    0,    0,    0,    0,  404,  405
  1959. ,    0,    0,    0,    0,    0,  799,   48,    0,    0,    0
  1960. ,    0,    0,    0,    0,  406, 7988,    0,   49,    0,    0
  1961. ,    0,    0,    0,    0,    0,    0,  407,    0,    0,  408
  1962. ,    0,    0,  522,    0,    0,    0,   35,  511,    0,    0
  1963. ,  373,    0,  512,  827,   50, 7991,   52,    0,    0,  304
  1964. ,   53,  185,  739,  409,  691,  926,   54,   55,  749,   56
  1965. ,   57,   58,   59,   60,   61,    0,    0,   62, 7994, 7997
  1966. , 8000,    0, 8003, 8006, 8009,   69, 8012,    0,    0,   71
  1967. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  1968. ,    0,    0,    0,    0,    0,  461,    0,    0,  103, 8015
  1969. ,   41,   42,  599,    0,   43,    0,    0,   44,    0,   45
  1970. ,   97,  411,  710,  412,    0,  480,  481, 8018, 8021,  484
  1971. , 8024, 8027,  487,  488,  489,  490, 8030, 8033, 8036,  494
  1972. ,  495,  496,  497, 8039,  499,    0,    0,    0,    0,    0
  1973. ,    0,    0, 8042,   35,    0,   17,    0,    0,  501,    0
  1974. ,    0,    0,  465,  932, 8045,    0,    0,    0,    0,    0
  1975. ,    0,    0,    0, 8048,    0,    0,    0, 8051,  503, 8054
  1976. ,    0,    0,  222,    0,    0,   36,   37,   38,    0,    0
  1977. ,    0,    0,    0, 8057,    0,    0,    0,    0,    0,    0
  1978. ,    0,    0,    0,  213,    0,    0,  168,    0,    0,    0
  1979. ,    0,    0,    0,  681,    0, 8060, 8065, 8068, 8071,    0
  1980. , 8074, 8078, 8081,    0,   44,    0, 8085,    0,  161,    0
  1981. ,    0,    0,    0,    0,    0,  334,    0,    0,    0,    0
  1982. ,   50,   51,   52,   62,   63,   64,   65,    0,   66,   67
  1983. ,   68,   69, 8088,   37,   38,   71,    0,  137,    0,    0
  1984. ,    0,    0,  214,    0,  215,  216,    0,    0,  594,    0
  1985. ,  541,    0,    0,    0,    0,    0,  323,    0,    0,    0
  1986. ,  396,    0,  103,   40, 8091, 8094,  354,  373,   43, 8097
  1987. ,  788, 8100,    0, 8103,  725,    0,    0,  600,    0,    0
  1988. ,  152,  650,  171,    0,    0,    0,    0,  523,    0,    0
  1989. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,   35
  1990. ,    0,  911,    0,   36,   37,   38,    0,   50,   51, 8106
  1991. ,    0,    0,    0,   53,    0,  601,    0,    0,    0,    0
  1992. ,    0,    0,   56,   57,   58,   59,   60,   61,    0,    0
  1993. ,   62, 8109, 8112, 8115,   40, 8119, 8123,   68,   69, 8127
  1994. ,    0,  354, 8130,    0, 8133,    0,    0,  152,    0,    0
  1995. ,    0,    0,   26,   27,   28,    0,    0,  217,    0,    0
  1996. ,  740,  103, 8138,   41,   42,  299, 8141,   43,  814,    0
  1997. ,   44,    0, 8145,  775,   50, 8148,   52,   29,   30,    0
  1998. ,   53,    0,    0,    0,    0,    0,    0,   31,   32,   56
  1999. ,   57,   58,   59,   60, 8151,    0,    0,   62, 8154, 8157
  2000. , 8160,    0,   66,   67,   68,   69,   70,  389,    0,   71
  2001. ,    0,   83,   93,    0,    0,  876, 8163,  704, 8166,   42
  2002. ,   97,    0,    0,    0,  299,    0,    0,    0,   39,   40
  2003. , 8170,   42,    0,   35,   43,  201,  299, 8173,    0,   45
  2004. ,    0,    0,  190,    0,    0,   50, 8176, 8179,    0,  631
  2005. ,    0,   53,    0,    0,    0,    0,    0,    0,    0,    0
  2006. ,    0,    0,    0, 8182,    0,   36,   37,   38,   62, 8185
  2007. , 8188, 8192,    0, 8195, 8199, 8202,   69,   70,    0, 8205
  2008. ,   71,   47,    0,  923,    0,    0,    0,    0,  520,    0
  2009. ,   99,    0,    0,  726,    0,  427, 8208, 8211, 8215, 8218
  2010. , 8221, 8224, 8229,   68, 8233, 8236,   45,    0, 8239,    0
  2011. ,   45,    0,    0,   49,    0,  828,  126,  127,    0,    0
  2012. ,  436,  127,    0,  128,    0,    0,    0,  128,   50,   51
  2013. , 8242,    0,    0,    0,    0,    0,    0,    0,    0,  345
  2014. ,   50,   51,   52,    0,    0,    0,   53,    0, 8245,    0
  2015. ,  398,    0, 8248,   55,    0, 8251,   57,   58,   59,   60
  2016. ,   61,    0,    0,   62,   63,   64,   65,    0,   66, 8254
  2017. , 8257,   69,   70,  222,    0, 8260,    0,    0,    0,    0
  2018. ,  152,  815,  727,    0, 8264,    0,    0,    0,    0,    0
  2019. ,    0,   35,    0,    0,    0,    0,    0,    0,    0,  436
  2020. ,  127,    0,    0,    0,    0,    0,  128, 8267, 8272, 8275
  2021. ,    0,   50, 8279, 8282,    0,    0,    0,   53,    0,  789
  2022. ,    0,    0,   56, 8285, 8288, 8291, 8294, 8298,   58,   59
  2023. , 8301, 8304,   64,   65,   62, 8307, 8310, 8313, 8318, 8321
  2024. , 8325,   68, 8328, 8331,    0,   97, 8334,    0,   45,  356
  2025. ,    0, 8337,   42,  103,   40,   41, 8340,    0,    0,   43
  2026. ,    0,    0,   44,    0,   45,    0,    0,  323,    0,  163
  2027. ,    0,    0,    0,    0,  373,    0,  168,  877,    0,   72
  2028. ,    0,    0,    0,    0,    0,  169,  170,    0,    0,    0
  2029. ,  104,    0,  863,    0,    0,    0,  851,    0,  179,  829
  2030. ,    0,    0,   34,    0,    0,  898, 8343,    0,    0,  180
  2031. ,    0,  105,    0,    0,    0,    0,    0,    0,    0,    0
  2032. ,    0,    0,  106,    0,  160,  463,    0,  222,    0,    0
  2033. ,    0,   84,    0,  602, 8346,    0,  431,  432, 8350,    0
  2034. ,    0,    0,    0,    0,    0,    0,  125,    0,    0,   50
  2035. ,   51,   52,    0,    0,  108,   53, 8354,    0,  110,    0
  2036. ,  111,   50,   51,  358, 8358, 8361, 8364, 8367,   60,   61
  2037. ,    0, 8370, 8373, 8376,   64,   65,    0, 8379,   67,   68
  2038. , 8382, 8385,   58,   59, 8388,   61,    0,    0,   62,   63
  2039. ,   64,   65,  603,   66,   67, 8391, 8394,   70,    0,    0
  2040. ,   71,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2041. ,    0,    0,    0,    0,    0,  434,    0,    0,    0,    0
  2042. ,   35,    0,    0,    0,    0,    0,  168,    0,    0,    0
  2043. ,    0,    0,    0,    0,  532, 8397,  174,    0,    0,    0
  2044. ,    0,    0,    0,    0,    0,  692,    0,    0,    0,    0
  2045. ,    0,    0, 8400,   37,   38,    0,    0,    0,    0,    0
  2046. ,    0,    0,    0,    0,    0,  816,    0,    0,    0,    0
  2047. ,    0,    0,    0,    0,    0,    0,    0,  525,    0,    0
  2048. ,    0,    0,   39,   40,   41,   42,    0,    0,   43,    0
  2049. ,    0,   44,    0,   45,   97,    0,    0,    0,    0,    0
  2050. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2051. ,    0,    0,    0,    0,    0, 8403,  604,    0, 8406,    0
  2052. ,    0,  759,  175,    0,    0,    0,    0,    0,    0,    0
  2053. ,    0,    0,  912,    0,    0,   47,    0,    0,    0,    0
  2054. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2055. ,    0,    0,    0,    0,    0,    0,   48,    0,    0,    0
  2056. ,    0,    0,  399,    0,   99,    0,    0, 8409,    0,  359
  2057. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2058. ,    0,  662,  693,    0,    0,    0,  776,    0,    0,  777
  2059. ,    0,    0,  633,    0, 8412,   51, 8415,    0,  191,    0
  2060. ,   53,    0,   85,    0,    0,    0,    0,  218,    0,   56
  2061. , 8418, 8421,   59,   60,   61,    0,  852,   62, 8424,   64
  2062. ,   65,    0,   66,   67,   68,   69, 8427,    0,    0,   71
  2063. ,    0,    0,    0,    0,    0,  181,    0,    0,    0,    0
  2064. ,    0,    0,    0,    0,  237,    0,    0,    0,    0,    0
  2065. ,   36, 8430,   38,    0,    0,  306,    0,    0,    0,    0
  2066. ,    0,   35,    0,    0,    0,    0,    0, 8434,    0,    0
  2067. ,    0,  624,    0,    0,    0,    0,   97,    0,    0,    0
  2068. ,  103,   40,   41,   42,    0,    0,   43,    0,    0,   44
  2069. ,    0,   45,    0,   36,   37,   38,    0,    0,  945, 8437
  2070. ,    0,    0,  465,  899,    0,    0,    0,    0,  653,    0
  2071. ,    0,    0,    0,  467,    0,    0,    0,    0,    0,    0
  2072. ,    0,    0,    0,  103,   40,   41,   42,    0,    0,   43
  2073. ,    0,    0,    0,  219,    0,    0,    0,    0,    0,    0
  2074. ,    0,  179,    0,    0,    0,  182,    0,    0,    0,    0
  2075. ,    0,    0,    0,    0,  201,  696,    0,    0,    0, 8440
  2076. ,    0,    0,    0,    0,    0,  674,  842,    0,  631,    0
  2077. ,    0,    0,    0,    0,  830,    0,    0,    0,    0,    0
  2078. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2079. ,    0,    0,   50,   51,   52,    0,    0,    0,   53,  477
  2080. ,    0,    0,  140,    0,  179,    0,    0,  141,  152,  142
  2081. ,    0,    0,  220,    0,    0,   62,   63,   64,   65,    0
  2082. ,   66,   67, 8443, 8446,   70,    0,  792,   71,    0,    0
  2083. ,  711,    0,    0,    0,    0,   50,   51,   52,    0,    0
  2084. ,    0,   53,  665,    0,  760, 8449,  199,    0,  821,  761
  2085. ,    0,    0,    0,  913,    0,   36,   37,   38,    0,    0
  2086. ,    0, 8452,  180,  233,   67,   68,   69,   70,    0,    0
  2087. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2088. ,    0,  900,    0,    0,    0,   39,   40,   41,   42,  360
  2089. ,    0,   43,    0,    0,   44,    0,   45,    0,    0,    0
  2090. ,    0,    0,    0,    0,    0,  793,  776,    0,    0,  777
  2091. ,    0,    0,    0,  464,    0,  465,    0,  864,    0,  668
  2092. ,  307, 8455,   86,  466,    0, 1379, 8458,    0,    0,    0
  2093. ,    0,    0,    0,    0,    0, 8461, 8464,    0,   47,  469
  2094. ,  470,    0,    0,    0, 8467,    0,    0,    0, 8470,  946
  2095. ,    0,    0,    0,    0,  179,    0,    0,  472,    0,   48
  2096. ,    0,    0,  473,    0,  474,    0,    0,    0, 8473,    0
  2097. ,   49, 8476,    0, 1375,    0,  702, 8479,  704, 8483,   42
  2098. ,    0,    0,    0,    0,   97,    0,    0,    0,    0,    0
  2099. ,    0,  582,    0,    0,    0,    0,    0,   50,   51,   52
  2100. ,    0,    0,    0, 8487,    0,    0,    0,    0,    0,   54
  2101. ,   55,    0, 8490,   57,   58, 8493,   60,   61,    0,    0
  2102. ,   62,   63,   64,   65,    0,   66,   67,   68,   69,   70
  2103. ,    0,    0,   71,    0,    0,    0,    0,    0,    0,    0
  2104. ,    0,    0,    0,    0,    0,  164,    0,    0,    0,    0
  2105. ,  435,    0,    0,    0,    0,    0,    0,    0,    0,   78
  2106. ,   35,  478,    0,    0,    0,    0,    0,    0,    0,    0
  2107. ,  545,   97,    0,    0,    0,    0,    0,    0,    0,    0
  2108. ,    0,    0,    0,    0,    0,    0,    0,  144,   50,   51
  2109. ,   52,    0, 8496,   37,   38,    0,    0,    0,    0,    0
  2110. ,    0,    0, 8499,  654,    0, 8503,    0,    0,    0,    0
  2111. ,    0,    0,    0,  547,  548,  221,    0,    0,    0,    0
  2112. ,    0,  729,  103,   40, 8506, 8510, 8513,    0, 8516,  865
  2113. ,    0, 8519, 8523, 8526, 8529,  484, 8532,  486,  487, 8535
  2114. ,  489, 8538,  491,  492, 8543, 8546,  495, 8549,  497, 8552
  2115. ,  499,    0,    0,    0,  762, 8555,   41,   42,  500,    0
  2116. ,   43,    0,    0,   44,  501,   45,    0,  526,  553,    0
  2117. ,    0,    0,    0, 8558,    0,   35,    0,    0,    0,   35
  2118. ,    0,    0,  546,  502,  503,  504,    0,  369,    0,    0
  2119. ,    0,    0,    0,    0,    0,    0, 8561,    0,    0,    0
  2120. ,  935,    0,  373, 8564,  112,  374,  335, 8567,   37, 8571
  2121. ,    0, 8574,   37,   38,  410,    0,    0,    0,    0,    0
  2122. ,  867,  237,    0,  555,  556, 8577, 8580,  559, 8583, 8586
  2123. ,  373,    0,    0, 8589, 8592, 8595, 8598,  103,   40, 8601
  2124. , 8604,  103, 8609, 8612,   42,    0,   44,   43,   45, 8617
  2125. ,   44,  547, 8620,    0,  506,    0,    0,   62,   63,   64
  2126. , 8624,    0,   66,   67,   68,   69, 8627, 8632,   52,   71
  2127. ,  550,    0,   53,    0,    0,    0,  844,    0,    0,  551
  2128. ,    0,   56, 8635, 8638, 8641,   60, 8644,    0,    0,   62
  2129. ,   63, 8647,   65, 8650,   66, 8653,   68,   69, 8656,   37
  2130. ,   38, 8659,    0,  936, 8662,    0,  553,    0,    0,  752
  2131. ,    0,  803,    0,    0,    0,  854,    0,    0,    0,    0
  2132. ,    0,    0,  152,  308,    0,   36, 8665,   38,  103,   40
  2133. ,   41, 8668,    0,    0,   43,    0,    0, 8671,    0,   45
  2134. ,    0,    0,    0,    0,    0,  764,    0,  309,    0, 8674
  2135. ,   51, 8677,  410,   50,   51, 8680,   40,   41, 8684, 8687
  2136. ,    0, 8690,  556,  557, 8693,  559, 8696,  561,    0,   36
  2137. ,   37, 8699, 8702, 8705,   64, 8708,   62, 8711, 8714, 8718
  2138. , 8721, 8726,   67,   68, 8731,   70,    0,  128,   71,    0
  2139. ,   46,  879,    0,    0,  402,    0, 8734,  403,    0, 8737
  2140. ,   40,   41, 8740,    0,   35, 8743,  405,    0, 8746,    0
  2141. ,   45,    0,   36, 8750,   38,    0,    0,    0,    0,    0
  2142. ,    0,  406,    0,    0,    0,  937,    0,  765,    0,   48
  2143. ,    0,    0,    0,  407,    0,    0, 8753,   37,   38,    0
  2144. , 8756, 8760, 8763,   40,   41,   42,   53,    0,   43,    0
  2145. ,    0,   44,  594,   45,    0,    0,    0,    0,    0,    0
  2146. ,  409,    0,    0,   62,   63,   64, 8767, 8770, 8774, 8779
  2147. , 8784, 8787, 8791, 8795,  128, 8799,   43, 8802,  169, 8805
  2148. ,   55,   45,   56,   57, 8809, 8812,   60, 8815,    0,  766
  2149. ,   62,   63, 8818,   65,    0,   66,   67,   68,   69,   70
  2150. ,    0,    0,   71,   36,   37,   38,  410,    0,  102,  422
  2151. ,    0,   50,   51,   52,    0,    0,  222,   53,  411,    0
  2152. ,  412,    0,  249,  594,    0,  310,   56, 8821,   58, 8824
  2153. ,   60,   61,    0,  103, 8827, 8830, 8834, 8837,    0, 8840
  2154. , 8844,   68, 8849,   70, 8852,    0,   71,  323,    0,    0
  2155. ,    0,  152, 8855,    0,   50, 8858, 8861,    0,    0,    0
  2156. , 8864,  185,    0,    0,  694,  171,    0,    0,    0,  225
  2157. ,    0,    0,    0,    0,    0,    0,    0, 8867, 8870, 8873
  2158. , 8876,    0, 8880, 8884, 8887,   69,   70,  166,   53,   71
  2159. ,  179,    0,    0,    0,    0,    0,    0, 8891,   57,   58
  2160. ,   59, 8894, 8897,   64,   65,   62, 8900, 8905, 8909,   69
  2161. , 8912,   67,   68, 8915,   70,    0,    0,   71,  106,    0
  2162. , 8918,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2163. ,  107,    0,  717,    0,    0,    0,    0,    0,    0,    0
  2164. ,  180, 1047,    0,    0,    0,   50,   51, 8921, 8924,  167
  2165. ,    0,   53,    0,   36,  393, 8927,  322,  514,    0,    0
  2166. ,    0,   35,    0,    0, 8930,    0,    0,    0, 8933, 8936
  2167. , 8939,   65,    0, 8942,   67, 8945,   69,   70,    0,  567
  2168. ,   71,    0,    0, 8948,   40,   41,   42,  329,    0, 8951
  2169. , 8954,    0,    0,   36,   37,   38,    0,    0, 1047,    0
  2170. ,   35,    0,    0, 1047, 1047, 1047, 1047, 1047, 1047, 1047
  2171. , 1047, 1047, 1047,    0,    0, 1047, 1047, 1047,    0, 1271
  2172. ,    0, 1047,    0, 8957, 8960, 8964,   42,    0,    0,   43
  2173. ,    0,    0, 8967,   37, 8970,    0,    0,    0,    0,    0
  2174. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2175. ,    0,    0,    0,    0,    0,    0,   36,   37, 8974,    0
  2176. ,    0,    0, 8977,   40,   41,   42,    0,    0, 8980,  168
  2177. ,    0,   44,    0,   45,  160,    0,    0,    0, 8983,  170
  2178. ,  149,    0,    0,    0,    0,    0, 8986,   40,   41,   42
  2179. ,    0,    0,   43,    0,    0, 8989,   51, 8992,    0,    0
  2180. ,    0,   53,  113,    0,    0,    0,    0,  436, 8996,  880
  2181. ,    0,  631,  330,    0,  128,    0,    0,    0,    0,    0
  2182. ,    0, 9000,    0,  415,    0,   68,   69,   70,    0,    0
  2183. ,    0,    0,    0,  416,    0,   50, 9004,   52,    0,    0
  2184. ,    0,   53,    0,    0,    0,  311,    0,  152,    0,    0
  2185. ,    0,    0,    0,  115,  116,  117,    0,    0, 9008,   63
  2186. , 9011, 9015,  120, 9018, 9021, 9024, 9027, 9030,    0,    0
  2187. ,   71,  152,    0,  128, 9034,   51, 9037,    0,    0,    0
  2188. ,   53,    0,  436,  127,  250,   14,   15,    0,    0, 9040
  2189. ,    0,    0,    0,    0,    0,    0,    0, 9043, 9046, 9049
  2190. , 9052,  251,   66,   67, 9055,   69, 9059, 9062,   38,   71
  2191. ,    0,    0,    0,    0,  252,  253,    0,    0,  254,  181
  2192. ,    0,   62,   63,   64, 9065,  184,   66,   67,   68,   69
  2193. ,   70,   87,  185, 9068,    0,  610,  427,   40,  428, 9071
  2194. ,    0,    0, 9074,    0,    0, 9077,    0,   45,    0,    0
  2195. ,    0,    0,  299,    0,    0,    0,    0,    0,    0,    0
  2196. ,    0, 9080,  256,  257,  258,  259,  260,  261,  262,  263
  2197. , 9083, 9086,  266, 9089,    0,    0,    0,   36,   37, 9092
  2198. ,  269,  270,  124,    0, 1049,    0,    0,    0, 1049,  429
  2199. , 1049,    0,    0, 1049,    0,   73,    0, 9095,    0,    0
  2200. ,  438,    0,    0, 1049,    0,    0,    0,  103, 9098, 9101
  2201. , 9105,    0,    0,   43,    0,  128,   44,    0, 9108,    0
  2202. ,   35,  152,    0, 1049, 1049, 9111, 1049, 9114, 9117, 9120
  2203. , 1049, 9123, 9126,  277,  278, 9129, 1049, 1049,    0, 1272
  2204. ,    0, 1049,    0, 1049, 1049, 1049,    0,    0,   50,   51
  2205. ,   52,    0,   36,   37, 9132,    0,    0,    0,    0,    0
  2206. ,    0,    0,    0,   56, 9135,   58,   59,   60,   61,    0
  2207. ,    0,   62,   63,   64,   65,    0,   66,   67,   68,   69
  2208. ,   70,  222,  103, 9138,   41, 9141,    0,    0,   43,    0
  2209. ,    0,   44,  152,   45,  103,    0,   41,   42,  670,   35
  2210. ,    0,    0,    0,   35,    0,    0,  672,  326,    0,    0
  2211. ,    0,   35,    0,  280,    0,    0,    0,    0,    0,   50
  2212. ,   51, 9144, 9147, 9150,    0, 9154,    0,    0,  868,    0
  2213. ,    0,   36,   37,   38,  331, 9157,   37,   38,    0,  125
  2214. ,    0,    0,   62, 9160, 9163, 9166,    0,   66,   67,   68
  2215. ,   69,   70,    0,    0,   71,    0, 9169,   32,    0,    0
  2216. ,    0, 9172, 9175, 9178,   42,  103,   40, 9181, 9185, 9188
  2217. , 9191, 9194,   45,  103, 9197, 9200, 9203,  431,  432, 9206
  2218. ,    0,  662,   44,    0,   45,    0,    0,    0,   75,  287
  2219. ,    0,    0,    0,    0,   50,   51, 9210,   88,    0,    0
  2220. , 9213,    0,    0,    0,  695,    0,   50,   51,   52, 9216
  2221. ,  170,    0,    0,   89,    0,    0,   17,   62, 9219,   64
  2222. ,   65,    0,   66,   67,   68,   69,   70,    0,  129, 9222
  2223. ,    0,    0,    0,    0,    0,  200,    0,    0,    0,  222
  2224. ,    0,    0,    0,    0,    0,    0,  152,  394,    0,    0
  2225. , 9225,    0,    0,    0,    0,    0,    0,    0,  152,  186
  2226. ,  187,    0,    0,    0,    0,    0,  568,    0,    0,    0
  2227. ,    0,    0,    0,   50,   51,   52,    0,   50,   51, 9228
  2228. ,    0,    0,    0,   53,    0,   50,   51, 9231,    0,    0
  2229. ,    0, 9234, 9237,   57,   58,   59, 9240, 9244, 9247, 9251
  2230. ,   62, 9254, 9258, 9261,   69, 9264,   67,   68, 9267, 9271
  2231. ,   64,   65,   71,   66,   67,   68,   69,   70,    0,    0
  2232. ,   71,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2233. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2234. ,   35,    0,    0,  115, 9274,  117,  375,    0,    0,    0
  2235. ,    0, 9277,  120,  121,    0,    0,    0,    0,    0,    0
  2236. ,    0,    0,    0,  299,    0,    0,    0,  160,   36,    0
  2237. ,   38,    0,   36,   37,   38,    0,    0,    0,    0,    0
  2238. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2239. ,    0,    0,    0,    0,    0,    0,    0,    0,  103,   40
  2240. , 9280,   42,  103,   40, 9283,   42,    0,  673,   43,    0
  2241. ,  732,   44,    0,   45,    0,    0,  238,    0,    0,    0
  2242. ,    0,    0,    0,   35,    0,   90,   97,    0,    0, 9286
  2243. ,  299,   35,    0,   91,   92,    0,    0,    0,    0,    0
  2244. ,  339,    0,    0,    0,    0,    0,    0,    0,  465, 9289
  2245. ,    0,    0,    0,    0,    0,   36,   37, 9292,    0,  467
  2246. ,  122,  123,    0,   36,   37,   38,    0,    0,    0,    0
  2247. ,    0,  637,  124,  807,    0, 9295, 9298,  656,    0,    0
  2248. ,    0,    0,    0,  152,    0,  103,   40, 9301,   42,    0
  2249. ,    0,   43,    0,  103, 9305,   41, 9309,    0,    0,   43
  2250. ,    0, 9313,   44, 9316, 9319,  697,    0,    0,    0,  103
  2251. , 9323, 9326, 9329,    0,   50,   51, 9332,  103,    0,   41
  2252. , 9335,  299,    0,  446,    0,    0,    0,    0,    0,  228
  2253. ,    0,    0,    0,    0,  340,    0,  153,   62, 9338,   64
  2254. , 9341,   69, 9344,   67, 9347, 9350, 9353,    0,    0, 9356
  2255. ,    0,    0,    0,    0,    0,    0,   93,    0,  925,  222
  2256. ,    0,  477,    0,    0,  289,    0,  290,  395,    0,    0
  2257. ,  152,    0,    0,    0,  341,    0,  237,    0,  152,    0
  2258. , 9359,   77,    0,    0,    0,    0,  586,    0,    0,    0
  2259. ,    0,    0,  744,    0,  698,    0,    0,   50,   51,   52
  2260. ,    0,    0,  738, 9362,   97, 9365,   51,   52,    0,  172
  2261. ,    0,   53, 9368, 9371, 9375, 9378,   60,   61,    0,    0
  2262. ,   62, 9381, 9384, 9387,    0,   66,   67,   68, 9390, 9393
  2263. , 9398, 9402, 9405,   66,   67, 9408,   69, 9411,   37,   38
  2264. ,   71,    0,    0,    0,    0,    0,    0,    0,  520,  781
  2265. ,   99,  882,    0,    0,  892,   78,    0,  376,    0,    0
  2266. ,   35,    0,    0,  354,    0,    0,  377,  103,   40,   41
  2267. ,   42,    0, 9414,   43,   99,    0, 9417,    0,   45,  464
  2268. ,    0, 9420,    0,    0,    0,    0,    0, 1379,  699,  466
  2269. ,    0, 1379, 9423,   37,   38,    0,    0,    0,    0,  835
  2270. ,    0,  468, 1375,    0,  856,  469,  470,    0,    0,    0
  2271. , 1375,    0,    0,    0,  471,    0,    0,    0,  870,    0
  2272. ,    0,  702, 9427, 9430, 9434, 9438,   38,    0, 9441,  168
  2273. , 9445,   44,    0,   45,  420,    0,    0,    0,  173, 9448
  2274. ,    0,  201,  475,    0,   41,   42,  717,    0,    0,    0
  2275. ,    0,    0,  674,  630, 9451, 9454,   41,   42,    0,    0
  2276. , 9458, 9461,    0,   44,    0,   45,    0,  739,    0,  476
  2277. ,  169,  170,    0,    0,    0,    0,    0,    0,    0, 9464
  2278. ,   51, 9467,    0,    0,    0,   53,  718,   36,   37,   38
  2279. ,    0,    0,    0,    0,    0,    0,  222,    0,    0,    0
  2280. ,    0,    0,   62,   63,   64,   65,    0, 9470,   67,   68
  2281. ,   69, 9474,   37,   38,   71,    0,    0,  427,   40,  428
  2282. ,   42,  587,    0,   43,    0,   79,   44,  478, 9477,    0
  2283. ,    0,    0,  638,    0,   50, 9480,   52,    0,    0,  152
  2284. ,   53,  762,   40,   41,   42,  440,    0,   43,    0,  229
  2285. ,   44,    0, 9483,    0, 9487,   51, 9490, 9493, 9497,   64
  2286. , 9500,    0,   66,   67,   68,   69, 9503,   51, 9506,   71
  2287. ,  429, 1314, 9509,  294,    0,    0,   17,    0,    0,    0
  2288. , 1016,   56,   57,   58, 9512, 9515, 9518,  296,    0,   62
  2289. , 9521, 9525,   65,    0,   66,   67, 9529, 9532, 9535,  534
  2290. ,  483, 9538, 9541,  486, 9545, 9548,  489,  490,  491,  492
  2291. ,  493,  494,  495, 9551, 9554, 9557,  613,    0,    0,    0
  2292. , 9561,    0,    0,    0, 9564,   35,  674,  857,    0, 9567
  2293. , 9570, 9573,  769, 9576,  256, 9579, 9582, 9585, 9588, 9592
  2294. ,  262,  263,  264, 9595, 9598, 9602, 9605,   59, 9608, 9611
  2295. ,  503, 9615, 9619, 9622, 9627, 9630,    0, 9635, 9638, 9643
  2296. , 9648,   70,  469,  470,   71,    0,   95, 9651,   40,  471
  2297. ,  299,    0, 1405,   43,    0,   62,   44,    0,   63,  179
  2298. ,    0,   64,   45,    0,  472,  616,    0,   66,  719,    0
  2299. ,  179,   70,  473,    0,  474,  103,    0,   71,   40,    0
  2300. , 1375,   44,    0,  475,  272,    0,   41,  274,    0,  926
  2301. ,  720,    0,  476,  721,    0,  477,  230,    0,  706,  675
  2302. ,    0,   36,  152,    0,   38,  237,    0,  431,  169,    0
  2303. ,  432,  174,    0,   35,   50,    0,   40,   35,    0,   41
  2304. ,  478,    0,   42,  297,   53,    0,   45,   26,    0, 1380
  2305. ,   27,  332,    0,  282,   38,    0,   51,  102,    0,  918
  2306. ,   52,    0,  928,   62,    0,   53,   65,    0, 1376,   68
  2307. ,    0,   50,   36,   70,    0,   51,   37,    0,   52,   38
  2308. ,    0,   56,   71,    0,   57,   36,    0,   58,   37,    0
  2309. , 1376,   59,   38,    0,   62,  292,    0,  683,   65,  343
  2310. ,  103,    0,   66,   41,    0,   67,   31,   42,    0,   68
  2311. ,   32,    0,   69,   96,    0,   70,   43,    0,   71,   44
  2312. ,    0,  103,  284,    0,   40,  285,    0,   41,  286,  220
  2313. ,    0,  103,  175,   80,    0, 1376,   40,    0,   41,   43
  2314. ,    0,  846,   44,    0,  479,   43,    0,  480,   44,  378
  2315. ,    0,  481,  663,    0,  389,  482,  283,  664,   45,    0
  2316. ,  483,  284,    0,  484,  285,    0,  485,  286,    0,  486
  2317. ,  753,  293,    0,  490,  250,    0,  491,   14,    0,  492
  2318. ,   15,    0,  106,  493,  617,    0,  494,  636,    0,  498
  2319. ,  808,    0,  500,  294,    0,   50,  588,  252,    0,   51
  2320. ,  296,    0,  429,  254,    0,  105,  181,    0,  503,  189
  2321. ,    0,  106,  190,    0,   63,  344,    0,   64,  222,    0
  2322. ,  179,   66,  107,    0,   70,  152,    0,  797,  422,   53
  2323. ,  257,    0,  798,  315,  260,    0,  287,  316,  262,    0
  2324. ,   35,  263,    0,  618,   56,  266,    0,   50,   57,  267
  2325. ,    0,   51,   58,    0,   52,   59,    0,   50,   61,    0
  2326. ,   52,   53,  268,    0,   62,  269,    0,  442,   63,  270
  2327. ,    0,   53,   65,    0,   56,   69,    0,   57,   70,    0
  2328. ,   59,  574,    0,   56,   60,   71,    0,   57,   61,    0
  2329. ,   60,   62,    0,   61,   63,    0,  180,   62,    0,   36
  2330. ,   63,   66,   81,    0,   37,   64,   67,    0,   38,   65
  2331. ,   68,   97,    0,   66,   70,    0,   69,   71,    0,  747
  2332. ,   45,    0,  783,  422,    0,  929,  883,    0,  722,  422
  2333. ,    0,   41,  639,    0,   42,   26,    0,   52,  423,    0
  2334. ,  809,   38,  237,    0,   37,   31,    0,  250,   38,   32
  2335. ,    0,   62,   40,    0,   63,   41,    0,   64,   42,  283
  2336. ,    0,   65,  284,    0,   66,   43,  286,    0,   69,   44
  2337. ,    0,  125,   70,    0,  667,  103,    0,   40, 1353,    0
  2338. ,  668,   41,    0,   41,   43,    0,  128,  113,    0,   35
  2339. , 1353,    0,  317, 1353,    0,   37, 1353,    0,  152, 1353
  2340. ,    0,  641, 1024,    0,  727,  119,    0,  152,  121,    0
  2341. ,  734,  152,    0,  373,   40,   50,    0,   41,   51,    0
  2342. ,   42,   52,    0,  422,   53,    0,   50,    5,    0,   51
  2343. ,    6,    0,   52,    7,    0,   51,    8,    0,   52,   53
  2344. ,    0,  746,  443,   63,    0,  873,   53,   65,    0,  799
  2345. ,   66,    0,   67,   99,    0,   65,   73,    0,   63,   66
  2346. ,   74,    0,   64,   67,    0,   65,   68,  160,    0,   66
  2347. ,   70,    0,   69,   71,    0,  204,  445,    0,  784,  422
  2348. ,   38,    0,   50,  770,    0,   51,  771,    0,   53,    9
  2349. ,    0,  677,  103,    0,  885,   64,    0,   69,   35,    0
  2350. ,  424,  168,    0,  401,  288,    0,  283,  669,    0,   41
  2351. ,  152,    0,   43,  130,    0,  176,   52,    0,  591,   53
  2352. ,    0,  547,  154,    0,  548,   65,    0,  125,   70,    0
  2353. ,  576,  126,    0,  125,  152,  127,    0,  643,   52,    0
  2354. ,  687,  447,    0,  939,   68,    0,  209,   70,    0,  592
  2355. ,  579,  363,    0,  837,  578,  581,    0,  579,   97,    0
  2356. , 1047,  451,    0, 1047,   35,    0, 1047,  723,    0, 1047
  2357. ,   36,    0, 1296,   37,    0,  517,   41,    0,  242,   45
  2358. ,    0,  103,  319,    0,  785,   40,    0,   37,  203,    0
  2359. ,   36,  646,    0,  373,   40,    0,  773,  103,    0,   41
  2360. ,  106,   43,    0,   44,   50,    0,   43,   51,    0,   45
  2361. ,   52,    0,   45,   53,    0,  800,  536,  131,    0,   50
  2362. ,  380,   63,    0,   51,   64,    0,  894,   52,   65,    0
  2363. ,  108,   67,    0,  401,   53,   17,   68,    0,  109,   69
  2364. ,    0,  111,   71,    0,   57,  179,    0,   60,  370,    0
  2365. ,  786,  736,   62,    0,  594,   63,    0,   64,  537,    0
  2366. ,  201,  193,    0,  886,  538,    0,  628,   83,    0,  792
  2367. , 1411,    0,  180, 1411,    0,   50,  369,    0,  812,   50
  2368. ,    0,   52,   53,    0,   56,  370,    0,   60,   62,    0
  2369. ,   61,   63,    0,   63,   66,    0,   64,   67,    0,   65
  2370. ,   68,    0,   66,   70,    0,   69,   71,    0,   35,  132
  2371. ,    0,   83, 1221,    0,   36,  133,    0,   38,  103,    0
  2372. ,   40,   44,    0,   42,   45,  241,    0,   45,  647,    0
  2373. ,  204, 1047,    0,  709, 1047,    0,  152, 1047,    0,  194
  2374. , 1047,    0,  222, 1341,    0,  152,   51,    0,   50,    5
  2375. ,    0,   51,   11,    0,   52,    7,    0,   14,   62,    0
  2376. ,   15,   63,    0,   64,    8,    0,  895,   53,   65,    0
  2377. ,   50,   66,    0,   51,   67,    0,   52,   68,    0,  941
  2378. ,   56,   71,    0,  787,   59,    0,   60,   16,    0,   56
  2379. ,   62,    0,   57,   63,    0,   58,   64,    0,   59,   65
  2380. ,    0,   61,   66,  207,    0,   62,   69,    0,   63,   70
  2381. ,    0,   64,  253,    0,  179,   66,    0,   67,  181,    0
  2382. ,   68,  299,    0,  373,  595,    0,  910,  596,  279,    0
  2383. ,  848,  679,    0,  388,   38,    0,  452,  242,    0,  724
  2384. ,  351,    0,  639,  458,    0,  209,   36,    0,  179,   41
  2385. ,  152,   43,    0,   42,  101,    0,   35,  381,   50,    0
  2386. ,  597,   52,    0,  648,   53,    0,  320,   63,    0,  477
  2387. ,   69,    0,   36,   70,    0,  519,   37,    0,   99,   31
  2388. ,    0,   32,  352,    0,  106,  195,    0,   42,  302,    0
  2389. ,   43,  107,    0,   44,   35,    0,   35,   50,  209,    0
  2390. ,   52,  210,    0,  690,   53,    0,   36,   61,    0,   65
  2391. ,  211,    0,  737,   68,    0,   36,   47,   70,    0,  826
  2392. ,   37,    0,  237,  103,    0,   48,   42,    0,  238,   43
  2393. ,    0,   41,   49,    0,   54,  426,    0,   57,  156,    0
  2394. ,  942,   59,    0,   50,   36,  136,    0,   51,   37,    0
  2395. ,   52,   38,    0, 1379,  333,    0,   50, 1118,   63,    0
  2396. ,   51, 1118,   64,    0,   52, 1118,   65,    0, 1118,   66
  2397. ,    0,  468,   67,    0, 1375,   68,    0,   62,   71,    0
  2398. ,  896,   63,    0, 1375,   65,    0,  471,   68,   39,    0
  2399. ,   69,   40,    0, 1118,   70,   41,    0,  472,   44,    0
  2400. ,  598,  212,    0,  373,  244,    0,  402,  476,    0,  943
  2401. ,  303,    0,  478,   51,    0,   36,   63,    0,   37,   64
  2402. ,    0,   38,   65,    0,   50,   66,    0,   51,   67,    0
  2403. ,   52,   68,    0,  167,   70,    0,  410,   40,    0,  482
  2404. ,  382,    0,  483,  103,    0,  485,   41,    0,  486,   42
  2405. ,    0,  491,   14,    0,  492,   15,    0,  413,  493,    0
  2406. ,  498,  197,    0,  500,   16,    0,  944,   18,    0,  467
  2407. ,  158,    0,  502,  159,    0,  504,  160,    0,  152,   72
  2408. ,    0,  922,  696,  103,  169,    0,   40,  170,    0,   41
  2409. ,   19,    0,   42,   20,    0,   35,   50,   21,    0,   43
  2410. ,   51,    0,  643,   52,   22,    0,   45,   53,    0,   36
  2411. ,   70,    0,   41,   23,    0,   42,   24,    0,  222,  397
  2412. ,    0,   44,   35,    0,  802,   45,    0,   52,  750,    0
  2413. ,   36,   63,    0,   37,   64,    0,   38,   65,  103,    0
  2414. ,   66,   41,  353,    0,   67,  222,   42,    0,   70,   43
  2415. ,    0,   71,   44,    0,  622,   45,  355,   25,    0,   40
  2416. ,   82,    0,  699,   35,  324,    0,  862,   45,    0,  701
  2417. ,   51,    0,   61,  162,    0,   36,   63,    0,   37,   64
  2418. ,    0,   38,   65,    0,  703,  103,    0,  705,   41,  106
  2419. ,    0,   41,  390,    0,   44,   35,    0,  674,   51,    0
  2420. ,  850,   52,    0,  933,  682,    0,   36,   63,    0,  542
  2421. ,   37,   64,    0,   38,   65,    0,   50,   66,   33,    0
  2422. ,   51,   67,    0,   52,   68,    0,   53,   78,    0,   62
  2423. ,   40,    0,   63,  179,  428,    0,   64,   42,    0,   65
  2424. ,  103,    0,   40,  138,    0,   66,   41,  462,   43,    0
  2425. ,   67,   48,   42,    0,   69,   44,    0,   70,   43,    0
  2426. ,   71,   44,    0,  607,   52,    0,  897,  429,    0,   54
  2427. ,  531,    0,  718,   56,    0,   67,  222,    0,   68,  237
  2428. ,    0,   71,  651,   35,    0,  152,  365,    0,  623,  524
  2429. ,   50,   36,    0,   51,   37,    0,  758,   52,   38,    0
  2430. ,   51,  102,    0,   52,   53,    0,   57,   36,    0,   58
  2431. ,   37,    0,   59,   38,    0,   56,   60,  178,    0,   57
  2432. ,   61,    0,   60,   62,    0,   61,   63,    0,   63,   66
  2433. ,    0,   64,   67,    0,   65,   68,  383,  103,    0,   69
  2434. ,   40,    0,   66,   70,   41,    0,   67,   42,    0,   69
  2435. ,   71,    0,   70,   43,    0,   71,   44,    0,  179,   41
  2436. ,    0,   42,  198,    0,  543,  391,    0,  430,  357,  107
  2437. ,    0,  179,  433,  152,    0,  934,  180,  109,    0,  751
  2438. ,   56,    0,   50,   57,    0,   51,   58,    0,   52,   59
  2439. ,    0,  790,   53,    0,  652,   62,    0,  238,   63,    0
  2440. ,  513,   66,    0,   56,   69,    0,   57,   70,    0,   60
  2441. ,   71,    0,   68,  305,    0,  477,   69,    0,  887,  169
  2442. ,    0,   36,  139,    0,   77,  245,    0,  160,  728,    0
  2443. ,  817,   49,    0,  878,   50,    0,  545,   52,    0,  818
  2444. ,   57,    0,  819,   58,    0,   35,   63,    0,  544,   70
  2445. ,    0,   37,  791,  778,    0,  841,  384,    0,  664,  888
  2446. ,    0,  697,   79,    0,   68,  605,    0,   69,   35,    0
  2447. ,  666,  820,    0,  401,   65,    0,  828, 1379,    0,  699
  2448. ,  467,    0,  701,  468,    0,  853, 1375,    0, 1375,  143
  2449. ,    0,  318,  471,    0,  843,  248,    0,  779,  246,    0
  2450. ,  703,  475,  247,    0,  705,   41,  385,    0,  476,   53
  2451. ,    0,  477,   56,    0,  392,   59,    0,   35,   36,    0
  2452. ,  924,  402,  145,    0,  901,  403,    0,  822,   36,   41
  2453. ,    0,   37,   42,    0,   38,  146,    0,  479,   43,    0
  2454. ,  480,   44,  147,    0,  550,  481,    0,  482,   45,    0
  2455. ,  625,  483,    0,  485,   72,    0,  520,  488,    0,  866
  2456. ,   99,  490,  400,    0,  125,  493,    0,  552,  494,    0
  2457. ,  496,  325,    0,  498,  401,    0,   40,  361,    0,  823
  2458. ,  328,    0,  947,  222,    0,  238,  362,    0,   36,  763
  2459. ,  152,    0,   38,  363,    0,   36,   43,    0,  557,   97
  2460. ,    0,  558,  776,    0,  560,  222,    0,  561,  777,    0
  2461. ,  562,  831,    0,  563,   50,    0,  564,   51,    0,   83
  2462. ,   52,    0,   41,  152,    0,  565,   42,  402,   53,    0
  2463. ,  566,   40,    0,  413,   41,   43,  403,    0,  533,  223
  2464. ,    0,   45,  548,  505,    0,  914,   65,    0,   35,   50
  2465. ,   70,  148,    0,   51,  549,    0,   57,  125,    0,   58
  2466. ,  552,    0,   59,  248,    0,   61,  183,    0,  780,   64
  2467. ,    0,  634,   35,    0,   67,   99,    0,   36,   70,    0
  2468. ,   71,  373,    0,  712,  185,    0,  152,   37,    0,   42
  2469. ,  889,    0,   44,   35,    0,   50,  655,    0,   52,  656
  2470. ,    0,   52,   53,   39,    0,  554,   42,    0,   53,  165
  2471. ,    0,  555,   43,    0,  558,   44,    0,  560,   45,    0
  2472. ,   38,  562,    0,   62,  563,    0,   63,  564,    0,   65
  2473. ,  237,    0,   63,   66,    0,   64,   67,  565,    0,   65
  2474. ,   68,    0,   69,  566,  436,   35,    0,   66,   70,  413
  2475. ,  127,    0,   69,   71,    0,  373,  224,    0,  902,  103
  2476. ,    0,  389,   42,    0,   43,  404,    0,   44,   35,   47
  2477. ,    0,  106,   37,    0,   36,  408,    0,   50,   36,   49
  2478. ,    0,   51,   37,    0,   52,   38,  103,    0,   65,  103
  2479. ,    0,   40,  606,   50,    0,   66,   41,  127,   51,    0
  2480. ,   67,   42,  168,   52,    0,   68,  103,    0,   69,   40
  2481. ,   35,    0,   70,   41,   43,    0,  222,   42,   53,    0
  2482. ,   71,   44,    0,   45,  607,    0,   44,  170,   54,    0
  2483. ,  152,   58,    0,  608,   59,    0,  527,   61,    0,  386
  2484. ,   64,    0,   57,  152,    0,   59,  364,    0,   62,   40
  2485. ,    0,   63,  413,   41,    0,   64,   42,    0,  915,   65
  2486. ,    0,  179,   66,   43,    0,   67,  804,  657,  366,    0
  2487. ,   69,   44,    0,  222,   45,    0,  635,  367,    0,  152
  2488. ,   51,    0,  583,   52,    0,  636,   53,    0,  832,   62
  2489. ,    0,   50,   63,    0,   51,   64,    0,  903,   52,   65
  2490. ,    0,   50,  179,   66,    0,   51,   67,    0,   52,   53
  2491. ,   68,    0,  180,   56,    0,   60,   62,    0,   61,   63
  2492. ,    0,   63,  179,   66,   72,    0,   64,   67,  389,    0
  2493. ,   65,   68,    0,   66,   70,    0,   69,   71,    0,  160
  2494. ,  185,    0,  741,   52,    0,  713,  180,    0,  845,   38
  2495. ,    0,  180, 1047,    0, 1047,   62,    0,  415,   63,    0
  2496. , 1047,   64,    0, 1047,   66,    0,  833,   68,    0, 1047
  2497. ,  103,    0,  125,   43,    0,  437,  414,    0,  103, 1047
  2498. ,    0,   40,   35, 1047,    0,   41, 1047,    0,   44,   36
  2499. ,    0,   45,  422,   38,    0,  714,   38,    0,  730,  103
  2500. ,    0,  152,   43,    0,  670,  169,    0,  671,  103,    0
  2501. ,   44,   50,    0,  201,   45,   52,    0,  674,  127,  114
  2502. ,    0,  916,  805,  234,    0,  890,   51,  222,    0,   62
  2503. ,  118,    0,   64,  658,  368,    0,   65,  119,    0,   66
  2504. ,  121,    0,   67,  855,    0,   68,  171,    0,   69,  436
  2505. ,    0,   70,  794,  127,    0,   35,   50,    0,  584,   52
  2506. ,    0,  128,  226,    0,   62,  150,    0,   50,   63,    0
  2507. ,   51,   64,    0,   52,   65,    0,   53,   17,   68,    0
  2508. ,   36,   70,    0,   37,  151,    0,   65,  160,    0,   71
  2509. ,  609,    0,   42,  387,    0,   43,  336,    0,   44,   35
  2510. ,    0, 1049,  255,    0,  264,  122,    0,  265,  123,    0
  2511. ,  767,  267,    0,   38,  268,    0,  731,   74,    0,   40
  2512. ,  126,    0,  125,   41,  127,    0,  222,   42,    0, 1049
  2513. ,   45,    0, 1049,  271,    0, 1049,  272,    0, 1049,  273
  2514. ,    0, 1049,  274,    0, 1049,  275,    0, 1049,  276,    0
  2515. , 1049,  279,    0,   53,   38,    0,  938,   57,    0,   71
  2516. ,   40,    0,  659,   42,    0,   52,   26,    0,  337,   27
  2517. ,    0,  417,  338,  281,    0,   53,  282,    0,  742,   36
  2518. ,    0,   36,   63,    0,   37,   64,    0,   38,   65,    0
  2519. ,   31,  222,    0,  904,  103,    0,   40,  126,    0,   41
  2520. ,  127,    0,   41,  152,   43,    0,   42,  283,    0,  284
  2521. ,  128,    0,  285,   44,    0,   43,  286,    0,   40,   44
  2522. ,    0,  507,   41,    0,   42,   45,    0,  433,  418,   43
  2523. ,    0,  585,   52,    0,  168,   53,    0,  169,  227,    0
  2524. ,  312,   63,    0,  654,   71,    0,  891,  152,    0,   52
  2525. ,   53,    0,  806,   52,    0,  795,   53,    0,  113,   56
  2526. ,    0,  715,   60,   62,    0,   61,   63,    0,  948,  114
  2527. ,   64,    0,  664,   65,    0,  439,   63,   66,    0,   64
  2528. ,   67,    0,   65,   68,    0,   66,   70,    0,   62,   69
  2529. ,   71,    0,   63,   70,    0,  522,  116,    0,  160,  119
  2530. ,    0,  415,   41,    0,   41,   43,    0,  419,  288,    0
  2531. ,  869,  768,    0,  401,   38,    0,  467,  743,    0,  660
  2532. ,  222,    0,  179,   41,  152,    0,  520,   40,   44,    0
  2533. ,   99,   42,   45,    0,  696,  103,    0,  179,   41,    0
  2534. ,  626,   42,   45,    0,  834,   50,    0,   41,   51,    0
  2535. ,   42,   52,    0,   52,   53,    0,   42,   53,    0,  313
  2536. ,   63,    0,   65,   68,    0,   66,   70,    0,  949,   68
  2537. ,    0,  477,   69,    0,  881,   70,    0,   71,   76,    0
  2538. ,   97,  188,    0,  569,   53,    0,   35,   50,    0,  185
  2539. ,   56,    0,  716,   50,   57,    0,   51,   58,    0,   52
  2540. ,   59,    0,   50,   63,    0,   51,   64,    0,   52,   65
  2541. ,    0,   62,   69,    0,   50,  770,   63,   70,    0,   51
  2542. ,  570,   64,    0,   52,   65,    0,  571,   71,    0,   68
  2543. ,   78,    0,   36,   70,    0,  520,  699,    0,  700,   44
  2544. ,    0,  701,  465,    0,   35,  467,   36,    0,  703,  103
  2545. ,    0,  704,  472,   40,    0,   36,  705,   41,    0,   37
  2546. ,   42,    0,  179,  473,   43,    0,  474,  237,    0,  905
  2547. , 1375,    0,  237,  103,    0,   40,  631,   35,    0,   43
  2548. ,  291,    0,  168,  661,    0,   35,   50,    0,   52,   94
  2549. ,    0,  594,   66,  152,    0,   36,   70,    0,  222,   45
  2550. ,    0,  639,   51,    0,   45,  782,  508,    0,   50,  342
  2551. ,    0,   52,  250,    0,  652,   14,   62,    0,   15,   63
  2552. ,    0,  906,   65,    0,   50,   70,    0,   52,  745,    0
  2553. ,   53,  250,    0,   59,  248,    0,   60,  572,    0,   61
  2554. ,  252,    0,  238,   63,  254,    0,   64,  222,  181,    0
  2555. ,   68,  160,    0,   69,  611,    0,   70,  612,    0,   71
  2556. ,  484,    0,  179,  485,  152,    0,   97,  487,    0,  488
  2557. ,   35,    0,  436,  496,    0,  127,  497,    0,  201,  498
  2558. ,  573,    0, 1016,  128,    0, 1314,  500,    0,  631,   50
  2559. ,    0,  501,   51,    0,  796,   52,    0,  255,  235,    0
  2560. ,   53,  257,    0,  464,  258,    0,  259,   36,    0,  465
  2561. ,  260,   37,    0,  261,   38,    0,  614,  265,    0, 1379
  2562. ,   56,  266,    0,   57,  267,    0,  466,   58,    0, 1379
  2563. ,   60,    0,  467,  502,   61,    0,  615,  504,  268,    0
  2564. ,   62,  269,    0,   50, 1405,   63,  270,    0,   51,   64
  2565. ,    0,   52, 1405,   65,   78,    0,   36,   66,    0,  917
  2566. ,  468,   37,   67,    0,   53, 1375,   38,   68,    0,  180
  2567. ,   69,    0, 1375,  103,    0)  ;
  2568.         --| Actions to perform for all combinations of parser
  2569.         --| states and input tokens.
  2570.         -- NYU Reference Name: ACTION_TABLE1
  2571.      
  2572.     ActionTableTwo :
  2573.         constant array (ActionTableTwoRange)
  2574.         of GC.ParserInteger :=
  2575.          (71747,71748,    0,165573,    0,165575,115905,    0,    0,    0
  2576. ,259403,    0,    0,259406,259407,259408,    0,    0,    0,    0
  2577. ,182147,182148,    0,    0,182151,    0,    0,    0,    0,182156
  2578. ,    0,121449,    0,248388,    0,    0,    0,204240,    0,    0
  2579. ,    0,    0,    0,    0,    0,    0,    0,209769,    0,    0
  2580. ,    0,264963,    0,    0,    0,    0,    0,    0,    0,    0
  2581. ,    0,110441,    0,259456,    0,    0,    0,    0,    0,176677
  2582. ,    0,    0,71819,    0,292581,    0,    0,    0,    0,    0
  2583. ,27675,    0,    0,    0,264996,    0,    0,127024,265000,    0
  2584. ,    0,127028,182219,    0,60803,    0,    0,    0,    0,    0
  2585. ,    0,    0,    0,182230,132560,    0,    0,    0,    0,    0
  2586. ,    0,71858,71859,265025,    0,    0,    0,    0,    0,265031
  2587. ,    0,    0,265034,    0,    0,    0,60835,60836,    0,193294
  2588. ,182257,    0,    0,    0,71881,71882,    0,    0,71885,71886
  2589. ,    0,71888,    0,    0,    0,    0,    0,    0,    0,182276
  2590. ,182277,    0,    0,    0,182281,182282,    0,60866,    0,    0
  2591. ,    0,    0,    0,    0,    0,    0,    0,60876,    0,    0
  2592. ,    0,121589,    0,    0,    0,149188,    0,    0,    0,171268
  2593. ,    0,    0,    0,149196,    0,    0,    0,    0,    0,    0
  2594. ,    0,    0,248547,248548,248549,    0,    0,    0,    0,    0
  2595. ,248555,248556,248557,    0,248559,    0,    0,259600,    0,60918
  2596. ,265122,    0,    0,    0,55404,55405,    0,121635,248573,    0
  2597. ,    0,    0,    0,    0,    0,    0,    0,265139,    0,    0
  2598. ,    0,265143,    0,    0,    0,55425,    0,248592,    0,248594
  2599. ,    0,    0,    0,    0,    0,    0,149259,    0,265160,    0
  2600. ,    0,265163,    0,    0,265166,265167,265168,    0,    0,    0
  2601. ,265172,171350,    0,    0,    0,187911,    0,    0,60977,60978
  2602. ,60979,    0,55462,55463,    0,55465,55466,    0,55468,    0
  2603. ,    0,55471,55472,    0,    0,    0,    0,60996,    0,171378
  2604. ,    0,    0,    0,61002,    0,    0,61005,61006,61007,    0
  2605. ,    0,149314,    0,    0,    0,171394,171395,    0,    0,149322
  2606. ,149323,    0,    0,    0,    0,149328,    0,171406,171407,    0
  2607. ,171409,    0,94145,171412,    0,    0,    0,    0,    0,    0
  2608. ,    0,    0,    0,    0,    0,    0,    0,    0,55528,55529
  2609. ,55530,    0,204545,204546,204547,204548,    0,44499,204551,    0
  2610. ,138325,204554,    0,    0,    0,    0,    0,    0,    0,    0
  2611. ,    0,    0,    0,  363,    0,    0,    0,    0,    0,    0
  2612. ,    0,    0,    0,    0,270805,    0,    0,    0,    0,    0
  2613. ,    0,    0,50053,    0,50055,    0,    0,    0,    0,182516
  2614. ,    0,    0,    0,    0,    0,204598,    0,    0,    0,    0
  2615. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2616. ,    0,    0,    0,    0,61123,    0,204619,177025,  418,171508
  2617. ,177028,    0,    0,132879,55614,    0,    0,204630,    0,243265
  2618. ,149443,    0,    0,55623,171523,    0,55626,    0,    0,    0
  2619. ,    0,    0,    0,    0,    0,    0,61155,61156,61157,    0
  2620. ,    0,    0,    0,    0,204657,204658,    0,    0,    0,    0
  2621. ,204663,    0,149475,149476,    0,188111,171555,    0,    0,204672
  2622. ,204673,204674,204675,204676,204677,    0,61185,    0,    0,    0
  2623. ,    0,55671,    0,204686,204687,    0,    0,61196,    0,204692
  2624. ,    0,    0,    0,    0,    0,149508,171585,171586,    0,171588
  2625. ,55690,149514,171591,149516,    0,171594,    0,171596,    0,215750
  2626. ,215751,55701,94335,    0,243350,    0,    0,    0,    0,160570
  2627. ,    0,    0,33636,    0,77790,    0,    0,    0,193693,    0
  2628. ,    0,282000,    0,    0,    0,    0,    0,    0,    0,    0
  2629. ,    0,243377,243378,243379,    0,188191,    0,11585,    0,    0
  2630. ,    0,    0,    0,    0,    0,    0,    0,232355,    0,232357
  2631. ,    0,    0,    0,    0,    0,    0,149579,33681,33682,33683
  2632. ,    0,33685,33686,    0,    0,    0,33690,    0,    0,    0
  2633. ,    0,    0,122000,204786,204787,204788,    0,232385,    0,    0
  2634. ,    0,287579,    0,232391,    0,    0,232394,    0,232396,    0
  2635. ,    0,    0,    0,  603,    0,    0,    0,    0,171697,    0
  2636. ,    0,61320,    0,61322,    0,11653,    0,    0,61327,61328
  2637. ,61329,    0,144116,61332,    0,    0,    0,149640,149641,149642
  2638. ,    0,171720,    0,    0,    0,149648,    0,171726,171727,    0
  2639. ,171729,    0,    0,171732,    0,    0,    0,22723,    0,    0
  2640. ,    0,    0,116551,    0,    0,    0,    0,    0,    0,    0
  2641. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2642. ,    0,    0,232470,    0,271105,    0,    0,    0,    0,22755
  2643. ,22756,    0,    0,50354,33798,33799,    0,    0,    0,    0
  2644. ,    0,    0,    0,    0,    0,    0,33810,11735,    0,    0
  2645. ,    0,232499,    0,    0,    0,    0,    0,    0,    0,    0
  2646. ,22786,22787,22788,    0,    0,22791,    0,    0,    0,    0
  2647. ,    0,    0,232520,232521,    0,232523,    0,232525,232526,232527
  2648. ,    0,232529,    0,    0,232532,    0,105597,    0,    0,  739
  2649. ,    0,94564,271173,    0,271175,    0,    0,    0,    0,    0
  2650. ,    0,    0,    0,238070,238071,238072,    0,    0,    0,    0
  2651. ,171849,    0,39395,39396,39397,    0,    0,    0,    0,    0
  2652. ,    0,193936,193937,    0,    0,    0,287764,287765,    0,    0
  2653. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,133245
  2654. ,    0,    0,39425,39426,    0,39428,    0,    0,    0,    0
  2655. ,    0,39434,193967,39436,    0,    0,    0,    0,149821,    0
  2656. ,260203,    0,149825,    0,    0,    0,    0,    0,    0,    0
  2657. ,193985,22897,22898,    0,271255,50496,193991,    0,    0,    0
  2658. ,    0,127768,    0,    0,238151,    0,282305,    0,    0,216080
  2659. ,    0,    0,144336,144337,    0,22921,    0,    0,    0,22925
  2660. ,22926,22927,22928,    0,    0,    0,    0,    0,    0,127796
  2661. ,    0,    0,    0,    0,    0,    0,39499,    0,260261,    0
  2662. ,    0,    0,    0,144367,    0,56065,    0,    0,    0,78145
  2663. ,39513,    0,    0,33997,    0,    0,    0,    0,    0,    0
  2664. ,    0,    0,    0,    0,276844,    0,    0,144391,    0,    0
  2665. ,    0,166471,    0,    0,39537,39538,    0,    0,    0,116808
  2666. ,39543,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2667. ,    0,    0,221682,    0,116823,    0,    0,39560,39561,39562
  2668. ,39563,    0,39565,39566,    0,39568,    0,    0,194103,39572
  2669. ,    0,    0,34056,    0,249299,    0,    0,78213,    0,78215
  2670. ,28545,    0,    0,    0,50625,    0,94779,    0,    0,    0
  2671. ,144454,    0,    0,144457,    0,    0,    0,166537,166538,144463
  2672. ,    0,144465,    0,166543,    0,166545,    0,    0,183105,    0
  2673. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2674. ,    0,111371,    0,    0,    0,    0,    0,205200,    0,    0
  2675. ,    0,    0,    0,    0,    0,293512,    0,    0,    0,    0
  2676. ,    0,243847,    0,293520,    0,    0,116915,    0,116917,282488
  2677. ,    0,    0,    0,    0,288012,    0,    0,    0,    0,78295
  2678. ,    0,    0,238349,    0,    0,    0,116935,    0,243874,    0
  2679. ,243876,    0,    0,243879,    0,    0,    0,    0,    0,    0
  2680. ,39683,243887,    0,243889,    0,    0, 1056,    0,56248,    0
  2681. ,    0,    0,    0,    0,172153,172154,    0,    0,243904,    0
  2682. ,    0,    0,    0,243909,    0,243911,    0,243913,243914,243915
  2683. ,243916,243917,    0,    0,39717,243921,243922,243923,    0,    0
  2684. ,243926,243927,    0,243929,243930,243931,    0,    0,    0,    0
  2685. ,    0,    0,    0,    0,    0,    0,172195,172196,172197,    0
  2686. ,    0,172200,39745,39746,    0,39748,117015,    0,39751,    0
  2687. ,    0,39754,    0,    0,    0,    0,    0,    0,183255,    0
  2688. ,260523,282600,150145,    0,    0,61844,    0,    0,172227,172228
  2689. ,28735,    0,172231,    0,    0,172234,    0,172236,238465,    0
  2690. ,    0,    0,    0,166723,    0,    0,282625,188803,    0,216400
  2691. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2692. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2693. ,    0,56371,    0,    0,    0,166755,    0,166757,260581,    0
  2694. ,188836,188837,    0,    0,    0,    0,    0,39830,    0,    0
  2695. ,    0,56391,    0,    0,255078,    0,    0,    0,    0,    0
  2696. ,172299,    0,    0,    0,    0,166785,    0,166787,166788,    0
  2697. ,188866,    0,188868,    0,    0,    0,    0,    0,188874,    0
  2698. ,    0,    0,    0,172322,    0,50906,    0,233035,210960,    0
  2699. ,    0,    0,    0,    0,    0,    0,299272,39880,    0,    0
  2700. ,    0,    0,39885,    0,    0,    0,39889,172346,    0,    0
  2701. ,    0,    0,    0,172352,    0,172354,172355,    0,172357,    0
  2702. ,    0,    0,    0,    0,172363,    0,172365,172366,172367,172368
  2703. ,172369,    0,150295,172372,    0,    0,    0,    0,    0,    0
  2704. ,    0,    0,    0,188939,    0,    0,    0,    0,    0,    0
  2705. ,166870,166871,    0,166873,188950,    0,    0, 1307,    0,    0
  2706. ,    0,111691,    0,    0,    0,    0,    0,    0,    0,271750
  2707. ,271751,    0,    0, 1323,    0, 1325,271757,    0,166898,166899
  2708. ,    0,    0,188978,    0, 1334,    0,    0,188983,    0,    0
  2709. ,    0,    0,    0, 1343,    0,    0,    0,188993,188994,188995
  2710. ,    0,    0,166922,166923,189000,    0,    0,    0,166928,    0
  2711. ,189006,189007,    0,189009,    0,    0,189012,    0,    0,    0
  2712. ,    0,    0,    0,    0,133830,133831,    0,    0,    0,    0
  2713. ,    0,133837,    0,    0,    0,282854,266298,    0,    0,    0
  2714. ,150403,78657,    0,200077,    0,    0,244232,189043,194563,    0
  2715. ,    0,    0,    0,40036,40037,    0,    0,    0,139383,    0
  2716. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2717. ,    0,    0,150435,150436,150437,    0,    0,17984,    0,    0
  2718. ,194595,194596,    0,40066,40067,40068,    0,    0,40071,    0
  2719. ,    0,40074,    0,40076,    0,    0,    0,    0,128385,12487
  2720. ,    0,    0,150465,150466,150467,150468,    0,    0,150471,    0
  2721. ,194625,    0,194627,    0,    0,    0,194631,    0,    0,194634
  2722. ,    0,    0,12510,    0,    0,    0,12514,    0,12516,216720
  2723. ,78746,12519,    0,    0,    0,    0,    0,    0,    0,12527
  2724. ,    0,12529,    0,    0,    0,    0,78762,128434,    0,78765
  2725. ,    0,    0,    0,    0,    0,150518,    0,    0,167078,    0
  2726. ,78776,12549,12550,    0,12552,12553,12554,    0,    0,12557
  2727. ,12558,    0,    0,12561,12562,12563,    0,12565,12566,12567
  2728. ,    0,12569,12570,12571,194699,    0,    0,150550,    0,    0
  2729. ,    0,    0,    0,    0,40177,    0,40179,    0,    0,    0
  2730. ,40183,255425,    0,255427,255428,    0,    0,    0,238875,    0
  2731. ,    0,139536,139537,    0,    0,    0,    0,    0,    0,    0
  2732. ,    0,    0,    0,    0,    0,40208,40209,    0,194743,    0
  2733. ,150593,150594,    0,    0,150597,    0,117485,    0,    0,    0
  2734. ,    0,194756,    0,150606,150607,    0,    0,    0,194763,150612
  2735. ,    0,    0,    0,194768,194769,56795,    0,194772,    0,    0
  2736. ,139585,45763,    0,    0,56804,    0,    0,    0,    0,    0
  2737. ,    0,    0,    0,    0,    0,    0,78892,    0,78894,78895
  2738. ,    0,    0,    0,    0,    0,    0,255510,    0,    0,128576
  2739. ,    0,    0,    0,45795,45796,    0,    0,89951,    0,117548
  2740. ,117549,117550,    0,117552,    0,    0,    0,    0,205861,    0
  2741. ,    0,    0,    0,255537,255538,255539,    0,    0,    0,    0
  2742. ,    0, 1671,    0,45825,45826,45827,45828,266589,    0,45831
  2743. , 1680,    0,    0,    0,67912,    0,    0,    0,    0,    0
  2744. ,18247,    0,    0,    0,62403,    0,    0,    0,    0,    0
  2745. ,    0,    0,    0,40336,40337,    0,    0,117606,    0,    0
  2746. ,    0,    0,117611,117612,117613,117614,117615,117616,78984,    0
  2747. ,    0,    0,    0,    0,    0,    0,    0,62436,62437,    0
  2748. ,    0,62440,    0,    0,40367,    0,    0,    0,    0,    0
  2749. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2750. ,    0,    0,40385,    0,    0,    0,62465,62466,    0,    0
  2751. ,    0,    0,62471,    0,    0,62474,239083,62476,128705,    0
  2752. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2753. ,    0,250136,    0,    0,    0,    0,45938,    0,    0,    0
  2754. ,    0,    0,261185,    0,    0,117694,217037,    0,    0,217040
  2755. ,    0,    0,    0,117702,117703,117704,    0,117706,    0,    0
  2756. ,45962,45963,    0,45965,45966,45967,    0,    0,    0,123237
  2757. ,    0,    0,    0,    0,239141,    0,    0,    0,    0,    0
  2758. ,62539,    0,    0,    0,    0,    0,128773,    0,    0,    0
  2759. ,250195,    0,    0,    0,    0,57035,    0,123265,123266,123267
  2760. ,    0,    0,    0,    0,    0,189501,    0,    0,123276,    0
  2761. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,62578
  2762. ,    0,189517,    0,    0,    0,277825,29471,62586,    0,62588
  2763. ,    0,    0,123300,62592,62593,62594,62595,62596,    0,73636
  2764. ,73637,62600,62601,62602,    0,    0,62605,62606,    0,62608
  2765. ,    0,    0,139877,62612,117803,    0,250261,    0,    0,    0
  2766. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,73666
  2767. ,73667,    0,    0,    0,    0,    0,    0,73674,51599,73676
  2768. ,139905,139906,    0,139908,    0,    0,139911,    0,    0,139914
  2769. ,    0,139916,206145,    0,206147,206148,    0,    0,    0,    0
  2770. ,    0,35065,    0,184080,    0,24031,    0,    0,    0,123377
  2771. ,123378,123379,117861,    0,    0,123383,    0,    0,    0,    0
  2772. ,    0,    0,123390,    0,123392,    0,123394,    0,123396,123397
  2773. ,    0,    0,123400,123401,123402,123403,    0,123405,123406,123407
  2774. ,123408,123409,73739,    0,123412,24071,    0,    0,    0,    0
  2775. ,    0,    0,    0,73750,139979,    0,    0,    0,    0,    0
  2776. ,40643,266923,    0,    0,    0,139990,90320,    0,    0,    0
  2777. ,    0,    0,    0,    0,    0,    0,    0,206230,    0,    0
  2778. ,73777,73778,73779,    0,    0,    0,73783,195202,    0,195204
  2779. ,222800,    0,    0,    0,    0,    0,    0,195212,140023,195214
  2780. ,195215,    0,    0,73800,    0,    0,    0,    0,    0,    0
  2781. ,    0,73808,73809,195228,195229,    0,    0,140042,    0,266981
  2782. ,140045,140046,    0,    0,    0,40708,    0,140052,40711,    0
  2783. ,    0,    0,    0,40716,    0,    0,195251,    0,195253,    0
  2784. ,    0,    0,151105,    0,129031,    0,195261,195262,123516,    0
  2785. ,195265,    0,195267,195268,    0,    0,    0,    0,173197,    0
  2786. ,    0,173200,294619,162164,    0,    0,    0,    0,    0,    0
  2787. ,    0,162172,    0,    0,    0,40758,261519,    0,    0,    0
  2788. ,233928,    0,    0,    0,    0,    0,    0,    0,233936,233937
  2789. ,    0,    0,    0,    0,    0,283614,40779,    0,    0,    0
  2790. ,    0,    0,    0,    0,233952,    0,    0,40790,    0,    0
  2791. ,    0,    0,    0,    0,    0,    0,233964,    0,    0,233967
  2792. ,    0,    0,129109,    0,    0,    0,73923,123595,    0,    0
  2793. ,245016,    0,123600,245019,40817,    0,40819,    0,    0,57379
  2794. ,40823,189837,206395,233991,189840,300221,40829,40830,211920,40832
  2795. ,40833,40834,40835,40836,40837,    0,    0,40840,    0,    0
  2796. ,    0,    0,    0,    0,    0,40848,    0,    0,    0,40852
  2797. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2798. ,    0,    0,    0,    0,    0,118134,    0,    0,73985,    0
  2799. ,73987,73988,151255,    0,73991,    0,    0,73994,    0,73996
  2800. ,140225,234049,195417,234051,    0,195420,195421,    0,    0,195424
  2801. ,    0,    0,195427,195428,195429,195430,    0,    0,    0,195434
  2802. ,195435,195436,195437,    0,195439,    0,    0,    0,    0,    0
  2803. ,    0,    0,    0,223043,    0, 2285,    0,    0,195453,    0
  2804. ,    0,    0,267204,294800,    0,    0,    0,    0,    0,    0
  2805. ,    0,    0,    0,    0,    0,    0,    0,    0,195473,    0
  2806. ,    0,    0,74059,    0,    0,223075,223076,223077,    0,    0
  2807. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2808. ,    0,    0,    0,40966,    0,    0,118235,    0,    0,    0
  2809. ,    0,    0,    0,184470,    0,    0,    0,    0,    0,    0
  2810. ,    0,    0,    0,    0,223114,    0,    0,    0,24434,    0
  2811. ,    0,    0,    0,    0,    0,74112,    0,    0,    0,    0
  2812. ,184497,184498,184499,74120,74121,74122,74123,    0,74125,74126
  2813. ,74127,74128,    0,151396,151397,74132,    0,18944,    0,    0
  2814. ,    0,    0,41025,    0,41027,41028,    0,    0,223158,    0
  2815. ,140375,    0,    0,    0,    0,    0,63115,    0,    0,    0
  2816. ,107271,    0,151425,151426,    0,    0,107277,228696,151431,    0
  2817. ,228699,    0,    0,    0,201108,    0,    0,151440,    0,    0
  2818. ,223190,173520,118331,    0,    0,    0,    0,129374,    0,    0
  2819. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,256323
  2820. ,    0,283920,    0,101795,101796,101797,    0,223217,223218,    0
  2821. ,    0,    0,    0,223223,    0,151478,    0,    0,    0,    0
  2822. ,    0,    0,223232,223233,223234,223235,223236,223237,    0,    0
  2823. ,223240,    0,    0,    0,101826,    0,    0,223247,223248,    0
  2824. ,    0,79757,    0,    0,    0,    0,    0,151510,    0,    0
  2825. ,    0,    0, 2502, 2503, 2504,    0,    0,41140,    0,    0
  2826. ,206713,256385,    0,256387,256388,278465,    0,256391,239835,    0
  2827. ,256394,    0,    0,223283,151537,    0,151539, 2527, 2528,    0
  2828. ,151543,    0,    0,    0,    0,    0,    0, 2537, 2538,151552
  2829. ,151553,151554,151555,151556,    0,    0,    0,151560,    0,    0
  2830. ,    0,    0,151565,151566,151567,151568,151569,101899,    0,151572
  2831. ,    0, 8080,96385,    0,    0,267477,    0,267479,    0,118468
  2832. ,140545,    0,    0,    0,162625,    0,    0,    0,184705,184706
  2833. ,    0,184708,    0,112963,184711,256459,228865,    0,    0,184716
  2834. ,    0,    0,206795,    0,    0,101937,    0,    0,    0,256473
  2835. ,    0,101943,    0,    0,    0,    0,    0,    0,    0,    0
  2836. ,    0,    0,    0,    0,    0,112995,112996,112997,101960,    0
  2837. ,    0,    0,    0,    0,    0,    0,101968,101969,    0,    0
  2838. ,101972,184758,    0,289621,    0,    0,    0,    0,140613,    0
  2839. ,140615,    0,    0,201327,    0,113025,    0,    0,    0,    0
  2840. ,    0,    0,    0,256527,    0,    0,113036,    0,    0,    0
  2841. ,135116,    0,    0,184790,    0,245501,201350,201351,    0,    0
  2842. ,223430,223431,    0,201357,    0,    0,    0,223437,118577,118578
  2843. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,107550
  2844. ,184817,184818,184819,    0,    0,    0,184823,    0,    0,    0
  2845. ,107561,    0,    0,184830,    0,    0,184833,184834,184835,184836
  2846. ,184837,    0,    0,184840,184841,184842,184843,    0,184845,    0
  2847. ,    0,184848,184849,135179,    0,    0,    0,    0,    0,    0
  2848. ,113110,240048,201416,    0,    0,    0,    0,    0,    0,    0
  2849. ,    0,102083,    0,    0,    0,    0,    0,    0,    0,217990
  2850. ,217991,    0,    0,    0,    0,    0,217997,    0,    0,    0
  2851. ,    0,135217,    0,    0,    0,    0,    0,135223,    0,229048
  2852. ,    0,    0,113152,    0,    0,    0,    0,    0,135234,135235
  2853. ,    0,    0,113162,113163,135240,    0,    0,    0,    0,    0
  2854. ,    0,135247,    0,    0,    0,57985,    0,    0,13836,80065
  2855. ,    0,    0,80068,102145,102146,102147,    0,    0,    0,102151
  2856. ,    0,    0,102154,    0,102156,    0,    0,124235,    0,24895
  2857. ,    0,    0,    0,    0,267736,    0,173915,267739,    0,184956
  2858. ,    0,    0,    0,    0,    0,173924,173925,    0,    0,    0
  2859. ,13878,    0,262235,    0,    0,    0,256720,    0,30443,245685
  2860. ,    0,    0, 2852,    0,    0,278805,    0,    0,    0,212581
  2861. ,    0,13899,    0,    0,    0,    0,    0,    0,    0,    0
  2862. ,    0,    0,13910,    0,52545,118774,    0,102219,    0,    0
  2863. ,    0, 8400,    0,151896,    0,    0,113266,113267,    0,    0
  2864. ,    0,    0,    0,    0,    0,    0,273327,    0,    0,13937
  2865. ,13938,13939,    0,    0,13942,13943,    0,    0,13946,    0
  2866. ,13948,80177,80178,80179,    0,    0,    0,    0,13956,13957
  2867. ,    0,    0,    0,    0,13962,13963,    0,    0,13966,13967
  2868. ,    0,    0,102274,102275,    0,102277,    0,    0,102280,102281
  2869. ,102282,102283,151955,102285,102286,    0,    0,102289,    0,    0
  2870. ,102292,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2871. ,    0,    0,    0,    0,    0,113345,    0,    0,    0,    0
  2872. ,41603,    0,    0,    0,    0,    0,118875,    0,    0,    0
  2873. ,    0,    0,    0,    0,135440,    0,118885,    0,    0,    0
  2874. ,    0,    0,    0,    0,    0,190641,    0,    0,    0,    0
  2875. ,    0,    0,    0,41636,41637,    0,    0,    0,    0,    0
  2876. ,    0,    0,    0,    0,    0,240332,    0,    0,    0,    0
  2877. ,    0,    0,    0,    0,    0,    0,    0,129964,    0,    0
  2878. ,    0,    0,41665,41666,41667,41668,    0,    0,41671,    0
  2879. ,    0,41674,    0,41676,107905,    0,    0,    0,    0,    0
  2880. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2881. ,    0,    0,    0,    0,    0,    0,152079,    0,    0,    0
  2882. ,    0,218312,118971,    0,    0,    0,    0,    0,    0,    0
  2883. ,    0,    0,284551,    0,    0,41718,    0,    0,    0,    0
  2884. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2885. ,    0,    0,    0,    0,    0,    0,41739,    0,    0,    0
  2886. ,    0,    0,107973,    0,107975,    0,    0,    0,    0,80385
  2887. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2888. ,    0,301157,190778,    0,    0,    0,223896,    0,    0,223899
  2889. ,    0,    0,168712,    0,    0,41778,    0,    0,124566,    0
  2890. ,41783,    0, 8671,    0,    0,    0,    0,41790,    0,41792
  2891. ,    0,    0,41795,41796,41797,    0,257040,41800,    0,41802
  2892. ,41803,    0,41805,41806,41807,41808,    0,    0,    0,41812
  2893. ,    0,    0,    0,    0,    0,30780,    0,    0,    0,    0
  2894. ,    0,    0,    0,    0,108055,    0,    0,    0,    0,    0
  2895. ,251555,    0,251557,    0,    0,58395,    0,    0,    0,    0
  2896. ,    0,47363,    0,    0,    0,    0,    0,    0,    0,    0
  2897. ,    0,163272,    0,    0,    0,    0,229505,    0,    0,    0
  2898. ,251585,251586,251587,251588,    0,    0,251591,    0,    0,251594
  2899. ,    0,251596,    0,47395,47396,47397,    0,    0,301274,    0
  2900. ,    0,    0,268164,279203,    0,    0,    0,    0,174347,    0
  2901. ,    0,    0,    0,268175,    0,    0,    0,    0,    0,    0
  2902. ,    0,    0,    0,47425,47426,47427,47428,    0,    0,47431
  2903. ,    0,    0,    0,41916,    0,    0,    0,    0,    0,    0
  2904. ,    0,268203,    0,    0,    0,30890,    0,    0,    0,    0
  2905. ,    0,    0,    0,    0,251659,268217,    0,    0,    0,    0
  2906. ,    0,    0,    0,    0,    0,251670,251671,    0,251673,    0
  2907. ,    0,    0,    0,    0,246160,    0,    0,    0,    0,    0
  2908. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2909. ,    0,    0,251697,251698,251699,    0,    0,    0,251703,268261
  2910. ,    0,    0,19909,    0,174443,    0,    0,19914,47510,19916
  2911. ,    0,    0,41995,    0,    0,251720,251721,251722,251723,    0
  2912. ,251725,251726,    0,    0,251729,    0,229655,251732,    0,    0
  2913. ,196545,    0,    0,    0,    0,47537,47538,47539,    0,    0
  2914. ,    0,47543,262785,    0,218635,    0,36510,    0,240715,218640
  2915. ,    0,    0,    0,284872,    0,58595,58596,58597,    0,    0
  2916. ,    0,    0,174501,47565,47566,47567,47568,47569,    0,    0
  2917. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2918. ,    0,279381,    0,    0,    0,58625,58626,58627,58628,80705
  2919. ,    0,58631,    0,    0,58634,    0,58636,    0,    0,    0
  2920. ,    0,    0,    0,    0,    0,229734,224216,    0,    0,224219
  2921. ,    0,    0,    0,119362,    0,119364,    0,262860,    0,262862
  2922. ,58660,    0, 8991,119372,    0,119374,    0,    0,    0,    0
  2923. ,    0,    0,    0,    0,    0,    0,    0,    0,58678,119388
  2924. ,119389,    0,    0,    0,    0,    0,    0,    0,    0,301525
  2925. ,    0,    0,    0,    0,119403,    0,    0,119406,    0,58699
  2926. ,    0,    0,119411,    0,119413,    0,    0,    0,    0,    0
  2927. ,58710,    0,    0,119422,    0,268437,    0,268439,    0,119428
  2928. ,    0,    0,    0,    0,163585,    0,    0,    0,    0,    0
  2929. ,    0,147035,    0,    0,    0,    0,    0,58737,58738,58739
  2930. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,58749
  2931. ,58750,    0,    0,58753,58754,    0,58756,58757,    0,    0
  2932. ,58760,58761,58762,58763,    0,58765,58766,58767,58768,58769
  2933. ,    0,    0,58772,    0,    0,    0,    0,    0,    0,    0
  2934. ,    0,    0,    0,    0,    0,25671,    0,    0,    0,    0
  2935. ,113980,    0,    0,    0,    0,    0,    0,    0,    0,136065
  2936. ,42243,119510,    0,    0,    0,    0,    0,    0,    0,    0
  2937. ,141595,202305,    0,    0,    0,    0,    0,    0,    0,    0
  2938. ,    0,    0,    0,    0,    0,    0,    0,20194,119537,119538
  2939. ,119539,    0,    0,42276,42277,    0,    0,    0,    0,    0
  2940. ,    0,    0,    0,174742,    0,    0,    0,    0,    0,    0
  2941. ,    0,    0,    0,263056,263057,42298,    0,    0,    0,    0
  2942. ,    0,202355,42305,42306,    0,    0,    0,    0,    0,263072
  2943. ,    0,    0,    0,    0,    0,119584,    0,119586,119587,    0
  2944. ,119589,    0,119591,119592,    0,    0,119595,    0,119597,    0
  2945. ,119599,    0,    0,    0,218945,    0,218947,218948,119607,    0
  2946. ,218951,    0,    0,218954,119613,218956,    0,130654,263111,    0
  2947. ,    0,    0,    0,    0,    0,235523,    0,    0,    0,257603
  2948. ,    0,    0,141707,119632,119633,119634,    0,147231,    0,    0
  2949. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2950. ,296257,    0,92056,    0,14792,92059,75503,    0,235556,    0
  2951. ,    0,    0,257636,257637,263157,    0,    0,    0,    0,    0
  2952. ,263163,202455,    0,263166,263167,    0,    0,263170,    0,    0
  2953. ,246616,    0,    0,    0,    0,    0,    0,235585,235586,    0
  2954. ,    0,257665,    0,    0,257668,    0,235594,257671,235596,    0
  2955. ,257674,141776,    0,    0,119703,    0,    0,42440,42441,42442
  2956. ,    0,    0,42445,42446,42447,42448,    0,    0,219059,42452
  2957. ,141795,    0,219063,    0,    0,    0,252181,    0,    0,141804
  2958. ,    0,219072,    0,    0,    0,219076,    0,    0,    0,219080
  2959. ,219081,    0,219083,    0,219085,    0,219087,219088,    0,296356
  2960. ,296357,    0,    0,296360,    0,    0,141831,    0,    0,213581
  2961. ,    0,235659,    0,    0,    0,257739,    0,    0,    0,    0
  2962. ,    0,    0,235670,59063,    0, 3875,    0, 3877,296385,296386
  2963. ,296387,    0,    0,    0,296391,    0,    0,    0,    0,296396
  2964. ,    0,    0,    0,    0,    0,219136,    0,59087,    0,    0
  2965. ,235698,    0,141877,257777,257778,    0, 3906, 3907,    0,    0
  2966. ,    0,    0,141887,141888,    0,141890,    0,141892,    0,246755
  2967. ,246756,    0,    0,    0,235722,    0,257800,    0,    0,    0
  2968. ,    0,    0,257806,257807,    0,257809,    0,114317,257812,    0
  2969. , 3940,268853,    0,    0,108805,    0,    0,108808,    0,    0
  2970. ,246786,246787,    0,    0,175043,    0,108817,    0,    0,    0
  2971. ,246796,    0,42595,    0,42597,    0,    0,    0,    0,    0
  2972. ,    0,108832,    0,    0,    0,296482,    0,219218,    0, 3979
  2973. ,    0,    0,    0,108844,    0,    0,    0,175076,175077,    0
  2974. ,    0,    0,    0,42626,42627,42628,296503,    0,42631,    0
  2975. ,    0,42634,246838,42636,    0,    0,    0,    0,    0,    0
  2976. ,108871,    0,    0,296520,296521,296522,    0,    0,    0,    0
  2977. ,    0,    0,    0,    0,153037,    0,197191,    0,136484,    0
  2978. , 4030,197196, 4032, 4033,    0,    0, 4036,    0,    0,219280
  2979. , 4040, 4041,    0, 4043,    0, 4045, 4046, 4047, 4048, 4049
  2980. ,    0,    0, 4052,103395,103396,103397,108917,    0,103400,285528
  2981. ,    0,246897,246898,246899,    0,    0,42699,246903,108929,    0
  2982. ,108931,    0,53743,197238,    0,59265,246912,    0,246914,    0
  2983. ,246916,246917,    0,103425,    0,    0,    0,    0,    0,    0
  2984. ,    0,246927,    0,246929,    0,    0,246932,125515,    0,    0
  2985. ,    0,175190,    0,    0,42737,    0,    0,    0,    0,    0
  2986. ,    0,191757,    0,    0,191760,136571,    0,    0,    0,42752
  2987. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2988. ,    0,    0,    0,    0,    0,42768,42769,26213,197303,42772
  2989. ,97963,    0,    0,    0,    0,    0,    0,    0,197313,197314
  2990. ,197315,    0,    0,175242,175243,197320,    0,    0,    0,175248
  2991. ,    0,197326,197327,    0,197329,    0,    0,197332,103510,    0
  2992. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  2993. ,103522,    0,230461,    0,    0,    0,    0,    0,    0,    0
  2994. ,53861,136647,    0,    0,    0,103537,103538,    0,    0,26275
  2995. ,    0,103543,    0,48355,103546,    0,103548,125625,    0,    0
  2996. ,    0,269123,    0,    0,    0,    0,    0,    0,    0,    0
  2997. ,    0,103563,    0,    0,103566,    0,103568,103569,    0,142204
  2998. ,103572,    0,    0,    0,48386,48387,48388,70465,    0,    0
  2999. ,    0,    0,    0,269155,269156,269157,    0,    0,136704,    0
  3000. ,42883,    0,    0,136709,136710,136711,136712,136713,136714,136715
  3001. ,136716,136717,136718,    0,    0,136721,136722,136723,    0,136725
  3002. ,    0,136727,    0,    0,    0,    0,269188,    0,    0,269191
  3003. ,    0,    0,    0,42916,    0,    0,    0,    0,    0,    0
  3004. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3005. ,    0,    0,    0,    0,    0,    0,175395,175396,    0,    0
  3006. ,    0,    0,    0,42946,42947,42948,    0,    0,    0,26395
  3007. ,    0,42954,    0,42956,109185,    0,    0,    0,    0,26405
  3008. ,20887,    0,    0,    0,    0,    0,    0,175426,175427,175428
  3009. ,    0,    0,175431,    0,    0,    0,48498,    0,    0,    0
  3010. ,    0,48503,15390,    0,    0,    0,    0,263750,    0,269271
  3011. ,    0,269273,70590,    0,263757,    0,    0,    0,    0,    0
  3012. ,    0,    0,    0,109234,    0,48527,48528,48529,    0,    0
  3013. ,    0,    0,    0,109244,    0,269297,    0,269299,    0,    0
  3014. ,    0,269303,    0,    0,    0,59585,    0,43030,    0,    0
  3015. ,    0,    0,    0,15441,15442,15443,    0,    0,    0,269321
  3016. ,    0,    0,15450,    0,    0,    0,    0,    0,    0,    0
  3017. ,269332,175510,    0,147917,    0,43058,    0,    0,    0,    0
  3018. ,43063,    0,236230,236231,54105,54106,54107,    0,    0,    0
  3019. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3020. ,    0,54122,43085,43086,    0,43088,    0,    0,120357,43092
  3021. ,    0,    0,    0,    0,54135,54136,    0,    0,54139,54140
  3022. ,    0,175560,175561,175562,    0,32070,175565,175566,175567,175568
  3023. ,175569,10000,32077,    0,    0,153498,120385,120386,120387,    0
  3024. ,    0,    0,    0,    0,    0,    0,    0,120396,    0,    0
  3025. ,    0,    0,208705,    0,    0,    0,    0,    0,    0,    0
  3026. ,    0,    0,54183,54184,54185,54186,54187,54188,54189,54190
  3027. ,    0,    0,54193,    0,    0,    0,    0,70755,70756,    0
  3028. ,54201,54202,15570,    0,136990,    0,    0,    0,136994,120438
  3029. ,136996,    0,    0,136999,    0, 4545,    0,    0,    0,    0
  3030. ,114930,    0,    0,137009,    0,    0,    0,70785,    0,    0
  3031. ,    0,    0,    0,70791,    0,48717,70794,    0,    0,    0
  3032. ,43203,120470,    0,137029,137030,    0,137032,    0,    0,    0
  3033. ,137036,    0,    0,54254,54255,    0,137042,137043,    0,137045
  3034. ,    0,137047,    0,137049,137050,137051,    0,    0,120497,120498
  3035. ,120499,    0,43235,43236,    0,    0,    0,    0,    0,    0
  3036. ,    0,    0,    0,120512,    0,120514,120515,120516,120517,    0
  3037. ,    0,120520,120521,120522,120523,    0,120525,120526,120527,120528
  3038. ,120529,70859,43265,    0,43267,    0,    0,    0,43271,    0
  3039. ,    0,43274,70870,43276,109505,    0,109507,109508,181256,37763
  3040. ,    0,    0,    0,59843,    0,    0,181264,65366,    0,    0
  3041. ,    0,104003,    0,54334,    0,    0,    0,    0,    0,70897
  3042. ,70898,    0,    0,    0,    0,    0,    0,    0,264071,    0
  3043. ,    0,37795,37796,37797,70912,    0,59876,59877,    0,15727
  3044. ,    0,    0,70920,    0,    0,    0,    0,70925,70926,70927
  3045. ,70928,70929,    0,    0,70932,    0,    0,54378,    0,    0
  3046. ,    0,    0,    0,    0,37828,59905,59906,    0,    0,    0
  3047. ,    0,    0,37836,104065,    0,    0,    0,120626,120627,    0
  3048. ,    0,302757,104074,    0,104076,    0,    0,    0, 4738,54410
  3049. ,    0,    0,    0,    0,43377,43378,    0,10266,    0,    0
  3050. ,    0,    0,    0,    0,192400,    0,109617,109618,109619,    0
  3051. ,197925,    0,    0,10282,    0,    0,10285,43400,    0,43402
  3052. ,43403,    0,43405,43406,43407,43408,43409,    0,15816,    0
  3053. ,    0,    0,    0,    0,    0,37899,    0,    0,    0,59979
  3054. ,    0,    0,    0,    0,    0,    0,37910,104139,    0,    0
  3055. ,    0,    0,    0,    0,    0,    0,    0,    0,104150,32404
  3056. ,32405,    0,    0,    0,    0,    0,142791,    0,    0,    0
  3057. ,    0,    0,    0,37937,37938,37939,    0,60017,60018,    0
  3058. ,    0,    0,    0,60023,    0,104177,104178,    0,    0,    0
  3059. ,    0,    0,    0,60033,60034,60035,    0,    0,    0,    0
  3060. ,60040,    0,    0,    0,37968,    0,60046,60047,    0,    0
  3061. ,104202,104203,60052,104205,104206,104207,104208,104209,    0,    0
  3062. ,104212,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3063. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3064. ,43523,    0,    0,71121,    0,71123,93200,    0,    0,    0
  3065. ,    0,    0,71130,71131,    0,    0,    0,    0,    0,    0
  3066. ,    0,    0,    0,269825,    0,    0,    0,291905,21475,    0
  3067. ,21477,    0,43555,43556,43557,    0,    0,    0,    0,    0
  3068. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3069. ,    0,    0,    0,    0,    0,    0,    0,    0,21505,21506
  3070. ,    0,21508,43585,43586,    0,43588,    0,181565,43591,    0
  3071. ,203644,43594,    0,43596,    0,    0,291954,    0,    0,    0
  3072. ,    0,    0,    0,60163,    0,10494,176065,    0,    0,    0
  3073. ,198145,104323,    0,10502,10503,    0,    0,    0,    0,    0
  3074. ,76737,    0,    0,    0,    0,    0,    0,    0,192644,    0
  3075. ,    0,    0,    0,    0,    0,60195,60196,    0,    0,192655
  3076. ,71238,71239,    0,104355,104356,104357,    0,    0,    0,    0
  3077. ,    0,170591,71250,236821,    0,    0,    0,209230,    0,    0
  3078. ,    0,    0,    0,21590,    0,60225,60226,    0,60228,    0
  3079. ,    0,60231,    0,104385,    0,104387,    0,    0,    0,104391
  3080. ,    0,    0,104394,    0,    0,192701,    0,    0,    0,192705
  3081. ,    0,    0,    0,    0,43697,43698,    0,236865,    0,236867
  3082. ,    0,258945,    0,143048,    0,    0,    0,    0,    0,43712
  3083. ,    0,    0,    0,    0,76831,    0,21643,43720,    0,43722
  3084. ,    0,21648,    0,43726,    0,    0,    0,    0,    0,    0
  3085. ,    0,    0,    0,    0,    0,    0,10625,    0,292096,60299
  3086. ,    0,281061,    0,    0,54785,    0,54787,104459,    0,    0
  3087. ,60310,    0,    0,    0,76871,    0,176215,    0,104470,    0
  3088. ,    0, 5131,    0,    0,    0,    0,148630,    0,    0,    0
  3089. ,    0,    0,209345,    0,192790,    0,    0,60337,60338,60339
  3090. ,    0,    0,236950,    0,275585,    0,104498,104499,    0,27235
  3091. ,    0,104503,    0,    0,    0,    0,60356,60357,    0,    0
  3092. ,60360,    0,    0,    0,    0,60365,60366,60367,    0,    0
  3093. ,    0,    0,    0,104525,104526,    0,104528,    0,181796,181797
  3094. ,104532,    0,    0,    0,    0,    0,    0,    0,143173,225959
  3095. ,143175,270113,    0,    0,275635,115585,    0,93511,    0,    0
  3096. ,43843,    0,    0,93517,    0,    0,93520,181825,181826,181827
  3097. ,181828,    0,    0,181831,275655,    0,    0,    0,181836,154242
  3098. ,    0,    0,    0,    0,    0,    0,    0,154250,281188,154252
  3099. ,    0,154254,    0,43876,43877,    0,    0,    0,    0,248085
  3100. ,    0,154264,154265,    0,259128,154268,154269,    0,    0,    0
  3101. ,154273,    0,    0,    0,154277,    0,    0,    0,264661,    0
  3102. ,    0,192917,    0,    0,    0,    0,220517,    0,    0,27355
  3103. ,    0,43914,    0,43916,110145,    0,    0,    0,27364,    0
  3104. ,    0,181899,154305,    0,154307,154308,198461,    0,    0,    0
  3105. ,    0,    0,181910,181911,    0,    0,220547,220548,    0,    0
  3106. ,    0,    0,    0,220554,    0,220556,    0,237115,    0,154332
  3107. ,204004,204005,    0,    0,    0,    0,    0,    0,    0,    0
  3108. ,181938,    0,    0,    0,    0,181943,198501,126755,126756,126757
  3109. ,    0,    0,    0,    0,    0,    0,43979,    0,    0,    0
  3110. ,    0,    0,181960,181961,181962,181963,    0,    0,181966,181967
  3111. ,181968,    0,259236,259237,181972,    0,    0,126785,126786,126787
  3112. ,126788,148865,    0,126791,    0, 5375,126794,154390,    0,    0
  3113. ,    0,    0,170952,    0,44017,    0,44019,    0,    0,220630
  3114. ,44023,259265,259266,259267,259268,115775,    0,259271,    0,44032
  3115. ,259274,    0,    0,    0,    0,154418,    0,    0,    0,44042
  3116. ,    0,    0,44045,44046,44047,44048,    0,220658,    0,44052
  3117. ,126838,275852,    0,121322,    0,    0,121325,    0,    0,    0
  3118. ,275861,220672,220673,220674,    0,    0,    0,121336,    0,220680
  3119. ,    0,    0,220683,    0,220685,220686,    0,    0,    0,137905
  3120. ,154463,    0,    0,154466,    0,    0,154469,154470,154471,154472
  3121. ,154473,154474,154475,    0,    0,    0,154479,    0,    0,    0
  3122. ,    0,    0,    0,    0,    0,182083,259350,259351,    0,    0
  3123. ,    0,    0,220723,    0,121383,    0,    0,    0,    0,    0
  3124. ,121389,121390,121391,    0,    0,    0,    0,126915,    0,    0
  3125. ,154513,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3126. ,    0,126929,248348,248349,126932,    0,11035,    0,71746,248357
  3127. ,93825,    0,248359,71751,    0,259400,71754,    0,259401,248363
  3128. ,    0,259402,71756,    0,248366,160062,    0,259405,198696,    0
  3129. ,292523,259409,248371,    0,248373,182145,    0,259412,182146,    0
  3130. ,248382,182154,    0,248385,121448,    0,248387,121450,    0,292541
  3131. ,198718,    0,248412,198741,    0,248421,44218,    0,193236,182198
  3132. ,    0,264995,71830,    0,264997,165655,    0,127026,27684,    0
  3133. ,127027,27685,    0,149123,71857,    0,265026,171203,    0,265027
  3134. ,248470,    0,265028,121534,71863,    0,265036,121542,    0,193290
  3135. ,121543,71872,    0,121546,60837,    0,182258,60840,    0,287120
  3136. ,182259,    0,292640,71880,    0,182263,71883,    0,193305,71887
  3137. ,    0,248497,149155,71889,    0,248498,149156,    0,248499,149157
  3138. ,    0,182272,71892,    0,182273,171235,    0,182274,171236,    0
  3139. ,193313,182275,171237,    0,182280,55343,    0,187802,182283,77422
  3140. ,60865,    0,182285,60867,    0,182286,121577,60868,    0,182287
  3141. ,121578,    0,182288,11199,    0,182289,60871,    0,182292,60874
  3142. ,    0,149185,121590,    0,149186,121591,    0,149187,121592,105035
  3143. ,    0,171265,27771, 5695,    0,193342,171266,    0,171267,149191
  3144. ,    0,254055,149194,    0,248537,171271,    0,248540,171274,94008
  3145. ,    0,248541,176794,    0,265099,248542,209909,176795,171276,    0
  3146. ,248543,209910,    0,248544,209911,    0,248545,209912,    0,248546
  3147. ,215432,55381,    0,248550,55385,    0,248551,55386,    0,248552
  3148. ,55387,    0,265110,248553,160249,    0,248554,215440,    0,248558
  3149. ,237520,    0,248567,55402,    0,265137,149238,55415,    0,265138
  3150. ,55416,    0,171318,55419,    0,60939,55420,    0,248593,33352
  3151. ,    0,60950,33355,    0,265161,77515,    0,265162,171339,    0
  3152. ,276203,265165,60962,    0,265169,149270,    0,232072,143768,60983
  3153. ,55464,    0,232075,60986,55467,    0,160330,60988,55469,    0
  3154. ,204483,55470,    0,160334,60992,55473,    0,149297,60993,55474
  3155. ,    0,149298,60994,    0,149299,60995,    0,171377,60997,    0
  3156. ,171379,149303,55480,    0,61000,55481,    0,116191,61001,55482
  3157. ,    0,171383,61003,    0,149312,61008,    0,149313,61009,    0
  3158. ,149315,143796,    0,171392,149316,61012,    0,171393,149317,    0
  3159. ,171396,149320,    0,171397,149321,    0,276261,171400,    0,204515
  3160. ,171401,149325, 5831,    0,204516,171402,149326,    0,204517,171403
  3161. ,149327,49985,    0,171405,149329,    0,171408,149332,    0,210075
  3162. ,204556,    0,226640,182488,    0,292880,270804,    0,199112,110808
  3163. ,    0,243267,199115,    0,243268,55622,    0,204659,110836,    0
  3164. ,237781,149477,50135,    0,171556,55657,    0,237785,171557,55658
  3165. ,    0,204680,61186,    0,204681,61187,    0,204682,61188,55669
  3166. ,    0,204683,55670,    0,204685,61191,55672,    0,204688,61194
  3167. ,    0,215727,204689,    0,177100,149505,    0,149506,33607,    0
  3168. ,177102,149507,    0,171587,149511,    0,215757,33630,    0,232323
  3169. ,33639,    0,61259,33664,    0,232356,33672,    0,61270,33675
  3170. ,    0,171659,33684,    0,215816,33689,    0,149590,33691,    0
  3171. ,204784,171670,    0,287576,232386,61297,    0,232387,61298,    0
  3172. ,232388,61299,    0,144088,61303,    0,149617,  604,    0,149618
  3173. ,  605,    0,149619,  606,    0,171698,  609,    0,171699,149623
  3174. ,    0,237929,116511,61321,    0,265526,171703,61323,    0,232414
  3175. ,61325,    0,61326,11655,    0,149643,28225,    0,171721,149645
  3176. ,28227,    0,171722,149646,    0,171723,149647,50305,    0,171725
  3177. ,149649,    0,171728,149652,    0,232459,116560,    0,226960,182808
  3178. ,22757,    0,232497,221459,    0,232498,221460,    0,232503,  705
  3179. ,    0,182836,22785,    0,271155,232522,    0,232528,39363,    0
  3180. ,111112,94555,    0,111120,55930,    0,238069,177360,    0,39427
  3181. ,22870,    0,39431,17355,    0,28418,22899,    0,149840,22903
  3182. ,    0,166416,22922,    0,166417,22923,    0,33967,22929,    0
  3183. ,144370,33990,    0,166447,39510,33991,    0,171995,39539,    0
  3184. ,188560,116813,    0,298960,39567,    0,194101,39569,    0,149975
  3185. ,144456,94785,    0,249319,166534,144458,    0,166536,116865,    0
  3186. ,243870,116933,    0,243910,172163,    0,243912,199760,    0,243918
  3187. ,39715,    0,243919,39716,    0,128051,39747,    0,243959,39756
  3188. ,    0,172225,61845,    0,227416,172226,    0,166756,39819,    0
  3189. ,188835,172278,    0,221976,166786,    0,221979,188865,    0,188867
  3190. ,172310,166791,    0,166794,39857,    0,188871,39858,    0,166796
  3191. ,39859,    0,188876,39863,    0,233032,139209,17791,    0,172337
  3192. ,95071,39881,    0,172338,39882,    0,277200,172339,39883,    0
  3193. ,172342,39886,    0,299280,172343,50925,39887,    0,172344,39888
  3194. ,    0,172348,39892,    0,172353,117163,    0,172356,95090,    0
  3195. ,227550,205474,172360,    0,188918,172361,    0,172362,139248,    0
  3196. ,166859,34403,    0,271727,139271,    0,166867,95120,    0,282775
  3197. , 1306,    0,117221, 1322,    0,166897,89631,    0,238648,188977
  3198. ,    0,188979,166903,    0,188992,89650,    0,188996,166920,    0
  3199. ,188997,166921,    0,189001,166925,    0,189002,166926,    0,189003
  3200. ,166927,    0,189005,166929,    0,189008,166932,    0,40003,17927
  3201. ,    0,89680, 1376,    0,40035,17959,    0,194597,40065,    0
  3202. ,194626,150474,    0,194628,150476,51134,    0,194636,172560,    0
  3203. ,40139,12544,    0,194678,12551,    0,40150,12555,    0,34632
  3204. ,12556,    0,150539,12564,    0,194710,40178,    0,150577, 1564
  3205. ,    0,150578, 1565,    0,150579, 1566,    0,117466,40200,    0
  3206. ,117467,40201,    0,40202, 1569,    0,277520,150583,40203,    0
  3207. ,194737,40205,    0,194738,40206,    0,194739,40207,    0,299605
  3208. ,150592,40212,    0,227861,150595,    0,150596,117482,    0,194752
  3209. ,150600,    0,194753,150601,    0,194754,150602,    0,194755,150603
  3210. ,    0,194757,150605,139567,    0,194760,150608,    0,194761,150609
  3211. ,    0,194762,117496,    0,205803,194765,    0,194766,117500,    0
  3212. ,194767,95425,    0,283096,150640,    0,283099,150643,78896,    0
  3213. ,255507,183760,    0,100987,45797,    0,117547,51319,    0,200392
  3214. ,78974,    0,200395,117610,    0,139701,62435,    0,194923,62467
  3215. ,45910,40391,    0,62468,12797,    0,123203,95608,45937,    0
  3216. ,150800,45939,    0,172880,45943,    0,62518,45961,    0,194981
  3217. ,45968,    0,123235,45969,    0,128755,123236,    0,128775,117737
  3218. ,    0,117738,79105,    0,62550,34955,    0,123268,57040,    0
  3219. ,123271,62562,    0,123274,73603,    0,139843,62577,40501,    0
  3220. ,62579,40503,    0,189520,62583,    0,73635,62597,    0,62603
  3221. ,40527,    0,206101,62607,    0,139875,123318,62609,    0,244737
  3222. ,139876,    0,128855,73665,    0,123339,73668,    0,277874,73671
  3223. ,    0,139907,123350,    0,123389,112351,    0,123393,24051,    0
  3224. ,300003,123395,    0,140017,40675,18599,    0,140018,40676,    0
  3225. ,140019,40677,    0,195210,73792,    0,206257,195219,73801,    0
  3226. ,206258,195220,73802,    0,206259,195221,73803,    0,195223,73805
  3227. ,    0,195224,73806,    0,195225,73807,    0,140040,73812,    0
  3228. ,278016,140041,    0,195233,140043,    0,195237,140047,40705,    0
  3229. ,140048,40706,    0,195239,140049,40707,    0,195246,40714,    0
  3230. ,151120,40740,    0,294616,51780,    0,233925,195292,    0,300181
  3231. ,57345,    0,195350,40818,    0,73955,40841,    0,73956,40842
  3232. ,    0,73957,40843,    0,195377,40845,    0,195378,40846,    0
  3233. ,195379,40847,    0,118115,40849,    0,234037,73986,    0,195422
  3234. ,96080,    0,195423,184385,    0,195425,184387,    0,195426,184388
  3235. ,    0,195431, 2266,    0,195432, 2267,    0,234066,195433,    0
  3236. ,195438,35387,    0,195447, 2282,    0,300320, 2294,    0,267215
  3237. ,24379,    0,195472,24383,    0,195474,24385,    0,74070,40956
  3238. ,    0,289333,267257,223105,118244,    0,223106,118245,    0,223107
  3239. , 2347,    0,223108, 2348,    0,151363,74097, 2350,    0,223111
  3240. ,74098,    0,206555,74099, 2352,    0,223116,74103,    0,151395
  3241. ,74129,    0,151427, 2414,    0,151428, 2415,    0,223179,107280
  3242. ,    0,151434,101763,    0,234221,151436,    0,223219,212181,    0
  3243. ,256355,223241,    0,256356,223242,    0,256357,223243,101825,    0
  3244. ,223245,101827,79751,    0,223246,151499,101828,    0,223249,101831
  3245. ,    0,223252,101834,    0,162545,101836,79760, 2494,    0,256386
  3246. , 8031,    0,267428,184643,63225,    0,261915,256396,    0,267437
  3247. ,151538,    0,151557,24620,    0,184675,151561,    0,184676,151562
  3248. ,    0,184677,151563,    0,267478,118465,    0,267480,118467,101910
  3249. ,    0,184707,101922,    0,184714,135043,    0,256470,101938,    0
  3250. ,256471,101939,    0,295120,184740,    0,135075,101961,    0,140595
  3251. ,135076,101962,    0,135077,101963,    0,256497,101965, 2623,    0
  3252. ,256498,101966,    0,256499,101967,    0,256503,24705,    0,256520
  3253. ,113026,    0,256521,245483,113027,    0,256522,113028,    0,256523
  3254. ,135105,    0,135106,19207,    0,256525,135107,118550,113031,    0
  3255. ,256526,184779,135108,    0,256528,113034,    0,256529,135111,    0
  3256. ,256532,135114,    0,223440,118579,    0,278648,113078,    0,184829
  3257. ,135158,    0,245541,184832,    0,184846,113099,    0,184847,140695
  3258. ,    0,184852,173814,13763,    0,135190,85519,    0,162808,129694
  3259. ,113137,13795,    0,113138,13796,    0,218000,113139,13797,    0
  3260. ,135218,13800,    0,135219,113143,    0,113153,102115,    0,113154
  3261. ,102116,    0,113155,102117,    0,135232,113156,30371,    0,135233
  3262. ,113157,    0,135236,113160,    0,135237,113161,    0,135241,113165
  3263. ,    0,135242,113166,    0,135243,113167,96610,13825,    0,113168
  3264. ,13826,    0,135245,113169,13827,    0,135246,13828,    0,135248
  3265. ,113172,    0,135249,13831,    0,135252,13834,    0,212523,80067
  3266. ,    0,102148,35920,    0,140831,102198,    0,113264,80150,13922
  3267. ,    0,251243,113268,102230,    0,295413,30501,13944,    0,212636
  3268. ,13952,    0,102257,13953,    0,102258,13954,    0,102259,13955
  3269. ,    0,229200,102263,    0,174011,13960,    0,52594,13961,    0
  3270. ,124345,13965,    0,102272,13968,    0,102273,13969,    0,102276
  3271. ,13972,    0,102287,58135,    0,251301,102288,    0,273416,118884
  3272. ,    0,41635,19559,    0,80331,52736,    0,240385,201752,    0
  3273. ,240434,41750,    0,268056,41777,    0,174235,41779,    0,240477
  3274. ,41793,    0,240478,41794,    0,251523,41801,    0,141151,41809
  3275. ,    0,251556,229480,223961,    0,251572,97040,    0,301275,273680
  3276. ,    0,268221,80575,    0,251727,152385,    0,251728,58563,    0
  3277. ,262788,240712,    0,284880,47563,    0,279421,119370,    0,268388
  3278. ,119375,    0,268397,119384,    0,257360,119385,    0,119393,20051
  3279. ,    0,301524,119397,    0,251873,75265,    0,224281,53192,    0
  3280. ,268438,119425,53197,    0,268440,119427,97351,    0,119452,58743
  3281. ,    0,119461,58752,    0,102907,58755,    0,218883,42275,    0
  3282. ,290640,263045,20209,    0,279605,263048,    0,240991,218915,42307
  3283. ,    0,218916,42308,    0,218917,20233,    0,119577,42311,    0
  3284. ,119580,42314,20238,    0,263075,119581,    0,119582,42316,    0
  3285. ,163735,119583,    0,119585,58876,    0,202373,119588,    0,263084
  3286. ,202375,119590,108552,    0,263087,119593,    0,263088,119594,    0
  3287. ,119596,64406,    0,119598,108560,    0,218946,80971,    0,241040
  3288. ,69951,    0,301772,42379,    0,218994,81019,    0,235555,218998
  3289. ,42390,    0,235557,81025,    0,257635,58951,    0,263168,169345
  3290. ,    0,263169,224536,    0,263171,219019,    0,263172,224539,    0
  3291. ,263176,246619,    0,263177,42417,    0,263178,42418,    0,147280
  3292. ,42419,    0,235587,219030,    0,263183,235588,141765,42423,    0
  3293. ,263185,257666,    0,263186,257667,235591,141768,    0,136255,42432
  3294. ,    0,257676,141777,119701,    0,285279,42443,    0,296323,219057
  3295. ,42449,20373,    0,219058,141792,    0,219073,141807,    0,219074
  3296. ,141808,    0,219075,53505,    0,219077,31431,    0,224601,219082
  3297. ,    0,169413, 3843,    0,219086,169415,    0,296355,219089,    0
  3298. ,219092,197016,    0,197019,97677,    0,257750, 3876,    0,296388
  3299. ,274312,    0,296394,246723,    0,235697,174988,    0,235699,174990
  3300. ,    0,257779,235703, 3905,    0,141883, 3908,    0,257783,25985
  3301. ,    0,141886, 3911,    0,141889, 3914,    0,141891, 3916,    0
  3302. ,246757,141896,    0,235720,141897,    0,235721,141898,    0,235723
  3303. ,169495,    0,257801,235725,    0,257802,235726,141903,    0,257803
  3304. ,235727,    0,235728,141905,114310,42563,    0,257805,235729,141906
  3305. ,114311,    0,257808,235732,    0,279896,42579,    0,279899,246785
  3306. ,    0,296459,246788,    0,246791,108816,    0,246794,197123, 3958
  3307. ,    0,296470,42596,    0,175075,108847,    0,296497,197155, 3990
  3308. ,    0,296498,197156,    0,296499,197157,42625,    0,296523,175105
  3309. ,    0,175106,153030, 4017,    0,296525,175107,153031, 4018,    0
  3310. ,296526,175108,136475, 4019,    0,296527,197185,    0,296528,197186
  3311. ,103363,    0,296529,197187,175111,    0,246859,197188, 4023,    0
  3312. ,296532,175114,    0,175116,153040,    0,197194,136485, 4029,    0
  3313. ,246870, 4034,    0,153048, 4035,    0,130974, 4037,    0,97865
  3314. , 4042,    0,246913,42710,    0,246915,81345,    0,246920,103426
  3315. ,    0,246921,108946,103427,    0,246922,103428,    0,285556,246923
  3316. ,    0,257963,246925,103431,    0,246926,235888,175179,86875,    0
  3317. ,246928,103434,    0,197259,103436,    0,169672,86887,    0,197270
  3318. ,42738,    0,147600,42739,    0,169680,42743,    0,246963,42760
  3319. ,    0,175217,42761,    0,175218,42762,    0,280080,175219,42763
  3320. ,    0,197297,53803,42765,    0,197298,42766,    0,197299,175223
  3321. ,42767,    0,258021,197312,    0,197316,175240,    0,197317,175241
  3322. ,    0,197321,186283,175245, 4156,    0,197322,175246,103499,    0
  3323. ,197323,175247,    0,197325,175249,    0,197328,175252,    0,142145
  3324. ,75917,    0,208400,103539,    0,197363,98021,    0,252560,48357
  3325. ,    0,186341,136670,    0,136674,103560,    0,142194,103561,    0
  3326. ,136676,103562,    0,136679,103565,    0,247061,103567,    0,136689
  3327. ,48385,    0,180847,48391,    0,114620,109101,    0,269185,136729
  3328. ,    0,269186,175363,136730,    0,269187,136731,    0,269194,42915
  3329. ,    0,269196,202968,42917,    0,197473,175397,    0,202996,42945
  3330. ,    0,48470,42951,    0,180936,26404,    0,180944,175425,    0
  3331. ,175434,48497,    0,269259,175436,48499,    0,269270,263751,15396
  3332. ,    0,285840,236169,48523,    0,274817,269298,43019,    0,269320
  3333. ,15446,    0,269322,175499,87195,    0,269323,15449,    0,269325
  3334. ,15451,    0,269326,258288,    0,269327,26491,    0,269328,147910
  3335. ,    0,269329,230696,147911,    0,120323,43057,    0,147920,43059
  3336. ,    0,236237,43072,    0,43080,21004,    0,175537,43081,    0
  3337. ,175538,43082,    0,175539,43083,    0,175543,54125,43087,    0
  3338. ,120355,43089,    0,120356,21014,    0,175563,54145,    0,175572
  3339. ,153496,    0,120388,98312,    0,120391,76239,    0,120394,70723
  3340. ,    0,136967,54182,    0,54191,15558,    0,54192,15559,    0
  3341. ,219764,54194,    0,70757,54200,    0,203231, 4547,    0,70786
  3342. ,48710,    0,181167,70787,48711,    0,120459,70788,    0,137024
  3343. ,70796,    0,137031,54246,    0,137033,54248,    0,137034,54249
  3344. ,    0,137035,54250,    0,137037,54252,    0,137038,54253,    0
  3345. ,137041,54256,    0,120503,43237,    0,297121,120513,    0,120532
  3346. ,43266,    0,175724,43268,    0,70899,54342,    0,76419,54343
  3347. ,    0,109534,76420,54344,    0,70903,54346,    0,208888,59875
  3348. ,    0,104035,70921,    0,104036,70922,    0,104037,70923,    0
  3349. ,54377,43339,    0,280661,37825,    0,37826,15750,    0,37827
  3350. ,15751,    0,59907,43350,37831,    0,59908,54389,    0,54390
  3351. ,15757,    0,54391,37834,    0,59911,54392,    0,104066,59914
  3352. ,    0,120624,104067,    0,104068,59916,    0,120628,109590,104071
  3353. ,    0,148240,43379,    0,197915,43383,    0,197924,43392,    0
  3354. ,59958,43401,    0,208982,43412,    0,275231,59990,    0,60019
  3355. ,37943,    0,236635,104179,    0,231120,104183,    0,71070,60032
  3356. ,    0,198011,60036,37960,    0,60037,37961,    0,302874,71076
  3357. ,37962,    0,302875,37963,    0,115231,60041,37965,    0,60042
  3358. ,37966,    0,60043,37967,    0,60045,37969,    0,104200,60048
  3359. ,37972,    0,104201,60049,    0,142869,71122,    0,203585,71129
  3360. ,    0,203634,21507,    0,43587,21511,    0,109840,54650,    0
  3361. ,264392,220240,    0,264400,60197,    0,280975,209228,    0,176115
  3362. ,43659,    0,192683,60227,43670,    0,176133,104386,60234,    0
  3363. ,176135,104388,60236,    0,192697,148545,    0,281003,148547,    0
  3364. ,165105,148548,104396,    0,247896,21617,    0,192707,21618,    0
  3365. ,192708,21619,    0,43699,21623,    0,236868,43703,    0,60278
  3366. ,43721,    0,43723,21647,    0,43725,21649,    0,303120,43727
  3367. ,    0,192741,43728,    0,270008,43729,    0,43732, 5099,    0
  3368. ,143105,32725,    0,143128,60343,    0,181763,104497,    0,253517
  3369. ,60352,    0,198328,148657,60353,    0,148658,60354,    0,148659
  3370. ,60355,    0,192817,60361,    0,192818,60362,    0,192819,60363
  3371. ,    0,104520,60368,    0,236977,225939,104521,60369,    0,236978
  3372. ,143155,104522,    0,236979,104523,    0,143157,60372,    0,104527
  3373. , 5185,    0,181795,104529,    0,275653,192868,    0,192872,181834
  3374. ,    0,192877,154244,    0,220483,154255,43875,    0,192918,43905
  3375. ,    0,192919,154286,43906,    0,220515,192920,43907,    0,220516
  3376. ,43908,    0,198443,154291,43911,    0,154293,143255,    0,281239
  3377. ,154302,    0,275735,220545,    0,220546,181913,126723,    0,220551
  3378. ,54981,    0,203995,176400,    0,259203,181937,    0,181939,10850
  3379. ,    0,220598,181965,43990,    0,259235,181969,    0,220619,126796
  3380. ,    0,170955,44018,    0,259276,226162,121301,    0,154417,77151
  3381. ,    0,154419,121305,    0,204091,121306,44040,    0,121307,44041
  3382. ,    0,281360,44043,    0,220657,44049,    0,220659,209621,    0
  3383. ,220663,209625,    0,220675,55105,    0,220676,143410,    0,220677
  3384. ,121335,    0,259314,220681,121339,    0,220682,126859,121340,    0
  3385. ,220687,121345,    0,220688,154460,    0,220689,154461,    0,220692
  3386. ,154464,    0,275883,154465,126870,    0,165505,154467,    0,154468
  3387. ,71683,    0,187590,154476,    0,187591,154477,    0,259339,154478
  3388. ,143440,    0,275901,187597,    0,275905,154487,    0,259353,126897
  3389. ,    0,154493,126898,    0,231760,126899,    0,121382,49635,    0
  3390. ,126903,121384,    0,248322,121385,    0,121386,71715,    0,248324
  3391. ,121387,71716,    0,121388,71717,    0,160025,121392,    0,248330
  3392. ,126912,121393,    0,126913,121394,    0,248332,126914,    0,248334
  3393. ,126916,    0,248335,154512,126917,    0,160033,154514,121400,    0
  3394. ,126920,121401,    0,259377,248339,126921,121402,    0,259378,126922
  3395. ,    0,259379,248341,126923, 5505,    0,182115,126925,    0,286977
  3396. ,248344,182116,126926,    0,259383,248345,182117,126927,    0,275941
  3397. ,126928,    0,248353,71745,    0)  ;
  3398.         --| Hash values to check against to verify that
  3399.         --| correct action has been found for this
  3400.         --| parser state and input token.
  3401.         -- NYU Reference Name: ACTION_TABLE2
  3402.      
  3403.     DefaultMap :
  3404.         constant array (DefaultMapRange) of GC.ParserInteger :=
  3405.          ( 1411,    0,    0,    0,    0, 1409,    0, 1233,  953, 1222
  3406. , 1410,    0, 1224,    0, 1417,    0,    0,    0, 1226, 1227
  3407. , 1228, 1229, 1230, 1231,    0,    0,    0,    0, 1225, 1232
  3408. ,    0,    0,    0, 1286, 1105,    0, 1106, 1088,    0, 1087
  3409. , 1049, 1048,    0, 1103, 1104,    0, 1333, 1353, 1089, 1050
  3410. , 1051, 1052, 1092, 1071, 1339, 1074, 1075, 1076, 1077, 1078
  3411. , 1079, 1082, 1083, 1357, 1362, 1360,    0, 1093, 1090, 1091
  3412. ,    0, 1336, 1170, 1171,    0, 1251,    0, 1169, 1185, 1165
  3413. ,    0, 1286, 1164, 1180, 1286, 1286, 1248,    0,    0, 1249
  3414. , 1250,    0, 1235, 1236, 1413, 1412, 1299, 1114,  986, 1298
  3415. ,    0,    0, 1047,    0,    0, 1089, 1319,    0, 1330, 1328
  3416. , 1070,    0, 1355,    0, 1096, 1094, 1098,    0, 1095, 1099
  3417. , 1097, 1080,    0,    0,    0,    0,    0,    0, 1335,    0
  3418. , 1073,    0,    0,    0,    0,    0,    0,    0,    0, 1102
  3419. , 1100, 1101,    0, 1109, 1110, 1107, 1108,    0, 1111, 1084
  3420. ,    0, 1089, 1085, 1358,    0,    0,    0,    0,    0, 1296
  3421. ,    0, 1418, 1186,    0, 1301,    0,    0, 1321, 1030,    0
  3422. , 1386,    0,    0,    0, 1377,    0, 1286,    0,    0, 1287
  3423. ,    0, 1286,    0,    0,    0,    0,    0,    0, 1086,    0
  3424. ,    0, 1026,    0, 1064,    0, 1065, 1330, 1223, 1356, 1334
  3425. , 1013, 1081, 1354,  992, 1062, 1061, 1063, 1060, 1059, 1112
  3426. , 1113,    0, 1055, 1056, 1058, 1057, 1054, 1339, 1337,    0
  3427. ,    0, 1353, 1343,    0, 1345, 1347, 1344, 1346, 1348,    0
  3428. ,    0, 1359, 1361, 1363,    0, 1167, 1298,    0, 1384,    0
  3429. , 1419,  970, 1175,    0, 1384,    0,    0, 1303,    0,    0
  3430. ,    0,    0,    0,    0,  954, 1032,  955,  956,  957,  958
  3431. ,  959,  960,  961,  962,  963,  964,    0,  971,  972,  973
  3432. , 1286, 1286, 1033, 1034, 1042, 1043, 1044, 1045, 1046,    0
  3433. ,    0,    0, 1274, 1275, 1276, 1277, 1290, 1152, 1387, 1388
  3434. ,    0,    0, 1377,    0, 1286,    0,    0, 1377, 1378,    0
  3435. ,    0, 1234,  953,    0, 1389, 1414,    0, 1117, 1116, 1300
  3436. , 1342, 1338, 1332, 1325, 1328, 1069, 1025,    0,    0, 1326
  3437. , 1328, 1331,    0, 1068,    0,    0, 1053, 1072, 1341, 1340
  3438. , 1349, 1351, 1350, 1352,    0, 1175,    0, 1173,    0,    0
  3439. ,    0,    0,    0,    0, 1176, 1294,    0,    0,    0, 1241
  3440. ,    0, 1302,    0,    0, 1268, 1047,    0, 1052, 1169,    0
  3441. ,    0,    0, 1197,    0,    0, 1323, 1031, 1322, 1286,    0
  3442. , 1286, 1196,    0,    0, 1178,    0, 1264, 1181,    0,    0
  3443. ,    0, 1184, 1237,  952,    0,    0, 1115, 1330, 1024, 1320
  3444. , 1327, 1330, 1329, 1014,  993,    0, 1266, 1174, 1294,    0
  3445. ,    0,    0,    0,    0,    0,    0, 1261,    0,    0, 1006
  3446. , 1262, 1263, 1005,    0,    0, 1315, 1421, 1420, 1255, 1297
  3447. , 1177,    0,    0, 1166,    0, 1286,    0,    0, 1273, 1422
  3448. , 1270,    0, 1424, 1304,    0,    0,    0,    0,    0,    0
  3449. , 1198, 1286,    0,    0, 1028,    0,    0,    0, 1294, 1294
  3450. ,  984, 1036, 1037, 1038, 1039, 1041, 1035, 1040, 1286,    0
  3451. ,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
  3452. ,    0,    0,    0, 1290, 1047,    0, 1291,    0, 1290, 1119
  3453. , 1120,    0, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130
  3454. , 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1366,    0
  3455. ,    0, 1206, 1207, 1208, 1153, 1292, 1422, 1377, 1183,    0
  3456. ,    0, 1191, 1067, 1066, 1422, 1172,    0, 1385, 1027,  984
  3457. ,    0,    0, 1259, 1258, 1260, 1257,    0, 1253,    0,    0
  3458. , 1295, 1252,    0,    0,    0,    0, 1286,    0,    0,    0
  3459. ,    0,    0, 1286, 1286, 1391, 1393,    0,    0,    0,    0
  3460. ,    0, 1286,    0,    0,  976,  977,  978,  979,  980,  981
  3461. ,  982,  998,  999, 1000, 1307, 1307, 1315,    0,    0, 1294
  3462. , 1294,    0, 1242,    0,    0,    0,    0,  985,  987,  988
  3463. ,  989, 1324, 1238, 1195, 1239, 1407, 1399,    0,    0,    0
  3464. , 1157,    0,    0, 1143, 1369,    0, 1140, 1246,    0, 1161
  3465. ,    0,    0, 1403,    0,    0,    0, 1179,    0, 1364,    0
  3466. , 1121, 1122, 1367,    0, 1290,    0,    0, 1286, 1377,    0
  3467. ,    0,    0, 1182,    0, 1390,    0, 1168, 1309, 1089, 1311
  3468. , 1012,    0, 1256, 1294,    0,    0, 1286,    0,    0, 1425
  3469. ,    0,    0, 1426,    0, 1286,    0, 1279, 1278, 1194,  983
  3470. ,    0, 1377, 1393,    0,    0, 1286, 1004, 1002,    0,  991
  3471. , 1189,    0,    0, 1313,  996,  997, 1305,  995,  974, 1308
  3472. , 1001, 1003,    0, 1089,    0,    0,    0,    0,  965,  967
  3473. ,    0,    0,    0,    0,    0, 1292, 1205,    0,    0, 1159
  3474. , 1163, 1371, 1290, 1247, 1162,    0,    0,    0, 1290, 1290
  3475. , 1290, 1211, 1212, 1213, 1214, 1371, 1139,    0,    0, 1290
  3476. ,    0,    0, 1149, 1290, 1377,    0,    0, 1293, 1382, 1381
  3477. , 1154,    0,  951,    0,    0,    0, 1011,    0, 1008, 1020
  3478. ,    0, 1316, 1269, 1423, 1284,    0,    0,    0, 1286,    0
  3479. , 1240,    0,    0, 1395, 1377, 1286, 1392, 1187, 1286,    0
  3480. ,    0,    0,    0,  969,  966,  968, 1193, 1192,  990,    0
  3481. , 1220,    0,    0, 1384, 1290, 1203,    0, 1158,    0, 1290
  3482. ,    0,    0, 1368, 1290,    0,    0, 1406, 1216,    0, 1215
  3483. , 1290,    0, 1285, 1141, 1365,    0,    0,    0,    0, 1156
  3484. , 1245, 1244, 1415, 1383, 1265, 1267,    0,    0, 1009, 1010
  3485. ,    0,    0,    0,    0,    0, 1427,    0, 1201, 1377,    0
  3486. ,    0, 1199, 1394, 1018, 1015,    0,    0, 1286, 1286,  994
  3487. ,    0,    0, 1029, 1408, 1401,    0,    0,    0, 1373, 1160
  3488. , 1372,    0,    0, 1217,    0, 1290, 1290,    0, 1404,    0
  3489. ,    0, 1150, 1377,    0, 1155,    0,    0, 1310,    0, 1312
  3490. , 1254, 1283, 1280,    0,    0, 1200,    0, 1384, 1202,    0
  3491. ,    0,    0, 1017, 1306,    0,    0,    0,    0, 1400, 1377
  3492. ,    0, 1319,    0, 1290,    0, 1210,    0,    0,    0, 1151
  3493. ,    0, 1377,    0, 1290, 1007,    0,    0, 1281, 1397,    0
  3494. , 1288, 1294,    0, 1190,  975, 1384,    0, 1290,    0,    0
  3495. , 1374, 1370, 1142,    0,    0, 1209, 1147,    0, 1416, 1243
  3496. , 1282,    0, 1396,    0,    0, 1188,    0, 1204, 1146, 1290
  3497. ,    0,    0,    0, 1148, 1384,    0, 1289, 1317, 1019, 1402
  3498. , 1145, 1144, 1218,    0,    0,    0, 1319,    0, 1219, 1398
  3499. , 1286,    0,    0, 1318, 1023, 1286,    0, 1022, 1021)  ;
  3500.         --| Map of states (constant array ) to default reductions.
  3501.         -- NYU Reference Name: DEFAULT
  3502.      
  3503.     type FollowSymbolIndexArray is array ( PositiveParserInteger range <>)
  3504.         of GC.ParserInteger ;
  3505.      
  3506.     FollowSymbolMapIndex : constant FollowSymbolIndexArray :=
  3507.          (    1,    1,    2,    2,    3,    4,    5,    5,    6,   45
  3508. ,   46,   59,   60,   73,   74,   87,   88,  101,  102,  115
  3509. ,  116,  132,  133,  149,  150,  163,  164,  180,  181,  194
  3510. ,  195,  211,  212,  225,  226,  226,  227,  228,  229,  230
  3511. ,  231,  232,  233,  239,  240,  241,  242,  255,  256,  269
  3512. ,  270,  283,  284,  284,  285,  286,  287,  288,  289,  289
  3513. ,  290,  290,  291,  291,  292,  292,  293,  293,  294,  294
  3514. ,  295,  295,  296,  329,  330,  331,  332,  365,  366,  372
  3515. ,  373,  374,  375,  376,  377,  398,  399,  400,  401,  402
  3516. ,  403,  404,  405,  407,  408,  409,  410,  412,  413,  413
  3517. ,  414,  415,  416,  417,  418,  418,  419,  452,  453,  455
  3518. ,  456,  457,  458,  467,  468,  469,  470,  490,  491,  492
  3519. ,  493,  497,  498,  500,  501,  502,  503,  504,  505,  506
  3520. ,  507,  508,  509,  510,  511,  523,  524,  525,  526,  534
  3521. ,  535,  542,  543,  556,  557,  570,  571,  586,  587,  595
  3522. ,  596,  607,  608,  616,  617,  628,  629,  640,  641,  652
  3523. ,  653,  686,  687,  720,  721,  755,  756,  789,  790,  824
  3524. ,  825,  825,  826,  855,  856,  857,  858,  858,  859,  860
  3525. ,  861,  862,  863,  863,  864,  865,  866,  867,  868,  869
  3526. ,  870,  879,  880,  887,  888,  895,  896,  903,  904,  911
  3527. ,  912,  919,  920,  929,  930,  940,  941,  965,  966,  994
  3528. ,  995, 1019, 1020, 1049, 1050, 1078, 1079, 1107, 1108, 1114
  3529. , 1115, 1144, 1145, 1174, 1175, 1204, 1205, 1215, 1216, 1224
  3530. , 1225, 1233, 1234, 1242, 1243, 1249, 1250, 1286, 1287, 1314
  3531. , 1315, 1341, 1342, 1367, 1368, 1373, 1374, 1400, 1401, 1427
  3532. , 1428, 1447, 1448, 1474, 1475, 1501, 1502, 1528, 1529, 1555
  3533. , 1556, 1582, 1583, 1609, 1610, 1636, 1637, 1663, 1664, 1690
  3534. , 1691, 1717, 1718, 1744, 1745, 1771, 1772, 1798, 1799, 1825
  3535. , 1826, 1852, 1853, 1879, 1880, 1899, 1900, 1902, 1903, 1905
  3536. , 1906, 1906, 1907, 1910, 1911, 1912, 1913, 1914, 1915, 1916
  3537. , 1917, 1919, 1920, 1920, 1921, 1921, 1922, 1924, 1925, 1927
  3538. , 1928, 1928, 1929, 1930, 1931, 1933, 1934, 1937, 1938, 1939
  3539. , 1940, 1941, 1942, 1944, 1945, 1945, 1946, 1946, 1947, 1947
  3540. , 1948, 1948, 1949, 1949, 1950, 1950, 1951, 1952, 1953, 1953
  3541. , 1954, 1956, 1957, 1958, 1959, 1959, 1960, 1963, 1964, 1965
  3542. , 1966, 1992, 1993, 2019, 2020, 2046, 2047, 2049, 2050, 2052
  3543. , 2053, 2055, 2056, 2058, 2059, 2061, 2062, 2064, 2065, 2067
  3544. , 2068, 2069, 2070, 2077, 2078, 2079, 2080, 2087, 2088, 2092
  3545. , 2093, 2100, 2101, 2108, 2109, 2114, 2115, 2116, 2117, 2118
  3546. , 2119, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134
  3547. , 2135, 2135, 2136, 2138, 2139, 2144, 2145, 2150, 2151, 2151
  3548. , 2152, 2152, 2153, 2155, 2156, 2157, 2158, 2159, 2160, 2161
  3549. , 2162, 2162, 2163, 2164, 2165, 2178, 2179, 2192, 2193, 2206
  3550. , 2207, 2220, 2221, 2224, 2225, 2229, 2230, 2234, 2235, 2236
  3551. , 2237, 2238, 2239, 2240, 2241, 2247)  ;
  3552.      
  3553.     FollowSymbolMap : constant FollowSymbolArray :=
  3554.          (   96,   96,   71,   80,   72,    2,    4,   10,   12,   14
  3555. ,   15,   19,   20,   21,   22,   23,   24,   25,   26,   27
  3556. ,   28,   29,   33,   37,   39,   42,   43,   44,   45,   46
  3557. ,   51,   53,   54,   55,   56,   57,   59,   60,   61,   62
  3558. ,   63,   65,   67,   68,   92,   10,   21,   25,   26,   27
  3559. ,   42,   43,   44,   45,   55,   56,   59,   60,   65,   10
  3560. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  3561. ,   59,   60,   65,   10,   21,   25,   26,   27,   42,   43
  3562. ,   44,   45,   55,   56,   59,   60,   65,   10,   21,   25
  3563. ,   26,   27,   42,   43,   44,   45,   55,   56,   59,   60
  3564. ,   65,   10,   21,   25,   26,   27,   42,   43,   44,   45
  3565. ,   55,   56,   59,   60,   65,   10,   21,   25,   26,   27
  3566. ,   42,   43,   44,   45,   54,   55,   56,   59,   60,   63
  3567. ,   65,   96,   10,   21,   25,   26,   27,   42,   43,   44
  3568. ,   45,   54,   55,   56,   59,   60,   63,   65,   96,   10
  3569. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  3570. ,   59,   60,   65,   10,   21,   25,   26,   27,   42,   43
  3571. ,   44,   45,   54,   55,   56,   59,   60,   63,   65,   96
  3572. ,   10,   21,   25,   26,   27,   42,   43,   44,   45,   55
  3573. ,   56,   59,   60,   65,   10,   21,   25,   26,   27,   42
  3574. ,   43,   44,   45,   54,   55,   56,   59,   60,   63,   65
  3575. ,   96,   10,   21,   25,   26,   27,   42,   43,   44,   45
  3576. ,   55,   56,   59,   60,   65,   79,   80,   88,   72,   80
  3577. ,   80,   88,   31,   33,   58,   72,   75,   80,   85,   75
  3578. ,   79,   10,   21,   25,   26,   27,   42,   43,   44,   45
  3579. ,   55,   56,   59,   60,   65,   10,   21,   25,   26,   27
  3580. ,   42,   43,   44,   45,   55,   56,   59,   60,   65,   10
  3581. ,   21,   25,   26,   27,   42,   43,   44,   45,   55,   56
  3582. ,   59,   60,   65,   80,   72,   80,   72,   80,   80,   80
  3583. ,   80,   80,   80,   80,   80,    7,   16,   17,   30,   31
  3584. ,   33,   34,   36,   39,   47,   49,   50,   58,   64,   69
  3585. ,   71,   72,   73,   74,   75,   76,   78,   80,   81,   82
  3586. ,   83,   84,   85,   86,   87,   88,   89,   90,   91,   80
  3587. ,   88,    7,   16,   17,   30,   31,   33,   34,   36,   39
  3588. ,   47,   49,   50,   58,   64,   69,   71,   72,   73,   74
  3589. ,   75,   76,   78,   80,   81,   82,   83,   84,   85,   86
  3590. ,   87,   88,   89,   90,   91,   33,   72,   75,   80,   84
  3591. ,   85,   88,   80,   88,   80,   88,    7,   30,   31,   33
  3592. ,   36,   39,   47,   58,   64,   72,   75,   80,   81,   82
  3593. ,   83,   84,   85,   86,   88,   89,   90,   91,   72,   75
  3594. ,   72,   75,   72,   75,   47,   80,   88,   80,   88,   47
  3595. ,   80,   88,   80,   72,   75,   72,   75,   38,    7,    9
  3596. ,   30,   31,   33,   34,   36,   39,   47,   49,   58,   64
  3597. ,   69,   70,   71,   72,   73,   74,   75,   76,   77,   78
  3598. ,   80,   81,   82,   83,   84,   85,   86,   87,   88,   89
  3599. ,   90,   91,   33,   72,   75,   72,   75,    7,   31,   33
  3600. ,   39,   58,   64,   72,   75,   80,   85,   21,   61,   10
  3601. ,   12,   21,   22,   25,   26,   27,   42,   43,   44,   45
  3602. ,   54,   55,   56,   59,   60,   61,   63,   65,   67,   68
  3603. ,   12,   65,   12,   21,   43,   61,   65,   21,   43,   61
  3604. ,   43,   61,   21,   61,   21,   61,   84,   85,   84,   85
  3605. ,   10,   21,   25,   26,   27,   42,   44,   45,   55,   56
  3606. ,   59,   60,   65,   10,   21,   10,   21,   26,   27,   42
  3607. ,   43,   45,   56,   60,   10,   21,   26,   27,   42,   45
  3608. ,   56,   60,   10,   21,   25,   26,   27,   42,   43,   44
  3609. ,   45,   55,   56,   59,   60,   65,   10,   21,   25,   26
  3610. ,   27,   42,   43,   44,   45,   55,   56,   59,   60,   65
  3611. ,   10,   21,   25,   26,   27,   42,   43,   44,   45,   54
  3612. ,   55,   56,   59,   60,   63,   65,   10,   21,   26,   27
  3613. ,   42,   43,   45,   56,   60,   10,   21,   26,   27,   42
  3614. ,   43,   45,   54,   56,   60,   63,   96,   10,   21,   26
  3615. ,   27,   42,   43,   45,   56,   60,   10,   21,   26,   27
  3616. ,   42,   43,   45,   54,   56,   60,   63,   96,   10,   21
  3617. ,   26,   27,   42,   43,   45,   54,   56,   60,   63,   96
  3618. ,   10,   21,   26,   27,   42,   43,   45,   54,   56,   60
  3619. ,   63,   96,    7,    9,   30,   31,   33,   34,   36,   39
  3620. ,   47,   49,   58,   64,   69,   70,   71,   72,   73,   74
  3621. ,   75,   76,   77,   78,   80,   81,   82,   83,   84,   85
  3622. ,   86,   87,   88,   89,   90,   91,    7,    9,   30,   31
  3623. ,   33,   34,   36,   39,   47,   49,   58,   64,   69,   70
  3624. ,   71,   72,   73,   74,   75,   76,   77,   78,   80,   81
  3625. ,   82,   83,   84,   85,   86,   87,   88,   89,   90,   91
  3626. ,    7,    9,   30,   31,   33,   34,   36,   39,   47,   49
  3627. ,   58,   60,   64,   69,   70,   71,   72,   73,   74,   75
  3628. ,   76,   77,   78,   80,   81,   82,   83,   84,   85,   86
  3629. ,   87,   88,   89,   90,   91,    7,    9,   30,   31,   33
  3630. ,   34,   36,   39,   47,   49,   58,   64,   69,   70,   71
  3631. ,   72,   73,   74,   75,   76,   77,   78,   80,   81,   82
  3632. ,   83,   84,   85,   86,   87,   88,   89,   90,   91,    7
  3633. ,    9,   30,   31,   33,   34,   36,   39,   47,   49,   58
  3634. ,   60,   64,   69,   70,   71,   72,   73,   74,   75,   76
  3635. ,   77,   78,   80,   81,   82,   83,   84,   85,   86,   87
  3636. ,   88,   89,   90,   91,   72,    7,   30,   31,   33,   34
  3637. ,   36,   39,   47,   49,   58,   64,   69,   72,   73,   74
  3638. ,   75,   76,   78,   80,   81,   82,   83,   84,   85,   86
  3639. ,   87,   88,   89,   90,   91,   72,   75,   72,   72,   75
  3640. ,   72,   75,   72,   72,   75,   72,   75,   72,   75,    7
  3641. ,   31,   33,   39,   58,   64,   72,   75,   80,   85,    7
  3642. ,   31,   33,   58,   72,   75,   80,   85,   31,   33,   39
  3643. ,   58,   72,   75,   80,   85,   31,   33,   58,   64,   72
  3644. ,   75,   80,   85,    7,   31,   33,   58,   72,   75,   80
  3645. ,   85,   31,   33,   39,   58,   72,   75,   80,   85,    7
  3646. ,   31,   33,   39,   58,   64,   72,   75,   80,   85,    3
  3647. ,   35,   36,   37,   65,   66,   67,   68,   71,   74,   76
  3648. ,    7,   30,   31,   33,   36,   39,   47,   58,   64,   69
  3649. ,   72,   74,   75,   76,   80,   81,   82,   83,   84,   85
  3650. ,   86,   88,   89,   90,   91,    7,   30,   31,   33,   34
  3651. ,   36,   39,   47,   49,   58,   64,   69,   72,   73,   74
  3652. ,   75,   76,   78,   80,   81,   82,   83,   84,   85,   86
  3653. ,   88,   89,   90,   91,    7,   30,   31,   33,   36,   39
  3654. ,   47,   58,   64,   69,   72,   74,   75,   76,   80,   81
  3655. ,   82,   83,   84,   85,   86,   88,   89,   90,   91,    7
  3656. ,   30,   31,   33,   34,   36,   39,   47,   49,   58,   64
  3657. ,   69,   72,   73,   74,   75,   76,   78,   80,   81,   82
  3658. ,   83,   84,   85,   86,   87,   88,   89,   90,   91,    7
  3659. ,   30,   31,   33,   34,   36,   39,   47,   49,   58,   64
  3660. ,   69,   72,   73,   74,   75,   76,   78,   80,   81,   82
  3661. ,   83,   84,   85,   86,   88,   89,   90,   91,    7,   30
  3662. ,   31,   33,   34,   36,   39,   47,   49,   58,   64,   69
  3663. ,   72,   73,   74,   75,   76,   78,   80,   81,   82,   83
  3664. ,   84,   85,   86,   88,   89,   90,   91,   35,   37,   65
  3665. ,   66,   67,   68,   71,    7,   30,   31,   33,   34,   36
  3666. ,   39,   47,   49,   58,   64,   69,   72,   73,   74,   75
  3667. ,   76,   78,   80,   81,   82,   83,   84,   85,   86,   87
  3668. ,   88,   89,   90,   91,    7,   30,   31,   33,   34,   36
  3669. ,   39,   47,   49,   58,   64,   69,   72,   73,   74,   75
  3670. ,   76,   78,   80,   81,   82,   83,   84,   85,   86,   87
  3671. ,   88,   89,   90,   91,    7,   30,   31,   33,   34,   36
  3672. ,   39,   47,   49,   58,   64,   69,   72,   73,   74,   75
  3673. ,   76,   78,   80,   81,   82,   83,   84,   85,   86,   87
  3674. ,   88,   89,   90,   91,    3,   35,   36,   37,   65,   66
  3675. ,   67,   68,   71,   74,   76,    3,   35,   36,   37,   65
  3676. ,   66,   67,   68,   71,    3,   35,   36,   37,   65,   66
  3677. ,   67,   68,   71,    3,   35,   36,   37,   65,   66,   67
  3678. ,   68,   71,   35,   37,   65,   66,   67,   68,   71,    7
  3679. ,   16,   17,   30,   31,   33,   34,   36,   39,   47,   49
  3680. ,   50,   58,   61,   64,   69,   70,   71,   72,   73,   74
  3681. ,   75,   76,   77,   78,   80,   81,   82,   83,   84,   85
  3682. ,   86,   87,   88,   89,   90,   91,    2,    4,   10,   12
  3683. ,   14,   15,   19,   20,   21,   23,   24,   25,   28,   29
  3684. ,   33,   37,   39,   43,   46,   51,   53,   57,   61,   62
  3685. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  3686. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  3687. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  3688. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  3689. ,   23,   24,   25,   28,   29,   33,   37,   39,   46,   51
  3690. ,   53,   61,   62,   65,   67,   68,   92,   19,   20,   21
  3691. ,   23,   39,   61,    2,    4,   10,   12,   14,   15,   19
  3692. ,   20,   21,   23,   24,   25,   28,   29,   33,   37,   39
  3693. ,   43,   46,   51,   53,   61,   62,   65,   67,   68,   92
  3694. ,    2,    4,   10,   12,   14,   15,   19,   20,   21,   23
  3695. ,   24,   25,   28,   29,   33,   37,   39,   43,   46,   51
  3696. ,   53,   61,   62,   65,   67,   68,   92,    2,    4,   10
  3697. ,   12,   14,   15,   24,   25,   28,   29,   33,   37,   46
  3698. ,   51,   53,   62,   65,   67,   68,   92,    2,    4,   10
  3699. ,   12,   14,   15,   19,   20,   21,   23,   24,   25,   28
  3700. ,   29,   33,   37,   39,   43,   46,   51,   53,   61,   62
  3701. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  3702. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  3703. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  3704. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  3705. ,   23,   24,   25,   28,   29,   33,   37,   39,   43,   46
  3706. ,   51,   53,   61,   62,   65,   67,   68,   92,    2,    4
  3707. ,   10,   12,   14,   15,   19,   20,   21,   23,   24,   25
  3708. ,   28,   29,   33,   37,   39,   43,   46,   51,   53,   61
  3709. ,   62,   65,   67,   68,   92,    2,    4,   10,   12,   14
  3710. ,   15,   19,   20,   21,   23,   24,   25,   28,   29,   33
  3711. ,   37,   39,   43,   46,   51,   53,   61,   62,   65,   67
  3712. ,   68,   92,    2,    4,   10,   12,   14,   15,   19,   20
  3713. ,   21,   23,   24,   25,   28,   29,   33,   37,   39,   43
  3714. ,   46,   51,   53,   61,   62,   65,   67,   68,   92,    2
  3715. ,    4,   10,   12,   14,   15,   19,   20,   21,   23,   24
  3716. ,   25,   28,   29,   33,   37,   39,   43,   46,   51,   53
  3717. ,   61,   62,   65,   67,   68,   92,    2,    4,   10,   12
  3718. ,   14,   15,   19,   20,   21,   23,   24,   25,   28,   29
  3719. ,   33,   37,   39,   43,   46,   51,   53,   61,   62,   65
  3720. ,   67,   68,   92,    2,    4,   10,   12,   14,   15,   19
  3721. ,   20,   21,   23,   24,   25,   28,   29,   33,   37,   39
  3722. ,   43,   46,   51,   53,   61,   62,   65,   67,   68,   92
  3723. ,    2,    4,   10,   12,   14,   15,   19,   20,   21,   23
  3724. ,   24,   25,   28,   29,   33,   37,   39,   43,   46,   51
  3725. ,   53,   61,   62,   65,   67,   68,   92,    2,    4,   10
  3726. ,   12,   14,   15,   19,   20,   21,   23,   24,   25,   28
  3727. ,   29,   33,   37,   39,   43,   46,   51,   53,   61,   62
  3728. ,   65,   67,   68,   92,    2,    4,   10,   12,   14,   15
  3729. ,   19,   20,   21,   23,   24,   25,   28,   29,   33,   37
  3730. ,   39,   43,   46,   51,   53,   61,   62,   65,   67,   68
  3731. ,   92,    2,    4,   10,   12,   14,   15,   19,   20,   21
  3732. ,   23,   24,   25,   28,   29,   33,   37,   39,   43,   46
  3733. ,   51,   53,   61,   62,   65,   67,   68,   92,    2,    4
  3734. ,   10,   12,   14,   15,   19,   20,   21,   23,   24,   25
  3735. ,   28,   29,   33,   37,   39,   43,   46,   51,   53,   61
  3736. ,   62,   65,   67,   68,   92,    2,    4,   10,   12,   14
  3737. ,   15,   19,   20,   21,   23,   24,   25,   28,   29,   33
  3738. ,   37,   39,   43,   46,   51,   53,   61,   62,   65,   67
  3739. ,   68,   92,    2,    4,   10,   12,   14,   15,   19,   20
  3740. ,   21,   23,   24,   25,   28,   29,   33,   37,   39,   43
  3741. ,   46,   51,   53,   61,   62,   65,   67,   68,   92,    2
  3742. ,    4,   10,   12,   14,   15,   24,   25,   28,   29,   33
  3743. ,   37,   46,   51,   53,   62,   65,   67,   68,   92,   19
  3744. ,   20,   21,   19,   20,   21,   21,   33,   58,   80,   85
  3745. ,   43,   61,   21,   61,   21,   61,   25,   33,   62,   80
  3746. ,   33,   65,   67,   80,   65,   67,   80,   21,   10,   14
  3747. ,   31,   50,   80,   31,   50,   71,   80,   72,   80,   72
  3748. ,   80,   31,   51,   71,   65,   65,   80,   80,   31,   31
  3749. ,   75,   80,   80,   21,   22,   25,   21,   25,   80,   21
  3750. ,   22,   25,   43,   18,   80,    2,    4,   10,   12,   14
  3751. ,   15,   19,   20,   21,   23,   24,   25,   28,   29,   33
  3752. ,   37,   39,   43,   46,   51,   53,   61,   62,   65,   67
  3753. ,   68,   92,    2,    4,   10,   12,   14,   15,   19,   20
  3754. ,   21,   23,   24,   25,   28,   29,   33,   37,   39,   43
  3755. ,   46,   51,   53,   61,   62,   65,   67,   68,   92,    2
  3756. ,    4,   10,   12,   14,   15,   19,   20,   21,   23,   24
  3757. ,   25,   28,   29,   33,   37,   39,   43,   46,   51,   53
  3758. ,   61,   62,   65,   67,   68,   92,   19,   21,   39,   19
  3759. ,   21,   39,   19,   21,   39,   19,   21,   39,   19,   21
  3760. ,   39,   19,   21,   39,   19,   21,   39,   75,   80,   26
  3761. ,   27,   42,   43,   45,   54,   63,   96,   71,   80,   26
  3762. ,   27,   42,   43,   45,   54,   63,   96,   26,   27,   42
  3763. ,   45,   54,   26,   27,   42,   43,   45,   54,   63,   96
  3764. ,   26,   27,   42,   43,   45,   54,   63,   96,   26,   27
  3765. ,   42,   45,   54,   63,   75,   80,   75,   80,   26,   27
  3766. ,   42,   43,   45,   54,   60,   63,   72,   77,   84,   85
  3767. ,   84,   85,   21,   61,   80,   26,   42,   45,   26,   42
  3768. ,   45,   59,   63,   65,   26,   42,   45,   59,   63,   65
  3769. ,   80,   80,   71,   77,   80,   72,   75,   72,   75,   72
  3770. ,   75,   85,   72,   75,   10,   21,   25,   26,   27,   42
  3771. ,   43,   44,   45,   55,   56,   59,   60,   65,   10,   21
  3772. ,   25,   26,   27,   42,   43,   44,   45,   55,   56,   59
  3773. ,   60,   65,   10,   21,   25,   26,   27,   42,   43,   44
  3774. ,   45,   55,   56,   59,   60,   65,   10,   21,   25,   26
  3775. ,   27,   42,   43,   44,   45,   55,   56,   59,   60,   65
  3776. ,   21,   65,   67,   68,   21,   43,   65,   67,   68,   21
  3777. ,   43,   65,   67,   68,   72,   75,   84,   85,   21,   61
  3778. ,   26,   27,   42,   45,   54,   60,   63)  ;
  3779.         --| Map of states to sets of follow symbols
  3780.         -- NYU Reference Name: FOLLOW
  3781.      
  3782.     ------------------------------------------------------------------
  3783.     -- Action_Token_Map
  3784.     ------------------------------------------------------------------
  3785.      
  3786.      
  3787.     type Action_Token_Array_Index is array(
  3788.         PositiveParserInteger range <>) of GC.ParserInteger ;
  3789.         --| For indexing the All Action Token Array.
  3790.         --| Maps a given state into the lower and upper bounds of a slice
  3791.         --| of the All Action Index Array.
  3792.      
  3793.     Action_Token_MapIndex : constant Action_Token_Array_Index :=
  3794.          (    1,    1,    2,    2,    3,    2,    3,    9,   10,   11
  3795. ,   12,   11,   12,   16,   17,   17,   18,   17,   18,   17
  3796. ,   18,   17,   18,   28,   29,   28,   29,   30,   31,   30
  3797. ,   31,   32,   33,   33,   34,   34,   35,   34,   35,   34
  3798. ,   35,   34,   35,   34,   35,   34,   35,   34,   35,   36
  3799. ,   37,   37,   38,   38,   39,   39,   40,   39,   40,   39
  3800. ,   40,   40,   41,   43,   44,   44,   45,   44,   45,   44
  3801. ,   45,   45,   46,   45,   46,   45,   46,   73,   74,   73
  3802. ,   74,   73,   74,   73,   74,   85,   86,   85,   86,   85
  3803. ,   86,   86,   87,   86,   87,   95,   96,   99,  100,   99
  3804. ,  100,   99,  100,   99,  100,   99,  100,  100,  101,  100
  3805. ,  101,  103,  104,  104,  105,  105,  106,  106,  107,  107
  3806. ,  108,  108,  109,  111,  112,  115,  116,  115,  116,  116
  3807. ,  117,  116,  117,  123,  124,  123,  124,  123,  124,  123
  3808. ,  124,  132,  133,  132,  133,  132,  133,  132,  133,  135
  3809. ,  136,  138,  139,  139,  140,  139,  140,  139,  140,  140
  3810. ,  141,  141,  142,  142,  143,  142,  143,  142,  143,  143
  3811. ,  144,  143,  144,  143,  144,  145,  146,  146,  147,  146
  3812. ,  147,  146,  147,  147,  148,  147,  148,  147,  148,  148
  3813. ,  149,  149,  150,  149,  150,  150,  151,  150,  151,  152
  3814. ,  153,  154,  155,  155,  156,  155,  156,  157,  158,  173
  3815. ,  174,  177,  178,  177,  178,  178,  179,  179,  180,  179
  3816. ,  180,  179,  180,  180,  181,  180,  181,  181,  182,  181
  3817. ,  182,  181,  182,  181,  182,  192,  193,  192,  193,  192
  3818. ,  193,  192,  193,  192,  193,  203,  204,  214,  215,  225
  3819. ,  226,  230,  231,  241,  242,  245,  246,  245,  246,  256
  3820. ,  257,  257,  258,  269,  270,  281,  282,  292,  293,  303
  3821. ,  304,  314,  315,  325,  326,  326,  327,  327,  328,  327
  3822. ,  328,  327,  328,  327,  328,  336,  337,  336,  337,  336
  3823. ,  337,  336,  337,  336,  337,  345,  346,  345,  346,  345
  3824. ,  346,  352,  353,  355,  356,  355,  356,  355,  356,  356
  3825. ,  357,  357,  358,  358,  359,  359,  360,  361,  362,  361
  3826. ,  362,  362,  363,  362,  363,  362,  363,  363,  364,  363
  3827. ,  364,  365,  366,  366,  367,  367,  368,  377,  378,  378
  3828. ,  379,  380,  381,  381,  382,  393,  394,  395,  396,  396
  3829. ,  397,  398,  399,  398,  399,  400,  401,  401,  402,  401
  3830. ,  402,  402,  403,  402,  403,  413,  414,  414,  415,  415
  3831. ,  416,  416,  417,  427,  428,  438,  439,  438,  439,  450
  3832. ,  451,  461,  462,  461,  462,  463,  464,  463,  464,  475
  3833. ,  476,  475,  476,  476,  477,  476,  477,  476,  477,  476
  3834. ,  477,  477,  478,  477,  478,  477,  478,  478,  479,  478
  3835. ,  479,  478,  479,  478,  479,  478,  479,  478,  479,  478
  3836. ,  479,  478,  479,  479,  480,  479,  480,  479,  480,  479
  3837. ,  480,  479,  480,  479,  480,  479,  480,  479,  480,  480
  3838. ,  481,  491,  492,  499,  500,  499,  500,  510,  511,  510
  3839. ,  511,  510,  511,  510,  511,  510,  511,  510,  511,  521
  3840. ,  522,  532,  533,  532,  533,  532,  533,  532,  533,  533
  3841. ,  534,  533,  534,  534,  535,  535,  536,  535,  536,  537
  3842. ,  538,  538,  539,  539,  540,  540,  541,  541,  542,  541
  3843. ,  542,  545,  546,  546,  547,  546,  547,  549,  550,  552
  3844. ,  553,  554,  555,  555,  556,  558,  559,  559,  560,  559
  3845. ,  560,  559,  560,  559,  560,  559,  560,  559,  560,  559
  3846. ,  560,  559,  560,  559,  560,  559,  560,  559,  560,  559
  3847. ,  560,  559,  560,  560,  561,  560,  561,  560,  561,  560
  3848. ,  561,  560,  561,  560,  561,  560,  561,  560,  561,  560
  3849. ,  561,  560,  561,  560,  561,  560,  561,  560,  561,  563
  3850. ,  564,  564,  565,  565,  566,  565,  566,  565,  566,  565
  3851. ,  566,  565,  566,  565,  566,  565,  566,  565,  566,  565
  3852. ,  566,  566,  567,  569,  570,  570,  571,  571,  572,  571
  3853. ,  572,  573,  574,  576,  577,  577,  578,  577,  578,  578
  3854. ,  579,  579,  580,  579,  580,  580,  581,  581,  582,  582
  3855. ,  583,  583,  584,  584,  585,  584,  585,  584,  585,  584
  3856. ,  585,  584,  585,  584,  585,  584,  585,  584,  585,  584
  3857. ,  585,  584,  585,  584,  585,  595,  596,  606,  607,  606
  3858. ,  607,  606,  607,  606,  607,  618,  619,  618,  619,  629
  3859. ,  630,  640,  641,  640,  641,  641,  642,  641,  642,  641
  3860. ,  642,  641,  642,  641,  642,  641,  642,  641,  642,  644
  3861. ,  645,  646,  647,  647,  648,  647,  648,  649,  650,  657
  3862. ,  658,  658,  659,  662,  663,  663,  664,  664,  665,  665
  3863. ,  666,  666,  667,  668,  669,  669,  670,  670,  671,  670
  3864. ,  671,  671,  672,  671,  672,  682,  683,  683,  684,  683
  3865. ,  684,  684,  685,  687,  688,  688,  689,  689,  690,  690
  3866. ,  691,  691,  692,  692,  693,  693,  694,  696,  697,  700
  3867. ,  701,  701,  702,  707,  708,  708,  709,  710,  711,  713
  3868. ,  714,  714,  715,  714,  715,  735,  736,  737,  738,  737
  3869. ,  738,  748,  749,  748,  749,  748,  749,  759,  760,  760
  3870. ,  761,  761,  762,  761,  762,  761,  762,  761,  762,  772
  3871. ,  773,  774,  775,  774,  775,  775,  776,  776,  777,  776
  3872. ,  777,  776,  777,  777,  778,  777,  778,  777,  778,  777
  3873. ,  778,  788,  789,  788,  789,  788,  789,  789,  790,  790
  3874. ,  791,  791,  792,  792,  793,  793,  794,  794,  795,  795
  3875. ,  796,  796,  797,  796,  797,  797,  798,  798,  799,  798
  3876. ,  799,  798,  799,  798,  799,  798,  799,  799,  800,  800
  3877. ,  801,  800,  801,  800,  801,  803,  804,  803,  804,  803
  3878. ,  804,  803,  804,  814,  815,  815,  816,  815,  816,  816
  3879. ,  817,  816,  817,  841,  842,  866,  867,  866,  867,  866
  3880. ,  867,  866,  867,  867,  868,  867,  868,  867,  868,  870
  3881. ,  871,  874,  875,  885,  886,  886,  887,  887,  888,  888
  3882. ,  889,  889,  890,  889,  890,  899,  900,  900,  901,  900
  3883. ,  901,  901,  902,  904,  905,  906,  907,  907,  908,  908
  3884. ,  909,  913,  914,  913,  914,  913,  914,  913,  914,  913
  3885. ,  914,  913,  914,  913,  914,  913,  914,  913,  914,  915
  3886. ,  916,  916,  917,  920,  921,  921,  922,  924,  925,  925
  3887. ,  926,  936,  937,  947,  948,  950,  951,  951,  952,  962
  3888. ,  963,  963,  964,  965,  966,  977,  978,  977,  978,  978
  3889. ,  979,  979,  980,  979,  980,  984,  985,  984,  985,  984
  3890. ,  985,  984,  985, 1004, 1005, 1004, 1005, 1004, 1005, 1004
  3891. , 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004
  3892. , 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004
  3893. , 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1004, 1005, 1007
  3894. , 1008, 1009, 1010, 1009, 1010, 1009, 1010, 1009, 1010, 1009
  3895. , 1010, 1009, 1010, 1009, 1010, 1010, 1011, 1010, 1011, 1011
  3896. , 1012, 1012, 1013, 1012, 1013, 1012, 1013, 1012, 1013, 1012
  3897. , 1013, 1012, 1013, 1013, 1014, 1013, 1014, 1013, 1014, 1017
  3898. , 1018, 1028, 1029, 1029, 1030, 1029, 1030, 1029, 1030, 1029
  3899. , 1030, 1029, 1030, 1030, 1031, 1030, 1031, 1031, 1032, 1033
  3900. , 1034, 1033, 1034, 1033, 1034, 1034, 1035, 1036, 1037, 1047
  3901. , 1048, 1058, 1059, 1059, 1060, 1071, 1072, 1072, 1073, 1073
  3902. , 1074, 1075, 1076, 1076, 1077, 1077, 1078, 1077, 1078, 1078
  3903. , 1079, 1079, 1080, 1090, 1091, 1101, 1102, 1102, 1103, 1103
  3904. , 1104, 1104, 1105, 1105, 1106, 1107, 1108, 1108, 1109, 1108
  3905. , 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1108
  3906. , 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1109
  3907. , 1110, 1110, 1111, 1110, 1111, 1121, 1122, 1132, 1133, 1133
  3908. , 1134, 1134, 1135, 1135, 1136, 1135, 1136, 1136, 1137, 1137
  3909. , 1138, 1140, 1141, 1151, 1152, 1151, 1152, 1151, 1152, 1151
  3910. , 1152, 1151, 1152, 1152, 1153, 1152, 1153, 1152, 1153, 1152
  3911. , 1153, 1155, 1156, 1156, 1157, 1157, 1158, 1158, 1159, 1169
  3912. , 1170, 1169, 1170, 1172, 1173, 1174, 1175, 1174, 1175, 1174
  3913. , 1175, 1175, 1176, 1175, 1176, 1175, 1176, 1177, 1178, 1177
  3914. , 1178, 1178, 1179, 1186, 1187, 1186, 1187, 1191, 1192, 1192
  3915. , 1193, 1197, 1198, 1197, 1198, 1208, 1209, 1209, 1210, 1235
  3916. , 1236, 1235, 1236, 1235, 1236, 1235, 1236, 1236, 1237, 1236
  3917. , 1237, 1247, 1248, 1248, 1249, 1248, 1249, 1249, 1250, 1251
  3918. , 1252, 1252, 1253, 1254, 1255, 1254, 1255, 1255, 1256, 1256
  3919. , 1257, 1258, 1259, 1258, 1259, 1258, 1259, 1262, 1263, 1262
  3920. , 1263, 1262, 1263, 1263, 1264, 1263, 1264, 1264, 1265, 1265
  3921. , 1266, 1266, 1267, 1266, 1267, 1267, 1268, 1278, 1279, 1278
  3922. , 1279, 1279, 1280, 1280, 1281, 1281, 1282, 1285, 1286, 1285
  3923. , 1286, 1286, 1287, 1286, 1287, 1286, 1287, 1286, 1287, 1286
  3924. , 1287, 1287, 1288, 1288, 1289, 1289, 1290, 1290, 1291, 1292
  3925. , 1293, 1292, 1293, 1292, 1293, 1292, 1293, 1293, 1294, 1293
  3926. , 1294, 1293, 1294, 1294, 1295, 1295, 1296, 1296, 1297, 1296
  3927. , 1297, 1296, 1297, 1296, 1297, 1296, 1297, 1296, 1297, 1296
  3928. , 1297, 1296, 1297, 1296, 1297, 1298, 1299, 1302, 1303, 1303
  3929. , 1304, 1304, 1305, 1305, 1306, 1307, 1308, 1307, 1308, 1307
  3930. , 1308, 1311, 1312, 1312, 1313, 1314, 1315, 1325, 1326, 1327
  3931. , 1328, 1327, 1328, 1327, 1328, 1328, 1329, 1339, 1340, 1339
  3932. , 1340, 1339, 1340, 1341, 1342, 1341, 1342, 1341, 1342, 1341
  3933. , 1342, 1342, 1343, 1353, 1354, 1357, 1358, 1357, 1358, 1357
  3934. , 1358, 1357, 1358, 1357, 1358, 1357, 1358, 1357, 1358, 1357
  3935. , 1358, 1359, 1360, 1359, 1360, 1360, 1361, 1361, 1362, 1361
  3936. , 1362, 1362, 1363, 1363, 1364, 1363, 1364, 1363, 1364, 1364
  3937. , 1365, 1365, 1366, 1367, 1368, 1367, 1368, 1367, 1368, 1368
  3938. , 1369, 1368, 1369, 1369, 1370, 1369, 1370, 1370, 1371, 1372
  3939. , 1373, 1384, 1385, 1384, 1385, 1386, 1387, 1386, 1387, 1386
  3940. , 1387, 1394, 1395, 1394, 1395, 1394, 1395, 1394, 1395, 1394
  3941. , 1395, 1405, 1406, 1406, 1407, 1410, 1411, 1410, 1411, 1414
  3942. , 1415, 1414, 1415, 1415, 1416, 1417, 1418, 1418, 1419, 1419
  3943. , 1420, 1419, 1420, 1420, 1421, 1420, 1421, 1420, 1421, 1421
  3944. , 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1427, 1428, 1427
  3945. , 1428, 1427, 1428, 1427, 1428, 1427, 1428, 1427, 1428, 1430
  3946. , 1431, 1430, 1431, 1457, 1458, 1458, 1459, 1458, 1459, 1458
  3947. , 1459, 1458, 1459, 1460, 1461, 1460, 1461, 1461, 1462, 1461
  3948. , 1462, 1472, 1473, 1473, 1474, 1473, 1474, 1473, 1474, 1474
  3949. , 1475, 1498, 1499, 1498, 1499, 1498, 1499, 1500, 1501, 1500
  3950. , 1501, 1500, 1501, 1501, 1502, 1501, 1502, 1501, 1502, 1502
  3951. , 1503, 1514, 1515, 1515, 1516, 1516, 1517, 1517, 1518, 1517
  3952. , 1518, 1517, 1518, 1518, 1519, 1518, 1519, 1518, 1519, 1518
  3953. , 1519, 1518, 1519, 1519, 1520, 1522, 1523, 1522, 1523, 1522
  3954. , 1523, 1533, 1534, 1534, 1535, 1535, 1536, 1536, 1537, 1547
  3955. , 1548, 1548, 1549, 1549, 1550, 1549, 1550, 1550, 1551, 1561
  3956. , 1562, 1562, 1563, 1562, 1563, 1563, 1564, 1564, 1565, 1564
  3957. , 1565, 1565, 1566, 1566, 1567, 1566, 1567, 1566, 1567, 1566
  3958. , 1567, 1568, 1569, 1578, 1579, 1578, 1579, 1581, 1582, 1582
  3959. , 1583, 1584, 1585, 1585, 1586, 1597, 1598, 1597, 1598, 1597
  3960. , 1598, 1597, 1598, 1598, 1599, 1599, 1600, 1600, 1601, 1603
  3961. , 1604, 1603, 1604, 1603, 1604, 1608, 1609, 1608, 1609, 1609
  3962. , 1610, 1620, 1621, 1620, 1621, 1621, 1622, 1622, 1623, 1622
  3963. , 1623, 1624, 1625, 1625, 1626, 1625, 1626, 1629, 1630, 1629
  3964. , 1630, 1629, 1630, 1629, 1630, 1629, 1630, 1630, 1631, 1631
  3965. , 1632, 1631, 1632, 1632, 1633, 1632, 1633, 1632, 1633, 1633
  3966. , 1634, 1634, 1635, 1639, 1640, 1640, 1641, 1640, 1641, 1641
  3967. , 1642, 1642, 1643, 1643, 1644, 1644, 1645, 1644, 1645, 1645
  3968. , 1646, 1646, 1647, 1646, 1647, 1648, 1649, 1648, 1649, 1649
  3969. , 1650, 1649, 1650, 1650, 1651, 1652, 1653, 1653, 1654, 1653
  3970. , 1654, 1654, 1655, 1655, 1656, 1657, 1658, 1657, 1658, 1657
  3971. , 1658, 1658, 1659, 1659, 1660, 1659, 1660, 1660, 1661, 1662
  3972. , 1663, 1662, 1663, 1663, 1664, 1664, 1665, 1664, 1665, 1664
  3973. , 1665, 1664, 1665, 1665, 1666, 1665, 1666, 1667, 1668, 1668
  3974. , 1669, 1668, 1669, 1668, 1669, 1668, 1669, 1669, 1670, 1670
  3975. , 1671, 1670, 1671, 1670, 1671, 1671, 1672, 1671, 1672, 1671
  3976. , 1672, 1671, 1672, 1672, 1673, 1672, 1673, 1674, 1675, 1675
  3977. , 1676, 1675, 1676, 1677, 1678, 1677, 1678, 1677, 1678, 1677
  3978. , 1678, 1678, 1679, 1679, 1680, 1680, 1681, 1680, 1681, 1680
  3979. , 1681, 1692, 1693, 1692, 1693, 1692, 1693, 1692, 1693, 1692
  3980. , 1693, 1692, 1693, 1692, 1693, 1692, 1693, 1693, 1694, 1695
  3981. , 1696, 1696, 1697, 1696, 1697, 1698, 1699, 1698, 1699, 1698
  3982. , 1699, 1699, 1700, 1701, 1702, 1702, 1703, 1702, 1703, 1702
  3983. , 1703, 1703, 1704, 1704, 1705, 1704, 1705, 1704)  ;
  3984.      
  3985.     Action_Token_Map : constant Action_Token_Array :=
  3986.          (   43,   65,   27,   43,   45,   54,   63,   26,   42,   71
  3987. ,   80,   45,   26,   27,   42,   54,   63,   35,   37,   66
  3988. ,   67,    3,   36,   65,   68,   71,   74,   76,   65,   67
  3989. ,   11,   65,   65,   71,   80,   31,   80,   31,   31,   80
  3990. ,   26,   42,   45,   65,   65,    7,   30,   34,   36,   39
  3991. ,   47,   49,   69,   70,   72,   73,   74,   77,   78,   81
  3992. ,   82,   83,   85,   86,   87,   89,   90,   91,   64,   71
  3993. ,   75,   76,   84,   76,    3,   35,   36,   37,   40,   65
  3994. ,   66,   67,   68,   71,   74,   72,   30,   81,   82,   83
  3995. ,   90,   36,   86,   89,   91,   47,   70,   71,   77,   75
  3996. ,   64,    7,   39,    7,   39,   64,    7,   39,   69,   74
  3997. ,   76,   34,   49,   73,   78,   87,   35,   37,   65,   66
  3998. ,   68,   67,   71,    3,   35,   36,   66,   67,   68,   71
  3999. ,   37,   65,   31,   71,   51,   59,   63,   65,   65,   71
  4000. ,   65,   35,   35,   65,   67,   65,   31,   43,   60,   71
  4001. ,   70,   77,   84,   85,   85,   72,   75,   36,   81,   82
  4002. ,   83,   85,   86,   90,    7,   30,   39,   64,   72,   75
  4003. ,   84,   89,   91,   77,   47,   70,   71,   72,   75,   80
  4004. ,   30,    3,   35,   36,   37,   68,   76,   65,   66,   67
  4005. ,   71,   74,   35,   36,   37,   65,   66,   68,   74,   76
  4006. ,    3,   67,   71,    3,   37,   65,   66,   68,   71,   74
  4007. ,   35,   36,   67,   76,   36,   37,   66,   67,   68,   71
  4008. ,   74,   76,    3,   35,   65,   16,   17,   47,   65,   71
  4009. ,    3,   68,   71,   76,   35,   36,   37,   65,   66,   67
  4010. ,   74,    6,   65,   67,   68,    3,   36,   37,   65,   66
  4011. ,   67,   68,   71,   74,   76,   35,   75,    3,   36,   37
  4012. ,   58,   65,   66,   35,   67,   68,   71,   74,   76,   35
  4013. ,   37,   66,   67,   68,   71,   74,   76,    3,   19,   36
  4014. ,   65,    3,   36,   66,   67,   68,   74,   76,   35,   37
  4015. ,   65,   71,    3,   35,   36,   65,   67,   71,   74,   76
  4016. ,   37,   66,   68,    3,   35,   36,   37,   65,   66,   68
  4017. ,   71,   74,   76,   67,    3,   36,   37,   74,   76,   35
  4018. ,   65,   66,   67,   68,   71,   58,   19,    3,   35,   36
  4019. ,   65,   66,   67,   68,   71,   37,    3,   35,   36,   37
  4020. ,   65,   66,   67,   68,   71,   35,   66,   67,   68,   37
  4021. ,   65,   71,   77,   70,   71,   35,   65,   65,   65,   26
  4022. ,   45,   79,   65,   72,   77,   65,   43,   25,   26,   27
  4023. ,   42,   55,   56,   59,   60,   45,   65,   10,   65,   67
  4024. ,   65,   44,   45,   65,   21,   25,   26,   27,   42,   55
  4025. ,   56,   59,   60,   10,   21,   65,   51,   71,   75,   80
  4026. ,   65,   65,   35,   36,   37,   65,   66,   67,   68,   71
  4027. ,   74,   76,    3,   71,   65,   65,    3,   36,   37,   65
  4028. ,   66,   35,   67,   68,   71,   74,   76,    3,   35,   36
  4029. ,   65,   66,   68,   71,   37,   67,   74,   76,    3,   35
  4030. ,   36,   66,   76,   37,   40,   65,   67,   68,   71,   74
  4031. ,    3,   35,   36,   37,   65,   76,   66,   67,   68,   71
  4032. ,   74,   84,   85,    3,   36,   37,   40,   65,   66,   71
  4033. ,   74,   76,   35,   67,   68,   75,   86,   86,   72,   65
  4034. ,   35,   36,   65,   71,   74,    3,   37,   66,   67,   68
  4035. ,   76,   81,   83,   90,   91,   30,   36,   82,   89,   67
  4036. ,   68,   66,   71,   74,   76,    3,   35,   36,   37,   65
  4037. ,   36,   37,   66,   67,   74,   76,    3,   35,   65,   68
  4038. ,   71,    3,   65,   67,   68,   71,   74,   76,   35,   36
  4039. ,   37,   66,   65,   77,   79,   31,   71,   31,   75,   30
  4040. ,   65,   26,   42,   45,   56,   65,   77,   71,   80,   65
  4041. ,   68,   67,   65,   11,   65,   11,   59,   65,   65,   79
  4042. ,   31,   50,   80,   31,   80,   80,   71,   77,   80,   65
  4043. ,   65,   59,   65,   31,   50,   80,   65,   80,   65,   80
  4044. ,   71,   77,   43,   72,   35,   36,   37,   66,    3,   65
  4045. ,   67,   68,   71,   74,   76,    3,   65,   66,   67,   71
  4046. ,   74,   76,   35,   36,   37,   68,   35,   36,   37,   40
  4047. ,   65,    3,   66,   67,   68,   71,   74,   76,    3,   65
  4048. ,   74,   76,   35,   36,   37,   66,   67,   68,   71,    3
  4049. ,   35,   36,   37,   65,   67,   71,   74,   66,   68,   76
  4050. ,   75,   71,   77,   80,   30,   41,   65,   72,   80,    5
  4051. ,    8,   17,   32,   44,   71,   16,   47,   65,   65,   67
  4052. ,   68,   94,   80,   65,   41,   88,   72,   80,   11,   11
  4053. ,   31,    3,   35,   36,   37,   65,   76,   66,   67,   68
  4054. ,   71,   74,   65,   60,   77,   70,   71,   60,   50,   31
  4055. ,   65,   65,   31,   71,   31,   80,    8,   23,   13,   65
  4056. ,   43,   45,   26,   27,   42,   56,   60,   43,   54,   35
  4057. ,   68,   65,   67,   54,    2,    4,   12,   14,   28,   29
  4058. ,   43,   46,   51,   53,   62,   68,   10,   15,   24,   25
  4059. ,   33,   37,   65,   67,   92,   23,   21,   37,   65,   66
  4060. ,   67,   76,    3,   35,   36,   68,   71,   74,   42,   45
  4061. ,   56,   21,   25,   26,   27,   55,   59,   60,   65,   35
  4062. ,   80,   37,   65,   66,   67,   76,    3,   35,   36,   68
  4063. ,   71,   74,   75,   80,   75,   86,   75,   35,   36,   37
  4064. ,   65,   66,   67,   68,   71,   74,    3,   76,   88,   51
  4065. ,   65,   65,   71,   94,   94,   44,   94,   94,   80,   79
  4066. ,   70,   71,   77,   76,    3,   35,   36,   37,   65,   66
  4067. ,   67,   68,   71,   74,   80,   65,    7,   64,   69,   70
  4068. ,   71,   72,   73,   74,   75,   76,   77,   78,   81,   82
  4069. ,   83,   85,   87,   30,   34,   36,   39,   49,   89,   90
  4070. ,   91,   30,   34,   36,   39,   49,   69,   70,   72,   76
  4071. ,   82,   83,   85,   87,   89,   90,   91,    7,   64,   71
  4072. ,   73,   74,   75,   77,   78,   81,   85,    9,   48,   71
  4073. ,   16,   17,   65,   47,   37,   65,   66,   68,   71,   74
  4074. ,   76,    3,   35,   36,   67,   65,   65,   31,   31,   16
  4075. ,   35,   44,   71,    5,    8,   17,   32,   47,   48,   65
  4076. ,   71,    8,   65,   88,   50,   80,   88,   88,   16,   17
  4077. ,   47,   71,   50,   31,   80,   80,   77,   70,   71,   80
  4078. ,   80,   65,   67,   68,   65,   68,   76,    3,   35,   36
  4079. ,   37,   65,   66,   67,   71,   74,    3,   35,   36,   68
  4080. ,   74,   76,   37,   65,   66,   67,   71,   61,   65,   80
  4081. ,   65,    3,   35,   36,   37,   65,   66,   67,   68,   71
  4082. ,   74,   76,   80,   65,   80,   36,   37,   65,   66,   71
  4083. ,   80,    3,   35,   67,   68,   74,   76,   79,   65,   77
  4084. ,   70,   71,   80,   88,    2,   10,   12,   14,   24,   25
  4085. ,   28,   29,   33,   37,   65,   67,   68,   92,    4,   15
  4086. ,   46,   51,   53,   62,   62,   25,   33,   10,   14,   65
  4087. ,   72,   65,   65,   71,   16,   17,   47,    3,   35,   37
  4088. ,   65,   67,   68,   36,   66,   71,   74,   76,   38,   72
  4089. ,   65,   72,   80,   31,   72,   75,   68,    3,   35,   36
  4090. ,   37,   65,   66,   67,   71,   74,   76,    3,   35,   65
  4091. ,   66,   68,   71,   74,   76,   36,   37,   67,    9,   35
  4092. ,   36,   37,   40,   67,   68,   71,   74,   76,    3,   65
  4093. ,   66,   80,   80,   77,   80,   80,   54,   43,   22,    3
  4094. ,   36,   37,   35,   65,   66,   67,   68,   71,   74,   76
  4095. ,   35,   36,   66,   67,   68,   71,    3,   37,   65,   74
  4096. ,   76,   44,   65,   80,   37,   65,   68,   80,   47,   47
  4097. ,   36,   37,   65,   66,   67,   68,   71,   76,    3,   35
  4098. ,   74,   67,   68,   71,   76,    3,   65,   66,   74,   35
  4099. ,   36,   37,   88,   88,   65,   80,   80,   65,   67,   68
  4100. ,   65,   66,   68,   71,   76,    3,   35,   36,   37,   67
  4101. ,   74,   43,   70,   71,   77,   71,   31,   80,    3,   36
  4102. ,   37,   66,   68,   74,   35,   65,   67,   71,   76,   61
  4103. ,   77,   80,   77,   80,   58,   77,   80,   80,    4,   15
  4104. ,   61,   65,   43,   57,   67,   68,   14,   10,   25,   33
  4105. ,   62,   93,   16,   17,   47,   65,   71,    3,   35,   36
  4106. ,   65,   67,   71,   74,   37,   66,   68,   76,   43,    2
  4107. ,    4,   12,   14,   15,   28,   29,   51,   53,   61,   62
  4108. ,   65,   67,   68,   10,   19,   20,   21,   23,   24,   25
  4109. ,   33,   37,   39,   46,   92,   65,   71,   76,    3,   35
  4110. ,   36,   37,   65,   66,   67,   68,   74,   33,   65,   61
  4111. ,   43,   21,   72,   75,   80,   77,   72,   75,   47,   70
  4112. ,   71,   77,   65,   88,   31,   65,   80,   65,   66,   67
  4113. ,   68,   71,   74,    3,   35,   36,   37,   76,   80,   34
  4114. ,   43,   65,   67,   68,   21,   75,   80,   65,   22,   65
  4115. ,   21,   25,   80,   80,   21,   43,   72,   80,   70,   71
  4116. ,   47,   77,   80,   80,   80,   77,   80,   70,   71,   77
  4117. ,   80,   72,   75,   80,   65,   67,   68,   71,   74,   76
  4118. ,    3,   35,   36,   37,   66,   18,   80,   80,   37,   67
  4119. ,   68,   74,   76,    3,   35,   36,   65,   66,   71,   19
  4120. ,   20,   80,    3,   35,   36,   37,   74,   65,   66,   67
  4121. ,   68,   71,   76,   70,   71,   77,   80,   39,   19,   80
  4122. ,   80,   30,   21,   65,   80,   65,   40,   61,   80,   80
  4123. ,   72,   75,   35,   37,   65,   71,   74,   76,    3,   36
  4124. ,   66,   67,   68,   94,   75,   72,    8,   16,   17,   32
  4125. ,   44,   47,   71,    5,    3,   36,   65,   66,   74,   76
  4126. ,   35,   37,   67,   68,   71,   48,   70,   71,    9,   77
  4127. ,   21,   65,   67,   68,   80,   21,   25,   71,   65,   43
  4128. ,   48,   12,   65,   75,   72,   31,   80,   65,   67,   68
  4129. ,    7,   34,   36,   39,   47,   49,   64,   69,   71,   73
  4130. ,   74,   75,   76,   77,   81,   82,   83,   86,   87,   89
  4131. ,   90,   91,   30,   70,   72,   78,   79,   72,   61,   43
  4132. ,   80,   35,   36,   66,   67,   76,    3,   37,   65,   68
  4133. ,   71,   74,   21,   85,   68,   28,   29,   37,   39,   43
  4134. ,   46,   51,   53,   62,   65,   67,   92,    2,    4,   10
  4135. ,   12,   14,   15,   19,   21,   24,   25,   33,   19,   39
  4136. ,   21,   43,   35,   37,   65,   66,   67,   68,   71,   74
  4137. ,   76,    3,   36,   52,   33,   21,   80,   77,   38,   65
  4138. ,   67,   68,    3,   65,   67,   68,   71,   74,   35,   36
  4139. ,   37,   66,   76,   80,   80,   80,    3,   36,   37,   65
  4140. ,   68,   71,   74,   35,   66,   67,   76,   43,   48,   65
  4141. ,   36,   37,   65,   66,   67,   68,   71,   74,    3,   35
  4142. ,   76,   80,   43,   43,   65,   79,   65,   68,   16,   17
  4143. ,   32,   71,    5,    8,   35,   44,   47,   48,   70,   77
  4144. ,   71,   71,   72,   80,   21,    3,   36,   40,   65,   71
  4145. ,   74,   35,   37,   66,   67,   68,   76,   58,   29,   43
  4146. ,    4,   15,   57,    4,   15,   43,   57,   61,   53,    3
  4147. ,   35,   36,   37,   68,   71,   65,   66,   67,   74,   76
  4148. ,   65,   33,   85,   84,   65,   70,   71,   77,   47,   47
  4149. ,   80,   72,   31,   65,   12,   21,   43,   61,   65,   43
  4150. ,   44,   80,   80,   65,   65,   85,   21,   61,   80,   21
  4151. ,   15,   43,   80,   80,   65,   40,   65,   94,   80,   71
  4152. ,   72,   80,   88,   80,   80,   84,   85,   12,   53,   21
  4153. ,   80,   65,   43,   61,   80,   72,   80,   80,   80,   53
  4154. ,   36,   37,   40,   65,   66,   67,   71,   76,    3,   35
  4155. ,   68,   74,   80,   72,   80,   85,   61,   21,   37,   85
  4156. ,   84,   12,   37,   80)  ;
  4157.         --| Action_Token_Map is an array that
  4158.         --| maps from each state (using action  map) to a set of
  4159.         --| action tokens. An action token is a terminal symbol
  4160.         --| (except EOF_Token) for which in the given state an
  4161.         --| explicit (non-default) shift or reduce action
  4162.         --| is defined.
  4163.         --| Used to cut reduce the
  4164.         --| number of primary recovery candidates.
  4165.      
  4166.     ------------------------------------------------------------------
  4167.     -- Shift_State_Map
  4168.     ------------------------------------------------------------------
  4169.      
  4170.     type Shift_State_Index_Array is array(
  4171.         PositiveParserInteger range <>) of GC.ParserInteger;
  4172.        --| For indexing the All Action Token Array.
  4173.        --| Maps a given state into the lower and upper bounds of a slice
  4174.        --| of the All Action Index Array.
  4175.      
  4176.     Shift_State_MapIndex : constant Shift_State_Index_Array :=
  4177.          (    1,    1,    2,    2,    3,    3,    4,    4,    5,    5
  4178. ,    6,    6,    7,    9,   10,   11,   12,   14,   15,   15
  4179. ,   16,   18,   19,   22,   23,   23,   24,   24,   25,   25
  4180. ,   26,   28,   29,   31,   32,   32,   33,   36,   37,   37
  4181. ,   38,   56,   57,   57,   58,   59,   60,   60,   61,   62
  4182. ,   63,   64,   65,   65,   66,   66,   67,   68,   69,   72
  4183. ,   73,   93,   94,   96,   97,  100,  101,  102,  103,  107
  4184. ,  108,  109,  110,  112,  113,  114,  115,  119,  120,  123
  4185. ,  124,  125,  126,  130,  131,  132,  133,  139,  140,  140
  4186. ,  141,  141,  142,  146,  147,  151,  152,  152,  153,  156
  4187. ,  157,  159,  160,  160,  161,  164,  165,  168,  169,  169
  4188. ,  170,  172,  173,  173,  174,  177,  178,  180,  181,  183
  4189. ,  184,  189,  190,  190,  191,  192,  193,  194,  195,  231
  4190. ,  232,  232,  233,  237,  238,  240,  241,  241,  242,  245
  4191. ,  246,  268,  269,  293,  294,  294,  295,  296,  297,  309
  4192. ,  310,  311,  312,  315,  316,  316,  317,  322,  323,  408
  4193. ,  409,  409,  410,  410,  411,  411,  412,  414,  415,  424
  4194. ,  425,  428,  429,  429,  430,  432,  433,  433,  434,  434
  4195. ,  435,  435,  436,  436,  437,  437,  438,  443,  444,  443
  4196. ,  444,  443,  444,  443,  444,  444,  445,  446,  447,  451
  4197. ,  452,  455,  456,  456,  457,  457,  458,  458,  459,  459
  4198. ,  460,  460,  461,  463,  464,  466,  467,  468,  469,  471
  4199. ,  472,  472,  473,  475,  476,  476,  477,  481,  482,  489
  4200. ,  490,  497,  498,  500,  501,  516,  517,  517,  518,  518
  4201. ,  519,  519,  520,  520,  521,  522,  523,  525,  526,  527
  4202. ,  528,  528,  529,  529,  530,  530,  531,  532,  533,  533
  4203. ,  534,  535,  536,  536,  537,  544,  545,  545,  546,  546
  4204. ,  547,  553,  554,  555,  556,  557,  558,  575,  576,  577
  4205. ,  578,  578,  579,  579,  580,  580,  581,  582,  583,  583
  4206. ,  584,  584,  585,  586,  587,  587,  588,  588,  589,  603
  4207. ,  604,  608,  609,  609,  610,  611,  612,  614,  615,  629
  4208. ,  630,  630,  631,  631,  632,  632,  633,  633,  634,  635
  4209. ,  636,  636,  637,  640,  641,  643,  644,  646,  647,  648
  4210. ,  649,  650,  651,  651,  652,  652,  653,  654,  655,  657
  4211. ,  658,  658,  659,  660,  661,  661,  662,  663,  664,  665
  4212. ,  666,  666,  667,  667,  668,  668,  669,  670,  671,  671
  4213. ,  672,  672,  673,  673,  674,  678,  679,  679,  680,  683
  4214. ,  684,  687,  688,  690,  691,  693,  694,  694,  695,  697
  4215. ,  698,  699,  700,  710,  711,  711,  712,  712,  713,  713
  4216. ,  714,  714,  715,  715,  716,  716,  717,  717,  718,  718
  4217. ,  719,  719,  720,  722,  723,  725,  726,  726,  727,  728
  4218. ,  729,  729,  730,  732,  733,  733,  734,  734,  735,  735
  4219. ,  736,  736,  737,  737,  738,  738,  739,  739,  740,  749
  4220. ,  750,  757,  758,  759,  760,  760,  761,  772,  773,  774
  4221. ,  775,  776,  777,  777,  778,  778,  779,  779,  780,  780
  4222. ,  781,  781,  782,  782,  783,  784,  785,  785,  786,  786
  4223. ,  787,  787,  788,  789,  790,  790,  791,  791,  792,  792
  4224. ,  793,  793,  794,  795,  796,  796,  797,  798,  799,  799
  4225. ,  800,  800,  801,  802,  803,  808,  809,  810,  811,  812
  4226. ,  813,  813,  814,  814,  815,  826,  827,  827,  828,  829
  4227. ,  830,  833,  834,  834,  835,  835,  836,  842,  843,  847
  4228. ,  848,  854,  855,  860,  861,  862,  863,  863,  864,  865
  4229. ,  866,  866,  867,  868,  869,  870,  871,  872,  873,  873
  4230. ,  874,  874,  875,  876,  877,  878,  879,  879,  880,  880
  4231. ,  881,  881,  882,  882,  883,  883,  884,  884,  885,  886
  4232. ,  887,  887,  888,  889,  890,  890,  891,  892,  893,  893
  4233. ,  894,  896,  897,  897,  898,  898,  899,  899,  900,  901
  4234. ,  902,  902,  903,  903,  904,  904,  905,  905,  906,  907
  4235. ,  908,  908,  909,  909,  910,  910,  911,  912,  913,  913
  4236. ,  914,  915,  916,  916,  917,  917,  918,  918,  919,  919
  4237. ,  920,  921,  922,  922,  923,  925,  926,  929,  930,  932
  4238. ,  933,  933,  934,  934,  935,  936,  937,  937,  938,  938
  4239. ,  939,  939,  940,  940,  941,  942,  943,  943,  944,  944
  4240. ,  945,  946,  947,  947,  948,  948,  949,  949)  ;
  4241.      
  4242.     Shift_State_Map : constant Shift_State_Array :=
  4243.          (    1,  464,   35,  465,  402,  213,  132,  135,  138,  403
  4244. ,  446,  536,  642,  805,  287,   77,  361,  425,  466,  816
  4245. ,  921,  947,  447,  618,  467,  205,  404,  547,  206,  405
  4246. ,  548,  765,  224,  231,  770,  836,  771,  293,  298,  505
  4247. ,  508,  721,  737,  745,  750,  787,  807,  809,  833,  840
  4248. ,  844,  870,  900,  904,  923,  943,  654,  448,  506,  468
  4249. ,  250,  614,   14,   88,   15,  469,  470,  875,  113,  199
  4250. ,  345,  786,   82,   85,   86,  155,  177,  340,  342,  369
  4251. ,  371,  380,  426,  439,  442,  443,  543,  544,  637,  686
  4252. ,  731,  822,  891,  406,  549,  865,  615,  714,  843,  882
  4253. ,  144,  736,   36,  167,  172,  235,  550,   37,  114,   38
  4254. ,  471,  662,  632,  847,  133,  136,  139,  781,  837,  102
  4255. ,  791,  871,  936,  398,  421,   16,   89,  251,  294,  348
  4256. ,    2,  179,  295,  407,  525,  551,  659,  866,  893,   17
  4257. ,  472,  125,  207,  408,  726,  886,  537,  552,  804,  815
  4258. ,  855,  145,  370,  438,  572,  576,  156,  473,  517,  841
  4259. ,  474,  879,  922,  934,   18,  461,  463,  651,  252,  253
  4260. ,  296,  349,  696,  221,  230,  693,  874,  158,  254,  362
  4261. ,  181,  435,  437,  590,  689,  697,  717,  828,  926,  616
  4262. ,   33,  159,  134,  137,    9,   39,   73,   78,   93,   97
  4263. ,  103,  160,  165,  208,  214,  240,  248,  289,  299,  303
  4264. ,  310,  311,  329,  352,  356,  359,  360,  363,  364,  420
  4265. ,  427,  434,  441,  475,  587,  605,  665,  711,  744,  762
  4266. ,  860,   40,   41,   74,  215,  290,  428,   42,  216,  666
  4267. ,  140,  126,  184,  436,  606,   12,   43,   81,  127,  157
  4268. ,  164,  183,  341,  353,  376,  385,  396,  409,  444,  521
  4269. ,  538,  553,  568,  577,  684,  810,  868,  912,  112,  189
  4270. ,  194,  246,  327,  387,  400,  424,  624,  633,  635,  638
  4271. ,  722,  724,  753,  759,  797,  800,  820,  825,  869,  889
  4272. ,  913,  930,  940,  146,   44,  141,  130,  190,  195,  220
  4273. ,  301,  323,  344,  511,  639,  760,  798,  801,  821,   45
  4274. ,  142,  128,  185,  247,  354,  147,  243,  336,  365,  529
  4275. ,  604,  861,   13,   83,   84,   87,  198,  302,  355,  372
  4276. ,  375,  377,  382,  384,  397,  401,  419,  445,  509,  512
  4277. ,  528,  532,  573,  583,  584,  585,  591,  597,  598,  600
  4278. ,  607,  636,  647,  648,  649,  650,  661,  669,  679,  680
  4279. ,  687,  690,  691,  694,  695,  723,  733,  735,  741,  748
  4280. ,  749,  754,  755,  756,  757,  758,  761,  766,  768,  774
  4281. ,  783,  784,  790,  795,  796,  808,  823,  830,  845,  851
  4282. ,  852,  853,  859,  888,  894,  895,  903,  906,  907,  911
  4283. ,  916,  918,  924,  929,  932,  933,  939,  949,  115,  116
  4284. ,  117,  186,  318,  883,  187,  188,  319,  535,  835,  884
  4285. ,  898,  920,  941,  946,  118,  191,  325,  326,  149,  422
  4286. ,  569,  608,  119,  120,  121,  476,  707,  417,  523,  524
  4287. ,  526,  527,  799,    3,   10,  304,   46,  212,  307,  510
  4288. ,  682,  180,  477,  718,  927,  255,  256,  257,  258,  259
  4289. ,   19,  260,  452,   20,  261,  453,  262,  454,   21,  263
  4290. ,  455,  264,   22,  265,  456,  266,  161,  238,  267,  415
  4291. ,  817,  449,  519,  542,  570,  660,  729,  885,  892,  423
  4292. ,  516,  574,  575,  676,  677,  730,  915,  410,  450,  571
  4293. ,   47,  104,  312,  313,  314,  320,  391,  429,  531,  588
  4294. ,  594,  601,  646,  675,  709,  763,  242,  268,  269,  270
  4295. ,  554,  867,  416,  567,  732,  530,  673,  555,  556,  557
  4296. ,  411,  558,  559,  412,  560,  561,   98,  236,  346,  399
  4297. ,  451,  520,  627,  634,  578,   99,  129,  192,  562,  579
  4298. ,  670,  727,  887,  563,  580,  564,  581,   48,  105,  200
  4299. ,  201,  203,  204,  222,  317,  389,  394,  395,  540,  589
  4300. ,  641,  657,  658,  803,  854,  667,  864,  752,  668,  565
  4301. ,  671,  672,  566,  413,  628,  848,  725,  522,   49,  106
  4302. ,  152,  357,  418,  462,  478,  586,  629,  674,  681,  698
  4303. ,  738,  824,  849,  630,  842,  850,  857,  880,  728,  202
  4304. ,  631,  663,  945,  948,   95,  168,  306,  366,  368,  545
  4305. ,  582,  643,  664,  747,  806,  813,  814,  862,  863,  751
  4306. ,  818,  819,  914,  928,  944,  938,  107,  390,  872,  937
  4307. ,  193,  899,  942,  169,  173,  379,  170,  174,  271,  457
  4308. ,  367,  272,  273,  746,  182,  274,  458,  459,  275,  350
  4309. ,  276,   23,  277,   24,  278,  279,   50,   51,   52,  358
  4310. ,  217,  209,  108,   53,  210,  308,  539,  708,  109,  196
  4311. ,  324,  513,  514,  110,  315,  321,  393,  197,  388,  392
  4312. ,  111,  316,  322,   54,   55,  218,  330,  131,  328,   56
  4313. ,  223,  225,  226,  227,  228,  229,  331,  332,  333,  334
  4314. ,   57,   58,   59,   60,   61,  122,  123,   62,   63,   64
  4315. ,  154,  232,   65,  153,  234,  150,   66,  233,   67,   68
  4316. ,  211,  309,   69,   70,  124,  143,   71,  148,  151,  100
  4317. ,  237,  305,  541,  592,  593,  599,  625,  678,  792,  373
  4318. ,  602,  609,  776,  785,  834,  838,  878,  479,  710,  610
  4319. ,  374,  712,  773,  777,  788,  827,  831,  877,  902,  910
  4320. ,  919,  931,  480,  611,  481,  612,  482,  483,  484,  485
  4321. ,  486,  487,  488,  699,  489,  490,  491,  492,  700,  493
  4322. ,  494,  495,  496,  497,  701,  498,  499,  613,  595,  692
  4323. ,  772,  782,  596,  688,  713,  769,  775,  832,  620,  767
  4324. ,  829,  901,  873,  500,  300,  378,  381,  623,  716,  742
  4325. ,  789,  812,  856,  881,  897,  908,  617,  288,  619,  171
  4326. ,  175,  652,  715,  621,  501,   25,   90,  241,  280,  297
  4327. ,  351,  460,   79,   80,  163,  440,  533,  239,  245,  518
  4328. ,  764,  858,  896,  925,  339,  347,  826,  890,  917,  935
  4329. ,   75,  176,  337,  244,  338,  291,   26,   91,   27,   92
  4330. ,   28,  281,  386,  282,  546,  653,  655,  743,  811,  656
  4331. ,  685,  502,  503,  504,  603,  839,  706,  702,  876,  703
  4332. ,  704,  905,  705,  778,  779,  780,  683,    4,    5,    6
  4333. ,   11,    7,   29,   30,    8,   94,  383,  178,   34,  166
  4334. ,  793,  909,  846,  719,  794,   31,   32,   76,  162,  414
  4335. ,  802,  343,  249,  292,  335,  430,  507,  515,  734,  534
  4336. ,  622,  626,  431,  432,  433,  640,  283,  284,  285,  286
  4337. ,  644,  740,  645,  739,   72,  219,  101,  720,   96)  ;
  4338.         --| Shift_State_ is an array that
  4339.         --| maps from non-terminals (using shift  map) to sets
  4340.         --| of states in which
  4341.         --| a shift to the non-terminal is defined.
  4342.         --| Used to determine the number of trials in primary
  4343.         --| error recovery.
  4344.      
  4345.     ------------------------------------------------------------------
  4346.     -- Subprogram Bodies Global to Package ErrorParseTables
  4347.     ------------------------------------------------------------------
  4348.      
  4349.     function Get_Action_Token_Map ( --| return the array of action tokens
  4350.                                     --| for the state passed in.
  4351.         In_Index : in StateRange
  4352.                                     --| the state to return action tokens
  4353.                                     --| for.
  4354.         )
  4355.         return Action_Token_Record
  4356.         is
  4357.         --| Returns
  4358.         --| This subprogram returns the action token record for the
  4359.         --| state passed in.
  4360.         Result : Action_Token_Record ;
  4361.         LowerBound, UpperBound : GC.ParserInteger ;
  4362.         --| Lower and upper bounds of the slice of Action Token Map
  4363.     begin
  4364.         LowerBound := Action_Token_MapIndex ( In_Index*2 - 1 ) ;
  4365.         UpperBound := Action_Token_MapIndex ( In_Index*2 ) ;
  4366.      
  4367.         Result.set_size := UpperBound - LowerBound + 1;
  4368.         Result.set := (others => DefaultValue) ;
  4369.         Result.set(Result.set'first .. Result.set_size) :=
  4370.         Action_Token_Map(LowerBound..UpperBound) ;
  4371.      
  4372.         return Result ;
  4373.     end Get_Action_Token_Map ;
  4374.      
  4375.     ------------------------------------------------------------------
  4376.      
  4377.     function Get_Shift_State_Map (  --| return the array of shift states
  4378.                                 --| for the grammar symbol passed in.
  4379.         In_Index : in GrammarSymbolRange
  4380.                                 --| the grammar symbol to return shifts
  4381.                                 --| for.
  4382.         )
  4383.         --| Raises: This subprogram raises no exceptions.
  4384.         return Shift_State_Record
  4385.         --| Returns
  4386.         --| This subprogram returns the array of shift states for the
  4387.         --| grammar symbol passed in.
  4388.         is
  4389.      
  4390.         Result : Shift_State_Record ;
  4391.         LowerBound, UpperBound : GC.ParserInteger ;
  4392.           --| Lower and upper bounds of the slice of Shift State Map
  4393.     begin
  4394.         LowerBound := Shift_State_MapIndex ( In_Index*2 - 1 ) ;
  4395.         UpperBound := Shift_State_MapIndex ( In_Index*2 ) ;
  4396.      
  4397.         Result.set_size := UpperBound - LowerBound + 1;
  4398.         Result.set := (others => DefaultValue) ;
  4399.         Result.set(Result.set'first .. Result.set_size) :=
  4400.             Shift_State_Map(LowerBound..UpperBound) ;
  4401.      
  4402.         return Result ;
  4403.     end Get_Shift_State_Map ;
  4404.      
  4405.     function Get_Grammar_Symbol (   --| return the string representation
  4406.                                     --| of the grammar symbol
  4407.         In_Index : in GrammarSymbolRange
  4408.         )
  4409.         return string
  4410.         is
  4411.         LowerBound, UpperBound : GC.ParserInteger ;
  4412.       --| Lower and upper bounds of the slice of Shift State Map
  4413.     begin
  4414.         LowerBound := GrammarSymbolTableIndex ( In_Index*2 - 1 ) ;
  4415.         UpperBound := GrammarSymbolTableIndex ( In_Index*2 ) ;
  4416.      
  4417.         return GrammarSymbolTable(
  4418.             Integer(LowerBound) .. Integer(UpperBound)) ;
  4419.     end Get_Grammar_Symbol ;
  4420.      
  4421.     ------------------------------------------------------------------
  4422.      
  4423.     function Get_Follow_Map (       --| return the array of follow symbols
  4424.                                 --| of the grammar symbol passed in
  4425.         In_Index : in FollowMapRange
  4426.         )
  4427.         -- |
  4428.         -- |Raises: This subprogram raises no exceptions.
  4429.         -- |
  4430.      
  4431.       return FollowSymbolRecord
  4432.       is
  4433.         Result : FollowSymbolRecord ;
  4434.         LowerBound, UpperBound : GC.ParserInteger ;
  4435.         Adjusted_Index : GC.ParserInteger :=
  4436.           (In_Index - FollowMapRange'first) + 1;
  4437.     begin
  4438.         LowerBound := FollowSymbolMapIndex ( Adjusted_Index*2 - 1 ) ;
  4439.         UpperBound := FollowSymbolMapIndex ( Adjusted_Index*2 ) ;
  4440.      
  4441.         Result.follow_symbol_count := UpperBound - LowerBound + 1;
  4442.         Result.follow_symbol := (others => DefaultValue) ;
  4443.         Result.follow_symbol(
  4444.           Result.follow_symbol'first ..
  4445.           Result.follow_symbol_count) :=
  4446.             FollowSymbolMap(LowerBound..UpperBound) ;
  4447.      
  4448.         return Result ;
  4449.     end Get_Follow_Map ;
  4450.      
  4451.     ------------------------------------------------------------------
  4452.      
  4453.     function GetAction (            -- see subprogram declaration
  4454.       InStateValue  : in StateRange;
  4455.       InSymbolValue : in GrammarSymbolRange
  4456.       )
  4457.       return ActionRange
  4458.       is
  4459.      
  4460.         Unique : GC.ParserInteger;
  4461.             --| unique value to hash for Index.
  4462.         Index  : GC.ParserInteger;
  4463.             --|  into Action Tables.
  4464.         Action : GC.ParserInteger;
  4465.             --| value from Action Tables.
  4466.         CollisionCount : Natural := 0 ; --| Number of collisions.
  4467.     begin -- GetAction function
  4468.     --| Algorithm
  4469.     --|-
  4470.     --| Definitions of key objects from package ParseTables:
  4471.     --|
  4472.     --| ActionCount: the number of actions in the action tables.
  4473.     --|
  4474.     --| ActionTableOne: table of action values for all combinations of
  4475.     --|     states and input actions.
  4476.     --|
  4477.     --| ActionTableTwo: hash values to check against to verify that action
  4478.     --|     value at same  in ActionTableOne is correct one.
  4479.     --|
  4480.     --| ActionTableSize: last  in ActionTableOne and ActionTableTwo
  4481.     --|     before the hash collision chains.
  4482.     --|
  4483.     --| DefaultMap: default action for each state.
  4484.     --|+
  4485.     --| The action to be returned is computed from parameters InStateValue
  4486.     --| and InSymbolValue. First, determine the unique single value:
  4487.     --|
  4488.     --|     Unique := (InStateValue * GrammarSymbolCountPlusOne) +
  4489.     --|                InSymbolValue;
  4490.     --|
  4491.     --| Unique is hashed by reducing modulo ActionTableSize and adding 1:
  4492.     --|
  4493.     --|     Index := (Unique mod ActionTableSize) + 1;
  4494.     --|
  4495.     --| This hash value, Index, is used to  ActionTableOne to
  4496.     --| obtain an Action:
  4497.     --|
  4498.     --|     Action := ActionTableOne(Index);
  4499.     --|
  4500.     --| Action is then used to determine the return value:
  4501.     --|
  4502.     --| Action = 0:
  4503.     --|     return DefaultMap(InStateValue);
  4504.     --|
  4505.     --| Action < ActionCount:
  4506.     --|     if (Unique = ActionTableTwo(Index)) then
  4507.     --|         return Action;
  4508.     --|     else
  4509.     --|         return DefaultMap(InStateValue);
  4510.     --|     end if;
  4511.     --|
  4512.     --| Action >= ActionCount:
  4513.     --|     --Search the hash collision chain
  4514.     --|     Index := Action - ActionCount;
  4515.     --|     while (Action /= 0) loop
  4516.     --|         Index := Index + 1;
  4517.     --|         Action := ActionTableTwo(Index);
  4518.     --|         if (Action = Unique) then
  4519.     --|             return ActionTableOne(Index);
  4520.     --|         end if;
  4521.     --|     end loop;
  4522.     --|     return DefaultMap(InStateValue);
  4523.      
  4524.     ------------------------------------------------------------------
  4525.      
  4526.   --| The actual code used folds this algorithm into a more efficient one:
  4527.         ParserDecisionCount := Natural'succ(ParserDecisionCount) ;
  4528.      
  4529.         Unique := (InStateValue * GrammarSymbolCountPlusOne) +
  4530.                         InSymbolValue;
  4531.         Index := (Unique mod ActionTableSize) + 1;
  4532.         Action := ActionTableOne(Index);
  4533.      
  4534.         if (Action >= ActionCount) then
  4535.             Index := Action - ActionCount + 1;
  4536.             while ( (ActionTableTwo(Index) /= Unique) and then
  4537.                     (ActionTableTwo(Index) /= 0) ) loop
  4538.                 Index := Index + 1;
  4539.             CollisionCount := Natural'succ(CollisionCount) ;
  4540.             end loop;
  4541.             Action := ActionTableOne(Index);
  4542.         end if;
  4543.      
  4544.         -- Collect statistics information.
  4545.         TotalCollisions := CollisionCount + TotalCollisions ;
  4546.         if CollisionCount > MaxCollisions then
  4547.             MaxCollisions := CollisionCount ;
  4548.         end if;
  4549.      
  4550.         if (ActionTableTwo(Index) /= Unique) then
  4551.             return DefaultMap(InStateValue);
  4552.         else
  4553.             return Action;
  4554.         end if;
  4555.      
  4556.     end GetAction; -- function
  4557.      
  4558.     function Get_LeftHandSide(
  4559.       GrammarRule : LeftHandSideRange
  4560.       ) return GrammarSymbolRange is
  4561.     begin
  4562.         return LeftHandSide(GrammarRule) ;
  4563.     end Get_LeftHandSide ;
  4564.      
  4565.     function Get_RightHandSide(
  4566.       GrammarRule : RightHandSideRange
  4567.       ) return GC.ParserInteger is
  4568.     begin
  4569.         return RightHandSide(GrammarRule) ;
  4570.     end Get_RightHandSide ;
  4571.      
  4572. end ParseTables;
  4573.      
  4574. ----------------------------------------------------------------------
  4575. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4576. --REPORT.BDY
  4577. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4578.  
  4579. with string_pkg; use string_pkg;  -- for = and & etc.
  4580. with compile_order_declarations; use compile_order_declarations; -- global variables
  4581. with units_dag_pkg;
  4582. with mini_dag_pkg;
  4583. with nodes;
  4584. with lookup_lists;
  4585. with paginated_output;
  4586. with file_manager;
  4587. with TEXT_IO;
  4588.  
  4589.  
  4590. package body report_pkg is
  4591.  
  4592.               ----- Package Renames -----
  4593.  
  4594. package SP renames string_pkg;
  4595. package COD renames compile_order_declarations;
  4596. package PG renames Paginated_output;
  4597. package FM renames file_manager;
  4598. package LL renames lookup_lists;
  4599. package WDAG renames units_dag_pkg;    -- WDAG for withs_dag
  4600. package IDAG renames mini_dag_pkg;    -- IDAG for info_dag
  4601.  
  4602.                    -- Local Variables --
  4603. subtype indent_range is integer range 0..39;
  4604. line_len : constant positive := 80;
  4605. prev_indent : indent_range := 0;
  4606. prev_unit : SP.string_type;
  4607.  
  4608.                    -- Local Operation Specifications--
  4609.  
  4610.  
  4611. procedure add_file_to_dag (  --| procedure which puts the file dependence
  4612.                              --| info in the file_dag.
  4613.     node_label : in SP.string_type   --| node to add the info for
  4614.     );
  4615.  
  4616. --| Effects: this adds the dependencies of this file upon other files
  4617. --| to the file_dag.  It does this by looking at the file part of the
  4618. --| node's value, creates a node for this file if there isn't one, and
  4619. --| then looking at the file parts of the nodes withed by this one.
  4620. --| Edges are added from the original file node to each of these files
  4621. --| Basically this creates a dag with the labels being what was the
  4622. --| information in the nodes of the withs_dag.  It will have the same
  4623. --| number or fewer nodes, and it will show the dependencies between
  4624. --| files which, after all, are the things that are passed to the
  4625. --| compiler.
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631. procedure withs_gen (          --| generates the with dependencies for
  4632.                   --| the given node
  4633.     n : in SP.string_type;      --| the node's label
  4634.     seen : in out COD.id_set;      --| set of nodes already seen
  4635.     indent : in out indent_range; --| number of spaces to indent the output
  4636.     leaf_list :           --| list of the nodes which are leaves
  4637.     in out COD.id_list_pkg.list
  4638.     );
  4639.  
  4640. --| Effects: Recursively writes the dependencies of the branch of the graph
  4641. --| starting at the node with the given label.
  4642. --| It collects the leaf list for use by the report which generates the 
  4643. --| withed-by dependencies.
  4644.  
  4645.             ----------------
  4646. Procedure withed_by_gen (      --| generates the  withed-by dependencies for
  4647.                   --| the given node
  4648.     n : in SP.string_type;      --| the node's label
  4649.     seen : in out COD.id_set;      --| set of nodes already seen
  4650.     indent : in out indent_range --| number of spaces to indent the output
  4651.     );
  4652.  
  4653. --| Effects: Similar to those of withs_gen.  It's not keeping track of leaf
  4654. --| nodes because that's what it starts from.
  4655.  
  4656.             ----------------
  4657.  
  4658.             -- Operations --
  4659.  
  4660.  
  4661. procedure dependency_report(--| Using the information in the DAG
  4662.                 --| form and output the dependency table
  4663.     report: in form_type    --| output the report in full or raw form
  4664.     ) is
  4665. --| Overview: produce the dependency report from the dag built from the
  4666. --| information gathered.  this is done using a depth first search to
  4667. --| produce a nested structure of dependencies in the report.
  4668.  
  4669.     roots : WDAG.roots_iter;
  4670.     seen : COD.id_set := COD.id_set_pkg.create;
  4671.     node : SP.string_type;
  4672.     leaf_list : COD.id_list_pkg.list;
  4673.     indent : indent_range := 0;
  4674.     leaves : COD.id_list_pkg.ListIter;
  4675.     leaf_node : SP.string_type;
  4676.  
  4677.     begin
  4678.  
  4679. --| Algorithm
  4680. --|  To get the withs information:
  4681. --|     Do a depth first search
  4682. --|    and output the results indented as in the manual.
  4683. --|  To get the withed-by information:
  4684. --|     Do an upward (parents) DFS
  4685. --|    output results indented as in the manual.
  4686.  
  4687.  
  4688.         if report = full then
  4689.          -- write line (" Dependency Report:           ");
  4690.          -- write line (" Withs:                       ");
  4691.          -- write line ("   ") --newline
  4692.         PG.put_line (COD.report_file, " Dependency Report:     ");
  4693.         PG.skip_line (COD.report_file);
  4694.         PG.put_line (COD.report_file, "Withs Dependencies:     ");
  4695.         PG.skip_line (COD.report_file);
  4696.         PG.Set_Header (COD.report_file, 3, "Withs Dependencies:   ");
  4697.         end if;
  4698.         roots := WDAG.make_roots_iter (COD.withs_dag);
  4699.         while WDAG.more (roots) loop
  4700.             WDAG.next (roots, node);
  4701.             withs_gen (node, seen, indent, leaf_list);
  4702.         PG.skip_line (COD.report_file);
  4703.         end loop;
  4704.     PG.skip_line (COD.report_file);
  4705.     PG.skip_line (COD.report_file);
  4706.         seen := COD.id_set_pkg.create;
  4707.         indent := 0;
  4708.         if report = full then
  4709.             -- write line (" Withed by dependencies:    ");
  4710.             -- write line ("          "); -- new line
  4711.                PG.put_line (COD.report_file, "Withed-by Dependencies:   ");
  4712.         PG.skip_line (COD.report_file);
  4713.         PG.Set_Header (COD.report_file, 3, "Withed-by Dependencies:   ");
  4714.         end if;
  4715.         leaves := COD.id_list_pkg.MakeListIter (leaf_list);
  4716.         while COD.id_list_pkg.more (leaves) loop
  4717.             COD.id_list_pkg.next (leaves, leaf_node);
  4718.             withed_by_gen (leaf_node, seen, indent);
  4719.         PG.skip_line (COD.report_file);
  4720.         end loop;
  4721.         --- write 3 new lines
  4722.     PG.skip_line (COD.report_file);
  4723.     PG.skip_line (COD.report_file);
  4724.     PG.skip_line (COD.report_file);
  4725.  
  4726.     end dependency_report;
  4727.             ----------------
  4728.  
  4729.         
  4730. procedure compilation_list( --| Using the DAG form and produce
  4731.                   --| the compilation order list
  4732.     report: in form_type    --| output the report in full or raw form
  4733.     ) is
  4734.  
  4735.  
  4736. --| Overview: produce the compilation lists required by report.  If the
  4737. --| file list is required build the file dag from the infomation stored
  4738. --| in the units dag.  If there were cycles created in the units dag
  4739. --| write out the dependencies which caused the cycles ( saved in the
  4740. --| cycles_dag).
  4741.  
  4742.     iter : WDAG.postorder_iter;
  4743.     files_iter : IDAG.postorder_iter;
  4744.     file_name : SP.string_type;
  4745.     node_label : SP.string_type;
  4746.     temp_string : SP.string_type;
  4747.     node_val : nodes.dag_node;
  4748.     file_string : SP.string_type;
  4749.     output : string (1..line_len);
  4750.     file_begin : constant := 1;
  4751.     file_end : constant := 19;
  4752.     unit_begin : constant := 21;
  4753.     unit_end : constant := 78;
  4754.  
  4755.     begin
  4756.     SP.mark;
  4757.  
  4758. --| Algorithm
  4759. --| If the cycles dag is not empty then
  4760. --|   write out the dependencies which caused the cycles
  4761. --| end if
  4762. --| -- dag package will yeild a correct ordering so let it yield one
  4763. --| for each label value in the ordering of the dag do
  4764. --|   print the label (the unit name)
  4765. --|   if value.trouble node is true then
  4766. --|     follow the label with a '*' to indicate trouble with the
  4767. --|      ordering within the file.
  4768. --|   end if
  4769. --|   print the value.file in parentheses
  4770. --| end for
  4771. --| if we need the file list
  4772. --|   build the file dag from the dependency and file info in the
  4773. --|   units dag
  4774. --|   for each label in an ordering of this dag
  4775. --|     write out the label
  4776. --|   end for
  4777. --| end if
  4778.  
  4779.     if report = full then
  4780.         -- write line (" Compilation List:      ");
  4781.         -- write header on next line
  4782.         -- also set header for next page
  4783.         -- write a new line
  4784.     PG.put_line (COD.report_file, " Compilation List:        ");
  4785.     PG.skip_line (COD.report_file);
  4786.     end if;
  4787.  
  4788.     if report /= files then
  4789.     if report = full then
  4790.             output := (output'range =>  ' ');
  4791.         output (1..9) := "File Name";
  4792.         output (20..35) := "Compilation Unit";
  4793.         PG.put_line (COD.report_file, output);
  4794.         PG.skip_line (COD.report_file);
  4795.         PG.Set_Header (COD.report_file, 3, output);
  4796.     end if;
  4797.         iter := WDAG.make_postorder_iter (COD.withs_dag);
  4798.         while WDAG.more (iter) loop
  4799.             WDAG.next (iter, node_label, node_val);
  4800.             temp_string := node_val.name;
  4801.         if SP.length (temp_string) > (unit_end - unit_begin) + 1 then
  4802.         temp_string := SP.substr (temp_string,
  4803.                       1,
  4804.                       (unit_end - unit_begin) + 1);
  4805.         end if;
  4806.             if node_val.trouble_node then
  4807.                 temp_string := SP."&" (temp_string, " *");
  4808.             end if;
  4809.             if SP.equal ( node_val.file, "") then
  4810.         begin
  4811.         file_string := SP."&" ("# ", 
  4812.                        FM.strip_dir (LL.lookup (node_label)));
  4813.         exception
  4814.             when LL.not_found =>
  4815.             file_string := SP.create ("(not found)");
  4816.         end;
  4817.         else
  4818.         file_string := FM.strip_dir (node_val.file);
  4819.         if SP.length (file_string) > file_end then
  4820.             file_string := SP.substr (file_string, 1, file_end);
  4821.            end if;    
  4822.         end if;
  4823.          
  4824.             output := (output'range =>  ' ');
  4825.         output (file_begin..SP.length (file_string)) :=
  4826.             SP.value (file_string);
  4827.             output (unit_begin..SP.length(temp_string)+(unit_begin-1)) := 
  4828.             SP.value (temp_string);
  4829.             PG.put_line (COD.report_file, output);
  4830.  
  4831.         end loop;
  4832.         PG.skip_line (COD.report_file);
  4833.         PG.skip_line (COD.report_file);
  4834.     end if;
  4835.     if report /= units then
  4836.     if report = full then
  4837.         PG.skip_line (COD.report_file);
  4838.         PG.put_line (COD.report_file, "File Order: ");
  4839.         PG.skip_line (COD.report_file);
  4840.         PG.Set_Header (COD.report_file, 3, "File Order: ");
  4841.     end if;
  4842.     files_iter := IDAG.make_postorder_iter (COD.files_dag);
  4843.     while IDAG.more(files_iter) loop
  4844.         IDAG.next (files_iter, file_name);
  4845.         PG.put_line (COD.report_file, file_name);
  4846.     end loop;
  4847.     end if;
  4848.     PG.Skip_Line (COD.report_file);
  4849.     PG.Skip_Line (COD.report_file);
  4850.     SP.release;
  4851.  
  4852.     end compilation_list;
  4853.  
  4854.             --------------------
  4855.  
  4856. procedure report_cycles     --| Report any cycles found in the units given
  4857.     is
  4858.  
  4859.     e_iter : IDAG.edges_iter;
  4860.     from : SP.string_type;
  4861.     to : SP.string_type;
  4862.     temp_string : SP.string_type;
  4863.     n_iter : WDAG.nodes_iter;
  4864.     node_label : SP.string_type;
  4865.  
  4866.     begin
  4867.     SP.mark;
  4868.  
  4869.     n_iter := WDAG.make_nodes_iter (COD.withs_dag);
  4870.     while WDAG.more (n_iter) loop
  4871.     WDAG.next (n_iter, node_label);
  4872.     add_file_to_dag (node_label);
  4873.     end loop;
  4874.  
  4875.     if not IDAG.is_empty (COD.cycle_dag) then
  4876.         e_iter := IDAG.make_edges_iter (COD.cycle_dag);
  4877.     PG.put_line (COD.report_file,
  4878.         "The reports following do not reflect these cyclic dependencies");
  4879.     PG.put_line (COD.report_file, 
  4880.         "The following dependencies cause cycles :      ");
  4881.     PG.skip_line (COD.report_file);
  4882.         while IDAG.more (e_iter) loop
  4883.             IDAG.next (e_iter, from, to);
  4884.             temp_string := "A dependency from " & from & " to "  & to;
  4885.         PG.put_line (COD.report_file, temp_string);
  4886.         end loop;
  4887.     PG.skip_line (COD.report_file);
  4888.     PG.skip_line (COD.report_file);
  4889.     end if;
  4890.     SP.release;
  4891.  
  4892. end report_cycles;
  4893.  
  4894.     --- Bodies of subprograms local to report_pkg ---
  4895.  
  4896.  
  4897. procedure add_file_to_dag (  --| procedure which puts the file dependence
  4898.                              --| info in the file_dag.
  4899.     node_label : in SP.string_type   --| node to add the info for
  4900.     ) is
  4901.  
  4902.     iter : WDAG.succs_iter;
  4903.     node_value : nodes.dag_node;
  4904.     dummy_label : SP.string_type;
  4905.     file_name : SP.string_type;
  4906.     dep_value : nodes.dag_node;
  4907.     dep_file : SP.string_type;
  4908.  
  4909.     begin
  4910.  
  4911.     node_value := WDAG.get_value (COD.withs_dag, node_label);
  4912.         file_name := SP.make_persistent (node_value.file);
  4913.     if not SP.equal (file_name, "") then
  4914.         begin
  4915.             IDAG.add_node (COD.files_dag, 
  4916.                 file_name, 
  4917.                 COD.default_empty_node);
  4918.  
  4919.         exception
  4920.             when IDAG.illegal_node =>
  4921.             null;
  4922.         end;
  4923.         iter := WDAG.make_succs_iter (COD.withs_dag, node_label);
  4924.         while WDAG.more (iter) loop
  4925.             WDAG.next (iter, dummy_label, dep_value);
  4926.             dep_file := dep_value.file;
  4927.             if not SP.equal (dep_file, "") then
  4928.              begin
  4929.                     IDAG.add_node (COD.files_dag, 
  4930.                            dep_file, 
  4931.                           COD.default_empty_node);
  4932.             IDAG.add_edge (COD.files_dag, 
  4933.                        file_name, 
  4934.                        dep_file);
  4935.             exception
  4936.                 when IDAG.illegal_node =>
  4937.                 -- just means the node is already there so ignore 
  4938.                 -- it. Still need to add the edge.
  4939.                 begin
  4940.                    IDAG.add_edge (COD.files_dag, 
  4941.                            file_name, 
  4942.                            dep_file);
  4943.                 exception
  4944.                     when IDAG.makes_cycle =>
  4945.                     -- need to keep track of where the 
  4946.                     -- cycles are.  Unless the cycle is an
  4947.                     -- an edge from a node to itself.  This
  4948.                     -- happens when one unit in a file withs
  4949.                     -- another.
  4950.                     begin
  4951.                         if not SP.equal (file_name, dep_file)
  4952.                       then
  4953.                         IDAG.add_node (COD.cycle_dag, 
  4954.                                 file_name, 
  4955.                                  COD.default_empty_node);
  4956.                         IDAG.add_node (COD.cycle_dag, 
  4957.                                dep_file,
  4958.                                COD.default_empty_node);
  4959.                         IDAG.add_edge (COD.cycle_dag, 
  4960.                             file_name, 
  4961.                             dep_file);
  4962.                     end if;
  4963.                        exception
  4964.                         when IDAG.illegal_node | 
  4965.                          IDAG.makes_cycle =>
  4966.                              null;
  4967.                     end;
  4968.                         when IDAG.duplicate_edge =>
  4969.                         -- Two things in one file have a 
  4970.                     -- with in common. this is still ok 
  4971.                     -- so ignore it.
  4972.                         null;
  4973.                 end;
  4974.                 when IDAG.makes_cycle =>
  4975.                 -- something in the file depends on something else
  4976.                 -- in the file.  This is ok so we can ignore it.
  4977.                 null;
  4978.                 when IDAG.duplicate_edge =>
  4979.                 -- Two things in one file have a with in common
  4980.                 -- this is still ok so ignore it.
  4981.                 null;
  4982.  
  4983.             end;
  4984.         end if;
  4985.          end loop;
  4986.     end if;
  4987.   
  4988.     end add_file_to_dag;
  4989.  
  4990. procedure withs_gen (          --| generates the with dependencies for
  4991.                   --| the given node
  4992.     n : in SP.string_type;      --| the node's label
  4993.     seen : in out COD.id_set;      --| set of nodes already seen
  4994.     indent : in out indent_range; --| number of spaces to indent the output
  4995.     leaf_list : in out COD.id_list_pkg.list    
  4996.                   --| list of the nodes which are leaves
  4997.     ) is
  4998.  
  4999.     lead_space : integer range 0..line_len;
  5000.     output : string (1..line_len);
  5001.     successors : WDAG.succs_iter;
  5002.     succ : SP.string_type;
  5003.     node_value : nodes.dag_node;
  5004.     diff : integer range 0..line_len;
  5005.     temp_string : SP.string_type;
  5006.     new_indent : indent_range;
  5007.  
  5008.     use string_pkg;
  5009.  
  5010.     begin
  5011.     lead_space := (indent * 2) + 1;
  5012.        output := (output'range => ' ');
  5013.     node_value := WDAG.get_value (COD.withs_dag, n);
  5014.     if COD.id_set_pkg.is_member (seen, n) then
  5015.         begin
  5016.            output (lead_space..lead_space + SP.length(node_value.name) + 1)
  5017.                 := "{" & SP.value (node_value.name) & "}";
  5018.            PG.put_line (COD.report_file, output);
  5019.            exception
  5020.             when constraint_error =>
  5021.             -- string goes over line_len chars
  5022.             SP.mark;
  5023.             diff := line_len - lead_space - 1;
  5024.             temp_string := 
  5025.                 "{" & SP.substr (node_value.name, 1, diff) & "}";
  5026.             output (lead_space..line_len) := 
  5027.                 SP.value (temp_string);
  5028.             PG.put_line (COD.report_file, output);
  5029.             SP.release;
  5030.         end;
  5031.       else
  5032.         COD.id_set_pkg.insert (seen, n);
  5033.         node_value := WDAG.get_value (COD.withs_dag, n);
  5034.            new_indent := indent + 1;
  5035.         begin
  5036.            output (lead_space..lead_space + SP.length(node_value.name) - 1)
  5037.                 := SP.value (node_value.name);
  5038.            prev_indent := indent;
  5039.            prev_unit := node_value.name;
  5040.            PG.put_line (COD.report_file, output);
  5041.            exception
  5042.             when constraint_error =>
  5043.             -- string goes over line_len chars
  5044.             output (1..4) := "****";
  5045.             output (9..SP.length (prev_unit)+8) := 
  5046.                 SP.value (prev_unit);
  5047.             PG.put_line (COD.report_file, output);
  5048.             output := (output'range => ' ');
  5049.             if prev_indent = indent then
  5050.                 output (9..SP.length (node_value.name)+8) := 
  5051.                     SP.value (node_value.name);
  5052.                 new_indent := 5;
  5053.             else
  5054.                 output (11..SP.length (node_value.name)+10) := 
  5055.                     SP.value (node_value.name);
  5056.                 new_indent := 6;
  5057.             end if;
  5058.                 
  5059.             PG.put_line (COD.report_file, output);
  5060.         end;
  5061.         if WDAG.is_leaf (COD.withs_dag, n) then
  5062.         COD.id_list_pkg.attach (leaf_list, n);
  5063.         new_indent := new_indent - 1;
  5064.         else
  5065.             successors := WDAG.make_succs_iter (COD.withs_dag, n);
  5066.             while WDAG.more (successors) loop
  5067.             WDAG.next (successors, succ);
  5068.             withs_gen (succ, seen, new_indent, leaf_list);
  5069.         end loop;
  5070.         end if;
  5071.     end if;
  5072.  
  5073.     end withs_gen;
  5074.             ----------------
  5075. Procedure withed_by_gen (      --| generates the  withed-by dependencies for
  5076.                   --| the given node
  5077.     n : in SP.string_type;      --| the node's label
  5078.     seen : in out COD.id_set;      --| set of nodes already seen
  5079.     indent : in out indent_range --| number of spaces to indent the output
  5080.     ) is
  5081.  
  5082.     lead_space : integer range 0..line_len;
  5083.     output : string (1..line_len);
  5084.     preds : WDAG.preds_iter;
  5085.     parent : SP.string_type;
  5086.     node_value : nodes.dag_node;
  5087.     diff : integer range 0..line_len;
  5088.     temp_string : SP.string_type;
  5089.     new_indent : indent_range;
  5090.  
  5091.     use string_pkg;
  5092.  
  5093.     begin
  5094.     lead_space := (indent * 2) + 1;
  5095.        output := (output'range => ' ');
  5096.         node_value := WDAG.get_value (COD.withs_dag, n);
  5097.     if COD.id_set_pkg.is_member (seen, n) then
  5098.         begin
  5099.            output (lead_space..lead_space + SP.length(node_value.name) + 1)
  5100.                 := "{" & SP.value (node_value.name) & "}";
  5101.            PG.put_line (COD.report_file, output);
  5102.            exception
  5103.             when constraint_error =>
  5104.             -- string goes over line_len chars
  5105.             SP.mark;
  5106.             diff := line_len - lead_space - 1;
  5107.             temp_string := 
  5108.                 "{" & SP.substr (node_value.name, 1, diff) & "}";
  5109.             output (lead_space..line_len) := 
  5110.                 SP.value (temp_string);
  5111.             PG.put_line (COD.report_file, output);
  5112.             SP.release;
  5113.         end;
  5114.       else
  5115.         COD.id_set_pkg.insert (seen, n);
  5116.         new_indent := indent + 1;
  5117.         begin
  5118.            output (lead_space..lead_space + SP.length(node_value.name) - 1)
  5119.                 := SP.value (node_value.name);
  5120.            prev_indent := indent;
  5121.            prev_unit := node_value.name;
  5122.            PG.put_line (COD.report_file, output);
  5123.            exception
  5124.             when constraint_error =>
  5125.             -- string goes over line_len chars
  5126.             output (1..4) := "****";
  5127.             output (9..SP.length (prev_unit)+8) := 
  5128.                 SP.value (prev_unit);
  5129.             PG.put_line (COD.report_file, output);
  5130.             output := (output'range => ' ');
  5131.             if prev_indent = indent then
  5132.                 output (9..SP.length (node_value.name)+8) := 
  5133.                     SP.value (node_value.name);
  5134.                 new_indent := 5;
  5135.             else
  5136.                 output (11..SP.length (node_value.name)+10) := 
  5137.                     SP.value (node_value.name);
  5138.                 new_indent := 6;
  5139.             end if;
  5140.             PG.put_line (COD.report_file, output);
  5141.         end;
  5142.         preds := WDAG.make_preds_iter (COD.withs_dag, n);
  5143.         while WDAG.more (preds) loop
  5144.         WDAG.next (preds, parent);
  5145.         withed_by_gen (parent, seen, new_indent);
  5146.         end loop;
  5147.          
  5148.     end if;
  5149.  
  5150.     end withed_by_gen;
  5151.  
  5152.             ------------
  5153. end report_pkg;
  5154. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5155. --LOOKUP.BDY
  5156. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5157. with string_scanner;
  5158.  
  5159. package body lookup_lists is
  5160.  
  5161. use string_pkg;        -- for "&" etc...
  5162.  
  5163. ---- Package Renames:
  5164. package SS renames string_scanner;
  5165.  
  5166. procedure add_elt (            --| add a record to the lookup
  5167.                     --| list
  5168.     unit : in SP.string_type;        --| unit name of the record
  5169.     file : in SP.string_type        --| file name of the record
  5170.     );
  5171. pragma inline (add_elt);
  5172.  
  5173. procedure init_list (            --| initialize the list
  5174.                     --| from the list in the file
  5175.     file : TEXT_IO.file_type
  5176.     ) is
  5177.     scan : SS.scanner;
  5178.     temp : string (1..80);
  5179.     last : natural;
  5180.     unit_name : SP.string_type;
  5181.     unit_type : SP.string_type;
  5182.     unit_file : SP.string_type;
  5183.     skip_blanks : boolean := true;
  5184.     found : boolean;
  5185.     begin
  5186.     loop
  5187.         text_io.get_line (file, temp, last);
  5188.         scan := SS.make_scanner (SP.create (temp (1..last)));
  5189.         SS.scan_word (scan, found, unit_file, skip_blanks);
  5190.         if found then
  5191.         if SP.equal (unit_file, "#") then
  5192.             SS.scan_word (scan, found, unit_file, skip_blanks);
  5193.         end if;
  5194.         SS.scan_word (scan, found, unit_name, skip_blanks);
  5195.         SS.scan_word (scan, found, unit_type, skip_blanks);
  5196.         unit_name := unit_name & " " & unit_type;
  5197.         if found then
  5198.             add_elt (SP.upper (unit_name), unit_file);
  5199.         else
  5200.             raise wrong_format;
  5201.          end if;
  5202.         -- else it might be a blank line in the middle so just
  5203.         --      continue reading from the file.
  5204.         end if;
  5205.     end loop;
  5206.     exception
  5207.         when text_io.end_error =>
  5208.         -- we've finished reading the file
  5209.         null;
  5210.     end init_list;    
  5211.  
  5212. function lookup (            --| lookup the file name for 
  5213.                     --| the given unit name.
  5214.     unit : in SP.string_type
  5215.     ) 
  5216.     return SP.string_type is
  5217.  
  5218.     iter : l_list_pkg.listIter;
  5219.     elt  : lookup_record;
  5220.     begin
  5221.     iter := l_list_pkg.MakeListIter (lookup_list);
  5222.     while l_list_pkg.more (iter) loop
  5223.         l_list_pkg.next (iter, elt);
  5224.         if SP.equal (unit, elt.unit_name) then
  5225.         return elt.file_name;
  5226.         end if;
  5227.     end loop;
  5228.     raise not_found;
  5229.     end lookup;
  5230.  
  5231. procedure add_elt (            --| add a record to the lookup
  5232.                     --| list
  5233.     unit : in SP.string_type;        --| unit name of the record
  5234.     file : in SP.string_type        --| file name of the record
  5235.     ) is
  5236.     elt : lookup_record;
  5237.     begin
  5238.     elt := (unit_name => SP.upper (unit), 
  5239.         file_name =>           file);
  5240.     l_list_pkg.attach (lookup_list, elt);
  5241.     end add_elt;
  5242.  
  5243. end lookup_lists;
  5244. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5245. --CMPUTIL.SPC
  5246. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5247. with string_pkg;
  5248.  
  5249. package compile_order_utilities is
  5250. --| The procedures forming the actions on the grammar for compile_order.
  5251.  
  5252. --| Overview
  5253.  
  5254. --| The procedures are for the most part quite small and explicit in what
  5255. --| they do.  The basic functions are to save the program unit name on a stack
  5256. --| when it is seen.  Pop and decide what type of unit it is (spec,
  5257. --| body, separate body) when the end is reached. Handle the special case of 
  5258. --| adding an addtional with for generic instantiations.  If there is a 
  5259. --| pragma inline add the compilation unit to the inline set.
  5260. --| Other subprograms add the withs found to a list, process all the dag info
  5261. --| when the end of a compilation unit is reached, process a subunit body
  5262. --| and save the expanded name of a generic instantiation or body (for 
  5263. --| subunits).
  5264.  
  5265. --| N/A: Effects, Raises, Requires, Modifies
  5266.  
  5267. --| Notes
  5268.  
  5269. ---- Package Renames:
  5270.  
  5271. package SP renames string_pkg;
  5272.  
  5273. ---- Operations global to compile_order utilities:
  5274.  
  5275.     procedure save_unit_name;    --| Save the contents of the identifier token
  5276.                 --| just seen.
  5277.  
  5278.  
  5279.     procedure process_subp_begin;
  5280.                 --| Save the unit_name last seen on the 
  5281.                 --| stack and if not already set, set the mode
  5282.                 --| to subp.
  5283.  
  5284.    procedure process_pkg_begin;
  5285.                 --| Save the unit_name last seen on the 
  5286.                 --| stack and if not already set, set the mode
  5287.                 --| to pkg.
  5288.  
  5289.     procedure process_unit_decl;--| The type of the unit is spec and its name
  5290.                 --| is the result of popping the stack.
  5291.  
  5292.     procedure process_unit_body;--| the type of the unit is a body and for the
  5293.                 --| name pop the stack.
  5294.  
  5295.     procedure process_subunit;  --| the type of the unit is separate body and
  5296.                 --| there is an additional with of the parent
  5297.                 --| body.  The name of the unit is taken care
  5298.                 --| of by the processing of the proper body.
  5299.  
  5300.     procedure get_pragma_id;    --| sets a flag if the identifier associated
  5301.                 --| with a pragma is "INLINE"
  5302.  
  5303.     procedure process_internal_pragma;
  5304.                 --| if the inline flag is set, and this is
  5305.                 --| internal to a subprogram then turn off the
  5306.                 --| flag 
  5307.     procedure process_external_pragma;
  5308.                 --| if the inline flag is set add the last
  5309.                 --| compilation unit to the inline set.
  5310.  
  5311.     procedure process_pkg_gen_inst;
  5312.                 --| add the additional with for the generic
  5313.                 --| instantiation. in case it is also a
  5314.                 --| compilation unit the type is spec and the
  5315.                 --| name is on the top of the stack in this
  5316.                 --| case.
  5317.  
  5318.     procedure process_func_gen_inst; 
  5319.                 --| add the additional with for the generic
  5320.                 --| instantiation.  Also, in case this is
  5321.                 --| a compilation unit the type is spec and the
  5322.                 --| name is the last unit name saved.
  5323.  
  5324.     procedure process_subp_gen_inst;
  5325.                 --| add the additional with for the generic
  5326.                 --| instantiation. in case it is also a
  5327.                 --| compilation unit the type is spec and the
  5328.                 --| name is on the top of the stack in this
  5329.                 --| case.
  5330.  
  5331.     procedure add_with_to_list;    --| add the value of the last identifier 
  5332.                 --| to the withs_list.
  5333.  
  5334.     procedure process_dag_info; --| put all the information gathered into
  5335.                 --| a dag.  Done when we have reached the 
  5336.                 --| end of a compilation unit.
  5337.  
  5338.     procedure begin_generic_name;
  5339.                 --| begin to save the name of the generic
  5340.                 --| being instantiated.
  5341.  
  5342.     procedure begin_body_name;    --| begin to save the name of the parent
  5343.                 --| body in the case of a separate body.
  5344.  
  5345.     procedure continue_body_name;
  5346.                 --| append to the body name.  Needed since the
  5347.                 --| body name could be an expanded name like
  5348.                 --| a.b.c 
  5349.  
  5350.  
  5351. procedure push_stack (           --| push the given name on the name
  5352.                 --| stack.
  5353.     element : SP.string_type
  5354.     );
  5355.  
  5356. function pop_stack        --| returns the name on the top of the stack
  5357.     return SP.string_type;
  5358.  
  5359. end  compile_order_utilities;
  5360. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5361. --CMPUTIL.BDY
  5362. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5363. with compile_order_declarations;
  5364. use compile_order_declarations;
  5365. with ParserDeclarations;
  5366. with units_dag_pkg;
  5367. with mini_dag_pkg;
  5368. with nodes;
  5369.  
  5370. package body compile_order_utilities is
  5371. --| The procedures forming the actions on the grammar for compile_order.
  5372.  
  5373. --| Overview
  5374.  
  5375. --| The procedures are for the most part quite small and explicit in what
  5376. --| they do.  The basic functions are to save the program unit name on a stack
  5377. --| when it is seen.  Pop and decide what type of unit it is (spec,
  5378. --| body, separate body) when the end is reached. Handle the special case of 
  5379. --| adding an addtional with for generic instantiations.  If there is a 
  5380. --| pragma inline add the compilation unit to the inline set.
  5381. --| Other subprograms add the withs found to a list, process all the dag info
  5382. --| when the end of a compilation unit is reached, process a subunit body
  5383. --| and save the expanded name of a generic instantiation or body (for 
  5384. --| subunits).
  5385.  
  5386. --| N/A: Effects, Raises, Requires, Modifies
  5387.  
  5388. --| Notes
  5389.  
  5390. --| All the variables used in the global subprograms are in compile_order_
  5391. --| declarations, so they are not qualified.
  5392.  
  5393.     use string_pkg;            -- for "&" etc...
  5394.  
  5395.  --- Package Renames
  5396.  
  5397.     package COD renames compile_order_declarations;
  5398.     package WDAG renames units_dag_pkg;        -- WDAG for withs dag
  5399.     package IDAG renames mini_dag_pkg;        -- IDAG for info dag
  5400.  
  5401.  
  5402.         --- Local operation specifications ---
  5403.  
  5404. function string_of (      --| function that returns the string rep
  5405.                           --| of the source text of a token
  5406.     token_text: in PD.Source_Text --| input source text
  5407.     )
  5408.     return SP.string_type;
  5409.  
  5410. procedure put_info_in_dag (  --| procedure which puts all the withs info
  5411.                              --| into the dag.
  5412.     node_label : in SP.string_type;  --| parent node in the dag
  5413.     info_list :              --| withs list accumulated
  5414.     in out COD.id_list_pkg.list
  5415.     );
  5416.  
  5417. --| Effects: For the node given add an edge from it to each node
  5418. --| in the info_list.  If either of the nodes do not already exist
  5419. --| create them and put in any values which are known. i.e. the filename
  5420. --| for the node_label is the current file.  It also empties the with_list
  5421. --| as it goes.
  5422.  
  5423. --| Modifies: info_list
  5424.  
  5425.  
  5426.  
  5427.     --- Operations global to compile_order_utilities ---
  5428.  
  5429.     procedure save_unit_name    --| Save the contents of the identifier token
  5430.                 --| just seen.
  5431.         is
  5432.     begin
  5433.         unit_name := string_of (prev_token.lexed_token.text);
  5434.     end save_unit_name;
  5435.  
  5436.     procedure process_subp_begin
  5437.                 --| Save the unit_name last seen on the 
  5438.                 --| stack and if not already set, set the mode
  5439.                 --| to subp.
  5440.     is
  5441.     begin
  5442.         if mode = nothing then mode := subp; end if;
  5443.         push_stack (unit_name);
  5444.     end process_subp_begin;
  5445.  
  5446.    procedure process_pkg_begin
  5447.                 --| Save the unit_name last seen on the 
  5448.                 --| stack and if not already set, set the mode
  5449.                 --| to pkg.
  5450.     is
  5451.     begin
  5452.          if mode = nothing then mode := pkg; end if;
  5453.         push_stack (unit_name);
  5454.     end process_pkg_begin;
  5455.  
  5456.     procedure process_unit_decl --| The type of the unit is spec and its name
  5457.                 --| is the result of popping the stack.
  5458.     is
  5459.     begin
  5460.         unit_type := spec;
  5461.         if cu_name /= SP.create ("") then
  5462.         SP.flush (cu_name);
  5463.         end if;
  5464.         cu_name := SP.make_persistent (pop_stack);
  5465.     end process_unit_decl;
  5466.  
  5467.     procedure process_unit_body --| the type of the unit is a body and for the
  5468.                 --| name pop the stack.
  5469.     is
  5470.     begin
  5471.         unit_type := bdy;
  5472.         if cu_name /= SP.create ("") then
  5473.         SP.flush (cu_name);
  5474.         end if;
  5475.         cu_name := SP.make_persistent (pop_stack);
  5476.         
  5477.     end process_unit_body;
  5478.  
  5479.     procedure process_subunit   --| the type of the unit is separate body and
  5480.                 --| there is an additional with of the parent
  5481.                 --| body.  The name of the unit is taken care
  5482.                 --| of by the processing of the proper body.
  5483.     is
  5484.     begin
  5485.         unit_type := separate_body;
  5486.         id_list_pkg.attach (withs_list, 
  5487.                 SP.make_persistent (parent_body_name & 
  5488.                             " (body)"));
  5489.     end process_subunit;
  5490.  
  5491.     procedure get_pragma_id    --| sets a flag if the identifier associated
  5492.                 --| with a pragma is "INLINE"
  5493.     is
  5494.     begin
  5495.         if SP.equal (SP.upper (string_of (prev_token.lexed_token.text)),
  5496.              "INLINE") then
  5497.         inline_flag := true;
  5498.         end if;
  5499.     end get_pragma_id;
  5500.  
  5501.     procedure process_internal_pragma
  5502.                 --| if the inline flag is set, and this is
  5503.                 --| internal to a subprogram then turn off the
  5504.                 --| flag 
  5505.     is
  5506.     begin
  5507.         if inline_flag and mode = subp then
  5508.         inline_flag := false;
  5509.         end if;
  5510.     end process_internal_pragma;
  5511.  
  5512.     procedure process_external_pragma
  5513.                 --| if the inline flag is set add the last
  5514.                 --| compilation unit to the inline set.
  5515.     is
  5516.     begin
  5517.         if inline_flag then
  5518.         if not id_set_pkg.is_member (inline_set, cu_name)
  5519.           then
  5520.             id_set_pkg.insert (inline_set, 
  5521.                        SP.make_persistent (cu_name));
  5522.         end if;
  5523.         inline_flag := false;
  5524.         end if;
  5525.     end process_external_pragma;
  5526.  
  5527.  
  5528.     procedure process_pkg_gen_inst
  5529.                 --| add the additional with for the generic
  5530.                 --| instantiation. in case it is also a
  5531.                 --| compilation unit the type is spec and the
  5532.                 --| name is on the top of the stack in this
  5533.                 --| case.
  5534.     is
  5535.     temp_list : id_list_pkg.list := id_list_pkg.create;
  5536.     pkg_name : SP.string_type;
  5537.     temp_current_file : SP.string_type;
  5538.     begin
  5539.        -- create the dependency if the flag in compile_order_declarations
  5540.        -- is set.
  5541.         if do_generics then
  5542.         -- make the package name from the generic name and add it to
  5543.         -- the withs list to create the right dependency.
  5544.             pkg_name := SP.make_persistent (generic_name & " (body)");
  5545.             id_list_pkg.attach (withs_list, pkg_name);
  5546.  
  5547.             -- since you can't have an instantiation without a with of the
  5548.             -- spec make sure that the spec and body of pkg have the right
  5549.             -- dependencies by doing a little put_info_in_dag w/ temp_list
  5550.             id_list_pkg.attach (temp_list, 
  5551.                     SP.make_persistent (generic_name 
  5552.                             & " (spec)"));
  5553.             -- have to change current file so the instantiation doesn't 
  5554.               -- have current name.
  5555.             temp_current_file := SP.make_persistent (current_file);
  5556.             current_file := SP.create ("");
  5557.             put_info_in_dag (pkg_name, temp_list);
  5558.             current_file := temp_current_file;
  5559.             id_list_pkg.destroy (temp_list);
  5560.  
  5561.         end if;
  5562.  
  5563.         if cu_name /= SP.create ("") then
  5564.         SP.flush (cu_name);
  5565.         end if;
  5566.         cu_name := SP.make_persistent (pop_stack);
  5567.         unit_type := spec;
  5568.         if mode = nothing then mode := pkg; end if;
  5569.     end process_pkg_gen_inst;
  5570.  
  5571.  
  5572.     procedure process_func_gen_inst
  5573.                   --| add the additional with for the generic
  5574.                 --| instantiation.  Also, in case this is
  5575.                 --| a compilation unit the type is spec and the
  5576.                 --| name is the last unit name saved.
  5577.     is
  5578.     temp_list : id_list_pkg.list := id_list_pkg.create;
  5579.     func_name : SP.string_type;
  5580.     temp_current_file : SP.string_type;
  5581.     begin
  5582.  
  5583.        -- create the dependency if the flag in compile_order_declarations
  5584.         -- is set.
  5585.         if do_generics then
  5586.         -- make the function name from the generic name and add it to
  5587.         -- the withs list to create the right dependency.
  5588.             func_name := SP.make_persistent (generic_name & " (body)");
  5589.             id_list_pkg.attach (withs_list, func_name);
  5590.  
  5591.             -- since you can't have an instantiation without a with of the
  5592.             -- spec make sure that the spec and body of func have the right
  5593.             -- dependencies by doing a little put_info_in_dag w/ temp_list.
  5594.             id_list_pkg.attach (temp_list, 
  5595.                     SP.make_persistent (generic_name 
  5596.                             & " (spec)"));
  5597.             -- have to change current file so the instantiation doesn't
  5598.             -- have current name.
  5599.             temp_current_file := SP.make_persistent (current_file);
  5600.             current_file := SP.create ("");
  5601.             put_info_in_dag (func_name, temp_list);
  5602.             current_file := temp_current_file;
  5603.             id_list_pkg.destroy (temp_list);
  5604.  
  5605.         end if;
  5606.  
  5607.         if cu_name /= SP.create ("") then
  5608.         SP.flush (cu_name);
  5609.         end if;
  5610.         cu_name := SP.make_persistent (unit_name);
  5611.         unit_type := spec;
  5612.         if mode = nothing then mode := subp; end if;
  5613.     end process_func_gen_inst;
  5614.  
  5615.     procedure process_subp_gen_inst
  5616.                 --| add the additional with for the generic
  5617.                 --| instantiation. in case it is also a
  5618.                 --| compilation unit the type is spec and the
  5619.                 --| name is on the top of the stack in this
  5620.                 --| case.
  5621.     is
  5622.     temp_list : id_list_pkg.list := id_list_pkg.create;
  5623.     subp_name : SP.string_type;
  5624.     temp_current_file : SP.string_type;
  5625.  
  5626.     begin
  5627.        -- create the dependency if the flag in compile_order_declarations
  5628.         -- is set.
  5629.         if do_generics then
  5630.         -- make the subprogram name from the generic name and add it to
  5631.         -- the withs list to create the right dependency.
  5632.            subp_name := SP.make_persistent (generic_name & " (body)");
  5633.             id_list_pkg.attach (withs_list, subp_name);
  5634.  
  5635.             -- since you can't have an instantiation without a with of the
  5636.             -- spec make sure that the spec and body of subp have the right
  5637.             -- dependencies by doing a little put_info_in_dag w/ temp_list.
  5638.             id_list_pkg.attach (temp_list, 
  5639.                     SP.make_persistent (generic_name 
  5640.                             & " (spec)"));
  5641.             -- have to change current file so the instantiation doesn't
  5642.             -- have current name.
  5643.             temp_current_file := SP.make_persistent (current_file);
  5644.             current_file := SP.create ("");
  5645.             put_info_in_dag (subp_name, temp_list);
  5646.             current_file := temp_current_file;
  5647.             id_list_pkg.destroy (temp_list);
  5648.  
  5649.         end if;
  5650.  
  5651.         if cu_name /= SP.create ("") then
  5652.         SP.flush (cu_name);
  5653.         end if;
  5654.         cu_name := SP.make_persistent (pop_stack);
  5655.         unit_type := spec;
  5656.         if mode = nothing then mode := subp; end if;
  5657.     end process_subp_gen_inst;
  5658.  
  5659.  
  5660.     procedure add_with_to_list    --| add the value of the last identifier 
  5661.                 --| to the withs_list.
  5662.     is
  5663.     begin
  5664.         id_list_pkg.attach (withs_list, 
  5665.                       SP.make_persistent
  5666.                    (string_of (prev_token.lexed_token.text)
  5667.                     & " (spec)"));
  5668.     end add_with_to_list;
  5669.  
  5670.     procedure process_dag_info   --| put all the information gathered into
  5671.                 --| a dag.  Done when we have reached the 
  5672.                 --| end of a compilation unit.
  5673.     is
  5674.     name : SP.string_type;
  5675.  
  5676.     begin
  5677.         if unit_type = bdy then
  5678.         id_list_pkg.attach (withs_list, 
  5679.                     SP.make_persistent (cu_name & " (spec)"));
  5680.         name := SP.make_persistent (cu_name & " (body)");
  5681.         elsif unit_type = separate_body then
  5682.         name := SP.make_persistent (cu_name & " (separate body)");
  5683.         else
  5684.         name := SP.make_persistent (cu_name & " (spec)");
  5685.         end if;
  5686.         if inline_flag then
  5687.         if not id_set_pkg.is_member (inline_set, cu_name) then
  5688.             id_set_pkg.insert (inline_set, 
  5689.                        SP.make_persistent (cu_name));
  5690.         end if;
  5691.         inline_flag := false;
  5692.         end if;
  5693.         id_list_pkg.attach (unit_list, name);
  5694.         begin
  5695.             put_info_in_dag (name, withs_list);
  5696.         exception
  5697.             when COD.duplicate_name =>
  5698.             -- the withs list has to be emptied before
  5699.             -- we resignal the duplicate name, otherwise
  5700.             -- the unit in the next file inherits the withs
  5701.             -- of the duplicate one.  Same goes for resetting
  5702.             -- the flags.
  5703.             COD.id_list_pkg.destroy (COD.withs_list);
  5704.                 mode := nothing;
  5705.                 inline_flag := false;
  5706.             raise COD.duplicate_name;
  5707.         end;
  5708.         mode := nothing;
  5709.         inline_flag := false;
  5710.     end process_dag_info;
  5711.  
  5712.     procedure begin_generic_name
  5713.                 --| begin to save the name of the generic
  5714.                 --| being instantiated.
  5715.     is
  5716.     begin
  5717.         generic_name := string_of (prev_token.lexed_token.text);
  5718.     end begin_generic_name;
  5719.  
  5720.  
  5721.     procedure begin_body_name    --| begin to save the name of the parent
  5722.                 --| body in the case of a separate body.
  5723.     is
  5724.     begin
  5725.         parent_body_name := string_of (prev_token.lexed_token.text);
  5726.     end begin_body_name;
  5727.  
  5728.     procedure continue_body_name
  5729.                 --| append to the body name.  Needed since the
  5730.                 --| body name could be an expanded name like
  5731.                 --| a.b.c 
  5732.     is
  5733.     begin
  5734.         parent_body_name := SP."&" (parent_body_name, 
  5735.                       string_of (prev_token.lexed_token.text));
  5736.     end continue_body_name;
  5737.  
  5738.  
  5739.         --- Bodies of local subprograms ---
  5740.  
  5741. function string_of (      --| function that returns the string rep
  5742.                           --| of the source text of a token
  5743.     token_text: in PD.Source_Text --| input source text
  5744.     )
  5745.     return SP.string_type is
  5746.  
  5747.     begin
  5748.         return SP.create (PD.Get_Source_Text (token_text));
  5749.     end string_of;
  5750.  
  5751.  
  5752. procedure push_stack (           --| push the given name on the name
  5753.                 --| stack.
  5754.     element : SP.string_type
  5755.     ) is
  5756.     begin
  5757.     id_list_pkg.attach (element, COD.name_stack);
  5758.     end push_stack;
  5759.  
  5760. function pop_stack        --| returns the name on the top of the stack
  5761.     return SP.string_type is
  5762.     temp : SP.string_type;
  5763.     begin
  5764.     temp := id_list_pkg.FirstValue (COD.name_stack);
  5765.     id_list_pkg.DeleteHead (COD.name_stack);
  5766.     return temp;
  5767.     end pop_stack;
  5768.  
  5769. procedure put_info_in_dag (  --| procedure which puts all the withs info
  5770.                              --| into the dag.
  5771.     node_label : in SP.string_type;  --| parent node in the dag
  5772.     info_list :              --| withs list accumulated
  5773.     in out COD.id_list_pkg.list    
  5774.     ) is
  5775.  
  5776.  
  5777. -- default_node must be declared in somewhere like comp_decls
  5778. -- along with the instantiation of the dag and similar things.
  5779. -- if node_label ~element (with_info) then
  5780. --     add_node (with_info, node_label, default_node)
  5781. -- end if
  5782.  
  5783. -- for each with in info_list do
  5784. --     if with ~element(with_info) then
  5785. --         add_node (with_info, with, default_node)
  5786. --     end if
  5787. --     add_edge (with_info, node_label, with)
  5788. -- end for
  5789.  
  5790.     i         : COD.id_list_pkg.listiter;
  5791.     with_node : SP.string_type;
  5792.     with_name : SP.string_type;
  5793.     label     : SP.string_type;
  5794.     value     : nodes.dag_node;
  5795.     gen_inst  : boolean;
  5796.     begin
  5797.     SP.mark;
  5798.  
  5799.     begin
  5800.     -- get the value of the node and change the filename to be the 
  5801.     -- current file.  If the filename is not the empty string this
  5802.     -- implies we have seen something with this name before so raise
  5803.     -- duplicate name since this is not allowed at the library unit
  5804.     -- level.  If illegal_node is raised the node does not exist so
  5805.     -- create it.
  5806.         label := SP.upper (node_label);
  5807.         
  5808.          value := WDAG.get_value (COD.withs_dag, label);
  5809.           gen_inst := SP.equal (COD.current_file, "");
  5810.         -- current file will only be null before any files are read or
  5811.         -- when we are doing a generic instantiation which shouldn't
  5812.         -- effect the file name.
  5813.         if not SP.equal (value.file, "")  and
  5814.            not gen_inst then
  5815.         COD.dup_string := SP.make_persistent (value.name);
  5816.         COD.dup_file := SP.make_persistent (value.file);
  5817.         SP.release;
  5818.             raise COD.duplicate_name;
  5819.         end if;
  5820.         if not gen_inst then
  5821.             value.file := SP.make_persistent (COD.current_file);
  5822.             value.name := SP.make_persistent (node_label);
  5823.             WDAG.set_value (COD.withs_dag, label, value);
  5824.         end if;
  5825.         exception
  5826.             when WDAG.illegal_node =>
  5827.             -- the node doesn't exist yet so we must add it
  5828.             value := COD.default_node;
  5829.             value.file := SP.make_persistent (COD.current_file);
  5830.             value.name := SP.make_persistent (node_label);
  5831.             WDAG.add_node (withs_dag, 
  5832.                    SP.make_persistent (label), 
  5833.                    value);
  5834.     end;
  5835.     
  5836.     i := COD.id_list_pkg.MakeListIter (info_list);
  5837.         while COD.id_list_pkg.more (i) loop
  5838.              COD.id_list_pkg.next (i, with_name);
  5839.         begin
  5840.         with_node := SP.make_persistent (SP.upper (with_name));
  5841.         value := COD.default_node;
  5842.         value.name := SP.make_persistent (with_name);
  5843.              WDAG.add_node (COD.withs_dag, 
  5844.                 with_node, 
  5845.                 value);
  5846.              WDAG.add_edge (COD.withs_dag, label, with_node);
  5847.  
  5848.         exception
  5849.             when WDAG.illegal_node =>
  5850.                 -- raised when the with_node is already in the dag.  No 
  5851.                  -- harm done so ignore the error and add the edge.
  5852.             begin
  5853.                     WDAG.add_edge (COD.withs_dag, label, with_node);
  5854.                 exception
  5855.                         when WDAG.makes_cycle =>
  5856.                 begin
  5857.                     IDAG.add_node (COD.cycle_dag, 
  5858.                            SP.make_persistent(label), 
  5859.                           COD.default_empty_node);
  5860.                     IDAG.add_node (COD.cycle_dag, 
  5861.                            SP.make_persistent (with_node),
  5862.                            COD.default_empty_node);
  5863.                     IDAG.add_edge (COD.cycle_dag,
  5864.                         label, 
  5865.                         with_node);
  5866.                    exception
  5867.                     when IDAG.illegal_node | 
  5868.                      IDAG.makes_cycle =>
  5869.                     null;
  5870.                 end;
  5871.                     when WDAG.duplicate_edge =>
  5872.                         null;
  5873.             end;            
  5874.                 when WDAG.makes_cycle =>
  5875.             -- need to keep track of where the cycles are.
  5876.             begin
  5877.                 IDAG.add_node (COD.cycle_dag, 
  5878.                        SP.make_persistent (label), 
  5879.                       COD.default_empty_node);
  5880.                 IDAG.add_node (COD.cycle_dag, 
  5881.                        SP.make_persistent (with_node),
  5882.                        COD.default_empty_node);
  5883.                 IDAG.add_edge (COD.cycle_dag, label, with_node);
  5884.             
  5885.                exception
  5886.                 when IDAG.illegal_node | IDAG.makes_cycle =>
  5887.                 null;
  5888.             end;
  5889.         end;
  5890.  
  5891.         end loop;
  5892.     
  5893.      -- should here free all the strings in the list
  5894.     COD.id_list_pkg.destroy (info_list);
  5895.     SP.release;
  5896.  
  5897.     end put_info_in_dag;
  5898.  
  5899.  
  5900. end  compile_order_utilities;
  5901. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5902. --APPLYACT.SUB
  5903. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  5904.      
  5905.  with compile_order_declarations;
  5906.  with compile_order_utilities;
  5907.      
  5908.  separate (Parser)
  5909.  procedure Apply_Actions(Rule_Number : in PT.LeftHandSideRange) is
  5910.  -- all procedure calls in this unit are procedures in package
  5911.  -- compile_order_utilities
  5912.      
  5913.      use compile_order_utilities;
  5914.      
  5915.  -- all variables are from compile_order declarations
  5916.      
  5917.      use compile_order_declarations;
  5918.      
  5919.  begin
  5920.      
  5921.      case Rule_Number is
  5922.      
  5923.   ----------------------------------------------------------------------
  5924.  -- pragma ::= PRAGMA pragma_id ( general_component_associations ) ;
  5925.      
  5926.      
  5927.  when 1 =>
  5928.      
  5929.      
  5930.          process_internal_pragma;
  5931.   ----------------------------------------------------------------------
  5932.  -- pragma_id ::= identifier
  5933.      
  5934.      
  5935.  when 3 =>
  5936.      
  5937.      
  5938.          get_pragma_id;
  5939.   ----------------------------------------------------------------------
  5940.  -- subprogram_declaration ::= subprogram_specification ;
  5941.      
  5942.      
  5943.  when 214 =>
  5944.      
  5945.      
  5946.          process_unit_decl;
  5947.   ----------------------------------------------------------------------
  5948.  -- subprogram_specification ::= PROCEDURE unit_identifier
  5949.      
  5950.      
  5951.  when 215 |
  5952.      
  5953.      
  5954.      
  5955.  --....................................................................
  5956.  -- subprogram_specification ::= PROCEDURE unit_identifier (
  5957.  --     parameter_specification {;parameter_specification} )
  5958.      
  5959.      
  5960.  216 |
  5961.      
  5962.      
  5963.      
  5964.  --....................................................................
  5965.  -- subprogram_specification ::= FUNCTION designator RETURN type_mark
  5966.      
  5967.      
  5968.  217 |
  5969.      
  5970.      
  5971.      
  5972.  --....................................................................
  5973.  -- subprogram_specification ::= FUNCTION designator ( parameter_specification
  5974.  --     {;parameter_specification} ) RETURN type_mark
  5975.      
  5976.      
  5977.  218 =>
  5978.      
  5979.      
  5980.          process_subp_begin;
  5981.   ----------------------------------------------------------------------
  5982.  -- unit_identifier ::= identifier
  5983.      
  5984.      
  5985.  when 219 |
  5986.      
  5987.      
  5988.      
  5989.  --....................................................................
  5990.  -- designator ::= identifier
  5991.      
  5992.      
  5993.  220 |
  5994.      
  5995.      
  5996.      
  5997.  --....................................................................
  5998.  -- designator ::= string_literal
  5999.      
  6000.      
  6001.  221 =>
  6002.      
  6003.      
  6004.          save_unit_name;
  6005.   ----------------------------------------------------------------------
  6006.  -- subprogram_body ::= subprogram_specification IS
  6007.  --     declarative_part__begin_end_block [end_designator] ;
  6008.      
  6009.      
  6010.  when 228 =>
  6011.      
  6012.      
  6013.          process_unit_body;
  6014.   ----------------------------------------------------------------------
  6015.  -- package_declaration ::= package_specification ;
  6016.      
  6017.      
  6018.  when 230 =>
  6019.      
  6020.      
  6021.          process_unit_decl;
  6022.   ----------------------------------------------------------------------
  6023.  -- package_body ::= package__body__unit_identifier IS declarative_part END
  6024.  --     [identifier] ;
  6025.      
  6026.      
  6027.  when 233 |
  6028.      
  6029.      
  6030.      
  6031.  --....................................................................
  6032.  -- package_body ::= package__body__unit_identifier IS
  6033.  --     declarative_part__begin_end_block [identifier] ;
  6034.      
  6035.      
  6036.  234 =>
  6037.      
  6038.      
  6039.          process_unit_body;
  6040.   ----------------------------------------------------------------------
  6041.  -- package__unit_identifier ::= PACKAGE unit_identifier
  6042.      
  6043.      
  6044.  when 235 =>
  6045.      
  6046.      
  6047.          process_pkg_begin;
  6048.   ----------------------------------------------------------------------
  6049.  -- package__body__unit_identifier ::= PACKAGE BODY unit_identifier
  6050.      
  6051.      
  6052.  when 236 =>
  6053.      
  6054.      
  6055.          process_pkg_begin;
  6056.   ----------------------------------------------------------------------
  6057.  -- renaming_declaration ::= subprogram_specification RENAMES name ;
  6058.      
  6059.      
  6060.  when 245 =>
  6061.      
  6062.      
  6063.          dummy := pop_stack;
  6064.   ----------------------------------------------------------------------
  6065.  -- compilation_unit ::= pragma_header ( general_component_associations ) ;
  6066.      
  6067.      
  6068.  when 273 =>
  6069.      
  6070.      
  6071.          process_external_pragma;
  6072.   ----------------------------------------------------------------------
  6073.  -- compilation_unit ::= context_clause library_or_secondary_unit
  6074.      
  6075.      
  6076.  when 275 =>
  6077.      
  6078.      
  6079.          process_dag_info;
  6080.   ----------------------------------------------------------------------
  6081.  -- with_id ::= identifier
  6082.      
  6083.      
  6084.  when 285 =>
  6085.      
  6086.      
  6087.          add_with_to_list;
  6088.   ----------------------------------------------------------------------
  6089.  -- body_stub ::= subprogram_specification IS SEPARATE ;
  6090.      
  6091.      
  6092.  when 288 =>
  6093.      
  6094.      
  6095.          dummy := pop_stack;
  6096.   ----------------------------------------------------------------------
  6097.  -- body_stub ::= package__body__unit_identifier IS SEPARATE ;
  6098.      
  6099.      
  6100.  when 289 =>
  6101.      
  6102.      
  6103.          dummy := pop_stack;
  6104.   ----------------------------------------------------------------------
  6105.  -- subunit ::= SEPARATE ( body_name ) proper_body
  6106.      
  6107.      
  6108.  when 291 =>
  6109.      
  6110.      
  6111.          process_subunit;
  6112.   ----------------------------------------------------------------------
  6113.  -- generic_declaration ::= generic_specification ;
  6114.      
  6115.      
  6116.  when 298 =>
  6117.      
  6118.      
  6119.          process_unit_decl;
  6120.   ----------------------------------------------------------------------
  6121.  -- generic_parameter_declaration ::= WITH subprogram_specification
  6122.  --     [IS__name__or__<>] ;
  6123.      
  6124.      
  6125.  when 305 =>
  6126.      
  6127.      
  6128.          dummy := pop_stack;
  6129.   ----------------------------------------------------------------------
  6130.  -- generic_instantiation ::= package__unit_identifier IS NEW generic_name ;
  6131.      
  6132.      
  6133.  when 314 |
  6134.      
  6135.      
  6136.      
  6137.  --....................................................................
  6138.  -- generic_instantiation ::= package__unit_identifier IS NEW generic_name (
  6139.  --     generic_association {,generic_association} ) ;
  6140.      
  6141.      
  6142.  315 =>
  6143.      
  6144.      
  6145.          process_pkg_gen_inst;
  6146.   ----------------------------------------------------------------------
  6147.  -- generic_instantiation ::= FUNCTION designator IS NEW generic_name ;
  6148.      
  6149.      
  6150.  when 316 |
  6151.      
  6152.      
  6153.      
  6154.  --....................................................................
  6155.  -- generic_instantiation ::= FUNCTION designator IS NEW generic_name (
  6156.  --     generic_association {,generic_association} ) ;
  6157.      
  6158.      
  6159.  317 =>
  6160.      
  6161.      
  6162.          process_func_gen_inst;
  6163.   ----------------------------------------------------------------------
  6164.  -- generic_instantiation ::= subprogram_specification IS NEW generic_name ;
  6165.      
  6166.      
  6167.  when 318 |
  6168.      
  6169.      
  6170.      
  6171.  --....................................................................
  6172.  -- generic_instantiation ::= subprogram_specification IS NEW generic_name (
  6173.  --     generic_association {,generic_association} ) ;
  6174.      
  6175.      
  6176.  319 =>
  6177.      
  6178.      
  6179.          process_subp_gen_inst;
  6180.   ----------------------------------------------------------------------
  6181.  -- body_name ::= identifier
  6182.      
  6183.      
  6184.  when 351 =>
  6185.      
  6186.      
  6187.          begin_body_name;
  6188.   ----------------------------------------------------------------------
  6189.  -- body_name ::= body_name . identifier
  6190.      
  6191.      
  6192.  when 352 =>
  6193.      
  6194.      
  6195.          continue_body_name;
  6196.   ----------------------------------------------------------------------
  6197.  -- generic_name ::= identifier
  6198.      
  6199.      
  6200.  when 353 =>
  6201.      
  6202.      
  6203.          begin_generic_name;
  6204.      
  6205.      when others =>
  6206.          null;
  6207.      end case;
  6208.  end Apply_Actions;
  6209.      
  6210. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6211. --GETNEXT.SUB
  6212. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  6213. with compile_order_declarations; use compile_order_declarations;
  6214.  
  6215. separate (Lex)
  6216. function GetNextNonCommentToken return PD.ParseStackElement is
  6217.     begin
  6218.  
  6219.     prev_token := CST;
  6220.  
  6221.         loop
  6222.             CST := GetNextSourceToken;
  6223.             -- CST is the current source Token which is a
  6224.             -- PD.ParseStackElement
  6225.             exit when (CST.gram_sym_val = PT.EOF_TokenValue) or
  6226.                       (CST.gram_sym_val /= PT.Comment_TokenValue);
  6227.  
  6228. --          comments are ignored in compile_order.
  6229.  
  6230.             end loop;
  6231.         return CST;    -- return the token that is not a comment
  6232.     end GetNextNonCommentToken;
  6233.  
  6234.  
  6235.