code: def url_decode_stream(stream, charset='utf-8', decode_keys=False,
                        include_empty=True, errors='replace', separator='&',
                        cls=None, limit=None, return_iterator=False):
      
      if return_iterator:
          cls = lambda x: x
      elif cls is None:
          cls = MultiDict
      pair_iter = make_chunk_iter(stream, separator, limit)
      return cls(_url_decode_impl(pair_iter, charset, decode_keys,
                                  include_empty, errors))
docs: Works like :func:`url_decode` but decodes a stream.  The behavior
      of stream and limit follows functions like
      :func:`~werkzeug.wsgi.make_line_iter`.  The generator of pairs is
      directly fed to the `cls` so you can consume the data while it's
      parsed.
  
      .. versionadded:: 0.8
  
      :param stream: a stream with the encoded querystring
      :param charset: the charset of the query string.
      :param decode_keys: set to `True` if you want the keys to be decoded
                          as well.
      :param include_empty: Set to `False` if you don't want empty values to
                            appear in the dict.
      :param errors: the decoding error behavior.
      :param separator: the pair separator to be used, defaults to ``&``
      :param cls: an optional dict class to use.  If this is not specified
                         or `None` the default :class:`MultiDict` is used.
      :param limit: the content length of the URL data.  Not necessary if
                    a limited stream is provided.
      :param return_iterator: if set to `True` the `cls` argument is ignored
                              and an iterator over all decoded pairs is
                              returned