docs: function extractDataUrls(css, preservedTokens) {
  
      // Leave data urls alone to increase parse performance.
      const pattern = /url\(\s*(["']?)data\:/g
      const maxIndex = css.length - 1
      const sb = []
  
      let appendIndex = 0
      let match
  
      // Since we need to account for non-base64 data urls, we need to handle
      // ' and ) being part of the data string. Hence switching to indexOf,
      // to determine whether or not we have matching string terminators and
      // handling sb appends directly, instead of using matcher.append* methods.
  
      while ((match = pattern.exec(css)) !== null) {
  
          let startIndex = match.index + 4  // 'url('.length()
          let terminator = match[1]         // ', " or empty (not quoted)
  
          if (terminator.length === 0) {
              terminator = ')'
          }
  
          let foundTerminator = false
          let endIndex = pattern.lastIndex - 1
  
          while (foundTerminator === false && endIndex + 1 <= maxIndex) {
              endIndex = css.indexOf(terminator, endIndex + 1)
  
              // endIndex == 0 doesn't really apply here
              if ((endIndex > 0) && (css.charAt(endIndex - 1) !== '\\')) {
                  foundTerminator = true
                  if (')' != terminator) {
                      endIndex = css.indexOf(')', endIndex)
                  }
              }
          }
  
          // Enough searching, start moving stuff over to the buffer
          sb.push(css.substring(appendIndex, match.index))
  
          if (foundTerminator) {
  
              let token = css.substring(startIndex, endIndex)
              let parts = token.split(',')
              if (parts.length > 1 && parts[0].slice(-7) == ';base64') {
                  token = token.replace(/\s+/g, '')
              } else {
                  token = token.replace(/\n/g, ' ')
                  token = token.replace(/\s+/g, ' ')
                  token = token.replace(/(^\s+|\s+$)/g, '')
              }
  
              preservedTokens.push(token)
  
              let preserver = 'url(' + ___PRESERVED_TOKEN_ + (preservedTokens.length - 1) + '___)'
              sb.push(preserver)
  
              appendIndex = endIndex + 1
          } else {
              // No end terminator found, re-add the whole match. Should we throw/warn here?
              sb.push(css.substring(match.index, pattern.lastIndex))
              appendIndex = pattern.lastIndex
          }
      }
  
      sb.push(css.substring(appendIndex))
  
      return sb.join('')
  }