# File lib/rack/utils.rb, line 44
    def parse_query(qs, d = nil)
      params = {}

      max_key_space = Utils.key_space_limit
      bytes = 0

      (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
        k, v = p.split('=', 2).map { |x| unescape(x) }

        if k
          bytes += k.size
          if bytes > max_key_space
            raise RangeError, "exceeded available parameter key space"
          end
        end

        if cur = params[k]
          if cur.class == Array
            params[k] << v
          else
            params[k] = [cur, v]
          end
        else
          params[k] = v
        end
      end