dcb932c9b8df02f5e1b8fe03f2371b015a8787f6
[ncurses.git] / doc / html / man / curs_threads.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright 2020 Thomas E. Dickey                                          *
4   * Copyright 2008-2015,2017 Free Software Foundation, Inc.                  *
5   *                                                                          *
6   * Permission is hereby granted, free of charge, to any person obtaining a  *
7   * copy of this software and associated documentation files (the            *
8   * "Software"), to deal in the Software without restriction, including      *
9   * without limitation the rights to use, copy, modify, merge, publish,      *
10   * distribute, distribute with modifications, sublicense, and/or sell       *
11   * copies of the Software, and to permit persons to whom the Software is    *
12   * furnished to do so, subject to the following conditions:                 *
13   *                                                                          *
14   * The above copyright notice and this permission notice shall be included  *
15   * in all copies or substantial portions of the Software.                   *
16   *                                                                          *
17   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24   *                                                                          *
25   * Except as contained in this notice, the name(s) of the above copyright   *
26   * holders shall not be used in advertising or otherwise to promote the     *
27   * sale, use or other dealings in this Software without prior written       *
28   * authorization.                                                           *
29   ****************************************************************************
30   * @Id: curs_threads.3x,v 1.26 2020/10/24 09:47:37 tom Exp @
31   * ***************************************************************************
32   * ***************************************************************************
33 -->
34 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
35 <HTML>
36 <HEAD>
37 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
38 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
39 <TITLE>curs_threads 3x</TITLE>
40 <link rel="author" href="mailto:bug-ncurses@gnu.org">
41 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
42 </HEAD>
43 <BODY>
44 <H1 class="no-header">curs_threads 3x</H1>
45 <PRE>
46 <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>                                              <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
47
48
49
50
51 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
52        <STRONG>curs_threads</STRONG> - <STRONG>curses</STRONG> thread support
53
54
55 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
56        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
57
58        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
59        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
60
61        <STRONG>int</STRONG> <STRONG>get_escdelay(void);</STRONG>
62        <STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <EM>size</EM><STRONG>);</STRONG>
63        <STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <EM>size</EM><STRONG>);</STRONG>
64
65        <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*</STRONG><EM>scr</EM><STRONG>,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG>
66        <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG>
67
68
69 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
70        This  implementation  can  be configured to provide rudimentary support
71        for multi-threaded applications.  This makes a  different  set  of  li-
72        braries, e.g., <EM>libncursest</EM> since the binary interfaces are different.
73
74        Rather  than  modify  the interfaces to pass a thread specifier to each
75        function, it adds a few functions which can be used in  any  configura-
76        tion  which  hide  the  mutex's needed to prevent concurrent use of the
77        global variables when configured for threading.
78
79        In addition to forcing access to members of the <STRONG>WINDOW</STRONG> structure to  be
80        via  functions  (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it makes functions of the common
81        global variables, e.g., COLORS,  COLOR_PAIRS,  COLS,  ESCDELAY,  LINES,
82        TABSIZE  curscr, newscr and ttytype.  Those variables are maintained as
83        read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
84
85        Even this is not enough to make a thread-safe application using curses.
86        A multi-threaded application would be expected to have threads updating
87        separate windows (within the same  device),  or  updating  on  separate
88        screens  (on  different  devices).  Also, a few of the global variables
89        are considered writable by some applications.  The functions  described
90        here address these special situations.
91
92        The ESCDELAY and TABSIZE global variables are modified by some applica-
93        tions.  To modify them in any configuration, use  the  <STRONG>set_escdelay</STRONG>  or
94        <STRONG>set_tabsize</STRONG> functions.  Other global variables are not modifiable.
95
96        The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
97
98        The  <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse granularity mu-
99        texes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> parameters, and call a us-
100        er-supplied  function,  passing  it a <EM>data</EM> parameter, and returning the
101        value from the user-supplied function to the application.
102
103
104 </PRE><H3><a name="h3-USAGE">USAGE</a></H3><PRE>
105        All of the ncurses library functions assume that the locale is not  al-
106        tered during operation.  In addition, they use data which is maintained
107        within a hierarchy of scopes.
108
109           <STRONG>o</STRONG>   global data, e.g., used in the low-level terminfo or termcap in-
110               terfaces.
111
112           <STRONG>o</STRONG>   terminal data, e.g., associated with a call to <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>.  The
113               terminal data are initialized when screens are created.
114
115           <STRONG>o</STRONG>   screen data, e.g., associated with a call to <EM>newterm</EM> or <EM>initscr</EM>.
116
117           <STRONG>o</STRONG>   window data, e.g., associated with a call to <EM>newwin</EM>  or  <EM>subwin</EM>.
118               Windows  are  associated with screens.  Pads are not necessarily
119               associated with a particular screen.
120
121               Most curses applications operate on one or more windows within a
122               single screen.
123
124           <STRONG>o</STRONG>   reentrant, i.e., it uses only the data passed as parameters.
125
126        This  table lists the scope of data used for each symbol in the ncurses
127        library when it is configured to support threading:
128
129             Symbol                  Scope
130             -------------------------------------------------------------
131             BC                      global
132             COLORS                  screen (readonly)
133             COLOR_PAIR              reentrant
134             COLOR_PAIRS             screen (readonly)
135             COLS                    screen (readonly)
136             ESCDELAY                screen (readonly, see <EM>set</EM><STRONG>_</STRONG><EM>escdelay</EM>)
137             LINES                   screen (readonly)
138             PAIR_NUMBER             reentrant
139             PC                      global
140             SP                      global
141             TABSIZE                 screen (readonly)
142             UP                      global
143             acs_map                 screen (readonly)
144             add_wch                 window (stdscr)
145             add_wchnstr             window (stdscr)
146             add_wchstr              window (stdscr)
147             addch                   window (stdscr)
148             addchnstr               window (stdscr)
149             addchstr                window (stdscr)
150             addnstr                 window (stdscr)
151             addnwstr                window (stdscr)
152             addstr                  window (stdscr)
153             addwstr                 window (stdscr)
154             assume_default_colors   screen
155             attr_get                window (stdscr)
156             attr_off                window (stdscr)
157             attr_on                 window (stdscr)
158             attr_set                window (stdscr)
159             attroff                 window (stdscr)
160             attron                  window (stdscr)
161             attrset                 window (stdscr)
162             baudrate                screen
163             beep                    screen
164             bkgd                    window (stdscr)
165             bkgdset                 window (stdscr)
166             bkgrnd                  window (stdscr)
167             bkgrndset               window (stdscr)
168             boolcodes               global (readonly)
169             boolfnames              global (readonly)
170             boolnames               global (readonly)
171             border                  window (stdscr)
172             border_set              window (stdscr)
173             box                     window (stdscr)
174             box_set                 window (stdscr)
175             can_change_color        terminal
176             cbreak                  screen
177             chgat                   window (stdscr)
178             clear                   window (stdscr)
179             clearok                 window
180             clrtobot                window (stdscr)
181             clrtoeol                window (stdscr)
182             color_content           screen
183
184             color_set               window (stdscr)
185             copywin                 window locks(source, target)
186             cur_term                terminal
187             curs_set                screen
188             curscr                  screen (readonly)
189             curses_version          global (readonly)
190             def_prog_mode           terminal
191             def_shell_mode          terminal
192             define_key              screen
193             del_curterm             screen
194             delay_output            screen
195             delch                   window (stdscr)
196             deleteln                window (stdscr)
197             delscreen               global locks(screenlist, screen)
198             delwin                  global locks(windowlist)
199             derwin                  screen
200             doupdate                screen
201             dupwin                  screen locks(window)
202             echo                    screen
203             echo_wchar              window (stdscr)
204             echochar                window (stdscr)
205             endwin                  screen
206             erase                   window (stdscr)
207             erasechar               window (stdscr)
208             erasewchar              window (stdscr)
209             filter                  global
210             flash                   terminal
211             flushinp                screen
212             get_wch                 screen (input-operation)
213             get_wstr                screen (input-operation)
214             getattrs                window
215             getbegx                 window
216             getbegy                 window
217             getbkgd                 window
218             getbkgrnd               window
219             getcchar                reentrant
220             getch                   screen (input-operation)
221             getcurx                 window
222             getcury                 window
223             getmaxx                 window
224             getmaxy                 window
225             getmouse                screen (input-operation)
226             getn_wstr               screen (input-operation)
227             getnstr                 screen (input-operation)
228             getparx                 window
229             getpary                 window
230             getstr                  screen (input-operation)
231             getwin                  screen (input-operation)
232             halfdelay               screen
233             has_colors              terminal
234             has_ic                  terminal
235             has_il                  terminal
236             has_key                 screen
237             hline                   window (stdscr)
238             hline_set               window (stdscr)
239             idcok                   window
240             idlok                   window
241             immedok                 window
242             in_wch                  window (stdscr)
243             in_wchnstr              window (stdscr)
244             in_wchstr               window (stdscr)
245             inch                    window (stdscr)
246             inchnstr                window (stdscr)
247             inchstr                 window (stdscr)
248             init_color              screen
249             init_pair               screen
250
251             initscr                 global locks(screenlist)
252             innstr                  window (stdscr)
253             innwstr                 window (stdscr)
254             ins_nwstr               window (stdscr)
255             ins_wch                 window (stdscr)
256             ins_wstr                window (stdscr)
257             insch                   window (stdscr)
258             insdelln                window (stdscr)
259             insertln                window (stdscr)
260             insnstr                 window (stdscr)
261             insstr                  window (stdscr)
262             instr                   window (stdscr)
263             intrflush               terminal
264             inwstr                  window (stdscr)
265             is_cleared              window
266             is_idcok                window
267             is_idlok                window
268             is_immedok              window
269             is_keypad               window
270             is_leaveok              window
271             is_linetouched          window
272             is_nodelay              window
273             is_notimeout            window
274             is_scrollok             window
275             is_syncok               window
276             is_term_resized         terminal
277             is_wintouched           window
278             isendwin                screen
279             key_defined             screen
280             key_name                global (static data)
281             keybound                screen
282             keyname                 global (static data)
283             keyok                   screen
284             keypad                  window
285             killchar                terminal
286             killwchar               terminal
287             leaveok                 window
288             longname                screen
289             mcprint                 terminal
290             meta                    screen
291             mouse_trafo             window (stdscr)
292             mouseinterval           screen
293             mousemask               screen
294             move                    window (stdscr)
295             mvadd_wch               window (stdscr)
296             mvadd_wchnstr           window (stdscr)
297             mvadd_wchstr            window (stdscr)
298             mvaddch                 window (stdscr)
299             mvaddchnstr             window (stdscr)
300             mvaddchstr              window (stdscr)
301             mvaddnstr               window (stdscr)
302             mvaddnwstr              window (stdscr)
303             mvaddstr                window (stdscr)
304             mvaddwstr               window (stdscr)
305             mvchgat                 window (stdscr)
306             mvcur                   screen
307             mvdelch                 window (stdscr)
308             mvderwin                window (stdscr)
309             mvget_wch               screen (input-operation)
310             mvget_wstr              screen (input-operation)
311             mvgetch                 screen (input-operation)
312             mvgetn_wstr             screen (input-operation)
313             mvgetnstr               screen (input-operation)
314             mvgetstr                screen (input-operation)
315             mvhline                 window (stdscr)
316             mvhline_set             window (stdscr)
317
318             mvin_wch                window (stdscr)
319             mvin_wchnstr            window (stdscr)
320             mvin_wchstr             window (stdscr)
321             mvinch                  window (stdscr)
322             mvinchnstr              window (stdscr)
323             mvinchstr               window (stdscr)
324             mvinnstr                window (stdscr)
325             mvinnwstr               window (stdscr)
326             mvins_nwstr             window (stdscr)
327             mvins_wch               window (stdscr)
328             mvins_wstr              window (stdscr)
329             mvinsch                 window (stdscr)
330             mvinsnstr               window (stdscr)
331             mvinsstr                window (stdscr)
332             mvinstr                 window (stdscr)
333             mvinwstr                window (stdscr)
334             mvprintw                window (stdscr)
335             mvscanw                 screen
336             mvvline                 window (stdscr)
337             mvvline_set             window (stdscr)
338             mvwadd_wch              window
339             mvwadd_wchnstr          window
340             mvwadd_wchstr           window
341             mvwaddch                window
342             mvwaddchnstr            window
343             mvwaddchstr             window
344             mvwaddnstr              window
345             mvwaddnwstr             window
346             mvwaddstr               window
347             mvwaddwstr              window
348             mvwchgat                window
349             mvwdelch                window
350             mvwget_wch              screen (input-operation)
351             mvwget_wstr             screen (input-operation)
352             mvwgetch                screen (input-operation)
353             mvwgetn_wstr            screen (input-operation)
354             mvwgetnstr              screen (input-operation)
355             mvwgetstr               screen (input-operation)
356             mvwhline                window
357             mvwhline_set            window
358             mvwin                   window
359             mvwin_wch               window
360             mvwin_wchnstr           window
361             mvwin_wchstr            window
362             mvwinch                 window
363             mvwinchnstr             window
364             mvwinchstr              window
365             mvwinnstr               window
366             mvwinnwstr              window
367             mvwins_nwstr            window
368             mvwins_wch              window
369             mvwins_wstr             window
370             mvwinsch                window
371             mvwinsnstr              window
372             mvwinsstr               window
373             mvwinstr                window
374             mvwinwstr               window
375             mvwprintw               window
376             mvwscanw                screen
377             mvwvline                window
378             mvwvline_set            window
379             napms                   reentrant
380             newpad                  global locks(windowlist)
381             newscr                  screen (readonly)
382             newterm                 global locks(screenlist)
383             newwin                  global locks(windowlist)
384
385             nl                      screen
386             nocbreak                screen
387             nodelay                 window
388             noecho                  screen
389             nofilter                global
390             nonl                    screen
391             noqiflush               terminal
392             noraw                   screen
393             notimeout               window
394             numcodes                global (readonly)
395             numfnames               global (readonly)
396             numnames                global (readonly)
397             ospeed                  global
398             overlay                 window locks(source, target)
399             overwrite               window locks(source, target)
400             pair_content            screen
401             pecho_wchar             screen
402             pechochar               screen
403             pnoutrefresh            screen
404             prefresh                screen
405             printw                  window
406             putp                    global
407             putwin                  window
408             qiflush                 terminal
409             raw                     screen
410             redrawwin               window
411             refresh                 screen
412             reset_prog_mode         screen
413             reset_shell_mode        screen
414             resetty                 terminal
415             resize_term             screen locks(windowlist)
416             resizeterm              screen
417             restartterm             screen
418             ripoffline              global (static data)
419             savetty                 terminal
420             scanw                   screen
421             scr_dump                screen
422             scr_init                screen
423             scr_restore             screen
424             scr_set                 screen
425             scrl                    window (stdscr)
426             scroll                  window
427             scrollok                window
428             set_curterm             screen
429             set_escdelay            screen
430             set_tabsize             screen
431             set_term                global locks(screenlist, screen)
432             setcchar                reentrant
433             setscrreg               window (stdscr)
434             setupterm               global
435             slk_attr                screen
436             slk_attr_off            screen
437             slk_attr_on             screen
438             slk_attr_set            screen
439             slk_attroff             screen
440             slk_attron              screen
441             slk_attrset             screen
442             slk_clear               screen
443             slk_color               screen
444             slk_init                screen
445             slk_label               screen
446             slk_noutrefresh         screen
447             slk_refresh             screen
448             slk_restore             screen
449             slk_set                 screen
450             slk_touch               screen
451
452             slk_wset                screen
453             standend                window
454             standout                window
455             start_color             screen
456             stdscr                  screen (readonly)
457             strcodes                global (readonly)
458             strfnames               global (readonly)
459             strnames                global (readonly)
460             subpad                  window
461             subwin                  window
462             syncok                  window
463             term_attrs              screen
464             termattrs               screen
465             termname                terminal
466             tgetent                 global
467             tgetflag                global
468             tgetnum                 global
469             tgetstr                 global
470             tgoto                   global
471             tigetflag               terminal
472             tigetnum                terminal
473             tigetstr                terminal
474             timeout                 window (stdscr)
475             touchline               window
476             touchwin                window
477             tparm                   global (static data)
478             tputs                   screen
479             trace                   global (static data)
480             ttytype                 screen (readonly)
481             typeahead               screen
482             unctrl                  screen
483             unget_wch               screen (input-operation)
484             ungetch                 screen (input-operation)
485             ungetmouse              screen (input-operation)
486             untouchwin              window
487             use_default_colors      screen
488             use_env                 global (static data)
489             use_extended_names      global (static data)
490             use_legacy_coding       screen
491             use_screen              global locks(screenlist, screen)
492             use_window              global locks(windowlist, window)
493             vid_attr                screen
494             vid_puts                screen
495             vidattr                 screen
496             vidputs                 screen
497             vline                   window (stdscr)
498             vline_set               window (stdscr)
499             vw_printw               window
500             vw_scanw                screen
501             vwprintw                window
502             vwscanw                 screen
503             wadd_wch                window
504             wadd_wchnstr            window
505             wadd_wchstr             window
506             waddch                  window
507             waddchnstr              window
508             waddchstr               window
509             waddnstr                window
510             waddnwstr               window
511             waddstr                 window
512             waddwstr                window
513             wattr_get               window
514             wattr_off               window
515             wattr_on                window
516             wattr_set               window
517             wattroff                window
518
519             wattron                 window
520             wattrset                window
521             wbkgd                   window
522             wbkgdset                window
523             wbkgrnd                 window
524             wbkgrndset              window
525             wborder                 window
526             wborder_set             window
527             wchgat                  window
528             wclear                  window
529             wclrtobot               window
530             wclrtoeol               window
531             wcolor_set              window
532             wcursyncup              screen (affects window plus parents)
533             wdelch                  window
534             wdeleteln               window
535             wecho_wchar             window
536             wechochar               window
537             wenclose                window
538             werase                  window
539             wget_wch                screen (input-operation)
540             wget_wstr               screen (input-operation)
541             wgetbkgrnd              window
542             wgetch                  screen (input-operation)
543             wgetdelay               window
544             wgetn_wstr              screen (input-operation)
545             wgetnstr                screen (input-operation)
546             wgetparent              window
547             wgetscrreg              window
548             wgetstr                 screen (input-operation)
549             whline                  window
550             whline_set              window
551             win_wch                 window
552             win_wchnstr             window
553             win_wchstr              window
554             winch                   window
555             winchnstr               window
556             winchstr                window
557             winnstr                 window
558             winnwstr                window
559             wins_nwstr              window
560             wins_wch                window
561             wins_wstr               window
562             winsch                  window
563             winsdelln               window
564             winsertln               window
565             winsnstr                window
566             winsstr                 window
567             winstr                  window
568             winwstr                 window
569             wmouse_trafo            window
570             wmove                   window
571             wnoutrefresh            screen
572             wprintw                 window
573             wredrawln               window
574             wrefresh                screen
575             wresize                 window locks(windowlist)
576             wscanw                  screen
577             wscrl                   window
578             wsetscrreg              window
579             wstandend               window
580             wstandout               window
581             wsyncdown               screen (affects window plus parents)
582             wsyncup                 screen (affects window plus parents)
583             wtimeout                window
584             wtouchln                window
585
586             wunctrl                 global (static data)
587             wvline                  window
588             wvline_set              window
589
590
591 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
592        These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
593
594
595 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
596        Both a macro and a function are provided for each name.
597
598
599 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
600        These routines are specific to ncurses.  They  were  not  supported  on
601        Version 7, BSD or System V implementations.  It is recommended that any
602        code depending on ncurses extensions be conditioned using  NCURSES_VER-
603        SION.
604
605
606 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
607        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
608
609
610
611                                                               <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
612 </PRE>
613 <div class="nav">
614 <ul>
615 <li><a href="#h2-NAME">NAME</a></li>
616 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
617 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
618 <ul>
619 <li><a href="#h3-USAGE">USAGE</a></li>
620 </ul>
621 </li>
622 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
623 <li><a href="#h2-NOTES">NOTES</a></li>
624 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
625 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
626 </ul>
627 </div>
628 </BODY>
629 </HTML>