.\" Copyright (c) 1991, 1993
.\"   The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in
.\"    the documentation and/or other materials provided with the
.\"    distribution.
.\" 3. [Deleted.  See
.\"     ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
.\" 4. Neither the name of the University nor the names of its
.\"    contributors may be used to endorse or promote products derived
.\"    from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
.\" PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)doc-common	8.1 (Berkeley) 06/08/93
.
.
.\" Macro Identifiers.  For each user macro a corresponding register
.\" with the same name must exist.  Its value must not be zero.
.
.nr %A 1
.nr %B 1
.nr %C 1
.nr %D 1
.nr %I 1
.nr %J 1
.nr %N 1
.nr %O 1
.nr %P 1
.nr %Q 1
.nr %R 1
.nr %T 1
.nr %U 1
.nr %V 1
.nr Ac 3
.nr Ad 12n
.nr An 12n
.nr Ao 12n
.nr Ap 2
.nr Aq 12n
.nr Ar 12n
.nr At 1
.nr Bc 3
.nr Bf 8n\" ?
.nr Bk 8n\" ?
.nr Bl 1
.nr Bo 12n
.nr Bq 12n
.nr Brc 3
.nr Bro 12n
.nr Brq 12n
.nr Bsx 1
.nr Bt 8n\" ?
.nr Bx 1
.nr Cd 12n
.nr Cm 10n
.nr D1 8n\" ?
.nr Dc 3
.nr Dl 8n\" ?
.nr Dt 8n\" ?
.nr Do 12n
.nr Dq 12n
.nr Ds 6n\" many manpages still use this as a -width value
.nr Dv 12n
.nr Dx 1
.nr Ec 3
.nr Ef 8n\" ?
.nr Ek 8n\" ?
.nr El 1
.nr Em 10n
.nr En 12n
.nr Eo 12n
.nr Eq 12n
.nr Er 17n
.nr Es 12n
.nr Ev 15n
.nr Ex 1
.nr Fa 12n
.nr Fc 3
.nr Fd 12n\" ?
.nr Fl 10n
.nr Fn 16n
.nr Fo 16n
.nr Fr 12n\" ?
.nr Ft 8n\" ?
.nr Fx 1
.nr Ic 10n
.nr In 12n
.nr It 8n\" ?
.nr Lb 11n
.nr Li 16n
.nr Lk 6n\" ?
.nr Lp 8n\" ?
.nr Me 6n
.nr Ms 6n
.nr Mt 6n\" ?
.nr Nd 8n\" ?
.nr Nm 10n
.nr No 12n
.nr Ns 2
.nr Nx 1
.nr Oc 3
.nr Oo 10n
.nr Op 14n
.nr Os 6n\" ?
.nr Ox 1
.nr Pa 32n
.nr Pc 3
.nr Pf 12n
.nr Po 12n
.nr Pp 8n\" ?
.nr Pq 12n
.nr Qc 3
.nr Ql 16n
.nr Qo 12n
.nr Qq 12n
.nr Rv 1
.nr Sc 3
.nr Sh 8n
.nr Sm 8n\" ?
.nr So 12n
.nr Sq 12n
.nr Ss 8n
.nr St 8n\" ?
.nr Sx 16n
.nr Sy 6n
.nr Ta 2
.nr Tn 10n
.nr Ud 8n\" ?
.nr Ux 1
.nr Va 12n
.nr Vt 8n\" ?
.nr Xc 3
.nr Xo 1
.nr Xr 10n
.
.
.\" macros which must be processed after the closing delimiter of 'Op'
.\" and friends
.ds doc-after-Ao
.ds doc-after-Bo
.ds doc-after-Bro
.ds doc-after-Do
.ds doc-after-Eo
.ds doc-after-Fo
.ds doc-after-Ns
.ds doc-after-Oo
.ds doc-after-Po
.ds doc-after-Qo
.ds doc-after-So
.ds doc-after-Xo
.
.
.nr doc-display-indent 6n
.
.
.\" space strings
.
.ds doc-soft-space " \"
.ds doc-hard-space \~
.ds doc-tab \t
.
.
.\" punctuation values (suffix=3, prefix=4)
.
.nr doc-punct. 3
.nr doc-punct, 3
.nr doc-punct: 3
.nr doc-punct; 3
.nr doc-punct( 4
.nr doc-punct) 3
.nr doc-punct[ 4
.nr doc-punct] 3
.nr doc-punct? 3
.nr doc-punct! 3
.
.
.\" Define alternate requests to handle continuous rendering.
.\"
.\" This .ne replacement avoids page breaks; instead, the page length is
.\" increased to the necessary amount (this is needed for tables).
.
.eo
.de doc-ne
.  ie \n[.$] .nr doc-amount (v;\$*)
.  el        .nr doc-amount 1v
.  if (\n[doc-amount] >= \n[.t]) \
.    pl +(\n[doc-amount]u - \n[.t]u + 1v)
.  rr doc-amount
..
.ec
.
.\" This .bp replacement for continuous rendering mode adjusts the page
.\" length to the current position so that no empty lines are inserted.
.
.eo
.de doc-bp
.  pl \n[nl]u
..
.ec
.
.
.\" NS doc-set-up-continuous-rendering
.\"   Move macros into place for continuous rendering.  An end-of-input
.\"   macro is set up by doc-set-up-titles.
.de doc-set-up-continuous-rendering
.  rn ne doc-real-ne
.  rn bp doc-real-bp
.  rn doc-ne ne
.  rn doc-bp bp
..
.
.if \n[cR] \
.  doc-set-up-continuous-rendering
.
.
.\" header assembly macros
.
.\" NS doc-page-topic global string
.\" NS   the title of the manual page
.
.ds doc-page-topic UNTITLED\"
.
.
.\" NS doc-volume global string
.\" NS   the volume to which the manual page belongs
.
.ds doc-volume LOCAL\"
.
.
.\" NS doc-section global string
.\" NS   the manual section (1, 2, 3, ..., 3perl, 9)
.
.ds doc-section \" empty
.
.
.\" NS doc-set-up-titles macro
.\" NS   install and initialize header and footer support
.\" NS
.\" NS local variables:
.\" NS   doc-footer-location
.
.eo
.de doc-set-up-titles
.  br
.
.  if !\n[cR] \{\
.    wh 0 doc-header
.    ie r FT .nr doc-footer-location \n[FT]
.    el      .nr doc-footer-location (-.5i)
.    wh \n[doc-footer-location]u doc-footer
.    wh (\n[doc-footer-location]u - .5i) doc-break-body-text
.    rr doc-footer-location
.  \}
.
.  e@ doc-end-macro
..
.ec
.
.
.\" NS doc-date-string global string
.\" NS   the manual page date as set by 'Dd'
.
.ds doc-date-string UNDATED\"
.
.
.\" NS Dd user macro (not parsed, not callable)
.\" NS   set document date
.\" NS
.\" NS modifies:
.\" NS   doc-date-string
.\" NS
.\" NS width register 'Dd' set above
.
.eo
.de Dd
.  \" If batch processing (rendering multiple) man page documents, we
.  \" must handle the end of a previous document.
.  \"
.  \" If also continuously rendering, cause a page transition to a new
.  \" mdoc(7) document.
.  if \n[doc-need-titles-reset] \{\
.    if \n[cR] .doc-end-macro
.
.    \" Clear the page header trap so it is not sprung with stale
.    \" information.
.    ch doc-header
.    doc-break-page-with-new-number
.  \}
.  if \n[C] .rr P
.
.  if !\n[.$] \
.    tm mdoc warning: .Dd directive expects an argument (#\n[.c])
.  if \n[.$] \{\
.    ie "\$1"$Mdocdate:" .ds doc-date-string \$2\~\$3, \$4\"
.    el                  .ds doc-date-string \$*\"
.  \}
..
.ec
.
.
.\" NS Dt user macro (not parsed, not callable)
.\" NS   document title
.\" NS
.\" NS modifies:
.\" NS   doc-page-topic
.\" NS   doc-section
.\" NS   doc-volume
.\" NS
.\" NS local variables:
.\" NS   doc-volume-as-XXX
.\" NS   doc-volume-ds-XXX
.\" NS
.\" NS width register 'Dt' set above
.
.\" an alternative, more detailed scheme for naming the manual sections
.\"
.ds doc-volume-ds-1 General Commands Manual
.ds doc-volume-ds-2 System Calls Manual
.ds doc-volume-ds-3 Library Functions Manual
.ds doc-volume-ds-4 Kernel Interfaces Manual
.ds doc-volume-ds-5 File Formats Manual
.ds doc-volume-ds-6 Games Manual
.ds doc-volume-ds-7 Miscellaneous Information Manual
.ds doc-volume-ds-8 System Manager's Manual
.ds doc-volume-ds-9 Kernel Developer's Manual
.
.ds doc-volume-ds-USD   User's Supplementary Documents
.ds doc-volume-ds-PS1   Programmer's Supplementary Documents
.ds doc-volume-ds-AMD   Ancestral Manual Documents
.ds doc-volume-ds-SMM   System Manager's Manual
.ds doc-volume-ds-URM   User's Reference Manual
.ds doc-volume-ds-PRM   Programmer's Manual
.ds doc-volume-ds-KM    Kernel Manual
.ds doc-volume-ds-IND   Manual Master Index
.ds doc-volume-ds-LOCAL Local Manual
.ds doc-volume-ds-CON   Contributed Software Manual
.
.als doc-volume-ds-MMI doc-volume-ds-IND
.als doc-volume-ds-LOC doc-volume-ds-LOCAL
.
.ds doc-volume-as-alpha        alpha
.als doc-volume-as-Alpha doc-volume-as-alpha
.ds doc-volume-as-acorn26      acorn26
.ds doc-volume-as-acorn32      acorn32
.ds doc-volume-as-algor        algor
.ds doc-volume-as-amd64        amd64
.ds doc-volume-as-amiga        amiga
.ds doc-volume-as-amigappc     amigappc
.ds doc-volume-as-arc          arc
.ds doc-volume-as-arm          arm
.ds doc-volume-as-arm26        arm26
.ds doc-volume-as-arm32        arm32
.ds doc-volume-as-armish       armish
.ds doc-volume-as-atari        atari
.ds doc-volume-as-aviion       aviion
.ds doc-volume-as-beagle       beagle
.ds doc-volume-as-bebox        bebox
.ds doc-volume-as-cats         cats
.ds doc-volume-as-cesfic       cesfic
.ds doc-volume-as-cobalt       cobalt
.ds doc-volume-as-dreamcast    dreamcast
.ds doc-volume-as-emips        emips
.ds doc-volume-as-evbarm       evbarm
.ds doc-volume-as-evbmips      evbmips
.ds doc-volume-as-evbppc       evbppc
.ds doc-volume-as-evbsh3       evbsh3
.ds doc-volume-as-ews4800mips  ews4800mips
.ds doc-volume-as-hp300        hp300
.ds doc-volume-as-hp700        hp700
.ds doc-volume-as-hpcarm       hpcarm
.ds doc-volume-as-hpcmips      hpcmips
.ds doc-volume-as-hpcsh        hpcsh
.ds doc-volume-as-hppa         hppa
.ds doc-volume-as-hppa64       hppa64
.ds doc-volume-as-i386         i386
.ds doc-volume-as-ia64         ia64
.ds doc-volume-as-ibmnws       ibmnws
.ds doc-volume-as-iyonix       iyonix
.ds doc-volume-as-landisk      landisk
.ds doc-volume-as-loongson     loongson
.ds doc-volume-as-luna68k      luna68k
.ds doc-volume-as-luna88k      luna88k
.ds doc-volume-as-m68k         m68k
.ds doc-volume-as-mac68k       mac68k
.ds doc-volume-as-macppc       macppc
.ds doc-volume-as-mips         mips
.ds doc-volume-as-mips64       mips64
.ds doc-volume-as-mipsco       mipsco
.ds doc-volume-as-mmeye        mmeye
.ds doc-volume-as-mvme68k      mvme68k
.ds doc-volume-as-mvme88k      mvme88k
.ds doc-volume-as-mvmeppc      mvmeppc
.ds doc-volume-as-netwinder    netwinder
.ds doc-volume-as-news68k      news68k
.ds doc-volume-as-newsmips     newsmips
.ds doc-volume-as-next68k      next68k
.ds doc-volume-as-ofppc        ofppc
.ds doc-volume-as-palm         palm
.ds doc-volume-as-pc532        pc532
.ds doc-volume-as-playstation2 playstation2
.ds doc-volume-as-pmax         pmax
.ds doc-volume-as-pmppc        pmppc
.ds doc-volume-as-powerpc      powerpc
.ds doc-volume-as-prep         prep
.ds doc-volume-as-rs6000       rs6000
.ds doc-volume-as-sandpoint    sandpoint
.ds doc-volume-as-sbmips       sbmips
.ds doc-volume-as-sgi          sgi
.ds doc-volume-as-sgimips      sgimips
.ds doc-volume-as-sh3          sh3
.ds doc-volume-as-shark        shark
.ds doc-volume-as-socppc       socppc
.ds doc-volume-as-solbourne    solbourne
.ds doc-volume-as-sparc        sparc
.ds doc-volume-as-sparc64      sparc64
.ds doc-volume-as-sun2         sun2
.ds doc-volume-as-sun3         sun3
.ds doc-volume-as-tahoe        tahoe
.ds doc-volume-as-vax          vax
.ds doc-volume-as-x68k         x68k
.ds doc-volume-as-x86_64       x86_64
.ds doc-volume-as-xen          xen
.ds doc-volume-as-zaurus       zaurus
.
.eo
.de Dt
.  if !\n[.$] \
.    tm mdoc warning: .Dt directive expects one or more arguments \
(#\n[.c])
.  if !"\$1"" \
.    ds doc-page-topic "\$1
.
.  if \n[CT] \
.    stringup doc-page-topic
.
.  if !"\$2"" \{\
.    ds doc-section \$2
.    ie \B'\$2' \{\
.      if ((\$2 >= 1) & (\$2 <= 9)) \{\
.        ds doc-volume \" empty (not "LOCAL")
.        if \A'\$3' \{\
.          if d doc-volume-as-\$3 \
.            as doc-volume "\*[doc-volume-as-\$3]
.          \}
.        as doc-volume " \*[doc-volume-ds-\$2]
.      \}
.    \}
.    el \{\
.      ie "\$2"unass" \
.        ds doc-volume DRAFT
.      el \{ .ie "\$2"draft" \
.        ds doc-volume DRAFT
.      el .if "\$2"paper" \
.        ds doc-volume UNTITLED
.      \}
.   \}
.   if \A'\$3' \{\
.     if d doc-volume-ds-\$3 \
.       ds doc-volume "\*[doc-volume-ds-\$3]
.   \}
. \}
.
.  if !"\$3"" \
.    if "\*[doc-volume]"LOCAL" \
.      ds doc-volume \$3
..
.ec
.
.
.\" NS doc-default-operating-system global string
.\" NS   the default OS to associate with man pages
.\" NS
.\" NS override this in 'mdoc.local', if necessary
.
.ds doc-default-operating-system Debian\"
.
.
.\" NS doc-operating-system global string
.\" NS   the OS or software project associated with the man page
.
.ds doc-operating-system \" empty
.
.
.\" NS Os user macro (not parsed, not callable)
.\" NS   operating system
.\" NS
.\" NS modifies:
.\" NS   doc-operating-system
.\" NS
.\" NS local variables:
.\" NS   doc-operating-system-XXX-XXX
.\" NS
.\" NS width register 'Os' set above
.
.ds doc-operating-system-ATT-7   7th\~Edition
.als doc-operating-system-ATT-7th doc-operating-system-ATT-7
.ds doc-operating-system-ATT-3   System\~III
.als doc-operating-system-ATT-III doc-operating-system-ATT-3
.ds doc-operating-system-ATT-V   System\~V
.ds doc-operating-system-ATT-V.2 System\~V Release\~2
.ds doc-operating-system-ATT-V.3 System\~V Release\~3
.ds doc-operating-system-ATT-V.4 System\~V Release\~4
.
.ds doc-operating-system-BSD-3    3rd\~Berkeley Distribution
.ds doc-operating-system-BSD-4    4th\~Berkeley Distribution
.ds doc-operating-system-BSD-4.1  4.1\~Berkeley Distribution
.ds doc-operating-system-BSD-4.2  4.2\~Berkeley Distribution
.ds doc-operating-system-BSD-4.3  4.3\~Berkeley Distribution
.ds doc-operating-system-BSD-4.3T 4.3-Tahoe Berkeley Distribution
.ds doc-operating-system-BSD-4.3R 4.3-Reno Berkeley Distribution
.als doc-operating-system-BSD-4.3t doc-operating-system-BSD-4.3T
.als doc-operating-system-BSD-4.3r doc-operating-system-BSD-4.3R
.ds doc-operating-system-BSD-4.4  4.4BSD
.
.ds doc-operating-system-NetBSD-0.8   0.8
.ds doc-operating-system-NetBSD-0.8a  0.8A
.ds doc-operating-system-NetBSD-0.9   0.9
.ds doc-operating-system-NetBSD-0.9a  0.9A
.ds doc-operating-system-NetBSD-1.0   1.0
.ds doc-operating-system-NetBSD-1.0a  1.0A
.ds doc-operating-system-NetBSD-1.1   1.1
.ds doc-operating-system-NetBSD-1.2   1.2
.ds doc-operating-system-NetBSD-1.2a  1.2A
.ds doc-operating-system-NetBSD-1.2b  1.2B
.ds doc-operating-system-NetBSD-1.2c  1.2C
.ds doc-operating-system-NetBSD-1.2d  1.2D
.ds doc-operating-system-NetBSD-1.2e  1.2E
.ds doc-operating-system-NetBSD-1.3   1.3
.ds doc-operating-system-NetBSD-1.3a  1.3A
.ds doc-operating-system-NetBSD-1.4   1.4
.ds doc-operating-system-NetBSD-1.4.1 1.4.1
.ds doc-operating-system-NetBSD-1.4.2 1.4.2
.ds doc-operating-system-NetBSD-1.4.3 1.4.3
.ds doc-operating-system-NetBSD-1.5   1.5
.ds doc-operating-system-NetBSD-1.5.1 1.5.1
.ds doc-operating-system-NetBSD-1.5.2 1.5.2
.ds doc-operating-system-NetBSD-1.5.3 1.5.3
.ds doc-operating-system-NetBSD-1.6   1.6
.ds doc-operating-system-NetBSD-1.6.1 1.6.1
.ds doc-operating-system-NetBSD-1.6.2 1.6.2
.ds doc-operating-system-NetBSD-1.6.3 1.6.3
.ds doc-operating-system-NetBSD-2.0   2.0
.ds doc-operating-system-NetBSD-2.0.1 2.0.1
.ds doc-operating-system-NetBSD-2.0.2 2.0.2
.ds doc-operating-system-NetBSD-2.0.3 2.0.3
.ds doc-operating-system-NetBSD-2.1   2.1
.ds doc-operating-system-NetBSD-3.0   3.0
.ds doc-operating-system-NetBSD-3.0.1 3.0.1
.ds doc-operating-system-NetBSD-3.0.2 3.0.2
.ds doc-operating-system-NetBSD-3.0.3 3.0.3
.ds doc-operating-system-NetBSD-3.1   3.1
.ds doc-operating-system-NetBSD-3.1.1 3.1.1
.ds doc-operating-system-NetBSD-4.0   4.0
.ds doc-operating-system-NetBSD-4.0.1 4.0.1
.ds doc-operating-system-NetBSD-5.0   5.0
.ds doc-operating-system-NetBSD-5.0.1 5.0.1
.ds doc-operating-system-NetBSD-5.0.2 5.0.2
.ds doc-operating-system-NetBSD-5.1   5.1
.ds doc-operating-system-NetBSD-5.1.2 5.1.2
.ds doc-operating-system-NetBSD-5.1.3 5.1.3
.ds doc-operating-system-NetBSD-5.1.4 5.1.4
.ds doc-operating-system-NetBSD-5.2   5.2
.ds doc-operating-system-NetBSD-5.2.1 5.2.1
.ds doc-operating-system-NetBSD-5.2.2 5.2.2
.ds doc-operating-system-NetBSD-6.0   6.0
.ds doc-operating-system-NetBSD-6.0.1 6.0.1
.ds doc-operating-system-NetBSD-6.0.2 6.0.2
.ds doc-operating-system-NetBSD-6.0.3 6.0.3
.ds doc-operating-system-NetBSD-6.0.4 6.0.4
.ds doc-operating-system-NetBSD-6.0.5 6.0.5
.ds doc-operating-system-NetBSD-6.0.6 6.0.6
.ds doc-operating-system-NetBSD-6.1   6.1
.ds doc-operating-system-NetBSD-6.1.1 6.1.1
.ds doc-operating-system-NetBSD-6.1.2 6.1.2
.ds doc-operating-system-NetBSD-6.1.3 6.1.3
.ds doc-operating-system-NetBSD-6.1.4 6.1.4
.ds doc-operating-system-NetBSD-6.1.5 6.1.5
.ds doc-operating-system-NetBSD-7.0   7.0
.ds doc-operating-system-NetBSD-7.0.1 7.0.1
.ds doc-operating-system-NetBSD-7.0.2 7.0.2
.ds doc-operating-system-NetBSD-7.1   7.1
.ds doc-operating-system-NetBSD-7.1.1 7.1.1
.ds doc-operating-system-NetBSD-7.1.2 7.1.2
.ds doc-operating-system-NetBSD-7.2   7.2
.ds doc-operating-system-NetBSD-8.0   8.0
.ds doc-operating-system-NetBSD-8.1   8.1
.
.ds doc-operating-system-OpenBSD-2.0  2.0
.ds doc-operating-system-OpenBSD-2.1  2.1
.ds doc-operating-system-OpenBSD-2.2  2.2
.ds doc-operating-system-OpenBSD-2.3  2.3
.ds doc-operating-system-OpenBSD-2.4  2.4
.ds doc-operating-system-OpenBSD-2.5  2.5
.ds doc-operating-system-OpenBSD-2.6  2.6
.ds doc-operating-system-OpenBSD-2.7  2.7
.ds doc-operating-system-OpenBSD-2.8  2.8
.ds doc-operating-system-OpenBSD-2.9  2.9
.ds doc-operating-system-OpenBSD-3.0  3.0
.ds doc-operating-system-OpenBSD-3.1  3.1
.ds doc-operating-system-OpenBSD-3.2  3.2
.ds doc-operating-system-OpenBSD-3.3  3.3
.ds doc-operating-system-OpenBSD-3.4  3.4
.ds doc-operating-system-OpenBSD-3.5  3.5
.ds doc-operating-system-OpenBSD-3.6  3.6
.ds doc-operating-system-OpenBSD-3.7  3.7
.ds doc-operating-system-OpenBSD-3.8  3.8
.ds doc-operating-system-OpenBSD-3.9  3.9
.ds doc-operating-system-OpenBSD-4.0  4.0
.ds doc-operating-system-OpenBSD-4.1  4.1
.ds doc-operating-system-OpenBSD-4.2  4.2
.ds doc-operating-system-OpenBSD-4.3  4.3
.ds doc-operating-system-OpenBSD-4.4  4.4
.ds doc-operating-system-OpenBSD-4.5  4.5
.ds doc-operating-system-OpenBSD-4.6  4.6
.ds doc-operating-system-OpenBSD-4.7  4.7
.ds doc-operating-system-OpenBSD-4.8  4.8
.ds doc-operating-system-OpenBSD-4.9  4.9
.ds doc-operating-system-OpenBSD-5.0  5.0
.ds doc-operating-system-OpenBSD-5.1  5.1
.ds doc-operating-system-OpenBSD-5.2  5.2
.ds doc-operating-system-OpenBSD-5.3  5.3
.ds doc-operating-system-OpenBSD-5.4  5.4
.ds doc-operating-system-OpenBSD-5.5  5.5
.ds doc-operating-system-OpenBSD-5.6  5.6
.ds doc-operating-system-OpenBSD-5.7  5.7
.ds doc-operating-system-OpenBSD-5.8  5.8
.ds doc-operating-system-OpenBSD-5.9  5.9
.ds doc-operating-system-OpenBSD-6.0  6.0
.ds doc-operating-system-OpenBSD-6.1  6.1
.ds doc-operating-system-OpenBSD-6.2  6.2
.ds doc-operating-system-OpenBSD-6.3  6.3
.ds doc-operating-system-OpenBSD-6.4  6.4
.ds doc-operating-system-OpenBSD-6.5  6.5
.ds doc-operating-system-OpenBSD-6.6  6.6
.
.ds doc-operating-system-FreeBSD-1.0     1.0
.ds doc-operating-system-FreeBSD-1.1     1.1
.ds doc-operating-system-FreeBSD-1.1.5   1.1.5
.ds doc-operating-system-FreeBSD-1.1.5.1 1.1.5.1
.ds doc-operating-system-FreeBSD-2.0     2.0
.ds doc-operating-system-FreeBSD-2.0.5   2.0.5
.ds doc-operating-system-FreeBSD-2.1     2.1
.ds doc-operating-system-FreeBSD-2.1.5   2.1.5
.ds doc-operating-system-FreeBSD-2.1.6   2.1.6
.ds doc-operating-system-FreeBSD-2.1.7   2.1.7
.ds doc-operating-system-FreeBSD-2.2     2.2
.ds doc-operating-system-FreeBSD-2.2.1   2.2.1
.ds doc-operating-system-FreeBSD-2.2.2   2.2.2
.ds doc-operating-system-FreeBSD-2.2.5   2.2.5
.ds doc-operating-system-FreeBSD-2.2.6   2.2.6
.ds doc-operating-system-FreeBSD-2.2.7   2.2.7
.ds doc-operating-system-FreeBSD-2.2.8   2.2.8
.ds doc-operating-system-FreeBSD-2.2.9   2.2.9
.ds doc-operating-system-FreeBSD-3.0     3.0
.ds doc-operating-system-FreeBSD-3.1     3.1
.ds doc-operating-system-FreeBSD-3.2     3.2
.ds doc-operating-system-FreeBSD-3.3     3.3
.ds doc-operating-system-FreeBSD-3.4     3.4
.ds doc-operating-system-FreeBSD-3.5     3.5
.ds doc-operating-system-FreeBSD-4.0     4.0
.ds doc-operating-system-FreeBSD-4.1     4.1
.ds doc-operating-system-FreeBSD-4.1.1   4.1.1
.ds doc-operating-system-FreeBSD-4.2     4.2
.ds doc-operating-system-FreeBSD-4.3     4.3
.ds doc-operating-system-FreeBSD-4.4     4.4
.ds doc-operating-system-FreeBSD-4.5     4.5
.ds doc-operating-system-FreeBSD-4.6     4.6
.ds doc-operating-system-FreeBSD-4.6.2   4.6.2
.ds doc-operating-system-FreeBSD-4.7     4.7
.ds doc-operating-system-FreeBSD-4.8     4.8
.ds doc-operating-system-FreeBSD-4.9     4.9
.ds doc-operating-system-FreeBSD-4.10    4.10
.ds doc-operating-system-FreeBSD-4.11    4.11
.ds doc-operating-system-FreeBSD-5.0     5.0
.ds doc-operating-system-FreeBSD-5.1     5.1
.ds doc-operating-system-FreeBSD-5.2     5.2
.ds doc-operating-system-FreeBSD-5.2.1   5.2.1
.ds doc-operating-system-FreeBSD-5.3     5.3
.ds doc-operating-system-FreeBSD-5.4     5.4
.ds doc-operating-system-FreeBSD-5.5     5.5
.ds doc-operating-system-FreeBSD-6.0     6.0
.ds doc-operating-system-FreeBSD-6.1     6.1
.ds doc-operating-system-FreeBSD-6.2     6.2
.ds doc-operating-system-FreeBSD-6.3     6.3
.ds doc-operating-system-FreeBSD-6.4     6.4
.ds doc-operating-system-FreeBSD-7.0     7.0
.ds doc-operating-system-FreeBSD-7.1     7.1
.ds doc-operating-system-FreeBSD-7.2     7.2
.ds doc-operating-system-FreeBSD-7.3     7.3
.ds doc-operating-system-FreeBSD-7.4     7.4
.ds doc-operating-system-FreeBSD-8.0     8.0
.ds doc-operating-system-FreeBSD-8.1     8.1
.ds doc-operating-system-FreeBSD-8.2     8.2
.ds doc-operating-system-FreeBSD-8.3     8.3
.ds doc-operating-system-FreeBSD-8.4     8.4
.ds doc-operating-system-FreeBSD-9.0     9.0
.ds doc-operating-system-FreeBSD-9.1     9.1
.ds doc-operating-system-FreeBSD-9.2     9.2
.ds doc-operating-system-FreeBSD-9.3     9.3
.ds doc-operating-system-FreeBSD-10.0    10.0
.ds doc-operating-system-FreeBSD-10.1    10.1
.ds doc-operating-system-FreeBSD-10.2    10.2
.ds doc-operating-system-FreeBSD-10.3    10.3
.ds doc-operating-system-FreeBSD-10.4    10.4
.ds doc-operating-system-FreeBSD-11.0    11.0
.ds doc-operating-system-FreeBSD-11.1    11.1
.ds doc-operating-system-FreeBSD-11.2    11.2
.ds doc-operating-system-FreeBSD-11.3    11.3
.ds doc-operating-system-FreeBSD-12.0    12.0
.ds doc-operating-system-FreeBSD-12.1    12.1
.
.ds doc-operating-system-Darwin-8.0.0  8.0.0
.ds doc-operating-system-Darwin-8.1.0  8.1.0
.ds doc-operating-system-Darwin-8.2.0  8.2.0
.ds doc-operating-system-Darwin-8.3.0  8.3.0
.ds doc-operating-system-Darwin-8.4.0  8.4.0
.ds doc-operating-system-Darwin-8.5.0  8.5.0
.ds doc-operating-system-Darwin-8.6.0  8.6.0
.ds doc-operating-system-Darwin-8.7.0  8.7.0
.ds doc-operating-system-Darwin-8.8.0  8.8.0
.ds doc-operating-system-Darwin-8.9.0  8.9.0
.ds doc-operating-system-Darwin-8.10.0 8.10.0
.ds doc-operating-system-Darwin-8.11.0 8.11.0
.ds doc-operating-system-Darwin-9.0.0  9.0.0
.ds doc-operating-system-Darwin-9.1.0  9.1.0
.ds doc-operating-system-Darwin-9.2.0  9.2.0
.ds doc-operating-system-Darwin-9.3.0  9.3.0
.ds doc-operating-system-Darwin-9.4.0  9.4.0
.ds doc-operating-system-Darwin-9.5.0  9.5.0
.ds doc-operating-system-Darwin-9.6.0  9.6.0
.ds doc-operating-system-Darwin-9.7.0  9.7.0
.ds doc-operating-system-Darwin-9.8.0  9.8.0
.ds doc-operating-system-Darwin-10.0.0 10.0.0
.ds doc-operating-system-Darwin-10.1.0 10.1.0
.ds doc-operating-system-Darwin-10.2.0 10.2.0
.ds doc-operating-system-Darwin-10.3.0 10.3.0
.ds doc-operating-system-Darwin-10.4.0 10.4.0
.ds doc-operating-system-Darwin-10.5.0 10.5.0
.ds doc-operating-system-Darwin-10.6.0 10.6.0
.ds doc-operating-system-Darwin-10.7.0 10.7.0
.ds doc-operating-system-Darwin-10.8.0 10.8.0
.ds doc-operating-system-Darwin-11.0.0 11.0.0
.ds doc-operating-system-Darwin-11.1.0 11.1.0
.ds doc-operating-system-Darwin-11.2.0 11.2.0
.ds doc-operating-system-Darwin-11.3.0 11.3.0
.ds doc-operating-system-Darwin-11.4.0 11.4.0
.ds doc-operating-system-Darwin-11.5.0 11.5.0
.ds doc-operating-system-Darwin-12.0.0 12.0.0
.ds doc-operating-system-Darwin-12.1.0 12.1.0
.ds doc-operating-system-Darwin-12.2.0 12.2.0
.ds doc-operating-system-Darwin-13.0.0 13.0.0
.ds doc-operating-system-Darwin-13.1.0 13.1.0
.ds doc-operating-system-Darwin-13.2.0 13.2.0
.ds doc-operating-system-Darwin-13.3.0 13.3.0
.ds doc-operating-system-Darwin-13.4.0 13.4.0
.ds doc-operating-system-Darwin-14.0.0 14.0.0
.ds doc-operating-system-Darwin-14.1.0 14.1.0
.ds doc-operating-system-Darwin-14.2.0 14.2.0
.ds doc-operating-system-Darwin-14.3.0 14.3.0
.ds doc-operating-system-Darwin-14.4.0 14.4.0
.ds doc-operating-system-Darwin-14.5.0 14.5.0
.ds doc-operating-system-Darwin-15.0.0 15.0.0
.ds doc-operating-system-Darwin-15.1.0 15.1.0
.ds doc-operating-system-Darwin-15.2.0 15.2.0
.ds doc-operating-system-Darwin-15.3.0 15.3.0
.ds doc-operating-system-Darwin-15.4.0 15.4.0
.ds doc-operating-system-Darwin-15.5.0 15.5.0
.ds doc-operating-system-Darwin-15.6.0 15.6.0
.ds doc-operating-system-Darwin-16.0.0 16.0.0
.ds doc-operating-system-Darwin-16.1.0 16.1.0
.ds doc-operating-system-Darwin-16.2.0 16.2.0
.ds doc-operating-system-Darwin-16.3.0 16.3.0
.ds doc-operating-system-Darwin-16.4.0 16.4.0
.ds doc-operating-system-Darwin-16.5.0 16.5.0
.ds doc-operating-system-Darwin-16.6.0 16.6.0
.ds doc-operating-system-Darwin-17.0.0 17.0.0
.ds doc-operating-system-Darwin-17.1.0 17.1.0
.ds doc-operating-system-Darwin-17.2.0 17.2.0
.ds doc-operating-system-Darwin-17.3.0 17.3.0
.ds doc-operating-system-Darwin-17.4.0 17.4.0
.ds doc-operating-system-Darwin-17.5.0 17.5.0
.ds doc-operating-system-Darwin-17.6.0 17.6.0
.ds doc-operating-system-Darwin-17.7.0 17.7.0
.ds doc-operating-system-Darwin-18.0.0 18.0.0
.ds doc-operating-system-Darwin-18.1.0 18.1.0
.ds doc-operating-system-Darwin-18.2.0 18.2.0
.ds doc-operating-system-Darwin-18.3.0 18.3.0
.ds doc-operating-system-Darwin-18.4.0 18.4.0
.ds doc-operating-system-Darwin-18.5.0 18.5.0
.ds doc-operating-system-Darwin-18.6.0 18.6.0
.ds doc-operating-system-Darwin-18.7.0 18.7.0
.ds doc-operating-system-Darwin-19.0.0 19.0.0
.ds doc-operating-system-Darwin-19.1.0 19.1.0
.ds doc-operating-system-Darwin-19.2.0 19.2.0
.
.ds doc-operating-system-DragonFly-1.0    1.0
.ds doc-operating-system-DragonFly-1.1    1.1
.ds doc-operating-system-DragonFly-1.2    1.2
.ds doc-operating-system-DragonFly-1.3    1.3
.ds doc-operating-system-DragonFly-1.4    1.4
.ds doc-operating-system-DragonFly-1.5    1.5
.ds doc-operating-system-DragonFly-1.6    1.6
.ds doc-operating-system-DragonFly-1.7    1.7
.ds doc-operating-system-DragonFly-1.8    1.8
.ds doc-operating-system-DragonFly-1.8.1  1.8.1
.ds doc-operating-system-DragonFly-1.9    1.9
.ds doc-operating-system-DragonFly-1.10   1.10
.ds doc-operating-system-DragonFly-1.11   1.11
.ds doc-operating-system-DragonFly-1.12   1.12
.ds doc-operating-system-DragonFly-1.12.2 1.12.2
.ds doc-operating-system-DragonFly-1.13   1.13
.ds doc-operating-system-DragonFly-2.0    2.0
.ds doc-operating-system-DragonFly-2.1    2.1
.ds doc-operating-system-DragonFly-2.2    2.2
.ds doc-operating-system-DragonFly-2.3    2.3
.ds doc-operating-system-DragonFly-2.4    2.4
.ds doc-operating-system-DragonFly-2.5    2.5
.ds doc-operating-system-DragonFly-2.6    2.6
.ds doc-operating-system-DragonFly-2.7    2.7
.ds doc-operating-system-DragonFly-2.8    2.8
.ds doc-operating-system-DragonFly-2.9    2.9
.ds doc-operating-system-DragonFly-2.9.1  2.9.1
.ds doc-operating-system-DragonFly-2.10   2.10
.ds doc-operating-system-DragonFly-2.10.1 2.10.1
.ds doc-operating-system-DragonFly-2.11   2.11
.ds doc-operating-system-DragonFly-2.12   2.12
.ds doc-operating-system-DragonFly-2.13   2.13
.ds doc-operating-system-DragonFly-3.0    3.0
.ds doc-operating-system-DragonFly-3.0.1  3.0.1
.ds doc-operating-system-DragonFly-3.0.2  3.0.2
.ds doc-operating-system-DragonFly-3.1    3.1
.ds doc-operating-system-DragonFly-3.2    3.2
.ds doc-operating-system-DragonFly-3.2.1  3.2.1
.ds doc-operating-system-DragonFly-3.2.2  3.2.2
.ds doc-operating-system-DragonFly-3.3    3.3
.ds doc-operating-system-DragonFly-3.4    3.4
.ds doc-operating-system-DragonFly-3.4.1  3.4.1
.ds doc-operating-system-DragonFly-3.4.2  3.4.2
.ds doc-operating-system-DragonFly-3.4.3  3.4.3
.ds doc-operating-system-DragonFly-3.5    3.5
.ds doc-operating-system-DragonFly-3.6    3.6
.ds doc-operating-system-DragonFly-3.6.1  3.6.1
.ds doc-operating-system-DragonFly-3.6.2  3.6.2
.ds doc-operating-system-DragonFly-3.7    3.7
.ds doc-operating-system-DragonFly-3.8    3.8
.ds doc-operating-system-DragonFly-3.8.1  3.8.1
.ds doc-operating-system-DragonFly-3.8.2  3.8.2
.ds doc-operating-system-DragonFly-4.0    4.0
.ds doc-operating-system-DragonFly-4.0.1  4.0.1
.ds doc-operating-system-DragonFly-4.0.2  4.0.2
.ds doc-operating-system-DragonFly-4.0.3  4.0.3
.ds doc-operating-system-DragonFly-4.0.4  4.0.4
.ds doc-operating-system-DragonFly-4.0.5  4.0.5
.ds doc-operating-system-DragonFly-4.0.6  4.0.6
.ds doc-operating-system-DragonFly-4.1    4.1
.ds doc-operating-system-DragonFly-4.2    4.2
.ds doc-operating-system-DragonFly-4.2.1  4.2.1
.ds doc-operating-system-DragonFly-4.2.2  4.2.2
.ds doc-operating-system-DragonFly-4.2.3  4.2.3
.ds doc-operating-system-DragonFly-4.2.4  4.2.4
.ds doc-operating-system-DragonFly-4.3    4.3
.ds doc-operating-system-DragonFly-4.4    4.4
.ds doc-operating-system-DragonFly-4.4.1  4.4.1
.ds doc-operating-system-DragonFly-4.4.2  4.4.2
.ds doc-operating-system-DragonFly-4.4.3  4.4.3
.ds doc-operating-system-DragonFly-4.5    4.5
.ds doc-operating-system-DragonFly-4.6    4.6
.ds doc-operating-system-DragonFly-4.6.1  4.6.1
.ds doc-operating-system-DragonFly-4.6.2  4.6.2
.ds doc-operating-system-DragonFly-4.7    4.7
.ds doc-operating-system-DragonFly-4.8    4.8
.ds doc-operating-system-DragonFly-4.8.1  4.8.1
.ds doc-operating-system-DragonFly-4.9    4.9
.ds doc-operating-system-DragonFly-5.0    5.0
.ds doc-operating-system-DragonFly-5.0.1  5.0.1
.ds doc-operating-system-DragonFly-5.0.2  5.0.2
.ds doc-operating-system-DragonFly-5.1    5.1
.ds doc-operating-system-DragonFly-5.2    5.2
.ds doc-operating-system-DragonFly-5.2.1  5.2.1
.ds doc-operating-system-DragonFly-5.2.2  5.2.2
.ds doc-operating-system-DragonFly-5.3    5.3
.ds doc-operating-system-DragonFly-5.4    5.4
.ds doc-operating-system-DragonFly-5.4.1  5.4.1
.ds doc-operating-system-DragonFly-5.4.2  5.4.2
.ds doc-operating-system-DragonFly-5.4.3  5.4.3
.ds doc-operating-system-DragonFly-5.5    5.5
.ds doc-operating-system-DragonFly-5.6    5.6
.ds doc-operating-system-DragonFly-5.6.1  5.6.1
.ds doc-operating-system-DragonFly-5.6.2  5.6.2
.
.eo
.de Os
.  ie "\$1"" \
.    ds doc-operating-system "\*[doc-default-operating-system]
.  el \{ .ie "\$1"ATT" \{\
.    ds doc-operating-system AT&T
.    if \A'\$2' \{\
.      ie d doc-operating-system-ATT-\$2 \
.        as doc-operating-system " \*[doc-operating-system-ATT-\$2]
.      el \
.        as doc-operating-system " UNIX
.  \}\}
.  el \{ .ie "\$1"BSD" \{\
.    if \A'\$2' \{\
.      ie d doc-operating-system-BSD-\$2 \
.        ds doc-operating-system "\*[doc-operating-system-BSD-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown BSD version '\$2' (#\n[.c])
.  \}\}
.  el \{ .ie "\$1"FreeBSD" \{\
.    ds doc-operating-system FreeBSD
.    if \A'\$2' \{\
.      ie d doc-operating-system-FreeBSD-\$2 \
.        as doc-operating-system \~\*[doc-operating-system-FreeBSD-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown FreeBSD version '\$2' (#\n[.c])
.  \}\}
.  el \{ .ie "\$1"DragonFly" \{\
.    ds doc-operating-system DragonFly
.    if \A'\$2' \{\
.      ie d doc-operating-system-DragonFly-\$2 \
.        as doc-operating-system \~\*[doc-operating-system-DragonFly-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown DragonFly version '\$2' (#\n[.c])
.  \}\}
.  el \{ .ie "\$1"NetBSD" \{\
.    ds doc-operating-system NetBSD
.    if \A'\$2' \{\
.      ie d doc-operating-system-NetBSD-\$2 \
.        as doc-operating-system \~\*[doc-operating-system-NetBSD-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown NetBSD version '\$2' (#\n[.c])
.  \}\}
.  el \{ .ie "\$1"OpenBSD" \{\
.    ds doc-operating-system OpenBSD
.    if \A'\$2' \{\
.      ie d doc-operating-system-OpenBSD-\$2 \
.        as doc-operating-system \~\*[doc-operating-system-OpenBSD-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown OpenBSD version '\$2' (#\n[.c])
.  \}\}
.  el \{ .ie "\$1"Darwin" \{\
.    ds doc-operating-system Darwin
.    if \A'\$2' \{\
.      ie d doc-operating-system-Darwin-\$2 \
.        as doc-operating-system \~\*[doc-operating-system-Darwin-\$2]
.      el \
.        tm mdoc warning: .Os: Unknown Darwin version '\$2' (#\n[.c])
.  \}\}
.  el \{\
.    ds doc-operating-system \$1
.    if !"\$2"" \
.      as doc-operating-system " \$2
.  \}\}\}\}\}\}\}\}
.
.  doc-set-up-titles
.
.  if '\*[.T]'pdf' \
.    pdfbookmark 1 "\*[doc-page-topic](\*[doc-section])"
.
.  doc-header
.  nr doc-need-titles-reset 1
..
.ec
.
.
.\" NS doc-hyphen-flags global register
.\" NS   the parameter for the '.hy' request
.ie \n[HY] \{\
.  ie \n[cR] .nr doc-hyphen-flags \n[\*[locale]*hyphenation-mode-base]
.  el        .nr doc-hyphen-flags \n[\*[locale]*hyphenation-mode-trap]
.\}
.el .nr doc-hyphen-flags 0
.
.
.\" NS doc-header macro
.\" NS   print page header
.\" NS
.\" NS local variables:
.\" NS   doc-xref
.\" NS   doc-abbv
.\" NS   doc-reg-dh
.\" NS   doc-reg-dh1
.\" NS   doc-hs-len
.\" NS   doc-hs-len-prev
.
.eo
.de doc-header
.  ds doc-xref \*[doc-page-topic-font]\*[doc-page-topic]\f[]\"
.  as doc-xref \*[doc-page-section-font](\*[doc-section])\f[]\"
.  ds doc-abbv \*[doc-page-topic]\"
.  ev doc-env-dh
.  doc-setup-page-layout
.  ie \n[cR] .pl +1v
.  el        .sp .5i
.  nr doc-reg-dh \w'\*[doc-page-topic-font]\*[doc-xref]\f[]'
.  nr doc-reg-dh1 \w'\*[doc-volume]'
.  if (\n[doc-reg-dh] + \n[doc-reg-dh1] + \n[doc-reg-dh] >= \n[.lt]) \{\
.    while (\n[doc-reg-dh] + \n[doc-reg-dh1] + \n[doc-reg-dh] >= \n[.lt]) \{\
.      ds doc-xref \*[doc-page-topic-font]\*[doc-abbv]\f[]\"
.      as doc-xref \*[doc-page-section-font](\*[doc-section])\f[]\"
.      length doc-abbv-len-prev \*[doc-abbv]
.      substring doc-abbv 0 -2
.      length doc-abbv-len \*[doc-abbv]
.      nr doc-reg-dh \w'\*[doc-page-topic-font]\*[doc-abbv]\|.\|.\|.\f[]'
.      \" If header string didn't actually get shorter, stop trying.
.      if (\n[doc-abbv-len-prev] <= \n[doc-abbv-len]) \
.        break
.    \}
.    rr doc-abbv-len
.    rr doc-abbv-len-prev
.    as doc-abbv \|.\|.\|.
.  \}
.  tl '\*[doc-xref]'\*[doc-volume]\f[]'\*[doc-xref]'
.  ie \n[cR] \{\
.    pl +1v
.    sp 1v
.  \}
.  el .sp |1i
.  ev
.  ns
.  rm doc-xref
.  rm doc-abbv
..
.ec
.
.
.\" NS doc-break-body-text
.\" NS   Schedule a page break when the next output line is written (not
.\" NS   called if continuously rendering).
.de doc-break-body-text
'  bp
..
.
.
.\" NS doc-footer macro
.\" NS   print page footer
.\"
.\" NS local variables:
.\" NS   doc-xref
.\" NS   doc-page-id
.
.eo
.de doc-footer
.  ds doc-xref \*[doc-page-topic-font]\*[doc-page-topic]\f[]\"
.  as doc-xref \*[doc-page-section-font](\*[doc-section])\f[]\"
.  ds doc-page-id \n[%]
.  if r X \{\
.    if (\n[%] > \n[X]) \{\
.      nr doc-page-letter (\n[%] - \n[X])
.      ds doc-page-id \n[X]\n[doc-page-letter]\"
.    \}
.  \}
.  ev doc-caption-enviroment
.  doc-setup-page-layout
.  ie \n[D] \{\
.    ie e \
.      tl '%'\*[doc-date-string]'\*[doc-operating-system]'
.    el \
.      tl '\*[doc-operating-system]'\*[doc-date-string]'\*[doc-page-id]'
.  \}
.  el \{\
.    ie \n[cR] \
.      tl '\*[doc-operating-system]'\*[doc-date-string]'\*[doc-xref]'
.    el \
.      tl '\*[doc-operating-system]'\*[doc-date-string]'\*[doc-page-id]'
.  \}
.  if !\n[cR] .bp
.  ev
.  rm doc-page-id
.  rm doc-xref
..
.ec
.
.
.\" NS doc-check-depth macro
.\" NS   check paired macros
.
.eo
.de doc-check-depth
.  if \n[doc-list-depth] \{\
.    tm mdoc warning: A .Bl directive has no matching .El (#\n[.c])
.    nr doc-list-depth 0
.  \}
.  if \n[doc-display-depth] \{\
.    tm mdoc warning: A .Bd directive has no matching .Ed (#\n[.c])
.    nr doc-display-depth 0
.  \}
.  if \n[doc-fontmode-depth] \{\
.    tm mdoc warning: A .Bf directive has no matching .Ef (#\n[.c])
.    nr doc-fontmode-depth 0
.  \}
..
.ec
.
.
.\" NS doc-end-macro macro
.\" NS   finish output
.\" NS
.\" NS modifies:
.\" NS   doc-need-titles-reset
.
.eo
.de doc-end-macro
.  doc-check-depth
.
.  if \n[cR] \{\
.    \" We might have a pending output line that is not yet broken, and
.    \" also be 1v from the bottom of the page.  If we break (or flush)
.    \" the output line now, the page will get ejected afterward and
.    \" troff will exit because we're in an end-of-input macro--our
.    \" footer will never be output.  So, if that is the case, further
.    \" extend the page length by 1v.
.    if ((\n[.p] - \n[nl]) <= \n[.V]) .pl +1v
.    br
.    pl +1v
.    sp 1v
.    doc-footer
.    \" If we're processing multiple documents and have started a new
.    \" one, draw a line between this footer and the next header.
.    if !'\n[.F]'' \{\
.      pl +1v
.      nf
.      ti 0
\D'l \n[doc-line-length]u 0'
.      fi
.    \}
.    \" suppress empty lines after the footer
.    pl \n[nl]u
.  \}
.  ch doc-header
.  doc-break-page-with-new-number
.
.  \" Reset strings to reduce info leaks from one man page to the next.
.  ds doc-date-string UNDATED\"
.  ds doc-page-topic UNTITLED\"
.  ds doc-volume LOCAL\"
.  ds doc-section \" empty
.  ds doc-operating-system \" empty
.  ds doc-topic-name \" empty
..
.ec
.
.
.\" NS doc-break-page-with-new-number macro
.\" NS   Break the page and update its number depending on the C
.\" NS   (consecutive numbering) register.
.\" NS
.\" NS  Corner case: if formatting multiple documents and P (starting
.\" NS  page number) is defined but C is not set, start numbering each
.\" NS  document at \n[P].  Not strictly necessary if not switching
.\" NS  macro packages.
.
.eo
.de doc-break-page-with-new-number
.  ie \n[C] .bp (\n[%] + 1) \" argument NOT redundant before page 1
.  el \{\
.    ie r P .bp \n[P]
.    el     .bp 1
.  \}
..
.ec
.
.
.\" NS doc-paragraph macro
.\" NS   insert a paragraph
.
.eo
.de doc-paragraph
.  sp \n[doc-paragraph-space]u
.  if !\n[cR] \
.    ne 2
.  ns
..
.ec
.
.
.\" NS Pp user macro (not parsed, not callable)
.\" NS   new paragraph
.\" NS
.\" NS width register 'Pp' set above
.
.als Pp doc-paragraph
.
.
.\" NS Lp user macro (not parsed, not callable)
.\" NS   same as .Pp
.\" NS
.\" NS width register 'Lp' set above
.
.als Lp doc-paragraph
.
.
.eo
.de LP
.  tm Not a \-mdoc command: .LP (#\n[.c])
..
.ec
.
.
.eo
.de PP
.  tm Not a \-mdoc command: .PP (#\n[.c])
..
.ec
.
.
.eo
.de pp
.  tm Not a \-mdoc command: .pp (#\n[.c])
..
.ec
.
.
.eo
.de SH
.  tm Not a \-mdoc command: .SH (#\n[.c])
..
.ec
.
.
.\" NS Nd user macro (not parsed, not callable)
.\" NS   print name description
.\" NS
.\" NS width register 'Nd' set above
.
.eo
.de Nd
.  nop \[em] \$*
..
.ec
.
.
.\" NS doc-in-name-section global register (bool)
.\" NS   whether we are in the 'name' section
.
.nr doc-in-name-section 0
.
.
.\" NS doc-in-synopsis-section global register (bool)
.\" NS   whether we are in the 'synopsis' section
.
.nr doc-in-synopsis-section 0
.
.
.\" NS doc-in-library-section global register (bool)
.\" NS   whether we are in the 'library' section
.
.nr doc-in-library-section 0
.
.
.\" NS doc-in-see-also-section global register (bool)
.\" NS   whether we are in the 'see also' section
.
.nr doc-in-see-also-section 0
.
.
.\" NS doc-in-files-section global register (bool)
.\" NS   whether we are in the 'files' section
.
.nr doc-in-files-section 0
.
.
.\" NS doc-in-authors-section global register (bool)
.\" NS   whether we are in the 'authors' section
.
.nr doc-in-authors-section 0
.
.
.\" NS doc-need-titles-reset global register (bool)
.\" NS   whether the strings that set header and footer text need to be
.\" NS   reconfigured
.\" NS
.\" NS This happens when batch-rendering and starting a new page.
.
.nr doc-need-titles-reset 0
.
.
.\" NS doc-first-parameter macro
.\" NS   return first parameter
.\" NS
.\" NS local variables:
.\" NS   doc-str-dfp
.
.eo
.de doc-first-parameter
.  ds doc-str-dfp "\$1
..
.ec
.
.
.\" NS doc-prepare-section-heading macro
.\" NS   define `doc-sec-head`, `macro` prepared for string matching
.\"
.\" NS
.\" NS local variables:
.\" NS   doc-str-tmp1
.\" NS   doc-str-tmp2
.\" NS   doc-tmp-strlen
.
.eo
.de doc-prepare-section-heading
.  ds doc-str-tmp1 "\$*
.  ds doc-str-tmp2 "\$*
.  length doc-tmp-strlen \$*
.  \" Leave (nonstandard) section headings of length 0 or 1 unchanged.
.  ie \n[doc-tmp-strlen]>1 \{\
.    substring doc-str-tmp1 0 0
.    substring doc-str-tmp2 1
.    stringdown doc-str-tmp2
.    ds doc-sec-head \*[doc-str-tmp1]\*[doc-str-tmp2]\"
.  \}
.  el \
.    ds doc-sec-head "\$*
.  rm doc-str-tmp1
.  rm doc-str-tmp2
.  rr doc-tmp-strlen
..
.ec
.
.
.\" NS Sh user macro (not callable)
.\" NS   section headers
.\" NS
.\" NS modifies:
.\" NS   doc-func-args-processed
.\" NS   doc-func-count
.\" NS   doc-in-authors-section
.\" NS   doc-in-files-section
.\" NS   doc-in-library-section
.\" NS   doc-in-name-section
.\" NS   doc-in-see-also-section
.\" NS   doc-in-synopsis-section
.\" NS   doc-indent-synopsis
.\" NS   doc-indent-synopsis-active
.\" NS   doc-is-func
.\" NS   doc-num-func-args
.\" NS
.\" NS local variables:
.\" NS   doc-reg-Sh
.\" NS   doc-reg-Sh1
.\" NS   doc-section-XXX
.\" NS
.\" NS width register 'Sh' set in doc-common
.
.ds doc-section-name        Name\"
.ds doc-section-synopsis    Synopsis\"
.ds doc-section-library     Library\"
.ds doc-section-description Description\"
.ds doc-section-see-also    See also\"
.ds doc-section-files       Files\"
.ds doc-section-authors     Authors\"
.
.eo
.de Sh
.  \" Tell doc-print-recursive whether to force capitalization.
.  nr doc-do-capitalize \n[CS]
.
.  \" Normalize capitalization of section heading.
.  doc-prepare-section-heading \$*
.
.  ie "\*[doc-sec-head]"\*[doc-section-name]" \
.    nr doc-in-name-section 1
.  el \
.    nr doc-in-name-section 0
.
.  ie \n[doc-arg-count] \{\
.    \" we only allow 'Sh' within 'Sh'; it will change the font back to
.    \" 'doc-Sh-font'
.    ie "\*[doc-macro-name]"Sh" \{\
.      nr doc-arg-ptr +1
.      ie (\n[doc-arg-count] >= \n[doc-arg-ptr]) \{\
.        nr doc-curr-font \n[.f]
.        nop \*[doc-Sh-font]\c
.        doc-print-recursive
.      \}
.      el \{\
.        tm Usage: .Sh section_name ... (#\n[.c])
.        doc-reset-args
.    \}\}
.    el \{\
.      tm Usage: .Sh not callable by other macros (#\n[.c])
.      doc-reset-args
.  \}\}
.  el \{\
.    if !\n[.$] \{\
.      tm Usage: .Sh section_name ... (#\n[.c])
.      return
.    \}
.
.    ds doc-macro-name Sh
.    doc-parse-args \$@
.
.    ad \*[AD]
.
.    ie "\*[doc-sec-head]"\*[doc-section-name]" \{\
.      doc-set-up-titles
.      in 0
.    \}
.    el \{\
.      nr doc-in-name-section 0
.      nr doc-in-synopsis-section 0
.      nr doc-in-library-section 0
.      nr doc-in-see-also-section 0
.      nr doc-in-files-section 0
.      nr doc-in-authors-section 0
.
.      ie        "\*[doc-sec-head]"\*[doc-section-synopsis]" \{\
.        if t \
.          na
.        nr doc-in-synopsis-section 1
.        nr doc-indent-synopsis 0
.        nr doc-indent-synopsis-active 0
.      \}
.      el \{ .ie "\*[doc-sec-head]"\*[doc-section-library]" \{\
.        nr doc-in-library-section 1
.      \}
.      el \{ .ie "\*[doc-sec-head]"\*[doc-section-description]" \{\
.        nr doc-is-func 0
.        nr doc-func-count 0
.        nr doc-func-args-processed 0
.        nr doc-num-func-args 0
.      \}
.      el \{ .ie "\*[doc-sec-head]"\*[doc-section-see-also]" \{\
.        if t \
.          na
.        nr doc-in-see-also-section 1
.      \}
.      el \{ .ie "\*[doc-sec-head]"\*[doc-section-files]" \
.        nr doc-in-files-section 1
.      el .if    "\*[doc-sec-head]"\*[doc-section-authors]" \
.        nr doc-in-authors-section 1
.      \}\}\}\}
.
.      in 0
.      nr doc-have-author 0
.    \}
.
.    doc-setup-page-layout
.    sp \n[doc-paragraph-space]u
.    ns
.    ta T .5i
.    if !\n[cR] \
.      ne 3
.    fi
.
.  if '\*[.T]'pdf' \
.    pdfbookmark 2 "\*[doc-sec-head]"
.
.    if t \{\
.      nr doc-reg-Sh \n[.ss]
.      nr doc-reg-Sh1 \n[.sss]
.      ss (\n[.ss] * 5 / 3) (\n[.sss] * 5 / 3)
.    \}
.
.  if \n[doc-remap-I-style-in-headings] \
.    ftr \*[doc-heading-family]I \*[doc-heading-family]BI
.
.    nr doc-arg-ptr +1
.    nr doc-curr-font \n[.f]
.    nop \*[doc-Sh-font]\c
.    doc-print-recursive
.
.    if t \
.      ss \n[doc-reg-Sh] \n[doc-reg-Sh1]
.
.    in \n[IN]u
.    ns
.
.    doc-check-depth
.  if \n[doc-remap-I-style-in-headings] \
.    ftr \*[doc-heading-family]I \*[doc-heading-family]I
.  \}
.
.
.  \" Don't let doc-print-recursive force caps on anything else.
.  nr doc-do-capitalize 0
..
.ec
.
.
.\" NS Ss user macro (not callable)
.\" NS   subsection
.\" NS
.\" NS modifies:
.\" NS   doc-subsection-heading
.\" NS
.\" NS local variable:
.\" NS   doc-reg-Ss
.\" NS   doc-reg-Ss1
.\" NS
.\" NS width register 'Ss' set above
.
.eo
.de Ss
.  ie \n[doc-arg-count] \{\
.    \" we only allow 'Ss' within 'Ss'; it will change the font back to
.    \" 'doc-Sh-font'
.    ie "\*[doc-macro-name]"Ss" \{\
.      nr doc-arg-ptr +1
.      ie (\n[doc-arg-count] >= \n[doc-arg-ptr]) \{\
.        nr doc-curr-font \n[.f]
.        nop \*[doc-Sh-font]\c
.        doc-print-recursive
.      \}
.      el \{\
.        tm Usage: .Ss subsection_name ... (#\n[.c])
.        doc-reset-args
.    \}\}
.    el \{\
.      tm Usage: .Ss not callable by other macros (#\n[.c])
.      doc-reset-args
.  \}\}
.  el \{\
.    if !\n[.$] \{\
.      tm Usage: .Ss subsection_name ... (#\n[.c])
.      return
.    \}
.
.    ds doc-macro-name Ss
.    doc-parse-args \$@
.
.    ds doc-subsection-heading \$*
.
.    sp \n[doc-paragraph-space]u
.    if !\n[cR] \
.      ne 3
.    in \n[SN]u
.
.    if '\*[.T]'pdf' \
.      pdfbookmark 3 "\*[doc-subsection-heading]"
.
.    nr doc-reg-Ss \n[.ss]
.    nr doc-reg-Ss1 \n[.sss]
.    ss (\n[.ss] * 5 / 4) (\n[.sss] * 5 / 4)
.
.  if \n[doc-remap-I-style-in-headings] \
.    ftr \*[doc-heading-family]I \*[doc-heading-family]BI
.
.    nr doc-arg-ptr +1
.    nr doc-curr-font \n[.f]
.    nop \*[doc-Sh-font]\c
.    doc-print-recursive
.
.    ss \n[doc-reg-Ss] \n[doc-reg-Ss1]
.
.    ta T .5i
.    in
.    if !\n[cR] \
.      ne 2
.    br
.    ns
.
.    doc-check-depth
.  if \n[doc-remap-I-style-in-headings] \
.    ftr \*[doc-heading-family]I \*[doc-heading-family]I
.  \}
.
..
.ec
.
.
.\" NS Rd macro (not parsed, not callable)
.\" NS   print global register dump to stderr
.\" NS
.\" NS local variables:
.\" NS   doc-reg-Rd
.
.eo
.de Rd
.  tm MDOC GLOBAL REGISTER DUMP
.  tm doc-macro-name == '\*[doc-macro-name]'
.  tm doc-arg-count == \n[doc-arg-count]
.  tm doc-num-args == \n[doc-num-args]
.  tm doc-arg-ptr == \n[doc-arg-ptr]
.
.  nr doc-reg-Rd 1
.  while (\n[doc-reg-Rd] <= \n[doc-arg-count]) \{\
.    tm doc-arg\n[doc-reg-Rd] == '\*[doc-arg\n[doc-reg-Rd]]'
.    tm doc-type\n[doc-reg-Rd] == \n[doc-type\n[doc-reg-Rd]]
.    tm doc-space\n[doc-reg-Rd] == '\*[doc-space\n[doc-reg-Rd]]'
.    nr doc-reg-Rd +1
.  \}
.
.  tm doc-curr-font == \n[doc-curr-font]
.  tm doc-indent-synopsis == \n[doc-indent-synopsis]
.  tm doc-indent-synopsis-active == \n[doc-indent-synopsis-active]
.  tm doc-have-decl == \n[doc-have-decl]
.  tm doc-have-var == \n[doc-have-var]
.  tm doc-topic-name == '\*[doc-topic-name]'
.  tm doc-quote-left == '\*[doc-quote-left]'
.  tm doc-quote-right == '\*[doc-quote-right]'
.  tm doc-nesting-level == \n[doc-nesting-level]
.  tm doc-in-list == \n[doc-in-list]
.  tm doc-space == '\*[doc-space]'
.  tm doc-saved-space == '\*[doc-saved-space]'
.  tm doc-space-mode == \n[doc-space-mode]
.  tm doc-have-space == \n[doc-have-space]
.  tm doc-have-slot == \n[doc-have-slot]
.  tm doc-keep-type == \n[doc-keep-type]
.  tm doc-display-depth == \n[doc-display-depth]
.  tm doc-is-compact == \n[doc-is-compact]
.
.  nr doc-reg-Rd 0
.  while (\n[doc-reg-Rd] <= \n[doc-display-depth]) \{\
.    tm doc-display-type-stack\n[doc-reg-Rd] == '\*[doc-display-type-stack\n[doc-reg-Rd]]'
.    tm doc-display-indent-stack\n[doc-reg-Rd] == \n[doc-display-indent-stack\n[doc-reg-Rd]]
.    tm doc-display-ad-stack\n[doc-reg-Rd] == \n[doc-display-ad-stack\n[doc-reg-Rd]]
.    tm doc-display-fi-stack\n[doc-reg-Rd] == \n[doc-display-fi-stack\n[doc-reg-Rd]]
.    tm doc-display-ft-stack\n[doc-reg-Rd] == \n[doc-display-ft-stack\n[doc-reg-Rd]]
.    tm doc-display-ps-stack\n[doc-reg-Rd] == \n[doc-display-ps-stack\n[doc-reg-Rd]]
.    nr doc-reg-Rd +1
.  \}
.
.  tm doc-fontmode-depth == \n[doc-fontmode-depth]
.
.  nr doc-reg-Rd 1
.  while (\n[doc-reg-Rd] <= \n[doc-fontmode-depth]) \{\
.    tm doc-fontmode-font-stack\n[doc-reg-Rd] == '\n[doc-fontmode-font-stack\n[doc-reg-Rd]]'
.    tm doc-fontmode-size-stack\n[doc-reg-Rd] == '\n[doc-fontmode-size-stack\n[doc-reg-Rd]]'
.    nr doc-reg-Rd +1
.  \}
.
.  tm doc-list-depth == \n[doc-list-depth]
.
.  nr doc-reg-Rd 1
.  while (\n[doc-reg-Rd] <= \n[doc-list-depth]) \{\
.    tm doc-list-type-stack\n[doc-reg-Rd] == '\*[doc-list-type-stack\n[doc-reg-Rd]]'
.    tm doc-list-have-indent-stack\n[doc-reg-Rd] == \n[doc-list-have-indent-stack\n[doc-reg-Rd]]
.    tm doc-list-indent-stack\n[doc-reg-Rd] == \n[doc-list-indent-stack\n[doc-reg-Rd]]
.    tm doc-compact-list-stack\n[doc-reg-Rd] == \n[doc-compact-list-stack\n[doc-reg-Rd]]
.    tm doc-tag-prefix-stack\n[doc-reg-Rd] == '\*[doc-tag-prefix-stack\n[doc-reg-Rd]]'
.    tm doc-tag-width-stack\n[doc-reg-Rd] == '\*[doc-tag-width-stack\n[doc-reg-Rd]]'
.    tm doc-list-offset-stack\n[doc-reg-Rd] == \n[doc-list-offset-stack\n[doc-reg-Rd]]
.    tm doc-enum-list-count-stack\n[doc-reg-Rd] == \n[doc-enum-list-count-stack\n[doc-reg-Rd]]
.    nr doc-reg-Rd +1
.  \}
.
.  tm doc-saved-Pa-font == '\*[doc-saved-Pa-font]'
.  tm doc-curr-type == \n[doc-curr-type]
.  tm doc-curr-arg == '\*[doc-curr-arg]'
.  tm doc-diag-list-input-line-count == \n[doc-diag-list-input-line-count]
.  tm doc-num-columns == \n[doc-num-columns]
.  tm doc-column-indent-width == \n[doc-column-indent-width]
.  tm doc-is-func == \n[doc-is-func]
.  tm doc-have-old-func == \n[doc-have-old-func]
.  tm doc-func-arg-count == \n[doc-func-arg-count]
.  tm doc-func-arg == '\*[doc-func-arg]'
.  tm doc-num-func-args == \n[doc-num-func-args]
.  tm doc-func-args-processed == \n[doc-func-args-processed]
.  tm doc-have-func == \n[doc-have-func]
.  tm doc-is-reference == \n[doc-is-reference]
.  tm doc-reference-count == \n[doc-reference-count]
.  tm doc-author-count == \n[doc-author-count]
.
.  nr doc-reg-Rd 0
.  while (\n[doc-reg-Rd] <= \n[doc-author-count]) \{\
.    tm doc-author-name\n[doc-reg-Rd] == '\*[doc-author-name\n[doc-reg-Rd]]'
.    nr doc-reg-Rd +1
.  \}
.
.  tm doc-book-count == \n[doc-book-count]
.  tm doc-book-name == '\*[doc-book-name]'
.  tm doc-date-count == \n[doc-date-count]
.  tm doc-date == '\*[doc-date]'
.  tm doc-publisher-count == \n[doc-publisher-count]
.  tm doc-publisher-name == '\*[doc-publisher-name]'
.  tm doc-journal-count == \n[doc-journal-count]
.  tm doc-journal-name == '\*[doc-journal-name]'
.  tm doc-issue-count == \n[doc-issue-count]
.  tm doc-issue-name == '\*[doc-issue-name]'
.  tm doc-optional-count == \n[doc-optional-count]
.  tm doc-optional-string == '\*[doc-optional-string]'
.  tm doc-page-number-count == \n[doc-page-number-count]
.  tm doc-page-number-string == '\*[doc-page-number-string]'
.  tm doc-corporate-count == \n[doc-corporate-count]
.  tm doc-corporate-name == '\*[doc-corporate-name]'
.  tm doc-report-count == \n[doc-report-count]
.  tm doc-report-name == '\*[doc-report-name]'
.  tm doc-reference-title-count == \n[doc-reference-title-count]
.  tm doc-reference-title-name == '\*[doc-reference-title-name]'
.  tm doc-reference-title-name-for-book == '\*[doc-reference-title-name-for-book]'
.  tm doc-url-count == \n[doc-url-count]
.  tm doc-url-name == '\*[doc-url-name]'
.  tm doc-volume-count == \n[doc-volume-count]
.  tm doc-volume-name == '\*[doc-volume-name]'
.  tm doc-have-author == \n[doc-have-author]
.
.  tm doc-page-topic == '\*[doc-page-topic]'
.  tm doc-volume == '\*[doc-volume]'
.  tm doc-section == '\*[doc-section]'
.  tm doc-operating-system == '\*[doc-operating-system]'
.  tm doc-date-string == '\*[doc-date-string]'
.  tm doc-display-vertical == \n[doc-display-vertical]
.  tm doc-in-name-section == \n[doc-in-name-section]
.  tm doc-in-synopsis-section == \n[doc-in-synopsis-section]
.  tm doc-in-library-section == \n[doc-in-library-section]
.  tm doc-in-see-also-section == \n[doc-in-see-also-section]
.  tm doc-in-files-section == \n[doc-in-files-section]
.  tm doc-in-authors-section == \n[doc-in-authors-section]
.
.  tm END OF GLOBAL REGISTER DUMP
..
.ec
.
.
.\" Local Variables:
.\" mode: nroff
.\" fill-column: 72
.\" End:
.\" vim: set filetype=groff textwidth=72:
