%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Run for enough iterations that we're likely to catch edge-cases, like // failing to set a reserved bit: const iterations = 256; // Track all the UUIDs generated during test run, bail if we ever collide: const uuids = new Set() function randomUUID() { const uuid = self.crypto.randomUUID(); if (uuids.has(uuid)) { throw new Error(`uuid collision ${uuid}`) } uuids.add(uuid); return uuid; } // UUID is in namespace format (16 bytes separated by dashes): test(function() { const UUIDRegex = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/ for (let i = 0; i < iterations; i++) { assert_true(UUIDRegex.test(randomUUID())); } }, "namespace format"); // Set the 4 most significant bits of array[6], which represent the UUID // version, to 0b0100: test(function() { for (let i = 0; i < iterations; i++) { let value = parseInt(randomUUID().split('-')[2].slice(0, 2), 16); value &= 0b11110000; assert_true(value === 0b01000000); } }, "version set"); // Set the 2 most significant bits of array[8], which represent the UUID // variant, to 0b10: test(function() { for (let i = 0; i < iterations; i++) { // Grab the byte representing array[8]: let value = parseInt(randomUUID().split('-')[3].slice(0, 2), 16); value &= 0b11000000 assert_true(value === 0b10000000); } }, "variant set");