<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.34 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-uuidrev-rfc4122bis-06" category="std" consensus="true" submissionType="IETF" obsoletes="4122" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.2 -->
  <front>
    <title abbrev="UUID">Universally Unique IDentifiers (UUID)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-06"/>
    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="B. G." surname="Peabody" fullname="Brad G. Peabody">
      <organization>Uncloud</organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>
    <author initials="P." surname="Leach" fullname="P. Leach">
      <organization>University of Washington</organization>
      <address>
        <email>pjl7@uw.edu</email>
      </address>
    </author>
    <author initials="M." surname="Mealling" fullname="M. Mealling">
      <organization>VeriSign, Inc.</organization>
      <address>
        <email>michael@refactored-networks.com</email>
      </address>
    </author>
    <date year="2023"/>
    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword>
    <abstract>
      <?line 251?>

<t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and is intended to guarantee
uniqueness across space and time.  UUIDs were originally used in the
Apollo Network Computing System and later in the Open Software
Foundation's (OSF) Distributed Computing Environment (DCE), and then
in Microsoft Windows platforms.</t>
      <t>This specification is derived from the DCE specification with the
kind permission of the OSF (now known as The Open Group).
Information from earlier versions of the DCE specification have been
incorporated into this document. This document obsoletes RFC4122.</t>
    </abstract>
  </front>
  <middle>
    <?line 265?>

<section anchor="Background">
      <name>Introduction</name>
      <t>This specification defines the UUIDs (Universally Unique IDentifiers) and the UUID Uniform Resource Name (URN) namespace. UUIDs are also known as GUIDs (Globally Unique IDentifiers).
A UUID is 128 bits long and requires no central
registration process.</t>
      <t>The use of UUIDs is extremely pervasive in computing.  They comprise
the core identifier infrastructure for many operating systems
such as Microsoft Windows and applications such as the Mozilla Web browser and in
many cases, become exposed in many non-standard ways.</t>
      <t>This specification attempts to standardize that practice as openly as
possible and in a way that attempts to benefit the entire Internet.
The information here is meant to be a concise guide for those wishing
to implement services using UUIDs, UUIDs in combination with URNs <xref target="RFC8141"/>, or otherwise.</t>
      <t>There is an ITU-T Recommendation and an ISO/IEC Standard <xref target="X667"/> that are
derived from <xref target="RFC4122"/>.  Both sets of
specifications have been aligned and are fully technically
compatible.  In addition, a global registration function is being
provided by the Telecommunications Standardization Bureau of ITU-T;
for details see <eref target="https://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx"/>.
Nothing in this document should be construed to override the DCE standards that defined UUIDs.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not).  As a result, generation
on demand can be completely automated and used for a variety of
purposes.  The UUID generation algorithm described here supports very
high allocation rates of 10 million per second per machine or more if
necessary, so that they could even be used as transaction IDs.</t>
      <t>UUIDs are of a fixed size (128 bits), which is reasonably small
compared to other alternatives.  This lends itself well to sorting,
ordering, and hashing of all sorts, storing in databases, simple
allocation, and ease of programming in general.</t>
      <t>Since UUIDs are unique and persistent, they make excellent Uniform
Resource Names.  The unique ability to generate a new UUID without a
registration process allows for UUIDs to be one of the URNs with the
lowest minting cost.</t>
      <section anchor="update-motivation">
        <name>Update Motivation</name>
        <t>Many things have changed in the time since UUIDs were originally created.
Modern applications have a need to create and utilize UUIDs as the primary
identifier for a variety of different items in complex computational systems,
including but not limited to database keys, file names, machine or system
names, and identifiers for event-driven transactions.</t>
        <t>One area in which UUIDs have gained popularity is as database keys.
This stems from the increasingly distributed nature of modern applications.
In such cases, "auto increment" schemes often used by databases do not work
well, as the effort required to coordinate sequential numeric identifiers across
a network can easily become a burden.
The fact that UUIDs can be used to create unique, reasonably short values
in distributed systems without requiring coordination makes them a good
alternative, but UUID versions 1-5 lack certain other desirable characteristics:</t>
        <ol spacing="normal" type="1"><li>Non-time-ordered UUID versions such as UUIDv4 (described in <xref target="uuidv4"/>) have poor database index
  locality.
  This means that new values created in succession are not close to each other in
  the index and thus require inserts to be performed at random
  locations.
  The negative performance effects of which on common structures used for
  this (B-tree and its variants) can be dramatic.</li>
          <li>The 100-nanosecond Gregorian epoch used in UUIDv1 (described in <xref target="uuidv1"/>) timestamps is uncommon
  and difficult to represent accurately using a standard number format such
  as <xref target="IEEE754"/>.</li>
          <li>Introspection/parsing is required to order by time sequence, as opposed to
  being able to perform a simple byte-by-byte comparison.</li>
          <li>Privacy and network security issues arise from using a MAC address in the
  node field of Version 1 UUIDs.
  Exposed MAC addresses can be used as an attack surface to locate machines
  and reveal various other
  information about such machines (minimally manufacturer, potentially other
  details). Additionally, with the advent of virtual machines and containers,
  MAC address uniqueness is no longer guaranteed.</li>
          <li>Many of the implementation details specified in RFC4122 involved trade
  offs that are neither possible to specify for all applications nor
  necessary to produce interoperable implementations.</li>
          <li>RFC4122 did not distinguish between the requirements for generation
  of a UUID versus an application that simply stores one, which are often
  different.</li>
        </ol>
        <t>Due to the aforementioned issues, many widely distributed database applications
and large application vendors have sought to solve the problem of creating
a better
time-based, sortable unique identifier for use as a database key. This has
lead to numerous implementations
over the past 10+ years solving the same problem in slightly different ways.</t>
        <t>While preparing this specification, the following 16 different implementations
were analyzed for trends in total ID length, bit layout, lexical formatting/encoding,
timestamp type, timestamp format, timestamp accuracy, node format/components,
collision handling, and multi-timestamp tick generation sequencing:</t>
        <ol spacing="compact" type="1"><li>
            <xref target="ULID"/> by A. Feerasta</li>
          <li>
            <xref target="LexicalUUID"/> by Twitter</li>
          <li>
            <xref target="Snowflake"/> by Twitter</li>
          <li>
            <xref target="Flake"/> by Boundary</li>
          <li>
            <xref target="ShardingID"/> by Instagram</li>
          <li>
            <xref target="KSUID"/> by Segment</li>
          <li>
            <xref target="Elasticflake"/> by P. Pearcy</li>
          <li>
            <xref target="FlakeID"/> by T. Pawlak</li>
          <li>
            <xref target="Sonyflake"/> by Sony</li>
          <li>
            <xref target="orderedUuid"/> by IT. Cabrera</li>
          <li>
            <xref target="COMBGUID"/> by R. Tallent</li>
          <li>
            <xref target="SID"/> by A. Chilton</li>
          <li>
            <xref target="pushID"/> by Google</li>
          <li>
            <xref target="XID"/> by O. Poitrey</li>
          <li>
            <xref target="ObjectID"/> by MongoDB</li>
          <li>
            <xref target="CUID"/> by E. Elliott</li>
        </ol>
        <t>An inspection of these implementations and the issues described above has
led to this document which intends to adapt UUIDs to address these issues.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <section anchor="requirements_language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
      <section anchor="acronyms">
        <name>Abbreviations</name>
        <t>The following abbreviations are used in this document:</t>
        <dl indent="14">
          <dt>UUID</dt>
          <dd>
            <t>Universally Unique Identifier</t>
          </dd>
          <dt>URN</dt>
          <dd>
            <t>Uniform Resource Names</t>
          </dd>
          <dt>ABNF</dt>
          <dd>
            <t>Augmented Backus-Naur Form</t>
          </dd>
          <dt>CSPRNG</dt>
          <dd>
            <t>Cryptographically Secure Pseudo-Random Number Generator</t>
          </dd>
          <dt>MAC</dt>
          <dd>
            <t>Media Access Control</t>
          </dd>
          <dt>MSB</dt>
          <dd>
            <t>Most Significant Bit</t>
          </dd>
          <dt>DBMS</dt>
          <dd>
            <t>Database Management System</t>
          </dd>
          <dt>IEEE</dt>
          <dd>
            <t>Institute of Electrical and Electronics Engineers, Inc.</t>
          </dd>
          <dt>ITU</dt>
          <dd>
            <t>International Telecommunication Union</t>
          </dd>
          <dt>MD5</dt>
          <dd>
            <t>Message Digest 5</t>
          </dd>
          <dt>SHA</dt>
          <dd>
            <t>Secure Hash Algorithm</t>
          </dd>
          <dt>SHA-1</dt>
          <dd>
            <t>Secure Hash Algorithm 1 with message digest of 160 bits</t>
          </dd>
          <dt>SHA-224</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 224 bits</t>
          </dd>
          <dt>SHA-256</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 256 bits</t>
          </dd>
          <dt>SHA-512</dt>
          <dd>
            <t>Secure Hash Algorithm with message digest size of 512 bits</t>
          </dd>
          <dt>SHA-3</dt>
          <dd>
            <t>Secure Hash Algorithm 3</t>
          </dd>
          <dt>SHAKE</dt>
          <dd>
            <t>Secure Hash Algorithm 3 based on KECCAK algorithm</t>
          </dd>
          <dt>UTC</dt>
          <dd>
            <t>Coordinated Universal Time</t>
          </dd>
          <dt>OID</dt>
          <dd>
            <t>Object Identifier</t>
          </dd>
        </dl>
      </section>
      <section anchor="changelog" removeInRFC="true">
        <name>Changelog</name>
        <t>draft-06</t>
        <ul spacing="compact">
          <li>More Grammar edits! #102</li>
          <li>Tweak v7 description to de-emphasize optional components #103</li>
          <li>Better Clarify Case in ABNF #104</li>
          <li>Verbiage change in 6.2 #105</li>
        </ul>
        <t>draft-05</t>
        <ul spacing="compact">
          <li>Changed Max UUID to Omni UUID to better complement Latin Nil UUID verbiage. #95</li>
          <li>Align Method 3 text with the 12 bits limitation #96</li>
          <li>Make Version/version casing consistent across 5. UUID Layouts #97</li>
          <li>Cite MS COM GUID as little-endian #95</li>
        </ul>
        <t>draft-04</t>
        <ul spacing="compact">
          <li>Remove extra words #82, #88, and #93</li>
          <li>Punctuation and minor style fixes #84</li>
          <li>Change rounding mode of Method 4 Section 6.2 #90 (from #86)</li>
          <li>Add verbal description of v7 generation to 5.7. UUID Version 7 #91</li>
          <li>Remove Re-randomize Until Monotonic (Method 3) from Monotonicity and Counters #92</li>
          <li>Fix ambiguous text around UUIDv6 clock sequence #89</li>
          <li>Move endianness statement from layout to format section #85</li>
          <li>Further modified abstract to separate URN topic from UUID definition #83</li>
          <li>Provided three more UUID format examples #83</li>
          <li>Added text further clarifying version construct is for the variant in this doc #83</li>
          <li>Provided further clarification for local/global bit vs multicast bit #83</li>
        </ul>
        <t>draft-03</t>
        <ul spacing="compact">
          <li>Revised IANA Considerations #71</li>
          <li>Fix "integral numbers of octets" verbiage #67</li>
          <li>Transpose UUID Namespaces to match UUID Hashspaces #70</li>
          <li>Reference all Hash Algorithms. #69</li>
          <li>Normalize SHA abbreviation formats #66</li>
          <li>Add other Hash Abbreviations #65</li>
          <li>Remove URN from title #73</li>
          <li>Move Community Considerations to Introduction #68</li>
          <li>Move some Normative Reference to Informative #74</li>
          <li>Misc formatting changes to address IDNITS feedback</li>
          <li>Downgrade <bcp14>MUST NOT</bcp14> to <bcp14>SHOULD NOT</bcp14> for guessability of UUIDs #75</li>
          <li>Misc. text formatting, typo fixes #78</li>
          <li>Misc. text clarifications #79</li>
          <li>Misc. <bcp14>SHOULD</bcp14>/<bcp14>MUST</bcp14> adjustments #80</li>
          <li>Method 3 and 4 added to monotonic section #81</li>
        </ul>
        <t>draft-02</t>
        <ul spacing="compact">
          <li>Change md5_high in SHA-1 section to sha1_mid #59</li>
          <li>Describe Nil/Omni UUID in variant table #16</li>
          <li>Further Clarify that non-descript node IDs are the preferred method in distributed UUID Generation #49</li>
          <li>Appendix B, consistent naming #55</li>
          <li>Remove duplicate ABNF from IANA considerations #56</li>
          <li>Monotonic Error Checking missing newline #57</li>
          <li>More Security Considerations Randomness #26</li>
          <li>SHA-256 UUID Generation #50</li>
          <li>Expand multiplexed fields within v1 and v6 bit definitions #43</li>
          <li>Clean up text in UUIDs that Do Not Identify the Host #61</li>
          <li>Revise UUID Generator States section #47</li>
          <li>Expand upon why unix epoch rollover is not a problem #44</li>
          <li>Delete Sample Code Appendix #62</li>
        </ul>
        <t>draft-01</t>
        <ul spacing="compact">
          <li>Mixed Case Spelling error #18</li>
          <li>Add "UUIDs that Do Not Identify the Host as well" reference to security considerations #19</li>
          <li>Out of Place Distributed node text #20</li>
          <li>v6 clock_seq and node usage ambiguity #21</li>
          <li>Figure 2 and 3 Fix Title #22</li>
          <li>Move Namespace Registration Template to IANA Considerations #23</li>
          <li>Verify ABNF formatting against RFC5234 #24</li>
          <li>Bump ABNF reference to RFC 5234 #25</li>
          <li>Modify v8 <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> #27</li>
          <li>Remove "time-based" constraint from version 8 UUID #29</li>
          <li>Further clarify v7 field description #125 #30</li>
          <li>Typo: Section 4.2, Version Field, "UUID from in this" #33</li>
          <li>Create better ABNF to represent Hex Digit #39</li>
          <li>Break Binary form of UUID into two lines. #40</li>
          <li>Move octet text from section 4 to section 5 #41</li>
          <li>Add forward reference to UUIDv1 and UUIDv4 in Section 2 #42</li>
          <li>Erroneous reference to v1 in monotonicity #45</li>
          <li>Add Label for "Monotonic Error Checking" paragraph to frame the topic #46</li>
          <li>Remove IEEE paragraph from "uuids that do not identify the host" #48</li>
          <li>Grammar Review #52</li>
        </ul>
        <t>draft-00</t>
        <ul spacing="compact">
          <li>Merge RFC4122 with draft-peabody-dispatch-new-uuid-format-04.md</li>
          <li>Change: Reference RFC1321 to RFC6151</li>
          <li>Change: Reference RFC2141 to RFC8141</li>
          <li>Change: Reference RFC2234 to RFC5234</li>
          <li>Change: Reference FIPS 180-1 to FIPS 180-4 for SHA-1</li>
          <li>Change: Converted UUIDv1 to match UUIDv6 section from Draft 04</li>
          <li>Change: Trimmed down the ABNF representation</li>
          <li>Change: http websites to https equivalent</li>
          <li>Errata: Bad Reference to RFC1750 | 3641 #4</li>
          <li>Errata: Change MD5 website to example.com | 3476 #6 (Also Fixes Errata: Fix uuid_create_md5_from_name() | 1352 #2)</li>
          <li>Errata: Typo in code comment | 6665 #11</li>
          <li>Errata: Fix BAD OID acronym | 6225 #9</li>
          <li>Errata: Incorrect Parenthesis usage Section 4.3 | 184 #5</li>
          <li>Errata: Lexicographically Sorting Paragraph Fix | 1428 #3</li>
          <li>Errata: Fix 4.1.3 reference to the correct bits | 1957 #13</li>
          <li>Errata: Fix reference to variant in octet 8 | 4975 #7</li>
          <li>Errata: Further clarify 3rd/last bit of Variant for spec | 5560 #8</li>
          <li>Errata: Fix clock_seq_hi_and_reserved most-significant bit verbiage | 4976 #10</li>
          <li>Errata: Better Clarify network byte order when referencing most significant bits | 3546 #12</li>
          <li>Draft 05: B.2. Example of a UUIDv7 Value two "var" in table #120</li>
          <li>Draft 05: <bcp14>MUST</bcp14> verbiage in Reliability of 6.1 #121</li>
          <li>Draft 05: Further discourage centralized registry for distributed UUID Generation.</li>
          <li>New: Further Clarity of exact octet and bit of var/ver in this spec</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv4</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv3</li>
          <li>New: Block diagram, bit layout, test vectors for UUIDv5</li>
          <li>New: Add MD5 Security Considerations reference, RFC6151</li>
          <li>New: Add SHA-1 Security Considerations reference, RFC6194</li>
        </ul>
      </section>
    </section>
    <section anchor="format">
      <name>UUID Format</name>
      <t>The UUID format is 16 octets (128 bits); the variant bits in conjunction with the version
bits described in the next sections in determine finer structure. While discussing UUID formats and layout, bit definitions start at 0 and end at 127 while octet definitions start at 0 and end at 15.</t>
      <t>In the absence of explicit application or presentation protocol
specification to the contrary, each field is encoded with the Most
Significant Byte first (known as network byte order).</t>
      <t>Saving UUIDs to binary format is done by sequencing all fields in big-endian format.
However there is a known caveat that Microsoft's Component Object Model (COM) GUIDs leverage little-endian when saving GUIDs.
The discussion of this <xref target="MS_COM_GUID"/> is outside the scope of this specification.</t>
      <t>UUIDs <bcp14>MAY</bcp14> be represented as binary data or integers.
When in use with URNs or as text in applications, any given UUID <bcp14>SHOULD</bcp14>
be represented by the "hex-and-dash" string format consisting of multiple
groups of upper or lowercase alphanumeric hexadecimal characters separated by single dashes/hyphens.
When used with databases please refer to <xref target="database_considerations"/>.</t>
      <t>The formal definition of the UUID string representation is provided by the following (ABNF) <xref target="RFC5234"/>.</t>
      <sourcecode type="abnf"><![CDATA[
UUID     = 4hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           2hexOctet "-"
           6hexOctet
hexOctet = HEXDIG HEXDIG
DIGIT    = %x30-39
HEXDIG   = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
]]></sourcecode>
      <t>Note that the alphabetic characters may be all uppercase, all lowercase, or mixed case, as per <xref section="2.3" sectionFormat="comma" target="RFC5234"/>.
An example UUID using this textual representation from the above ABNF is shown in <xref target="sampleStringUUID"/>.</t>
      <figure anchor="sampleStringUUID">
        <name>Example String UUID format</name>
        <artwork><![CDATA[
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>The same UUID from <xref target="sampleStringUUID"/> is represented in Binary <xref target="sampleBinaryUUID"/>, Integer <xref target="sampleIntegerUUID"/> and as a URN <xref target="sampleURNUUID"/> defined by <xref target="RFC8141"/>.</t>
      <figure anchor="sampleBinaryUUID">
        <name>Example Binary UUID</name>
        <artwork><![CDATA[
111110000001110101001111101011100111110111101100000100011101000\
01010011101100101000000001010000011001001000111100110101111110110
]]></artwork>
      </figure>
      <figure anchor="sampleIntegerUUID">
        <name>Example Integer UUID (shown as a decimal number)</name>
        <artwork><![CDATA[
329800735698586629295641978511506172918
]]></artwork>
      </figure>
      <figure anchor="sampleURNUUID">
        <name>Example URN UUID</name>
        <artwork><![CDATA[
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
]]></artwork>
      </figure>
      <t>There are many other ways to define a UUID format; some examples are detailed below.
Please note that this is not an exhaustive list and is only provided for informational purposes.</t>
      <ul spacing="compact">
        <li>Some UUID implementations, such as those found in <xref target="Python"/> and <xref target="Microsoft"/>, will output UUID with the string format, including dashes, enclosed in curly braces.</li>
        <li>
          <xref target="X667"/> provides UUID format definitions for use of UUID with an OID.</li>
        <li>The legacy <xref target="IBM_NCS"/> implementation produces a unique UUID format compatible with Variant 0xx of <xref target="table1"/></li>
      </ul>
      <section anchor="variant_field">
        <name>Variant Field</name>
        <t>The variant field determines the layout of the UUID.  That is, the
interpretation of all other bits in the UUID depends on the setting
of the bits in the variant field.  As such, it could more accurately
be called a type field; we retain the original term for
compatibility.  The variant field consists of a variable number of
the most significant bits of octet 8 of the UUID.</t>
        <t><xref target="table1"/> lists the contents of the variant field, where
the letter "x" indicates a "don't-care" value.</t>
        <table anchor="table1">
          <name>UUID Variants</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">x</td>
              <td align="left">Reserved, NCS backward compatibility and includes Nil UUID as per <xref target="niluuid"/>.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">x</td>
              <td align="left">The variant specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">Reserved, Microsoft Corporation backward compatibility.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">Reserved for future definition and includes Omni UUID as per <xref target="omniuuid"/>.</td>
            </tr>
          </tbody>
        </table>
        <t>Interoperability, in any form, with variants other than the one
defined here is not guaranteed but is not likely to be an issue in
practice.</t>
        <t>Specifically for UUIDs in this document bits 64 and 65 of the UUID (bits 0 and 1 of octet 8) <bcp14>MUST</bcp14> be set to 1 and 0 as specified in row 2 of <xref target="table1"/>.
Accordingly, all bit and field layouts avoid the use of these bits.</t>
      </section>
      <section anchor="version_field">
        <name>Version Field</name>
        <t>The version number is in the most significant 4 bits of octet 6
(bits 48 through 51 of the UUID).</t>
        <t><xref target="table2"/> lists all of the versions for this UUID variant 10x specified in this document.</t>
        <table anchor="table2">
          <name>UUID variant 10x versions defined by this specification</name>
          <thead>
            <tr>
              <th align="left">Msb0</th>
              <th align="left">Msb1</th>
              <th align="left">Msb2</th>
              <th align="left">Msb3</th>
              <th align="left">Version</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">Unused</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">The Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">2</td>
              <td align="left">Reserved for DCE Security version, with embedded POSIX UUIDs.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">3</td>
              <td align="left">The name-based version specified in this document that uses MD5 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">4</td>
              <td align="left">The randomly or pseudo-randomly generated version specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">5</td>
              <td align="left">The name-based version specified in this document that uses SHA-1 hashing.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">6</td>
              <td align="left">Reordered Gregorian time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">7</td>
              <td align="left">Unix Epoch time-based UUID specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">8</td>
              <td align="left">Reserved for custom UUID formats specified in this document.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">9</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">10</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">11</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">0</td>
              <td align="left">12</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">1</td>
              <td align="left">13</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">0</td>
              <td align="left">14</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">1</td>
              <td align="left">15</td>
              <td align="left">Reserved for future definition.</td>
            </tr>
          </tbody>
        </table>
        <t>An example version/variant layout for UUIDv4 follows the table
where M represents the version placement for the hexadecimal representation of 4 (0100)
and the N represents the variant placement for one of the four possible hexadecimal representation of variant 10x:
8 (1000), 9 (1001), A (1010), B (1011)</t>
        <figure>
          <name>UUIDv4 Variant Examples</name>
          <artwork><![CDATA[
00000000-0000-4000-8000-000000000000
00000000-0000-4000-9000-000000000000
00000000-0000-4000-A000-000000000000
00000000-0000-4000-B000-000000000000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
]]></artwork>
        </figure>
        <t>It should be noted that the other remaining UUID variants found in <xref target="table1"/> leverage different sub-typing/versioning mechanisms.
The recording and definition of the remaining UUID variant and sub-typing combinations are outside of the scope of this document.</t>
      </section>
    </section>
    <section anchor="layout">
      <name>UUID Layouts</name>
      <t>To minimize confusion about bit assignments within octets and among differing versions, the UUID record definition is provided as a grouping of fields within bit layout consisting four octets to a row.
The fields are presented with the most significant one first.</t>
      <section anchor="uuidv1">
        <name>UUID Version 1</name>
        <t>UUID version 1 is a time-based UUID featuring a 60-bit timestamp
represented by Coordinated Universal Time (UTC) as a count of 100-
nanosecond intervals since 00:00:00.00, 15 October 1582 (the date of
Gregorian reform to the Christian calendar).</t>
        <t>UUIDv1 also features a clock sequence field which is used to help avoid
duplicates that could arise when the clock is set backwards in time
or if the node ID changes.</t>
        <t>The node field consists of an IEEE 802 MAC
address, usually the host address.  For systems with multiple IEEE
802 addresses, any available one <bcp14>MAY</bcp14> be used.  The lowest addressed
octet (octet number 10) contains the global/local bit and the
unicast/multicast bit, and is the first octet of the address
transmitted on an 802.3 LAN.</t>
        <figure>
          <name>UUIDv1 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_high       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_low:</dt>
          <dd>
            <t>The least significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0001.
Occupies bits 48 through 51 of octet 6.</t>
          </dd>
          <dt>time_high:</dt>
          <dd>
            <t>12 bits that will contain the most significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14-bits containing the clock sequence.
  Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>For systems that do not have UTC available, but do have the local
time, they may use that instead of UTC, as long as they do so
consistently throughout the system.  However, this is not recommended
since generating the UTC from local time only needs a time zone
offset.</t>
        <t>If the clock is set backwards, or might have been set backwards
(e.g., while the system was powered off), and the UUID generator can
not be sure that no UUIDs were generated with timestamps larger than
the value to which the clock was set, then the clock sequence <bcp14>MUST</bcp14>
be changed.  If the previous value of the clock sequence is known, it
<bcp14>MAY</bcp14> be incremented; otherwise it <bcp14>SHOULD</bcp14> be set to a random or
high-quality pseudo-random value.</t>
        <t>Similarly, if the node ID changes (e.g., because a network card has
been moved between machines), setting the clock sequence to a random
number minimizes the probability of a duplicate due to slight
differences in the clock settings of the machines.  If the value of
clock sequence associated with the changed node ID were known, then
the clock sequence <bcp14>MAY</bcp14> be incremented, but that is unlikely.</t>
        <t>The clock sequence <bcp14>MUST</bcp14> be originally (i.e., once in the lifetime of
a system) initialized to a random number to minimize the correlation
across systems.  This provides maximum protection against node
identifiers that may move or switch from system to system rapidly.
The initial value <bcp14>MUST NOT</bcp14> be correlated to the node identifier.</t>
        <t>For systems with no IEEE address, a randomly or pseudo-randomly
generated value may be used; see <xref target="unguessability"/> and <xref target="unidentifiable"/>.</t>
      </section>
      <section anchor="uuidv2">
        <name>UUID Version 2</name>
        <t>UUID version 2 is known as DCE Security UUIDs <xref target="C309"/> and <xref target="C311"/>.
As such the definition of these UUIDs are outside the scope of this specification.</t>
      </section>
      <section anchor="uuidv3">
        <name>UUID Version 3</name>
        <t>UUID version 3 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv3 values are created by computing an MD5 <xref target="RFC1321"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This MD5 value is then used to populate all 128 bits of the UUID layout.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/>.</t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>Where possible UUIDv5 <bcp14>SHOULD</bcp14> be used in lieu of UUIDv3.
For more information on MD5 security considerations see <xref target="RFC6151"/>.</t>
        <figure>
          <name>UUIDv3 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          md5_high             |  ver  |       md5_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            md5_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>md5_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed MD5 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0011</t>
          </dd>
          <dt>md5_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following md5_high
from the computed MD5 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>md5_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with the least-significant, right-most bits of the final 64 bits
from the computed MD5 value.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv4">
        <name>UUID Version 4</name>
        <t>UUID version 4 is meant for generating UUIDs from truly-random or
pseudo-random numbers.</t>
        <t>An implementation may generate 128 bits of random data which is
used to fill out the UUID fields in <xref target="uuidv4fields"/>. The UUID version
and variant then replace the respective bits as defined by <xref target="version_field"/>
and <xref target="variant_field"/>,</t>
        <t>Alternatively, an implementation <bcp14>MAY</bcp14> choose to randomly generate the exact required number of bits for
random_a, random_b, and random_c (122 bits total), and then concatenate the version and variant in the required position.</t>
        <t>For guidelines on random data generation see <xref target="unguessability"/>.</t>
        <figure anchor="uuidv4fields">
          <name>UUIDv4 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          random_a             |  ver  |       random_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           random_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>random_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled with random data as specified in <xref target="unguessability"/></t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0100</t>
          </dd>
          <dt>random_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled random data as per <xref target="unguessability"/></t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10</t>
          </dd>
          <dt>random_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled with random data as per <xref target="unguessability"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv5">
        <name>UUID Version 5</name>
        <t>UUID version 5 is meant for generating UUIDs from "names"
that are drawn from, and unique within, some "name space" as per <xref target="name_based_uuid_generation"/>.</t>
        <t>UUIDv5 values are created by computing an SHA-1 <xref target="FIPS180-4"/>
hash over a given name space value concatenated with the desired name value
after both have been converted to a canonical sequence of octets in network byte order.
This SHA-1 value is then used to populate all 128 bits of the UUID layout. Excess bits beyond 128 are discarded.
The UUID version and variant then replace the respective bits as defined by <xref target="version_field"/> and <xref target="variant_field"/></t>
        <t>Some common name space values have been defined via <xref target="namespaces"/>.</t>
        <t>There may be scenarios, usually depending on organizational security policies, where SHA-1 libraries may not be available or deemed unsafe for use.
As such it may be desirable to generate name-based UUIDs derived from SHA-256 or newer SHA methods. These name-based UUIDs <bcp14>MUST NOT</bcp14> utilize UUIDv5 and <bcp14>MUST</bcp14> be within the UUIDv8 space defined by <xref target="v8"/>.
For implementation guidance around utilizing UUIDv8 for name-based UUIDs refer to the sub-section of <xref target="name_based_uuid_generation"/>.</t>
        <t>For more information on SHA-1 security considerations see <xref target="RFC6194"/>.</t>
        <figure>
          <name>UUIDv5 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         sha1_high             |  ver  |      sha1_mid         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           sha1_low                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>sha1_high:</dt>
          <dd>
            <t>The first 48 bits of the layout are filled
with the most significant, left-most 48 bits
from the computed SHA-1 value.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>sha1_mid:</dt>
          <dd>
            <t>12 more bits of the layout consisting of the least significant,
right-most 12 bits of 16 bits immediately following sha1_high
from the computed SHA-1 value.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>sha1_low:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled by skipping the 2 most significant, left-most bits of the remaining SHA-1 hash
and then using the next 62 most significant, left-most bits.
Any leftover SHA-1 bits are discarded and unused.</t>
          </dd>
        </dl>
      </section>
      <section anchor="uuidv6">
        <name>UUID Version 6</name>
        <t>UUID version 6 is a field-compatible version of UUIDv1, reordered for improved
DB locality.
It is expected that UUIDv6 will primarily be used in contexts where there
are existing v1 UUIDs.
Systems that do not involve legacy UUIDv1 <bcp14>SHOULD</bcp14> use UUIDv7 instead.</t>
        <t>Instead of splitting the timestamp into the low, mid, and high sections from
UUIDv1, UUIDv6 changes this sequence so timestamp bytes are stored from most
to least significant.
That is, given a 60 bit timestamp value as specified for UUIDv1 in <xref target="uuidv1"/>,
for UUIDv6, the first 48 most significant bits are stored
first, followed by the 4 bit version (same position), followed by the remaining
12 bits of the original 60 bit timestamp.</t>
        <t>The clock sequence  and node bits remain unchanged from their position in <xref target="uuidv1"/>.</t>
        <t>The clock sequence and node bits <bcp14>SHOULD</bcp14> be reset to a pseudo-random value for each new UUIDv6 generated; however, implementations <bcp14>MAY</bcp14> choose to retain the old clock sequence and MAC address behavior from <xref target="uuidv1"/>. For more information on MAC address usage within UUIDs see the <xref target="Security"/>.</t>
        <t>The format for the 16-byte, 128 bit UUIDv6 is shown in <xref target="v6layout"/></t>
        <figure anchor="v6layout">
          <name>UUIDv6 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           time_high                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           time_mid            |  ver  |       time_low        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|         clock_seq         |             node              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              node                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>time_high:</dt>
          <dd>
            <t>The most significant 32 bits of the 60 bit starting timestamp.
Occupies bits 0 through 31 (octets 0-3)</t>
          </dd>
          <dt>time_mid:</dt>
          <dd>
            <t>The middle 16 bits of the 60 bit starting timestamp.
Occupies bits 32 through 47 (octets 4-5)</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/> set to 0110.
Occupies bits 48 through 51 of Octet 6.</t>
          </dd>
          <dt>time_low:</dt>
          <dd>
            <t>12 bits that will contain the least significant 12 bits from the 60 bit starting timestamp.
Occupies bits 52 through 63 (octets 6-7)</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/> set to 10.
Occupies bits 64 and 65 of octet 8.</t>
          </dd>
          <dt>clock_seq:</dt>
          <dd>
            <t>The 14 bits containing the clock sequence.
Occupies bits 66 through 79 (octets 8-9).</t>
          </dd>
          <dt>node:</dt>
          <dd>
            <t>48 bit spatially unique identifier
Occupies bits 80 through 127 (octets 10-15)</t>
          </dd>
        </dl>
        <t>With UUIDv6 the steps for splitting the timestamp into time_high and time_mid
are <bcp14>OPTIONAL</bcp14>
since the 48 bits of time_high and time_mid will remain in the same order.
An extra step of splitting the first 48 bits of the timestamp into the most
significant
32 bits and least significant 16 bits proves useful when reusing an existing
UUIDv1 implementation.</t>
      </section>
      <section anchor="v7">
        <name>UUID Version 7</name>
        <t>UUID version 7 features a time-ordered value field derived from the widely
implemented and well known Unix Epoch timestamp source, the number of milliseconds
since midnight 1 Jan 1970 UTC, leap seconds excluded.
UUIDv7 generally has improved entropy characteristics over UUIDv1 or UUIDv6.</t>
        <t>UUIDv7 values are created by allocating a Unix timestamp in milliseconds in the most significant 48 bits and filling the remaining 74 bits, excluding the required version and variant bits, with random bits for each new UUIDv7 generated to provide uniqueness as per <xref target="unguessability"/>. Alternatively, implementations <bcp14>MAY</bcp14> fill the 74 bits, jointly, with a combination of the following subfields, in this order from the most significant bits to the least, to guarantee additional monotonicity within a millisecond:</t>
        <ol spacing="normal" type="1"><li>An <bcp14>OPTIONAL</bcp14> sub-millisecond timestamp fraction (12 bits at maximum) as per <xref target="monotonicity_counters"/> (Method 3).</li>
          <li>An <bcp14>OPTIONAL</bcp14> carefully seeded counter as per <xref target="monotonicity_counters"/> (Method 1 or 2).</li>
          <li>Random data for each new UUIDv7 generated for any remaining space.</li>
        </ol>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize UUIDv7 instead of UUIDv1 and UUIDv6 if
possible.</t>
        <figure>
          <name>UUIDv7 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           unix_ts_ms                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          unix_ts_ms           |  ver  |       rand_a          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                        rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            rand_b                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>unix_ts_ms:</dt>
          <dd>
            <t>48 bit big-endian unsigned number of Unix epoch timestamp in milliseconds as per <xref target="timestamp_considerations"/>.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>4 bit UUIDv7 version set as per <xref target="version_field"/></t>
          </dd>
          <dt>rand_a:</dt>
          <dd>
            <t>12 bits pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or optional constructs to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>rand_b:</dt>
          <dd>
            <t>The final 62 bits of pseudo-random data to provide uniqueness as per <xref target="unguessability"/> and/or an optional counter to guarantee additional monotonicity as per <xref target="monotonicity_counters"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="v8">
        <name>UUID Version 8</name>
        <t>UUID version 8 provides an RFC-compatible format for experimental or vendor-specific
use cases.
The only requirement is that the variant and version bits <bcp14>MUST</bcp14> be set as
defined in <xref target="variant_field"/> and <xref target="version_field"/>.
UUIDv8's uniqueness will be implementation-specific and <bcp14>MUST NOT</bcp14> be assumed.</t>
        <t>The only explicitly defined bits are the version and variant, leaving 122
bits
for implementation specific UUIDs. To be clear:
UUIDv8 is not a replacement for UUIDv4 where all 122 extra bits are
filled with random data.</t>
        <t>Some example situations in which UUIDv8 usage could occur:</t>
        <ul spacing="normal">
          <li>An implementation would like to embed extra information
within the UUID other than what is defined in this document.</li>
          <li>An implementation has other application/language restrictions which
inhibit the use of one of the current UUIDs.</li>
        </ul>
        <figure>
          <name>UUIDv8 Field and Bit Layout</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_a                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          custom_a             |  ver  |       custom_b        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var|                       custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           custom_c                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt>custom_a:</dt>
          <dd>
            <t>The first 48 bits of the layout that can be filled as an implementation sees
fit.</t>
          </dd>
          <dt>ver:</dt>
          <dd>
            <t>The 4 bit version field as defined by <xref target="version_field"/></t>
          </dd>
          <dt>custom_b:</dt>
          <dd>
            <t>12 more bits of the layout that can be filled as an implementation sees fit.</t>
          </dd>
          <dt>var:</dt>
          <dd>
            <t>The 2 bit variant field as defined by <xref target="variant_field"/>.</t>
          </dd>
          <dt>custom_c:</dt>
          <dd>
            <t>The final 62 bits of the layout immediately following the var field to be
filled as an implementation sees fit.</t>
          </dd>
        </dl>
      </section>
      <section anchor="niluuid">
        <name>Nil UUID</name>
        <t>The nil UUID is special form of UUID that is specified to have all
128 bits set to zero.</t>
        <figure>
          <name>Nil UUID Format</name>
          <artwork><![CDATA[
00000000-0000-0000-0000-000000000000
]]></artwork>
        </figure>
        <t>A Nil UUID value can be useful to communicate the absence of any other UUID value in situations that otherwise require or use a 128-bit UUID.  A Nil UUID can express the concept "no such value here". Thus it is reserved for such use as needed for implementation-specific situations.</t>
      </section>
      <section anchor="omniuuid">
        <name>Omni UUID</name>
        <t>The Omni UUID is special form of UUID that is specified to have all 128 bits
set to 1. This UUID can be thought of as the inverse of Nil UUID defined
in <xref target="niluuid"/>.</t>
        <figure>
          <name>Omni UUID Format</name>
          <artwork><![CDATA[
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
]]></artwork>
        </figure>
        <t>A Omni UUID value can be used as a sentinel value in situations where a 128-bit UUID is required but a concept such as "end of UUID list" needs to be expressed, and is reserved for such use as needed for implementation-specific situations.</t>
      </section>
    </section>
    <section anchor="uuid_best_practices">
      <name>UUID Best Practices</name>
      <t>The minimum requirements for generating UUIDs are
described in this document for each version.
Everything else is an implementation detail and
up to the implementer to decide what is appropriate for a given
implementation. Various relevant factors are covered
below to help guide an implementer through the different trade-offs among
differing UUID implementations.</t>
      <section anchor="timestamp_considerations">
        <name>Timestamp Considerations</name>
        <t>UUID timestamp source, precision, and length was the topic of great debate
while creating UUIDv7 for this specification. Choosing the right timestamp for
your application is a very important topic. This section will detail some
of the most common points on this topic.</t>
        <dl newline="true">
          <dt>Reliability:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> use the current timestamp from a reliable source to
provide values that are time-ordered and continually increasing.
Care <bcp14>SHOULD</bcp14> be taken to ensure that timestamp changes from the environment
or operating system are handled in a way that is consistent with implementation
requirements.
For example, if it is possible for the system clock to move backward due
to either manual adjustment or corrections from a time synchronization protocol,
implementations need to determine how to handle such cases. (See Altering, Fuzzing,
or Smearing below.)</t>
          </dd>
          <dt>Source:</dt>
          <dd>
            <t>UUID version 1 and 6 both utilize a Gregorian epoch timestamp while UUIDv7
utilizes a Unix Epoch timestamp. If other timestamp sources or a custom timestamp
epoch are required, UUIDv8 <bcp14>MUST</bcp14> be used.</t>
          </dd>
          <dt>Sub-second Precision and Accuracy:</dt>
          <dd>
            <t>Many levels of precision exist for timestamps: milliseconds, microseconds,
nanoseconds, and beyond.
Additionally fractional representations of sub-second precision may be desired
to mix various levels of precision in a time-ordered manner.
Furthermore, system clocks themselves have an underlying granularity and
it is frequently less than the precision offered by the operating system.
With UUID version 1 and 6, 100-nanoseconds of precision are present while
UUIDv7 features fixed millisecond level of precision within the Unix epoch
that does not exceed the granularity capable in most modern systems.
For other levels of precision UUIDv8 <bcp14>SHOULD</bcp14> be utilized.
Similar to <xref target="monotonicity_counters"/>, with UUIDv1 or UUIDv6,
a high resolution timestamp can be simulated by keeping a count of
the number of UUIDs that have been generated with the same value of
the system time, and using it to construct the low order bits of the
timestamp.  The count will range between zero and the number of
100-nanosecond intervals per system time interval.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The length of a given timestamp directly impacts how long a given UUID will
be valid.
That is, how many timestamp ticks can be contained in a UUID before the maximum
value for the timestamp field is reached.
Care <bcp14>SHOULD</bcp14> be given to ensure that the proper length is selected for a given
timestamp.
UUID version 1 and 6 utilize a 60 bit timestamp valid until 5623 AD and UUIDv7 features a 48
bit timestamp valid until the year 10889 AD.</t>
          </dd>
          <dt>Altering, Fuzzing, or Smearing:</dt>
          <dd>
            <t>Implementations <bcp14>MAY</bcp14> alter the actual timestamp. Some examples include security
considerations around providing a real clock value within a UUID, to correct
inaccurate clocks, or to handle leap seconds. This specification makes no
requirement or guarantee about how close the clock value needs to be to the actual
time.
If UUIDs do not need to be frequently generated, the UUIDv1 or UUIDv6 timestamp can
simply be the system time multiplied by the number of 100-nanosecond
intervals per system time interval.</t>
          </dd>
          <dt>Padding:</dt>
          <dd>
            <t>When timestamp padding is required, implementations <bcp14>MUST</bcp14> pad the most significant
bits (left-most) bits with zeros. An example is padding the most significant,
left-most bits of a 32 bit Unix timestamp with zeros to fill out the 48
bit timestamp in UUIDv7.</t>
          </dd>
          <dt>Truncating:</dt>
          <dd>
            <t>When timestamps need to be truncated, the lower, least significant
bits <bcp14>MUST</bcp14> be used. An example would be truncating a 64 bit Unix timestamp
to the least significant, right-most 48 bits for UUIDv7.</t>
          </dd>
          <dt>Error Handling:</dt>
          <dd>
            <t>If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service <bcp14>SHOULD</bcp14> either
return an error, or stall the UUID generator until the system clock
catches up, and <bcp14>MUST NOT</bcp14> return knowingly duplicate values.
Note that if the processors overrun the UUID generation frequently,
additional node identifiers can be allocated to the system, which
will permit higher speed allocation by making multiple UUIDs
potentially available for each time stamp value.
Similar techniques are discussed in <xref target="distributed_shared_knowledge"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="monotonicity_counters">
        <name>Monotonicity and Counters</name>
        <t>Monotonicity (each subsequent value being greater than the last) is the backbone of time-based sortable UUIDs. Normally, time-based
UUIDs from this document will be monotonic due to an embedded timestamp; however,
implementations can guarantee additional monotonicity via the concepts covered
in this section.</t>
        <t>Care <bcp14>SHOULD</bcp14> be taken to ensure UUIDs generated in batches are
also monotonic. That is, if one thousand UUIDs are generated for the same
timestamp, there <bcp14>SHOULD</bcp14> be sufficient logic for organizing the creation order of
those one thousand UUIDs.
Batch UUID creation implementations <bcp14>MAY</bcp14> utilize a monotonic counter that
<bcp14>SHOULD</bcp14> increment for each UUID created during a given timestamp.</t>
        <t>For single-node UUID implementations that do not need to create batches of
UUIDs, the embedded timestamp within UUID version 6 and 7 can provide
sufficient monotonicity guarantees by simply ensuring that timestamp increments
before creating a new UUID. Distributed nodes are discussed in
<xref target="distributed_shared_knowledge"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> employ one the following methods for single-node UUID implementations
that require batch UUID creation, or are otherwise concerned about monotonicity
with high frequency UUID generation.</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Bits (Method 1):</dt>
          <dd>
            <t>Some implementations allocate a specific number of bits in the
UUID layout to the sole purpose of tallying the total number of UUIDs created
during a given UUID timestamp tick.
A fixed bit-length counter, if present, <bcp14>SHOULD</bcp14> be positioned immediately after the
embedded timestamp. This promotes sortability and allows random data generation
for each counter increment.
With this method, the rand_a section of UUIDv7 <bcp14>SHOULD</bcp14> be used as fixed-length
dedicated counter bits that are incremented by one for every UUID generation.
The trailing random bits generated for each new UUID in rand_b can help produce
unguessable UUIDs. In the event more counter bits are required, the most significant
(left-most) bits of rand_b <bcp14>MAY</bcp14> be used as additional counter bits.</t>
          </dd>
          <dt>Monotonic Random (Method 2):</dt>
          <dd>
            <t>With this method, the random data is extended to also function as a counter.
This monotonic value can be thought of as a "randomly seeded counter" which
<bcp14>MUST</bcp14> be incremented in the least significant position for each UUID created
on a given timestamp tick.
UUIDv7's rand_b section <bcp14>SHOULD</bcp14> be utilized with this method to handle batch
UUID generation during a single timestamp tick.
The increment value for every UUID generation <bcp14>SHOULD</bcp14> be a random integer
of any desired length larger than zero. It ensures the UUIDs retain the required
level of unguessability provided by the underlying entropy.
The increment value <bcp14>MAY</bcp14> be one when the number of UUIDs generated in a particular
period of time is important and guessability is not an issue. However, it
<bcp14>SHOULD NOT</bcp14> be used by implementations that favor unguessablity, as the resulting
values are easily guessable.</t>
          </dd>
          <dt>Replace Left-Most Random Bits with Increased Clock Precision (Method 3):</dt>
          <dd>
            <t>For UUIDv7, which has millisecond timestamp precision, it is possible
to use additional clock precision available on the system to substitute
for up to 12 random bits immediately following the timestamp.  This can provide
values that are time-ordered with sub-millisecond precision, using
however many bits are appropriate in the implementation environment.
With this method, the additional time precision bits <bcp14>MUST</bcp14> follow the
timestamp as the next available bit, in the rand_a field for UUIDv7.
</t>
            <t>To calculate this value, start with the portion of the timestamp
expressed as a fraction of clock's tick value (fraction of a millisecond
for UUIDv7).  Compute the count of possible values that can be represented in
the available bit space, 4096 for the UUIDv7 rand_a field.
Using floating point math, multiply this fraction of a millisecond
value by 4096 and round down (toward zero) to an integer result to arrive at a number
between 0 and the maximum allowed for the indicated bits
which is sorts monotonically based on time. Each increasing fractional
value will result in an increasing bit field value, to the
precision available with these bits.</t>
            <t>For example, let's assume a system timestamp of 1 Jan 2023 12:34:56.1234567.
Taking the precision greater than 1ms gives us a value of 0.4567, as a
fraction of a millisecond.  If we wish to encode this as 12 bits, we can
take the count of possible values that fit in those bits (4096, or 2 to the 12th power)
and multiply it by our millisecond fraction value of 0.4567 and truncate the result to
an integer, which gives an integer value of 1870. Expressed as hexadecimal it is
0x74E, or the binary bits 011101001110.  One can then use those 12 bits
as the most significant (left-most) portion of the random section of the UUID
(e.g. the rand_a field in UUIDv7).
This works for any desired bit length that fits into a UUID, and applications
can decide the appropriate length based on available clock precision, but for
UUIDv7, it is limited to 12 bits at maximum to reserve sufficient space for
random bits.</t>
            <t>The main benefit to encoding additional timestamp precision
is that it utilizes additional time precision already available in the system clock
to provide values that are more likely to be unique, and thus may simplify
certain implementations. This technique can also be used in conjunction with one
of the other methods, where this additional time precision would immediately
follow the timestamp, and then if any bits are to be used as clock sequence
they would follow next.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover topics related solely with creating reliable
fixed-length dedicated counters:</t>
        <dl newline="true">
          <dt>Fixed-Length Dedicated Counter Seeding:</dt>
          <dd>
            <t>Implementations utilizing the fixed-length counter method <bcp14>SHOULD</bcp14> randomly initialize
the counter with each new timestamp tick.
However, when the timestamp has not incremented, the counter <bcp14>SHOULD</bcp14> be frozen
and incremented via the desired increment logic.
When utilizing a randomly seeded counter alongside Method 1, the random value <bcp14>MAY</bcp14>
be regenerated with each counter increment without impacting sortability.
The downside is that Method 1 is prone to overflows if a counter of adequate
length is not selected or the random data generated leaves little room for
the required number of increments.
Implementations utilizing fixed-length counter method <bcp14>MAY</bcp14> also choose to
randomly initialize a portion counter rather than the entire counter. For
example, a 24 bit counter could have the 23 bits in least-significant, right-most,
position randomly initialized. The remaining most significant, left-most
counter bits are initialized as zero for the sole purpose of guarding against
counter rollovers.</t>
          </dd>
          <dt>Fixed-Length Dedicated Counter Length:</dt>
          <dd>
            <t>Select a counter bit-length that can properly handle
the level of timestamp precision in use.
For example, millisecond precision generally requires a larger counter than a
timestamp with nanosecond precision.
General guidance is that the counter <bcp14>SHOULD</bcp14> be at least 12 bits but no longer
than 42 bits.
Care <bcp14>SHOULD</bcp14> also be given to ensure that the counter length selected leaves
room for sufficient entropy in the random portion of the UUID after the counter.
This entropy helps improve the unguessability characteristics of UUIDs created
within the batch.</t>
          </dd>
        </dl>
        <t>The following sub-topics cover rollover handling with either type of counter
method:</t>
        <dl newline="true">
          <dt>Counter Rollover Guards:</dt>
          <dd>
            <t>The technique from Fixed-Length Dedicated Counter Seeding that describes
allocating a segment of the fixed-length counter as a rollover guard is also
helpful to mitigate counter rollover issues.
This same technique can be used with monotonic random counter methods
by ensuring the total length of a possible increment in the least significant,
right most position is less than the total length of the random being incremented.
As such the most significant, left-most, bits can be incremented as rollover
guarding.</t>
          </dd>
          <dt>Counter Rollover Handling:</dt>
          <dd>
            <t>Counter rollovers <bcp14>SHOULD</bcp14> be handled by the application to avoid sorting issues.
The general guidance is that applications that care about absolute monotonicity
and sortability <bcp14>SHOULD</bcp14> freeze the counter and wait for the timestamp to advance
which ensures monotonicity is not broken.
Alternatively, implementations <bcp14>MAY</bcp14> increment the timestamp ahead of the actual
time and reinitialize the counter.</t>
          </dd>
        </dl>
        <t>Implementations <bcp14>MAY</bcp14> use the following logic to ensure UUIDs featuring embedded
counters are monotonic in nature:</t>
        <ol spacing="normal" type="1"><li>Compare the current timestamp against the previously stored timestamp.</li>
          <li>If the current timestamp is equal to the previous timestamp, increment the
  counter according to the desired method.</li>
          <li>If the current timestamp is greater than the previous timestamp, re-initialize
  the desired counter method to the new timestamp and generate new random bytes
  (if the bytes were frozen or being used as the seed for a monotonic counter).</li>
        </ol>
        <dl newline="true">
          <dt>Monotonic Error Checking:</dt>
          <dd>
            <t>Implementations <bcp14>SHOULD</bcp14> check if the currently generated UUID is greater
than the previously generated UUID. If this is not the case then any number
of things could have occurred, such as clock rollbacks,
leap second handling, and counter rollovers. Applications <bcp14>SHOULD</bcp14> embed sufficient
logic to catch these scenarios and correct the problem to ensure that the next
UUID generated is greater than the previous, or at least report an appropriate error.
To handle this scenario, the
general guidance is that application <bcp14>MAY</bcp14> reuse the previous timestamp and
increment the previous counter method.</t>
          </dd>
        </dl>
      </section>
      <section anchor="generator_states">
        <name>UUID Generator States</name>
        <t>The (optional) UUID generator state only needs to be read from stable storage once at boot
time, if it is read into a system-wide shared volatile store (and
updated whenever the stable store is updated).</t>
        <t>This stable storage <bcp14>MAY</bcp14> be used to record various portions of the UUID generation
which prove useful for batch UUID generation purposes and monotonic error checking with UUIDv6 and UUIDv7.
These stored values include but are not limited to last known timestamp, clock sequence, counters, and random data.</t>
        <t>If an implementation does not have any stable store available, then
it <bcp14>SHOULD</bcp14> proceed with UUID generation as if this was the first UUID created within a batch.
This is the least desirable implementation because it will increase the frequency
of creation of values such as clock sequence, counters, or random data, which increases the
probability of duplicates.</t>
        <t>An implementation <bcp14>MAY</bcp14> also return an application error in the event that collision resistance is of the utmost concern.
The semantics of this error are up to the application and implementation.
See <xref target="collision_resistance"/> for more information on weighting collision tolerance in applications.</t>
        <t>For UUIDv1 and UUIDv6, if the node ID can never change (e.g., the network interface card
from which the node ID is derived is inseparable
from the system), or if any change also re-initializes the clock
sequence to a random value, then instead of keeping it in stable
store, the current node ID may be returned.</t>
        <t>For UUIDv1 and UUIDv6, the state does not always need to be written to stable store every
time a UUID is generated.  The timestamp in the stable store can be
periodically set to a value larger than any yet used in a UUID.  As
long as the generated UUIDs have timestamps less than that value, and
the clock sequence and node ID remain unchanged, only the shared
volatile copy of the state needs to be updated.  Furthermore, if the
timestamp value in stable store is in the future by less than the
typical time it takes the system to reboot, a crash will not cause a
re-initialization of the clock sequence.</t>
        <t>If it is too expensive to access shared state each time a UUID is
generated, then the system-wide generator can be implemented to
allocate a block of time stamps each time it is called; a per-
process generator can allocate from that block until it is exhausted.</t>
      </section>
      <section anchor="distributed_shared_knowledge">
        <name>Distributed UUID Generation</name>
        <t>Some implementations <bcp14>MAY</bcp14> desire to utilize multi-node, clustered, applications
which involve two or more
nodes independently generating UUIDs that will be stored in a common location.
While UUIDs already feature sufficient entropy to ensure that the chances
of collision are low, as the total number of UUID generating nodes increase; so does the likelihood
of a collision.</t>
        <t>This section will detail the two additional collision resistance approaches that have been observed by by multi-node
UUID implementations in distributed environments.</t>
        <t>It should be noted that although this section details two methods for the sake of completeness;
implementations <bcp14>SHOULD</bcp14> utilize the pseudo-random Node ID option if additional collision resistance for distributed UUID generation is a requirement.
Likewise, utilization of either method is not required for implementing UUID generation in distributed environments.</t>
        <dl newline="true">
          <dt>Node IDs:</dt>
          <dd>
            <t>With this method, a pseudo-random Node ID value is placed within the UUID
layout.
This identifier helps ensure the bit-space for a given node is unique, resulting
in UUIDs that do not conflict with any other UUID created by another node
with a different node id.
Implementations that choose to leverage an embedded node id <bcp14>SHOULD</bcp14> utilize
UUIDv8.
The node id <bcp14>SHOULD NOT</bcp14> be an IEEE 802 MAC address as per <xref target="Security"/>.
The location and bit length are left to implementations and are outside the
scope of this specification.
Furthermore, the creation and negotiation of unique node ids among nodes
is also out of scope for this specification.</t>
          </dd>
          <dt>Centralized Registry:</dt>
          <dd>
            <t>With this method all nodes tasked with creating UUIDs consult a central registry
and confirm the generated value is unique. As applications scale, the communication
with the central registry could become a bottleneck and impact UUID generation
in a negative way. Shared knowledge schemes with central/global
registries are outside the scope of this specification and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
          </dd>
        </dl>
        <t>Distributed applications generating UUIDs at a variety of hosts <bcp14>MUST</bcp14>
be willing to rely on the random number source at all hosts.</t>
      </section>
      <section anchor="name_based_uuid_generation">
        <name>Name-Based UUID Generation</name>
        <t>The concept of name and name space should be broadly construed and not
limited to textual names.  For example, some name spaces are the
domain name system, URLs, Object Identifiers (OIDs), X.500 Distinguished
Names (DNs), and reserved words in a programming language.  The
mechanisms or conventions used for allocating names and ensuring
their uniqueness within their name spaces are beyond the scope of
this specification.</t>
        <t>The requirements for name-based UUIDs are as follows:</t>
        <ul spacing="normal">
          <li>UUIDs generated at different times from the same name in the
same namespace <bcp14>MUST</bcp14> be equal.</li>
          <li>UUIDs generated from two different names in the same namespace
should be different (with very high probability).</li>
          <li>UUIDs generated from the same name in two different namespaces
should be different (with very high probability).</li>
          <li>If two UUIDs that were generated from names are equal, then they
were generated from the same name in the same namespace (with very
high probability).</li>
        </ul>
        <dl newline="true">
          <dt>A note on namespaces:</dt>
          <dd>
            <t>While <xref target="namespaces"/> details a few interesting namespaces; implementations <bcp14>SHOULD</bcp14> provide the ability input a custom namespace.
For example, any other UUID <bcp14>MAY</bcp14> be generated and used as the desired namespace input for a given application context to
ensure all names created are unique within the newly created namespace.</t>
          </dd>
          <dt>Name-based UUIDs using version 8:</dt>
          <dd>
            <t>As per <xref target="uuidv5"/> name-based UUIDs that desire to use modern hashing algorithms <bcp14>MUST</bcp14> be created within the UUIDv8 space.
 These <bcp14>MAY</bcp14> leverage newer hashing protocols such as SHA-256 or SHA-512 defined by <xref target="FIPS180-4"/>, SHA-3 or SHAKE defined by <xref target="FIPS202"/>, or even protocols that have not been defined yet.
 To ensure UUIDv8 Name-Based UUID values of different hashing protocols can exist in the same bit space; this document defines various "hashspaces" in <xref target="hashspaces"/>.
 Creation of name-based version 8 UUIDs follow the same logic defined in <xref target="uuidv5"/>, but the hashspace should be used to as the starting point with the desired
 namespace and name concatenated to the end of the hashspace.
 Then an implementation may apply the desired hashing algorithm to the entire value after all have been converted to a canonical sequence of octets in network byte order.
 Ensure the version and variant and variant bits are modified as per <xref target="v8"/> bit layout, and finally trim any excess bits beyond 128.
 An important note for secure hashing algorithms that produce variable rate outputs, such as those found in SHAKE, the output hash <bcp14>MUST</bcp14> be 128 bits or larger.
 See <xref target="uuidv8_example_name"/> for a SHA-256 UUIDv8 example test vector.</t>
          </dd>
          <dt>Advertising the Hash Algorithm:</dt>
          <dd>
            <t>Name-based UUIDs utilizing UUIDv8 do not allocate any available bits to identifying the hashing algorithm.
As such where common knowledge about the hashing algorithm for a given UUIDv8 name-space UUID is required, sharing the Hash Space ID proves useful for identifying a the algorithm.
That is, to detail SHA-256 was used to create a given UUIDv8 name-based UUID an implementation may also share the "3fb32780-953c-4464-9cfd-e85dbbe9843d" hash space which uniquely identifies the SHA-256 hashing algorithm for the purpose of UUIDv8. Mind you that this need not be the only method of sharing the hashing algorithm; this is one example of how two systems could share knowledge.
The protocol of choice, communication channels, and actual method of sharing this data between systems are outside the scope of this specification.</t>
          </dd>
        </dl>
      </section>
      <section anchor="collision_resistance">
        <name>Collision Resistance</name>
        <t>Implementations <bcp14>SHOULD</bcp14> weigh the consequences of UUID collisions within their
application and when deciding between UUID versions that use entropy (randomness)
versus the other components such as those in <xref target="timestamp_considerations"/> and <xref target="monotonicity_counters"/>.
This is especially true for distributed node collision resistance as defined
by <xref target="distributed_shared_knowledge"/>.</t>
        <t>There are two example scenarios below which help illustrate the varying seriousness
of a collision within an application.</t>
        <dl newline="true">
          <dt>Low Impact</dt>
          <dd>
            <t>A UUID collision generated a duplicate log entry which results in incorrect
statistics derived from the data. Implementations that are not negatively
affected by collisions may continue with the entropy and uniqueness provided
by the traditional UUID format.</t>
          </dd>
          <dt>High Impact:</dt>
          <dd>
            <t>A duplicate key causes an airplane to receive the wrong course which puts
people's lives at risk. In this scenario there is no margin for error. Collisions
<bcp14>MUST</bcp14> be avoided and failure is unacceptable. Applications dealing with this
type of scenario <bcp14>MUST</bcp14> employ as much collision resistance as possible within
the given application context.</t>
          </dd>
        </dl>
      </section>
      <section anchor="global_local_uniqueness">
        <name>Global and Local Uniqueness</name>
        <t>UUIDs created by this specification <bcp14>MAY</bcp14> be used to provide local uniqueness
guarantees.
For example, ensuring UUIDs created within a local application context are
unique within a database <bcp14>MAY</bcp14> be sufficient for some implementations where
global uniqueness outside of the application context, in other applications,
or around the world is not required.</t>
        <t>Although true global uniqueness is impossible to guarantee without a shared
knowledge scheme, a shared knowledge scheme is not required by UUID to provide
uniqueness for practical implementation purposes.
Implementations <bcp14>MAY</bcp14> implement a shared knowledge scheme introduced in <xref target="distributed_shared_knowledge"/> as they see fit to extend the uniqueness guaranteed this specification.</t>
      </section>
      <section anchor="unguessability">
        <name>Unguessability</name>
        <t>Implementations <bcp14>SHOULD</bcp14> utilize a cryptographically secure pseudo-random number
generator (CSPRNG) to provide values that are both difficult to predict ("unguessable")
and have a low likelihood of collision ("unique").
Care <bcp14>SHOULD</bcp14> be taken to ensure the CSPRNG state is properly reseeded upon
state changes, such as process forks, to ensure proper CSPRNG operation.
CSPRNG ensures the best of <xref target="collision_resistance"/> and <xref target="Security"/> are present in modern UUIDs.</t>
        <t>Further advice on generating cryptographic-quality random numbers can be found in <xref target="RFC4086"/> and in <xref target="RANDOM"/>.</t>
      </section>
      <section anchor="unidentifiable">
        <name>UUIDs That Do Not Identify the Host</name>
        <t>This section describes how to generate a UUIDv1 or UUIDv6 value if an IEEE
802 address is not available, or its use is not desired.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> obtain a 47-bit cryptographic-quality random
number as per <xref target="unguessability"/> and use it as the low 47 bits of the node ID.</t>
        <t>Implementations <bcp14>MUST</bcp14> set the least significant bit of the first octet of the node ID set to one to create a 48-bit node id.
This bit is the unicast/multicast bit, which will never be set in IEEE 802
addresses obtained from network cards.  Hence, there can never be a
conflict between UUIDs generated by machines with and without network
cards.</t>
        <t>For compatibility with earlier specifications, note that this
document uses the unicast/multicast bit, instead of the arguably more
correct local/global bit because MAC addresses with the local/global bit set or not are both possible in a network.
This is not the case with the unicast/multicast bit.
One node cannot have a MAC address that multicasts to multiple nodes.</t>
        <t>In addition, items such as the computer's name and the name of the
operating system, while not strictly speaking random, will help
differentiate the results from those obtained by other systems.</t>
        <t>The exact algorithm to generate a node ID using these data is system
specific, because both the data available and the functions to obtain
them are often very system specific.  A generic approach, however, is
to accumulate as many sources as possible into a buffer, use a
message digest such as MD5 <xref target="RFC1321"/> or SHA-1 <xref target="FIPS180-4"/>, take an arbitrary 6
bytes from the hash value, and set the multicast bit as described
above.</t>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>UUIDv6 and UUIDv7 are designed so that implementations that require sorting
(e.g. database indexes) <bcp14>SHOULD</bcp14> sort as opaque raw bytes, without need for
parsing or introspection.</t>
        <t>Time ordered monotonic UUIDs benefit from greater database index locality
because the new values are near each other in the index.
As a result objects are more easily clustered together for better performance.
The real-world differences in this approach of index locality vs random data
inserts can be quite large.</t>
        <t>UUIDs formats created by this specification <bcp14>SHOULD</bcp14> be lexicographically sortable
while in the textual representation.</t>
        <t>UUIDs created by this specification are crafted with big-endian byte order
(network byte order) in mind. If little-endian style is required a custom
UUID format <bcp14>SHOULD</bcp14> be created using UUIDv8.</t>
      </section>
      <section anchor="opacity">
        <name>Opacity</name>
        <t>UUIDs <bcp14>SHOULD</bcp14> be treated as opaque values and implementations <bcp14>SHOULD NOT</bcp14> examine
the bits in a UUID. However,
inspectors <bcp14>MAY</bcp14> refer to <xref target="variant_field"/> and <xref target="version_field"/> when required to determine UUID version and variant.</t>
        <t>As general guidance, we recommend not parsing UUID values unnecessarily,
and instead treating them as opaquely as possible.  Although application-specific
concerns could of course require some degree of introspection
(e.g. to examine the variant, version or perhaps the timestamp of a UUID),
the advice here is to avoid this or other parsing unless absolutely necessary.
Applications typically tend to be simpler, more interoperable, and perform better,
when this advice is followed.</t>
      </section>
      <section anchor="database_considerations">
        <name>DBMS and Database Considerations</name>
        <t>For many applications, such as databases, storing UUIDs as text is unnecessarily
verbose, requiring 288 bits to represent 128 bit UUID values.
Thus, where feasible, UUIDs <bcp14>SHOULD</bcp14> be stored within database applications
as the underlying 128 bit binary value.</t>
        <t>For other systems, UUIDs <bcp14>MAY</bcp14> be stored in binary form or as text, as appropriate.
The trade-offs to both approaches are:</t>
        <ul spacing="normal">
          <li>Storing as binary requires less space and may result in faster data access.</li>
          <li>Storing as text requires more space but may require less translation if the
resulting text form is to be used after retrieval and thus maybe simpler
to implement.</li>
        </ul>
        <t>DBMS vendors are encouraged to provide functionality to generate and store
UUID formats defined by this specification for use as identifiers or left
parts of identifiers such as, but not limited to, primary keys, surrogate
keys for temporal databases, foreign keys included in polymorphic relationships,
and keys for key-value pairs in JSON columns and key-value databases.
Applications using a monolithic database may find using database-generated
UUIDs (as opposed to client-generate UUIDs) provides the best UUID monotonicity.
In addition to UUIDs, additional identifiers <bcp14>MAY</bcp14> be used to ensure integrity
and feedback.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>There is no update required to the IANA URN namespace registration <xref target="URNNamespaces"/> for UUID filed in <xref target="RFC4122"/>.
Further, at this time the authors and working group have concluded that IANA is not required to track UUIDs used for identifying items such as versions, variants, namespaces, or hashspaces.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> assume that UUIDs are hard to guess.
For example, they <bcp14>MUST NOT</bcp14> be used
as security capabilities (identifiers whose mere possession grants
access).  Discovery of predictability in a random number source will
result in a vulnerability.</t>
      <t>Implementations <bcp14>MUST NOT</bcp14> assume that it is easy to determine if a UUID has been
slightly transposed in order to redirect a reference to another
object.  Humans do not have the ability to easily check the integrity
of a UUID by simply glancing at it.</t>
      <t>MAC addresses pose inherent security risks and <bcp14>SHOULD NOT</bcp14> be used within
a UUID.
Instead CSPRNG data <bcp14>SHOULD</bcp14> be selected from a source with sufficient entropy
to ensure guaranteed
uniqueness among UUID generation. See <xref target="unguessability"/> and <xref target="unidentifiable"/> for more information.</t>
      <t>Timestamps embedded in the UUID do pose a very small attack surface. The
timestamp in conjunction with
an embedded counter does signal the order of creation for a given UUID and
its corresponding data but
does not define anything about the data itself or the application as a whole.
If UUIDs are required for
use with any security operation within an application context in any shape
or form then UUIDv4, <xref target="uuidv4"/> <bcp14>SHOULD</bcp14> be utilized.</t>
      <t>See <xref target="RFC6151"/> for MD5 Security Considerations and <xref target="RFC6194"/> for SHA-1 security considerations.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions of Rich Salz,
Ben Campbell,
Ben Ramsey,
Fabio Lima,
Gonzalo Salgueiro,
Martin Thomson,
Murray S. Kucherawy,
Rick van Rein,
Rob Wilton,
Sean Leonard,
Theodore Y. Ts'o,
Robert Kieffer,
Sergey Prokhorenko,
LiosK.</t>
      <t>As well as all of those in the IETF community and on GitHub to who contributed
to the discussions which resulted in this document.</t>
      <t>This document draws heavily on the OSF DCE specification for UUIDs.
Ted Ts'o provided helpful comments, especially on the byte ordering
section which we mostly plagiarized from a proposed wording he
supplied (all errors in that section are our responsibility,
however).</t>
      <t>We are also grateful to the careful reading and bit-twiddling of Ralf
S. Engelschall, John Larmouth, and Paul Thorpe.  Professor Larmouth
was also invaluable in achieving coordination with ISO/IEC.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="C309" target="https://pubs.opengroup.org/onlinepubs/9696999099/toc.pdf">
          <front>
            <title>DCE: Remote Procedure Call</title>
            <author>
              <organization/>
            </author>
            <date year="1994" month="August"/>
          </front>
          <seriesInfo name="ISBN" value="1-85912-041-5"/>
          <refcontent>Open Group CAE Specification C309</refcontent>
        </reference>
        <reference anchor="X667">
          <front>
            <title>Information Technology, "Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"</title>
            <author>
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="ISO/IEC" value="9834-8:2004"/>
          <seriesInfo name="ITU-T Rec." value="X.667"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier.  With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance.  With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA).  This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="FIPS180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 180-4"/>
        </reference>
        <reference anchor="FIPS202" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="PUB 202"/>
        </reference>
        <reference anchor="C311" target="https://pubs.opengroup.org/onlinepubs/9696989899/toc.pdf">
          <front>
            <title>DCE 1.1: Authentication and Security Services</title>
            <author>
              <organization/>
            </author>
            <date year="1997"/>
          </front>
          <refcontent>Open Group CAE Specification C311</refcontent>
        </reference>
        <reference anchor="RANDOM" target="https://peteroupc.github.io/random.html">
          <front>
            <title>Random Number Generator Recommendations for Applications</title>
            <author initials="P." surname="Occil" fullname="Peter Occil">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest">
              <organization/>
            </author>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.  This memo provides information for the Internet community.  It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach">
              <organization/>
            </author>
            <author fullname="M. Mealling" initials="M." surname="Mealling">
              <organization/>
            </author>
            <author fullname="R. Salz" initials="R." surname="Salz">
              <organization/>
            </author>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier).  A UUID is 128 bits long, and can guarantee uniqueness across space and time.  UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group).  Information from earlier versions of the DCE specification have been incorporated into this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm.  It also updates the security considerations for HMAC-MD5.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6194">
          <front>
            <title>Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms</title>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <author fullname="L. Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document includes security considerations for the SHA-0 and SHA-1 message digest algorithm.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6194"/>
          <seriesInfo name="DOI" value="10.17487/RFC6194"/>
        </reference>
        <reference anchor="LexicalUUID" target="https://github.com/twitter-archive/cassie">
          <front>
            <title>A Scala client for Cassandra</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2012" month="November"/>
          </front>
          <seriesInfo name="commit" value="f6da4e0"/>
        </reference>
        <reference anchor="Snowflake" target="https://github.com/twitter-archive/snowflake/releases/tag/snowflake-2010">
          <front>
            <title>Snowflake is a network service for generating unique ID numbers at high scale with some simple guarantees.</title>
            <author>
              <organization>Twitter</organization>
            </author>
            <date year="2014" month="May"/>
          </front>
          <seriesInfo name="Commit" value="b3f6a3c"/>
        </reference>
        <reference anchor="Flake" target="https://github.com/boundary/flake">
          <front>
            <title>Flake: A decentralized, k-ordered id generation service in Erlang</title>
            <author>
              <organization>Boundary</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="Commit" value="15c933a"/>
        </reference>
        <reference anchor="ShardingID" target="https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c">
          <front>
            <title>Sharding &amp; IDs at Instagram</title>
            <author>
              <organization>Instagram Engineering</organization>
            </author>
            <date year="2012" month="December"/>
          </front>
        </reference>
        <reference anchor="KSUID" target="https://github.com/segmentio/ksuid">
          <front>
            <title>K-Sortable Globally Unique IDs</title>
            <author>
              <organization>Segment</organization>
            </author>
            <date year="2020" month="July"/>
          </front>
          <seriesInfo name="Commit" value="bf376a7"/>
        </reference>
        <reference anchor="Elasticflake" target="https://github.com/ppearcy/elasticflake">
          <front>
            <title>Sequential UUID / Flake ID generator pulled out of elasticsearch common</title>
            <author initials="P." surname="Pearcy" fullname="Paul Pearcy">
              <organization/>
            </author>
            <date year="2015" month="January"/>
          </front>
          <seriesInfo name="Commit" value="dd71c21"/>
        </reference>
        <reference anchor="FlakeID" target="https://github.com/T-PWK/flake-idgen">
          <front>
            <title>Flake ID Generator</title>
            <author initials="T." surname="Pawlak" fullname="Tom Pawlak">
              <organization/>
            </author>
            <date year="2020" month="April"/>
          </front>
          <seriesInfo name="Commit" value="fcd6a2f"/>
        </reference>
        <reference anchor="Sonyflake" target="https://github.com/sony/sonyflake">
          <front>
            <title>A distributed unique ID generator inspired by Twitter's Snowflake</title>
            <author>
              <organization>Sony</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Commit" value="848d664"/>
        </reference>
        <reference anchor="orderedUuid" target="https://itnext.io/laravel-the-mysterious-ordered-uuid-29e7500b4f8">
          <front>
            <title>Laravel: The mysterious "Ordered UUID"</title>
            <author initials="I. B." surname="Cabrera" fullname="Italo Baeza Cabrera">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
        <reference anchor="COMBGUID" target="https://github.com/richardtallent/RT.Comb">
          <front>
            <title>Creating sequential GUIDs in C# for MSSQL or PostgreSql</title>
            <author initials="R." surname="Tallent" fullname="Richard Tallent">
              <organization/>
            </author>
            <date year="2020" month="December"/>
          </front>
          <seriesInfo name="Commit" value="2759820"/>
        </reference>
        <reference anchor="ULID" target="https://github.com/ulid/spec">
          <front>
            <title>Universally Unique Lexicographically Sortable Identifier</title>
            <author initials="A." surname="Feerasta" fullname="Alizain Feerasta">
              <organization/>
            </author>
            <date year="2019" month="May"/>
          </front>
          <seriesInfo name="Commit" value="d0c7170"/>
        </reference>
        <reference anchor="SID" target="https://github.com/chilts/sid">
          <front>
            <title>sid : generate sortable identifiers</title>
            <author initials="A." surname="Chilton" fullname="Andrew Chilton">
              <organization/>
            </author>
            <date year="2019" month="June"/>
          </front>
          <seriesInfo name="Commit" value="660e947"/>
        </reference>
        <reference anchor="pushID" target="https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html">
          <front>
            <title>The 2^120 Ways to Ensure Unique Identifiers</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
        </reference>
        <reference anchor="XID" target="https://github.com/rs/xid">
          <front>
            <title>Globally Unique ID Generator</title>
            <author initials="O." surname="Poitrey" fullname="Olivier Poitrey">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="efa678f"/>
        </reference>
        <reference anchor="ObjectID" target="https://docs.mongodb.com/manual/reference/method/ObjectId/">
          <front>
            <title>ObjectId - MongoDB Manual</title>
            <author>
              <organization>MongoDB</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="CUID" target="https://github.com/ericelliott/cuid">
          <front>
            <title>Collision-resistant ids optimized for horizontal scaling and performance.</title>
            <author initials="E." surname="Elliott" fullname="Eric Elliott">
              <organization/>
            </author>
            <date year="2020" month="October"/>
          </front>
          <seriesInfo name="Commit" value="215b27b"/>
        </reference>
        <reference anchor="IEEE754" target="https://standards.ieee.org/ieee/754/6210/">
          <front>
            <title>IEEE Standard for Floating-Point Arithmetic.</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2019" month="July"/>
          </front>
          <seriesInfo name="Series" value="754-2019"/>
        </reference>
        <reference anchor="URNNamespaces" target="https://www.iana.org/assignments/urn-namespaces/urn-namespaces.xhtml">
          <front>
            <title>Uniform Resource Names (URN) Namespaces</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022" month="November" day="18"/>
          </front>
        </reference>
        <reference anchor="Python" target="https://docs.python.org/3/library/uuid.html">
          <front>
            <title>UUID objects according to RFC</title>
            <author>
              <organization>Python</organization>
            </author>
            <date year="2023" month="May" day="23"/>
          </front>
        </reference>
        <reference anchor="Microsoft" target="https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/a66edeb1-52a0-4d64-a93b-2f5c833d7d92">
          <front>
            <title>curly braced GUID string</title>
            <author>
              <organization>Microsoft</organization>
            </author>
            <date year="2023" month="April" day="03"/>
          </front>
        </reference>
        <reference anchor="MS_COM_GUID" target="https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221">
          <front>
            <title>Why does COM express GUIDs in a mix of big-endian and little-endian? Why can’t it just pick a side and stick with it?</title>
            <author initials="R." surname="Chen" fullname="Raymond Chen">
              <organization/>
            </author>
            <date year="2022" month="September" day="28"/>
          </front>
        </reference>
        <reference anchor="IBM_NCS" target="https://www.ibm.com/docs/en/aix/7.1?topic=u-uuid-gen-command-ncs">
          <front>
            <title>uuid_gen Command (NCS)</title>
            <author>
              <organization>IBM</organization>
            </author>
            <date year="2023" month="March" day="23"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1849?>

<section anchor="namespaces">
      <name>Some Name Space IDs</name>
      <t>This appendix lists the name space IDs for some potentially interesting name spaces such those for
fully-qualified domain names (DNS), uniform resource locators (URLs), ISO OIDs, and X.500 distinguished names (DNs) in distinguished encoding rule (DER) or text format.</t>
      <sourcecode type="code"><![CDATA[
NameSpace_DNS  = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
NameSpace_URL  = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
NameSpace_OID  = "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
NameSpace_X500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
]]></sourcecode>
    </section>
    <section anchor="hashspaces">
      <name>Some Hash Space IDs</name>
      <t>This appendix lists the hash space IDs for use with UUIDv8 name-based UUIDs.</t>
      <sourcecode type="code"><![CDATA[
SHA2_224     = "59031ca3-fbdb-47fb-9f6c-0f30e2e83145"
SHA2_256     = "3fb32780-953c-4464-9cfd-e85dbbe9843d"
SHA2_384     = "e6800581-f333-484b-8778-601ff2b58da8"
SHA2_512     = "0fde22f2-e7ba-4fd1-9753-9c2ea88fa3f9"
SHA2_512_224 = "003c2038-c4fe-4b95-a672-0c26c1b79542"
SHA2_512_256 = "9475ad00-3769-4c07-9642-5e7383732306"
SHA3_224     = "9768761f-ac5a-419e-a180-7ca239e8025a"
SHA3_256     = "2034d66b-4047-4553-8f80-70e593176877"
SHA3_384     = "872fb339-2636-4bdd-bda6-b6dc2a82b1b3"
SHA3_512     = "a4920a5d-a8a6-426c-8d14-a6cafbe64c7b"
SHAKE_128    = "7ea218f6-629a-425f-9f88-7439d63296bb"
SHAKE_256    = "2e7fc6a4-2919-4edc-b0ba-7d7062ce4f0a"
]]></sourcecode>
    </section>
    <section anchor="test_vectors">
      <name>Test Vectors</name>
      <t>Both UUIDv1 and UUIDv6 test vectors utilize the same 60 bit timestamp: 0x1EC9414C232AB00
(138648505420000000) Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00</t>
      <t>Both UUIDv1 and UUIDv6 utilize the same values in clock_seq,
and node. All of which have been generated with random data.</t>
      <t>The pseudocode used for converting from a 64 bit Unix timestamp to a 100ns Gregorian timestamp value
has been left in the document for reference purposes.</t>
      <figure>
        <name>Test Vector Timestamp Pseudo-code</name>
        <sourcecode type="code"><![CDATA[
# Gregorian to Unix Offset:
# The number of 100-ns intervals between the
# UUID epoch 1582-10-15 00:00:00
# and the Unix epoch 1970-01-01 00:00:00
# Greg_Unix_offset = 0x01b21dd213814000 or 122192928000000000

# Unix 64 bit Nanosecond Timestamp:
# Unix NS: Tuesday, February 22, 2022 2:22:22 PM GMT-05:00
# Unix_64_bit_ns = 0x16D6320C3D4DCC00 or 1645557742000000000

# Unix Nanosecond precision to Gregorian 100-nanosecond intervals
# Greg_100_ns = (Unix_64_bit_ns/100)+Greg_Unix_offset

# Work:
# Greg_100_ns = (1645557742000000000/100)+122192928000000000
# Unix_64_bit_ns = (138648505420000000-122192928000000000)*100

# Final:
# Greg_100_ns = 0x1EC9414C232AB00 or 138648505420000000
]]></sourcecode>
      </figure>
      <section anchor="uuidv1_example">
        <name>Example of a UUIDv1 Value</name>
        <figure>
          <name>UUIDv1 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
time_low   32   0xC232AB00
time_mid   16   0x9414
ver         4   0x1
time_high  12   0x1EC
var         2   b10
clock_seq  14   b11, 0x3C8
node       48   0x9E6BDECED846
-------------------------------------------
total      128
-------------------------------------------
final: C232AB00-9414-11EC-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv3_example">
        <name>Example of a UUIDv3 Value</name>
        <t>The MD5 computation from is detailed in <xref target="v3md5"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v3fields"/>.
Finally to further illustrate the bit swapping for version and variant see <xref target="v3vervar"/>.</t>
        <figure anchor="v3md5">
          <name>UUIDv3 Example MD5</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
------------------------------------------------------
MD5:              5df418813aed051548a72f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3fields">
          <name>UUIDv3 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
md5_high  48   0x5df418813aed
ver        4   0x3
md5_mid   12   0x515
var        2   b10
md5_low   62   b00, 0x8a72f4a814cf09e
-------------------------------------------
total     128
-------------------------------------------
final: 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
        <figure anchor="v3vervar">
          <name>UUIDv3 Example Ver Var bit swaps</name>
          <artwork><![CDATA[
MD5 hex and dash:      5df41881-3aed-0515-48a7-2f4a814cf09e
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 5df41881-3aed-3515-88a7-2f4a814cf09e
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv4_example">
        <name>Example of a UUIDv4 Value</name>
        <t>This UUIDv4 example was created by generating 16 bytes
of random data resulting in the hexadecimal value of
919108F752D133205BACF847DB4148A8. This is then used to
fill out the fields as shown in <xref target="v4fields"/>.</t>
        <t>Finally to further illustrate the bit swapping for version and variant see <xref target="v4vervar"/>.</t>
        <figure anchor="v4fields">
          <name>UUIDv4 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
random_a  48   0x919108f752d1
ver        4   0x4
random_b  12   0x320
var        2   b10
random_c  62   b01, 0xbacf847db4148a8
-------------------------------------------
total     128
-------------------------------------------
final: 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
        <figure anchor="v4vervar">
          <name>UUIDv4 Example Ver/Var bit swaps</name>
          <artwork><![CDATA[
Random hex:            919108f752d133205bacf847db4148a8
Random hex and dash:   919108f7-52d1-3320-5bac-f847db4148a8
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 919108f7-52d1-4320-9bac-f847db4148a8
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv5_example">
        <name>Example of a UUIDv5 Value</name>
        <t>The SHA-1 computation from is detailed in <xref target="v5sha1"/> using the DNS NameSpace and the Name "www.example.com".
while the field mapping and all values are illustrated in <xref target="v5fields"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-1 value see <xref target="v5vervar"/>.</t>
        <figure anchor="v5sha1">
          <name>UUIDv5 Example SHA-1</name>
          <artwork><![CDATA[
Name Space (DNS): 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:             www.example.com
----------------------------------------------------------
SHA-1:            2ed6657de927468b55e12665a8aea6a22dee3e35
]]></artwork>
        </figure>
        <figure anchor="v5fields">
          <name>UUIDv5 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field      bits value
-------------------------------------------
sha1_high  48   0x2ed6657de927
ver         4   0x5
sha1_mid   12   0x68b
var         2   b10
sha1_low   62   b01, 0x5e12665a8aea6a2
-------------------------------------------
total      128
-------------------------------------------
final: 2ed6657d-e927-568b-95e1-2665a8aea6a2
]]></artwork>
        </figure>
        <figure anchor="v5vervar">
          <name>UUIDv5 Example Ver/Var bit swaps and discarded SHA-1 segment</name>
          <artwork><![CDATA[
SHA-1 hex and dash:    2ed6657d-e927-468b-55e1-2665a8aea6a2-2dee3e35
Ver and Var Overwrite: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Final:                 2ed6657d-e927-568b-95e1-2665a8aea6a2
Discarded:                                                 -2dee3e35
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv6_example">
        <name>Example of a UUIDv6 Value</name>
        <figure>
          <name>UUIDv6 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
time_high   32   0x1EC9414C
time_mid    16   0x232A
ver          4   0x6
time_high   12   0xB00
var          2   b10
clock_seq   14   b11, 0x3C8
node        48   0x9E6BDECED846
-------------------------------------------
total       128
-------------------------------------------
final: 1EC9414C-232A-6B00-B3C8-9E6BDECED846
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv7_example">
        <name>Example of a UUIDv7 Value</name>
        <t>This example UUIDv7 test vector utilizes a well-known 32 bit Unix epoch with
additional millisecond precision to fill the first 48 bits</t>
        <t>rand_a and rand_b are filled with random data.</t>
        <t>The timestamp is Tuesday, February 22, 2022 2:22:22.00 PM GMT-05:00 represented
as 0x17F22E279B0 or 1645557742000</t>
        <figure>
          <name>UUIDv7 Example Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field       bits value
-------------------------------------------
unix_ts_ms  48   0x17F22E279B0
ver          4   0x7
rand_a      12   0xCC3
var          2   b10
rand_b      62   b01, 0x8C4DC0C0C07398F
-------------------------------------------
total       128
-------------------------------------------
final: 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example">
        <name>Example of a UUIDv8 Value (time-based)</name>
        <t>This example UUIDv8 test vector utilizes a well-known 64 bit Unix epoch with
nanosecond precision, truncated to the least-significant, right-most, bits
to fill the first 48 bits through version.</t>
        <t>The next two segments of custom_b and custom_c are are filled with random
data.</t>
        <t>Timestamp is Tuesday, February 22, 2022 2:22:22.000000 PM GMT-05:00 represented
as 0x16D6320C3D4DCC00 or 1645557742000000000</t>
        <t>It should be noted that this example is just to illustrate one scenario for
UUIDv8. Test vectors will likely be implementation specific and vary greatly
from this simple example.</t>
        <figure>
          <name>UUIDv8 Example Time-based Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x320C3D4DCC00
ver        4   0x8
custom_b  12   0x75B
var        2   b10
custom_c  62   b00, 0xEC932D5F69181C0
-------------------------------------------
total     128
-------------------------------------------
final: 320C3D4D-CC00-875B-8EC9-32D5F69181C0
]]></artwork>
        </figure>
      </section>
      <section anchor="uuidv8_example_name">
        <name>Example of a UUIDv8 Value (name-based)</name>
        <t>A SHA-256 version of <xref target="uuidv5_example"/> is detailed in <xref target="v8sha256"/> to detail the usage of hash spaces alongside namespace and names.
The field mapping and all values are illustrated in <xref target="v8fieldssha256"/>.
Finally to further illustrate the bit swapping for version and variant and the unused/discarded part of the SHA-256 value see <xref target="v8vervar"/>.</t>
        <figure anchor="v8sha256">
          <name>UUIDv8 Example SHA256</name>
          <artwork><![CDATA[
Hash Space (SHA2_256): 3fb32780-953c-4464-9cfd-e85dbbe9843d
Name Space (DNS):      6ba7b810-9dad-11d1-80b4-00c04fd430c8
Name:                  www.example.com
----------------------------------------------------------------
SHA-256:
401835fda627a70a073fed73f2bc5b2c2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <figure anchor="v8fieldssha256">
          <name>UUIDv8 Example Name-Based SHA-256 Test Vector</name>
          <artwork><![CDATA[
-------------------------------------------
field     bits value
-------------------------------------------
custom_a  48   0x401835fda627
ver        4   0x8
custom_b  12   0x627
var        2   b10
custom_c  62   b0, 0x73fed73f2bc5b2c
-------------------------------------------
total     128
-------------------------------------------
final: 401835fd-a627-870a-873f-ed73f2bc5b2c
]]></artwork>
        </figure>
        <figure anchor="v8vervar">
          <name>UUIDv8 Example Ver/Var bit swaps and discarded SHA-256 segment</name>
          <artwork><![CDATA[
A: 401835fd-a627-a70a-073f-ed73f2bc5b2c-2a8936385a38a9c133de0ca4af0dfaed
B: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
C: 401835fd-a627-870a-873f-ed73f2bc5b2c
D:                                     -2a8936385a38a9c133de0ca4af0dfaed
]]></artwork>
        </figure>
        <t>Examining <xref target="v8vervar"/>:</t>
        <ul spacing="compact">
          <li>Line A details the full SHA-256 as a hexadecimal value with the dashes inserted.</li>
          <li>Line B details the version and variant hexadecimal positions which must be overwritten.</li>
          <li>Line C details the final value after the ver/var have been overwritten.</li>
          <li>Line D details the discarded, leftover values from the original SHA-256 computation.</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
xKJcJPclihMzoNO3ySwESSecoxqcp9mqULpH1oqwfZgMeq3WqDsd+nTzNb8M
x3OTBPbtYOedkE3E5Z164sjn+qqMZ1lwEie/xMB4R3mibNfdPGHd6bs3J989
i2jkqPXmE7RUwJU6+HDZBBiNvJWf5gnzt8LeOxy8QJJ+uktc8M3FxX95DbAM
3mdFeZ0nF/8ye2IjH3jS4JJnXdtE9Hlq/6I96B0O2y2C14+vn7PV1SydHBQg
aHq7q9HwSG7KgDgvb1B+gi8M8bQ63BPbOwaOGANsXgJVB7JTOaTo8Dk8e9Ia
D6IBiz7P2RyIOrOyOCgqdP8FfBAc6VVLyFRFG0mtFvsUyh2DbJfcBac4ulJM
dyP9z26k328lh11iA8tVcbNxL1MgACMQzkBXy65nyQjUHtoY0tyDVvsA71w7
AuS4ix+KsMxCtPHlScj05Ko/XJfy8aK1/y94J/gJ3gnKDHgtvlOjyW8mMd/R
cta5AKHoz8+6YsXBfeVY1nnwswj7u1l6i+aD91la5sk65VMx9onjSKZxfzAk
6s5miY07mGTjogls8jqb8D7m8WIVz0CIngK5WoyTg3kCa5wcyDiTA2+L+iks
/g0OcnYSvKEBNoNannO3NY1nRRLsBj///HMwvknGxNFOn0XZAAbjZDZLs7I8
GFflodMMvkGDcJgDoOCOgj4DEl+QLct0jvIsUTW0Fv2SoRmXRHey4IJeu0xy
UuYABvUCO5/WOSwARB9awa85qnbUG7UHRItfnZ+fD3qbzDyFWg2aaZIkpMHj
LwfwxkG/HbX8g8GxjKGBtvlylhGBDwGvAA7HoLPfwNmm4yfUERxlnRxslgov
6KOjANaE+haZIX/88PYtQKpYxmP4qn5vd3d3zTRexLQrVEmvFyiQFgerfBEu
zNuVP5v3a8QAbhoeGmj4RbbKQR+hqYM9WMR+YJfxxI6P3x5XjhGV2DAiPv/+
Ad5YPHWVlvQE7aNzMEtHOepXKDKsEy6SajO6QAX6DDLWL4CAgXa/eYW8hsoa
O8BtQrRABMGbdJxnRTYtNywTlON80ZzrU3yLFuGqOEDzEHLO4uAuXUyyu+Jq
mWdlNs5mxcG8CCflw/Ig7veTSTKKwl47boXdSb8bxoedUdie9sbDTmcymBy2
vV2OVzlQQIDDGK4bChTkilEtqJZA6NLW9wiKMO/x4gqEn6snhJ9JcovMpahs
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
cf8Bj3UULv1wAQA=

-->

</rfc>
