| 'use strict'; | 
| var globalThis = require('../internals/global-this'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
|   | 
| var Uint8Array = globalThis.Uint8Array; | 
| var SyntaxError = globalThis.SyntaxError; | 
| var parseInt = globalThis.parseInt; | 
| var min = Math.min; | 
| var NOT_HEX = /[^\da-f]/i; | 
| var exec = uncurryThis(NOT_HEX.exec); | 
| var stringSlice = uncurryThis(''.slice); | 
|   | 
| module.exports = function (string, into) { | 
|   var stringLength = string.length; | 
|   if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters'); | 
|   var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2; | 
|   var bytes = into || new Uint8Array(maxLength); | 
|   var read = 0; | 
|   var written = 0; | 
|   while (written < maxLength) { | 
|     var hexits = stringSlice(string, read, read += 2); | 
|     if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters'); | 
|     bytes[written++] = parseInt(hexits, 16); | 
|   } | 
|   return { bytes: bytes, read: read }; | 
| }; |