plugins/geshi/geshi/eiffel.php
changeset 2 9e3258dfae15
parent 0 441963e5b07a
child 3 f3e2bbbd2155
equal deleted inserted replaced
1:c715631f809a 2:9e3258dfae15
     2 /*************************************************************************************
     2 /*************************************************************************************
     3  * eiffel.php
     3  * eiffel.php
     4  * ----------
     4  * ----------
     5  * Author: Zoran Simic (zsimic@axarosenberg.com)
     5  * Author: Zoran Simic (zsimic@axarosenberg.com)
     6  * Copyright: (c) 2005 Zoran Simic
     6  * Copyright: (c) 2005 Zoran Simic
     7  * Release Version: 1.0.7.20
     7  * Release Version: 1.0.8.2
     8  * Date Started: 2005/06/30
     8  * Date Started: 2005/06/30
     9  *
     9  *
    10  * Eiffel language file for GeSHi.
    10  * Eiffel language file for GeSHi.
    11  *
    11  *
    12  * CHANGES
    12  * CHANGES
    35  *   along with GeSHi; if not, write to the Free Software
    35  *   along with GeSHi; if not, write to the Free Software
    36  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    36  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    37  *
    37  *
    38  ************************************************************************************/
    38  ************************************************************************************/
    39 
    39 
    40  $language_data = array (
    40 $language_data = array (
    41 	'LANG_NAME' => 'Eiffel',
    41     'LANG_NAME' => 'Eiffel',
    42 	'COMMENT_SINGLE' => array(1 => '--'),
    42     'COMMENT_SINGLE' => array(1 => '--'),
    43 	'COMMENT_MULTI' => array(),
    43     'COMMENT_MULTI' => array(),
    44 	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
    44     'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
    45 	'QUOTEMARKS' => array("'", '"'),
    45     'QUOTEMARKS' => array("'", '"'),
    46 	'ESCAPE_CHAR' => '%',
    46     'ESCAPE_CHAR' => '%',
    47 	'KEYWORDS' => array(
    47     'KEYWORDS' => array(
    48 		1 => array(
    48         1 => array(
    49 			'separate',
    49             'separate',
    50 			'invariant',
    50             'invariant',
    51 			'inherit',
    51             'inherit',
    52 			'indexing',
    52             'indexing',
    53 			'feature',
    53             'feature',
    54 			'expanded',
    54             'expanded',
    55 			'deferred',
    55             'deferred',
    56 			'class'
    56             'class'
    57 			),
    57             ),
    58 		2 => array(
    58         2 => array(
    59 			'xor',
    59             'xor',
    60 			'when',
    60             'when',
    61 			'variant',
    61             'variant',
    62 			'until',
    62             'until',
    63 			'unique',
    63             'unique',
    64 			'undefine',
    64             'undefine',
    65 			'then',
    65             'then',
    66 			'strip',
    66             'strip',
    67 			'select',
    67             'select',
    68 			'retry',
    68             'retry',
    69 			'rescue',
    69             'rescue',
    70 			'require',
    70             'require',
    71 			'rename',
    71             'rename',
    72 			'reference',
    72             'reference',
    73 			'redefine',
    73             'redefine',
    74 			'prefix',
    74             'prefix',
    75 			'or',
    75             'or',
    76 			'once',
    76             'once',
    77 			'old',
    77             'old',
    78 			'obsolete',
    78             'obsolete',
    79 			'not',
    79             'not',
    80 			'loop',
    80             'loop',
    81 			'local',
    81             'local',
    82 			'like',
    82             'like',
    83 			'is',
    83             'is',
    84 			'inspect',
    84             'inspect',
    85 			'infix',
    85             'infix',
    86 			'include',
    86             'include',
    87 			'implies',
    87             'implies',
    88 			'if',
    88             'if',
    89 			'frozen',
    89             'frozen',
    90 			'from',
    90             'from',
    91 			'external',
    91             'external',
    92 			'export',
    92             'export',
    93 			'ensure',
    93             'ensure',
    94 			'end',
    94             'end',
    95 			'elseif',
    95             'elseif',
    96 			'else',
    96             'else',
    97 			'do',
    97             'do',
    98 			'creation',
    98             'creation',
    99 			'create',
    99             'create',
   100 			'check',
   100             'check',
   101 			'as',
   101             'as',
   102 			'and',
   102             'and',
   103 			'alias',
   103             'alias',
   104 			'agent'
   104             'agent'
   105 			),
   105             ),
   106 		3 => array(
   106         3 => array(
   107 			'Void',
   107             'Void',
   108 			'True',
   108             'True',
   109 			'Result',
   109             'Result',
   110 			'Precursor',
   110             'Precursor',
   111 			'False',
   111             'False',
   112 			'Current'
   112             'Current'
   113 			),
   113             ),
   114 		4 => array(
   114         4 => array(
   115 			'UNIX_SIGNALS',
   115             'UNIX_SIGNALS',
   116 			'UNIX_FILE_INFO',
   116             'UNIX_FILE_INFO',
   117 			'UNBOUNDED',
   117             'UNBOUNDED',
   118 			'TWO_WAY_TREE_CURSOR',
   118             'TWO_WAY_TREE_CURSOR',
   119 			'TWO_WAY_TREE',
   119             'TWO_WAY_TREE',
   120 			'TWO_WAY_SORTED_SET',
   120             'TWO_WAY_SORTED_SET',
   121 			'TWO_WAY_LIST',
   121             'TWO_WAY_LIST',
   122 			'TWO_WAY_CURSOR_TREE',
   122             'TWO_WAY_CURSOR_TREE',
   123 			'TWO_WAY_CIRCULAR',
   123             'TWO_WAY_CIRCULAR',
   124 			'TWO_WAY_CHAIN_ITERATOR',
   124             'TWO_WAY_CHAIN_ITERATOR',
   125 			'TUPLE',
   125             'TUPLE',
   126 			'TREE',
   126             'TREE',
   127 			'TRAVERSABLE',
   127             'TRAVERSABLE',
   128 			'TO_SPECIAL',
   128             'TO_SPECIAL',
   129 			'THREAD_CONTROL',
   129             'THREAD_CONTROL',
   130 			'THREAD_ATTRIBUTES',
   130             'THREAD_ATTRIBUTES',
   131 			'THREAD',
   131             'THREAD',
   132 			'TABLE',
   132             'TABLE',
   133 			'SUBSET',
   133             'SUBSET',
   134 			'STRING_HANDLER',
   134             'STRING_HANDLER',
   135 			'STRING',
   135             'STRING',
   136 			'STREAM',
   136             'STREAM',
   137 			'STORABLE',
   137             'STORABLE',
   138 			'STD_FILES',
   138             'STD_FILES',
   139 			'STACK',
   139             'STACK',
   140 			'SPECIAL',
   140             'SPECIAL',
   141 			'SORTED_TWO_WAY_LIST',
   141             'SORTED_TWO_WAY_LIST',
   142 			'SORTED_STRUCT',
   142             'SORTED_STRUCT',
   143 			'SORTED_LIST',
   143             'SORTED_LIST',
   144 			'SINGLE_MATH',
   144             'SINGLE_MATH',
   145 			'SET',
   145             'SET',
   146 			'SEQUENCE',
   146             'SEQUENCE',
   147 			'SEQ_STRING',
   147             'SEQ_STRING',
   148 			'SEMAPHORE',
   148             'SEMAPHORE',
   149 			'ROUTINE',
   149             'ROUTINE',
   150 			'RESIZABLE',
   150             'RESIZABLE',
   151 			'RECURSIVE_TREE_CURSOR',
   151             'RECURSIVE_TREE_CURSOR',
   152 			'RECURSIVE_CURSOR_TREE',
   152             'RECURSIVE_CURSOR_TREE',
   153 			'REAL_REF',
   153             'REAL_REF',
   154 			'REAL',
   154             'REAL',
   155 			'RAW_FILE',
   155             'RAW_FILE',
   156 			'RANDOM',
   156             'RANDOM',
   157 			'QUEUE',
   157             'QUEUE',
   158 			'PROXY',
   158             'PROXY',
   159 			'PROFILING_SETTING',
   159             'PROFILING_SETTING',
   160 			'PROCEDURE',
   160             'PROCEDURE',
   161 			'PRIORITY_QUEUE',
   161             'PRIORITY_QUEUE',
   162 			'PRIMES',
   162             'PRIMES',
   163 			'PRECOMP',
   163             'PRECOMP',
   164 			'POINTER_REF',
   164             'POINTER_REF',
   165 			'POINTER',
   165             'POINTER',
   166 			'PLATFORM',
   166             'PLATFORM',
   167 			'PLAIN_TEXT_FILE',
   167             'PLAIN_TEXT_FILE',
   168 			'PATH_NAME',
   168             'PATH_NAME',
   169 			'PART_SORTED_TWO_WAY_LIST',
   169             'PART_SORTED_TWO_WAY_LIST',
   170 			'PART_SORTED_SET',
   170             'PART_SORTED_SET',
   171 			'PART_SORTED_LIST',
   171             'PART_SORTED_LIST',
   172 			'PART_COMPARABLE',
   172             'PART_COMPARABLE',
   173 			'OPERATING_ENVIRONMENT',
   173             'OPERATING_ENVIRONMENT',
   174 			'ONCE_CONTROL',
   174             'ONCE_CONTROL',
   175 			'OBJECT_OWNER',
   175             'OBJECT_OWNER',
   176 			'OBJECT_CONTROL',
   176             'OBJECT_CONTROL',
   177 			'NUMERIC',
   177             'NUMERIC',
   178 			'NONE',
   178             'NONE',
   179 			'MUTEX',
   179             'MUTEX',
   180 			'MULTI_ARRAY_LIST',
   180             'MULTI_ARRAY_LIST',
   181 			'MULTAR_LIST_CURSOR',
   181             'MULTAR_LIST_CURSOR',
   182 			'MEMORY',
   182             'MEMORY',
   183 			'MEM_INFO',
   183             'MEM_INFO',
   184 			'MEM_CONST',
   184             'MEM_CONST',
   185 			'MATH_CONST',
   185             'MATH_CONST',
   186 			'LIST',
   186             'LIST',
   187 			'LINKED_TREE_CURSOR',
   187             'LINKED_TREE_CURSOR',
   188 			'LINKED_TREE',
   188             'LINKED_TREE',
   189 			'LINKED_STACK',
   189             'LINKED_STACK',
   190 			'LINKED_SET',
   190             'LINKED_SET',
   191 			'LINKED_QUEUE',
   191             'LINKED_QUEUE',
   192 			'LINKED_PRIORITY_QUEUE',
   192             'LINKED_PRIORITY_QUEUE',
   193 			'LINKED_LIST_CURSOR',
   193             'LINKED_LIST_CURSOR',
   194 			'LINKED_LIST',
   194             'LINKED_LIST',
   195 			'LINKED_CURSOR_TREE',
   195             'LINKED_CURSOR_TREE',
   196 			'LINKED_CIRCULAR',
   196             'LINKED_CIRCULAR',
   197 			'LINKABLE',
   197             'LINKABLE',
   198 			'LINEAR_ITERATOR',
   198             'LINEAR_ITERATOR',
   199 			'LINEAR',
   199             'LINEAR',
   200 			'ITERATOR',
   200             'ITERATOR',
   201 			'IO_MEDIUM',
   201             'IO_MEDIUM',
   202 			'INTERNAL',
   202             'INTERNAL',
   203 			'INTEGER_REF',
   203             'INTEGER_REF',
   204 			'INTEGER_INTERVAL',
   204             'INTEGER_INTERVAL',
   205 			'INTEGER',
   205             'INTEGER',
   206 			'INFINITE',
   206             'INFINITE',
   207 			'INDEXABLE',
   207             'INDEXABLE',
   208 			'IDENTIFIED_CONTROLLER',
   208             'IDENTIFIED_CONTROLLER',
   209 			'IDENTIFIED',
   209             'IDENTIFIED',
   210 			'HIERARCHICAL',
   210             'HIERARCHICAL',
   211 			'HEAP_PRIORITY_QUEUE',
   211             'HEAP_PRIORITY_QUEUE',
   212 			'HASHABLE',
   212             'HASHABLE',
   213 			'HASH_TABLE_CURSOR',
   213             'HASH_TABLE_CURSOR',
   214 			'HASH_TABLE',
   214             'HASH_TABLE',
   215 			'GENERAL',
   215             'GENERAL',
   216 			'GC_INFO',
   216             'GC_INFO',
   217 			'FUNCTION',
   217             'FUNCTION',
   218 			'FORMAT_INTEGER',
   218             'FORMAT_INTEGER',
   219 			'FORMAT_DOUBLE',
   219             'FORMAT_DOUBLE',
   220 			'FIXED_TREE',
   220             'FIXED_TREE',
   221 			'FIXED_LIST',
   221             'FIXED_LIST',
   222 			'FIXED',
   222             'FIXED',
   223 			'FINITE',
   223             'FINITE',
   224 			'FILE_NAME',
   224             'FILE_NAME',
   225 			'FILE',
   225             'FILE',
   226 			'FIBONACCI',
   226             'FIBONACCI',
   227 			'EXECUTION_ENVIRONMENT',
   227             'EXECUTION_ENVIRONMENT',
   228 			'EXCEPTIONS',
   228             'EXCEPTIONS',
   229 			'EXCEP_CONST',
   229             'EXCEP_CONST',
   230 			'DYNAMIC_TREE',
   230             'DYNAMIC_TREE',
   231 			'DYNAMIC_LIST',
   231             'DYNAMIC_LIST',
   232 			'DYNAMIC_CIRCULAR',
   232             'DYNAMIC_CIRCULAR',
   233 			'DYNAMIC_CHAIN',
   233             'DYNAMIC_CHAIN',
   234 			'DOUBLE_REF',
   234             'DOUBLE_REF',
   235 			'DOUBLE_MATH',
   235             'DOUBLE_MATH',
   236 			'DOUBLE',
   236             'DOUBLE',
   237 			'DISPENSER',
   237             'DISPENSER',
   238 			'DIRECTORY_NAME',
   238             'DIRECTORY_NAME',
   239 			'DIRECTORY',
   239             'DIRECTORY',
   240 			'DECLARATOR',
   240             'DECLARATOR',
   241 			'DEBUG_OUTPUT',
   241             'DEBUG_OUTPUT',
   242 			'CURSOR_TREE_ITERATOR',
   242             'CURSOR_TREE_ITERATOR',
   243 			'CURSOR_TREE',
   243             'CURSOR_TREE',
   244 			'CURSOR_STRUCTURE',
   244             'CURSOR_STRUCTURE',
   245 			'CURSOR',
   245             'CURSOR',
   246 			'COUNTABLE_SEQUENCE',
   246             'COUNTABLE_SEQUENCE',
   247 			'COUNTABLE',
   247             'COUNTABLE',
   248 			'CONTAINER',
   248             'CONTAINER',
   249 			'CONSOLE',
   249             'CONSOLE',
   250 			'CONDITION_VARIABLE',
   250             'CONDITION_VARIABLE',
   251 			'COMPARABLE_STRUCT',
   251             'COMPARABLE_STRUCT',
   252 			'COMPARABLE_SET',
   252             'COMPARABLE_SET',
   253 			'COMPARABLE',
   253             'COMPARABLE',
   254 			'COMPACT_TREE_CURSOR',
   254             'COMPACT_TREE_CURSOR',
   255 			'COMPACT_CURSOR_TREE',
   255             'COMPACT_CURSOR_TREE',
   256 			'COLLECTION',
   256             'COLLECTION',
   257 			'CIRCULAR_CURSOR',
   257             'CIRCULAR_CURSOR',
   258 			'CIRCULAR',
   258             'CIRCULAR',
   259 			'CHARACTER_REF',
   259             'CHARACTER_REF',
   260 			'CHARACTER',
   260             'CHARACTER',
   261 			'CHAIN',
   261             'CHAIN',
   262 			'CELL',
   262             'CELL',
   263 			'BOX',
   263             'BOX',
   264 			'BOUNDED_STACK',
   264             'BOUNDED_STACK',
   265 			'BOUNDED_QUEUE',
   265             'BOUNDED_QUEUE',
   266 			'BOUNDED',
   266             'BOUNDED',
   267 			'BOOLEAN_REF',
   267             'BOOLEAN_REF',
   268 			'BOOLEAN',
   268             'BOOLEAN',
   269 			'BOOL_STRING',
   269             'BOOL_STRING',
   270 			'BIT_REF',
   270             'BIT_REF',
   271 			'BINARY_TREE',
   271             'BINARY_TREE',
   272 			'BINARY_SEARCH_TREE_SET',
   272             'BINARY_SEARCH_TREE_SET',
   273 			'BINARY_SEARCH_TREE',
   273             'BINARY_SEARCH_TREE',
   274 			'BILINEAR',
   274             'BILINEAR',
   275 			'BI_LINKABLE',
   275             'BI_LINKABLE',
   276 			'BASIC_ROUTINES',
   276             'BASIC_ROUTINES',
   277 			'BAG',
   277             'BAG',
   278 			'ASCII',
   278             'ASCII',
   279 			'ARRAYED_TREE',
   279             'ARRAYED_TREE',
   280 			'ARRAYED_STACK',
   280             'ARRAYED_STACK',
   281 			'ARRAYED_QUEUE',
   281             'ARRAYED_QUEUE',
   282 			'ARRAYED_LIST_CURSOR',
   282             'ARRAYED_LIST_CURSOR',
   283 			'ARRAYED_LIST',
   283             'ARRAYED_LIST',
   284 			'ARRAYED_CIRCULAR',
   284             'ARRAYED_CIRCULAR',
   285 			'ARRAY2',
   285             'ARRAY2',
   286 			'ARRAY',
   286             'ARRAY',
   287 			'ARGUMENTS',
   287             'ARGUMENTS',
   288 			'ANY',
   288             'ANY',
   289 			'ACTIVE'
   289             'ACTIVE'
   290 			),
   290             ),
   291 		5 => array(
   291         5 => array(
   292 			'yes',
   292             'yes',
   293 			'visible',
   293             'visible',
   294 			'trace',
   294             'trace',
   295 			'system',
   295             'system',
   296 			'root',
   296             'root',
   297 			'profile',
   297             'profile',
   298 			'override_cluster',
   298             'override_cluster',
   299 			'object',
   299             'object',
   300 			'no',
   300             'no',
   301 			'multithreaded',
   301             'multithreaded',
   302 			'msil_generation_type',
   302             'msil_generation_type',
   303 			'line_generation',
   303             'line_generation',
   304 			'library',
   304             'library',
   305 			'inlining_size',
   305             'inlining_size',
   306 			'inlining',
   306             'inlining',
   307 			'include_path',
   307             'include_path',
   308 			'il_verifiable',
   308             'il_verifiable',
   309 			'exclude',
   309             'exclude',
   310 			'exception_trace',
   310             'exception_trace',
   311 			'dynamic_runtime',
   311             'dynamic_runtime',
   312 			'dotnet_naming_convention',
   312             'dotnet_naming_convention',
   313 			'disabled_debug',
   313             'disabled_debug',
   314 			'default',
   314             'default',
   315 			'debug',
   315             'debug',
   316 			'dead_code_removal',
   316             'dead_code_removal',
   317 			'console_application',
   317             'console_application',
   318 			'cluster',
   318             'cluster',
   319 			'cls_compliant',
   319             'cls_compliant',
   320 			'check_vape',
   320             'check_vape',
   321 			'assertion',
   321             'assertion',
   322 			'array_optimization',
   322             'array_optimization',
   323 			'all',
   323             'all',
   324 			'address_expression'
   324             'address_expression'
   325 			),
   325             ),
   326 		),
   326         ),
   327 	'SYMBOLS' => array(
   327     'SYMBOLS' => array(
   328 		'+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
   328         '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
   329 		'(', ')', '{', '}', '[', ']', '#'
   329         '(', ')', '{', '}', '[', ']', '#'
   330 		),
   330         ),
   331 	'CASE_SENSITIVE' => array(
   331     'CASE_SENSITIVE' => array(
   332 		GESHI_COMMENTS => true,
   332         GESHI_COMMENTS => false,
   333 		1 => false,
   333         1 => false,
   334 		2 => false,
   334         2 => false,
   335 		3 => false,
   335         3 => false,
   336 		4 => true,
   336         4 => true,
   337 		5 => false,
   337         5 => false,
   338 		),
   338         ),
   339 	'STYLES' => array(
   339     'STYLES' => array(
   340 		'KEYWORDS' => array(
   340         'KEYWORDS' => array(
   341 			1 => 'color: #0600FF; font-weight: bold;',
   341             1 => 'color: #0600FF; font-weight: bold;',
   342 			2 => 'color: #0600FF; font-weight: bold;',
   342             2 => 'color: #0600FF; font-weight: bold;',
   343 			3 => 'color: #800080;',
   343             3 => 'color: #800080;',
   344 			4 => 'color: #800000',
   344             4 => 'color: #800000',
   345 			5 => 'color: #603000;'
   345             5 => 'color: #603000;'
   346 			),
   346             ),
   347 		'COMMENTS' => array(
   347         'COMMENTS' => array(
   348 			1 => 'color: #008000; font-style: italic;',
   348             1 => 'color: #008000; font-style: italic;',
   349 			'MULTI' => ''
   349             'MULTI' => ''
   350 			),
   350             ),
   351 		'ESCAPE_CHAR' => array(
   351         'ESCAPE_CHAR' => array(
   352 			0 => 'color: #005070; font-weight: bold;'
   352             0 => 'color: #005070; font-weight: bold;'
   353 			),
   353             ),
   354 		'BRACKETS' => array(
   354         'BRACKETS' => array(
   355 			0 => 'color: #FF0000;'
   355             0 => 'color: #FF0000;'
   356 			),
   356             ),
   357 		'STRINGS' => array(
   357         'STRINGS' => array(
   358 			0 => 'color: #0080A0;'
   358             0 => 'color: #0080A0;'
   359 			),
   359             ),
   360 		'NUMBERS' => array(
   360         'NUMBERS' => array(
   361 			0 => 'color: #FF0000;'
   361             0 => 'color: #FF0000;'
   362 			),
   362             ),
   363 		'METHODS' => array(
   363         'METHODS' => array(
   364 			1 => 'color: #000060;',
   364             1 => 'color: #000060;',
   365 			2 => 'color: #000050;'
   365             2 => 'color: #000050;'
   366 			),
   366             ),
   367 		'SYMBOLS' => array(
   367         'SYMBOLS' => array(
   368 			0 => 'color: #600000;'
   368             0 => 'color: #600000;'
   369 			),
   369             ),
   370 		'REGEXPS' => array(
   370         'REGEXPS' => array(
   371 			),
   371             ),
   372 		'SCRIPT' => array(
   372         'SCRIPT' => array(
   373 			)
   373             )
   374 		),
   374         ),
   375 	'URLS' => array(
   375     'URLS' => array(
   376 		1 => '',
   376         1 => '',
   377 		2 => '',
   377         2 => '',
   378 		3 => '',
   378         3 => '',
   379 		4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAME}&btnI=I%27m+Feeling+Lucky'
   379         4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAMEL}&amp;btnI=I%27m+Feeling+Lucky',
   380 		),
   380         5 => ''
   381 	'OOLANG' => true,
   381         ),
   382 	'OBJECT_SPLITTERS' => array(
   382     'OOLANG' => true,
   383 		1 => '.'
   383     'OBJECT_SPLITTERS' => array(
   384 		),
   384         1 => '.'
   385 	'REGEXPS' => array(
   385         ),
   386 		),
   386     'REGEXPS' => array(
   387 	'STRICT_MODE_APPLIES' => GESHI_NEVER,
   387         ),
   388 	'SCRIPT_DELIMITERS' => array(
   388     'STRICT_MODE_APPLIES' => GESHI_NEVER,
   389 		),
   389     'SCRIPT_DELIMITERS' => array(
   390 	'HIGHLIGHT_STRICT_BLOCK' => array(
   390         ),
   391 		)
   391     'HIGHLIGHT_STRICT_BLOCK' => array(
       
   392         )
   392 );
   393 );
   393 
   394 
   394 ?>
   395 ?>